CertSelectCertificateChains 関数 (wincrypt.h)
CertSelectCertificateChains 関数は、指定された選択基準に基づいて証明書チェーンを取得します。
構文
BOOL CertSelectCertificateChains(
[in, optional] LPCGUID pSelectionContext,
[in] DWORD dwFlags,
[in, optional] PCCERT_SELECT_CHAIN_PARA pChainParameters,
[in] DWORD cCriteria,
[in, optional] PCCERT_SELECT_CRITERIA rgpCriteria,
[in] HCERTSTORE hStore,
[out] PDWORD pcSelection,
[out] PCCERT_CHAIN_CONTEXT **pprgpSelection
);
パラメーター
[in, optional] pSelectionContext
この呼び出しに使用する証明書選択シナリオの GUID へのポインター。
[in] dwFlags
証明書の選択プロセスを制御するためのフラグ。 このパラメーターには、次のフラグの 0 個以上の組み合わせを指定できます。
[in, optional] pChainParameters
チェーン構築のパラメーターを指定する CERT_SELECT_CHAIN_PARA 構造体へのポインター。 NULL の場合、既定のパラメーターが使用されます。
CERT_SELECT_CHAIN_PARA構造体の pChainPara メンバーは、強力な署名を有効にするために使用できるCERT_CHAIN_PARA構造体を指しています。
[in] cCriteria
rgpCriteria 配列が指す配列内の要素の数。
[in, optional] rgpCriteria
選択基準を定義する CERT_SELECT_CRITERIA 構造体の配列へのポインター。 このパラメーターが NULL に設定されている場合、 cCriteria パラメーターの値は 0 である必要があります。
[in] hStore
証明書の選択元となるストアへのハンドル。
[out] pcSelection
pprgpSelection パラメーターが指す配列内の要素の数を受け取る DWORD 値へのポインター。
[out] pprgpSelection
構造体の配列を受け取る場所へのポインター CERT_CHAIN_CONTEXT ポインター。 CertSelectCertificateChains 関数は、すべての選択条件に一致する証明書チェーンのみを返します。 配列内のエントリは品質順に並べ替えられます。つまり、最も品質の高いチェーンが最初のエントリです。
配列のストレージは、 CertSelectCertificateChains 関数によって割り当てられます。 割り当てられたメモリを解放するには、 まず CertFreeCertificateChain 関数を呼び出して、配列内の各チェーン コンテキストを解放する必要があります。 その後、 CertFreeCertificateChainList 関数を呼び出してメモリを解放する必要があります。
戻り値
関数が成功した場合、関数は TRUE を返します。
関数が失敗した場合は、0 (FALSE) を返します。 拡張エラー情報については、 GetLastError 関数を呼び出します。
注釈
選択条件は、 dwFlags パラメーター、 rgpCriteria パラメーター、または両方のパラメーターのいずれかを使用して指定できます。 選択条件が指定されていない場合、関数は成功し、 hStore パラメーターで指定されたストア内のすべての証明書の証明書チェーンを返します。
選択された証明書チェーンは、次の基本設定ロジックに基づいて順序付けられます。
- スマート カード ベースではない証明書よりも、スマート カード証明書である証明書を優先します。
- 有効期間が長い証明書を優先します (有効期限は後になります)。
- 複数の証明書の有効期限が同じ場合は、最近発行された証明書を優先します。
- ネクタイがある場合は、短いチェーンを使用します。
- CERT_SELECT_BY_ISSUER_NAME
- CERT_SELECT_BY_ISSUER_ATTR
- CERT_SELECT_BY_POLICY_OID
- CERT_STRONG_SIGN_PARA構造体を作成し、必要な厳密な署名パラメーターを指定し、CERT_CHAIN_PARA構造体の pStrongSignPara メンバー内の 構造体へのポインターを設定します。
- CERT_SELECT_CHAIN_PARA構造体の pChainPara メンバーのCERT_CHAIN_PARA構造体へのポインターを設定します。
- この (CertSelectCertificateChains) 関数の pChainParameters パラメーターで、CERT_SELECT_CHAIN_PARA構造体へのポインターを設定します。
厳密な署名チェックを有効にすると、CERT_TRUST_STATUS構造体の dwErrorStatus フィールドでCERT_TRUST_IS_NOT_SIGNATURE_VALID エラーを返す証明書チェーンはスキップされます。 ( pprgpSelection パラメーターは 、CERT_CHAIN_CONTEXT 構造体を指し、 CERT_TRUST_STATUS構造体を 指します)。 CERT_TRUST_HAS_WEAK_SIGNATURE 値は、弱いシグネチャにも設定されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |
こちらもご覧ください