CertAddCTLContextToStore

The CertAddCTLContextToStore function adds a CTL context to the certificate store.

#include <wincrypt.h>
BOOL WINAPI CertAddCTLContextToStore(
  HCERTSTORE hCertStore,                 // in
  PCCTL_CONTEXT pCtlContext,             // in
  DWORD dwAddDisposition,                // in
  PCCTL_CONTEXT *ppStoreContext          // out, optional
);
 

Parameters

hCertStore
Handle to the certificate store.
pCtlContext
Pointer to the CTL context that is to be added.
dwAddDisposition
Value that specifies the action to take if a matching CTL or a link to a matching CTL already exists in the store. Currently defined disposition values and their uses are:
CERT_STORE_ADD_NEW
If a matching CTL or a link to a matching CTL exists, the operation fails. GetLastError returns CRYPT_E_EXISTS.
CERT_STORE_ADD_USE_EXISTING
If a matching CTL or a link to a matching CTL exists, that existing CTL is used and properties from the new CTL are added. The function does not fail, but no new CTL is added. If ppCertContext is not NULL, the existing context is duplicated.

If a matching CTL or a link to a matching CTL does not exist, a new CTL is added.

CERT_STORE_ADD_REPLACE_EXISTING
If a matching CTL or a link to a matching CTL exists, the existing CTL or link is deleted and a new CTL is created and added to the store. If a matching CTL or a link to a matching CTL does not exist, one is added.
CERT_STORE_ADD_ALWAYS
Makes no check for an existing matching CTL or link to a matching CTL . A new CTL is always added to the store. This may lead to duplicates in a store.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
If a matching CTL exists in the store, that existing context is deleted before creating and adding the new context. The added context inherits properties from the existing CTL
CERT_STORE_ADD_NEWER
If a matching CTL or a link to a matching CTL exists, the ThisUpdate times on the CTLs are compared. If the existing CTL has a ThisUpdate time less than the ThisUpdate time on the new CTL, the old CTL or link is replaced just as with CERT_STORE_ADD_REPLACE_EXISTING. If the existing CTL has a ThisUpdate time greater than or equal to the ThisUpdate time on the CTL to be added, the function fails with GetLastError returning CRYPT_E_EXISTS.

If a matching CTL or a link to a matching CTL is not found in the store, a new CTL is added to the store.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
Action is the same as for CERT_STORE_ADD_NEWER except that if an older CTL is replaced, the properties of the older CTL are incorporated into the replacement CTL.
ppCTLContext
Pointer to a pointer to the decoded CTL context. This is an optional parameter that can be NULL, indicating that the caller does not want a copy of the added or existing CTL. If a copy is made, that context must be freed by using CertFreeCTLContext.

Return Values

TRUE if the function succeeded. FALSE if the function failed.

GetLastError returns the reason for any failures using the following error codes:

CRYPT_E_EXISTS
This error is returned if CERT_STORE_ADD_NEW is set and the CTL exists in the store or if CERT_STORE_ADD_NEWER is set and a CTL exists in the store with a ThisUpdate date greater than or equal to the ThisUpdate date on the CTL to be added.
E_INVALIDARG
An invalid add disposition was specified by the dwAddDisposition argument.

Errors from the called functions CertAddEncodedCRLToStore and CertSetCRLContextProperty may be propagated to this function.

Remarks

The CTL context is not duplicated using CertDuplicateCTLContext. Instead, a new copy is created and added to the store. In addition to the encoded CTL, the context's properties are copied.

Example

See CertAddCertificateContextToStore

Change all references to ''certificate" in the example code to "CRL."

QuickInfo

  Windows NT: Requires version 4.0 SP3 or later. Available also in IE 3.02 and later.
  Windows: Requires Windows 95 OSR2 or later.
  Windows CE: Unsupported.
  Header: Declared in wincrypt.h.
  Import Library: Use crypt32.lib.

See Also

CertAddEncodedCTLToStore, CertSetCTLContextProperty