Share via


CMSG_CONTENT_ENCRYPT_INFO結構 (wincrypt.h)

CMSG_CONTENT_ENCRYPT_INFO結構包含PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY、PFN_CMSG_EXPORT_KEY_TRANSPFN_CMSG_EXPORT_KEY_AGREE和PFN_CMSG_EXPORT_MAIL_LIST函式之間共用的資訊,可用來加密和匯出內容加密金鑰,其可使用密碼編譯 API 安裝:新一代 ( CNG) 物件識別碼 (OID) 。

語法

typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  PFN_CMSG_ALLOC              pfnAlloc;
  PFN_CMSG_FREE               pfnFree;
  DWORD                       dwEncryptFlags;
  union {
    HCRYPTKEY         hContentEncryptKey;
    BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
  } DUMMYUNIONNAME;
  DWORD                       dwFlags;
  BOOL                        fCNG;
  BYTE                        *pbCNGContentEncryptKeyObject;
  BYTE                        *pbContentEncryptKey;
  DWORD                       cbContentEncryptKey;
} CMSG_CONTENT_ENCRYPT_INFO, *PCMSG_CONTENT_ENCRYPT_INFO;

成員

cbSize

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

hCryptProv

密碼 編譯服務提供者 的控制碼 (CSP) 。 如果 fCNG 成員為 FALSE ,且 輸入時 hCryptProv 成員為 Null ,則回呼函式必須更新 hCryptProv 。 如果取得必須釋放的提供者,則必須在dwFlags成員中設定CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG

ContentEncryptionAlgorithm

CRYPT_ALGORITHM_IDENTIFIER結構,指定用來加密金鑰的演算法。 如果回呼函式更新pszObjId成員或CRYPT_ALGORITHM_IDENTIFIER結構的Parameters成員,請在dwFlags成員中設定適當的值。 您必須使用 pfnAllocpfnFree 成員來配置和釋放這些值的記憶體。

pvEncryptionAuxInfo

相依于加密演算法之結構的指標。 下表列出可能的演算法識別碼和對應的成員內容。

意義
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

對於所有其他加密演算法,此值為 Null

cRecipients

值,指定郵件的收件者數目。

rgCmsRecipients

包含郵件收件者資訊的 CMSG_RECIPIENT_ENCODE_INFO 結構的陣列指標。

pfnAlloc

可安裝函式的指標,用來為更新的成員配置記憶體。

pfnFree

可安裝函式的指標,用來釋放 pfnAlloc配置的記憶體。

dwEncryptFlags

值,指出編碼輸出是否應該以零填補,以取得 CryptMsgCalculateEncodedLengthCryptMsgOpenToEncode 函式中明確長度資料流程所需的一致最大長度。

CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)

DUMMYUNIONNAME

DUMMYUNIONNAME.hContentEncryptKey

當 fCNG成員為FALSE時,內容加密金鑰的控制碼。

DUMMYUNIONNAME.hCNGContentEncryptKey

當 fCNG成員為TRUE時,內容加密金鑰的控制碼。

dwFlags

值,指出是否必須釋放 hCryptProvContentEncryptionAlgorithm 成員的記憶體。

意義
CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
0x00000001
如果回呼函式更新ContentEncryptionAlgorithm成員所參考之CRYPT_ALGORITHM_IDENTIFIER結構的Parameters成員,請設定 。
CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
0x00000002
如果回呼函式更新ContentEncryptionAlgorithm成員所參考之CRYPT_ALGORITHM_IDENTIFIER結構的pszObjId成員,請設定 。
CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
0x00008000
如果回呼函式取得必須釋放的 hCryptProv 成員,請設定 。

fCNG

值,指出是否要使用 密碼編譯 API:新一代 (CNG) 提供者來產生內容加密金鑰。

如果 fCNG 成員為 FALSE,則會呼叫 CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC 函式來更新 hContentEncryptKey 成員。

如果 fCNG 成員為 TRUE,則會呼叫 CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC 函式來更新 hCNGContentEncryptKeycbContentEncryptKey 成員,而 pbCNGContentEncryptKeyObjectpbContentEncryptKey 成員必須由 pfnAlloc 成員配置。 呼叫 CryptMsgClose 函式以釋出內容加密金鑰。

pbCNGContentEncryptKeyObject

緩衝區的指標,其中包含 CNG 內容加密金鑰。

pbContentEncryptKey

緩衝區的指標,其中包含 CAPI1 內容加密金鑰。

cbContentEncryptKey

pbCNGContentEncryptKeyObjectpbContentEncryptKey成員的大小,以位元組為單位,視fCNG成員的值而定。

備註

當呼叫 dwMsgType 參數設定為 CMSG_ENVELOPED時, CryptMsgOpenToEncode 函式會從 CMSG_ENVELOPED_ENCODE_INFO 結構初始化 CMSG_CONTENT_ENCRYPT_INFO 結構。

如果CMSG_ENVELOPED_ENCODE_INFO結構使用rgpRecipients成員,而不是rgCmsRecipients成員,CryptMsgOpenToEncode函式會將rgpRecipients成員結構轉換為 CMSG_CONTENT_ENCRYPT_INFO 結構的rgCmsRecipients成員CMSG_RECIPIENT_ENCODE_INFO結構。

fCNG 成員為 FALSE時,可以在 CMSG_CONTENT_ENCRYPT_INFO 結構中變更下列成員:

hContentEncryptKey
hCryptProv
ContentEncryptionAlgorithm成員所參考之CRYPT_ALGORITHM_IDENTIFIER結構的pszObjId成員
ContentEncryptionAlgorithm成員所參考之CRYPT_ALGORITHM_IDENTIFIER結構的Parameters成員
dwFlags

fCNG 成員為 TRUE時,可以在 CMSG_CONTENT_ENCRYPT_INFO 結構中變更下列成員:

hCNGContentEncryptKey
pbCNGContentEncryptKeyObject
pbContentEncryptKey
cbContentEncryptKey
ContentEncryptionAlgorithm成員所參考之CRYPT_ALGORITHM_IDENTIFIER結構的pszObjId成員
ContentEncryptionAlgorithm成員所參考之CRYPT_ALGORITHM_IDENTIFIER結構的Parameters成員
dwFlags

下列成員是唯讀的:

cbSize
pvEncryptionAuxInfo
cRecipients
rgCmsRecipients
pfnAlloc
pfnFree
dwEncryptFlags

規格需求

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

另請參閱

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY