CertAddEncodedCRLToStore 函数 (wincrypt.h)
CertAddEncodedCRLToStore 函数从编码的 CRL 创建证书吊销列表 (CRL) 上下文,并将其添加到证书存储中。 函数在将 CRL 上下文添加到存储区之前会创建该上下文的副本。
语法
BOOL CertAddEncodedCRLToStore(
[in] HCERTSTORE hCertStore,
[in] DWORD dwCertEncodingType,
[in] const BYTE *pbCrlEncoded,
[in] DWORD cbCrlEncoded,
[in] DWORD dwAddDisposition,
[out, optional] PCCRL_CONTEXT *ppCrlContext
);
参数
[in] hCertStore
证书存储的句柄。
[in] dwCertEncodingType
指定使用的编码类型。 始终可以接受将证书和 消息编码类型 与按位 OR 操作组合在一起,如以下示例所示:
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING当前定义的编码类型为:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pbCrlEncoded
指向缓冲区的指针,该缓冲区包含要添加到 证书存储的编码 CRL。
[in] cbCrlEncoded
pbCrlEncoded 缓冲区的大小(以字节为单位)。
[in] dwAddDisposition
指定在存储中已存在匹配的 CRL 或指向匹配 CRL 的链接时要执行的操作。 当前定义的处置值及其用法如下所示。
值 | 含义 |
---|---|
|
不对现有匹配 CRL 或指向匹配 CRL 的链接进行检查。 始终将新的 CRL 添加到存储区。 这可能会导致存储中出现重复项。 |
|
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则操作将失败。 GetLastError 返回CRYPT_E_EXISTS代码。 |
|
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则会比较 CRL 上的 ThisUpdate 时间。 如果现有 CRL 的 ThisUpdate 时间小于新 CRL 上的 ThisUpdate 时间,则旧 CRL 或链接将替换为CERT_STORE_ADD_REPLACE_EXISTING。 如果现有 CRL 的 ThisUpdate 时间大于或等于要添加的 CRL 上的 ThisUpdate 时间,则函数将失败,并返回CRYPT_E_EXISTS代码的 GetLastError 。
如果在存储中找不到匹配的 CRL 或指向匹配 CRL 的链接,则会向存储区添加新的 CRL。 |
|
该操作与CERT_STORE_ADD_NEWER相同,不同之处在于,如果替换了较旧的 CRL,旧 CRL 的属性将合并到替换 CRL 中。 |
|
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则会删除现有的 CRL 或链接,并创建一个新的 CRL 并将其添加到存储中。 如果匹配的 CRL 或指向匹配 CRL 的链接不存在,则会添加一个。 |
|
如果存储中存在匹配的 CRL,则会在创建新上下文并添加新上下文之前删除该现有上下文。 新上下文从现有 CRL 继承属性。 |
|
如果存在匹配的 CRL 或指向匹配 CRL 的链接,则使用现有 CRL 并添加新 CRL 中的属性。 函数不会失败,但不会添加新的 CRL。 如果 ppCertContext 不为 NULL,则现有上下文将重复。
如果匹配的 CRL 或指向匹配 CRL 的链接不存在,则会添加新的 CRL。 |
[out, optional] ppCrlContext
指向已解码CRL_CONTEXT结构的指针 的 指针。 这是一个可以为 NULL 的可选参数,表示调用应用程序不需要新的或现有的 CRL 的副本。 如果创建副本,则必须使用 CertFreeCRLContext 释放该上下文。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。 有关扩展的错误信息,请调用 GetLastError。 下面是一些可能的错误代码。
返回代码 | 说明 |
---|---|
|
CERT_STORE_ADD_NEW已设置并且存储区中已存在 CRL,或者CERT_STORE_ADD_NEWER已设置,并且存储区中有一个 CRL,其 ThisUpdate 时间大于或等于要添加的 CRL 的 ThisUpdate 时间。 |
|
dwAddDisposition 参数中指定了无效的处置值,或者指定了无效的编码类型。 目前,仅支持编码类型X509_ASN_ENCODING。 |
如果函数失败, GetLastError 可能会返回 抽象语法表示法 One (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |