CryptVerifyCertificateSignature 函数 (wincrypt.h)

CryptVerifyCertificateSignature 函数使用CERT_PUBLIC_KEY_INFO结构中的公钥验证证书签名、证书吊销列表 (CRL) 或证书请求。 函数不需要访问 私钥

语法

BOOL CryptVerifyCertificateSignature(
  [in] HCRYPTPROV_LEGACY     hCryptProv,
  [in] DWORD                 dwCertEncodingType,
  [in] const BYTE            *pbEncoded,
  [in] DWORD                 cbEncoded,
  [in] PCERT_PUBLIC_KEY_INFO pPublicKey
);

参数

[in] hCryptProv

此参数未使用,应设置为 NULL

Windows Server 2003 和 Windows XP: 加密服务提供程序的句柄 (用于验证签名的 CSP) 。此参数的数据类型为 HCRYPTPROV

除非有充分的理由传入特定的加密提供程序,否则会传递 NULL。 传入 NULL 会导致获取默认 RSA 或 DSS 提供程序。

[in] dwCertEncodingType

用于加密主题的 证书编码类型 。 此函数忽略包含在此值的高 WORD 中的消息编码类型标识符。

此参数可以是以下当前定义的证书编码类型。

含义
X509_ASN_ENCODING
1 (0x1)
指定 X.509 证书编码。

[in] pbEncoded

指向要验证签名的内容CERT_SIGNED_CONTENT_INFO编码 BLOB 的指针。

[in] cbEncoded

pbEncoded 中编码内容的大小(以字节为单位)。

[in] pPublicKey

指向 CERT_PUBLIC_KEY_INFO 结构的指针,该结构包含验证签名时要使用的公钥。

返回值

如果成功,则返回非零值,否则返回零。

有关扩展的错误信息,请调用 GetLastError

注意 调用的函数 CryptCreateHashCryptImportKeyCryptVerifySignatureCryptHashData 的错误可能会传播到此函数。
 
失败时,此函数将导致从 GetLastError 返回以下错误代码。
返回代码 说明
ERROR_FILE_NOT_FOUND
无效的证书编码类型。 目前仅支持 X509_ASN_ENCODING
NTE_BAD_ALGID
签名算法 的对象标识符 (OID) 不会映射到已知或支持的 哈希 算法。
NTE_BAD_SIGNATURE
签名无效。
 

如果函数失败, GetLastError 可能会返回 抽象语法表示法 One (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值

注解

此函数当前调用 CryptVerifyCertificateSignatureEx 函数来执行验证。

要求

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

另请参阅

CryptVerifyCertificateSignatureEx