[in] Дескриптор криптопровайдера. Получается при помощи функции
CPAcquireContext().
AlgId
[in] Идентификатор используемого алгоритма хеширования. В
криптопровайдере определены следующие алгоритмы хеширования:
CALG_GR3411 - Алгоритм хеширования в соответствии с ГОСТ Р
34.11-94;
CALG_G28147_IMIT - Алгоритм имитозащиты в соответствии с ГОСТ
28147-89;
CALG_TLS1_MASTER_HASH - Объект, содержащий ключевую информацию
для создания ключей CALG_TLS1_ENC_KEY и CALG_TLS1_MAC_KEY;
CALG_TLS1PRF - Алгоритм "производящей функции" (PRF),
генерирующей блок данных произвольной длины на основе ключа, метки
и бинарных данных.
hKey
[in] Если используется алгоритм имитозащиты по ГОСТ 28147-89
(CALG_G28147_IMIT), в этом параметре передаётся ключ сессии для
объекта функции хеширования.
Если используется алгоритм CALG_TLS1_MASTER_HASH, в этом параметре
передается master_secret (ключ типа CALG_TLS1_MASTER), на основе
которого будет создана ключевая информация по следующей формуле:
Предварительно следует установить KP_CLIENT_RANDOM и
KP_SERVER_RANDOM.
Если используется алгоритм CALG_TLS1PRF, в этом параметре
передается ключ типа CALG_TLS1_MASTER.
Для алгоритмов хеширования типа ГОСТ Р 34.11-94 этот параметр
должен быть установлен в ноль.
dwFlags
[in] Значения флагов. Параметр зарезервирован для будущего
использования и должен быть нулевым.
phHash
[out] Адрес по которому функция копирует дескриптор нового
объекта функции хеширования.
Возвращаемые значения:
При успешном завершении функция возвращает TRUE, в противном случае
возвращается FALSE. Если возвращается FALSE, соответствующий код
ошибки (см. таблицу) может быть получен через функцию
GetLastError().
Коды возврата
Описание
NTE_BAD_ALGID
Параметр AlgId определяет алгоритм,
который не поддерживается криптопровайдером.
NTE_BAD_FLAGS
Величина dwFlags имеет ненулевое
значение.
NTE_NO_MEMORY
Криптопровайдер во время операции исчерпал память.
Windows
2000/XP/2003: Необходимо Windows 2000 SP4 или старше с Internet
Explorer 6.0 или старше. Windows
NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP
2.0 ). Solaris: 9
Update 4 или выше. FreeBSD:
FreeBSD 5.2 или выше Linux: RedHat
7.3, RedHad 9.0. Файл описания:
Прототип описан в файле wincsp.h. Ядро Windows
NT: IRQL < DISPATCH_LEVEL