Provided by: manpages-ro-dev_4.27.0-1_all bug

NUME

       getrandom - obține o serie de octeți aleatorii

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

SINOPSIS

       #include <sys/random.h>

       ssize_t getrandom(void buf[.buflen], size_t buflen, unsigned int flags);

DESCRIERE

       Apelul  de  sistem  getrandom()  umple memoria tampon indicată de buf cu până la buflen octeți aleatorii.
       Acești octeți pot fi utilizați  pentru  însămânțarea  generatoarelor  de  numere  aleatorii  din  spațiul
       utilizatorului sau în scopuri criptografice.

       În  mod  implicit,  getrandom()  extrage  entropia din sursa urandom (adică aceeași sursă ca dispozitivul
       /dev/urandom). Acest comportament poate fi modificat prin intermediul argumentului flags.

       Dacă sursa urandom a fost inițializată, citirile de până la 256 de octeți vor returna întotdeauna numărul
       de octeți solicitat și nu vor fi  întrerupte  de  semnale.   Nu  se  aplică  astfel  de  garanții  pentru
       dimensiuni  mai  mari  ale  memoriei  tampon.  De  exemplu, dacă apelul este întrerupt de un gestionar de
       semnal, acesta poate returna un tampon parțial umplut sau poate eșua cu eroarea EINTR.

       Dacă sursa urandom nu a fost încă inițializată, atunci getrandom() se va bloca, cu  excepția  cazului  în
       care GRND_NONBLOCK este specificat în flags.

       Argumentul  flags  este  o  mască de biți care poate conține zero sau mai multe dintre următoarele valori
       unite împreună printr-un operator SAU logic:

       GRND_RANDOM
              Dacă acest bit este activat, atunci octeții aleatorii sunt extrași din sursa random (adică aceeași
              sursă ca dispozitivul /dev/random) în locul sursei urandom. Sursa random  este  limitată  pe  baza
              entropiei  care  poate  fi  obținută din zgomotul ambiental. Dacă numărul de octeți disponibili în
              sursa random este mai mic decât cel solicitat în buflen, apelul returnează doar  octeții  aleatori
              disponibili.   Dacă  nu  sunt  disponibili  octeți  aleatorii,  comportamentul depinde de prezența
              GRND_NONBLOCK în argumentul flags.

       GRND_NONBLOCK
              În mod implicit, atunci când citește din sursa random,  getrandom()  se  blochează  dacă  nu  sunt
              disponibili  octeți  aleatori, iar atunci când citește din sursa urandom, se blochează dacă fondul
              de entropie nu  a  fost  încă  inițializat.  Dacă  fanionul  GRND_NONBLOCK  este  activat,  atunci
              getrandom()  nu  se  blochează  în aceste cazuri, ci returnează imediat -1 cu errno configurată la
              EAGAIN.

VALOAREA RETURNATĂ

       În caz de succes, getrandom() returnează numărul de octeți care au fost copiați în  memoria  tampon  buf.
       Acesta  poate  fi  mai  mic  decât  numărul  de  octeți solicitat prin buflen dacă fie GRND_RANDOM a fost
       specificat în flags și entropia a fost insuficientă  în  sursa  random,  fie  apelul  sistemului  a  fost
       întrerupt de un semnal.

       În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

       EAGAIN Entropia   solicitată  nu  a  fost  disponibilă,  iar  getrandom()  s-ar  fi  blocat  dacă  flagul
              GRND_NONBLOCK nu era activat.

       EFAULT Adresa menționată de buf se află în afara spațiului de adrese accesibil.

       EINTR  Apelul a fost întrerupt de un gestionar de semnal; consultați descrierea modului în care apelurile
              read(2) întrerupte pe dispozitive „lente” sunt gestionate cu și fără fanionul SA_RESTART în pagina
              de manual signal(7).

       EINVAL În flags a fost specificat un fanion nevalid.

       ENOSYS Funcția de învăluire a glibc pentru getrandom() a determinat că nucleul subiacent nu implementează
              acest apel de sistem.

STANDARDE

       Linux.

ISTORIC

       Linux 3.17, glibc 2.25.

NOTE

       Pentru o prezentare generală și o comparație a diverselor interfețe care pot fi utilizate pentru a obține
       caracterul aleatoriu, a se vedea random(7).

       tătăSpre deosebire de /dev/random și /dev/urandom, getrandom() nu implică utilizarea numelor de rută  sau
       a  descriptorilor  de  fișiere.   Astfel,  getrandom()  poate  fi util în cazurile în care chroot(2) face
       invizibile numele de rută /dev și în care o aplicație (de exemplu, un demon în timpul  lansării)  închide
       un descriptor de fișier pentru unul dintre aceste fișiere care a fost deschis de o bibliotecă.

   Numărul maxim de octeți returnați
       Începând cu Linux 3.19 se aplică următoarele limite:

       •  La  citirea  din  sursa  urandom,  un  singur  apel la getrandom() returnează maximum 32Mi-1 octeți pe
          sistemele în care int are o dimensiune de 32 de biți.

       •  La citirea din sursa random, se returnează un maxim de 512 octeți.

   Întreruperea de către un gestionar de semnal
       La citirea din sursa urandom (GRND_RANDOM nu este activat), getrandom() se va bloca până când  fondul  de
       entropie a fost inițializat (cu excepția cazului în care a fost specificat fanionul GRND_NONBLOCK).  Dacă
       se solicită citirea unui număr mare de octeți (mai mult de 256), getrandom() se va bloca până când acești
       octeți  au  fost  generați și transferați din memoria nucleului în buf.  Atunci când se citește din sursa
       random (GRND_RANDOM este activat),  getrandom()  se  va  bloca  până  când  unii  octeți  aleatori  devin
       disponibili (cu excepția cazului în care a fost specificat fanionul GRND_NONBLOCK).

       Comportamentul  atunci  când un apel la getrandom() care este blocat în timp ce citește din sursa urandom
       este întrerupt de un gestionar de semnal depinde de starea de inițializare a tamponului de entropie și de
       dimensiunea cererii, buflen. Dacă entropia nu este încă inițializată, atunci apelul  eșuează  cu  eroarea
       EINTR. Dacă fondul de entropie a fost inițializat și dimensiunea cererii este mare (buflen > 256), apelul
       fie reușește, returnând un tampon parțial umplut, fie eșuează cu eroarea EINTR. Dacă fondul de entropie a
       fost  inițializat  și  dimensiunea  cererii  este  mică (buflen <= 256), atunci getrandom() nu va eșua cu
       EINTR. În schimb, va returna toți octeții care au fost solicitați.

       La citirea din sursa random, cererile de blocare de orice dimensiune pot fi întrerupte de un gestionar de
       semnal (apelul eșuează cu eroarea EINTR).

       Utilizarea getrandom() pentru a citi tampoane mici (<= 256 bytes) din sursa urandom este  modul  preferat
       de utilizare.

       Tratamentul  special al valorilor mici ale buflen a fost conceput pentru compatibilitate cu getentropy(3)
       de la OpenBSD, care este în prezent acceptat de glibc.

       Utilizatorul aplicației  getrandom()  trebuie  să  verifice  întotdeauna  valoarea  returnată,  pentru  a
       determina dacă s-a produs o eroare sau dacă s-au returnat mai puțini octeți decât s-a solicitat. În cazul
       în  care GRND_RANDOM nu este specificat și buflen este mai mic sau egal cu 256, o returnare de mai puțini
       octeți decât s-a solicitat nu ar trebui să se întâmple niciodată, dar  programatorul  atent  va  verifica
       acest lucru oricum!

ERORI

       Începând cu Linux 3.19, există următoarea eroare:

       •  În  funcție  de sarcina CPU, getrandom() nu reacționează la întreruperi înainte de a citi toți octeții
          solicitați.

CONSULTAȚI ȘI

       getentropy(3), random(4), urandom(4), random(7), signal(7)

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                       getrandom(2)