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

NCryptKeyDerivationFn

コールバック

シグネチャ

HRESULT NCryptKeyDerivationFn(
    NCRYPT_PROV_HANDLE hProvider,
    NCRYPT_KEY_HANDLE hKey,
    BCryptBufferDesc* pParameterList,
    BYTE* pbDerivedKey,
    DWORD cbDerivedKey,
    DWORD* pcbResult,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hProviderNCRYPT_PROV_HANDLE
hKeyNCRYPT_KEY_HANDLEキー導出関数 (KDF) キーのハンドルです。
pParameterListBCryptBufferDesc*

KDF のパラメーターを格納した NCryptBufferDesc 構造体のアドレスです。

パラメーターには、特定のキー導出関数 (KDF) に固有のものと、汎用のものがあります。次の表は、Microsoft ソフトウェアキーストレージプロバイダーが実装する個々の KDF について、必須のパラメーターと省略可能なパラメーターを示しています。

KDF パラメーター 必須 既定値
カウンターモードの SP800-108 HMAC KDF_LABEL はい
KDF_CONTEXT はい
KDF_HASH_ALGORITHM はい
SP800-56A KDF_ALGORITHMID はい
KDF_PARTYUINFO はい
KDF_PARTYVINFO はい
KDF_HASH_ALGORITHM はい
KDF_SUPPPUBINFO いいえ ""
KDF_SUPPPRIVINFO いいえ ""
PBKDF2 KDF_HASH_ALGORITHM はい
KDF_SALT はい
KDF_ITERATION_COUNT いいえ 10000
CAPI_KDF KDF_HASH_ALGORITHM はい
TLS1_1_PRF KDF_TLS_PRF_LABEL はい
KDF_TLS_PRF_SEED はい
TLS1_2_PRF KDF_TLS_PRF_LABEL はい
KDF_TLS_PRF_SEED はい
KDF_HASH_ALGORITHM はい
HKDF KDF_HKDF_INFO いいえ ""

一部のアルゴリズムでは、複数のパラメーターを指定する代わりに KDF_GENERIC_PARAMETER を使用します。これは、次のように KDF 固有のパラメーターに対応付けられます。

カウンターモードの SP800-108 HMAC:

SP800-56A:

PBKDF2:

pbDerivedKeyBYTE*キーを受け取るバッファーのアドレスです。cbDerivedKey パラメーターには、キーバッファーのサイズ (バイト単位) を指定します。
cbDerivedKeyDWORDpbDerivedKey パラメーターが指すバッファーのサイズ (バイト単位) です。
pcbResultDWORD*pbDerivedKey パラメーターが指すバッファーにコピーされたバイト数を受け取る DWORD へのポインターです。
dwFlagsDWORD

この関数の動作を変更するフラグのセットです。0 を指定するか、次の値の 1 つ以上を組み合わせて指定できます。有効なフラグのセットは、キーストレージプロバイダーごとに異なります。

値 意味
BCRYPT_CAPI_AES_FLAG 対象のアルゴリズムが AES であり、そのためキーを二重に展開する必要があることを指定します。このフラグは CAPI_KDF アルゴリズムでのみ有効です。
NCRYPT_SILENT_FLAG キーストレージプロバイダー (KSP) がユーザーインターフェイスを表示しないよう要求します。プロバイダーが動作するために UI を表示しなければならない場合、呼び出しは失敗し、KSP は最後のエラーとして NTE_SILENT_CONTEXT エラーコードを設定します。

公式ドキュメント

NCryptKeyDerivation 関数は、すべてのパラメーターを明示的に指定したうえで、キー導出関数 (KDF) を呼び出してキーを導出します。

NCryptDeriveKey と機能的には似ていますが、KDF アルゴリズムを直接呼び出すため、入力として NCRYPT_SECRET_HANDLE 値を必要としません。

戻り値

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

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

戻り値 説明
ERROR_SUCCESS 関数は成功しました。
NTE_INVALID_HANDLE hProvider ハンドルまたは hKey ハンドルが無効です。
NTE_INVALID_PARAMETER pParameterList パラメーターに NULL を指定することはできません。または、他のパラメーターが無効です。
NTE_NO_MEMORY メモリの割り当てに失敗しました。
NTE_NOT_SUPPORTED この関数は、このキーストレージプロバイダーではサポートされていません。

解説(Remarks)

NCryptKeyDerivation を呼び出す前に、NCryptCreatePersistedKey 関数で次のアルゴリズム識別子を使用できます。

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