Condividi tramite


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
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
 

È possibile usare il parametro generico seguente:

  • KDF_GENERIC_PARAMETER
I parametri generici eseguono il mapping a parametri specifici di KDF nel modo seguente:

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
BCRYPT_CAPI_AES_FLAG
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
Per chiamare questa funzione in modalità kernel, usare Cng.lib, che fa parte di Driver Development Kit (DDK). Windows Server 2008 e Windows Vista: Per chiamare questa funzione in modalità kernel, usare Ksecdd.lib.

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

Vedi anche

BCryptDeriveKey

NCryptKeyDerivation