NCryptKeyDerivation 関数 (ncrypt.h)
NCryptKeyDerivation 関数は、指定されたキー派生関数を使用して、別のキーからキーを作成します。 関数は、バイト配列内のキーを返します。
構文
SECURITY_STATUS NCryptKeyDerivation(
[in] NCRYPT_KEY_HANDLE hKey,
[in] NCryptBufferDesc *pParameterList,
[out] PUCHAR pbDerivedKey,
[in] DWORD cbDerivedKey,
[out] DWORD *pcbResult,
[in] ULONG dwFlags
);
パラメーター
[in] hKey
キー派生関数 (KDF) キーのハンドル。
[in] pParameterList
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 | no | |
KDF_SUPPPRIVINFO | no | |
PBKDF2 | KDF_HASH_ALGORITHM | はい |
KDF_SALT | はい | |
KDF_ITERATION_COUNT | no | |
CAPI_KDF | KDF_HASH_ALGORITHM | はい |
次のジェネリック パラメーターを使用できます。
- KDF_GENERIC_PARAMETER
カウンター モードの SP800-108 HMAC:
- KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT
SP800-56A
- KDF_GENERIC_PARAMETER = KDF_ALGORITHMID ||KDF_PARTYUINFO ||KDF_PARTYVINFO {||KDF_SUPPPUBINFO } {||KDF_SUPPPRIVINFO }
PBKDF2
- KDF_GENERIC_PARAMETER = KDF_SALT
- KDF_ITERATION_COUNT – 既定値は 10000 です
CAPI_KDF
- KDF_GENERIC_PARAMETER = 使用されていません
[out] pbDerivedKey
キーを受け取るバッファーのアドレス。 cbDerivedKey パラメーターには、キー バッファーのサイズ (バイト単位) が含まれています。
[in] cbDerivedKey
pbDerivedKey パラメーターが指すバッファーのサイズ (バイト単位)。
[out] pcbResult
pbDerivedKey パラメーターによって指されるバッファーにコピーされたバイト数を受け取る DWORD へのポインター。
[in] dwFlags
関数の動作を変更するフラグ。 Microsoft ソフトウェア キー ストレージ プロバイダーでは、次の値を使用できます。
戻り値
関数の成功または失敗を示す状態コードを返します。
可能なリターン コードには、次のものが含まれますが、これらに限定されません。
リターン コード | 説明 |
---|---|
|
関数は成功しました。 |
|
hProvider または hKey ハンドルが無効です。 |
|
pwszDerivedKeyAlg パラメーターと pParameterList パラメーターを NULL にすることはできません。 |
|
キーを作成するのに十分なメモリが不足していました。 |
|
この関数は、キー ストレージ プロバイダーではサポートされていません。 |
注釈
NCryptKeyDerivation を呼び出す前に、NCryptCreatePersistedKey 関数で次のアルゴリズム識別子を使用できます。
- BCRYPT_CAPI_KDF_ALGORITHM
- BCRYPT_SP800108_CTR_HMAC_ALGORITHM
- BCRYPT_SP80056A_CONCAT_ALGORITHM
- BCRYPT_PBKDF2_ALGORITHM
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | ncrypt.h |
Library | Ncrypt.lib |
[DLL] | Ncrypt.dll |