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 値へのポインターには、検証チェックフラグが含まれています。 サブジェクト証明書の検証チェックを有効にするには、次のフラグを設定できます。 ビットごとの OR 操作を使用して組み合わせて、複数の検証を有効にすることができます。

意味
CERT_STORE_REVOCATION_FLAG
サブジェクト証明書が発行者の失効リストに含まれているかどうかを確認します。
CERT_STORE_SIGNATURE_FLAG
発行者の証明書の公開キーを使用して、サブジェクト証明書の署名を確認します。
CERT_STORE_TIME_VALIDITY_FLAG
現在の時刻を取得し、サブジェクト証明書の有効期間内であることを確認します。
 

有効な検証チェックが成功した場合、そのフラグは 0 に設定されます。 失敗した場合、そのフラグは戻り時に設定されます。

CERT_STORE_REVOCATION_FLAGが有効になっており、発行者がストアに CRL を持っていない場合は、CERT_STORE_REVOCATION_FLAGに加えてCERT_STORE_NO_CRL_FLAGが設定されます。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります

検証チェック失敗した場合でも、TRUE が返されます。 FALSE は、無効なパラメーターが渡された場合にのみ返されます。

拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードの 1 つは次のとおりです。

リターン コード 説明
E_INVALIDARG
pdwFlags でサポートされていないビットが設定されました。 CERT_STORE_SIGNATURE_FLAG、CERT_STORE_TIME_VALIDITY_FLAG、CERT_STORE_REVOCATION_FLAGの任意の組み合わせを設定できます。 pIssuerNULL の場合は、CERT_STORE_TIME_VALIDITY_FLAGのみを設定できます。

注釈

フラグの 16 進値は、ビットごとの OR 操作を使用して組み合わせて、複数の検証を有効にすることができます。 たとえば、署名と時刻の両方の有効性を有効にするには、

CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG

は、入力パラメーターとして pdwFlagsDWORD 値に配置されます。 検証CERT_STORE_SIGNATURE_FLAG成功したが、CERT_STORE_TIME_VALIDITY_FLAG検証が失敗した場合、 pdwFlags は関数が戻ったときにCERT_STORE_TIME_VALIDITY_FLAGに設定されます。

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

こちらもご覧ください

CERT_CONTEXT

CertGetIssuerCertificateFromStore

証明書関数