.\" Copyright 1999 Andreas Dilger (adilger@enel.ucalgary.ca)
.\"
.\" %Begin-Header%
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, and the entire permission notice in its entirety,
.\"    including the disclaimer of warranties.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. The name of the author may not be used to endorse or promote
.\"    products derived from this software without specific prior
.\"    written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
.\" WHICH ARE HEREBY DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
.\" OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
.\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
.\" USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
.\" DAMAGE.
.\" %End-Header%
.\"
.\" Created  Wed Mar 10 17:42:12 1999, Andreas Dilger
.TH UUID_GENERATE 3 "May 2009" "util-linux" "Libuuid API"
.SH NAME
uuid_generate, uuid_generate_random, uuid_generate_time,
uuid_generate_time_safe \- create a new unique UUID value
.SH SYNOPSIS
.nf
.B #include <uuid.h>
.sp
.BI "void uuid_generate(uuid_t " out );
.BI "void uuid_generate_random(uuid_t " out );
.BI "void uuid_generate_time(uuid_t " out );
.BI "int uuid_generate_time_safe(uuid_t " out );
.BI "void uuid_generate_md5(uuid_t " out ", const uuid_t " ns ", const char " *name ", size_t " len ");
.BI "void uuid_generate_sha1(uuid_t " out ", const uuid_t " ns ", const char " *name ", size_t " len ");
.fi
.SH DESCRIPTION
The
.B uuid_generate
function creates a new universally unique identifier (UUID).  The uuid will
be generated based on high-quality randomness from
.IR /dev/urandom ,
if available.  If it is not available, then
.B uuid_generate
will use an alternative algorithm which uses the current time, the
local ethernet MAC address (if available), and random data generated
using a pseudo-random generator.
.sp
The
.B uuid_generate_random
function forces the use of the all-random UUID format, even if
a high-quality random number generator (i.e.,
.IR /dev/urandom )
is not available, in which case a pseudo-random
generator will be substituted.  Note that the use of a pseudo-random
generator may compromise the uniqueness of UUIDs
generated in this fashion.
.sp
The
.B 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 UUID, 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
.B 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 global
clock state counter (if the process has permissions to gain exclusive access
to this file) and/or the
.B uuidd
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
.BR uuid_generate_time_safe .
.sp
The
.B uuid_generate_time_safe
is similar to
.BR uuid_generate_time ,
except that it returns a value which denotes whether any of the synchronization
mechanisms (see above) has been used.
.sp
The UUID is 16 bytes (128 bits) long, which gives approximately 3.4x10^38
unique values (there are approximately 10^80 elementary particles in
the universe according to Carl Sagan's
.IR Cosmos ).
The new UUID can reasonably be considered unique among all UUIDs created
on the local system, and among UUIDs created on other systems in the past
and in the future.
.sp
The
.B uuid_generate_md5
and
.B uuid_generate_sha1
functions generate an MD5 and SHA1 hashed (predictable) UUID based on a
well-known UUID providing the namespace and an arbitrary binary string. The UUIDs
confirm to V3 and V5 UUIDs per RFC-4122.
.SH RETURN VALUE
The newly created UUID is returned in the memory location pointed to by
.IR out .
.B uuid_generate_time_safe
returns zero if the UUID has been generated in a safe manner, \-1 otherwise.
.SH "CONFORMING TO"
This library generates UUIDs compatible OSF DCE 1.1, and hash based UUIDs V3 and
V5 compatible with RFC-4122.
.SH AUTHOR
Theodore Y.\& Ts'o
.SH AVAILABILITY
.B libuuid
is part of the util-linux package since version 2.15.1 and is available from
https://www.kernel.org/pub/linux/utils/util-linux/.
.SH "SEE ALSO"
.BR uuidgen (1),
.BR uuid (3),
.BR uuid_clear (3),
.BR uuid_compare (3),
.BR uuid_copy (3),
.BR uuid_is_null (3),
.BR uuid_parse (3),
.BR uuid_time (3),
.BR uuid_unparse (3),
.BR uuidd (8)
