Fonction CertFindChainInStore (wincrypt.h)
La fonction CertFindChainInStore recherche le premier ou le certificat suivant dans un magasin qui répond aux critères spécifiés. Il génère et vérifie ensuite un contexte de chaîne de certificats pour ce certificat. Le certificat trouvé et pour lequel la chaîne est générée est sélectionné en fonction des critères établis par les paramètresdwFindFlags
Syntaxe
PCCERT_CHAIN_CONTEXT CertFindChainInStore(
[in] HCERTSTORE hCertStore,
[in] DWORD dwCertEncodingType,
[in] DWORD dwFindFlags,
[in] DWORD dwFindType,
[in] const void *pvFindPara,
[in] PCCERT_CHAIN_CONTEXT pPrevChainContext
);
Paramètres
[in] hCertStore
Handle du magasin à rechercher pour obtenir un certificat sur lequel une chaîne est créée. Ce handle est passé en tant que magasin supplémentaire à la fonction CertGetCertificateChain à mesure que la chaîne est générée.
[in] dwCertEncodingType
Le type d’encodage de certificat
Ce paramètre peut être le type d’encodage de certificat actuellement défini ci-dessous.
Valeur | Signification |
---|---|
|
Spécifie l’encodage de certificat X.509. |
[in] dwFindFlags
Contient des options supplémentaires pour la recherche. Les valeurs possibles pour ce paramètre dépendent de la valeur du paramètre dwFindType.
Ce paramètre peut contenir zéro ou une combinaison d’une ou plusieurs des valeurs suivantes lorsque dwFindType contient CERT_CHAIN_FIND_BY_ISSUER.
Valeur | Signification |
---|---|
|
Compare la clé publique dans le certificat avec le fournisseur de services de chiffrementclé publique. Cette comparaison est la dernière vérification effectuée sur la chaîne lorsqu’elle est générée.
Étant donné que le hCryptProv membre d’un émetteur contient une clé privée, il peut être nécessaire de vérifier plusieurs fois pendant ce processus ; pour faciliter cette vérification, la dwAcquirePrivateKeyFlags membre peut être définie dans la structure CERT_CHAIN_FIND_BY_ISSUER_PARA pour activer la mise en cache de cette hCryptProv. |
|
Par défaut, seule la première chaîne simple est vérifiée pour les correspondances de nom de l’émetteur. Avec cet indicateur défini, la valeur par défaut est remplacée et les chaînes simples suivantes sont également vérifiées pour les correspondances de nom de l’émetteur. |
|
Améliore les performances de cette fonction en l’empêchant de rechercher uniquement les magasins système mis en cache (Racine, My, Ca, Approbation) pour rechercher des certificats d’émetteur. Si cet indicateur n’est pas défini, la fonction recherche les magasins système mis en cache et le magasin représenté par le paramètre hCertStore. |
|
Seul le cache d’URL est recherché. Internet n’est pas recherché. |
|
Ouvre uniquement les magasins de certificats ordinateur local. Les magasins de certificats de l’utilisateur actuel ne sont pas ouverts. |
|
Aucune vérification n’est effectuée pour déterminer si le certificat a une clé privée associée. |
[in] dwFindType
Détermine les critères à utiliser pour rechercher un certificat dans le magasin.
Ce paramètre peut être la valeur actuellement définie ci-dessous.
CERT_CHAIN_FIND_BY_ISSUER
Recherche le certificat en fonction du nom de l’émetteur. Le paramètre pvFindPara est un pointeur vers une structure CERT_CHAIN_FIND_BY_ISSUER_PARA qui contient des membres qui modifient la recherche.
La chaîne de certificats est générée pour un certificat avec une clé privée disponible. Par défaut, seuls les émetteurs de la première chaîne simple sont comparés dans une correspondance de nom d’émetteur. Si cet indicateur est défini, toutes les chaînes sont vérifiées pour un certificat émetteur qui correspond à l’un d’un ensemble de noms d’émetteurs.
Cette fonction compare le nom objets blob transmis dans la structure pvFindPara à n’importe quelle autorité de certification (CA) dans la chaîne, pas seulement l’autorité de certification dans le certificat racine.
Cette fonction n’effectue aucune vérification de révocation.
Si pPrevChainContext n’est pas NULL, cette fonction retourne une chaîne pour un certificat différent chaque fois que la fonction est appelée. S’il n’existe qu’un seul certificat approprié, mais il existe deux autorités de certification émettrices correspondantes, dont l’une est révoquée, il est possible que cette fonction retourne la chaîne révoquée. Si l’application vérifie ensuite la révocation elle-même par le biais d’appels à la fonction CertVerifyRevoc ation et recherche la chaîne inadaptée, un appel supplémentaire à la fonction CertFindChainInStore ne retourne pas une chaîne qui inclut le même certificat de l’autorité de certification valide. Elle retourne plutôt une chaîne complètement différente avec un certificat différent ou NULL, si aucune chaîne de ce type n’est trouvée.
[in] pvFindPara
Pointeur qui contient des critères de recherche supplémentaires. Le type et le format des données que ce paramètre pointe dépend de la valeur du paramètre dwFindType.
[in] pPrevChainContext
Pointeur vers une structure CERT_CHAIN_CONTEXT retournée par un appel précédent à cette fonction. La recherche est commencée à partir de ce certificat. Pour le premier appel à cette fonction, ce paramètre doit être NULL. Dans les appels suivants, il s’agit du pointeur retourné par l’appel précédent à la fonction. Si ce paramètre n’est pas NULL, cette fonction libère cette structure.
Valeur de retour
Si le premier ou le contexte de chaîne suivant n’est pas généré, NULL est retourné. Sinon, un pointeur vers une structure de CERT_CHAIN_CONTEXT en lecture seule est retourné. La structure CERT_CHAIN_CONTEXT est libérée lorsqu’elle est passée en tant que paramètre pPrevChainContext lors d’un appel ultérieur à cette fonction. Sinon, la structure CERT_CHAIN_CONTEXT doit être libérée explicitement en appelant la fonction CertFreeCertificateChain.
Remarques
Le paramètre pPrevChainContext doit être NULL sur le premier appel pour générer le contexte de chaîne. Pour générer le contexte de chaîne suivant, le
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | wincrypt.h |
bibliothèque | Crypt32.lib |
DLL | Crypt32.dll |