Функция CryptSetHashParam (wincrypt.h)

Важно Этот API не рекомендуется использовать. Новое и существующее программное обеспечение должно начать использовать API-интерфейсы шифрования следующего поколения. Корпорация Майкрософт может удалить этот API в будущих выпусках.
 
Функция CryptSetHashParam настраивает операции хэш-объекта, включая настройку начального хэш-содержимого и выбор определенного алгоритма хэширования.

Синтаксис

BOOL CryptSetHashParam(
  [in] HCRYPTHASH hHash,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

Параметры

[in] hHash

Дескриптор хэш-объекта, для которого необходимо задать параметры.

[in] dwParam

Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
HP_HMAC_INFO.
Указатель на структуру HMAC_INFO , указывающую алгоритм шифрования хэша, а также внутренние и внешние строки для использования.
HP_HASHVAL.
Массив байтов, содержащий хэш-значение, помещаемое непосредственно в хэш-объект. Перед установкой этого значения размер хэш-значения необходимо определить с помощью функции CryptGetHashParam для чтения значения HP_HASHSIZE.

Некоторые поставщики служб шифрования (CSP) не поддерживают эту возможность.

 
Примечание Некоторые типы CSP могут добавлять дополнительные значения, которые можно задать с помощью этой функции.
 

[in] pbData

Буфер данных значений. Поместите данные значения в этот буфер перед вызовом CryptSetHashParam. Форма этих данных зависит от числа значений.

[in] dwFlags

Этот параметр зарезервирован для использования в будущем и должен иметь нулевое значение.

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

Если функция выполнена успешно, функция возвращает значение TRUE.

Если функция завершается сбоем, она возвращает значение FALSE. Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.

Коды ошибок, предваряемые "NTE", создаются конкретным поставщиком служб CSP, который вы используете. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
ERROR_INVALID_HANDLE
Один из параметров указывает недопустимый дескриптор.
ERROR_BUSY
Контекст CSP в настоящее время используется другим процессом.
ERROR_INVALID_PARAMETER
Один из параметров содержит недопустимое значение. Чаще всего это недопустимый указатель.
NTE_BAD_FLAGS
Параметр dwFlags не является нулевым или буфер pbData содержит недопустимое значение.
NTE_BAD_HASH
Недопустимый хэш-объект, заданный параметром hHash .
NTE_BAD_TYPE
Параметр dwParam указывает неизвестное значение.
NTE_BAD_UID
Не удается найти контекст CSP, указанный при создании ключа hKey .
NTE_FAIL
Сбой функции каким-то неожиданным образом.

Комментарии

Иногда необходимо подписать хэш-значение, созданное в другом месте. Это можно сделать с помощью следующей последовательности операций:

  1. Создайте хэш-объект с помощью CryptCreateHash.
  2. Задайте значение HP_HASHVAL.
  3. Подпишите хэш-значение с помощью CryptSignHash и получите блок цифровой подписи.
  4. Уничтожьте хэш-объект с помощью CryptDeographyHash.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

CryptCreateHash

CryptDeographyHash

CryptGetHashParam

CryptSetKeyParam

CryptSignHash

HMAC_INFO

Хэш-функции и функции цифровой подписи