Función CertCreateCertificateContext (wincrypt.h)

La función CertCreateCertificateContext crea un contexto de certificado a partir de un certificado codificado. El contexto creado no se conserva en un almacén de certificados. La función realiza una copia del certificado codificado en el contexto creado.

Sintaxis

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

Parámetros

[in] dwCertEncodingType

Especifica el tipo de codificación usada. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes al combinarlos con una operación OR bit a bit, como se muestra en el ejemplo siguiente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING tipos de codificación definidos actualmente son:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

Puntero a un búfer que contiene el certificado codificado desde el que se va a crear el contexto.

[in] cbCertEncoded

Tamaño, en bytes, del búfer pbCertEncoded .

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un puntero a un CERT_CONTEXT de solo lectura. Cuando haya terminado de usar el contexto del certificado, ábrelo llamando a la función CertFreeCertificateContext .

Si la función no puede descodificar y crear el contexto del certificado, devuelve NULL. Para obtener información de error extendida, llame a GetLastError. Siguen algunos códigos de error posibles.

Código devuelto Descripción
E_INVALIDARG
Se especificó un tipo de codificación de certificado que no es válido. Actualmente, solo se admite el tipo X509_ASN_ENCODING.
 

Si se produce un error en la función, GetLastError puede devolver un error de codificación y descodificación de sintaxis abstracta Uno (ASN.1). Para obtener información sobre estos errores, vea Valores devueltos de codificación/descodificación de ASN.1.

Comentarios

El CERT_CONTEXT debe liberarse llamando a CertFreeCertificateContext. Se puede llamar a CertDuplicateCertificateContext para hacer un duplicado. Se puede llamar a CertSetCertificateContextProperty y CertGetCertificateContextProperty para almacenar y leer las propiedades del certificado.

Ejemplos

En el ejemplo siguiente se muestra cómo crear un contexto de certificado a partir de un certificado codificado. El contexto creado no se coloca en un almacén de certificados. Para obtener otro ejemplo que use esta función, vea Programa C de ejemplo: Operaciones del almacén de certificados.

#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);
	}
}

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CERT_CONTEXT

CertCreateCRLContext

CertCreateCTLContext

CertDuplicateCertificateContext

CertFreeCertificateContext

CertGetCertificateContextProperty

CertSetCertificateContextProperty

Funciones de certificado