C_DigestInit
, C_Digest
, C_DigestUpdate
и C_DigestFinal
¶C_DigestInit
(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism)¶Параметры: |
|
---|
Инициализирует операцию хэширования.
Механизм хэширования задаётся в поле mechanism
структуры CK_MECHANISM
. Для хэширования библиотека Cryptoki поддерживает механизмы, перечисленные ниже. В зависимости от используемого механизма
выполняется аппаратная или программная реализация функции.
Криптотокен
CKM_GOSTR3411
(0x00001210
) – механизм хеширования, соответствующий стандарту ГОСТ Р 34.11-94.
В зависимости от значений второго и третьего полей структуры CK_MECHANISM
(см. таблицу ниже), вычисление
хэш-последовательности выполняется аппаратно, т. е. с использованием криптографических возможностей устройства
eToken ГОСТ или JaCarta ГОСТ, либо программно.
pParameter |
ulParameterLen |
Способ вычисления хэш-последовательности |
---|---|---|
NULL_PTR |
0 |
Аппаратный (средствами JaCarta ГОСТ) |
0x06 0x07 0x2A 0x85 0x03
0x02 0x02 0x1E 0x01 |
9 |
Программный (используется набор эталонных параметров
id-GostR3411-94-CryptoProParamSet , определённый в RFC 4357. |
Laser
CKM_MD5
(0x00000210
) механизм хеширования данных по алгоритму MD5.CKM_SHA_1
(0x00000220
) механизм хеширования данных по алгоритму SHA-1.CKM_SHA256
(0x00000250
) механизм хеширования данных по алгоритму SHA-256.CKM_SHA384
(0x00000260
) механизм хеширования данных по алгоритму SHA-384.CKM_SHA512
(0x00000270
) механизм хеширования данных по алгоритму SHA-512.Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
C_Digest
(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen)¶Параметры: |
|
---|
Осуществляет единоразовое хэширование, т.е хэширует только один блок данных.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
C_DigestUpdate
(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen)¶Параметры: |
|
---|
Продолжает составную операцию хэширования – хэширует очередной блок данных.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
C_DigestFinal
(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen)¶Параметры: |
|
---|
Завершает составную операцию хеширования.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
Для обеспечения успешного хэширования данных, необходимо, чтобы функции в алгоритме были использованы в одной из следующих последовательностей:
Для единоразовой операции хэширования | Для составной операции хэширования |
---|---|
|
Пример вычисления хэш-последоватаельности на языке С:
// дескриптор сессии
CK_SESSION_HANDLE session = 0;
// механизм для вычисления хэш-последовательности. Вычислять значение хеш-функции программно.
CK_MECHANISM mech = { CKM_GOSTR3411, NULL_PTR, 0 };
// исходные данные для хэширования
CK_BYTE buffer[1024];
// результирующие данные для хэш-значения
CK_BYTE hash[32];
// размер хэш-последовательности
CK_ULONG hashLen = 32;
// задаем параметры механизма для апаратного вычисления значения хеш-функции
mech.pParameter = STR_CRYPTO_PRO_GOST3411;
mech.ulParameterLen = 9;
// функция задает механизм для вычисления хэш-последоватаельности
rv = C_DigestInit(session, &mech);
if(rv != CKR_OK)
{
PrintError("C_DigestInit", rv);
}
// функция вычисляет хэш-последовательность
rv = C_Digest(session, buffer, sizeof(buffer), hash, &hashLen);
if(rv != CKR_OK)
{
PrintError("C_Digest", rv);
}4