CertVerifySubjectCertificateContext 函数 (wincrypt.h)

CertVerifySubjectCertificateContext 函数通过检查证书颁发者的有效性对证书执行已启用的验证检查。 建议使用新的 证书链验证函数 ,而不是此函数。

语法

BOOL CertVerifySubjectCertificateContext(
  [in]           PCCERT_CONTEXT pSubject,
  [in, optional] PCCERT_CONTEXT pIssuer,
  [in, out]      DWORD          *pdwFlags
);

参数

[in] pSubject

指向包含使用者证书 的CERT_CONTEXT 结构的指针。

[in, optional] pIssuer

指向包含颁发者证书 的CERT_CONTEXT 的指针。 仅检查CERT_STORE_TIME_VALIDITY_FLAG时, pIssuer 可以为 NULL

[in, out] pdwFlags

指向 DWORD 值的指针包含验证检查标志。 可以设置以下标志来启用对使用者证书的验证检查。 可以使用按位 OR 操作将它们组合在一起,以启用多个验证。

含义
CERT_STORE_REVOCATION_FLAG
检查使用者证书是否在颁发者的吊销列表中。
CERT_STORE_SIGNATURE_FLAG
使用颁发者证书中的公钥来验证使用者证书上的签名。
CERT_STORE_TIME_VALIDITY_FLAG
获取当前时间,并验证它是否在使用者证书的有效期内。
 

如果启用的验证检查成功,则其标志设置为零。 如果失败,则会在返回时设置其标志。

如果已启用CERT_STORE_REVOCATION_FLAG,并且颁发者在存储中没有 CRL,则除了CERT_STORE_REVOCATION_FLAG之外,还会设置CERT_STORE_NO_CRL_FLAG。

返回值

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

如果函数失败,则返回值为 FALSE

对于验证检查失败,仍返回 TRUE。 仅当传入错误参数时,才会返回 FALSE

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

返回代码 说明
E_INVALIDARG
pdwFlags 中设置了不受支持的位。 可以设置CERT_STORE_SIGNATURE_FLAG、CERT_STORE_TIME_VALIDITY_FLAG和CERT_STORE_REVOCATION_FLAG的任意组合。 如果 pIssuerNULL,则只能设置CERT_STORE_TIME_VALIDITY_FLAG。

注解

可以使用按位 OR 操作组合标志的十六进制值,以启用多个验证。 例如,若要同时启用签名和时间有效性,值

CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG

作为输入参数放置在 pdwFlagsDWORD 值中。 如果CERT_STORE_SIGNATURE_FLAG验证成功,但CERT_STORE_TIME_VALIDITY_FLAG验证失败,则当函数返回时 ,pdwFlags 将设置为CERT_STORE_TIME_VALIDITY_FLAG。

要求

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

另请参阅

CERT_CONTEXT

CertGetIssuerCertificateFromStore

证书函数