Fonction CertCreateCertificateContext (wincrypt.h)

La fonction CertCreateCertificateContext crée un contexte de certificat à partir d’un certificat encodé. Le contexte créé n’est pas conservé dans un magasin de certificats. La fonction effectue une copie du certificat encodé dans le contexte créé.

Syntaxe

PCCERT_CONTEXT CertCreateCertificateContext(
  [in] DWORD      dwCertEncodingType,
  [in] const BYTE *pbCertEncoded,
  [in] DWORD      cbCertEncoded
);

Paramètres

[in] dwCertEncodingType

Spécifie le type d’encodage utilisé. Il est toujours acceptable de spécifier les types d’encodage de certificat et de message en les combinant avec une opération OR au niveau du bit, comme illustré dans l’exemple suivant :

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING types d’encodage actuellement définis sont les suivants :

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

Pointeur vers une mémoire tampon qui contient le certificat encodé à partir duquel le contexte doit être créé.

[in] cbCertEncoded

Taille, en octets, de la mémoire tampon pbCertEncoded .

Valeur retournée

Si la fonction réussit, la fonction retourne un pointeur vers un CERT_CONTEXT en lecture seule. Lorsque vous avez terminé d’utiliser le contexte de certificat, libérez-le en appelant la fonction CertFreeCertificateContext .

Si la fonction ne parvient pas à décoder et à créer le contexte de certificat, elle retourne NULL. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Certains codes d’erreur possibles suivent.

Code de retour Description
E_INVALIDARG
Un type d’encodage de certificat non valide a été spécifié. Actuellement, seul le type X509_ASN_ENCODING est pris en charge.
 

Si la fonction échoue, GetLastError peut renvoyer une erreur d’encodage/décodage ASN.1 ( Abstract Syntax Notation One ). Pour plus d’informations sur ces erreurs, consultez Valeurs de retour d’encodage/décodage ASN.1.

Remarques

Le CERT_CONTEXT doit être libéré en appelant CertFreeCertificateContext. CertDuplicateCertificateContext peut être appelé pour créer un doublon. CertSetCertificateContextProperty et CertGetCertificateContextProperty peuvent être appelés pour stocker et lire les propriétés du certificat.

Exemples

L’exemple suivant montre la création d’un contexte de certificat à partir d’un certificat encodé. Le contexte créé n’est pas placé dans un magasin de certificats. Pour obtenir un autre exemple qui utilise cette fonction, consultez Exemple de programme C : Opérations de magasin de certificats.

#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>

#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)

void main()
{
	PCCERT_CONTEXT  pCertContext = NULL; 

	//------------------------------------------------------------------ 
	//  Create a new certificate from the encoded part of
	//  an available certificate. pDesiredCert is a previously
	//  assigned PCCERT_CONTEXT variable.
	if(pCertContext = CertCreateCertificateContext(
		MY_ENCODING_TYPE,              // The encoding type
		pDesiredCert->pbCertEncoded,   // The encoded data from
									   // the certificate retrieved
		pDesiredCert->cbCertEncoded))  // The length of the encoded data
	{
		printf("A new certificate has been created.\n");
	 
		// Use the certificate context as needed.
		// ...

		// When finished, free the certificate context.
		CertFreeCertificateContext(pCertContext);
	}
	else
	{
		printf("A new certificate could not be created.\n");
		exit(1);
	}
}

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

CERT_CONTEXT

CertCreateCRLContext

CertCreateCTLContext

CertDuplicateCertificateContext

CertFreeCertificateContext

CertGetCertificateContextProperty

CertSetCertificateContextProperty

Fonctions de certificat