PFN_CMSG_EXPORT_KEY_AGREE
コールバックシグネチャ
BOOL PFN_CMSG_EXPORT_KEY_AGREE(
CMSG_CONTENT_ENCRYPT_INFO* pContentEncryptInfo,
CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO* pKeyAgreeEncodeInfo,
CMSG_KEY_AGREE_ENCRYPT_INFO* pKeyAgreeEncryptInfo,
DWORD dwFlags,
void* pvReserved
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| pContentEncryptInfo | CMSG_CONTENT_ENCRYPT_INFO* | コンテンツ暗号化キーを格納している CMSG_CONTENT_ENCRYPT_INFO 構造体へのポインター。 |
| pKeyAgreeEncodeInfo | CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO* | コンテンツ暗号化キーの暗号化に使用するキーを指定する CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 構造体へのポインター。 |
| pKeyAgreeEncryptInfo | CMSG_KEY_AGREE_ENCRYPT_INFO* | 暗号化されたコンテンツ暗号化キーを格納する CMSG_KEY_AGREE_ENCRYPT_INFO 構造体へのポインター。 |
| dwFlags | DWORD | この値は使用されません。ゼロを設定してください。 |
| pvReserved | void* | このパラメーターは予約されており、NULL を指定する必要があります。 |
公式ドキュメント
PFN_CMSG_EXPORT_KEY_AGREE コールバック関数は、エンベロープメッセージの鍵共有受信者に対して、コンテンツ暗号化キーを暗号化してエクスポートします。PFN_CMSG_EXPORT_KEY_AGREE は、CryptoAPI のオブジェクト識別子 (OID) を使用してインストールできます。この関数は、dwMsgType パラメーターに CMSG_ENVELOPED が設定されているときに、CryptMsgOpenToEncode 関数から呼び出されます。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) です。
関数が失敗した場合、戻り値は 0 (FALSE) です。拡張エラー情報を取得するには、GetLastError を呼び出します。
解説(Remarks)
受信者のキーごとに、PFN_CMSG_EXPORT_KEY_AGREE 関数は、pKeyAgreeEncryptInfo パラメーターが指す CMSG_KEY_AGREE_ENCRYPT_INFO 構造体の rgpKeyAgreeKeyEncryptInfo メンバーが参照する CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 構造体の EncryptedKey メンバーを更新する必要があります。この関数は、更新する値のメモリを管理するために、pContentEncryptInfo パラメーターが指す CMSG_CONTENT_ENCRYPT_INFO 構造体の pfnAlloc メンバーおよび pfnFree メンバーを使用する必要があります。
呼び出し時に、pContentEncryptInfo メンバーが指す CMSG_CONTENT_ENCRYPT_INFO 構造体の dwEncryptFlags メンバーに CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG が設定されている場合、pKeyAgreeEncryptInfo パラメーターが指す CMSG_KEY_AGREE_ENCRYPT_INFO 構造体の OriginatorPublicKeyInfo メンバーが参照する CERT_PUBLIC_KEY_INFO 構造体の一時的な PublicKey メンバーは、常に同じ最大エンコード長になるようにゼロで埋める必要があります。
このコールバック関数を配置するには、OID サポート関数を使用できます。Wincrypt.h では、この目的のために次の定数が定義されています。
CAPI1 キー用と Cryptography API: Next Generation (CNG) キー用に、それぞれ異なるコールバック関数を定義する必要があります。どちらの関数もシグネチャは同じですが、使用する OID が異なります。どちらの関数が呼び出されるかは、pContentEncryptInfo パラメーターが指す CMSG_CONTENT_ENCRYPT_INFO 構造体の fCNG メンバーの値によって決まります。次の表は、コールバック関数と fCNG メンバーの値との対応を示しています。
| fCNG の値 | 定数 | 定義 |
|---|---|---|
| FALSE | CMSG_OID_EXPORT_KEY_AGREE_FUNC または CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC | "CryptMsgDllExportKeyAgree" |
| TRUE | CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC | "CryptMsgDllCNGExportKeyAgree" |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)