uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe
- Créer une nouvelle valeur unique d'UUID
#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);
La fonction
uuid_generate crée un nouvel identifiant unique
universel (UUID). L'UUID sera généré en se basant sur la
haute qualité aléatoire de
getrandom(2),
/dev/urandom ou
/dev/random, s'ils sont disponibles. Sinon,
uuid_generate() utilisera un autre algorithme qui utilise l'heure
actuelle, l'adresse MAC Ethernet locale (si disponible) et une donnée
aléatoire générée par un générateur
pseudoaléatoire.
La fonction
uuid_generate_random() impose l'utilisation d'UUID totalement
aléatoires, même si un générateur haute
qualité de nombres aléatoires n'est pas disponible, auquel cas
un générateur pseudoaléatoire lui sera substitué.
À noter que l'utilisation du générateur
pseudoaléatoire peut compromettre l'unicité des UUID
générés de cette façon.
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 était celui utilisé par
défaut pour générer les UUID, mais à cause de
l'utilisation de l'adresse MAC Ethernet, il peut divulguer des informations
sur quand et où l'UUID a été créé. Cela
peut poser des problèmes de confidentialité dans certaines
applications, et la fonction
uuid_generate n'utilise donc cet
algorithme que si aucune source de génération aléatoire
de haute qualité n'est disponible. Pour garantir l'unicité des
UUID générés par les processus exécutés en
même temps, la bibliothèque uuid utilise un compteur
d'état d'horloge global (si le processus est autorisé à
obtenir un accès exclusif à ce fichier) et/ou le démon
uuidd(8) s'il est déjà en cours d'exécution ou
peut être engendré par le processus (s'il est installé et
que le processus est autorisé à l'exécuter). Si aucun de
ces deux mécanismes de synchronisation ne peut être
utilisé, il est théoriquement possible que deux processus
exécutés en même temps obtiennent les mêmes UUID.
Pour savoir si l'UUID a été généré de
façon sûre, utilisez
uuid_generate_time_safe.
La fonction
uuid_generate_time_safe() est similaire à
uuid_generate_time() si ce n'est qu'elle renvoie une valeur qui indique
si un des mécanismes de synchronisation (voir ci-dessus) a
été utilisé.
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 élémentaires dans l'univers
d'après le
Cosmos de Carl Sagan). Le nouvel UUID peut
être raisonnablement considéré comme unique parmi tous
les UUID créés localement sur le système, ainsi que parmi
les UUID créés sur d'autres systèmes par le passé
et dans le futur.
Les fonctions
uuid_generate_md5() et
uuid_generate_sha1()
génèrent un UUID haché (donc prédictible) par MD5
et SHA1 en se basant sur un UUID bien connu fournissant un espace de noms et
une chaîne binaire arbitraire. Les UUID sont conformes aux UUID
versions 3 et 5 de la norme
RFC-4122
<
https://tools.ietf.org/html/rfc4122>.
Le nouveau UUID créé est renvoyé dans l'emplacement
mémoire pointé par
out.
uuid_generate_time_safe()
renvoie zéro si l'UUID a été généré
de façon sûre,
-1 sinon.
Cette bibliothèque génère des UUID compatibles avec la
DCE 1.1 d’OSF et des UUID versions 3 et 5,
basés sur un hachage, compatibles avec
RFC-4122
<
https://tools.ietf.org/html/rfc4122>.
Theodore Y. Ts’o
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)
Pour envoyer un rapport de bogue, utilisez le système de gestion des
problèmes à l'adresse
<
https://github.com/util-linux/util-linux/issues>.
La bibliothèque
libuuid fait partie du paquet util-linux depuis la
version 2.15.1. Elle peut être obtenue à l'adresse
Linux Kernel Archive
<
https://www.kernel.org/pub/linux/utils/util-linux/>.
La traduction française de cette page de manuel a été
créée par Christophe Blaess <
[email protected]>, Michel
Quercia <quercia AT cal DOT enst DOT fr>, Thierry Vignaud
<
[email protected]>, Frédéric Delanoy
<
[email protected]>, Thierry Vignaud <
[email protected]>,
Christophe Sauthier <
[email protected]>, Sébastien
Blanchet, Jérôme Perzyna <
[email protected]>, Aymeric Nys
<aymeric AT nnx POINT com>, Alain Portal <
[email protected]>,
Thomas Huriaux <
[email protected]>, Yves Rütschlé
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Philippe Piette <
[email protected]>,
Jean-Baka Domelevo-Entfellner <
[email protected]>, Nicolas Haller
<
[email protected]>, Sylvain Archenault
<
[email protected]>, Valéry Perrin
<
[email protected]>, Jade Alglave
<
[email protected]>, Nicolas François
<
[email protected]>, Alexandre Kuoch
<
[email protected]>, Lyes Zemmouche <
[email protected]>,
Florentin Duneau <
[email protected]>, Alexandre Normand
<
[email protected]> et David Prévot <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 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 à
[email protected]