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

BCryptSecretAgreementFn

コールバック

シグネチャ

NTSTATUS BCryptSecretAgreementFn(
    BCRYPT_KEY_HANDLE hPrivKey,
    BCRYPT_KEY_HANDLE hPubKey,
    BCRYPT_SECRET_HANDLE* phAgreedSecret,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hPrivKeyBCRYPT_KEY_HANDLEシークレット アグリーメント値の作成に使用する秘密鍵のハンドルです。この鍵と hPubKey の鍵は、同じ CNG 暗号アルゴリズム プロバイダーのものである必要があります。
hPubKeyBCRYPT_KEY_HANDLEシークレット アグリーメント値の作成に使用する公開鍵のハンドルです。この鍵と hPrivKey の鍵は、同じ CNG 暗号アルゴリズム プロバイダーのものである必要があります。
phAgreedSecretBCRYPT_SECRET_HANDLE*シークレット アグリーメント値を表すハンドルを受け取る BCRYPT_SECRET_HANDLE へのポインターです。このハンドルは、不要になった時点で BCryptDestroySecret 関数に渡して解放する必要があります。
dwFlagsDWORDこの関数の動作を変更するフラグのセットです。この関数に対して定義されているフラグはありません。

公式ドキュメント

BCryptSecretAgreement 関数は、秘密鍵と公開鍵からシークレット アグリーメント値を作成します。

戻り値

関数が成功したか失敗したかを示すステータス コードを返します。

返される可能性のあるコードには、次のものが含まれます (これらに限定されません)。

戻り値 説明
STATUS_SUCCESS
関数は成功しました。
STATUS_INVALID_HANDLE
hPrivKey または hPubKey パラメーターの鍵ハンドルが無効です。
STATUS_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
STATUS_NOT_SUPPORTED
hPrivKey パラメーターの鍵ハンドルが Diffie-Hellman 鍵ではありません。

解説(Remarks)

サポートされているアルゴリズム プロバイダーを使用する場合、BCryptSecretAgreement はユーザー モードとカーネル モードのどちらからでも呼び出すことができます。カーネル モードの呼び出し元は、PASSIVE_LEVEL IRQL と DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hPrivKey および hPubKey パラメーターに指定するハンドルは、BCRYPT_PROV_DISPATCH フラグを使用して開かれたプロバイダーから返されたアルゴリズム ハンドルに由来している必要があり、BCryptSecretAgreement 関数に渡すポインターはページング不可の (またはロックされた) メモリを参照している必要があります。

この関数をカーネル モードで呼び出すには、Driver Development Kit (DDK) に含まれる Cng.lib を使用します。Windows Server 2008 および Windows Vista: この関数をカーネル モードで呼び出すには、Ksecdd.lib を使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)