CryptVerifyDetachedMessageSignature 函数 (wincrypt.h)
CryptVerifyDetachedMessageSignature 函数验证包含分离签名或签名的已签名邮件。
语法
BOOL CryptVerifyDetachedMessageSignature(
[in] PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
[in] DWORD dwSignerIndex,
[in] const BYTE *pbDetachedSignBlob,
[in] DWORD cbDetachedSignBlob,
[in] DWORD cToBeSigned,
[in] const BYTE * [] rgpbToBeSigned,
[in] DWORD [] rgcbToBeSigned,
[out, optional] PCCERT_CONTEXT *ppSignerCert
);
参数
[in] pVerifyPara
指向包含验证参数 的CRYPT_VERIFY_MESSAGE_PARA 结构的指针。
[in] dwSignerIndex
要验证的签名的索引。 一条消息可能有多个签名者,可以重复调用此函数,更改 dwSignerIndex 以验证其他签名。 如果函数返回 FALSE,并且 GetLastError 返回CRYPT_E_NO_SIGNER,则上一次调用接收了消息的最后一个签名者。
[in] pbDetachedSignBlob
指向包含编码消息签名的 BLOB 的指针。
[in] cbDetachedSignBlob
分离签名的大小(以字节为单位)。
[in] cToBeSigned
rgpbToBeSigned 和 rgcbToBeSigned 中的数组元素数。
[in] rgpbToBeSigned
指向包含要 哈希处理的内容的缓冲区的指针数组。
[in] rgcbToBeSigned
rgpbToBeSigned 中指向的内容缓冲区的大小数组(以字节为单位)。
[out, optional] ppSignerCert
指向指向签名者证书 CERT_CONTEXT 结构的指针的指针。 使用完证书上下文后,通过调用 CertFreeCertificateContext 函数将其释放。 如果此参数为 NULL,则不会返回指向 CERT_CONTEXT 结构的指针。
返回值
如果函数成功,则返回值为非零 (TRUE) 。
如果函数失败,则返回值为零 (FALSE) 。
有关扩展的错误信息,请调用 GetLastError。
下面列出了 GetLastError 函数最常返回的错误代码。
返回代码 | 说明 |
---|---|
|
无效的消息和证书编码类型。 目前仅支持PKCS_7_ASN_ENCODING和X509_ASN_ENCODING_TYPE。 *pVerifyPara 中的 cbSize 无效。 |
|
不是签名的加密消息。 |
|
该消息没有任何签名者或指定 dwSignerIndex 的签名者。 |
|
消息是使用未知或不受支持的算法进行哈希处理和签名的。 |
|
未验证邮件的签名。 |
如果函数失败, GetLastError 可能会返回 抽象语法表示法 One (ASN.1) 编码/解码错误。 有关这些错误的信息,请参阅 ASN.1 编码/解码返回值。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |