CMSG_CNG_CONTENT_DECRYPT_INFO 構造体 (wincrypt.h)
CMSG_CNG_CONTENT_DECRYPT_INFO構造体には、Cryptography API: Next Generation (CNG) コンテンツ暗号化キー (CEK) のインポートと暗号化解除のために CryptMsgControl とオブジェクト識別子 (OID) インストール可能な関数の間で渡されるすべての関連情報が含まれています。 CryptMsgControl 関数は、この構造体を使用して次の関数を呼び出します。
構文
typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO {
DWORD cbSize;
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
PFN_CMSG_ALLOC pfnAlloc;
PFN_CMSG_FREE pfnFree;
NCRYPT_KEY_HANDLE hNCryptKey;
BYTE *pbContentEncryptKey;
DWORD cbContentEncryptKey;
BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
BYTE *pbCNGContentEncryptKeyObject;
} CMSG_CNG_CONTENT_DECRYPT_INFO, *PCMSG_CNG_CONTENT_DECRYPT_INFO;
メンバー
cbSize
この構造体のサイズをバイト単位で格納します。
ContentEncryptionAlgorithm
メッセージ の 内容と関連するパラメーターの暗号化に使用されるアルゴリズムを指定するCRYPT_ALGORITHM_IDENTIFIER構造体。
pfnAlloc
更新されたメンバーにメモリを割り当てるために使用されるインストール可能な関数へのポインター。
pfnFree
pfnAlloc によって割り当てられたメモリを解放するために使用されるインストール可能な関数へのポインター。
hNCryptKey
pKeyTransDecryptPara パラメーターまたは PFN_CMSG_CNG_IMPORT_KEY_TRANS 関数の pKeyAgreeDecryptPara パラメーターに含まれる CEK の復号化に使用する CNG 秘密キーへのハンドル。 その構造体には変換された HCRYPTPROV ハンドルが含まれている可能性があるため、コールバック関数では DecryptPara 構造体に含まれているキーではなく、このキーを使用する必要があります。
pbContentEncryptKey
hNCryptKey メンバーを使用して、PFN_CMSG_CNG_IMPORT_KEY_TRANS関数は pKeyTransDecryptPara パラメーターの CEK を復号化してこのメンバーを更新する必要があります。または、PFN_CMSG_CNG_IMPORT_KEY_AGREE関数は pKeyAgreeDecryptPara パラメーターの EncryptedKey を復号化してこのメンバーを更新する必要があります。 このメンバーのメモリは、 pfnAlloc メンバーを使用して割り当てる必要があります。 PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY関数は、これらのバイトをシークレットとして使用して hCNGContentEncryptKey メンバーを生成します。 エラーが発生した場合でも、 pfnFree メンバーを使用して、割り当てられたメモリを解放し、ゼロにする必要があります。
cbContentEncryptKey
PFN_CMSG_CNG_IMPORT_KEY_TRANS関数またはPFN_CMSG_CNG_IMPORT_KEY_AGREE関数は、上記の pbContentEncryptKey メンバーのサイズ (バイト単位) でこのメンバーを更新する必要があります。
hCNGContentEncryptKey
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY関数は、コンテンツの暗号化解除に使用するために生成されたBCRYPT_KEY_HANDLEでこのメンバーを更新する必要があります。 エラーが発生した場合でも、 BCryptDestroyKey 関数を使用してこのハンドルを解放する必要があります。
pbCNGContentEncryptKeyObject
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY関数は、このメンバーを、hCNGContentEncryptKey メンバーに関連付けるために pfnAlloc メンバーによって割り当てられたメモリで更新する必要があります。 エラーが発生した場合でも、 pfnFree メンバーを使用して、割り当てられたメモリを解放し、ゼロにする必要があります。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
Header | wincrypt.h |