CERT_STORE_PROV_FIND_INFO 構造体 (wincrypt.h)

CERT_STORE_PROV_FIND_INFO構造体は、多くのストア プロバイダー コールバック関数で使用されます。 これには、証明書ストア内の 証明書証明書失効リスト (CRL)、または 証明書信頼リスト (CTL) を検索するための検索条件が含 まれています

構文

typedef struct _CERT_STORE_PROV_FIND_INFO {
  DWORD      cbSize;
  DWORD      dwMsgAndCertEncodingType;
  DWORD      dwFindFlags;
  DWORD      dwFindType;
  const void *pvFindPara;
} CERT_STORE_PROV_FIND_INFO, *PCERT_STORE_PROV_FIND_INFO;

メンバー

cbSize

構造体のサイズ。

dwMsgAndCertEncodingType

メッセージと証明書に使用されるエンコードの種類を指定します。 証明書と メッセージのエンコードの種類 は、ビットごとの OR 操作と組み合わせることができます。 定義されているエンコードの種類を次に示します。

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

一部の dwFindType 値と共に使用して検索条件を変更します。 ほとんどの dwFindType 値では、 dwFindFlags は使用されず、ゼロに設定する必要があります。

dwFindType

検索の種類を指定します。 検索の種類によって、データ型、コンテンツ、 および pvFindPara の使用が決まります。 現在定義されている dwFindType 値と、 pvFindPara にそれぞれ必要なデータ型は次のとおりです。

説明
CERT_FIND_ANY
NULL; pvFindPara を使用しない
検索条件は使用されません。 ストア内の次の証明書を返します。
CERT_FIND_CERT_ID
CERT_ID構造体
指定した CERT_IDによって識別される証明書を検索します。
CERT_FIND_CTL_USAGE
CTL_USAGE構造体
szOID_ENHANCED_KEY_USAGE拡張機能を持つ証明書、またはCTL_USAGE構造体の pszUsageIdentifier メンバーと一致する CERT_CTL_PROP_ID を検索します。
CERT_FIND_ENHKEY_USAGE
CERT_ENHKEY_USAGE構造体
拡張キー使用法拡張または拡張キー使用法プロパティと、CERT_ENHKEY_USAGE構造体の pszUsageIdentifier メンバーと一致する使用状況識別子を持つストア内の証明書を検索します。

pszObjId メンバーが szOID_ENHANCED_KEY_USAGE に設定されたCERT_EXTENSION構造を持つ証明書には、拡張キー使用法拡張機能があります。 証明書のCERT_ENHKEY_USAGE_PROP_ID識別子が設定されている場合、証明書には拡張キー使用法プロパティがあります。

pvFindParaNULL であるか、CERT_ENHKEY_USAGEcUsageIdentifier メンバーが 0 の場合、拡張キー使用法拡張または拡張キー使用法プロパティを持つ証明書は、選択基準を満たします。

pvFindParaNULL であるか、CERT_ENHKEY_USAGE構造体の cUsageIdentifier メンバーが 0 の場合、拡張キー使用法を持つ証明書は一致します。

CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAGが dwFindFlags で設定されている場合は、キー使用法の拡張機能またはプロパティのない証明書も一致します。 このフラグの設定は、pvFindParaNULL を渡すよりも優先されます。

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAGが設定されている場合は、キー使用法拡張機能でのみ一致が行われます。

検索条件に対するフラグの変更については、「解説」を参照してください。

CERT_FIND_EXISTING
CERT_CONTEXT構造体
指定した証明書コンテキストと完全に一致する証明書を検索します。
CERT_FIND_HASH
CRYPT_HASH_BLOB 構造体
CRYPT_HASH_BLOB構造内のハッシュと一致する SHA1 ハッシュを持つ証明書を検索します。
CERT_FIND_ISSUER_ATTR
CERT_RDN構造体
CERT_RDN構造の属性と一致する、指定された発行者属性を持つ証明書を検索します。 これらの値が設定されている場合、関数は証明書内の発行者の属性を、このCERT_RDN構造体のCERT_RDN_ATTR配列の要素と比較します。 比較では、証明書の発行者属性との一致を探す CERT_RDN_ATTR 属性を反復処理します。

CERT_RDN_ATTRpszObjId メンバーが NULL の場合、属性オブジェクト識別子は無視されます。

CERT_RDN_ATTRdwValueType メンバーがCERT_RDN_ANY_TYPEされている場合、値の型は無視されます。

CERT_RDN_VALUE_BLOBpbData メンバーが NULL の場合、すべての値が一致します。

現時点では、大文字と小文字を区別する正確な一致のみがサポートされています。 Unicode オプションの詳細については、「解説」を参照してください。 これらの値を設定すると、検索は、エンコードの種類が dwMsgAndCertEncodingType と一致する証明書に制限されます。

CERT_FIND_ISSUER_NAME
CERT_NAME_BLOB 構造体
発行者名全体と名前が完全に一致する証明書を CERT_NAME_BLOBで検索します。 検索は、 dwMsgAndCertEncodingType に一致する証明書に制限されます。
CERT_FIND_ISSUER_OF
CERT_CONTEXT構造体
CERT_CONTEXTの発行者と一致する発行者を持つ証明書を検索します。

この値で CertFindCertificateInStore 関数を使用する代わりに、 CertGetCertificateChain 関数を使用します。

CERT_FIND_ISSUER_STR
Null で終わるワイド (Unicode) 文字列
指定した発行者名文字列を含む証明書を検索します。 証明書の発行者メンバーは、CERT_SIMPLE_NAME_STR形式の適切な形式の CertNameToStr を使用して、適切な型の名前文字列に変換されます。 次に、大文字と小文字を区別しない substring-within-a-string の一致が実行されます。 この値を設定すると、検索は、エンコードの種類が dwMsgAndCertEncodingType と一致する証明書に制限されます。
CERT_FIND_KEY_IDENTIFIER
CRYPT_HASH_BLOB 構造体
CRYPT_HASH_BLOBのキー識別子と一致するCERT_KEY_IDENTIFIER_PROP_ID プロパティを持つ証明書 検索します。
CERT_FIND_KEY_SPEC
キー指定を含む DWORD
pvFindPara のキー指定に一致するCERT_KEY_SPEC_PROP_ID プロパティを持つ証明書を検索します。
CERT_FIND_MD5_HASH
CRYPT_HASH_BLOB 構造体
CRYPT_HASH_BLOBのハッシュと一致する MD5 ハッシュを持つ証明書を検索します。
CERT_FIND_PROPERTY
プロパティ識別子を含む DWORD
pvFindParaDWORD で指定されたプロパティ識別子と一致するプロパティを持つ証明書を検索します。
CERT_FIND_PUBLIC_KEY
CERT_PUBLIC_KEY_INFO構造体
CERT_PUBLIC_KEY_INFO構造の公開キーと一致する公開キーを持つ証明書を検索します。
CERT_FIND_SHA1_HASH
CRYPT_HASH_BLOB 構造体
CRYPT_HASH_BLOB構造内のハッシュと一致する SHA1 ハッシュを持つ証明書を検索します。
CERT_FIND_SIGNATURE_HASH
CRYPT_HASH_BLOB 構造体
CRYPT_HASH_BLOB構造体の署名ハッシュと一致する署名ハッシュを持つ証明書を検索します。
CERT_FIND_SUBJECT_ATTR
CERT_RDN構造体
CERT_RDN構造内の属性と一致する指定されたサブジェクト属性を持つ証明書を検索します。 RDN 値が設定されている場合、この関数は、証明書内のサブジェクトの属性を、このCERT_RDN構造のCERT_RDN_ATTR配列の要素と比較します。 比較では、証明書のサブジェクトの属性との一致を検索する CERT_RDN_ATTR 属性を反復処理します。

CERT_RDN_ATTRpszObjId メンバーが NULL の場合、属性オブジェクト識別子は無視されます。

CERT_RDN_ATTRdwValueType メンバーがCERT_RDN_ANY_TYPEされている場合、値の型は無視されます。

CERT_RDN_VALUE_BLOBpbData メンバーが NULL の場合、すべての値が一致します。

現時点では、大文字と小文字を区別する正確な一致のみがサポートされています。

Unicode オプションの詳細については、「解説」を参照してください。 これらの値を設定すると、検索は、エンコードの種類が dwMsgAndCertEncodingType と一致する証明書に制限されます。

CERT_FIND_SUBJECT_CERT
CERT_INFO構造体
発行者とシリアル番号の両方を持つ証明書を検索し、 CERT_INFO 構造体の発行者とシリアル番号に一致します。
CERT_FIND_SUBJECT_NAME
CERT_NAME_BLOB 構造体
サブジェクト名全体と、 CERT_NAME_BLOB 構造内の名前と完全に一致する証明書を検索します。 検索は、 dwMsgAndCertEncodingType の値に一致する証明書に制限されます。
CERT_FIND_SUBJECT_STR
Null で終わるワイド (Unicode) 文字列
指定したサブジェクト名文字列を含む証明書を検索します。 証明書のサブジェクト メンバーは、CERT_SIMPLE_NAME_STR形式の適切な形式の CertNameToStr を使用して、適切な型の名前文字列に変換されます。 次に、大文字と小文字を区別しない substring-within-a-string の一致が実行されます。 この値を設定すると、検索は、エンコードの種類が dwMsgAndCertEncodingType と一致する証明書に制限されます。
 
メモpvFindPara で文字列を渡す dwFindType の値には、代替形式があります。 1 つの形式では Unicode 文字列を使用し、もう 1 つの形式は ASCII 文字列を使用します。 "_W" で終わる値、またはサフィックスのない値では、Unicode が使用されます。 "_A" で終わる値は 、ASCII 文字列を 使用します。
 

pvFindPara

dwFindType の値によって示される検索型と共に使用されるデータ項目または構造体を指します。

解説

dwFindFlags メンバーは、一部の検索の種類の条件を変更するために使用されます。

CERT_UNICODE_IS_RDN_ATTRS_FLAG の dwFindFlags 値は、dwFindType のCERT_FIND_SUBJECT_ATTR値とCERT_FIND_ISSUER_ATTR値でのみ使用されます。 pvFindPara が指すCERT_RDN_ATTR構造体が Unicode 文字列で初期化された場合は、CERT_UNICODE_IS_RDN_ATTRS_FLAGを設定する必要があります。 比較を行う前に、一致する文字列は X509_UNICODE_NAME を使用して Unicode 比較を提供することで変換されます。

次の dwFindFlags 値は、 dwFindType のCERT_FIND_ENKEY_USAGE値でのみ使用されます。

説明
CERT_FIND_OR_ENHKEY_USAGE_FLAG 検索条件は、1 つ以上のフラグを設定することで変更できます。 既定では、pvFindPara が指すCERT_ENHKEY_USAGE構造体の pszUsageIdentifier メンバーが一致する場合は、検索条件を満たすために各識別子を照合する必要があります。 ただし、CERT_FIND_OR_ENHKEY_USAGE_FLAGが設定されている場合は、ビットごとの OR 演算を使用して組み合わせたすべての識別子に一致させることができます。したがって、識別子のいずれか 1 つに一致するだけで十分です。
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG このフラグが設定されている場合、通常の一致に加えて、拡張キー使用法拡張機能も拡張キー使用法プロパティも含まれていないすべての証明書が検索条件を満たします。
CERT_FIND_NO_ENHKEY_USAGE_FLAG このフラグが設定されている場合、拡張キー使用法も拡張キー使用法プロパティも持っていない証明書のみが一致します。 このフラグ設定は、 pvFindPara がNULL であるよりも優先されます。
CERT_FIND_VALID_ENHKEY_USAGE_FLAG このフラグが設定されている場合、関数は、指定された使用法に対して有効な証明書にのみ一致します。 既定では、一致させるには、証明書がすべての使用状況に対して有効である必要があります。

CERT_FIND_OR_ENHKEY_USAGE_FLAGは、証明書が指定された使用法のいずれかに対してのみ有効である必要がある場合にも設定できます。 証明書の有効な用途の一覧を取得するために 、CertGetValidUsages が呼び出されることに注意してください。 CERT_FIND_VALID_ENHKEY_USAGE_FLAGが設定されている場合は、CERT_FIND_OR_ENHKEY_USAGE_FLAGのみが適用されます。

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG このフラグが設定されている場合、照合プロセスには拡張機能の使用識別子のみが含まれます。 pvFindParaNULL の場合、または pvFindPara が指すCERT_ENHKEY_USAGE構造体の cUsageIdentifier メンバーがゼロの場合、拡張キー使用法拡張機能を持つ証明書はすべて一致します。 CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAGも設定されている場合、拡張キー使用法拡張機能のない証明書も一致します。 CERT_FIND_NO_ENHKEY_USAGE_FLAGも設定されている場合は、拡張キー使用法拡張機能のない証明書のみが一致します。
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG このフラグが設定されている場合、照合プロセスにはプロパティである使用状況識別子のみが含まれます。 pvFindParaNULL または cUsageIdentifier が 0 に設定されている場合、拡張キー使用法プロパティを持つ証明書は一致します。 CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAGも設定されている場合、拡張キー使用法プロパティのない証明書も一致します。 CERT_FIND_NO_ENHKEY_USAGE_FLAGが設定されている場合、拡張キー使用法プロパティを持たない証明書のみが一致します。
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG dwFindType のCERT_FIND_SUBJECT_ATTR値とCERT_FIND_ISSUER-ATTR 値でのみ使用されます。 既定では、大文字と小文字が区別され、完全一致が行われます。 このフラグが設定されている場合、一致では大文字と小文字が区別されません。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header wincrypt.h