Функция CryptVerifyCertificateSignatureEx (wincrypt.h)
Функция CryptVerifyCertificateSignatureEx проверяет подпись сертификата субъекта, список отзыва сертификатов, запрос сертификата или запрос keygen с помощью открытого ключа издателя. Функции не требуется доступ к закрытому ключу.
Синтаксис
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
Параметры
[in] hCryptProv
Этот параметр не используется и должен иметь значение NULL.
Windows Server 2003 и Windows XP: Дескриптор поставщика служб шифрования , используемый для проверки подписи. Тип данных этого параметра — HCRYPTPROV.
Значение NULL передается, если нет веской причины для передачи определенного поставщика шифрования. Передача значения NULL приводит к получению поставщика RSA или DSS по умолчанию.
[in] dwCertEncodingType
Тип кодирования сертификата, который использовался для шифрования субъекта. Эта функция игнорирует идентификатор типа кодирования сообщений , содержащийся в высоком значении WORD .
Этот параметр может быть следующим определенным в настоящее время типом кодирования сертификата.
Значение | Значение |
---|---|
|
Задает кодировку сертификата X.509. |
[in] dwSubjectType
Тип субъекта. Этот параметр может быть одним из следующих типов субъектов.
Значение | Значение |
---|---|
|
pvSubject — это указатель на структуру CRYPT_DATA_BLOB . |
|
pvSubject — это указатель на структуру CCERT_CONTEXT . |
|
pvSubject — это указатель на структуру CCRL_CONTEXT . |
|
pvSubject — это указатель на структуру OCSP_BASIC_SIGNED_RESPONSE_INFO .
Windows Server 2003 и Windows XP: Этот тип субъекта не поддерживается. |
[in] pvSubject
Указатель на структуру типа, указанного dwSubjectType , которая содержит проверяемую сигнатуру.
[in] dwIssuerType
Тип издателя. Этот параметр может иметь один из следующих типов издателей.
Значение | Значение |
---|---|
|
pvIssuer — это указатель на CERT_PUBLIC_KEY_INFO структуру. |
|
pvIssuer — это указатель на CCERT_CONTEXT структуру. |
|
pvIssuer является указателем на CCERT_CHAIN_CONTEXT структуру. |
|
Значение pvIssuer должно иметь значение NULL. |
[in] pvIssuer
Указатель на структуру типа, обозначенную значением dwIssuerType. Структура содержит доступ к открытому ключу, необходимому для проверки подписи.
[in] dwFlags
Флаги, изменяющие поведение функции. Это может быть ноль или побитовое значение ИЛИ из следующих значений.
Значение | Значение |
---|---|
|
Если этот флаг задан, а CryptVerifyCertificateSignatureEx обнаруживает алгоритм MD2 или MD4, функция возвращает значение FALSE и задает для GetLastErrorзначение NTE_BAD_ALGID. Подпись по-прежнему проверяется, но это сочетание ошибок позволяет вызывающему объекту, зная, что использовался алгоритм MD2 или MD4, чтобы решить, следует ли доверять или отклонить подпись.
Windows 8 и Windows Server 2012: Начнется поддержка этого флага. |
|
Задает свойства строгой сигнатуры после успешной проверки для субъекта, на который указывает параметр pvSubject .
В контексте сертификата задается следующее свойство:
Примечание Этот флаг применим, только если CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL указан в параметре dwSubjectType .
|
|
Возвращает указатель на структуру CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO в параметре pvExtra . Структура содержит длину открытого ключа в битах и имена используемых алгоритмов подписывания и хэширования.
Чтобы освободить структуру, необходимо вызвать CryptMemFree . Если не удается выделить память для структуры CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO , эта функция возвращает успешно, но задает для параметра pvExtraзначение NULL. Примечание Этот флаг применим, только если CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE указан в параметре dwSubjectType .
|
[in, out, optional] pvExtra
Указатель на CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO структуру, если параметру dwFlags присвоено значение CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG.
Чтобы освободить структуру, необходимо вызвать CryptMemFree .
Возвращаемое значение
Возвращает ненулевое значение в случае успешного выполнения или ноль в противном случае.
Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.
Код возврата | Описание |
---|---|
|
Недопустимый тип кодирования сертификата. В настоящее время поддерживается только X509_ASN_ENCODING . |
|
Идентификатор объекта (OID) алгоритма подписи не сопоставляет с известным или поддерживаемым хэш-алгоритмом. |
|
Подпись недействительна. |
В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.
Комментарии
Буфер субъекта может содержать закодированный BLOB-объект или контекст для сертификата или списка отзыва сертификатов. В случае контекста сертификата, если параметры открытого ключа сертификата отсутствуют и эти параметры могут быть унаследованы от издателя сертификата, например от параметра открытого ключа DSS, свойство CERT_PUBKEY_ALG_PARA_PROP_ID контекста обновляется параметрами алгоритма открытого ключа издателя для допустимой подписи.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |