КриптоПро CSP  

CPCHashSessionKey

Функция CPCHashSessionKey() передаёт криптографический ключ указанному объекту функции хэширования. Это позволяет хэшировать ключи сессии без передачи ключа приложению.

DWORD CPCAPI CPCHashSessionKey(
  HCRYPTMODULE hCSP,
  HCRYPTPROV hProv,
  HCRYPTHASH hHash,
  HCRYPTKEY hKey,
  DWORD dwFlags
);

Аргументы

hCSP
[in] Указатель на таблицу функций криптопровайдера. Получается при помощи функции CPCCreateProvider()
hProv
[in] Дескриптор криптопровайдера. Получается при помощи функции CPCAcquireContext().
hHash
[in] Дескриптор объекта функции хэширования. Приложение получает этот дескриптор, используя функцию CPCCreateHash().
hKey
[in] Дескриптор хэшируемого ключа сессии. Хэш типа CALG_FITTINGKEY_HASH собирает ключи в единый ключ, создаваемый функцией CPCDeriveKey().
dwFlags
[in] Значение CRYPT_LITTLE_ENDIAN соответствует хэшированию ключа в порядке байт, определяемым ГОСТ 28147-89, нулевое значение соответствует хэшированию в обратном порядке байт ключа.

Возвращаемые значения

При успешном завершении функция возвращает 0 (S_OK), в противном случае возвращается соответствующий код ошибки (см. таблицу).
Коды возвратаОписание
NTE_BAD_HASHДескриптор хэша ошибочен.
NTE_BAD_ALGIDПараметр AlgId определяет алгоритм, который не поддерживается криптопровайдером.
NTE_BAD_HASH_STATEБыла сделана попытка добавить данные к объекту функции хэширования, который уже отмечен как "закрытый".
NTE_BAD_KEYТип хэшируемого ключа не соответствует ALG_TYPE_BLOCK.

Примечания

Функция CPCHashSessionKey() добавляет к объекту функции хэширования только значение сессионного ключа hKey. Приложение должно самостоятельно добавлять к этому объекту дополнительные величины, такие как стартовый вектор шифрования и т.п.

Использование функции с dwFlags равным 0 не рекомендуется - поведение не определено.

Требования:

Ядро FreeBSD: 7/8/9 или выше
Ядро Linux: ядро 2.4.x/2.6.x/3.0.х/3.2.х или выше
Ядро Solaris: 10/11 или выше.
Ядро Windows 2000 или выше: Необходимо Windows 2000 SP4 или старше.

См. также

CPCCreateHash() ,CPCGenKey() ,CPCHashData() ,CPHashSessionKey в MS CSP World Wide Web link ,CryptHashSessionKey в MS CryptoAPI 2.0 World Wide Web link