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


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

Функция CertVerifySubjectCertificateContext выполняет включенные проверки сертификата, проверяя действительность издателя сертификата. Вместо этой функции рекомендуется использовать новые функции проверки цепочки сертификатов .

Синтаксис

BOOL CertVerifySubjectCertificateContext(
  [in]           PCCERT_CONTEXT pSubject,
  [in, optional] PCCERT_CONTEXT pIssuer,
  [in, out]      DWORD          *pdwFlags
);

Параметры

[in] pSubject

Указатель на структуру CERT_CONTEXT , содержащую сертификат субъекта.

[in, optional] pIssuer

Указатель на CERT_CONTEXT , содержащий сертификат издателя. При проверке только CERT_STORE_TIME_VALIDITY_FLAG pIssuer может иметь значение NULL.

[in, out] pdwFlags

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

Значение Значение
CERT_STORE_REVOCATION_FLAG
Проверяет, находится ли сертификат субъекта в списке отзыва издателя.
CERT_STORE_SIGNATURE_FLAG
Использует открытый ключ в сертификате издателя для проверки подписи в сертификате субъекта.
CERT_STORE_TIME_VALIDITY_FLAG
Возвращает текущее время и проверяет, что оно находится в пределах срока действия сертификата субъекта.
 

Если включенная проверка проверка выполнена успешно, ее флаг устанавливается равным нулю. Если он завершается сбоем, его флаг устанавливается по возвращении.

Если CERT_STORE_REVOCATION_FLAG включен и у издателя нет списка отзыва сертификатов в хранилище, CERT_STORE_NO_CRL_FLAG устанавливается в дополнение к CERT_STORE_REVOCATION_FLAG.

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

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

Если функция завершается сбоем, возвращается значение FALSE.

Для сбоя проверка проверки по-прежнему возвращается значение TRUE. Значение FALSE возвращается только при передаче неверного параметра.

Для получения дополнительных сведений об ошибке вызовите Метод GetLastError. Ниже приведен один из возможных кодов ошибки.

Код возврата Описание
E_INVALIDARG
Неподдерживаемый бит был задан в pdwFlags. Можно задать любое сочетание CERT_STORE_SIGNATURE_FLAG, CERT_STORE_TIME_VALIDITY_FLAG и CERT_STORE_REVOCATION_FLAG. Если pIssuer имеет значение NULL, можно задать только CERT_STORE_TIME_VALIDITY_FLAG.

Комментарии

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

CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG

помещается в значение DWORD pdwFlags в качестве входного параметра. Если проверка CERT_STORE_SIGNATURE_FLAG выполнена успешно, но CERT_STORE_TIME_VALIDITY_FLAG проверка завершается сбоем, при возврате функции для pdwFlags устанавливается значение CERT_STORE_TIME_VALIDITY_FLAG.

Требования

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

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

CERT_CONTEXT

CertGetIssuerCertificateFromStore

Функции сертификата