Share via


CERT_STORE_PROV_FIND_INFO-Struktur (wincrypt.h)

Die CERT_STORE_PROV_FIND_INFO-Struktur wird von vielen Rückruffunktionen des Speicheranbieters verwendet. Sie enthält Suchkriterien zum Suchen eines Zertifikats, einer Zertifikatsperrliste (Certificate Revocation List , CRL) oder einer Zertifikatvertrauensliste (Certificate Trust List , CTL) in einem Zertifikatspeicher.

Syntax

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;

Member

cbSize

Größe der Struktur.

dwMsgAndCertEncodingType

Gibt den Codierungstyp an, der für Nachrichten und Zertifikate verwendet wird. Die Zertifikat - und Nachrichtencodierungstypen können mit einem bitweisen OR-Vorgang kombiniert werden. Hier sind die definierten Codierungstypen:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

Wird mit einigen dwFindType-Werten verwendet, um die Suchkriterien zu ändern. Für die meisten dwFindType-Werte wird dwFindFlags nicht verwendet und sollte auf Null festgelegt werden.

dwFindType

Gibt den Suchtyp an. Der Suchtyp bestimmt den Datentyp, den Inhalt und die Verwendung von pvFindPara. Die derzeit definierten dwFindType-Werte und der für pvFindPara jeweils erforderliche Datentyp sind wie folgt.

Wert Bedeutung
CERT_FIND_ANY
NULL; pvFindPara nicht verwendet
Es werden keine Suchkriterien verwendet. Gibt das nächste Zertifikat im Speicher zurück.
CERT_FIND_CERT_ID
CERT_ID Struktur
Sucht das zertifikat, das durch den angegebenen CERT_ID identifiziert wurde.
CERT_FIND_CTL_USAGE
CTL_USAGE Struktur
Sucht nach einem Zertifikat mit einer szOID_ENHANCED_KEY_USAGE-Erweiterung oder einem CERT_CTL_PROP_ID, das dem pszUsageIdentifier-Member der CTL_USAGE-Struktur entspricht.
CERT_FIND_ENHKEY_USAGE
CERT_ENHKEY_USAGE Struktur
Sucht im Speicher nach einem Zertifikat mit einer erweiterten Schlüsselverwendungserweiterung oder einer erweiterten Schlüsselverwendungseigenschaft und einem Verwendungsbezeichner, der dem pszUsageIdentifier-Member in der CERT_ENHKEY_USAGE-Struktur entspricht.

Ein Zertifikat verfügt über eine erweiterte Schlüsselverwendungserweiterung, wenn es über eine CERT_EXTENSION-Struktur verfügt, wobei das pszObjId-Element auf szOID_ENHANCED_KEY_USAGE festgelegt ist. Ein Zertifikat verfügt über eine erweiterte Schlüsselverwendungseigenschaft, wenn sein CERT_ENHKEY_USAGE_PROP_ID-Bezeichner festgelegt ist.

Wenn pvFindParaNULL ist oder das cUsageIdentifier-Element von CERT_ENHKEY_USAGE null ist, erfüllt jedes Zertifikat, das entweder über die erweiterte Schlüsselverwendungserweiterung oder die Eigenschaft der erweiterten Schlüsselverwendung verfügt, die Auswahlkriterien.

Wenn pvFindParaNULL ist oder das cUsageIdentifier-Element der CERT_ENHKEY_USAGE-Struktur 0 ist, ist jedes Zertifikat mit erweiterter Schlüsselverwendung eine Übereinstimmung.

Wenn CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG in dwFindFlags festgelegt ist, werden Auch Zertifikate ohne schlüsselverwendungserweiterung oder -eigenschaft übereinstimmen. Das Festlegen dieses Flags hat Vorrang vor dem Übergeben von NULL in pvFindPara.

Wenn CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG festgelegt ist, erfolgt eine Übereinstimmung nur für die Schlüsselverwendungserweiterung.

Informationen zu Flagänderungen an Suchkriterien finden Sie unter Hinweise.

CERT_FIND_EXISTING
CERT_CONTEXT Struktur
Sucht nach einem Zertifikat, das genau mit dem angegebenen Zertifikatkontext übereinstimmt.
CERT_FIND_HASH
CRYPT_HASH_BLOB Struktur
Sucht nach einem Zertifikat mit einem SHA1-Hash, der dem Hash in der CRYPT_HASH_BLOB-Struktur entspricht.
CERT_FIND_ISSUER_ATTR
CERT_RDN Struktur
Suchen Sie nach einem Zertifikat mit angegebenen Ausstellerattributen, die mit Attributen in der CERT_RDN-Struktur übereinstimmen. Wenn diese Werte festgelegt sind, vergleicht die Funktion Attribute des Ausstellers in einem Zertifikat mit Elementen des CERT_RDN_ATTR Arrays in dieser CERT_RDN-Struktur . Vergleiche durchlaufen die CERT_RDN_ATTR Attribute, die nach einer Übereinstimmung mit den Ausstellerattributen des Zertifikats suchen.

Wenn das pszObjId-Element von CERT_RDN_ATTRNULL ist, wird der Attributobjektbezeichner ignoriert.

Wenn das dwValueType-Element von CERT_RDN_ATTR CERT_RDN_ANY_TYPE ist, wird der Werttyp ignoriert.

Wenn das pbData-Element von CERT_RDN_VALUE_BLOBNULL ist, ist jeder Wert eine Übereinstimmung.

Derzeit wird nur eine genaue Übereinstimmung zwischen Groß-/Kleinschreibung unterstützt. Informationen zu Unicode-Optionen finden Sie unter Hinweise. Wenn diese Werte festgelegt werden, ist die Suche auf Zertifikate beschränkt, deren Codierungstyp dwMsgAndCertEncodingType entspricht.

CERT_FIND_ISSUER_NAME
CERT_NAME_BLOB Struktur
Suchen Sie nach einem Zertifikat mit einer exakten Übereinstimmung des gesamten Ausstellernamens mit dem Namen in CERT_NAME_BLOB. Die Suche ist auf Zertifikate beschränkt, die mit dwMsgAndCertEncodingType übereinstimmen.
CERT_FIND_ISSUER_OF
CERT_CONTEXT Struktur
Sucht nach einem Zertifikat mit einem Aussteller, der dem Aussteller in CERT_CONTEXT entspricht.

Verwenden Sie nicht die CertFindCertificateInStore-Funktion mit diesem Wert, sondern die CertGetCertificateChain-Funktion .

CERT_FIND_ISSUER_STR
Null-beendete breite Zeichenfolge (Unicode)
Suchen Sie nach einem Zertifikat, das die angegebene Ausstellernamenzeichenfolge enthält. Das Ausstellermitglied des Zertifikats wird in eine Namenszeichenfolge des entsprechenden Typs konvertiert, wobei die entsprechende Form von CertNameToStr als CERT_SIMPLE_NAME_STR formatiert wird. Anschließend wird eine Unterzeichenfolgenübereinstimmung zwischen Groß- und Kleinschreibung durchgeführt. Wenn dieser Wert festgelegt wird, ist die Suche auf Zertifikate beschränkt, deren Codierungstyp dwMsgAndCertEncodingType entspricht.
CERT_FIND_KEY_IDENTIFIER
CRYPT_HASH_BLOB Struktur
Sucht nach einem Zertifikat mit einer CERT_KEY_IDENTIFIER_PROP_ID-Eigenschaft, die dem Schlüsselbezeichner in CRYPT_HASH_BLOB entspricht.
CERT_FIND_KEY_SPEC
DWORD mit einer Schlüsselspezifikation
Sucht nach einem Zertifikat mit einer CERT_KEY_SPEC_PROP_ID-Eigenschaft, die der Schlüsselspezifikation in pvFindPara entspricht.
CERT_FIND_MD5_HASH
CRYPT_HASH_BLOB Struktur
Sucht nach einem Zertifikat mit einem MD5-Hash, der dem Hash in CRYPT_HASH_BLOB entspricht.
CERT_FIND_PROPERTY
DWORD, das einen Eigenschaftsbezeichner enthält
Sucht nach einem Zertifikat mit einer Eigenschaft, die dem eigenschaftenbezeichner entspricht, der vom DWORD in pvFindPara angegeben wird.
CERT_FIND_PUBLIC_KEY
CERT_PUBLIC_KEY_INFO Struktur
Sucht nach einem Zertifikat mit einem öffentlichen Schlüssel, der dem öffentlichen Schlüssel in der CERT_PUBLIC_KEY_INFO-Struktur entspricht.
CERT_FIND_SHA1_HASH
CRYPT_HASH_BLOB Struktur
Sucht nach einem Zertifikat mit einem SHA1-Hash, der dem Hash in der CRYPT_HASH_BLOB-Struktur entspricht.
CERT_FIND_SIGNATURE_HASH
CRYPT_HASH_BLOB Struktur
Sucht nach einem Zertifikat mit einem Signaturhash, der dem Signaturhash in der CRYPT_HASH_BLOB-Struktur entspricht.
CERT_FIND_SUBJECT_ATTR
CERT_RDN Struktur
Sucht nach einem Zertifikat mit angegebenen Antragstellerattributen, die mit Attributen in der CERT_RDN-Struktur übereinstimmen. Wenn RDN-Werte festgelegt sind, vergleicht die Funktion Attribute des Antragstellers in einem Zertifikat mit Elementen des CERT_RDN_ATTR Arrays in dieser CERT_RDN Struktur. Vergleiche durchlaufen die CERT_RDN_ATTR Attribute, die nach einer Übereinstimmung mit den Attributen des Zertifikatsubjekts suchen.

Wenn das pszObjId-Element von CERT_RDN_ATTRNULL ist, wird der Attributobjektbezeichner ignoriert.

Wenn das dwValueType-Element von CERT_RDN_ATTR CERT_RDN_ANY_TYPE ist, wird der Werttyp ignoriert.

Wenn das pbData-Element von CERT_RDN_VALUE_BLOBNULL ist, ist jeder Wert eine Übereinstimmung.

Derzeit wird nur eine genaue Übereinstimmung zwischen Groß-/Kleinschreibung unterstützt.

Informationen zu Unicode-Optionen finden Sie unter Hinweise. Wenn diese Werte festgelegt werden, ist die Suche auf Zertifikate beschränkt, deren Codierungstyp dwMsgAndCertEncodingType entspricht.

CERT_FIND_SUBJECT_CERT
CERT_INFO Struktur
Sucht nach einem Zertifikat mit einem Aussteller und einer Seriennummer, die dem Aussteller und der Seriennummer in der CERT_INFO Struktur entsprechen.
CERT_FIND_SUBJECT_NAME
CERT_NAME_BLOB Struktur
Sucht nach einem Zertifikat mit einer exakten Übereinstimmung des gesamten Antragstellernamens mit dem Namen in der CERT_NAME_BLOB-Struktur . Die Suche ist auf Zertifikate beschränkt, die dem Wert von dwMsgAndCertEncodingType entsprechen.
CERT_FIND_SUBJECT_STR
Null-beendete breite Zeichenfolge (Unicode)
Sucht nach einem Zertifikat, das die angegebene Antragstellernamenzeichenfolge enthält. Das Antragstellermember des Zertifikats wird in eine Namenszeichenfolge des entsprechenden Typs konvertiert, wobei die entsprechende Form von CertNameToStr als CERT_SIMPLE_NAME_STR formatiert wird. Anschließend wird eine Unterzeichenfolgenübereinstimmung zwischen Groß- und Kleinschreibung durchgeführt. Wenn dieser Wert festgelegt wird, ist die Suche auf Zertifikate beschränkt, deren Codierungstyp dwMsgAndCertEncodingType entspricht.
 
Hinweis Es gibt alternative Formen des Werts von dwFindType , die eine Zeichenfolge in pvFindPara übergeben. Ein Formular verwendet eine Unicode-Zeichenfolge, das andere eine ASCII-Zeichenfolge . Werte, die auf "_W" oder ohne Suffix enden, verwenden Unicode. Werte, die mit "_A" enden, verwenden ASCII-Zeichenfolgen .
 

pvFindPara

Zeigt auf ein Datenelement oder eine Struktur, die mit dem suchtyp verwendet werden soll, der durch den Wert von dwFindType angegeben wird.

Hinweise

Der dwFindFlags-Member wird verwendet, um die Kriterien einiger Suchtypen zu ändern.

Der dwFindFlags-Wert von CERT_UNICODE_IS_RDN_ATTRS_FLAG wird nur mit den werten CERT_FIND_SUBJECT_ATTR und CERT_FIND_ISSUER_ATTR für dwFindType verwendet. CERT_UNICODE_IS_RDN_ATTRS_FLAG muss festgelegt werden, wenn die CERT_RDN_ATTR Struktur, auf die von pvFindPara verwiesen wird, mit Unicode-Zeichenfolgen initialisiert wurde. Bevor ein Vergleich durchgeführt wird, wird die abzugleichende Zeichenfolge mithilfe von X509_UNICODE_NAME konvertiert, um Unicode-Vergleiche bereitzustellen.

Die folgenden dwFindFlags-Werte werden nur mit dem CERT_FIND_ENKEY_USAGE Wert für dwFindType verwendet.

Wert Bedeutung
CERT_FIND_OR_ENHKEY_USAGE_FLAG Die Suchkriterien können durch Festlegen eines oder mehrerer Flags geändert werden. Wenn das pszUsageIdentifier-Element der CERT_ENHKEY_USAGE Struktur, auf die von pvFindPara verwiesen wird, übereinstimmen soll, muss standardmäßig jeder Bezeichner abgeglichen werden, um die Suchkriterien zu erfüllen. Wenn jedoch CERT_FIND_OR_ENHKEY_USAGE_FLAG festgelegt ist, kann eine Übereinstimmung mit allen Bezeichnern hergestellt werden, die mithilfe eines bitweisen OR-Vorgangs kombiniert werden. Daher ist es ausreichend, einen der Bezeichner zu übereinstimmen.
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG Wenn dieses Flag festgelegt ist, erfüllt zusätzlich zu den üblichen Übereinstimmungen jedes Zertifikat, das weder die erweiterte Schlüsselverwendungserweiterung noch die Erweiterte Schlüsselverwendungseigenschaft hat, die Suchkriterien.
CERT_FIND_NO_ENHKEY_USAGE_FLAG Wenn dieses Flag festgelegt ist, werden nur die Zertifikate übereinstimmen, die weder über eine erweiterte Schlüsselverwendung noch über die Eigenschaft der erweiterten Schlüsselverwendung verfügen. Diese Flageinstellung hat Vorrang vor pvFindPara als NULL.
CERT_FIND_VALID_ENHKEY_USAGE_FLAG Wenn dieses Flag festgelegt ist, entspricht die Funktion nur den Zertifikaten, die für die angegebene Verwendung gültig sind. Standardmäßig muss ein Zertifikat für alle Verwendungen gültig sein, damit es übereinstimmen kann.

CERT_FIND_OR_ENHKEY_USAGE_FLAG kann auch festgelegt werden, wenn das Zertifikat nur für eine der angegebenen Verwendungen gültig sein muss. Beachten Sie, dass CertGetValidUsages aufgerufen wird, um die Liste der gültigen Verwendungen für das Zertifikat abzurufen. Nur CERT_FIND_OR_ENHKEY_USAGE_FLAG kann auch angewendet werden, wenn CERT_FIND_VALID_ENHKEY_USAGE_FLAG festgelegt ist.

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG Wenn dieses Flag festgelegt ist, umfasst der Abgleichsprozess nur die Erweiterungsverwendungsbezeichner. Wenn pvFindParaNULL ist oder das cUsageIdentifier-Element der CERT_ENHKEY_USAGE Struktur, auf die von pvFindPara verwiesen wird, null ist, ist jedes Zertifikat mit einer erweiterten Schlüsselverwendungserweiterung eine Übereinstimmung. Wenn auch CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG festgelegt ist, ist jedes Zertifikat ohne erweiterte Schlüsselverwendungserweiterung ebenfalls eine Übereinstimmung. Wenn auch CERT_FIND_NO_ENHKEY_USAGE_FLAG festgelegt ist, werden nur Zertifikate ohne erweiterte Schlüsselverwendungserweiterung übereinstimmen.
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG Wenn dieses Flag festgelegt ist, umfasst der Abgleichsprozess nur Nutzungsbezeichner, die Eigenschaften sind. Wenn pvFindParaNULL oder cUsageIdentifier auf Null festgelegt ist, ist jedes Zertifikat mit einer erweiterten Schlüsselverwendungseigenschaft eine Übereinstimmung. Wenn CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG ebenfalls festgelegt ist, ist auch jedes Zertifikat ohne die Erweiterte Schlüsselverwendungseigenschaft eine Übereinstimmung. Wenn CERT_FIND_NO_ENHKEY_USAGE_FLAG festgelegt ist, werden nur Zertifikate ohne die Erweiterte Schlüsselverwendungseigenschaft übereinstimmen.
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG Wird nur mit CERT_FIND_SUBJECT_ATTR- und CERT_FIND_ISSUER-ATTR-Werten von dwFindType verwendet. Standardmäßig wird eine genaue Übereinstimmung zwischen Groß- und Kleinschreibung vorgenommen. Wenn dieses Flag festgelegt ist, wird bei der Übereinstimmung die Groß-/Kleinschreibung nicht beachtet.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Kopfzeile wincrypt.h