Fonction CertGetIssuerCertificateFromStore (wincrypt.h)
La fonction CertGetIssuerCertificateFromStore récupère le contexte de certificat à partir du magasin de certificats pour le premier ou le prochain émetteur du certificat d’objet spécifié. Les nouvelles fonctions de vérification de la chaîne de certificats sont recommandées au lieu de l’utilisation de cette fonction.
Syntaxe
PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pSubjectContext,
[in, optional] PCCERT_CONTEXT pPrevIssuerContext,
[in, out] DWORD *pdwFlags
);
Paramètres
[in] hCertStore
Handle d’un magasin de certificats.
[in] pSubjectContext
Pointeur vers une structure de CERT_CONTEXT qui contient les informations d’objet. Ce paramètre peut être obtenu à partir de n’importe quel magasin de certificats ou peut être créé par l’application appelante à l’aide de la fonction CertCreateCertificateContext .
[in, optional] pPrevIssuerContext
Pointeur vers une structure de CERT_CONTEXT qui contient les informations de l’émetteur. Un émetteur peut avoir plusieurs certificats, en particulier lorsqu’une période de validité est sur le point de changer. Ce paramètre doit avoir la valeur NULL sur l’appel pour obtenir le premier certificat d’émetteur. Pour obtenir le certificat suivant pour l’émetteur, définissez pPrevIssuerContext sur la structure CERT_CONTEXT retournée par l’appel précédent.
Cette fonction libère les CERT_CONTEXT référencés par des valeurs non NULL de ce paramètre.
[in, out] pdwFlags
Les indicateurs suivants activent les vérifications sur le certificat retourné. Ils peuvent être combinés à l’aide d’une opération OR au niveau du bit pour permettre plusieurs vérifications.
Si une case activée de vérification d’un type activé réussit, son indicateur est défini sur zéro. En cas d’échec, son indicateur reste défini au retour. Par CERT_STORE_REVOCATION_FLAG, la vérification réussit si la fonction ne trouve pas de liste de révocation de certificats liée au certificat d’objet.
Si CERT_STORE_REVOCATION_FLAG est défini et que l’émetteur n’a pas de CRL dans le magasin, CERT_STORE_NO_CRL_FLAG est défini et CERT_STORE_REVOCATION_FLAG reste défini.
Si CERT_STORE_SIGNATURE_FLAG ou CERT_STORE_REVOCATION_FLAG est défini, CERT_STORE_NO_ISSUER_FLAG est défini si la fonction ne trouve pas de certificat d’émetteur dans le magasin. Pour plus d’informations, consultez Remarques.
En cas d’échec de vérification case activée, un pointeur vers le CERT_CONTEXT de l’émetteur est toujours retourné et GetLastError n’est pas mis à jour.
Valeur retournée
Si la fonction réussit, la valeur de retour est un pointeur vers un émetteur en lecture seule CERT_CONTEXT.
Si la fonction échoue et que le premier ou le certificat émetteur suivant est introuvable, la valeur de retour est NULL.
Seule la dernière structure CERT_CONTEXT retournée doit être libérée en appelant CertFreeCertificateContext. Lorsque le CERT_CONTEXT retourné d’un appel à la fonction est fourni en tant que paramètre pPrevIssuerContext sur un appel suivant, le contexte est libéré dans le cadre de l’action de la fonction.
Pour obtenir des informations d’erreur étendues, appelez GetLastError. Certains codes d’erreur possibles suivent.
Code de retour | Description |
---|---|
|
Aucun émetteur n’a été trouvé pour le certificat d’objet. |
|
Le certificat émetteur est le même que le certificat d’objet. Il s’agit d’un certificat racine auto-signé. |
|
Le handle dans le paramètre hCertStore n’est pas identique à celui du contexte de certificat pointé par le paramètre pPrevIssuerContext , ou un indicateur non pris en charge a été défini dans pdwFlags. |
Remarques
Le pointeur retourné est libéré lorsqu’il est passé en tant que paramètre pPrevIssuerContext lors d’un appel ultérieur à la fonction. Sinon, le pointeur doit être libéré explicitement en appelant CertFreeCertificateContext. Un pPrevIssuerContext qui n’est pas NULL est toujours libéré par CertGetIssuerCertificateFromStore à l’aide d’un appel à CertFreeCertificateContext, même en cas d’erreur dans la fonction.
CertDuplicateCertificateContext peut être appelé pour créer un doublon du certificat émetteur.
Les valeurs hexadécimales pour dwFlags peuvent être combinées à l’aide d’une opération OR au niveau du bit pour activer plusieurs vérifications. Par exemple, pour activer la signature et la validité de l’heure, la valeur 0x00000003 est passée dans dwFlags lors de l’entrée. Dans ce cas, si CERT_STORE_SIGNATURE_FLAG vérification réussit mais que CERT_STORE_TIME_VALIDITY_FLAG vérification échoue, dwFlags retourne comme 0x00000002 sur la sortie.
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | wincrypt.h |
Bibliothèque | Crypt32.lib |
DLL | Crypt32.dll |