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。
值 | 意義 |
---|---|
|
szOID_OIWSEC_desCBC |
|
szOID_RSA_DES_EDE3_CBC |
如果Parameters成員的cbData成員為零,則會使用CryptGenRandom產生抽象語法標記法1 (ASN.1) 編碼的 OCTET STRING。
szOID_RSA_RC2CBC (CALG_RC2) 演算法需要Parameters的pbData成員成為編碼CRYPT_RC2_CBC_PARAMETERS結構。 如果Parameters成員的cbData成員為零,則會為dwVersion成員產生 ASN.1 編碼CRYPT_RC2_CBC_PARAMETERS預設值為 40。 這會將預設金鑰長度設定為 40 位。 您可以使用 pvEncryptionAuxInfo 覆寫此預設金鑰長度,指向包含所需金鑰長度 的CMSG_RC2_AUX_INFO 結構。
pvEncryptionAuxInfo
根據加密演算法,結構指標。
值 | 意義 |
---|---|
|
|
|
|
|
|
|
NULL |
cRecipients
rgpRecipients或rgCmsRecipients陣列中的元素數目。
rgpRecipients
CERT_INFO結構的指標陣列,每個結構都包含收件者的憑證簽發者、SerialNumber 和 SubjectPublicKeyInfo。 此陣列只能用於其簽發者和序號所識別的收件者。 如果 rgpRecipients 不是 Null, rgCmsRecipients 必須是 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 |