КриптоПро CSP  

CPHashSessionKey

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

BOOL WINAPI CPHashSessionKey(
  HCRYPTPROV hProv,
  HCRYPTHASH hHash,
  HCRYPTKEY hKey,
  DWORD dwFlags
);

Аргументы

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

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

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

Примечания

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

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

Требования:

AIX: 6/7.
FreeBSD: 11/12, pfSense 2.x.
Linux: LSB 4.x (RHEL 5/6/7/8, SuSE 11SP4/12/15, Oracle Linux 5/6/7/8, CentOS 6/7/8, Ubuntu 14.04/16.04/18.04/19.10, Linux Mint 18/19, Fedora 28/29/30/31, Debian 8/9/10 и др.).
Solaris: 10/11.
Mac OS X: 10.9/10.10/10.11/10.12/10.13/10.14/10.15.
iOS: 8/9/10/11/12/13.
Sailfish: 2/3.
Windows: 7/8/8.1/10, Server 2008/2008R2/2012/2012R2/2016/2019.
Файл описания: Прототип описан в файле wincsp.h.
Ядро ОС: Вместо неё используется аналогичная функция CPCHashSessionKey .

См. также

CPCreateHash() ,CPGenKey() ,CPHashData() ,CPHashSessionKey в MS CSP World Wide Web link ,CryptHashSessionKey в MS CryptoAPI 2.0 World Wide Web link