Compartir a través de


Función CertAddEncodedCTLToStore (wincrypt.h)

La función CertAddEncodedCTLToStore crea un contexto de lista de confianza de certificados (CTL) a partir de un CTL codificado y lo agrega al almacén de certificados. La función realiza una copia del contexto de CTL antes de agregarla al almacén.

Sintaxis

BOOL CertAddEncodedCTLToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            DWORD         dwMsgAndCertEncodingType,
  [in]            const BYTE    *pbCtlEncoded,
  [in]            DWORD         cbCtlEncoded,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppCtlContext
);

Parámetros

[in] hCertStore

Identificador de un almacén de certificados.

[in] dwMsgAndCertEncodingType

Especifica el tipo de codificación usada. Los tipos de codificación de certificados y mensajes deben especificarse combinándolos con una operación OR bit a bit, como se muestra en el ejemplo siguiente:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

Los tipos de codificación definidos actualmente son:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCtlEncoded

Puntero a un búfer que contiene el CTL codificado que se va a agregar al almacén de certificados.

[in] cbCtlEncoded

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

[in] dwAddDisposition

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

Valor Significado
CERT_STORE_ADD_ALWAYS
No realiza ninguna comprobación de un CTL coincidente existente o un vínculo a un CTL coincidente. Siempre se agrega un nuevo CTL al almacén. Esto puede provocar duplicados en un almacén.
CERT_STORE_ADD_NEW
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se produce un error en la operación. GetLastError devuelve el código CRYPT_E_EXISTS.
CERT_STORE_ADD_NEWER
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se comparan las horas ThisUpdate en las CTL. Si el CTL existente tiene una hora ThisUpdate menor que la hora ThisUpdate en el nuevo CTL, el CTL o vínculo antiguo se reemplaza igual que por CERT_STORE_ADD_REPLACE_EXISTING. Si el CTL existente tiene una hora ThisUpdate mayor o igual que la hora ThisUpdate en el CTL que se va a agregar, se produce un error en la función con GetLastError que devuelve el código de CRYPT_E_EXISTS.

Si no se encuentra un CTL coincidente o un vínculo a un CTL coincidente en el almacén, se agrega un nuevo CTL al almacén.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
La acción es la misma que para CERT_STORE_ADD_NEWER, salvo que si se reemplaza un CTL anterior, las propiedades del CTL anterior se incorporan al CTL de reemplazo.
CERT_STORE_ADD_REPLACE_EXISTING
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se elimina el CTL o vínculo existente y se crea un nuevo CTL y se agrega al almacén. Si no existe un CTL coincidente o un vínculo a un CTL coincidente, se agrega uno.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Si existe un CTL coincidente en el almacén, ese contexto existente se elimina antes de crear y agregar el nuevo contexto. El contexto agregado hereda las propiedades del CTL existente.
CERT_STORE_ADD_USE_EXISTING
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se usa el CTL existente y se agregan las propiedades del nuevo CTL. No se produce ningún error en la función, pero no se agrega ningún CTL nuevo. Si ppCertContext no es NULL, se duplica el contexto existente.

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

[out, optional] ppCtlContext

Puntero a un puntero a la estructura de CTL_CONTEXT descodificada. Puede ser NULL que indica que la aplicación que realiza la llamada no requiere una copia del CTL agregado o existente. Si se realiza una copia, debe liberarse mediante CertFreeCTLContext.

Valor devuelto

Si la función se ejecuta 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.

Siguen algunos códigos de error posibles.

Código devuelto Descripción
CRYPT_E_EXISTS
CERT_STORE_ADD_NEW se establece y el CTL ya existe en el almacén; o CERT_STORE_ADD_NEWER se establece y hay un CTL en el almacén con una hora ThisUpdate mayor o igual que la hora ThisUpdate en el CTL 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 que no es válido. Actualmente, solo se admiten los tipos de codificación X509_ASN_ENCODING y PKCS_7_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.

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

CertAddCTLContextToStore

CertFreeCTLContext

Funciones de lista de confianza de certificados