CRYPT_ENCRYPT_MESSAGE_PARA 结构 (wincrypt.h)

CRYPT_ENCRYPT_MESSAGE_PARA结构包含用于加密消息的信息。

语法

typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  HCRYPTPROV_LEGACY          hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
  void                       *pvEncryptionAuxInfo;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;

成员

cbSize

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

dwMsgEncodingType

使用的编码类型。 始终可以通过将证书和 消息编码类型 与按位 OR 操作结合使用来指定它们,如以下示例所示:

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

当前定义的编码类型为:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

hCryptProv

此成员未使用,应设置为 NULL

Windows Server 2003 和 Windows XP: 加密服务提供程序的句柄 (CSP) 用于加密。 hCryptProv 标识的 CSP 用于执行内容加密、收件人密钥加密和收件人密钥导出。 不使用其私钥。

除非有充分的理由在 hCryptProv 中传入特定的加密提供程序,否则请传递零以使用默认 RSA 或 DSS 提供程序。

此成员的数据类型为 HCRYPTPROV

ContentEncryptionAlgorithm

一个 CRYPT_ALGORITHM_IDENTIFIER 结构,包含要使用的加密算法 (OID) 对象标识符hCryptProv 指定的 CSP 必须支持此加密算法。

szOID_OIWSEC_desCBC (CALG_DES) 和szOID_RSA_DES_EDE3_CBC (CALG_3DES) 加密算法需要此结构的 Parameters 成员包含编码的八字节初始化向量 (IV) 。 如果 Parameters 成员的 cbData 成员为零,则使用 CryptGenRandom 生成包含 IV 的抽象语法表示法 One (ASN.1) 编码的 OCTET STRING。 有关 KP_IV 参数的详细信息,请参阅 CryptSetKeyParam

szOID_NIST_AES128_CBC (BCRYPT_AES_ALGORITHM、128 位) 、szOID_NIST_AES192_CBC (BCRYPT_AES_ALGORITHM、192 位) 和szOID_NIST_AES256_CBC (BCRYPT_AES_ALGORITHM 256 位) 加密算法要求此结构的 Parameters 成员包含编码的 16 字节初始化向量 (IV) 。 如果 Parameters 成员的 cbData 成员为零,则会生成包含 IV 的 抽象语法表示法 1 (ASN.1) 编码的 OCTET STRING。

szOID_RSA_RC2CBC (CALG_RC2) 算法要求此结构的 Parameters 成员的 pbData 成员成为CRYPT_RC2_CBC_PARAMETERS结构。 如果 Parameters 成员的 cbData 成员为零,则会生成包含 IV 的 ASN.1 编码CRYPT_RC2_CBC_PARAMETERS结构作为 pbData 成员。 此生成的 pbData 使用对应于 40 位密钥长度的默认 dwVersion 。 若要替代默认的 40 位密钥长度,可将 pvEncryptionAuxInfo 设置为指向包含密钥位长度 的CMSG_RC2_AUX_INFO 结构。

注意解密消息时,如果消息具有初始化向量参数,则加密消息函数在解密前使用初始化向量调用 CryptSetKeyParam
 

pvEncryptionAuxInfo

指向用于 RC2 加密 的CMSG_RC2_AUX_INFO 结构的指针,或用于 SP3 兼容加密 的CMSG_SP3_COMPATIBLE_AUX_INFO 结构。 对于 RC2 或 SP3 兼容的加密,此成员必须设置为 NULL

如果 ContentEncryptionAlgorithm 成员包含szOID_RSA_RC4,则此成员指向指定要包含的盐字节的CMSG_RC4_AUX_INFO结构。

dwFlags

通常设置为零。 但是,如果编码输出是外部加密消息(如CMSG_SIGNED消息)的CMSG_ENVELOPED 内部内容 ,则必须设置CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG。 如果未设置,内容将编码为CMSG_DATA 的内部内容类型

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG可以设置为在加密之前封装 OCTET STRING 中的非数据 内部内容

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG可以设置为按其密钥标识符(而不是颁发者和序列号)来标识收件人。

dwInnerContentType

通常设置为零。 如果要加密的输入是另一个加密消息(如CMSG_SIGNED)的编码输出,则必须将 dwInnerContentType 成员设置为设置加密消息类型。

要求

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

另请参阅

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage