Win32 API 日本語リファレンス
ホーム › Security.Cryptography › PFN_CMSG_EXPORT_KEY_AGREE

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
);

パラメーター

フィールド型説明
pContentEncryptInfoCMSG_CONTENT_ENCRYPT_INFO*コンテンツ暗号化キーを格納している CMSG_CONTENT_ENCRYPT_INFO 構造体へのポインター。
pKeyAgreeEncodeInfoCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO*コンテンツ暗号化キーの暗号化に使用するキーを指定する CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 構造体へのポインター。
pKeyAgreeEncryptInfoCMSG_KEY_AGREE_ENCRYPT_INFO*暗号化されたコンテンツ暗号化キーを格納する CMSG_KEY_AGREE_ENCRYPT_INFO 構造体へのポインター。
dwFlagsDWORDこの値は使用されません。ゼロを設定してください。
pvReservedvoid*このパラメーターは予約されており、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 メンバーは、常に同じ最大エンコード長になるようにゼロで埋める必要があります。

メモ 生成される一時的な Y 公開キーの長さは、先頭のゼロビットの数によって異なる場合があります。

このコールバック関数を配置するには、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 の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)