Funzione BCryptKeyDerivation (bcrypt.h)
La funzione BCryptKeyDerivation deriva una chiave senza richiedere un contratto segreto. È simile alla funzionalità di BCryptDeriveKey , ma non richiede un valore BCRYPT_SECRET_HANDLE come input.
Sintassi
NTSTATUS BCryptKeyDerivation(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] BCryptBufferDesc *pParameterList,
[out] PUCHAR pbDerivedKey,
[in] ULONG cbDerivedKey,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parametri
[in] hKey
Handle della chiave di input.
[in, optional] pParameterList
Puntatore a una struttura BCryptBufferDesc contenente i parametri KDF. Questo parametro è facoltativo e può essere NULL se non è necessario. I parametri possono essere specifici di una funzione di derivazione chiave (KDF) o generica. La tabella seguente illustra i parametri obbligatori e facoltativi per KDF specifici implementati dal provider Microsoft Primitive.
KDF | Parametro | Obbligatoria |
---|---|---|
SP800-108 HMAC in modalità contatore | KDF_LABEL | Sì |
KDF_CONTEXT | sì | |
KDF_HASH_ALGORITHM | sì | |
SP800-56A | KDF_ALGORITHMID | sì |
KDF_PARTYUINFO | sì | |
KDF_PARTYVINFO | sì | |
KDF_HASH_ALGORITHM | sì | |
KDF_SUPPPUBINFO | no | |
KDF_SUPPPRIVINFO | no | |
PBKDF2 | KDF_HASH_ALGORITHM | Sì |
KDF_SALT | sì | |
KDF_ITERATION_COUNT | no | |
CAPI_KDF | KDF_HASH_ALGORITHM | Sì |
È possibile usare il parametro generico seguente:
- KDF_GENERIC_PARAMETER
SP800-108 HMAC in modalità contatore:
- 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: il valore predefinito è 10000
CAPI_KDF
- KDF_GENERIC_PARAMETER = Non usato
[out] pbDerivedKey
Indirizzo di un buffer che riceve la chiave. Il parametro cbDerivedKey contiene le dimensioni di questo buffer.
[in] cbDerivedKey
Dimensioni, in byte, del buffer a cui punta il parametro pbDerivedKey .
[out] pcbResult
Puntatore a una variabile che riceve il numero di byte copiati nel buffer a cui punta il parametro pbDerivedKey .
[in] dwFlags
Flag che modificano il comportamento di questa funzione. Il valore seguente può essere usato con il provider Microsoft Primitive.
Valore | Significato |
---|---|
|
Specifica che l'algoritmo di destinazione è AES e che la chiave deve quindi essere espansa doppia. Questo flag è valido solo con l'algoritmo CAPI_KDF. |
Valore restituito
Restituisce un codice di stato che indica l'esito positivo o negativo della funzione.
Commenti
È possibile usare gli identificatori di algoritmo seguenti nella funzione BCryptOpenAlgorithmProvider prima di chiamare BCryptKeyDerivation:
- BCRYPT_CAPI_KDF_ALGORITHM
- BCRYPT_SP800108_CTR_HMAC_ALGORITHM
- BCRYPT_SP80056A_CONCAT_ALGORITHM
- BCRYPT_PBKDF2_ALGORITHM
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | bcrypt.h |
Libreria | Bcrypt.lib |
DLL | Bcrypt.dll |