UUID_GENERATE(3)

NOM
uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe - Créer une nouvelle valeur unique d'UUID

SYNOPSIS

#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);

DESCRIPTION

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.

The uuid_generate_time() function forces the use of the alternative algorithm which uses the current time and the local ethernet MAC address (if available). This algorithm used to be the default one used to generate UUIDs, but because of the use of the ethernet MAC address, it can leak information about when and where the UUID was generated. This can cause privacy problems in some applications, so the uuid_generate() function only uses this algorithm if a high-quality source of randomness is not available. To guarantee uniqueness of UUIDs generated by concurrently running processes, the uuid library uses a global clock state counter (if the process has permissions to gain exclusive access to this file) and/or the uuidd(8) daemon, if it is running already or can be spawned by the process (if installed and the process has enough permissions to run it). If neither of these two synchronization mechanisms can be used, it is theoretically possible that two concurrently running processes obtain the same UUID(s). To tell whether the UUID has been generated in a safe manner, use 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

VALEUR RENVOYÉE

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.

CONFORMITÉ

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

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 envoyer un rapport de bogue, utilisez le système de gestion des problèmes à l'adresse

DISPONIBILITÉ

La bibliothèque libuuid fait partie du paquet util-linux depuis la version 2.15.1. Elle peut être obtenue à l'adresse

TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <ccb@club-internet.fr>, Michel Quercia <quercia AT cal DOT enst DOT fr>, Thierry Vignaud <tvignaud@mandriva.com>, Frédéric Delanoy <delanoy_f@yahoo.com>, Thierry Vignaud <tvignaud@mandriva.com>, Christophe Sauthier <christophe@sauthier.com>, Sébastien Blanchet, Jérôme Perzyna <jperzyna@yahoo.fr>, Aymeric Nys <aymeric AT nnx POINT com>, Alain Portal <aportal@univ-montp2.fr>, Thomas Huriaux <thomas.huriaux@gmail.com>, Yves Rütschlé <l10n@rutschle.net>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Philippe Piette <foudre-blanche@skynet.be>, Jean-Baka Domelevo-Entfellner <domelevo@gmail.com>, Nicolas Haller <nicolas@boiteameuh.org>, Sylvain Archenault <sylvain.archenault@laposte.net>, Valéry Perrin <valery.perrin.debian@free.fr>, Jade Alglave <jade.alglave@ens-lyon.org>, Nicolas François <nicolas.francois@centraliens.net>, Alexandre Kuoch <alex.kuoch@gmail.com>, Lyes Zemmouche <iliaas@hotmail.fr>, Florentin Duneau <fduneau@gmail.com>, Alexandre Normand <aj.normand@free.fr> et David Prévot <david@tilapin.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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 à debian-l10n-french@lists.debian.org.