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.

Valeur Signification
CERT_STORE_NO_CRL_FLAG
Indique qu’aucune liste de révocation de certificats correspondante n’a été trouvée.
CERT_STORE_NO_ISSUER_FLAG
Indique qu’aucun certificat d’émetteur n’a été trouvé.
CERT_STORE_REVOCATION_FLAG
Vérifie si le certificat objet figure dans la liste de révocation de l’émetteur.
CERT_STORE_SIGNATURE_FLAG
Utilise la clé publique dans le certificat de l’émetteur pour vérifier la signature sur le certificat objet.
CERT_STORE_TIME_VALIDITY_FLAG
Obtient l’heure actuelle et vérifie qu’elle se trouve dans la période de validité du certificat d’objet.
 

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
CRYPT_E_NOT_FOUND
Aucun émetteur n’a été trouvé pour le certificat d’objet.
CRYPT_E_SELF_SIGNED
Le certificat émetteur est le même que le certificat d’objet. Il s’agit d’un certificat racine auto-signé.
E_INVALIDARG
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

Voir aussi

Fonctions de certificat