Partager via


CERT_STORE_PROV_FIND_INFO structure (wincrypt.h)

La structure CERT_STORE_PROV_FIND_INFO est utilisée par de nombreuses fonctions de rappel du fournisseur de magasin. Il contient des critères de recherche pour rechercher un certificat, une liste de révocation de certificats (CRL) ou une liste d’approbation de certificats (CTL) dans un magasin de certificats.

Syntaxe

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;

Membres

cbSize

Taille de la structure.

dwMsgAndCertEncodingType

Spécifie le type d’encodage utilisé pour les messages et les certificats. Les types d’encodage de certificat et de message peuvent être combinés avec une opération or au niveau du bit. Voici les types d’encodage définis :

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

dwFindFlags

Utilisé avec certaines valeurs dwFindType pour modifier les critères de recherche. Pour la plupart des valeurs dwFindType , dwFindFlags n’est pas utilisé et doit être défini sur zéro.

dwFindType

Spécifie le type de recherche effectué. Le type de recherche détermine le type de données, le contenu et l’utilisation de pvFindPara. Les valeurs dwFindType actuellement définies et le type de données requis par chacun pour pvFindPara sont les suivants.

Valeur Signification
CERT_FIND_ANY
NULL ; pvFindPara non utilisé
Aucun critère de recherche utilisé. Retourne le certificat suivant dans le magasin.
CERT_FIND_CERT_ID
CERT_ID structure
Recherche le certificat identifié par le CERT_ID spécifié.
CERT_FIND_CTL_USAGE
CTL_USAGE structure
Recherche un certificat ayant une extension szOID_ENHANCED_KEY_USAGE ou un CERT_CTL_PROP_ID qui correspond au membre pszUsageIdentifier de la structure CTL_USAGE .
CERT_FIND_ENHKEY_USAGE
CERT_ENHKEY_USAGE structure
Recherche un certificat dans le magasin ayant une extension d’utilisation de clé améliorée ou une propriété d’utilisation de clé améliorée et un identificateur d’utilisation qui correspond au membre pszUsageIdentifier dans la structure CERT_ENHKEY_USAGE .

Un certificat a une extension d’utilisation de clé améliorée s’il a une structure CERT_EXTENSION avec le membre pszObjId défini sur szOID_ENHANCED_KEY_USAGE. Un certificat a une propriété d’utilisation de clé améliorée si son identificateur de CERT_ENHKEY_USAGE_PROP_ID est défini.

Si pvFindPara a la valeur NULL ou si le membre cUsageIdentifier de CERT_ENHKEY_USAGE est égal à zéro, tout certificat disposant de l’extension d’utilisation de la clé améliorée ou de la propriété d’utilisation de la clé améliorée répond aux critères de sélection.

Si pvFindPara a la valeur NULL ou si le membre cUsageIdentifier de la structure CERT_ENHKEY_USAGE est égal à zéro, tout certificat ayant une utilisation améliorée de la clé est une correspondance.

Si CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG est défini dans dwFindFlags, les certificats sans l’extension ou la propriété d’utilisation de la clé sont également des correspondances. La définition de cet indicateur est prioritaire sur le passage de NULL dans pvFindPara.

Si CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG est défini, une correspondance est effectuée uniquement sur l’extension d’utilisation de la clé.

Pour plus d’informations sur les modifications d’indicateur apportées aux critères de recherche, consultez Remarques.

CERT_FIND_EXISTING
CERT_CONTEXT structure
Recherche un certificat qui correspond exactement au contexte de certificat spécifié.
CERT_FIND_HASH
CRYPT_HASH_BLOB structure
Recherche un certificat avec un hachage SHA1 qui correspond au hachage dans la structure CRYPT_HASH_BLOB .
CERT_FIND_ISSUER_ATTR
CERT_RDN structure
Recherchez un certificat avec des attributs d’émetteur spécifiés qui correspondent aux attributs de la structure CERT_RDN . Si ces valeurs sont définies, la fonction compare les attributs de l’émetteur dans un certificat avec des éléments du tableau CERT_RDN_ATTR dans cette structure CERT_RDN . Les comparaisons itèrent au sein des attributs CERT_RDN_ATTR à la recherche d’une correspondance avec les attributs d’émetteur du certificat.

Si le membre pszObjId de CERT_RDN_ATTR a la valeur NULL, l’identificateur de l’objet d’attribut est ignoré.

Si le membre dwValueType de CERT_RDN_ATTR est CERT_RDN_ANY_TYPE, le type de valeur est ignoré.

Si le membre pbData de CERT_RDN_VALUE_BLOB a la valeur NULL, toute valeur est une correspondance.

Actuellement, seule une correspondance exacte et sensible à la casse est prise en charge. Pour plus d’informations sur les options Unicode, consultez Remarques. Lorsque ces valeurs sont définies, la recherche est limitée aux certificats dont le type d’encodage correspond à dwMsgAndCertEncodingType.

CERT_FIND_ISSUER_NAME
CERT_NAME_BLOB structure
Recherchez un certificat avec une correspondance exacte du nom de l’émetteur entier avec le nom dans CERT_NAME_BLOB. La recherche est limitée aux certificats qui correspondent à dwMsgAndCertEncodingType.
CERT_FIND_ISSUER_OF
CERT_CONTEXT structure
Recherche un certificat avec un émetteur qui correspond à l’émetteur dans CERT_CONTEXT.

Au lieu d’utiliser la fonction CertFindCertificateInStore avec cette valeur, utilisez la fonction CertGetCertificateChain .

CERT_FIND_ISSUER_STR
Chaîne large terminée par null (Unicode)
Recherchez un certificat qui contient la chaîne de nom d’émetteur spécifiée. Le membre émetteur du certificat est converti en chaîne de nom du type approprié à l’aide de la forme appropriée de CertNameToStr au format CERT_SIMPLE_NAME_STR. Ensuite, une correspondance de sous-chaîne ne respectant pas la casse est effectuée. Lorsque cette valeur est définie, la recherche est limitée aux certificats dont le type d’encodage correspond à dwMsgAndCertEncodingType.
CERT_FIND_KEY_IDENTIFIER
CRYPT_HASH_BLOB structure
Recherche un certificat avec une propriété CERT_KEY_IDENTIFIER_PROP_ID correspondant à l’identificateur de clé dans CRYPT_HASH_BLOB.
CERT_FIND_KEY_SPEC
DWORD contenant une spécification de clé
Recherche un certificat ayant une propriété CERT_KEY_SPEC_PROP_ID correspondant à la spécification de clé dans pvFindPara.
CERT_FIND_MD5_HASH
CRYPT_HASH_BLOB structure
Recherche un certificat avec un hachage MD5 qui correspond au hachage dans CRYPT_HASH_BLOB.
CERT_FIND_PROPERTY
DWORD qui contient un identificateur de propriété
Recherche un certificat avec une propriété qui correspond à l’identificateur de propriété spécifié par le DWORD dans pvFindPara.
CERT_FIND_PUBLIC_KEY
CERT_PUBLIC_KEY_INFO structure
Recherche un certificat avec une clé publique qui correspond à la clé publique dans la structure CERT_PUBLIC_KEY_INFO .
CERT_FIND_SHA1_HASH
CRYPT_HASH_BLOB structure
Recherche un certificat avec un hachage SHA1 qui correspond au hachage dans la structure CRYPT_HASH_BLOB .
CERT_FIND_SIGNATURE_HASH
CRYPT_HASH_BLOB structure
Recherche un certificat avec un hachage de signature qui correspond au hachage de signature dans la structure CRYPT_HASH_BLOB .
CERT_FIND_SUBJECT_ATTR
CERT_RDN structure
Recherche un certificat avec des attributs d’objet spécifiés qui correspondent aux attributs de la structure CERT_RDN . Si des valeurs RDN sont définies, la fonction compare les attributs de l’objet dans un certificat avec les éléments du tableau CERT_RDN_ATTR dans cette structure CERT_RDN . Les comparaisons itèrent au sein des attributs CERT_RDN_ATTR à la recherche d’une correspondance avec les attributs du sujet du certificat.

Si le membre pszObjId de CERT_RDN_ATTR a la valeur NULL, l’identificateur de l’objet d’attribut est ignoré.

Si le membre dwValueType de CERT_RDN_ATTR est CERT_RDN_ANY_TYPE, le type de valeur est ignoré.

Si le membre pbData de CERT_RDN_VALUE_BLOB a la valeur NULL, toute valeur est une correspondance.

Actuellement, seule une correspondance exacte et respectant la casse est prise en charge.

Pour plus d’informations sur les options Unicode, consultez Remarques. Lorsque ces valeurs sont définies, la recherche est limitée aux certificats dont le type d’encodage correspond à dwMsgAndCertEncodingType.

CERT_FIND_SUBJECT_CERT
structure CERT_INFO
Recherche un certificat avec à la fois un émetteur et un numéro de série qui correspondent à l’émetteur et au numéro de série dans la structure CERT_INFO .
CERT_FIND_SUBJECT_NAME
structure CERT_NAME_BLOB
Recherche un certificat avec une correspondance exacte du nom de l’objet entier avec le nom dans la structure CERT_NAME_BLOB . La recherche est limitée aux certificats qui correspondent à la valeur de dwMsgAndCertEncodingType.
CERT_FIND_SUBJECT_STR
Chaîne large terminée par null (Unicode)
Recherche un certificat qui contient la chaîne de nom d’objet spécifiée. Le membre objet du certificat est converti en chaîne de nom du type approprié à l’aide de la forme appropriée de CertNameToStr mise en forme comme CERT_SIMPLE_NAME_STR. Ensuite, une correspondance de sous-chaîne insensible à la casse est effectuée. Lorsque cette valeur est définie, la recherche est limitée aux certificats dont le type d’encodage correspond à dwMsgAndCertEncodingType.
 
Note Il existe d’autres formes de la valeur de dwFindType qui passent une chaîne dans pvFindPara. Un formulaire utilise une chaîne Unicode et l’autre une chaîne ASCII . Les valeurs qui se terminent par « _W » ou sans suffixe utilisent Unicode. Les valeurs qui se terminent par « _A » utilisent des chaînes ASCII .
 

pvFindPara

Pointe vers un élément de données ou une structure à utiliser avec le type de recherche indiqué par la valeur de dwFindType.

Remarques

Le membre dwFindFlags est utilisé pour modifier les critères de certains types de recherche.

La valeur dwFindFlags de CERT_UNICODE_IS_RDN_ATTRS_FLAG est utilisée uniquement avec les valeurs CERT_FIND_SUBJECT_ATTR et CERT_FIND_ISSUER_ATTR pour dwFindType. CERT_UNICODE_IS_RDN_ATTRS_FLAG doit être défini si la structure CERT_RDN_ATTR pointée par pvFindPara a été initialisée avec des chaînes Unicode. Avant toute comparaison, la chaîne à mettre en correspondance est convertie à l’aide de X509_UNICODE_NAME pour fournir des comparaisons Unicode.

Les valeurs dwFindFlags suivantes sont utilisées uniquement avec la valeur CERT_FIND_ENKEY_USAGE pour dwFindType.

Valeur Signification
CERT_FIND_OR_ENHKEY_USAGE_FLAG Les critères de recherche peuvent être modifiés en définissant un ou plusieurs indicateurs. Par défaut, si le membre pszUsageIdentifier de la structure CERT_ENHKEY_USAGE pointée par pvFindPara doit être mis en correspondance, chaque identificateur doit être mis en correspondance pour répondre aux critères de recherche. Toutefois, si CERT_FIND_OR_ENHKEY_USAGE_FLAG est défini, une correspondance peut être faite à tous les identificateurs combinés à l’aide d’une opération OR au niveau du bit ; par conséquent, la correspondance de l’un des identificateurs est suffisante.
CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG Lorsque cet indicateur est défini, en plus des correspondances habituelles, tout certificat qui n’a ni l’extension d’utilisation de clé améliorée ni la propriété d’utilisation améliorée de la clé répond aux critères de recherche.
CERT_FIND_NO_ENHKEY_USAGE_FLAG Lorsque cet indicateur est défini, seuls les certificats qui n’ont ni utilisation améliorée des clés ni la propriété d’utilisation de clé améliorée sont identiques. Ce paramètre d’indicateur est prioritaire sur pvFindPara étant NULL.
CERT_FIND_VALID_ENHKEY_USAGE_FLAG Lorsque cet indicateur est défini, la fonction correspond uniquement aux certificats valides pour l’utilisation spécifiée. Par défaut, pour être identique, un certificat doit être valide pour toutes les utilisations.

CERT_FIND_OR_ENHKEY_USAGE_FLAG peut également être défini si le certificat doit uniquement être valide pour l’une des utilisations spécifiées. Notez que CertGetValidUsages est appelé pour obtenir la liste des utilisations valides du certificat. Seules CERT_FIND_OR_ENHKEY_USAGE_FLAG peuvent également s’appliquer lorsque CERT_FIND_VALID_ENHKEY_USAGE_FLAG est défini.

CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG Lorsque cet indicateur est défini, le processus de correspondance implique uniquement les identificateurs d’utilisation de l’extension. Si pvFindPara a la valeur NULL ou si le membre cUsageIdentifier de la structure CERT_ENHKEY_USAGE pointée par pvFindPara est égal à zéro, tout certificat ayant une extension d’utilisation de clé améliorée est une correspondance. Si CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG est également défini, tout certificat sans l’extension d’utilisation de clé améliorée est également une correspondance. Si CERT_FIND_NO_ENHKEY_USAGE_FLAG est également défini, seuls les certificats sans l’extension d’utilisation de clé améliorée sont identiques.
CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG Lorsque cet indicateur est défini, le processus de correspondance implique uniquement les identificateurs d’utilisation qui sont des propriétés. Si pvFindPara a la valeur NULL ou si cUsageIdentifier a la valeur zéro, tout certificat ayant une propriété d’utilisation de clé améliorée est une correspondance. Si CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG est également défini, tout certificat sans la propriété d’utilisation de clé améliorée est également une correspondance. Si CERT_FIND_NO_ENHKEY_USAGE_FLAG est défini, seuls les certificats sans la propriété d’utilisation de clé améliorée sont des correspondances.
CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG Utilisé uniquement avec les valeurs CERT_FIND_SUBJECT_ATTR et CERT_FIND_ISSUER-ATTR de dwFindType. Par défaut, une correspondance exacte respectant la casse est effectuée. Si cet indicateur est défini, la correspondance ne respecte pas la casse.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête wincrypt.h