CryptMsgVerifyCountersignatureEncoded 函数 (wincrypt.h)

CryptMsgVerifyCountersignatureEncoded 函数根据 PKCS #7) 定义的 SignerInfo 结构 (验证反签名

语法

BOOL CryptMsgVerifyCountersignatureEncoded(
  [in] HCRYPTPROV_LEGACY hCryptProv,
  [in] DWORD             dwEncodingType,
  [in] PBYTE             pbSignerInfo,
  [in] DWORD             cbSignerInfo,
  [in] PBYTE             pbSignerInfoCountersignature,
  [in] DWORD             cbSignerInfoCountersignature,
  [in] PCERT_INFO        pciCountersigner
);

参数

[in] hCryptProv

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

Windows Server 2003 和 Windows XP:NULL加密提供程序的句柄,用于对 pbSignerInfo 的 encryptedDigest 字段进行哈希处理。此参数的数据类型为 HCRYPTPROV

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

[in] dwEncodingType

指定使用的编码类型。 目前,仅使用X509_ASN_ENCODING和PKCS_7_ASN_ENCODING:但是,将来可能会添加其他编码类型。 对于当前任一编码类型,请使用:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。

[in] pbSignerInfo

指向编码 BLOB 的指针,该 BLOB 包含要反签名的消息内容的签名者。

[in] cbSignerInfo

内容签名者的编码 BLOB 的计数(以字节为单位)。

[in] pbSignerInfoCountersignature

指向包含计数器签名信息的编码 BLOB 的指针。

[in] cbSignerInfoCountersignature

消息的反签名的编码 BLOB 的计数(以字节为单位)。

[in] pciCountersigner

指向 CERT_INFO 的指针,其中包含计数器的颁发者和序列号。 有关详细信息,请参阅“备注”。

返回值

如果函数成功,则返回值为非零 (TRUE) 。

如果函数失败,则返回值为零, (FALSE) 。 有关扩展的错误信息,请调用 GetLastError

下表列出了 GetLastError 函数最常返回的错误代码。

返回代码 说明
CRYPT_E_AUTH_ATTR_MISSING
该消息不包含预期的经过身份验证的属性。
CRYPT_E_HASH_VALUE
哈希值不正确。
CRYPT_E_UNEXPECTED_ENCODING
消息未按预期进行编码。
CRYPT_E_UNKNOWN_ALGO
加密算法未知。
E_INVALIDARG
一个或多个参数无效。
E_OUTOFMEMORY
内存不足。
 

可能会返回来自以下函数的传播错误。

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

注解

使用 PKCS #7 SIGNERINFO 结构完成反签名验证。 签名必须包含 pbSignerInfo 的 encryptedDigest 字段的加密哈希。

计数器签名的颁发者和序列号必须与 pbSignerInfoCountersignature 中的 countersigner 信息匹配。 从 pciCountersigner 引用的唯一字段是 SerialNumber、Issuer 和 SubjectPublicKeyInfo。 SubjectPublicKeyInfo 用于访问公钥,然后用于加密 pciCountersigner 中的哈希,以便将其与 pbSignerInfo 中的哈希进行比较。

示例

有关使用此函数的示例,请参阅 示例 C 程序:对 CounterSigned 消息进行编码和解码

要求

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

另请参阅

CryptMsgCountersign

CryptMsgCountersignEncoded

低级别消息函数

简化的消息函数