Поделиться через


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

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

Синтаксис

BOOL CryptGetHashParam(
  [in]      HCRYPTHASH hHash,
  [in]      DWORD      dwParam,
  [out]     BYTE       *pbData,
  [in, out] DWORD      *pdwDataLen,
  [in]      DWORD      dwFlags
);

Параметры

[in] hHash

Дескриптор запрашиваемого хэш-объекта.

[in] dwParam

Тип запроса. Для этого параметра можно задать один из следующих запросов.

Значение Значение
HP_ALGID
Хеш-алгоритм
ALG_ID, указывающий алгоритм, указанный при создании хэш-объекта. Список хэш-алгоритмов см. в разделе CryptCreateHash.
HP_HASHSIZE
Размер хэш-значения
Значение DWORD, указывающее количество байтов в хэш-значении. Это значение зависит от хэш-алгоритма. Приложения должны получить это значение непосредственно перед значением HP_HASHVAL, чтобы можно было выделить правильный объем памяти.
HP_HASHVAL
Значение хэша
Хэш-значение или хэш сообщения для хэш-объекта, указанного hHash. Это значение создается на основе данных, предоставленных хэш-объекту ранее с помощью функций CryptHashData и CryptHashSessionKey .

Функция CryptGetHashParam завершает хэш. После вызова CryptGetHashParam больше нельзя добавить данные в хэш. Дополнительные вызовы CryptHashData или CryptHashSessionKey завершаются ошибкой . После завершения работы приложения с хэшем необходимо вызвать CryptDeographyHash , чтобы уничтожить хэш-объект.

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

[out] pbData

Указатель на буфер, получающий указанные данные значений. Форма этих данных зависит от номера значения.

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

[in, out] pdwDataLen

Указатель на значение DWORD , указывающее размер буфера pbData в байтах. При возврате функции значение DWORD содержит количество байтов, хранящихся в буфере.

Если pbData имеет значение NULL, задайте значение pdwDataLen равным нулю.

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

[in] dwFlags

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

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

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

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

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

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

Требования

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

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

ALG_ID

CryptCreateHash

CryptDeographyHash

CryptGetKeyParam

CryptHashData

CryptHashSessionKey

CryptSetHashParam

Функции хэша и цифровой подписи