Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonction BCryptCreateHash est appelée pour créer un objet MAC ( Code d’authentification de message ou de hachage).
Syntaxe
NTSTATUS BCryptCreateHash(
[in, out] BCRYPT_ALG_HANDLE hAlgorithm,
[out] BCRYPT_HASH_HANDLE *phHash,
[out, optional] PUCHAR pbHashObject,
[in] ULONG cbHashObject,
[in, optional] PUCHAR pbSecret,
[in] ULONG cbSecret,
[in] ULONG dwFlags
);
Paramètres
[in, out] hAlgorithm
Handle d’un fournisseur d’algorithmes qui prend en charge l’interface de hachage ou MAC. Ce handle est obtenu en appelant la fonction BCryptOpenAlgorithmProvider , ou peut être un pseudo-handle d’algorithme CNG.
[out] phHash
Pointeur vers une valeur BCRYPT_HASH_HANDLE qui reçoit un handle qui représente le hachage ou l’objet MAC. Ce handle est utilisé dans les fonctions de hachage ou MAC suivantes, telles que la fonction BCryptHashData . Une fois que vous avez terminé d’utiliser ce handle, relâchez-le en le transmettant à la fonction BCryptDestroyHash .
[out, optional] pbHashObject
Pointeur vers une mémoire tampon qui reçoit l’objet hash 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 à partir du handle d’algorithme. Cela fournit la taille de l’objet de 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 de 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 par cette fonction et libérée par BCryptDestroyHash.
Windows 7 : Cette fonctionnalité de gestion de la mémoire est disponible à partir de Windows 7.
[in] cbHashObject
Taille, en octets, de la mémoire tampon pbHashObject .
Si la valeur de ce paramètre est égale à zéro et que la valeur du paramètre pbHashObject est NULL, la mémoire de l’objet clé est allouée par cette fonction et libérée par BCryptDestroyHash.
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 un MAC. Le paramètre cbSecret contient la taille de cette mémoire tampon. Si elle est utilisée avec un algorithme de hachage, l’algorithme doit avoir été promu en HMAC à l’aide de l’indicateur BCRYPT_ALG_HANDLE_HMAC dans BCryptOpenAlgorithmProvider.
Pour calculer un hachage, 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 de retour
Retourne un code d’état qui indique la réussite ou l’échec de la fonction.
Les codes de retour possibles incluent, mais ne sont pas limités à, les éléments suivants.
| Retourner le code | 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’algorithmes spécifié par le paramètre hAlgorithm ne prend pas en charge l’interface de hachage ou MAC. |
Remarques
Lorsque vous utilisez un fournisseur d’algorithmes pris en charge, BCryptCreateHash peut être appelé en mode utilisateur ou en 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).
L’appelant doit libérer le phHash avec BCryptDestroyHash lorsque l’objet n’est plus utilisé.
Pour appeler cette fonction en mode noyau, utilisez Cng.lib, qui fait partie du Kit de développement de pilotes (DDK).
Windows Server 2008 et Windows Vista : Pour appeler cette fonction en mode noyau, utilisez Ksecdd.lib.
Exigences
| Exigence | Valeur |
|---|---|
| Client minimum requis | Windows Vista [applications de bureau | Applications UWP] |
| Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | Applications UWP] |
| plateforme cible | Windows |
| Header | bcrypt.h |
| Library | Bcrypt.lib |
| DLL | Bcrypt.dll |