Función CertAddCTLContextToStore (wincrypt.h)
La función CertAddCTLContextToStore agrega un contexto de lista de confianza de certificados (CTL) a un almacén de certificados.
Sintaxis
BOOL CertAddCTLContextToStore(
[in] HCERTSTORE hCertStore,
[in] PCCTL_CONTEXT pCtlContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCTL_CONTEXT *ppStoreContext
);
Parámetros
[in] hCertStore
Identificador de un almacén de certificados.
[in] pCtlContext
Puntero a la estructura CTL_CONTEXT que se va a agregar al almacén.
[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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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] ppStoreContext
Puntero a un puntero al contexto CTL descodificado. Este parámetro opcional 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, ese contexto 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. Los errores de las funciones llamadas CertAddEncodedCRLToStore y CertSetCRLContextProperty se pueden propagar a esta función.
Para obtener información de error extendida, llame a GetLastError. Siguen algunos códigos de error posibles.
Código devuelto | Descripción |
---|---|
|
Este error se devuelve si se establece CERT_STORE_ADD_NEW y el CTL existe en el almacén o si se establece CERT_STORE_ADD_NEWER y existe un CTL en el almacén con una fecha ThisUpdate mayor o igual que la fecha ThisUpdate en el CTL que se va a agregar. |
|
El parámetro dwAddDisposition especificó una disposición que no es válida. |
Comentarios
El contexto CTL no está duplicado mediante CertDuplicateCTLContext. En su lugar, se crea una nueva copia y se agrega al almacén. Además del CTL codificado, se copian las propiedades del contexto.
Para quitar el contexto de CTL del almacén de certificados, use la función CertDeleteCTLFromStore .
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 |