C_VerifyInit
, C_Verify
, C_VerifyUpdate
и C_VerifyFinal
¶C_VerifyInit
(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey)¶Параметры: |
|
---|
Инициализирует операцию проверки электронной подписи, имитовставки или значения HMAC.
Механизм проверки ЭП и имитовставки задается в поле 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. Размер входных данных не ограничен.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
C_Verify
(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen)¶Параметры: |
|
---|
Осуществляет единоразовую проверку подписи, т.е проверяет только один блок данных. Либо проверяет значение HMAC для одного блока данных, проверяет значение имитовставки для одного блока данных – конкретная операция зависит от того, с каким значением параметра pMechanism
была инициализирована операция проверки.
Примечание
В случае инициализации операции проверки (см. C_VerifyInit()
) с механизмом
CKM_GOSTR3410
размер данных должен быть 32-байта.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
C_VerifyUpdate
(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen)¶Параметры: |
|
---|
Продолжает составную операцию проверки подписи – проверяет очередной блок данных, проверяет HMAC или имитовставку для очередного блока данных.
При работе с апплетом Криптотокен функция C_VerifyUpdate()
поддерживает только механизмы CKM_GOSTR3410_WITH_GOSTR3411
и CKM_GOST28147_MAC
.
Примечание
Механизмы, используемые в процессе выработки электронной подписи или имитовставки предварительно задаются функцией C_VerifyInit()
.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
C_VerifyFinal
(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen)¶Параметры: |
|
---|
Завершает операцию проверки подписи, проверки HMAC или проверки имитовставки.
При работе с апплетом Криптотокен функция C_VerifyFinal()
поддерживает только механизмы CKM_GOSTR3410_WITH_GOSTR3411
и CKM_GOST28147_MAC
.
Примечание
Механизмы, используемые в процессе выработки электронной подписи или имитовставки предварительно задаются функцией C_VerifyInit()
.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
Для обеспечения успешного проверки данных, необходимо, чтобы функции в алгоритме были использованы в одной из следующих последовательностей:
Для единоразовой операции проверки | Для составной операции проверки |
---|---|
|
Пример проверки ЭЦП на языке Java для ОС Android:
//дескриптор сессии
LongRef session = new LongRef();
// дескриптор открытого ключа
LongRef pubKeyHandle = new LongRef();
// буфер с данными для подписания
byte[] data = new byte[32];
// буфер для результирующей подписи
byte[] signature = new byte[64];
// механизм для проверки ЭЦП по ГОСТ Р34.10-2001
CKM verifyMech = new CKM(CKM.GOSTR3410_WITH_GOSTR3411, null);
// инициализация проверки ЭЦП
rv = C.VerifyInit(session.value, verifyMech, pubKeyHandle.value);
if(rv != CKR.OK)
{
throw new CKRException("C_VerifyInit", rv);
}
// проверка ЭЦП
rv = C.Verify(session.value, data, signature);
if(rv != CKR.OK)
{
throw new CKRE
}