Função CertCreateCertificateContext (wincrypt.h)
A função CertCreateCertificateContext cria um contexto de certificado de um certificado codificado. O contexto criado não é persistido em um repositório de certificados. A função faz uma cópia do certificado codificado dentro do contexto criado.
Sintaxe
PCCERT_CONTEXT CertCreateCertificateContext(
[in] DWORD dwCertEncodingType,
[in] const BYTE *pbCertEncoded,
[in] DWORD cbCertEncoded
);
Parâmetros
[in] dwCertEncodingType
Especifica o tipo de codificação usado. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING Tipos de codificação definidos atualmente são:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pbCertEncoded
Um ponteiro para um buffer que contém o certificado codificado do qual o contexto deve ser criado.
[in] cbCertEncoded
O tamanho, em bytes, do buffer pbCertEncoded .
Valor retornado
Se a função for bem-sucedida, a função retornará um ponteiro para um CERT_CONTEXT somente leitura. Quando terminar de usar o contexto de certificado, libere-o chamando a função CertFreeCertificateContext .
Se a função não puder decodificar e criar o contexto do certificado, ela retornará NULL. Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis seguem.
Código de retorno | Descrição |
---|---|
|
Um tipo de codificação de certificado que não é válido foi especificado. Atualmente, há suporte apenas para o tipo X509_ASN_ENCODING. |
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação ASN.1 ( Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Valores retornados de codificação/decodificação asn.1.
Comentários
O CERT_CONTEXT deve ser liberado chamando CertFreeCertificateContext. CertDuplicateCertificateContext pode ser chamado para tornar uma duplicata. CertSetCertificateContextProperty e CertGetCertificateContextProperty podem ser chamados para armazenar e ler propriedades para o certificado.
Exemplos
O exemplo a seguir mostra a criação de um contexto de certificado com base em um certificado codificado. O contexto criado não é colocado em um repositório de certificados. Para obter outro exemplo que usa essa função, consulte Exemplo de programa C: operações de repositório 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 com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Crypt32.lib |
DLL | Crypt32.dll |
Confira também
Certduplicatecertificatecontext
CertGetCertificateContextProperty