CertFindCTLInStore 関数 (wincrypt.h)

CertFindCTLInStore 関数は、dwFindType とそれに関連付けられた pvFindParaによって確立された検索条件に一致する、最初または次の 証明書信頼リスト (CTL) コンテキスト を検索します。 この関数をループで使用すると、指定した検索条件に一致する 証明書ストア 内のすべての CTL コンテキストを検索できます。

構文

PCCTL_CONTEXT CertFindCTLInStore(
  [in] HCERTSTORE    hCertStore,
  [in] DWORD         dwMsgAndCertEncodingType,
  [in] DWORD         dwFindFlags,
  [in] DWORD         dwFindType,
  [in] const void    *pvFindPara,
  [in] PCCTL_CONTEXT pPrevCtlContext
);

パラメーター

[in] hCertStore

検索する証明書ストアのハンドル。

[in] dwMsgAndCertEncodingType

CTL で使用されるエンコードの種類を指定します。 次の例に示すように、証明書と メッセージ エンコードの種類 の両方をビットごとのOR 操作と組み合わせて指定することは、常に許容されます。

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING 現在定義されているエンコードの種類は次のとおりです。

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

このパラメーターは、dwFindType パラメーターが CTL_FIND_USAGE に設定されている場合にのみ使用されます。

[in] dwFindFlags

dwFindType が CTL_FIND_USAGE に設定されている場合に設定できます。 詳細については、次のCTL_FIND_USAGEのコメントを参照してください。

[in] dwFindType

検索する検索の種類を指定します。 検索の種類によって、データ型、コンテンツ、および pvFindPara使用が決まります。 このパラメーターには、次のいずれかの値を指定できます。

価値 意味
CTL_FIND_ANY
pvFindParaのデータ型: NULL

CTL はすべて一致します。

CTL_FIND_SHA1_HASH
pvFindParaのデータ型: CRYPT_HASH_BLOB

CRYPT_HASH_BLOB 構造体のハッシュと一致するハッシュを持つ CTL が見つかりました。

CTL_FIND_MD5_HASH
pvFindParaのデータ型: CRYPT_HASH_BLOB

CRYPT_HASH_BLOB 構造体のハッシュと一致するハッシュを持つ CTL が見つかりました。

CTL_FIND_USAGE
pvFindParaのデータ型: CTL_FIND_USAGE_PARA

CTL_FIND_USAGE_PARA 構造内の使用状況識別子、リスト識別子、または署名者と一致する使用状況識別子、リスト識別子、または署名者を持つ CTL が見つかりました。

cUsageIdentifier メンバーが SubjectUsage サイズ の場合、CTL はすべて一致します。

listIdentifier メンバーの cbData メンバー 0 の場合、リスト識別子は一致します。 listIdentifiercbData メンバーがCTL_FIND_NO_LIST_ID_CBDATA 場合、リスト識別子のない CTL のみが一致します。

CTL_FIND_USAGE_PARA 構造体の pSigner メンバーが NULL場合、すべての CTL 署名者が一致し、pSignerCERT_INFO 構造体の Issuer および SerialNumber メンバーのみが使用されます。 pSigner CTL_FIND_NO_SIGNER_PTR場合、署名者のない CTL のみが一致します。

CTL_FIND_SAME_USAGE_FLAG
pvFindParaのデータ型: CTL_FIND_USAGE_PARA

まったく同じ使用状況識別子を持つ CCTL のみが照合されます。 追加の使用状況識別子を持つ CTL は一致しません。 たとえば、CTL_FIND_USAGE_PARA 構造体で "1.2.3" のみが指定されている場合、一致する場合、CTL には "1.2.3" のみを含める必要があり、追加の使用識別子は含めてはなりません。

CTL_FIND_EXISTING
pvFindParaのデータ型: PCCTL_CONTEXT

CTL_CONTEXTと完全に一致する次の CRL を検索します。

CTL_FIND_SUBJECT
pvFindParaのデータ型: CTL_FIND_SUBJECT_PARA

指定されたサブジェクトを持つ CTL が見つかりました。 CertFindSubjectInCTL 呼び出して、CTL 内のサブジェクトのエントリへのポインターを取得できます。 CTL_FIND_SUBJECT_PARApUsagePara メンバーは、必要に応じて、CTL_FIND_USAGEで前述した照合を有効にするように設定できます。

[in] pvFindPara

dwFindType パラメーターに関連付けられている検索値へのポインター。

[in] pPrevCtlContext

この関数によって返される最後の CTL_CONTEXT へのポインター。 ストア内の最初の CTL を取得するには、NULL である必要があります。 連続する CCTL は、pPrevCtlContext 前の関数呼び出しによって返された CTL_CONTEXT へのポインターに を設定することによって取得されます。 検索条件を満たしていない証明書や、CertDeleteCTLFromStore によって以前に削除された証明書はスキップされます。 この関数は、このパラメーターの非NULL 値によって参照される CTL_CONTEXT を解放します。

戻り値

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

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

リターン コード 形容
CRYPT_E_NOT_FOUND
ストアに CCTL が見つからなかったか、検索条件に一致する CTL が見つからなかったか、関数がストアのリストの末尾に達しました。
E_INVALIDARG
hCertStore パラメーターのハンドルは、pPrevCtlContext パラメーターが指す CTL コンテキストのハンドルと同じではないか、dwFindType パラメーターで無効な値が指定されました。

備考

返されたポインターは、関数への後続の呼び出しで pPrevCtlContext として渡されると解放されます。 それ以外の場合は、CertFreeCTLContext呼び出してポインターを解放する必要があります。 以外の NULLpPrevCtlContext 関数に渡される は、CertFreeCTLContextの呼び出しによって常に解放されます(関数でエラーが発生した場合でも)。

CertDuplicateCTLContext を呼び出して、返されたコンテキストの複製を作成できます。 返された CTL コンテキストは、CertAddCTLContextToStoreを使用して別の証明書ストアに追加できます。または、CertAddCTLLinkToStoreを使用して、その CTL コンテキストへのリンク 非コレクション ストアに追加できます。 検索条件に一致する CTL が見つからない場合は、NULL が返されます。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wincrypt.h
ライブラリ Crypt32.lib
DLL Crypt32.dll

関連項目

CTL_CONTEXT

CTL_FIND_USAGE_PARA

CertAddCTLContextToStore

CertAddCTLLinkToStore

CertDeleteCTLFromStore

CertDuplicateCTLContext

CertEnumCTLsInStore

CertFindSubjectInCTL

CertFreeCTLContext

証明書信頼リスト関数