.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2014, Theodore Ts'o .\" Copyright (C) 2014,2015 Heinrich Schuchardt .\" Copyright (C) 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of .\" this manual under the conditions for verbatim copying, provided that .\" the entire resulting derived work is distributed under the terms of .\" a permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume. .\" no responsibility for errors or omissions, or for damages resulting. .\" from the use of the information contained herein. The author(s) may. .\" not have taken the same level of care in the production of this. .\" manual, which is licensed free of charge, as they might when working. .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH GETRANDOM 2 "15 septembre 2017" Linux "Manuel du programmeur Linux" .SH NOM getrandom \- obtenir une série d'octets aléatoires .SH SYNOPSIS \fB#include \fP .PP \fBssize_t getrandom(void *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .SH DESCRIPTION L'appel système \fBgetrandom\fP() remplit le tampon vers lequel pointe \fIbuf\fP avec jusqu'à \fIbuflen\fP octets aléatoires. Ces octets peuvent être utilisés pour alimenter des générateurs de nombre aléatoire dans l'espace utilisateur ou à des fins de chiffrement. .PP Par défaut, \fBgetrandom\fP() dessine une entropie à partir d'une source \fIurandom\fP (soit la même source que le périphérique \fI/dev/urandom\fP). Ce comportement peut être modifié avec le paramètre \fIflags\fP. .PP Si la source \fIurandom\fP a été initialisée, les lectures jusqu'à 256 octets renverront toujours autant d'octets que demandé et ne seront pas interrompues par des signaux. Il n'y a pas une telle garantie pour les tampons plus gros. Par exemple, si l'appel est interrompu par un gestionnaire de signal, il peut renvoyer un tampon partiellement rempli ou échouer avec l'erreur \fBEINTR\fP. .PP Si la source \fIurandom\fP n'a pas encore été initialisée, \fBgetrandom\fP() se bloquera, sauf si \fBGRND_NONBLOCK\fP est indiqué dans \fIflags\fP. .PP Le paramètre \fIflags\fP est un masque de bit qui peut contenir aucune ou plusieurs des valeurs suivantes unies (OU logique) ensemble\ : .TP \fBGRND_RANDOM\fP Si ce bit est positionné, les octets aléatoires seront dessinés à partir de la source \fIrandom\fP (soit la même que le périphérique \fI/dev/random\fP) au lieu de la source \fIurandom\fP. La source \fIrandom\fP est limitée par l'entropie qui peut être récupérée à partir du bruit de l'environnement. Si le nombre d'octets disponibles dans la source \fIrandom\fP est inférieur à celui demandé dans \fIbuflen\fP, l'appel ne renvoie que les octets aléatoires disponibles. S'il n'y pas d'octets aléatoires disponibles, le comportement dépend de la présence de \fBGRND_NONBLOCK\fP dans le paramètre \fIflags\fP. .TP \fBGRND_NONBLOCK\fP Par défaut, pendant une lecture depuis la source \fIrandom\fP, \fBgetrandom\fP() se bloque si aucun octet aléatoire n'est disponible, tandis que pendant une lecture à partir de la source \fIurandom\fP, il se bloque si la réserve (pool) d'entropie n'a pas encore été initialisée. Si le paramètre \fBGRND_NONBLOCK\fP est positionné, \fBgetrandom\fP() ne se bloque pas dans ces cas, mais il renvoie immédiatement \fB\-1\fP et il positionne \fIerrno\fP sur \fBEAGAIN\fP. .SH "VALEUR RENVOYÉE" En cas de succès, \fBgetrandom\fP() renvoie le nombre d'octets copiés dans le tampon \fIbuf\fP. Il peut être inférieur au nombre d'octets demandé par \fIbuflen\fP si \fBGRND_RANDOM\fP a été indiqué dans \fIflags\fP et qu'il n'y avait pas assez d'entropie dans la source \fIrandom\fP, ou si l'appel système a été interrompu par un signal. .PP En cas d'erreur, la valeur de retour est \fB\-1\fP, et \fIerrno\fP est défini de façon appropriée. .SH ERREURS .TP \fBEAGAIN\fP L'entropie demandée n'était pas disponible et \fBgetrandom\fP() se serait bloqué si le paramètre \fBGRND_NONBLOCK\fP n'avait pas été positionné. .TP \fBEFAULT\fP L'adresse à laquelle renvoie \fIbuf\fP est en dehors de l'espace d'adressage accessible. .TP \fBEINTR\fP L'appel a été interrompu par un gestionnaire de signal\ ; voir la description sur la manière dont sont gérés les appels \fBread\fP(2) interrompus sur des périphériques «\ lents\ » avec et sans l'attribut \fBSA_RESTART\fP dans la page de manuel de \fBsignal\fP(7). .TP \fBEINVAL\fP Un paramètre non valable a été indiqué dans \fIflags\fP. .TP \fBENOSYS\fP La fonction enveloppe de la glibc pour \fBgetrandom\fP() a déterminé que le noyau sous\-jacent n'implémente pas cet appel système. .SH VERSIONS \fBgetrandom\fP() a été introduit dans la version 3.17 du noyau Linux. La prise en charge dans la glibc a été ajoutée à la version 2.25. .SH CONFORMITÉ Cet appel système est spécifique à Linux. .SH NOTES Pour un aperçu et une comparaison des interfaces utilisables pour produire de l'aléatoire, voir \fBrandom\fP(7). .PP .\" Contrairement à \fI/dev/random\fP et à \fI/dev/urandom\fP, \fBgetrandom\fP() n'implique pas d'utiliser des noms de chemin ou des descripteurs de fichier. Ainsi, \fBgetrandom\fP() peut être utile dans les cas où \fBchroot\fP(2) rend invisibles les noms de chemin \fI/dev\fP, et où une application (comme un démon qui démarre) ferme un descripteur de fichier pour un de ces fichiers ouverts par une bibliothèque. .SS "Nombre maximal d'octets renvoyés" À partir de Linux 3.19, les limites suivantes s'appliquent\ : .IP * 3 Pendant une lecture à partir d'une source \fIurandom\fP, un maximum de 33554431 octets est renvoyé par un appel \fBgetrandom\fP() sur des systèmes où \fIint\fP a une taille de 32 bits. .IP * Lors d'une lecture à partir d'une source \fIrandom\fP, un maximum de 512 octets est renvoyé. .SS "Interruption par un gestionnaire de signal" Lors de la lecture à partir d'une source \fIurandom\fP (\fBGRND_RANDOM\fP n'est pas positionné), \fBgetrandom\fP() se bloquera jusqu'à ce que la réserve (pool) d'entropie soit initialisée (sauf si l'attribut \fBGRND_NONBLOCK\fP a été indiqué). Si une demande est faite pour lire un grand nombre d'octets (plus de 256), \fBgetrandom\fP() se bloquera jusqu'à ce que ces octets soient générés et transférés de la mémoire du noyau vers \fIbuf\fP. Lors d'une lecture à partir d'une source \fIrandom\fP (\fBGRND_RANDOM\fP est positionné), \fBgetrandom\fP() se bloquera jusqu'à ce que des octets aléatoires soient disponibles (sauf si l'attribut \fBGRND_NONBLOCK\fP a été indiqué). .PP Quand un appel \fBgetrandom\fP() se bloque pendant la lecture à partir d'une source \fIurandom\fP du fait d'une interruption par un gestionnaire de signal, le comportement dépend de l'état d'initialisation du tampon d'entropie et de la taille de la requête, \fIbuflen\fP. Si la réserve d'entropie n'est pas encore initialisée, l'appel échoue avec l'erreur \fBEINTR\fP. Si cette réserve d'entropie a été initialisée et si la taille de la requête est importante (\fIbuflen\fP\ >\ 256), soit l'appel réussit, en renvoyant un tampon partiellement rempli, soit il échoue avec l'erreur \fBEINTR\fP. Si la réserve d'entropie a été initialisée et si la taille demandée est petite (\fIbuflen\fP\ <=\ 256), \fBgetrandom\fP() n'échouera pas avec \fBEINTR\fP. Il renverra plutôt tous les octets demandés. .PP Pendant une lecture avec une source \fIrandom\fP, les requêtes bloquantes de n'importe quelle taille peuvent être interrompues par un gestionnaire de signal (l'appel échoue avec l'erreur \fBEINTR\fP). .PP L'utilisation de \fBgetrandom\fP() pour lire de petits tampons (<=\ 256 octets) à partir d'une source \fIurandom\fP est le cas d'utilisation privilégié. .PP Le traitement particulier des petites valeurs de \fIbuflen\fP a été conçu à des fins de compatibilité avec le \fBgetentropy\fP(3) d'OpenBSD, qui est aujourd'hui géré par la glibc. .PP L'utilisateur de \fBgetrandom\fP() \fIdoit\fP toujours vérifier la valeur renvoyée, pour savoir si une erreur s'est produite ou si moins d'octets que le nombre demandé ont été renvoyés. Au cas où \fBGRND_RANDOM\fP n'est pas indiqué et où \fIbuflen\fP est inférieur ou égal à 256, il ne devrait jamais y avoir de renvoi d'un nombre d'octets inférieur à celui demandé, mais un programmeur prudent le vérifiera quand même. .SH BOGUES .\" FIXME patch proposed https://lkml.org/lkml/2014/11/29/16 À partir de Linux 3.19, le bogue suivant existe\ : .IP * 3 Selon la charge du processeur, \fBgetrandom\fP() ne réagit pas aux interruptions avant de lire tous les octets demandés. .SH "VOIR AUSSI" \fBgetentropy\fP(3), \fBrandom\fP(4), \fBurandom\fP(4), \fBrandom\fP(7), \fBsignal\fP(7) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .