次の方法で共有


PFN_CMSG_EXPORT_KEY_AGREE コールバック関数 (wincrypt.h)

PFN_CMSG_EXPORT_KEY_AGREE コールバック関数は、エンベロープ メッセージのキー アグリーメント受信者のコンテンツ暗号化キーを暗号化およびエクスポートします。 PFN_CMSG_EXPORT_KEY_AGREE は、CryptoAPIオブジェクト識別子 (OID) を使用してインストールできます。 この関数は、dwMsgType パラメーターが CMSG_ENVELOPEDに設定されている場合に、CryptMsgOpenToEncode 関数によって呼び出されます。

構文

PFN_CMSG_EXPORT_KEY_AGREE PfnCmsgExportKeyAgree;

BOOL PfnCmsgExportKeyAgree(
  [in]      PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,
  [in]      PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,
  [in, out] PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,
  [in]      DWORD dwFlags,
            void *pvReserved
)
{...}

パラメーター

[in] pContentEncryptInfo

コンテンツ暗号化キーを含む CMSG_CONTENT_ENCRYPT_INFO 構造体へのポインター。

[in] pKeyAgreeEncodeInfo

コンテンツ暗号化キーの暗号化に使用するキーを指定する CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 構造体へのポインター。

[in, out] pKeyAgreeEncryptInfo

暗号化されたコンテンツ暗号化キーを含む CMSG_KEY_AGREE_ENCRYPT_INFO 構造体へのポインター。

[in] dwFlags

この値は使用されません。 0 に設定します。

pvReserved

このパラメーターは予約されており、NULL である必要があります。

戻り値

関数が成功した場合、戻り値は 0 以外 (true)。

関数が失敗した場合、戻り値は 0 (FALSE)。 拡張エラー情報については、GetLastError呼び出します。

備考

各受信者キーについて、PFN_CMSG_EXPORT_KEY_AGREE 関数は、pKeyAgreeEncryptInfo パラメーターによって指される CMSG_KEY_AGREE_ENCRYPT_INFO 構造体の rgpKeyAgreeKeyEncryptInfo メンバーによって参照される CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 構造体の EncryptedKey メンバーを更新する必要があります。 この関数は、pfnAlloc を使用し、pContentEncryptInfo パラメーターが指す CMSG_CONTENT_ENCRYPT_INFO 構造体の pfnFree メンバーを して、更新されるすべての値のメモリを管理する必要があります。

入力時に、〘dwEncryptFlagspContentEncryptInfo メンバーが指す CMSG_CONTENT_ENCRYPT_INFO 構造体のメンバーが CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAGに設定され、が指す CMSG_KEY_AGREE_ENCRYPT_INFO 構造体の OriginatorPublicKeyInfo メンバーによって参照される CERT_PUBLIC_KEY_INFO 構造体のエフェメラル PublicKey メンバー常に同じ最大エンコード長を取得するには、pKeyAgreeEncryptInfo パラメーターにゼロを埋め込む必要があります。

生成されるエフェメラル Y 公開キーの長さは、先頭の 0 ビットの数によって異なる場合があります。

 

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"

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wincrypt.h