CMSG_ENVELOPED_ENCODE_INFO結構 (wincrypt.h)

CMSG_ENVELOPED_ENCODE_INFO結構包含編碼信封訊息所需的資訊。 如果dwMsgType參數CMSG_ENVELOPED,則會傳遞給CryptMsgOpenToEncode

語法

typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCERT_INFO                  *rgpRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  DWORD                       cCertEncoded;
  PCERT_BLOB                  rgCertEncoded;
  DWORD                       cCrlEncoded;
  PCRL_BLOB                   rgCrlEncoded;
  DWORD                       cAttrCertEncoded;
  PCERT_BLOB                  rgAttrCertEncoded;
  DWORD                       cUnprotectedAttr;
  PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;

成員

cbSize

這個 結構的大小,以位元組為單位。

hCryptProv

未使用這個成員,而且應該設定為 Null

Windows Server 2003 和 Windows XP: 指定密碼 編譯服務提供者 的控制碼, (CSP) 用來執行內容加密、收件者金鑰加密和匯出。 不會使用 hCryptProv 的私密金鑰。

此成員的資料類型為 HCRYPTPROV

除非在 hCryptProv中傳入特定密碼編譯提供者有強的理由,否則請傳遞零以使用預設 RSA 或 DSS 提供者。

ContentEncryptionAlgorithm

CRYPT_ALGORITHM_IDENTIFIER結構,其中包含簽章演算法類型和編碼形式中任何相關聯的其他參數。

結構的 pszObjId成員會指定用來加密訊息內容的演算法。

下列加密演算法需要結構Parameters成員中的編碼八個位元組初始化向量 (IV) 。 如需詳細資訊,請參閱 CryptSetKeyParam

意義
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

如果Parameters成員的cbData成員為零,則會使用CryptGenRandom產生抽象語法標記法1 (ASN.1) 編碼的 OCTET STRING。

szOID_RSA_RC2CBC (CALG_RC2) 演算法需要ParameterspbData成員成為編碼CRYPT_RC2_CBC_PARAMETERS結構。 如果Parameters成員的cbData成員為零,則會為dwVersion成員產生 ASN.1 編碼CRYPT_RC2_CBC_PARAMETERS預設值為 40。 這會將預設金鑰長度設定為 40 位。 您可以使用 pvEncryptionAuxInfo 覆寫此預設金鑰長度,指向包含所需金鑰長度 的CMSG_RC2_AUX_INFO 結構。

注意 在解密時,如果 IV 存在,CryptSetKeyParam 會在解密開始之前,先使用 IV 呼叫 CryptSetKeyParam
 

pvEncryptionAuxInfo

根據加密演算法,結構指標。

意義
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 或相容

CMSG_SP3_COMPATIBLE_AUX_INFO

所有其他加密演算法
NULL

cRecipients

rgpRecipientsrgCmsRecipients陣列中的元素數目。

rgpRecipients

CERT_INFO結構的指標陣列,每個結構都包含收件者的憑證簽發者、SerialNumber 和 SubjectPublicKeyInfo。 此陣列只能用於其簽發者和序號所識別的收件者。 如果 rgpRecipients 不是 NullrgCmsRecipients 必須是 Null

rgCmsRecipients

選擇性。 包含收件者資訊的 CMSG_RECIPIENT_ENCODE_INFO 結構的指標陣列。 如果 rgCmsRecipients 不是 Null則 rgpRecipients 必須為 Null。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

cCertEncoded

選擇性。 DWORD值,指出rgCertEncoded陣列中的編碼憑證數目。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

rgCertEncoded

選擇性。 CERT_BLOB結構的陣列。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

cCrlEncoded

選擇性。 DWORD值,指出rgCRLEncoded陣列中 (CRL) 編碼憑證撤銷清單的數目。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

rgCrlEncoded

選擇性。 CRL_BLOB結構的陣列。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

cAttrCertEncoded

選擇性。 DWORD值,指出rgAttrCertEncoded陣列中編碼的憑證屬性數目。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

rgAttrCertEncoded

選擇性。 CRYPT_ATTRIBUTE結構的陣列。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義為參考這個成員。

cUnprotectedAttr

選擇性。 DWORD值,指出rgUnprotectedAttr陣列中未受保護的屬性數目。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

rgUnprotectedAttr

選擇性。 CRYPT_ATTRIBUTE結構的陣列。 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS必須定義才能參考此欄位。

規格需求

   
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
標頭 wincrypt.h

另請參閱

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER