UUID_GENERATE(3)

NUME
uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe - creează o nouă valoare unică UUID

REZUMAT

#include <uuid.h>

void uuid_generate(uuid_t out); +
void uuid_generate_random(uuid_t out); +
void uuid_generate_time(uuid_t out); +
int uuid_generate_time_safe(uuid_t out); +
void uuid_generate_md5(uuid_t out, const uuid_t ns, const char *name, size_t len); +
void uuid_generate_sha1(uuid_t out, const uuid_t ns, const char *name, size_t len);

DESCRIERE

Funcția uuid_generate() creează un nou identificator unic universal (UUID). Uuid-ul va fi generat pe baza unui caracter aleatoriu de înaltă calitate din getrandom(2), /dev/urandom sau /dev/random, dacă este disponibil. Dacă nu este disponibil, atunci uuid_generate() va utiliza un algoritm alternativ care folosește ora curentă, adresa MAC a rețelei ethernet locale (dacă este disponibilă) și date aleatoare generate cu ajutorul unui generator pseudo-aleator.

Funcția uuid_generate_random(3) forțează utilizarea formatului UUID complet aleatoriu, chiar dacă nu este disponibil un generator de numere aleatorii de înaltă calitate, caz în care va fi înlocuit cu un generator pseudo-aleatoriu. Rețineți că utilizarea unui generator pseudo-aleatoriu poate compromite unicitatea UUID-urilor generate în acest mod.

Funcția uuid_generate_time(3) forțează utilizarea algoritmului alternativ care utilizează ora curentă și adresa MAC ethernet locală (dacă este disponibilă). Acest algoritm a fost utilizat în mod implicit pentru generarea UUID-urilor, dar din cauza utilizării adresei MAC ethernet, acesta poate furniza informații despre momentul și locul în care a fost generat UUID-ul. Acest lucru poate cauza probleme de confidențialitate în unele aplicații, astfel încât funcția uuid_generate() utilizează acest algoritm numai dacă nu este disponibilă o sursă de generare de numere aleatorii de înaltă calitate. Pentru a garanta unicitatea UUID-urilor generate de procese care rulează simultan, biblioteca uuid utilizează un contor global de stare a ceasului (dacă procesul are permisiuni pentru a obține acces exclusiv la acest fișier) și/sau demonul uuidd(8), dacă acesta rulează deja sau poate fi inițiat de proces (dacă este instalat și procesul are suficiente permisiuni pentru a-l rula). În cazul în care niciunul dintre aceste două mecanisme de sincronizare nu poate fi utilizat, este teoretic posibil ca două procese care rulează simultan să obțină același UUID (UUID-uri). Pentru a afla dacă UUID-ul a fost generat într-un mod sigur, utilizați uuid_generate_time_safe(3).

Funcția uuid_generate_time_safe(3) este similară cu uuid_generate_time(3), cu excepția faptului că returnează o valoare care indică dacă a fost utilizat vreunul dintre mecanismele de sincronizare (a se vedea mai sus).

UUID-ul are o lungime de 16 octeți (128 de biți), ceea ce dă aproximativ 3,4x10^38 valori unice (există aproximativ 10^80 de particule elementare în univers, conform cărții Cosmos a lui Carl Sagan). Noul UUID poate fi considerat în mod rezonabil unic între toate UUID-urile create pe sistemul local și între UUID-urile create pe alte sisteme în trecut și în viitor.

Funcțiile uuid_generate_md5(3) și uuid_generate_sha1(3) generează un UUID calculat (predictibil) folosind algoritmele MD5 și SHA1 pe baza unui UUID bine cunoscut care furnizează spațiul de nume și a unui șir binar arbitrar. UUID-urile sunt conforme cu UUID-urile V3 și V5 conform

VALOAREA RETURNATĂ

UUID-ul nou creat este returnat în locația de memorie indicată de out. uuid_generate_time_safe(3) returnează zero dacă UUID-ul a fost generat într-un mod sigur, iar în caz contrar -1.

ÎN CONFORMITATE CU

Această bibliotecă generează UUID-uri compatibile cu OSF DCE 1.1 și UUID-uri bazate pe sumele de control (hash) V3 și V5 compatibile cu

AUTORI

Theodore Y. Ts’o

CONSULTAȚI ȘI

uuidgen(1), uuid(3), uuid_clear(3), uuid_compare(3), uuid_copy(3), uuid_is_null(3), uuid_parse(3), uuid_time(3), uuid_unparse(3), uuidd(8)

RAPORTAREA ERORILOR

Pentru rapoarte de eroare, folosiți

DISPONIBILITATE

Biblioteca libuuid face parte din pachetul util-linux începând cu versiunea 2.15.1. Acesta poate fi descărcat de la