CertAddCRLContextToStore 函数 (wincrypt.h)

CertAddCRLContextToStore 函数将证书吊销列表 (CRL) 上下文添加到指定的证书存储。

语法

BOOL CertAddCRLContextToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            PCCRL_CONTEXT pCrlContext,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCRL_CONTEXT *ppStoreContext
);

参数

[in] hCertStore

证书存储的句柄。

[in] pCrlContext

指向要添加 的CRL_CONTEXT 结构的指针。

[in] dwAddDisposition

指定在存储中已存在匹配的 CRL 或指向匹配 CRL 的链接时要执行的操作。 当前定义的处置值及其用途如下所示。

含义
CERT_STORE_ADD_ALWAYS
不对现有的匹配 CRL 或指向匹配 CRL 的链接检查。 新 CRL 始终添加到存储区。 这可能会导致存储中出现重复项。
CERT_STORE_ADD_NEW
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则操作将失败。 GetLastError 返回CRYPT_E_EXISTS代码。
CERT_STORE_ADD_NEWER
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则函数会比较 CRL 上的 ThisUpdate 时间。 如果现有 CRL 的 ThisUpdate 时间小于新 CRL 上的 ThisUpdate 时间,则会像使用 CERT_STORE_ADD_REPLACE_EXISTING 一样替换旧的 CRL 或链接。 如果现有 CRL 的 ThisUpdate 时间大于或等于要添加的 CRL 上的 ThisUpdate 时间,则函数将 失败并返回 CRYPT_E_EXISTS代码。

如果在存储中找不到匹配的 CRL 或指向匹配 CRL 的链接,则会向存储区添加新的 CRL。

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
该操作与CERT_STORE_ADD_NEWER相同,不同之处在于,如果替换了较旧的 CRL,则旧 CRL 的属性将合并到替换 CRL 中。
CERT_STORE_ADD_REPLACE_EXISTING
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则会删除现有的 CRL 或链接,并创建新的 CRL 并将其添加到存储中。 如果匹配的 CRL 或指向匹配 CRL 的链接不存在,则会添加一个。
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
如果存储中存在匹配的 CRL,则会在创建新上下文并添加新上下文之前删除现有上下文。 添加的上下文从现有 CRL 继承属性。
CERT_STORE_ADD_USE_EXISTING
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则使用现有的 CRL 并添加新 CRL 中的属性。 函数不会失败,但不会添加新的 CRL。 如果 ppCertContext 不为 NULL,则现有上下文将重复。

如果不存在匹配的 CRL 或指向匹配 CRL 的链接,则会添加新的 CRL。

[out, optional] ppStoreContext

指向已解码 CRL 上下文的指针的指针。 这是一个可选参数,可以为 NULL,表示调用应用程序不需要添加或现有 CRL 的副本。 如果复制,则必须使用 CertFreeCRLContext 释放该上下文。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE。 来自调用的函数 CertAddEncodedCRLToStoreCertSetCRLContextProperty 的错误可以传播到此函数。

有关扩展的错误信息,请调用 GetLastError。 一些可能的错误代码随之而来。

返回代码 说明
CRYPT_E_EXISTS
如果设置了CERT_STORE_ADD_NEW并且存储中已存在 CRL,或者设置了CERT_STORE_ADD_NEWER并且存储中存在 CRL,并且此存储中存在 一个 ThisUpdate 日期大于或等于要添加的 CRL 上的 ThisUpdate 日期,则返回此错误。
E_INVALIDARG
dwAddDisposition 参数指定了无效的处置值。

注解

使用 CertDuplicateCRLContext 不会复制 CRL 上下文。 而是会创建一个新副本并将其添加到存储中。 除了复制编码的 CRL 之外,函数还会复制上下文的属性。

若要从证书存储中删除 CRL 上下文,请使用 CertDeleteCRLFromStore 函数。

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 wincrypt.h
Library Crypt32.lib
DLL Crypt32.dll

另请参阅

CertAddEncodedCRLToStore

CertDuplicateCRLContext

CertFreeCRLContext

CertSetCRLContextProperty

证书吊销列表函数