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