Função CertAddEncodedCertificateToStore (wincrypt.h)

A função CertAddEncodedCertificateToStore cria um contexto de certificado de um certificado codificado e o adiciona ao repositório de certificados. O contexto criado não inclui nenhuma propriedade estendida.

A função CertAddEncodedCertificateToStore também faz uma cópia do certificado codificado antes de adicionar o certificado ao repositório.

Sintaxe

BOOL CertAddEncodedCertificateToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            DWORD          dwCertEncodingType,
  [in]            const BYTE     *pbCertEncoded,
  [in]            DWORD          cbCertEncoded,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppCertContext
);

Parâmetros

[in] hCertStore

Um identificador para o repositório de certificados.

[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 que deve ser adicionado ao repositório de certificados.

[in] cbCertEncoded

O tamanho, em bytes, do buffer pbCertEncoded .

[in] dwAddDisposition

Especifica a ação a ser tomada se houver um certificado correspondente ou um link para um certificado correspondente no repositório. Os valores de disposição definidos no momento e seus usos são os seguintes.

Valor Significado
CERT_STORE_ADD_ALWAYS
A função não faz marcar para um certificado correspondente existente ou um link para um certificado correspondente. Um novo certificado sempre é adicionado ao repositório. Isso pode levar a duplicatas em um repositório.
CERT_STORE_ADD_NEW
Se houver um certificado correspondente ou um link para um certificado correspondente no repositório, a operação falhará. GetLastError retorna o código CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Se existir um certificado ou link correspondente para um certificado correspondente no repositório, o certificado ou link existente será excluído e um novo certificado será criado e adicionado ao repositório. Se um certificado ou link correspondente a um certificado correspondente não existir, um novo certificado será criado e adicionado ao repositório.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Se existir um certificado correspondente no repositório, esse contexto existente será excluído antes de criar e adicionar o novo contexto. O novo contexto herda propriedades do certificado existente.
CERT_STORE_ADD_USE_EXISTING
Se existir um certificado correspondente ou um link para um certificado correspondente, esse certificado ou link existente será usado e as propriedades do novo certificado serão adicionadas. A função não falha, mas não adiciona um novo contexto. Se ppCertContext não for NULL, o contexto existente será duplicado.

Se um certificado ou link correspondente a um certificado correspondente não existir, um novo certificado será adicionado.

[out, optional] ppCertContext

Um ponteiro para um ponteiro para o contexto de certificado decodificado. Esse é um parâmetro opcional que pode ser NULL, indicando que o aplicativo de chamada não requer uma cópia do certificado novo ou existente. Quando uma cópia é feita, seu contexto deve ser liberado usando CertFreeCertificateContext.

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis seguem.

Código de retorno Descrição
CRYPT_E_EXISTS
Esse código será retornado se CERT_STORE_ADD_NEW estiver definido e o certificado já existir no repositório ou se CERT_STORE_ADD_NEWER estiver definido e houver um certificado no repositório com uma data NotBefore maior ou igual à data NotBefore no certificado a ser adicionado.
E_INVALIDARG
Um valor de disposição que não é válido foi especificado no parâmetro dwAddDisposition ou 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 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.

Requisitos

Requisito Valor
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

CertAddCertificateContextToStore

CertFreeCertificateContext

Funções de certificado