Share via


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 結構。

注意 解密訊息時,如果訊息具有 初始化向量 參數,密碼編譯訊息函式會在解密之前先呼叫 CryptSetKeyParam初始化向量
 

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

另請參閱

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage