CryptMsgCountersignEncoded 函数 (wincrypt.h)

CryptMsgCountersignEncoded 函数对现有 PKCS #7 消息签名进行反签名。 它创建的 pbCountersignatureBYTE 缓冲区是 PKCS #7 编码的 SignerInfo,可用作 PKCS #9 签名数据或签名和信封数据消息的未经身份验证 Countersignature 属性。

语法

BOOL CryptMsgCountersignEncoded(
  [in]      DWORD                    dwEncodingType,
  [in]      PBYTE                    pbSignerInfo,
  [in]      DWORD                    cbSignerInfo,
  [in]      DWORD                    cCountersigners,
  [in]      PCMSG_SIGNER_ENCODE_INFO rgCountersigners,
  [out]     PBYTE                    pbCountersignature,
  [in, out] PDWORD                   pcbCountersignature
);

参数

[in] dwEncodingType

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

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING。

[in] pbSignerInfo

指向要反签名的编码 SignerInfo 的指针。

[in] cbSignerInfo

编码的 SignerInfo 数据的计数(以字节为单位)。

[in] cCountersigners

rgCountersigners 数组中的计数器数。

[in] rgCountersigners

计数器 CMSG_SIGNER_ENCODE_INFO 结构的数组。

[out] pbCountersignature

指向缓冲区的指针,用于接收编码的 PKCS #9 countersignature 属性。

在输入时,此参数可以 NULL,以便为内存分配设置此信息的大小。 有关详细信息,请参阅 检索未知长度的数据。

[in, out] pcbCountersignature

指向一个变量的指针,该变量指定 pbCountersignature 参数指向的缓冲区的大小(以字节为单位)。 函数返回时, 参数指向的变量包含缓冲区中存储的字节数。

返回值

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

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

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

返回代码 描述
CRYPT_E_OID_FORMAT
对象标识符的格式不正确。
E_INVALIDARG
一个或多个参数无效。
E_OUTOFMEMORY
内存不足。
 

传播的错误可能从以下函数之一返回:

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

要求

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

另请参阅

CryptMsgCountersign

CryptMsgVerifyCountersignatureEncoded

低级别消息函数

简化的消息函数