BCryptCreateHash, fonction (bcrypt.h)

La fonction BCryptCreateHash est appelée pour créer un objet MAC (Code de hachage ou code d’authentification de message ).

Syntaxe

NTSTATUS BCryptCreateHash(
  [in, out]      BCRYPT_ALG_HANDLE  hAlgorithm,
  [out]          BCRYPT_HASH_HANDLE *phHash,
  [out]          PUCHAR             pbHashObject,
  [in, optional] ULONG              cbHashObject,
  [in, optional] PUCHAR             pbSecret,
  [in]           ULONG              cbSecret,
  [in]           ULONG              dwFlags
);

Paramètres

[in, out] hAlgorithm

Handle d’un fournisseur d’algorithme créé à l’aide de la fonction BCryptOpenAlgorithmProvider . L’algorithme qui a été spécifié lors de la création du fournisseur doit prendre en charge l’interface de hachage.

[out] phHash

Pointeur vers une valeur BCRYPT_HASH_HANDLE qui reçoit un handle qui représente l’objet de hachage ou MAC. Ce handle est utilisé dans les fonctions de hachage ou MAC suivantes, telles que la fonction BCryptHashData . Lorsque vous avez terminé d’utiliser ce handle, relâchez-le en le transmettant à la fonction BCryptDestroyHash .

[out] pbHashObject

Pointeur vers une mémoire tampon qui reçoit l’objet de hachage ou MAC. Le paramètre cbHashObject contient la taille de cette mémoire tampon. La taille requise de cette mémoire tampon peut être obtenue en appelant la fonction BCryptGetProperty pour obtenir la propriété BCRYPT_OBJECT_LENGTH . Cela fournit la taille de l’objet hachage ou MAC pour l’algorithme spécifié.

Cette mémoire ne peut être libérée qu’après la destruction du handle pointé par le paramètre phHash .

Si la valeur de ce paramètre est NULL et que la valeur du paramètre cbHashObject est égale à zéro, la mémoire de l’objet de hachage est allouée et libérée par cette fonction. Windows 7 : Cette fonctionnalité de gestion de la mémoire est disponible à partir de Windows 7.

[in, optional] cbHashObject

Taille, en octets, de la mémoire tampon pbHashObject .

Si la valeur de ce paramètre est zéro et que la valeur du paramètre pbHashObject est NULL, la mémoire de l’objet clé est allouée et libérée par cette fonction. Windows 7 : Cette fonctionnalité de gestion de la mémoire est disponible à partir de Windows 7.

[in, optional] pbSecret

Pointeur vers une mémoire tampon qui contient la clé à utiliser pour le hachage ou le MAC. Le paramètre cbSecret contient la taille de cette mémoire tampon. Cette clé s’applique uniquement aux algorithmes de hachage ouverts par la fonction BCryptOpenAlgorithmProvider à l’aide de l’indicateur BCRYPT_ALG_HANDLE_HMAC_FLAG . Sinon, définissez ce paramètre sur NULL.

[in] cbSecret

Taille, en octets, de la mémoire tampon pbSecret . Si aucune clé n’est utilisée, définissez ce paramètre sur zéro.

[in] dwFlags

Indicateurs qui modifient le comportement de la fonction. Il peut s’agir de zéro ou de la valeur suivante.

Valeur Signification
BCRYPT_HASH_REUSABLE_FLAG
Crée un objet de hachage réutilisable. L’objet peut être utilisé pour une nouvelle opération de hachage immédiatement après l’appel de BCryptFinishHash. Pour plus d’informations, consultez Création d’un hachage avec CNG.

Windows Server 2008 R2, Windows 7, Windows Server 2008 et Windows Vista : Cet indicateur n’est pas pris en charge.

Valeur retournée

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

Les codes de retour possibles incluent, sans s’y limiter, les éléments suivants.

Code de retour Description
STATUS_SUCCESS
La fonction a réussi.
STATUS_BUFFER_TOO_SMALL
La taille de l’objet de hachage spécifié par le paramètre cbHashObject n’est pas suffisamment grande pour contenir l’objet de hachage.
STATUS_INVALID_HANDLE
Le handle d’algorithme dans le paramètre hAlgorithm n’est pas valide.
STATUS_INVALID_PARAMETER
Un ou plusieurs paramètres ne sont pas valides.
STATUS_NOT_SUPPORTED
Le fournisseur d’algorithme spécifié par le paramètre hAlgorithm ne prend pas en charge l’interface de hachage.

Remarques

Selon les modes de processeur pris en charge par un fournisseur, BCryptCreateHash peut être appelé à partir du mode utilisateur ou du mode noyau. Les appelants en mode noyau peuvent s’exécuter à PASSIVE_LEVELIRQL ou DISPATCH_LEVEL IRQL. Si le niveau IRQL actuel est DISPATCH_LEVEL, le handle fourni dans le paramètre hAlgorithm doit avoir été ouvert à l’aide de l’indicateur BCRYPT_PROV_DISPATCH , et tous les pointeurs passés à la fonction BCryptCreateHash doivent faire référence à la mémoire non paginée (ou verrouillée).

Pour appeler cette fonction en mode noyau, utilisez Cng.lib, qui fait partie du Kit de développement de pilotes (DDK). Pour plus d’informations, consultez WDK et Outils de développement. 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 Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête bcrypt.h
Bibliothèque Bcrypt.lib
DLL Bcrypt.dll

Voir aussi

BCryptDestroyHash