CryptMsgSignCTL 函数 (wincrypt.h)
CryptMsgSignCTL 函数创建包含编码 CTL 的已签名消息。
语法
BOOL CryptMsgSignCTL(
[in] DWORD dwMsgEncodingType,
[in] BYTE *pbCtlContent,
[in] DWORD cbCtlContent,
[in] PCMSG_SIGNED_ENCODE_INFO pSignInfo,
[in] DWORD dwFlags,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
参数
[in] dwMsgEncodingType
指定使用的编码类型。 始终可以通过将证书和 消息编码类型 与按位 OR 操作结合使用来指定它们,如以下示例所示:
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
当前定义的编码类型为:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] pbCtlContent
编码 CTL_INFO ,可以是 CTL_CONTEXT 结构的成员,也可以使用 CryptEncodeObject 函数创建。
[in] cbCtlContent
pbCtlContent 指向的内容的大小(以字节为单位)。
[in] pSignInfo
指向 包含CMSG_SIGNER_ENCODE_INFO 结构的数组 的CMSG_SIGNED_ENCODE_INFO 结构的指针。
如果结构的 cbSize 成员设置为结构的大小,并且所有其他成员设置为零,则可以在没有签名者的情况下对消息进行编码。
[in] dwFlags
如果定义了CMS_PKCS7,则可以设置为 CMSG_CMS_ENCAPSULATED_CTL_FLAG,以编码与 CMS 兼容的 V3 SignedData 消息。
[out] pbEncoded
指向要接收编码消息的缓冲区的指针。
此参数可以为 NULL ,以获取此信息的大小,以便进行内存分配。 有关详细信息,请参阅 检索长度未知的数据。
[in, out] pcbEncoded
指向 DWORD 的指针,指定 pbEncoded 缓冲区的大小(以字节为单位)。 函数返回时, DWORD 包含缓冲区中存储或要存储的字节数。
返回值
如果函数成功,则返回值为非零 (TRUE) 。
如果函数失败,则返回值为零, (FALSE) 。 有关扩展的错误信息,请调用 GetLastError。 此函数可以返回从调用 CryptMsgOpenToEncode 和 CryptMsgUpdate 传播的错误。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |