Крипто-Про CSP

CPCreateHash

Функция CPCreateHash() инициализирует дескриптор нового объекта функции хеширования потока данных.

BOOL WINAPI CPCreateHash(
  HCRYPTPROV hProv,
  ALG_ID AlgId,
  HCRYPTKEY hKey,
  DWORD dwFlags,
  HCRYPTHASH * phHash
);

Аргументы

hProv
[in] Дескриптор криптопровайдера. Получается при помощи функции CPAcquireContext().
AlgId
[in] Идентификатор используемого алгоритма хеширования. В криптопровайдере определены следующие алгоритмы хеширования:
hKey
[in] Если используется алгоритм имитозащиты по ГОСТ 28147-89 (CALG_G28147_IMIT), в этом параметре передаётся ключ сессии для объекта функции хеширования.

Если используется алгоритм CALG_TLS1_MASTER_HASH, в этом параметре передается master_secret (ключ типа CALG_TLS1_MASTER), на основе которого будет создана ключевая информация по следующей формуле:
		
	key_block = PRF(SecurityParameters.master_secret,
						 "key expansion",
						 SecurityParameters.server_random +
						 SecurityParameters.client_random);
	
Предварительно следует установить 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 Криптопровайдер во время операции исчерпал память.
NTE_FAIL Ошибка при считывании данных из системного реестра. см. Дополнительные параметры и определения .

Требования:

Windows 2000/XP/2003: Необходимо Windows 2000 SP4 или старше с Internet Explorer 6.0 или старше.
Windows NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP 2.0 World Wide Web link ).
Solaris: 9 Update 4 или выше.
FreeBSD: FreeBSD 5.2 или выше
Linux: RedHat 7.3, RedHad 9.0.
Файл описания: Прототип описан в файле wincsp.h.
Ядро Windows NT: IRQL < DISPATCH_LEVEL

См. также:

CPDestroyHash() ,CPHashData() ,CPCreateHash в MS CSP World Wide Web link ,CryptCreateHash в MS CryptoAPI 2.0 World Wide Web link

Крипто-Про CSP Версия: 3.0 Сборка 3293
Что Вы думаете по поводу данной статьи?
Закажите CD c Крипто-Про CSP