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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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.
[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 |
---|---|
|
Certificados |
|
CRL |
|
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 |
---|---|
|
Si el parámetro dwAddDisposition se establece en CERT_STORE_ADD_NEW, el certificado, crL o CTL ya existe en el almacén. |
|
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
CertSerializeCertificateStoreElement
Funciones de mantenimiento del almacén de certificados y certificados