BCryptGenRandom, fonction (bcrypt.h)

La fonction BCryptGenRandom génère un nombre aléatoire.

Syntaxe

NTSTATUS BCryptGenRandom(
  [in, out] BCRYPT_ALG_HANDLE hAlgorithm,
  [in, out] PUCHAR            pbBuffer,
  [in]      ULONG             cbBuffer,
  [in]      ULONG             dwFlags
);

Paramètres

[in, out] hAlgorithm

Handle d’un fournisseur d’algorithme créé à l’aide de la fonction BCryptOpenAlgorithmProvider . L’algorithme spécifié lors de la création du fournisseur doit prendre en charge l’interface du générateur de nombres aléatoires.

[in, out] pbBuffer

Adresse d’une mémoire tampon qui reçoit le nombre aléatoire. La taille de cette mémoire tampon est spécifiée par le paramètre cbBuffer .

[in] cbBuffer

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

[in] dwFlags

Ensemble d’indicateurs qui modifient le comportement de cette fonction. Ce paramètre peut être égal à zéro ou à la valeur suivante.

Valeur Signification
BCRYPT_RNG_USE_ENTROPY_IN_BUFFER
0x00000001
Cette fonction utilise le nombre dans la mémoire tampon pbBuffer comme entropie supplémentaire pour le nombre aléatoire. Si cet indicateur n’est pas spécifié, cette fonction utilise un nombre aléatoire pour l’entropie.

Windows 8 et versions ultérieures : cet indicateur est ignoré dans Windows 8 et versions ultérieures.

BCRYPT_USE_SYSTEM_PREFERRED_RNG
0x00000002
Utilisez l’algorithme de générateur de nombres aléatoires préféré par le système. Le paramètre hAlgorithm doit avoir la valeur NULL.

BCRYPT_USE_SYSTEM_PREFERRED_RNG est uniquement pris en charge dans PASSIVE_LEVELIRQL. Pour plus d'informations, consultez la section Notes.

Windows Vista : Cet indicateur n’est pas pris en charge sans SP2.

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_INVALID_HANDLE
Le handle dans le paramètre hAlgorithm n’est pas valide.
STATUS_INVALID_PARAMETER
Un ou plusieurs paramètres ne sont pas valides.

Remarques

Le fournisseur de nombres aléatoires par défaut implémente un algorithme pour générer des nombres aléatoires conformes à la norme NIST SP800-90, en particulier la partie CTR_DRBG de cette norme.

Windows Vista : Avant Windows Vista avec Service Pack 1 (SP1), le fournisseur de nombres aléatoires par défaut implémente un algorithme pour générer des nombres aléatoires conformes à la norme FIPS 186-2.

Selon les modes de processeur pris en charge par un fournisseur, BCryptGenRandom 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 BCryptGenRandom doivent faire référence à la mémoire non paginée (ou verrouillée). Windows Vista : Le fournisseur Microsoft ne prend pas en charge l’appel à DISPATCH_LEVEL.

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 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 ou Cng.lib(Pour le mode noyau)
DLL Bcrypt.dll