次の方法で共有


CMSG_CONTENT_ENCRYPT_INFO 構造体 (wincrypt.h)

CMSG_CONTENT_ENCRYPT_INFO構造体には、コンテンツ暗号化キーの暗号化とエクスポートに使用されるPFN_CMSG_GEN_CONTENT_ENCRYPT_KEYPFN_CMSG_EXPORT_KEY_TRANSPFN_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 と、対応するメンバーコンテンツを示します。

説明
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

他のすべての暗号化アルゴリズムでは、この値は 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 メンバーのメモリを解放する必要があるかどうかを示す 値。

説明
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

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

関連項目

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY