CryptGetMessageSignerCount 函数 (wincrypt.h)

CryptGetMessageSignerCount 函数返回已签名消息的签名者数。

注意

此函数可能会返回重复签名者的计数,因此可能不足以避免攻击。 建议使用 SignerInfo 中的 sid (SignerIdentifier) 字段来标识消息中的重复登录者。

语法

LONG CryptGetMessageSignerCount(
  [in] DWORD      dwMsgEncodingType,
  [in] const BYTE *pbSignedBlob,
  [in] DWORD      cbSignedBlob
);

参数

[in] dwMsgEncodingType

指定使用的编码类型。 始终可以通过将证书和 消息编码类型 与按位 OR 操作结合使用来指定它们,如以下示例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

当前定义的编码类型为:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbSignedBlob

指向包含已签名消息的缓冲区的指针。

[in] cbSignedBlob

已签名消息的大小(以字节为单位)。

返回值

返回已签名消息的签名者数,如果没有签名者,则返回 0;如果错误,则返回 1 (-1) 。

有关扩展的错误信息,请调用 GetLastError。 最常返回以下错误代码。

返回代码 说明
E_INVALIDARG
消息编码类型无效。 目前仅支持PKCS_7_ASN_ENCODING。
 

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

要求

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

另请参阅

CryptVerifyMessageSignature

简化的消息函数