PFN_CMSG_EXPORT_KEY_AGREE回调函数 (wincrypt.h)
PFN_CMSG_EXPORT_KEY_AGREE回调函数加密和导出信封邮件的密钥协议收件人的内容加密密钥。 可以使用 CryptoAPI对象标识符 ( OID) 安装PFN_CMSG_EXPORT_KEY_AGREE。 当 CryptMsgOpenToEncode 函数的 dwMsgType 参数设置为 CMSG_ENVELOPED 时,该函数将调用此函数。
语法
PFN_CMSG_EXPORT_KEY_AGREE PfnCmsgExportKeyAgree;
BOOL PfnCmsgExportKeyAgree(
[in] PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
[in] PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,
[in, out] PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,
[in] DWORD dwFlags,
void *pvReserved
)
{...}
参数
[in] pContentEncryptInfo
指向包含内容加密密钥 的 CMSG_CONTENT_ENCRYPT_INFO 结构的指针。
[in] pKeyAgreeEncodeInfo
指向 CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 结构的指针,该结构指定用于加密内容加密密钥的密钥。
[in, out] pKeyAgreeEncryptInfo
指向包含加密内容加密密钥 的 CMSG_KEY_AGREE_ENCRYPT_INFO 结构的指针。
[in] dwFlags
不使用此值。 将其设置为零。
pvReserved
此参数是保留的,必须为 NULL。
返回值
如果函数成功,则返回值为非零 (TRUE) 。
如果函数失败,则返回值为零 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError。
注解
对于每个收件人密钥,PFN_CMSG_EXPORT_KEY_AGREE函数必须更新由pKeyAgreeEncryptInfo 参数指向的 CMSG_KEY_AGREE_ENCRYPT_INFO 结构的 rgpKeyAgreeKeyEncryptInfo 成员引用的 CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 结构的 EncryptedKey 成员。 此函数必须使用 pContentEncryptInfo 参数指向的 CMSG_CONTENT_ENCRYPT_INFO 结构的 pfnAlloc 和 pfnFree 成员来管理它更新的任何值的内存。
如果在输入时将 pContentEncryptInfo 成员指向的 CMSG_CONTENT_ENCRYPT_INFO 结构的 dwEncryptFlags 成员设置为 CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG,则 pKeyAgreeEncryptInfo 所指向CMSG_KEY_AGREE_ENCRYPT_INFO结构的 OriginatorPublicKeyInfo 成员引用的CERT_PUBLIC_KEY_INFO结构的临时 PublicKey 成员参数应填充零,以便始终获得相同的最大编码长度。
可以使用 OID 支持函数 部署此回调函数。 Wincrypt.h 为此定义以下常量。
必须为 CAPI1 密钥和加密 API 定义不同的回调函数:下一代 (CNG) 密钥。 这两个函数具有相同的签名,但使用不同的 OID。 调用哪个函数取决于 pContentEncryptInfo 参数指向的 CMSG_CONTENT_ENCRYPT_INFO 结构的 fCNG 成员的值。 下表显示了回调函数与 fCNG 成员的值之间的关系。
fCNG 值 | 常数 | 定义 |
---|---|---|
FALSE | CMSG_OID_EXPORT_KEY_AGREE_FUNC或CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC | “CryptMsgDllExportKeyAgree” |
TRUE | CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC | “CryptMsgDllCNGExportKeyAgree” |
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈