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,并且颁发者在存储中没有 CRL,则除了CERT_STORE_REVOCATION_FLAG之外,还会设置CERT_STORE_NO_CRL_FLAG。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。
对于验证检查失败,仍返回 TRUE。 仅当传入错误参数时,才会返回 FALSE。
有关扩展的错误信息,请调用 GetLastError。 一个可能的错误代码如下。
返回代码 | 说明 |
---|---|
|
pdwFlags 中设置了不受支持的位。 可以设置CERT_STORE_SIGNATURE_FLAG、CERT_STORE_TIME_VALIDITY_FLAG和CERT_STORE_REVOCATION_FLAG的任意组合。 如果 pIssuer 为 NULL,则只能设置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 |