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 结构。
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 |