C_VerifyInit, C_Verify, C_VerifyUpdate и C_VerifyFinal¶C_VerifyInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey)¶| Параметры: |
|
|---|
Инициализирует операцию проверки электронной подписи.
Механизм проверки ЭП и имитовставки задается в поле mechanism структуры
CK_MECHANISM, на которую ссылается второй аргумент функции C_VerifyInit. Для формирования ЭП и
имитовставки библиотека Cryptoki поддерживает механизмы, перечисленные ниже.
CKM_GOSTR3410 (0x00001201) – механизм для генерации и проверки ЭП, соответствующий стандарту
ГОСТ Р 34.10-2001. Использует в качестве входного параметра ранее вычисленное 32-байтовое значение хэш-функции.CKM_GOSTR3410_WITH_GOSTR3411 (0x00001202) – механизм для генерации и проверки ЭП (ГОСТ Р 34.10-2001) с
хэшированием (ГОСТ Р 34.11-94) подаваемых на вход данных. Размер данных не ограничен.CKM_GOST28147_MAC (0x00001223) – механизм выработки и проверки имитовставки, соответствующий стандарту
ГОСТ 28147-89. Размер входных данных не ограничен.CKM_RSA_PKCS (0x00000001) – механизм для генерации и проверки ЭП по алгоритму RSA. Может быть также
использован для зашифрования/расшифрования данных.CKM_SHA1_RSA_PKCS (0x00000006) – механизм для генерации и проверки ЭП (RSA) с предварительным
хэшированием по алгоритму SHA-1.CKM_SHA256_RSA_PKCS (0x00000040) – механизм для генерации и проверки ЭП (RSA) с предварительным
хэшированием по алгоритму SHA-256.CKM_DES3_MAC (0x00000134) – механизм для формирования и проверки имитовставки фиксированной длины
на основе triple-DES. Ограничение длины выхода – 4 байт.CKM_DES3_MAC_GENERAL (0x00000135) – механизм для формирования и проверки имитовставки произвольной
длины на основе triple-DES.CKM_MD5_HMAC (0x00000211) – механизм для формирования и проверки имитовставки на основе MD5.CKM_SHA_1_HMAC (0x00000221) – механизм для формирования и проверки имитовставки на основе SHA-1.CKM_SHA256_HMAC (0x00000251) – механизм для формирования и проверки имитовставки на основе SHA-256.CKM_SHA384_HMAC (0x00000261) – механизм для формирования и проверки имитовставки на основе SHA-384.CKM_SHA512_HMAC (0x00000271) – механизм для формирования и проверки имитовставки на основе SHA-512.CKM_CMS_SIG (0x00000500) – механизм для генерации и проверки ЭП в формате CMS.CKM_ECDSA (0x00001041) – механизм для генерации и проверки ЭП по алгоритму
ECDSA.CKM_ECDSA_SHA1 (0x00001042) – механизм для генерации и проверки ЭП (ECDSA) с предварительным
хэшированием по алгоритму SHA1.CKM_ECDSA_SHA256 (0x00001043) – механизм для генерации и проверки ЭП (ECDSA) с предварительным
хэшированием по алгоритму SHA256.CKM_AES_MAC (0x00001083) – механизм для формирования и проверки имитовставки фиксированной длины
на основе AES. Ограничение длины выхода – 8 байт.CKM_AES_MAC_GENERAL (0x00001084) – механизм для формирования и проверки имитовставки произвольной
длины на основе AES.Запускается в режимах
См.также
| Результат: |
Совет Полный список ошибок см. в приложении. |
|---|
C_Verify(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen)¶| Параметры: |
|
|---|
Осуществляет единоразовую проверку подписи, т.е проверяет только один блок данных.
Запускается в режимах
См.также
| Результат: |
Совет Полный список ошибок см. в приложении. |
|---|
C_VerifyUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen)¶| Параметры: |
|
|---|
Примечание
При работе с апплетом Криптотокен, функции C_VerifyUpdate() и C_VerifyFinal() применимы,
только если в шаблоне, предварительно заданном функцией C_VerifyInit(), указан механизм
CKM_GOSTR3410_WITH_GOSTR3411 либо CKM_GOST28147_MAC.
Продолжает составную операцию проверку подписи – проверяет очередной блок данных.
Запускается в режимах
См.также
| Результат: |
Совет Полный список ошибок см. в приложении. |
|---|
C_VerifyFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen)¶| Параметры: |
|
|---|
Завершает операцию проверки подписи.
Примечание
При работе с апплетом Криптотокен, функции C_VerifyUpdate() и C_VerifyFinal() применимы,
только если в шаблоне, предварительно заданном функцией C_VerifyInit(), указан механизм
CKM_GOSTR3410_WITH_GOSTR3411 либо CKM_GOST28147_MAC.
Запускается в режимах
См.также
| Результат: |
Совет Полный список ошибок см. в приложении. |
|---|
Для обеспечения успешного проверки данных, необходимо, чтобы функции в алгоритме были использованы в одной из следующих последовательностей:
| Для единоразовой операции проверки | Для составной операции проверки |
|---|---|
|
Например:
Криптотокен
// дескриптор сессии
CK_SESSION_HANDLE session = 0;
// механизм для формирования ЭП по ГОСТ Р34.10-2001
CK_MECHANISM mech = { CKM_GOSTR3410, NULL_PTR, 0 };
// дескрипторы открытого ключа
CK_OBJECT_HANDLE handlePub;
// буфер с данными для подписания
CK_BYTE hash[32];
// буфер для результирующей подписи
CK_BYTE signature[64];
// длина буфера для подписи
CK_ULONG signatureLength = sizeof(signature);
// инициализируем проверку подписи
rv = C_VerifyInit(session, &mech, handlePub);
if(rv != CKR_OK)
{
PrintError("C_VerifyInit", rv);
}
// проверяем подпись
rv = C_Verify(session, hash, sizeof(hash), signature, signatureLength);
if(rv != CKR_OK)
{
PrintError("C_Verify", rv);
}
Laser
// дескриптор сессии
CK_SESSION_HANDLE session = 0;
// механизм для формирования ЭП
CK_MECHANISM signMech = { CKM_SHA1_RSA_PKCS, NULL_PTR, 0 };
// дескриптор закрытого ключа
CK_OBJECT_HANDLE privKeyHandle = 0;
// буфер для результирующей подписи
std::vector<CK_BYTE> signHolder(1, 0);
// буфер с данными для подписания
std::vector<CK_BYTE> dataToSign(100, 0);
// длина буфера для подписи
CK_ULONG signLen = sizeof(dataToSign);
// инициализируем проверку подписи
rv = C_VerifyInit(session, &signMech, pubKeyHandle);
if(rv != CKR_OK)
{
PrintError("C_VerifyInit", rv);
}
// проверяем подпись
rv = C_Verify(session, &dataToSign.at(0), dataToSign.size(), &signHolder.at(0), signLen);
if(rv != CKR_OK)
{
PrintError("C_Verify", rv);
}