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 | 否 | |
KDF_SUPPPRIVINFO | 否 | |
PBKDF2 | KDF_HASH_ALGORITHM | 是 |
KDF_SALT | 是 | |
KDF_ITERATION_COUNT | 否 | |
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
DWORD 的指標,接收複製到 pbDerivedKey 參數所指向之緩衝區的位元組數目。
[in] dwFlags
修改函式行為的旗標。 下列值可以與 Microsoft 軟體金鑰儲存提供者搭配使用。
值 | 意義 |
---|---|
|
指定目標演算法是 AES,因此索引鍵必須加倍展開。 此旗標只適用於CAPI_KDF演算法。 |
|
要求金鑰服務提供者 (KSP) 不會顯示任何使用者介面。 如果提供者必須顯示要運作的UI,呼叫會失敗,KSP應該將 NTE_SILENT_CONTEXT 錯誤碼設定為最後一個錯誤。 |
傳回值
傳回狀態代碼,指出函式的成功或失敗。
可能的傳回碼包括但不限於下列專案。
傳回碼 | Description |
---|---|
|
函式成功。 |
|
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 |
程式庫 | Ncrypt.lib |
Dll | Ncrypt.dll |