wincrypt.h) (CMSG_KEY_AGREE_ENCRYPT_INFO 结构

CMSG_KEY_AGREE_ENCRYPT_INFO结构包含适用于信封邮件的所有密钥协议收件人的加密信息。 PFN_CMSG_EXPORT_KEY_AGREE 函数更新此结构。

语法

typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO {
  DWORD                            cbSize;
  DWORD                            dwRecipientIndex;
  CRYPT_ALGORITHM_IDENTIFIER       KeyEncryptionAlgorithm;
  CRYPT_DATA_BLOB                  UserKeyingMaterial;
  DWORD                            dwOriginatorChoice;
  union {
    CERT_ID              OriginatorCertId;
    CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
  } DUMMYUNIONNAME;
  DWORD                            cKeyAgreeKeyEncryptInfo;
  PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo;
  DWORD                            dwFlags;
} CMSG_KEY_AGREE_ENCRYPT_INFO, *PCMSG_KEY_AGREE_ENCRYPT_INFO;

成员

cbSize

此结构的大小(以字节为单位)。

dwRecipientIndex

一个 值,该值指定由 PFN_CMSG_EXPORT_KEY_AGREE 函数的 pContentEncryptInfo 参数指定的收件人列表中的收件人的序号。

KeyEncryptionAlgorithm

一个CRYPT_ALGORITHM_IDENTIFIER结构,指定用于加密内容加密密钥的算法。 CryptMsgOpenToEncode 函数使用 CRYPT_ALGORITHM_IDENTIFIER 结构的 pszObjId 成员来获取用于导出密钥的函数的地址。 可以使用加密 API 安装函数:下一代 (CNG) 对象标识符 (OID) 。

UserKeyingMaterial

包含发送方提供的用户密钥材料 CRYPT_DATA_BLOB 结构,以确保每次同一方生成成对密钥时生成不同的密钥。

dwOriginatorChoice

指示要使用的密钥标识符的 DWORD 。 此成员可以是以下值之一。

含义
CMSG_KEY_AGREE_ORIGINATOR_CERT
OriginatorCertId
CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY
OriginatorPublicKeyInfo

DUMMYUNIONNAME

DUMMYUNIONNAME.OriginatorCertId

标识消息发起者的公钥 的CERT_ID 结构。

DUMMYUNIONNAME.OriginatorPublicKeyInfo

包含消息发起者的公钥的CERT_PUBLIC_KEY_INFO结构。

cKeyAgreeKeyEncryptInfo

一个 值,该值指定 rgpKeyAgreeKeyEncryptInfo 参数中的收件人数。

rgpKeyAgreeKeyEncryptInfo

包含每个收件人的加密密钥 的CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 结构的数组。

dwFlags

一个 值,该值指定哪些成员已更新,并且必须使用 CryptMsgOpenToEncode 函数释放其内存分配。

含义
CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG
0x00000002
UserKeyingMaterial 成员已更新。
CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG
0x00000020
已更新由 KeyEncryptionAlgorithm 成员引用的 CRYPT_ALGORITHM_IDENTIFIER 结构的 pszObjId 成员。
CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG
0x00000001
已更新由 KeyEncryptionAlgorithm 成员引用的 CRYPT_ALGORITHM_IDENTIFIER 结构的 Parameters 成员。
CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG
0x00000004
已更新 OriginatorPublicKeyInfo 成员引用的 CERT_PUBLIC_KEY_INFO 结构的 Algorithm.pszObjId 成员。
CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG
0x00000010
已更新 OriginatorPublicKeyInfo 成员引用的 CERT_PUBLIC_KEY_INFO 结构的 PublicKey 成员。
CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG
0x00000008
已更新 OriginatorPublicKeyInfo 成员引用的 CERT_PUBLIC_KEY_INFO 结构的 Algorithm.Parameters 成员。

注解

当调用并将 dwMsgType 参数设置为 CMSG_ENVELOPED 时, CryptMsgOpenToEncode 函数将从 CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 结构初始化 CMSG_KEY_AGREE_ENCRYPT_INFO 结构。 CryptMsgOpenToEncode 函数调用 PFN_CMSG_EXPORT_KEY_AGREE 函数以更新CMSG_KEY_AGREE_ENCRYPT_INFO结构。 如果找不到回调函数, CryptMsgOpenToEncode 函数会用 CMSG_CONTENT_ENCRYPT_INFO 结构中的默认密钥信息填充此结构。

回调函数可以更新 CMSG_KEY_AGREE_ENCRYPT_INFO 结构的以下成员:

UserKeyingMaterial
KeyEncryptionAlgorithm.pszObjId
KeyEncryptionAlgorithm.Parameters
dwOriginatorChoice
OriginatorCertId
OriginatorPublicKeyInfo
dwFlags

其他成员是只读的。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 wincrypt.h