CryptMsgCountersignEncoded 函数 (wincrypt.h)

CryptMsgCountersignEncoded 函数对现有 PKCS #7 消息签名进行反签名。 它创建的 pbCountersignatureBYTE 缓冲区是 PKCS #7 编码的 SignerInfo,可用作 PKCS #9 signed-data 或 signed-and-enveloped-data 消息的未经身份验证的 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 计数器签名 属性。

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

[in, out] pcbCountersignature

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

返回值

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

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

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

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

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

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

要求

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

另请参阅

CryptMsgCountersign

CryptMsgVerifyCountersignatureEncoded

低级别消息函数

简化的消息函数