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


функция обратного вызова PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC (wincrypt.h)

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

Синтаксис

PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC PfnCryptVerifyEncodedSignatureFunc;

BOOL PfnCryptVerifyEncodedSignatureFunc(
  [in]           DWORD dwCertEncodingType,
  [in]           PCERT_PUBLIC_KEY_INFO pPubKeyInfo,
  [in]           PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
  [in, optional] void *pvDecodedSignPara,
  [in]           LPCWSTR pwszCNGPubKeyAlgid,
  [in]           LPCWSTR pwszCNGHashAlgid,
  [in]           BYTE *pbComputedHash,
  [in]           DWORD cbComputedHash,
  [in]           BYTE *pbSignature,
  [in]           DWORD cbSignature
)
{...}

Параметры

[in] dwCertEncodingType

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

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

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pPubKeyInfo

Адрес структуры CERT_PUBLIC_KEY_INFO , содержащей открытый ключ для проверки подписи. Его можно использовать с CryptImportPublicKeyInfoEx2 для получения BCRYPT_KEY_HANDLE.

[in] pSignatureAlgorithm

Указатель на структуру CRYPT_ALGORITHM_IDENTIFIER , содержащую идентификатор объекта сигнатуры (OID) и его необязательные закодированные параметры.

[in, optional] pvDecodedSignPara

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

[in] pwszCNGPubKeyAlgid

Строка Юникода, содержащая идентификатор алгоритма открытого ключа API шифрования следующего поколения (CNG), соответствующий pSignatureAlgorithm-pszObjId>.

[in] pwszCNGHashAlgid

Строка Юникода, содержащая идентификатор алгоритма хэширования CNG, соответствующий pSignatureAlgorithm-pszObjId> или идентификатору хэш-алгоритма в pvDecodedSignPara.

[in] pbComputedHash

Указатель на вычисляемые хэш-байты, возвращаемые функцией BCryptFinishHash , которая соответствует pwszCNGHashAlgid.

[in] cbComputedHash

Значение типа , представляющее длину вычисляемого хэша (в байтах).

[in] pbSignature

Указатель на закодированные байты подписи.

[in] cbSignature

Значение типа , представляющее длину закодированной сигнатуры в байтах.

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

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

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

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

Комментарии

Для развертывания функции обратного вызова можно использовать функции поддержки OID . Wincrypt.h определяет для этой цели следующую константу.

Константа Определение
CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC "CryptDllVerifyEncodedSignature"

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h