CertGetCRLFromStore 関数 (wincrypt.h)

CertGetCRLFromStore 関数は、指定された発行者の証明書ストアから最初または次の証明書失効リスト (CRL) コンテキストを取得します。 この関数は、CRL に対して有効な検証チェックも実行します。 この関数の代わりに、新しい 証明書チェーン検証関数 をお勧めします。

構文

PCCRL_CONTEXT CertGetCRLFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in, optional] PCCERT_CONTEXT pIssuerContext,
  [in]           PCCRL_CONTEXT  pPrevCrlContext,
  [in, out]      DWORD          *pdwFlags
);

パラメーター

[in] hCertStore

証明書ストアのハンドル。

[in, optional] pIssuerContext

発行者 CERT_CONTEXTへのポインター。 pIssuerContext ポインターは、このストアまたは別のストアから取得することも、呼び出し元の CertCreateCertificateContext によって作成することもできます。 このパラメーターに NULL が渡されると、ストア内のすべての CRL が見つかります。

[in] pPrevCrlContext

CRL_CONTEXTへのポインター。 発行者は複数の CRL を持つことができます。 たとえば、 X.509 バージョン 3 拡張機能を使用してデルタ CRL を生成できます。 CRL を取得するには、最初の呼び出しでこのパラメーターを NULL にする必要があります。 発行者の次の CRL を取得するには、パラメーターが前の呼び出しによって返される CRL_CONTEXT に設定されます。 NULL 以外の pPrevCrlContext は、エラーの場合でも CertFreeCRLContext を呼び出すことによって、この関数によって常に解放されます。

[in, out] pdwFlags

返される CRL の検証チェックを有効にするために、次のフラグ値が定義されています。 これらのフラグは、ビットごとの OR 演算を使用して組み合わせることができます。

説明
CERT_STORE_SIGNATURE_FLAG
発行者の証明書の公開キーを使用して、返された CRL の署名を確認します。
CERT_STORE_TIME_VALIDITY_FLAG
現在の時刻を取得し、CRL の ThisUpdate と NextUpdate の間の時間内であることを確認します。
CERT_STORE_BASE_CRL_FLAG
ベース CRL を取得します。
CERT_STORE_DELTA_CRL_FLAG
デルタ CRL を取得します。
 

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

有効な検証チェックが失敗した場合、そのフラグは戻り時に設定されたままになります。 pIssuerContextNULL の場合、有効なCERT_STORE_SIGNATURE_FLAGは常に失敗し、CERT_STORE_NO_ISSUER_FLAGも設定されます。 詳しくは、「注釈」をご覧ください。

CERT_STORE_BASE_CRL_FLAGまたはCERT_STORE_DELTA_CRL_FLAGのいずれかが設定されている場合、この関数は基本 CRL またはデルタ CRL を返し、戻り時に適切な基本フラグまたはデルタ フラグがクリアされます。 両方のフラグが設定されている場合、いずれかのフラグのみがクリアされます。

検証チェック失敗した場合でも、最初または次のCRL_CONTEXTへのポインターが返され、GetLastError は更新されません。

戻り値

関数が成功した場合、戻り値は読み取り専用 CRL_CONTEXTへのポインターです。

関数が失敗し、最初または次の CRL が見つからない場合、戻り値は NULL になります

返される CRL_CONTEXT は、 CertFreeCRLContext を呼び出して解放する必要があります。 ただし、返された CRL_CONTEXT が後続の呼び出しで pPrevCrlContext に指定されると、関数によって解放されます。

拡張エラー情報については、 GetLastError を呼び出します。 考えられるエラー コードの一部を次に示します。

説明
E_INVALIDARG
hCertStore パラメーターのハンドルは、pPrevCrlContext パラメーターが指す CRL コンテキストのハンドルと同じではないか、pdwFlags でサポートされていないフラグが設定されました。
CRYPT_E_NOT_FOUND
発行者のストアに CRL が存在しないか、関数がストアのリストの末尾に達しました。

解説

CertDuplicateCRLContext を呼び出して、重複する CRL を作成できます。

フラグの 16 進値は、ビットごとの OR 演算を使用して組み合わせて、両方の検証を有効にすることができます。 たとえば、両方の検証を有効にするには、pdwFlags が指す DWORD 値を value CERT_STORE_SIGNATURE_FLAG | に設定します。CERT_STORE_TIME_VALIDITY_FLAG。 CERT_STORE_SIGNATURE_FLAG検証に成功したが、CERT_STORE_TIME_VALIDITY_FLAG検証に失敗した場合、pdwFlags によって指される DWORD 値は、関数が返されたときにCERT_STORE_TIME_VALIDITY_FLAGに設定されます。

要件

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

関連項目

CRL_CONTEXT

CertCreateCertificateContext

CertDuplicateCRLContext

CertFreeCRLContext

CertGetCRLContextProperty

証明書失効リスト関数