Partager via


BCryptKeyDerivation, fonction (bcrypt.h)

La fonction BCryptKeyDerivation dérive une clé sans nécessiter d’accord secret. Ses fonctionnalités sont similaires à celles de BCryptDeriveKey , mais ne nécessitent pas de valeur BCRYPT_SECRET_HANDLE comme entrée.

Syntaxe

NTSTATUS BCryptKeyDerivation(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] BCryptBufferDesc  *pParameterList,
  [out]          PUCHAR            pbDerivedKey,
  [in]           ULONG             cbDerivedKey,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

Paramètres

[in] hKey

Gérer la clé d’entrée.

[in, optional] pParameterList

Pointeur vers une structure BCryptBufferDesc qui contient les paramètres KDF. Ce paramètre est facultatif et peut être NULL s’il n’est pas nécessaire. Les paramètres peuvent être spécifiques à une fonction de dérivation de clé (KDF) ou génériques. Le tableau suivant présente les paramètres obligatoires et facultatifs pour des KDF spécifiques implémentés par le fournisseur Microsoft Primitive.

KDF Paramètre Obligatoire
SP800-108 HMAC en mode compteur KDF_LABEL Oui
KDF_CONTEXT oui
KDF_HASH_ALGORITHM oui
SP800-56A KDF_ALGORITHMID oui
KDF_PARTYUINFO oui
KDF_PARTYVINFO oui
KDF_HASH_ALGORITHM oui
KDF_SUPPPUBINFO non
KDF_SUPPPRIVINFO non
PBKDF2 KDF_HASH_ALGORITHM oui
KDF_SALT oui
KDF_ITERATION_COUNT non
CAPI_KDF KDF_HASH_ALGORITHM oui
 

Le paramètre générique suivant peut être utilisé :

  • KDF_GENERIC_PARAMETER
Les paramètres génériques sont mappés aux paramètres spécifiques de KDF de la manière suivante :

SP800-108 HMAC en mode compteur :

  • 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 : la valeur par défaut est 10000

CAPI_KDF

  • KDF_GENERIC_PARAMETER = Non utilisé

[out] pbDerivedKey

Adresse d’une mémoire tampon qui reçoit la clé. Le paramètre cbDerivedKey contient la taille de cette mémoire tampon.

[in] cbDerivedKey

Taille, en octets, de la mémoire tampon pointée vers le paramètre pbDerivedKey .

[out] pcbResult

Pointeur vers une variable qui reçoit le nombre d’octets qui ont été copiés dans la mémoire tampon pointée par le paramètre pbDerivedKey .

[in] dwFlags

Indicateurs qui modifient le comportement de cette fonction. La valeur suivante peut être utilisée avec le fournisseur Microsoft Primitive.

Valeur Signification
BCRYPT_CAPI_AES_FLAG
Spécifie que l’algorithme cible est AES et que la clé doit donc être doublement développée. Cet indicateur n’est valide qu’avec l’algorithme CAPI_KDF.

Valeur retournée

Retourne un code status qui indique la réussite ou l’échec de la fonction.

Remarques

Vous pouvez utiliser les identificateurs d’algorithme suivants dans la fonction BCryptOpenAlgorithmProvider avant d’appeler BCryptKeyDerivation :

  • BCRYPT_CAPI_KDF_ALGORITHM
  • BCRYPT_SP800108_CTR_HMAC_ALGORITHM
  • BCRYPT_SP80056A_CONCAT_ALGORITHM
  • BCRYPT_PBKDF2_ALGORITHM
Pour appeler cette fonction en mode noyau, utilisez Cng.lib, qui fait partie du Kit de développement pilote (DDK). Windows Server 2008 et Windows Vista : Pour appeler cette fonction en mode noyau, utilisez Ksecdd.lib.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête bcrypt.h
Bibliothèque Bcrypt.lib
DLL Bcrypt.dll

Voir aussi

BCryptDeriveKey

NCryptKeyDerivation