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


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

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

Синтаксис

BOOL CryptHashToBeSigned(
  [in]      HCRYPTPROV_LEGACY hCryptProv,
  [in]      DWORD             dwCertEncodingType,
  [in]      const BYTE        *pbEncoded,
  [in]      DWORD             cbEncoded,
  [out]     BYTE              *pbComputedHash,
  [in, out] DWORD             *pcbComputedHash
);

Параметры

[in] hCryptProv

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

Windows Server 2003 и Windows XP: Дескриптор поставщика служб шифрования (CSP) для вычисления хэша. Тип данных этого параметра — HCRYPTPROV.

Если нет веской причины для передачи определенного поставщика шифрования в hCryptProv, передается ноль. Передача нуля приводит к получению поставщика RSA или стандарта цифровой подписи (DSS) по умолчанию перед выполнением операций хэша, проверки подписи или шифрования получателей.

[in] dwCertEncodingType

Указывает используемый тип кодирования. Всегда допустимо указывать типы кодированиясертификатов и сообщений, объединяя их с побитовой операцией ИЛИ, как показано в следующем примере:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

В настоящее время определены следующие типы кодирования:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbEncoded

Адрес буфера, содержащего хэш-содержимое. Это закодированная форма CERT_SIGNED_CONTENT_INFO.

[in] cbEncoded

Размер (в байтах) буфера.

[out] pbComputedHash

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

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

[in, out] pcbComputedHash

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

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

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

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

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

Примечание Ошибки из вызываемых функций CryptCreateHash, CryptGetHashParam и CryptHashData могут быть распространены на эту функцию. Эта функция имеет следующие коды ошибок.
 
Код возврата Описание
ERROR_MORE_DATA
Если буфер, заданный параметром pbComputedHash , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменную, на которую указывает pcbComputedHash.
ERROR_FILE_NOT_FOUND
Недопустимый тип кодирования сертификата. В настоящее время поддерживается только X509_ASN_ENCODING.
NTE_BAD_ALGID
Идентификатор объекта (OID) алгоритма сигнатуры не сопоставляет с известным или поддерживаемым хэш-алгоритмом.
 

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

Требования

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

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

CryptHashCertificate

CryptHashPublicKeyInfo

Функции Управление данными