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 |
---|---|
|
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
CertDuplicateCertificateContext
CertGetCertificateContextProperty