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 的抽象語法表示法一 (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 成員,才能包含編碼的十六位元節初始化向量 (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,此成員會指向指定要包含之 salt 位元組數目的CMSG_RC4_AUX_INFO結構。
dwFlags
通常設定為零。 不過,如果編碼的輸出必須是外部密碼編譯訊息CMSG_ENVELOPED 內部內容 ,例如CMSG_SIGNED訊息,則必須設定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 |