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


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

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

Синтаксис

BOOL CryptHashPublicKeyInfo(
  [in]      HCRYPTPROV_LEGACY     hCryptProv,
  [in]      ALG_ID                Algid,
  [in]      DWORD                 dwFlags,
  [in]      DWORD                 dwCertEncodingType,
  [in]      PCERT_PUBLIC_KEY_INFO pInfo,
  [out]     BYTE                  *pbComputedHash,
  [in, out] DWORD                 *pcbComputedHash
);

Параметры

[in] hCryptProv

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

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

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

[in] Algid

Структура ALG_ID , указывающая используемый хэш-алгоритм CryptoAPI. Если значение Algid равно нулю, используется хэш-алгоритм по умолчанию MD5.

[in] dwFlags

Значения, передаваемые в CryptCreateHash.

[in] dwCertEncodingType

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

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

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

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pInfo

Указатель на структуру CERT_PUBLIC_KEY_INFO , содержащую данные открытого ключа для кодирования и хэширования.

[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.
 

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

Требования

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

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

CryptHashCertificate

CryptHashToBeSigned

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