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)¶Параметры: |
|
---|
Завершает составную операцию хеширования.
Запускается в режимах
См.также
Результат: |
Совет Полный список ошибок см. в приложении. |
---|
Для обеспечения успешного хэширования данных, необходимо, чтобы функции в алгоритме были использованы в одной из следующих последовательностей:
Для единоразовой операции хэширования | Для составной операции хэширования |
---|---|
|
Пример вычисления хэш-последоватаельности на языке Java для ОС Android:
// дескриптор сессии
LongRef session = new LongRef();
// механизм для программного вычисления хэш-последовательности
CKM hashMech = new CKM(CKM.GOSTR3411, Default.STR_CRYPTO_PRO_GOST3411);
// буффер с данными для вычисления хэш-последовательности
byte[] data = new byte[32];
// буфер для результирующей хэш-последовательности
byte[] hash = new byte[32];
// длина буфера для хэш-последовательности
LongRef hashLength = new LongRef(hash.length);
// задание механизма для вычисления хэш-последовательности
rv = C.DigestInit(session.value, hashMech);
if(rv != CKR.OK)
{
throw new CKRException("C_DigestInit", rv);
}
// вычисление хэш-последовательности
rv = C.Digest(session.value, data, hash, hashLength);
if(rv != CKR.OK)
{
throw new CKRException("C_Digest", rv);
}