UUID_GENERATE(3) Manuel du programmeur UUID_GENERATE(3) NOM uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe - Creer une nouvelle valeur unique d'UUID SYNOPSIS #include void uuid_generate(uuid_t sortie); + void uuid_generate_random(uuid_t sortie); + void uuid_generate_time(uuid_t sortie); + int uuid_generate_time_safe(uuid_t sortie); + void uuid_generate_md5(uuid_t sortie, const uuid_t ns, const char *nom, size_t long); + void uuid_generate_sha1(uuid_t sortie, const uuid_t ns, const char *nom, size_t long); DESCRIPTION La fonction uuid_generate() cree un nouvel identifiant unique universel (UUID). L'UUID sera genere en se basant sur la haute qualite aleatoire de getrandom(2), /dev/urandom ou /dev/random, s'il est disponible. S'il ne l'est pas, alors uuid_generate() utilisera un autre algorithme qui utilise l'heure actuelle, l'adresse MAC Ethernet locale (si disponible) et une donnee aleatoire generee par un generateur pseudoaleatoire. La fonction uuid_generate_random() impose l'utilisation d'UUID totalement aleatoires, meme si le generateur haute qualite de nombres aleatoires (c'est-a-dire, /dev/urandom) n'est pas disponible, auquel cas un generateur pseudoaleatoire lui sera substitue. A noter que l'utilisation du generateur pseudoaleatoire peut compromettre l'unicite des UUID generes de cette facon. La fonction uuid_generate_time() impose l'utilisation de l'algorithme alternatif qui utilise l'heure actuelle et l'adresse MAC Ethernet locale (si disponible). Cet algorithme etait celui utilise par defaut pour generer les UUID, mais a cause de l'utilisation de l'adresse MAC Ethernet, il peut divulguer des informations sur quand et ou l'UUID a ete cree. Cela peut poser des problemes de confidentialite dans certaines applications. Par consequent, la fonction uuid_generate() n'utilise cet algorithme que si aucune source de generation aleatoire de haute qualite n'est disponible. Pour garantir l'unicite des UUID generes par les processus executes en meme temps, la bibliotheque uuid utilise un compteur d'etat d'horloge global (si le processus est autorise a obtenir un acces exclusif a ce fichier) et/ou le demon uuidd(8) s'il est deja en cours d'execution ou peut etre engendre par le processus (s'il est installe et que le processus est autorise a l'executer). Si aucun de ces deux mecanismes de synchronisation ne peut etre utilise, il est theoriquement possible que deux processus executes en meme temps obtiennent les memes UUID. Pour savoir si l'UUID a ete genere de facon sure, utilisez uuid_generate_time_safe. La fonction uuid_generate_time_safe() est similaire a uuid_generate_time() si ce n'est qu'elle renvoie une valeur qui indique si un des mecanismes de synchronisation (voir ci-dessus) a ete utilise. L'UUID est long de 16 octets (128 bits), ce qui donne environ 3,4 x 10^38\ valeurs uniques (il y a environ 10^80 particules elementaires dans l'univers d'apres le Cosmos de Carl Sagan). Le nouvel UUID peut etre raisonnablement considere comme unique parmi tous les UUID crees localement sur le systeme, ainsi que parmi les UUID crees sur d'autres systemes par le passe et dans le futur. Les fonctions uuid_generate_md5() et uuid_generate_sha1() generent un UUID hache (donc predictible) par MD5 et SHA1 en se basant sur un UUID bien connu fournissant un espace de noms et une chaine binaire arbitraire. Les UUID sont conformes aux UUID versions 3 et 5 de la norme RFC-4122 . VALEUR RENVOYEE Le nouveau UUID cree est renvoye dans l'emplacement memoire pointe par out. uuid_generate_time_safe() renvoie zero si l'UUID a ete genere de facon sure, -1 sinon. CONFORMITE Cette bibliotheque genere des UUID compatibles avec la DCE 1.1 d'OSF et des UUID versions 3 et 5, bases sur un hachage, compatibles avec la RFC-4122 . AUTEURS Theodore Y. Ts'o VOIR AUSSI 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) SIGNALER DES BOGUES Pour signaler un bogue, utilisez le gestionnaire de bogues . DISPONIBILITE La bibliotheque libuuid fait partie du paquet util-linux depuis la version 2.15.1. Elle est disponible sur l'archive du noyau Linux . util-linux 2.41 2025-03-29 UUID_GENERATE(3)