CMSG_CONTENT_ENCRYPT_INFO 構造体 (wincrypt.h)
CMSG_CONTENT_ENCRYPT_INFO構造体には、コンテンツ暗号化キーの暗号化とエクスポートに使用されるPFN_CMSG_GEN_CONTENT_ENCRYPT_KEY、PFN_CMSG_EXPORT_KEY_TRANS、PFN_CMSG_EXPORT_KEY_AGREE、およびPFN_CMSG_EXPORT_MAIL_LIST関数の間で共有される情報が含まれています。これは、Cryptography API: Next Generation (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 構造体。 コールバック関数が、CRYPT_ALGORITHM_IDENTIFIER構造体の pszObjId メンバーまたは Parameters メンバーを更新する場合は、dwFlags メンバーに適切な値を設定します。 pfnAlloc メンバーと pfnFree メンバーを使用して、これらの値のメモリを割り当てて解放する必要があります。
pvEncryptionAuxInfo
暗号化アルゴリズムに依存する構造体へのポインター。 次の表に、考えられるアルゴリズム ID と、対応するメンバーコンテンツを示します。
値 | 説明 |
---|---|
|
|
|
他のすべての暗号化アルゴリズムでは、この値は NULL です。
cRecipients
メッセージの受信者の数を示す 値です。
rgCmsRecipients
メッセージ受信者情報を含む CMSG_RECIPIENT_ENCODE_INFO 構造体の配列へのポインター。
pfnAlloc
更新されたメンバーのメモリを割り当てるために使用されるインストール可能な関数へのポインター。
pfnFree
pfnAlloc によって割り当てられたメモリを解放するために使用されるインストール可能な関数へのポインター。
dwEncryptFlags
CryptMsgCalculateEncodedLength 関数または CryptMsgOpenToEncode 関数で確定長ストリーミングに必要な一貫した最大長を取得するために、エンコードされた出力にゼロを埋め込む必要があるかどうかを示す値。
CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG (0x00000001)
DUMMYUNIONNAME
DUMMYUNIONNAME.hContentEncryptKey
fCNG メンバーが FALSE の場合のコンテンツ暗号化キーのハンドル。
DUMMYUNIONNAME.hCNGContentEncryptKey
fCNG メンバーが TRUE の場合のコンテンツ暗号化キーのハンドル。
dwFlags
hCryptProv メンバーまたは ContentEncryptionAlgorithm メンバーのメモリを解放する必要があるかどうかを示す 値。
値 | 説明 |
---|---|
|
コールバック関数が ContentEncryptionAlgorithm メンバーによって参照されるCRYPT_ALGORITHM_IDENTIFIER構造体の Parameters メンバーを更新する場合に設定します。 |
|
コールバック関数が ContentEncryptionAlgorithm メンバーによって参照されるCRYPT_ALGORITHM_IDENTIFIER構造体の pszObjId メンバーを更新する場合に設定します。 |
|
コールバック関数が解放する必要がある hCryptProv メンバーを取得する場合に設定します。 |
fCNG
Cryptography API: Next Generation (CNG) プロバイダーを使用してコンテンツ暗号化キーを生成するかどうかを示す 値。
fCNG メンバーが FALSE の場合、hContentEncryptKey メンバーを更新するためにCMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC関数が呼び出されます。
fCNG メンバーが TRUE の場合、hCNGContentEncryptKey メンバーと cbContentEncryptKey メンバーを更新するためにCMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC関数が呼び出され、pbCNGContentEncryptKeyObject メンバーと pbContentEncryptKey メンバーが pfnAlloc メンバーによって割り当てられる必要があります。 CryptMsgClose 関数を呼び出して、コンテンツ暗号化キーを解放して解放します。
pbCNGContentEncryptKeyObject
CNG コンテンツ暗号化キーを含むバッファーへのポインター。
pbContentEncryptKey
CAPI1 コンテンツ暗号化キーを含むバッファーへのポインター。
cbContentEncryptKey
fCNG メンバーの値に応じて、pbCNGContentEncryptKeyObject または pbContentEncryptKey メンバーのサイズ (バイト単位)。
解説
dwMsgType パラメーターを CMSG_ENVELOPED に設定して呼び出すと、CryptMsgOpenToEncode 関数は、CMSG_ENVELOPED_ENCODE_INFO構造体からCMSG_CONTENT_ENCRYPT_INFO構造体を初期化します。
CMSG_ENVELOPED_ENCODE_INFO構造体が rgCmsRecipients メンバーではなく rgpRecipients メンバーを使用する場合、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 (デスクトップ アプリのみ) |
Header | wincrypt.h |