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

Функция CryptHashMessage создает хэш сообщения.

Синтаксис

BOOL CryptHashMessage(
  [in]                PCRYPT_HASH_MESSAGE_PARA pHashPara,
  [in]                BOOL                     fDetachedHash,
  [in]                DWORD                    cToBeHashed,
  [in]                const BYTE * []          rgpbToBeHashed,
  [in]                DWORD []                 rgcbToBeHashed,
  [out]               BYTE                     *pbHashedBlob,
  [in, out]           DWORD                    *pcbHashedBlob,
  [out, optional]     BYTE                     *pbComputedHash,
  [in, out, optional] DWORD                    *pcbComputedHash
);

Параметры

[in] pHashPara

Указатель на структуру CRYPT_HASH_MESSAGE_PARA , содержащую параметры хэша.

[in] fDetachedHash

Если этот параметр имеет значение TRUE, в pbHashedBlob кодируется только pbComputedHashedBlob. В противном случае кодируются rgpbToBeHashed и pbComputedHash .

[in] cToBeHashed

Количество элементов массива в rgpbToBeHashed и rgcbToBeHashed. Этот параметр может быть только одним, если fDetachedHash не имеет значение TRUE.

[in] rgpbToBeHashed

Массив указателей на буферы, содержащие хэшированное содержимое.

[in] rgcbToBeHashed

Массив размеров (в байтах) буферов, на которые указывает rgpbToBeHashed.

[out] pbHashedBlob

Указатель на буфер для получения хэшированного сообщения, закодированного для передачи.

Этот параметр может иметь значение NULL , если хэшированные сообщения не требуются для дополнительной обработки или для задания размера хэшированного сообщения для целей выделения памяти. Хэшированные сообщения не будут возвращены, если этот параметр имеет значение NULL. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbHashedBlob

Указатель на DWORD , указывающий размер (в байтах) буфера, на который указывает параметр pbHashedBlob . При возврате функции эта переменная содержит размер в байтах расшифрованного сообщения, скопированного в pbHashedBlob. Этот параметр должен быть адресом DWORD , а не null , иначе длина буфера не будет возвращена.

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

[out, optional] pbComputedHash

Указатель на буфер для получения только что созданного хэш-значения. Этот параметр может иметь значение NULL , если созданный хэш не требуется для дополнительной обработки или для задания размера хэша в целях выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out, optional] pcbComputedHash

Указатель на DWORD , указывающий размер (в байтах) буфера, на который указывает параметр pbComputedHash . При возврате функции этот параметр DWORD содержит размер в байтах созданного хэша, скопированного в pbComputedHash.

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

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

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

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

Примечание Ошибки из вызываемых функций CryptCreateHash, CryptHashData и CryptGetHashParam могут распространяться на эту функцию.
 
Функция GetLastError чаще всего возвращает следующие коды ошибок.
Код возврата Описание
E_INVALIDARG
Недопустимый тип кодирования сообщений . В настоящее время поддерживается только PKCS_7_ASN_ENCODING. CbSize в *pHashPara является недопустимым.
ERROR_MORE_DATA
Если буфер, заданный параметром pbHashedBlob , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pbHashedBlob.
 

Если функция завершается сбоем, GetLastError может вернуть ошибку кодирования и декодирования абстрактной синтаксической нотации 1 (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

Требования

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

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

CryptVerifyDetachedMessageHash

CryptVerifyMessageHash

Упрощенные функции сообщений