CertFindCRLInStore 函数 (wincrypt.h)
CertFindCRLInStore 函数在证书存储中查找第一个或下一个证书吊销列表 (CRL) 上下文,该上下文与 dwFindType 参数和关联的 pvFindPara 参数建立的搜索条件相匹配。 此函数可在循环中用于查找证书存储中与指定查找条件匹配的所有 CRL 上下文。
语法
PCCRL_CONTEXT CertFindCRLInStore(
[in] HCERTSTORE hCertStore,
[in] DWORD dwCertEncodingType,
[in] DWORD dwFindFlags,
[in] DWORD dwFindType,
[in] const void *pvFindPara,
[in] PCCRL_CONTEXT pPrevCrlContext
);
参数
[in] hCertStore
要搜索的证书存储的句柄。
[in] dwCertEncodingType
当前未使用此参数。 它必须设置为零。
[in] dwFindFlags
如果 dwFindType CRL_FIND_ISSUED_BY,则默认情况下仅完成颁发者名称匹配。 以下标志可用于执行其他筛选。
值 | 含义 |
---|---|
|
检查是否具有 AKI) 扩展 (颁发机构密钥标识符的 CRL。 如果 CRL 具有 AKI,则仅返回其 AKI 与颁发者匹配的 CRL。
注意 AKI 扩展具有 对象标识符 (OID) 值szOID_AUTHORITY_KEY_IDENTIFIER2及其相应的数据结构。
|
|
使用颁发者证书中的公钥验证 CRL 上的签名。 仅返回具有有效签名的 CRL。 |
|
查找并返回增量 CRL。 |
|
查找并返回基本 CRL。 |
|
成功验证后,将检查签名的强度。 仅当 dwFindType 参数设置为 CRL_FIND_ISSUED_FOR 时,此标志才适用。 还必须设置 CRL_FIND_ISSUED_BY_SIGNATURE_FLAG。 如果成功,将在 CRL 上下文中设置以下强签名属性:
|
[in] dwFindType
指定要进行的搜索的类型。 dwFindType 的值确定 pvFindPara 参数的数据类型、内容和用法。 当前定义的搜索类型及其 pvFindPara 要求如下所示。
值 | 含义 |
---|---|
|
无搜索条件。 将返回存储中的下一个 CRL。 |
|
在与 CERT_CONTEXT 中的颁发者匹配的存储中搜索下一个 CRL。 |
|
通过以下方式搜索与 CRL_CONTEXT 匹配的下一个 CRL:
|
|
在存储区中搜索与CRL_FIND_ISSUED_FOR_PARA结构中的使用者证书颁发者匹配的下一个 CRL。
如果未找到 CRL,请在存储区中搜索与 CRL_FIND_ISSUED_FOR_PARA 结构中的颁发者匹配的下一个 CRL。 注意 使用交叉证书时,颁发者证书中的使用者名称可能与使用者证书及其相应的 CRL 中的颁发者名称不匹配。
|
[in] pvFindPara
此参数由 dwFindType 的值确定。 有关详细信息,请参阅本主题前面的表。
[in] pPrevCrlContext
指向此函数返回的最后 一个CRL_CONTEXT 的指针。 必须为 NULL 才能获取存储区中符合搜索条件的第一个 CRL。 通过将 pPrevCrlContext 设置为上一次调用函数返回 的PCCRL_CONTEXT 指针,可以找到满足搜索条件的连续 CRL。 搜索过程会跳过任何不符合搜索条件的 CRL,或者之前已由 CertDeleteCRLFromStore 从存储中删除的 CRL。 此函数释放由此参数的不为 NULL 的值引用的CRL_CONTEXT。
返回值
如果函数成功,该函数将返回指向只读 CRL 上下文的指针。 使用完返回的 CRL 上下文后,通过调用 CertFreeCRLContext 函数来释放它,或通过在后续调用 CertFindCRLInStore 函数时将其作为 pPrevCrlContext 参数传递来隐式释放它。
如果函数失败,并且找不到与搜索条件匹配的 CRL,则返回值为 NULL。 有关扩展的错误信息,请调用 GetLastError。 下面是一些可能的错误代码。
返回代码 | 说明 |
---|---|
|
hCertStore 参数中的句柄与 pPrevCrlContext 参数指向的 CRL 上下文中的句柄不同,或者在 dwFindType 参数中指定了无效的搜索类型。 |
|
存储中没有 CRL,未找到与搜索条件匹配的 CRL,或者已到达商店列表的末尾。 |
注解
在对函数的后续调用中作为 pPrevCrlContext 参数传递时,返回的指针将被释放。 否则,必须通过调用 CertFreeCRLContext 显式释放指针。 CertFindCRLInStore 始终使用调用 CertFreeCRLContext 释放不为 NULL 的 pPrevCrlContext,即使函数中存在错误也是如此。
可以调用 CertDuplicateCRLContext 来复制返回的上下文。 可以使用 CertAddCRLContextToStore 将返回的 CRL 上下文添加到不同的证书存储区,也可以使用 CertAddCRLLinkToStore 将指向该 CRL 上下文的链接添加到非集合存储。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |