RAND_ADD(3ssl) | OpenSSL | RAND_ADD(3ssl) |
NUME
RAND_add, RAND_poll, RAND_seed, RAND_status, RAND_event, RAND_screen, RAND_keep_random_devices_open - adaugă caracter aleatoriu la PRNG sau obține starea acestuia
SINOPSIS
#include <openssl/rand.h> int RAND_status(void); int RAND_poll(); void RAND_add(const void *buf, int num, double randomness); void RAND_seed(const void *buf, int num); void RAND_keep_random_devices_open(int keep);
Următoarele funcții au fost depreciate începând cu OpenSSL 1.1.0 și pot fi ascunse complet prin definirea OPENSSL_API_COMPAT cu o valoare de versiune adecvată, consultați openssl_user_macros(7):
int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam); void RAND_screen(void);
DESCRIERE
Aceste funcții pot fi utilizate pentru a inițializa generatorul aleatoriu și pentru a verifica starea sa inițială. În general, (re)inițializarea manuală a generatorului aleatoriu OpenSSL implicit (RAND_OpenSSL(3)) nu este necesară (dar este permisă), deoarece acesta se (re)inițializează automat utilizând surse de entropie de încredere ale sistemului. Acest lucru este valabil cu excepția cazului în care metoda RAND_METHOD implicită a fost înlocuită sau OpenSSL a fost construit cu reinițializarea automată dezactivată, consultați RAND(7) pentru mai multe detalii.
RAND_status() indică dacă generatorul aleatoriu a fost suficient inițializat. Dacă nu, funcții precum RAND_bytes(3) vor eșua.
RAND_poll() utilizează capacitățile sistemului pentru a inițializa generatorul aleatoriu folosind date aleatorii obținute din sondarea diverselor surse de entropie de încredere. Alegerea implicită a sursei de entropie poate fi modificată în momentul compilării, pentru mai multe detalii consultați RAND(7).
RAND_add() amestecă num octeți din buf în starea internă a generatorului aleatoriu. Această funcție nu va fi necesară în mod normal, așa cum s-a menționat mai sus. Argumentul randomness este o estimare a cantității de elemente aleatorii conținute în buf, în octeți, și trebuie să fie un număr între zero și num. Detalii despre sursele de aleatoriu și modul de estimare a caracterului aleatoriu al acestora pot fi găsite în literatura de specialitate; de exemplu [NIST SP 800-90B]. Conținutul buf nu poate fi recuperat din ieșirea ulterioară a generatorului aleatoriu. Aplicațiile care intenționează să salveze și să restaureze starea aleatorie într-un fișier extern ar trebui să ia în considerare utilizarea RAND_load_file(3) în schimb.
NOTĂ: În modul FIPS, datele aleatorii furnizate de aplicație nu sunt considerate o sursă de entropie de încredere. Acestea sunt amestecate în starea internă a RNG doar ca date suplimentare și nu sunt considerate o reinițializare completă. Pentru mai multe detalii, consultați EVP_RAND(7).
RAND_seed() este echivalentă cu RAND_add() cu randomness stabilit la num.
RAND_keep_random_devices_open() este utilizată pentru a controla utilizarea descriptorilor de fișiere de către sursele de semințe aleatorii. Unele surse de semințe mențin descriptorii de fișiere deschiși în mod implicit, ceea ce permite acestor surse să funcționeze într-o celulă chroot(2) fără ca nodurile de dispozitive asociate să fie disponibile. Când argumentul keep este zero, această apelare dezactivează păstrarea descriptorilor de fișiere. În schimb, un argument diferit de zero activează păstrarea descriptorilor de fișiere. Această funcție este de obicei apelată în timpul inițializării și are efect imediat. Această capacitate se aplică numai furnizorului implicit.
RAND_event() și RAND_screen() sunt echivalente cu RAND_poll() și există doar din motive de compatibilitate. Consultați secțiunea ISTORIC de mai jos.
VALORI RETURNATE
RAND_status() returnează 1 dacă generatorul aleatoriu a fost însămânțat cu suficiente date, 0 în caz contrar.
RAND_poll() returnează 1 dacă a generat date inițiale, 0 în caz contrar.
RAND_event() returnează RAND_status().
Celelalte funcții nu returnează valori.
CONSULTAȚI ȘI
RAND_bytes(3), RAND_egd(3), RAND_load_file(3), RAND(7) EVP_RAND(7)
ISTORIC
RAND_event() și RAND_screen() au fost depreciate în OpenSSL 1.1.0 și nu ar trebui utilizate.
DREPTURI DE AUTOR
Drepturi de autor 2000-2020 The OpenSSL Project Authors. Toate drepturile rezervate.
Licențiat sub Licența Apache 2.0 („License”). Nu aveți voie să utilizați acest fișier decât în conformitate cu licența. Puteți obține o copie din fișierul LICENSE din distribuția sursei sau de la https://www.openssl.org/source/license.html.
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.
5 august 2025 | 3.5.2 |