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 可能会返回 抽象语法表示法 1 (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值

言论

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

要求

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

另请参阅

CryptVerifyCertificateSignatureEx