Función CertAddEncodedCertificateToStore (wincrypt.h)

La función CertAddEncodedCertificateToStore crea un contexto de certificado a partir de un certificado codificado y lo agrega al almacén de certificados. El contexto creado no incluye ninguna propiedad extendida.

La función CertAddEncodedCertificateToStore también realiza una copia del certificado codificado antes de agregar el certificado al almacén.

Sintaxis

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

Identificador del almacén de certificados.

[in] dwCertEncodingType

Especifica el tipo de codificación utilizada. Siempre es aceptable especificar los tipos de codificación de certificados y mensajes mediante su combinación 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 que se va a agregar al almacén de certificados.

[in] cbCertEncoded

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

[in] dwAddDisposition

Especifica la acción que se debe realizar si existe un certificado coincidente o un vínculo a un certificado coincidente en el almacén. Los valores de disposición definidos actualmente y sus usos son los siguientes.

Valor Significado
CERT_STORE_ADD_ALWAYS
La función no realiza ninguna comprobación de un certificado coincidente existente o un vínculo a un certificado coincidente. Siempre se agrega un nuevo certificado al almacén. Esto puede provocar duplicados en un almacén.
CERT_STORE_ADD_NEW
Si existe un certificado coincidente o un vínculo a un certificado coincidente en el almacén, se produce un error en la operación. GetLastError devuelve el código CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Si existe un certificado o vínculo coincidente con un certificado coincidente en el almacén, se elimina el certificado o vínculo existente y se crea un nuevo certificado y se agrega al almacén. Si no existe un certificado coincidente o un vínculo a un certificado coincidente, se crea un nuevo certificado y se agrega al almacén.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Si existe un certificado coincidente en el almacén, ese contexto existente se elimina antes de crear y agregar el nuevo contexto. El nuevo contexto hereda las propiedades del certificado existente.
CERT_STORE_ADD_USE_EXISTING
Si existe un certificado coincidente o un vínculo a un certificado coincidente, se usa ese certificado o vínculo existente y se agregan las propiedades del nuevo certificado. No se produce un error en la función, pero no agrega un nuevo contexto. Si ppCertContext no es NULL, se duplica el contexto existente.

Si no existe un certificado coincidente o un vínculo a un certificado coincidente, se agrega un nuevo certificado.

[out, optional] ppCertContext

Puntero a un puntero al contexto de certificado descodificado. Se trata de un parámetro opcional que puede ser NULL, lo que indica que la aplicación que realiza la llamada no requiere una copia del certificado nuevo o existente. Cuando se realiza una copia, su contexto debe liberarse mediante CertFreeCertificateContext.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE. Para obtener información de error extendida, llame a GetLastError. A continuación se indican algunos códigos de error posibles.

Código devuelto Descripción
CRYPT_E_EXISTS
Este código se devuelve si se establece CERT_STORE_ADD_NEW y el certificado ya existe en el almacén, o si se establece CERT_STORE_ADD_NEWER y hay un certificado en el almacén con una fecha NotBefore mayor o igual que la fecha NotBefore en el certificado que se va a agregar.
E_INVALIDARG
Se especificó un valor de disposición que no es válido en el parámetro dwAddDisposition o se especificó un tipo de codificación de certificado que no es válido. Actualmente, solo se admite el tipo de X509_ASN_ENCODING.
 

Si se produce un error en la función, GetLastError devuelve 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 y descodificación de ASN.1.

Requisitos

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

CertAddCertificateContextToStore

CertFreeCertificateContext

Funciones de certificado