CertGetCRLFromStore 函数 (wincrypt.h)

CertGetCRLFromStore 函数从指定颁发者的证书存储中获取第一个或下一个证书吊销列表 (CRL) 上下文。 函数还会对 CRL 执行启用的验证检查。 建议使用新的 证书链验证函数 ,而不是此函数。

语法

PCCRL_CONTEXT CertGetCRLFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in, optional] PCCERT_CONTEXT pIssuerContext,
  [in]           PCCRL_CONTEXT  pPrevCrlContext,
  [in, out]      DWORD          *pdwFlags
);

参数

[in] hCertStore

证书存储的句柄。

[in, optional] pIssuerContext

指向颁发者的指针 CERT_CONTEXTpIssuerContext 指针可以来自此存储或其他存储区,也可以由调用 CertCreateCertificateContext 创建。 如果为此参数传递 NULL ,则会找到存储区中的所有 CRL。

[in] pPrevCrlContext

指向 CRL_CONTEXT的指针。 一个颁发者可以有多个 CRL。 例如,它可以使用 X.509 版本 3 扩展生成增量 CRL。 此参数必须在第一次调用时为 NULL 才能获取 CRL。 若要获取颁发者的下一个 CRL,请将 参数设置为上一个调用返回 的CRL_CONTEXT 。 此函数始终通过调用 CertFreeCRLContext 释放非 NULLpPrevCrlContext,即使出现错误也是如此。

[in, out] pdwFlags

定义以下标志值以对返回的 CRL 启用验证检查。 可以使用按位 OR 运算组合这些标志。

含义
CERT_STORE_SIGNATURE_FLAG
使用颁发者证书中的公钥验证返回的 CRL 上的签名。
CERT_STORE_TIME_VALIDITY_FLAG
获取当前时间,并验证它是否在 CRL 的 ThisUpdate 和 NextUpdate 之间的时间范围内。
CERT_STORE_BASE_CRL_FLAG
获取基本 CRL。
CERT_STORE_DELTA_CRL_FLAG
获取增量 CRL。
 

如果启用的验证检查成功,则其标志设置为零。

如果启用的验证检查失败,则返回时仍会设置其标志。 如果 pIssuerContextNULL,则启用的CERT_STORE_SIGNATURE_FLAG始终失败,同时设置CERT_STORE_NO_ISSUER_FLAG。 有关更多详细信息,请参阅“备注”。

如果只设置了CERT_STORE_BASE_CRL_FLAG或CERT_STORE_DELTA_CRL_FLAG中的一个,则此函数将返回基本或增量 CRL,并在返回时清除相应的基标志或增量标志。 如果设置了这两个标志,则只会清除其中一个标志。

对于验证检查失败,仍返回指向第一个或下一个CRL_CONTEXT的指针,并且不会更新 GetLastError

返回值

如果函数成功,则返回值是指向只读 CRL_CONTEXT的指针。

如果函数失败,并且找不到第一个或下一个 CRL,则返回值为 NULL

必须通过调用 CertFreeCRLContext 来释放返回的CRL_CONTEXT。 但是,当在后续调用中为 pPrevCrlContext 提供返回的CRL_CONTEXT时,该函数将释放它。

有关扩展的错误信息,请调用 GetLastError。 下面是一些可能的错误代码。

说明
E_INVALIDARG
hCertStore 参数中的句柄与 pPrevCrlContext 参数指向的 CRL 上下文中的句柄不同,或者在 pdwFlags 中设置了不受支持的标志。
CRYPT_E_NOT_FOUND
颁发者的存储中不存在 CRL,或者函数到达存储区列表的末尾。

注解

可以调用 CertDuplicateCRLContext 来生成重复的 CRL。

可以使用按位 OR 运算合并标志的十六进制值,以启用这两种验证。 例如,若要启用这两个验证,pdwFlags 指向的DWORD 值设置为值 CERT_STORE_SIGNATURE_FLAG |CERT_STORE_TIME_VALIDITY_FLAG。 如果CERT_STORE_SIGNATURE_FLAG验证成功,但CERT_STORE_TIME_VALIDITY_FLAG验证失败,则当函数返回时,pdwFlags 指向的DWORD 值将设置为CERT_STORE_TIME_VALIDITY_FLAG。

要求

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

另请参阅

CRL_CONTEXT

CertCreateCertificateContext

CertDuplicateCRLContext

CertFreeCRLContext

CertGetCRLContextProperty

证书吊销列表函数