Función CertAddSerializedElementToStore (wincrypt.h)

La función CertAddSerializedElementToStore agrega un certificado serializado, una lista de revocación de certificados (CRL) o un elemento de lista de confianza de certificados (CTL) al almacén. El elemento serializado contiene el certificado codificado, CRL o CTL y sus propiedades extendidas. Las propiedades extendidas están asociadas a un certificado y no forman parte de un certificado emitido por una entidad de certificación. Las propiedades extendidas no están disponibles en un certificado cuando se usa en una plataforma que no es de Microsoft.

Sintaxis

BOOL CertAddSerializedElementToStore(
  [in]  HCERTSTORE hCertStore,
  [in]  const BYTE *pbElement,
  [in]  DWORD      cbElement,
  [in]  DWORD      dwAddDisposition,
  [in]  DWORD      dwFlags,
  [in]  DWORD      dwContextTypeFlags,
  [out] DWORD      *pdwContextType,
  [out] const void **ppvContext
);

Parámetros

[in] hCertStore

Identificador de un almacén de certificados donde se almacenará el certificado creado. Si hCertStore es NULL, la función crea una copia de un certificado, CRL o CTL contexto con sus propiedades extendidas, pero el certificado, CRL o CTL no se conserva en ningún almacén.

[in] pbElement

Puntero a un búfer que contiene la información de certificado, CRL o CTL que se va a serializar y agregar al almacén de certificados.

[in] cbElement

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

[in] dwAddDisposition

Especifica la acción que se debe realizar si el certificado, CRL o CTL ya existe en el almacén. Los valores de disposición definidos actualmente se muestran en la tabla siguiente.

Valor Significado
CERT_STORE_ADD_NEW
Si el certificado, CRL o CTL es nuevo, se crea y se conserva en el almacén. Se produce un error en la operación si ya existe un certificado idéntico, CRL o CTL en el almacén. El último código de error se establece en CRYPT_E_EXISTS.
CERT_STORE_ADD_USE_EXISTING
Si el certificado, CRL o CTL es nuevo, se agrega al almacén. Si ya existe un certificado idéntico, CRL o CTL, se usa el elemento existente. Si ppvContext no es NULL, se duplica el contexto existente. La función solo agrega propiedades que aún no existen. Las propiedades hash SHA-1 y MD5 no se copian.
CERT_STORE_ADD_REPLACE_EXISTING
Si ya existe un certificado idéntico, CRL o CTL en el almacén, el certificado existente, CRL o CTL se elimina antes de crear y agregar el nuevo contexto.
CERT_STORE_ADD_ALWAYS
No se realiza ninguna comprobación para determinar si ya existe un certificado idéntico, CRL o CTL. Siempre se crea un nuevo elemento. Esto puede provocar duplicados en la tienda. Para determinar si el elemento ya existe en el almacén, llame a CertGetCRLFromStore o CertGetSubjectCertificateFromStore.
CERT_STORE_ADD_NEWER
Si existe una CRL o CTL coincidente o un vínculo a una CRL o CTL coincidente, la función compara los tiempos NotBefore en la CRL o CTL. Si la CRL o CTL existente tiene un tiempo NotBefore menor que la hora NotBefore en el nuevo elemento, el elemento o vínculo antiguo se reemplaza igual que por CERT_STORE_ADD_REPLACE_EXISTING. Si el elemento existente tiene una hora NotBefore mayor o igual que la hora NotBefore en el elemento 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 CRL o CTL coincidente o un vínculo a una CRL o CTL coincidente en el almacén, se agrega un nuevo elemento al almacén.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
La acción es la misma que para CERT_STORE_ADD_NEWER. Sin embargo, si se reemplaza una CRL o CTL anterior, las propiedades del elemento anterior se incorporan al reemplazo.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
Si existe un certificado coincidente en el almacén, el contexto existente se elimina antes de crear y agregar el nuevo contexto. El nuevo contexto agregado hereda las propiedades del certificado existente.

[in] dwFlags

Reservado para uso futuro y debe ser cero.

[in] dwContextTypeFlags

Especifica los contextos que se pueden agregar. Por ejemplo, para agregar un certificado, CRL o CTL, establezca dwContextTypeFlagsen CERT_STORE_CERTIFICATE_CONTEXT_FLAG o CERT_STORE_CRL_CONTEXT_FLAG.

Las marcas de tipo de contexto definidas actualmente se muestran en la tabla siguiente.

Valor Significado
CERT_STORE_ALL_CONTEXT_FLAG
Agrega cualquier contexto.
CERT_STORE_CERTIFICATE_CONTEXT_FLAG
Agrega solo un contexto de certificado.
CERT_STORE_CRL_CONTEXT_FLAG
Agrega solo un contexto CRL.
CERT_STORE_CTL_CONTEXT_FLAG
Agrega solo un contexto de CTL.

[out] pdwContextType

Puntero al tipo de contexto del elemento serializado agregado. Se trata de un parámetro opcional y puede ser NULL, lo que indica que la aplicación que realiza la llamada no requiere el tipo de contexto .

Los tipos de contexto definidos actualmente se muestran en la tabla siguiente.

Valor Significado
CERT_STORE_CERTIFICATE_CONTEXT
Certificados
CERT_STORE_CRL_CONTEXT
CRL
CERT_STORE_CTL_CONTEXT
CTL

[out] ppvContext

Puntero a un puntero al certificado descodificado, CRL o contexto CTL. Se trata de un parámetro opcional y puede ser NULL, lo que indica que la aplicación que realiza la llamada no requiere el contexto del certificado agregado o existente, CRL o CTL.

Si ppvContext no es NULL, debe ser la dirección de un puntero a un CERT_CONTEXT, CRL_CONTEXT o CTL_CONTEXT. Cuando la aplicación finaliza con el contexto, el contexto debe liberarse mediante CertFreeCertificateContext para un certificado, CertFreeCRLContext para una CRL o CertFreeCTLContext para un CTL.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. 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
Si el parámetro dwAddDisposition se establece en CERT_STORE_ADD_NEW, el certificado, crL o CTL ya existe en el almacén.
E_INVALIDARG
Se especificó un valor de disposición que no es válido en el parámetro dwAddDisposition .
 

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

CertSerializeCRLStoreElement

CertSerializeCertificateStoreElement

Funciones de mantenimiento del almacén de certificados y certificados