CryptVerifyMessageSignatureWithKey 函数 (wincrypt.h)
CryptVerifyMessageSignatureWithKey 函数使用指定的公钥信息验证已签名消息的签名。
语法
BOOL CryptVerifyMessageSignatureWithKey(
[in] PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
[in] PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,
[in] const BYTE *pbSignedBlob,
[in] DWORD cbSignedBlob,
[out] BYTE *pbDecoded,
[in, out] DWORD *pcbDecoded
);
参数
[in] pVerifyPara
指向包含验证参数 的CRYPT_KEY_VERIFY_MESSAGE_PARA 结构的指针。
[in] pPublicKeyInfo
指向 CERT_PUBLIC_KEY_INFO 结构的指针,该结构包含用于验证已签名消息的公钥。 如果 为 NULL,则不会验证签名。
[in] pbSignedBlob
指向包含已签名消息的缓冲区的指针。
[in] cbSignedBlob
已签名消息缓冲区的大小(以字节为单位)。
[out] pbDecoded
指向用于接收解码消息的缓冲区的指针。
如果不需要解码的消息进行其他处理或为内存分配设置消息大小,则此参数可以为 NULL 。 有关详细信息,请参阅 检索长度未知的数据。
[in, out] pcbDecoded
指向 DWORD 值的指针,该值指定 pbDecoded 缓冲区的大小(以字节为单位)。 函数返回时,此 DWORD 包含解码消息的大小(以字节为单位)。 如果此参数为 NULL,则不会返回解码的消息。
注意 处理返回的数据时,应用程序必须使用返回的数据的实际大小。 实际大小可以略小于输入时指定的缓冲区的大小。 (输入时,缓冲区大小通常指定得足够大,以确保缓冲区中容纳可能的最大输出数据。) 输出时,此参数指向的变量将更新为反映复制到缓冲区的数据的实际大小。
返回值
如果函数成功,该函数将返回非零值。
如果函数失败,则返回零。 有关扩展的错误信息,请调用 GetLastError。
下表显示了 GetLastError 函数最常返回的错误代码。
返回代码 | 说明 |
---|---|
|
如果 pbDecoded 参数指定的缓冲区不够大,无法容纳返回的数据,则函数将设置ERROR_MORE_DATA代码,并将所需的缓冲区大小(以字节为单位)存储在 由ERROR_MORE_DATA decoded 指向的变量中。 |
|
无效的消息和证书编码类型。 目前仅支持PKCS_7_ASN_ENCODING和X509_ASN_ENCODING_TYPE。 *pVerifyPara 中的 cbSize 无效。 |
|
不是签名的加密消息。 |
|
该消息没有任何签名者或指定 dwSignerIndex 的签名者。 |
|
消息已使用未知或不受支持的算法进行哈希处理和签名。 |
|
消息的签名未验证。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |