uuid-1.6.2/AUTHORS 644 0 0 74410764216727 124170ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier AUTHORS This is a list of authors who have written or edited major parts of the OSSP uuid sources. Ralf S. Engelschall uuid-1.6.2/BINDINGS 644 0 0 172110764216727 125030ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier LANGUAGE BINDINGS Various programming language bindings exist for OSSP uuid. The following is the list of known bindings: o C (native API) o C++ (addon API; part of the OSSP uuid distribution; see uuid++.* files) o Perl (addon API; part of the OSSP uuid distribution; see perl/ directory) o PHP (addon API; part of the OSSP uuid distribution; see php/ directory) o PostgreSQL (addon API; part of the OSSP uuid distribution; see pgsql/ directory) o GNU Guile GEE (Scheme) https://gna.org/projects/gee o Chicken (Scheme) http://www.call-with-current-continuation.org/eggs/uuid-ossp.html uuid-1.6.2/ChangeLog 644 0 0 5364611033514111 131440ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier CHANGELOG This is a list of all changes to OSSP uuid. For a more brief summary please have a look at the NEWS file. Changes between 1.6.1 and 1.6.2 (21-Feb-2008 to 04-Jul-2008) o Adjust "devtool.func" for latest GNU Libtool compatibility. [Ralf S. Engelschall] o Improve PRNG under Win32. [Hiroshi Saito] o Consistently annotate "RFC-XXXX" with "IETF" to clearly indicate from which standards body this comes from. [Ralf S. Engelschall] o Resolve namespace conflicts of recently introduced time_xxx() functions by using a propoer "uuid_" prefix. [Ralf S. Engelschall] o Remove unused "struct timezone" from time_gettimeofday() in order to simplify portability. [Ralf S. Engelschall] o Add support for POSIX clock_gettime(3) in case the Unix/POSIX gettimeofday(3) is not available. [Ralf S. Engelschall] o Upgrade build environment to GNU autoconf 2.62. [Ralf S. Engelschall] o Upgrade build environment to GNU libtool 2.2.4. [Ralf S. Engelschall] Changes between 1.6.0 and 1.6.1 (19-May-2007 to 21-Feb-2008) o Port to Win32 API. [Hiroshi Saito, Wu Yongwei, Ralf S. Engelschall] o Adjust copyright messages for new year 2008. [Ralf S. Engelschall] o Fix __VA_COPY_USE_{CSP,CPP} fallback macros for va_copy. [Mark A. Lindner ] o PostgreSQL bindings: use SET_VARSIZE() instead of assigning to bytea->v_len under PostgreSQL >= 8.3 [Ralf S. Engelschall] o Upgrade build environment to GNU libtool 1.5.26 [Ralf S. Engelschall] Changes between 1.5.1 and 1.6.0 (31-Jul-2006 to 19-May-2007) o Expand unused "datarootdir" in Makefile.in and uuid-config.in to make newer GNU autoconf versions happy. [Ralf S. Engelschall] o Upgrade build environment to GNU shtool 2.0.7 [Ralf S. Engelschall] o Make GNU autoconf procedure of PHP binding more robust by using -Wl,-Bsymbolic only on platforms where uuid_create(3) actually exists and where -Wl,-Bsymbolic is really accepted by the tool chain. This especially unbreaks MacOS X. [Ralf S. Engelschall] o Fix "uuid_export" function in PHP bindings under UUID_FMT_SIV, UUID_FMT_STR and UUID_FMT_TXT where the NUL-termination character should be not passed back to PHP. [Neil Caunt , Ralf S. Engelschall] o Adjust copyright messages for new year 2007. [Ralf S. Engelschall] o Upgrade build environment to GNU autoconf 2.61 [Ralf S. Engelschall] o Disable PostgreSQL "(CSTRING AS uuid)" and "(uuid AS CSTRING)" CASTS as PostgreSQL 8.2 and higher explicitly disallow this. [David Wheeler , Ralf S. Engelschall] o Fix PostgreSQL bindings by mapping the correct DSO symbol to the functions "uuid_send" and "uuid_recv". [Ralf S. Engelschall] o Silence PostgreSQL processing messages [David Wheeler ] o Support MacOS X (aka Darwin) in PostgreSQL bindings by passing a "-bundle_loader" option to the linker in order to resolve the "undefined symbols" problem. [David Wheeler , Ralf S. Engelschall] o Pass the correct type to PostgreSQL's errmsg(). [David Wheeler , Ralf S. Engelschall] o Added PostgreSQL 8.2 PG_MODULE_MAGIC support. [David Wheeler ] o Fix the Data::UUID::to_b64string() function of the Perl backward compatibility API: an empty string was not supplied as the EOL marker to MIME::Base64::encode_base64() and hence the returned string ended with a newline character (which in turn breaks many applications using Data::UUID). [Piotr Roszatycki ] o Change type of "data_ptr" argument in uuid_export() API signature from "void **" to "void *" as there is unfortunately no "generic pointer to pointer type" in ISO C (see also http://c-faq.com/ptrs/genericpp.html) and "void **" is just a "pointer to a 'void *'". The "void **" especially had the nasty side-effect that it breaks strict pointer aliasing rules of ISO C and hence would require fiddling with temporary variables on all uuid_export() calls if one would be 100% correct and avoid aliasing related compiler warnings. Instead, as uuid_export() internally has to cast the "data_ptr" to the particular expected type anyway, it is better to have "data_ptr" just be a really generic "void *" in the API signature. Keep in mind that although this is an API change, it doesn't cause any incompatibilities as the function still expects the same "pointer to a pointer of a particular type". This expected pointer is just now passed the more correct although less intuitive way. [Hrvoje Niksic , Ralf S. Engelschall] o Optional DMALLOC based memory debugging support. [Ralf S. Engelschall] o Consistently include "uuid_ac.h" in all source files to have GNU autoconf results and standard system defines available everywhere. [Ralf S. Engelschall] Changes between 1.5.0 and 1.5.1 (28-Jul-2006 to 31-Jul-2006) o Use "MODULE_PATHNAME" instead of "@MODULE_PATHNAME@" in uuid.sql.in to be more aligned to the PostgreSQL styles. [Simon "janus" Dassow ] o Use the available variables $(LIB_NAME), $(DCE_NAME) and $(CXX_NAME) more consistently in Makefile.in to allow packagers to override the library name with less patching. [Piotr Roszatycki ] o Fix the "make distclean" target of php/Makefile.local to make sure the ".deps" file is not left over. [Ralf S. Engelschall] o Fix the tarball rolling procedure to make sure we do not distribute binary files again. This now especially uses a MANIFEST file which explicitly lists all files which form the distribution tarball. We compare the tarball and the MANIFEST file for differences in the "devtool dist" now. [Ralf S. Engelschall] Changes between 1.4.2 and 1.5.0 (13-Mar-2006 to 28-Jul-2006) o Fixed potential memory leak in uuid_create() as spotted by SPLINT. [Ralf S. Engelschall] o Cleanup source code according to complains by SPLINT. [Ralf S. Engelschall] o Cleanup internal uuid_mac.h header. [Ralf S. Engelschall] o Numerous fixed to the error handling in the PostgreSQL bindings. [Neil Conway ] o Add Hash indexing support UUID data type of PostgreSQL bindings. [Ralf S. Engelschall] o Add comparison operators and B-Tree indexing support UUID data type of PostgreSQL bindings. [Roman Neuhauser ] o Fix PHP bindings: the wrong argument to uuid_create() was forced to a reference [Roman Neuhauser ] o Add full support for Single Integer Value (SIV) UUID representation for both importing and exporting in C/C++/Perl/PHP APIs. [Ralf S. Engelschall] o Upgrade build environment to GNU shtool 2.0.6 and GNU autoconf 2.60 [Ralf S. Engelschall] o Added an "OVERVIEW" file which tries to give the "big picture" about UUIDs and allows to survice during the nasty UUID bit fiddling. [Ralf S. Engelschall] o Replaced "clock_seq_and_reserved" with "clock_seq_high_and_reserved" in uuid.pod to already reflect the description in the forthcoming RFC. [Ralf S. Engelschall] o Speed up processing in uuid_str.c by reducing va_copy() calls from two to just one per formatting. [Ralf S. Engelschall] Changes between 1.4.1 and 1.4.2 (07-Feb-2006 to 13-Mar-2006) o Fix uuid_export() function by fixing the internal uuid_s[ar]printf() functions which require the backup of va_list arguments between subsequent processing. [Ralf S. Engelschall, Thomas Lotterer ] o Fix Perl API's "export" function by not taking over NUL-termination character under UUID_FMT_TXT. [Thomas Lotterer ] o Declare "install", "uninstall" and "clean" make(1) targets ".PHONY". This especially workarounds problems on case insensitive filesystems (like MacOS X' filesystem) where the "INSTALL" document conflicts with the "install" target. [Ralf S. Engelschall, David Wheeler ] Changes between 1.4.0 and 1.4.1 (15-Jan-2006 to 07-Feb-2006) o Upgrade to GNU shtool 2.0.5 [Ralf S. Engelschall] o Apply workaround to uuid.h to avoid conflicts with vendor UUID implementations where uuid_t (Darwin/MacOSX) or uuid_create/uuid_compare (POSIX) might exist. [Ralf S. Engelschall] Changes between 1.3.2 and 1.4.0 (06-Dec-2005 to 15-Jan-2006) o Created a top-level Perl ExtUtils::MakeMaker wrapper script [Ralf S. Engelschall] o Adjust copyright messages for new year 2006. [Ralf S. Engelschall] o Added experimental PostgreSQL bindings. [Ralf S. Engelschall] o Fixed documentation of uuid_make() function. [Ralf S. Engelschall] o Upgrade build environment to GNU libtool 1.5.22 [Ralf S. Engelschall] Changes between 1.3.1 and 1.3.2 (24-Sep-2005 to 06-Dec-2005) o Cleaned up and speed optimized perl/uuid_compat.pm (the Data::UUID compatibility module for Perl) [David Wheeler ] o Upgrade to GNU shtool 2.0.3 [Ralf S. Engelschall] o Consistently use "return" in uuid++.cc [Ralf S. Engelschall] Changes between 1.3.0 and 1.3.1 (02-Sep-2005 to 24-Sep-2005) o Fix two incorrect casts, detected by compiling the C code under C++ constraints. [Ralf S. Engelschall] o Remove a compiler warning in the PHP bindings. [Ralf S. Engelschall] o Plug memory leak in PRNG sub-library. [Ralf S. Engelschall] o Add VPATH/srcdir support for at the default build procedure plus at least C++ and DCE build options. [Ralf S. Engelschall] Changes between 1.2.1 and 1.3.0 (30-Aug-2005 to 02-Sep-2005) o Add an experimental PHP 4/5 language API binding which can be enabled under build-time with opption --with-php. [Ralf S. Engelschall] o Upgrade to GNU libtool 1.5.20 [Ralf S. Engelschall] o Add missing "const" in manual page. [Ralf S. Engelschall] o Add an experimental C++ API binding which can be enabled under build-time with option --with-cxx. [Ralf S. Engelschall] o Cleanup the internals of the uuid_create() function and add a new corresponding uuid_clone() API function. [Ralf S. Engelschall] o Cleanup some Makefile parts. [Ralf S. Engelschall] o Added a pkg-config(1) specification uuid.pc which is also installed by default in addition to the old-style uuid-config tool. [Ralf S. Engelschall] o Added optional Data::UUID backward compatibility Perl API which can be enabled with the build-time option --with-perl-compat. [Piotr Roszatycki , Ralf S. Engelschall] o Add a functionality-reduced TIE-style Perl API OSSP::uuid::tie, intended for very high-level convenience programming. [Ralf S. Engelschall] o Reference the new officially published RFC 4122. [Ralf S. Engelschall] Changes between 1.2.0 and 1.2.1 (23-Jan-2005 to 30-Aug-2005) o Add SEEALSO document which references all known UUID implementations. [Ralf S. Engelschall] o Improve the PRNG in case no stronger system PRNG device is available by passing time and rand(3) based entropy into the MD5 one-way hash function to achieve at least some sort of weaker PRN data. [Ralf S. Engelschall] o Fix MAC address determination under Solaris by using the result of ioctl(...,SIOCGARP,...) only if arp_flags had ATF_COM set. [Ralf S. Engelschall] o Upgrade to GNU libtool 1.5.18 and GNU shtool 2.0.2. [Ralf S. Engelschall] o Cleanup the source code even more by following a large set of FlexeLint's suggestions. [Ralf S. Engelschall] o Fixed generated "section" number in uuid-config(1). [Piotr Roszatycki ] Changes between 1.1.2 and 1.2.0 (13-Jan-2005 to 23-Jan-2005) o Added support for new version 5 UUIDs (name-based, SHA-1) according to latest draft-mealling-uuid-urn-05.txt. [Ralf S. Engelschall] o Reference new ISO/IEC 9834-8:2004 / ITU-T Rec. X.667 2004 standard and latest IETF draft-mealling-uuid-urn-05.txt. [Ralf S. Engelschall] Changes between 1.1.1 and 1.1.2 (18-Nov-2004 to 13-Jan-2005) o Fix generation of v3 UUIDs by adding support for 64-bit platforms to the underlying uuid_md5.c code (which internally is based on the RFC reference code which in turn assumes a 32-bit environment). [Ralf S. Engelschall, Piotr Roszatycki ] o Optimize internal md5_store() function by directly finalizing MD5 calculation on buffer copy instead of finalizing original buffer and having to restore it from the buffer copy. [Ralf S. Engelschall] o Adjust copyright messages for new year 2005. [Ralf S. Engelschall] o Do not rebuild the Perl API if there were no actual changes. [Ralf S. Engelschall] Changes between 1.1.0 and 1.1.1 (03-Nov-2004 to 18-Nov-2004) o Apply the FreeBSD libc uuid_create() related workaround in the Perl bindings also under FreeBSD 6.0-CURRENT. [Ralf S. Engelschall] o Fix --with-perl configure option processing: Perl is only required if --with-perl is used although we search for Perl always in order to provide the PERL variable substitution. [Ralf S. Engelschall] Changes between 1.0.4 and 1.1.0 (16-Oct-2004 to 03-Nov-2004) o Add --with-perl configure option for optionally enabling the Perl language bindings. [Ralf S. Engelschall] o Add Perl language bindings providing both a C-style and OO-style API. [Ralf S. Engelschall] Changes between 1.0.3 and 1.0.4 (15-Oct-2004 to 16-Oct-2004) o Fix version detection from uuid_vers.h [Ralf S. Engelschall] Changes between 1.0.2 and 1.0.3 (12-Sep-2004 to 15-Oct-2004) o Support configuring/building/installing from an arbitrary directory via srcdir/top_srcdir/VPATH. [David Lee , Ralf S. Engelschall] o Upgrade build environment to GNU libtool 1.5.10. [Ralf S. Engelschall] Changes between 1.0.1 and 1.0.2 (16-Jul-2004 to 12-Sep-2004) o Upgrade build environment to GNU libtool 1.5.8 and GNU shtool 2.0.1 [Ralf S. Engelschall] Changes between 1.0.0 and 1.0.1 (16-Feb-2004 to 16-Jul-2004) o Made documentation of uuid_export() more clear. [Ralf S. Engelschall] o Upgrade build environment to GNU libtool 1.5.6 and GNU shtool 2.0.0 [Ralf S. Engelschall] o Remove some warnings occurring under GCC 3.5 [Ralf S. Engelschall] Changes between 0.9.7 and 1.0.0 (13-Feb-2004 to 16-Feb-2004) o Replace remaining (old) UUID_VERSIONX names with UUID_MAKE_VX in the documentation (uuid.pod). [Ralf S. Engelschall] o Resolve namespace conflicts with GCC 3.4 internal pow10() and round() functions within uuid_str.c. [Ralf S. Engelschall] o Fix buffer handling in "uuid_export(..., UUID_FMT_TXT, vp, ...)" in case "vp" is not NULL. [Fuyuki ] Changes between 0.9.6 and 0.9.7 (11-Feb-2004 to 13-Feb-2004) o remove --with-rfc2518 option and functionality because even the IETF/IESG has finally approved our report about the broken random multicast MAC address generation in the standard (and will fix it in new versions of the draft-mealling-uuid-urn). So, finally get rid of this broken-by-design backward compatibility functionality. [Ralf S. Engelschall] o Add support to uuid(1) CLI for decoding from stdin for both binary and string representations. [Ralf S. Engelschall] o Add missing documentation entries for UUID_XXXX API constants and uuid_version() function. [Fuyuki ] o Adjust references for new draft-mealling-uuid-urn-02.txt. [Fuyuki ] o Replaced overlooked references to old uuid_{unpack,pack,parse,format,dump}() functions with their current uuid_{import,export}() replacements. [Fuyuki ] o Fixed "uuid -h" command. [Fuyuki ] Changes between 0.9.5 and 0.9.6 (06-Feb-2004 to 11-Feb-2004) o Added an experimental additional DCE 1.1 API for backward compatibility with existing applications. [Ralf S. Engelschall] Changes between 0.9.4 and 0.9.5 (19-Jan-2004 to 06-Feb-2004) o Fixed filedescriptor leak in the PRNG sub-API. [Guerry Semones ] o Upgraded build environment to GNU libtool 1.5.2. [Ralf S. Engelschall] Changes between 0.9.3 and 0.9.4 (16-Jan-2004 to 19-Jan-2004) o Include in uuid.h because of size_t usage. [Ralf S. Engelschall] o INCOMPATIBILITY: Refactor the API and rename uuid_generate() to uuid_make() and use a "uuid_t" pointer for the namespace on UUID_VERSION3 generation. To allow access to the internal pre-defined namespace UUIDs, provide a new uuid_load() function. Because uuid_load() now also allows the loading of the "nil" UUID, remove uuid_nil() from the API. After this second refactoring the API is now the one we originally wished for the forthcoming version 1.0 of OSSP uuid. [Ralf S. Engelschall] o INCOMPATIBILITY: rename UUID_VERSIONx to UUID_MAKE_Vx and UUID_MCASTRND to UUID_MAKE_MC to be more consistent throughout API. [Ralf S. Engelschall] o Add version support to API via UUID_VERSION (compile-time) and uuid_version() (link-time). [Ralf S. Engelschall] o INCOMPATIBILITY: Refactor the API by merging uuid_{unpack,pack,parse,format,dump}() functions into unified uuid_{import,export}() functions. This allows us to easily add support for other formats (e.g. XML) in the future without having the change the API in principle. [Ralf S. Engelschall] o Document what DCE 1.1 UUID versions exist and what they are intended for. [Ralf S. Engelschall] o Cleanup the C code to also pass warning-free a C++ compiler. [Ralf S. Engelschall] o Support C++ by enclosing the C API declarations in 'extern "C" {...}' within uuid.h. [Guerry Semones ] o Improvide decoding in uuid_dump() by at least hex-dumping the binary representation in case of v3, v4 and Nil UUIDs. Also, annotate with better hints. [Ralf S. Engelschall] o Recognize special "Nil UUID" on decoding in uuid_dump(). [Ralf S. Engelschall] Changes between 0.9.2 and 0.9.3 (15-Jan-2004 to 16-Jan-2004) o Tested OSSP uuid on 16 particular Unix platforms and list those in the new PORTING file. [Ralf S. Engelschall] o Fixed minor formatting bug in call to str_rsprintf(). [Ralf S. Engelschall] o Fix syntax error in uuid.ac. [Ralf S. Engelschall] Changes between 0.9.1 and 0.9.2 (13-Jan-2004 to 15-Jan-2004) o Provide both incorrect RFC2518-based and correct IEEE 802 multicast address generation. The default now is the correct IEEE 802 multicast address generation but compile-time option --with-rfc2518 selects the broken variant. [Ralf S. Engelschall] o Decode also the IEEE 802 MAC address local/global bit. [Ralf S. Engelschall] o Added missing documentation for uuid_dump(). [Ralf S. Engelschall] o Fixed BM_POW2() macro implementation. [Ralf S. Engelschall] o Use BM_XXX() and str_xxx() APIs throughout internal implementation. [Ralf S. Engelschall] o Added missing manual page uuid-config(1). [Ralf S. Engelschall] o Fixed output of "uuid-config --version" [Ralf S. Engelschall] o Fixed typos in uuid.pod [Ralf S. Engelschall] o Cleanup uuid.ac for unused elements. [Ralf S. Engelschall] o Moved uuid_[u]int{8,16,32}_t auto-configuration into own internal header uuid_ac.h. [Ralf S. Engelschall] o Fixed portability by replacing accidentally introduced uint{8,16,32}_t with the portable uuid_uint{8,16,32}_t. [Guerry Semones ] o Prefix all variable symbols in uuid.h with underscores to avoid namespace conflicts. [Ralf S. Engelschall] o Add decoding examples to uuid(1) manual page. [Ralf S. Engelschall] Changes between 0.9.0 and 0.9.1 (11-Jan-2004 to 13-Jan-2004) o Make "md5_init" and "mac_address" symbols namespace clean by adding correct embedding support via "uuid_" prefix. [Ralf S. Engelschall] o Implement uuid_dump() and corresponding uuid CLI "-d" option for dumping a given UUID into clear text. For convenience reasons add uuid_bm.h (bit mask API) and uuid_str (string formatting API) sub-modules. [Ralf S. Engelschall] o Add "-m" option to CLI for allowing to generate v1 UUIDs with random multi-cast addresses (API UUID_MCASTRND option). [Ralf S. Engelschall] o Disable the C++ and F77 checks in GNU libtool. [Ralf S. Engelschall] o Print involved option character (instead of '?') on invalid option for uuid(1) CLI. [Matthias Andree ] o Fixed "make install" and "make uninstall": the uuid(1) CLI has to be [un]installed through GNU libtool, too. [Matthias Andree ] o Document in uuid(1) [uuid_cli.pod] that for version 3 UUIDs additional arguments are required and what pre-defined namespace ids are known. [Ralf S. Engelschall, M.Daniel ] o cleaned up source tree documentation files. [Ralf S. Engelschall] uuid-1.6.2/HISTORY 644 0 0 4030710764216727 124720ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier HISTORY During OSSP uuid we were totally puzzled by a subtle bug in the UUID standards related to the generation of multi-cast MAC addresses. This part of the history shows a very interesting technical bug, the unusual way of having to fix a standard (which was multiple times revised by different standard authorities, including the IETF, the OpenGroup and ISO/IEC) afterwards plus the fixing of six implementations into which the bug was inherited similarly. Below are some snapshot of this part of history: the first implementation fix (for FreeBSD) and the notification of the IETF standards authors. ___________________________________________________________________________ Date: Fri, 13 Feb 2004 16:09:31 +0100 From: "Ralf S. Engelschall" To: paulle@microsoft.com, michael@neonym.net, rsalz@datapower.com Subject: [PATCH] draft-mealling-uuid-urn-02.txt Message-ID: <20040213150931.GA7656@engelschall.com> During implementation of OSSP uuid (a flexible CLI and C API for generation and partial decoding of version 1, 3 and 4 UUIDs, see http://www.ossp.org/pkg/lib/uuid/ for details), I discovered a nasty bug in the generation of random multicast MAC addresses. It is present in all standards and drafts (both expired ones and current ones) and was also inherited (until I fixed it by submitting patches to the authors recently) by all six freely available UUID implementations (Apache APR, FreeBSD uuidgen(2), Java JUG, Linux's libuuid from e2fsutil, Perl's Data::UUID and WINE's UUID generator)). In case no real/physical IEEE 802 address is available, both the expired "draft-leach-uuids-guids-01" (section "4. Node IDs when no IEEE 802 network card is available"), RFC 2518 (section "6.4.1 Node Field Generation Without the IEEE 802 Address") and now even your current "draft-mealling-uuid-urn-02.txt" (section "4.5 Node IDs that do not identify the host") recommend: "A better solution is to obtain a 47-bit cryptographic quality random number, and use it as the low 47 bits of the node ID, with the _most_ significant bit of the first octet of the node ID set to one. This bit is the unicast/multicast bit, which will never be set in IEEE 802 addresses obtained from network cards; hence, there can never be a conflict between UUIDs generated by machines with and without network cards." Unfortunately, this incorrectly explains how to implement this and even the example implementation (draft-mealling-uuid-urn-02.txt, "Appendix A. Appendix A - Sample Implementation") inherited this. Correct is "the _least_ significant bit of the first octet of the node ID" as the multicast bit in a memory and hexadecimal string representation of a 48-bit IEEE 802 MAC address. This standards bug arised from a false interpretation, as the multicast bit is actually the _most_ significant bit in IEEE 802.3 (Ethernet) _transmission order_ of an IEEE 802 MAC address. But you forgot that the bitwise order of an _octet_ from a MAC address _memory_ and hexadecimal string representation is still always from left (MSB, bit 7) to right (LSB, bit 0). And the standard deals with memory representations only, so the transmission order of a MAC doesnt' matter here. As mentioned, OSSP uuid already implements this correctly. The FreeBSD uuidgen(2) and Apache APR generators I've also fixed myself recently in CVS. And for the remaining implementations I've submitted patches to the authors and they all (except for WINE) responded that they took over the patch. So the results of this long-standing bug we were able to fix -- at least for the free software world ;-). What is now remaining is that you finally also should fix this in your standard so the bug does not spread any longer into other implementations. Here is the minimal required patch against your draft: --- draft-mealling-uuid-urn-02.txt.orig Mon Feb 2 21:50:35 2004 +++ draft-mealling-uuid-urn-02.txt Fri Feb 13 15:41:49 2004 @@ -751,7 +751,7 @@ [6], and the cost was US$550. A better solution is to obtain a 47-bit cryptographic quality random - number, and use it as the low 47 bits of the node ID, with the most + number, and use it as the low 47 bits of the node ID, with the least significant bit of the first octet of the node ID set to one. This bit is the unicast/multicast bit, which will never be set in IEEE 802 addresses obtained from network cards; hence, there can never be a @@ -1369,7 +1369,7 @@ } else { get_random_info(seed); - seed[0] |= 0x80; + seed[0] |= 0x01; memcpy(&saved_node, seed, sizeof saved_node); fp = fopen("nodeid", "wb"); if (fp) { But I recommend you to perhaps also add one or two sentences which explain what I explained above (the difference between memory and transmission order), just to make sure people are not confused in the other direction and then think there is a bug (in the then fixed and correct) standard, because they know about the transmission order of MAC addresses. Yours, Ralf S. Engelschall rse@engelschall.com www.engelschall.com Date: Fri, 13 Feb 2004 11:05:51 -0500 From: Rich Salz To: rse@engelschall.com Cc: paulle@microsoft.com, michael@neonym.net Message-ID: <402CF5DF.4020601@datapower.com> Subject: Re: [PATCH] draft-mealling-uuid-urn-02.txt References: <20040213150931.GA7656@engelschall.com> Content-Length: 431 Lines: 11 Thanks for writing, Ralf. You're correct, and this has been noted by the IESG and will be fixed in the next draft. It's unfortunate we made it this far with the bug. /r$ -- Rich Salz, Chief Security Architect DataPower Technology http://www.datapower.com XS40 XML Security Gateway http://www.datapower.com/products/xs40.html XML Security Overview http://www.datapower.com/xmldev/xmlsecurity.html Date: Thu, 22 Jan 2004 05:34:11 -0800 (PST) From: "Ralf S. Engelschall" Message-Id: <200401221334.i0MDYB1K018137@repoman.freebsd.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/kern kern_uuid.c X-FreeBSD-CVS-Branch: HEAD X-Loop: FreeBSD.ORG Content-Length: 1907 Lines: 42 rse 2004/01/22 05:34:11 PST FreeBSD src repository Modified files: sys/kern kern_uuid.c Log: Fix generation of random multicast MAC address. In case no real/physical IEEE 802 address is available, both the expired "draft-leach-uuids-guids-01" (section "4. Node IDs when no IEEE 802 network card is available") and RFC 2518 (section "6.4.1 Node Field Generation Without the IEEE 802 Address") recommend (quoted from RFC 2518): "The ideal solution is to obtain a 47 bit cryptographic quality random number, and use it as the low 47 bits of the node ID, with the _most_ significant bit of the first octet of the node ID set to 1. This bit is the unicast/multicast bit, which will never be set in IEEE 802 addresses obtained from network cards; hence, there can never be a conflict between UUIDs generated by machines with and without network cards." Unfortunately, this incorrectly explains how to implement this and the FreeBSD UUID generator code inherited this generation bug from the broken reference code in the standards draft. They should instead specify the "_least_ significant bit of the first octet of the node ID" as the multicast bit in a memory and hexadecimal string representation of a 48-bit IEEE 802 MAC address. This standards bug arised from a false interpretation, as the multicast bit is actually the _most_ significant bit in IEEE 802.3 (Ethernet) _transmission order_ of an IEEE 802 MAC address. The standards authors forgot that the bitwise order of an _octet_ from a MAC address _memory_ and hexadecimal string representation is still always from left (MSB, bit 7) to right (LSB, bit 0). Fortunately, this UUID generation bug could have occurred on systems without any Ethernet NICs only. Revision Changes Path 1.7 +1 -1 src/sys/kern/kern_uuid.c Date: Thu, 22 Jan 2004 15:20:22 -0800 From: Marcel Moolenaar To: "Ralf S. Engelschall" Cc: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern kern_uuid.c Message-ID: <20040122232022.GA77798@ns1.xcllnt.net> References: <200401221334.i0MDYB1K018137@repoman.freebsd.org> Content-Length: 380 Lines: 14 On Thu, Jan 22, 2004 at 05:34:11AM -0800, Ralf S. Engelschall wrote: > rse 2004/01/22 05:34:11 PST > > FreeBSD src repository > > Modified files: > sys/kern kern_uuid.c > Log: > Fix generation of random multicast MAC address. An excellent catch and an outstanding commit log. Chapeau! -- Marcel Moolenaar USPA: A-39004 marcel@xcllnt.net ___________________________________________________________________________ Index: ChangeLog =================================================================== RCS file: /e/ossp/cvs/ossp-pkg/uuid/ChangeLog,v retrieving revision 1.42 diff -u -d -r1.42 ChangeLog --- ChangeLog 13 Feb 2004 16:17:07 -0000 1.42 +++ ChangeLog 13 Feb 2004 21:01:07 -0000 @@ -13,6 +13,14 @@ Changes between 0.9.6 and 0.9.7 (11-Feb-2004 to 13-Feb-2004) + o remove --with-rfc2518 option and functionality because + even the IETF/IESG has finally approved our report about the broken + random multicast MAC address generation in the standard (and + will fix it in new versions of the draft-mealling-uuid-urn). So, + finally get rid of this broken-by-design backward compatibility + functionality. + [Ralf S. Engelschall] + o Add support to uuid(1) CLI for decoding from stdin for both binary and string representations. [Ralf S. Engelschall] Index: uuid.ac =================================================================== RCS file: /e/ossp/cvs/ossp-pkg/uuid/uuid.ac,v retrieving revision 1.10 diff -u -d -r1.10 uuid.ac --- uuid.ac 11 Feb 2004 14:38:40 -0000 1.10 +++ uuid.ac 13 Feb 2004 19:20:32 -0000 @@ -71,12 +71,6 @@ AC_CHECK_SIZEOF(unsigned long long, 8) dnl # options - AC_ARG_WITH(rfc2518, - AC_HELP_STRING([--with-rfc2518], [use incorrect generation of IEEE 802 multicast addresses according to RFC2518]), - [ac_cv_with_rfc2518=$withval], [ac_cv_with_rfc2518=no]) - if test ".$ac_cv_with_rfc2518" = ".yes"; then - AC_DEFINE(WITH_RFC2518, 1, [whether to use incorrect generation of IEEE 802 multicast addresses according to RFC2518]) - fi AC_ARG_WITH(dce, AC_HELP_STRING([--with-dce], [build DCE 1.1 backward compatibility API]), [ac_cv_with_dce=$withval], [ac_cv_with_dce=no]) Index: uuid.c =================================================================== RCS file: /e/ossp/cvs/ossp-pkg/uuid/uuid.c,v retrieving revision 1.44 diff -u -d -r1.44 uuid.c --- uuid.c 19 Jan 2004 14:56:35 -0000 1.44 +++ uuid.c 13 Feb 2004 19:22:01 -0000 @@ -61,69 +61,9 @@ Unix UTC base time is January 1, 1970) */ #define UUID_TIMEOFFSET "01B21DD213814000" -/* IEEE 802 MAC address encoding/decoding bit fields - - ATTENTION: - - In case no real/physical IEEE 802 address is available, both - "draft-leach-uuids-guids-01" (section "4. Node IDs when no IEEE 802 - network card is available") and RFC 2518 (section "6.4.1 Node Field - Generation Without the IEEE 802 Address") recommend (quoted from RFC - 2518): - - "The ideal solution is to obtain a 47 bit cryptographic quality - random number, and use it as the low 47 bits of the node ID, with - the most significant bit of the first octet of the node ID set to - 1. This bit is the unicast/multicast bit, which will never be set - in IEEE 802 addresses obtained from network cards; hence, there can - never be a conflict between UUIDs generated by machines with and - without network cards." - - This passage clearly explains the intention to use IEEE 802 multicast - addresses. Unfortunately, it incorrectly explains how to implement - this! It should instead specify the "*LEAST* significant bit of the - first octet of the node ID" as the multicast bit in a memory and - hexadecimal string representation of a 48-bit IEEE 802 MAC address. - - Unfortunately, even the reference implementation included in the - expired IETF "draft-leach-uuids-guids-01" incorrectly set the - multicast bit with an OR bit operation and an incorrect mask of - 0x80. Hence, several other UUID implementations found on the - Internet have inherited this bug. - - Luckily, neither DCE 1.1 nor ISO/IEC 11578:1996 are affected by this - problem. They disregard the topic of missing IEEE 802 addresses - entirely, and thus avoid adopting this bug from the original draft - and code ;-) - - It seems that this standards bug arises from a false interpretation, - as the multicast bit is actually the *MOST* significant bit in IEEE - 802.3 (Ethernet) _transmission order_ of an IEEE 802 MAC address. The - authors were likely not aware that the bitwise order of an octet from - a MAC address memory and hexadecimal string representation is still - always from left (MSB, bit 7) to right (LSB, bit 0). - - For more information, see "Understanding Physical Addresses" in - "Ethernet -- The Definitive Guide", p.43, and the section "ETHERNET - MULTICAST ADDRESSES" in http://www.iana.org/assignments/ethernet-numbers. - - At OSSP, we do it the intended/correct way and generate a real - IEEE 802 multicast address. Those wanting to encode broken IEEE - 802 MAC addresses (as specified) can nevertheless use a brain dead - compile-time option to switch off the correct behavior. When decoding - we always use the correct behavior of course. */ - -/* encoding */ -#ifdef WITH_RFC2518 -#define IEEE_MAC_MCBIT_ENC BM_OCTET(1,0,0,0,0,0,0,0) -#else -#define IEEE_MAC_MCBIT_ENC BM_OCTET(0,0,0,0,0,0,0,1) -#endif -#define IEEE_MAC_LOBIT_ENC BM_OCTET(0,0,0,0,0,0,1,0) - -/* decoding */ -#define IEEE_MAC_MCBIT_DEC BM_OCTET(0,0,0,0,0,0,0,1) -#define IEEE_MAC_LOBIT_DEC BM_OCTET(0,0,0,0,0,0,1,0) +/* IEEE 802 MAC address encoding/decoding bit fields */ +#define IEEE_MAC_MCBIT BM_OCTET(0,0,0,0,0,0,0,1) +#define IEEE_MAC_LOBIT BM_OCTET(0,0,0,0,0,0,1,0) /* IEEE 802 MAC address octet length */ #define IEEE_MAC_OCTETS 6 @@ -622,8 +562,8 @@ (unsigned int)uuid->obj.node[3], (unsigned int)uuid->obj.node[4], (unsigned int)uuid->obj.node[5], - (uuid->obj.node[0] & IEEE_MAC_LOBIT_DEC ? "local" : "global"), - (uuid->obj.node[0] & IEEE_MAC_MCBIT_DEC ? "multicast" : "unicast")); + (uuid->obj.node[0] & IEEE_MAC_LOBIT ? "local" : "global"), + (uuid->obj.node[0] & IEEE_MAC_MCBIT ? "multicast" : "unicast")); } else { /* decode anything else as hexadecimal byte-string only */ @@ -843,8 +783,8 @@ if ((mode & UUID_MAKE_MC) || (uuid->mac[0] & BM_OCTET(1,0,0,0,0,0,0,0))) { /* generate random IEEE 802 local multicast MAC address */ prng_data(uuid->prng, (void *)&(uuid->obj.node), sizeof(uuid->obj.node)); - uuid->obj.node[0] |= IEEE_MAC_MCBIT_ENC; - uuid->obj.node[0] |= IEEE_MAC_LOBIT_ENC; + uuid->obj.node[0] |= IEEE_MAC_MCBIT; + uuid->obj.node[0] |= IEEE_MAC_LOBIT; } else { /* use real regular MAC address */ uuid-1.6.2/INSTALL 644 0 0 124510764216727 124150ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier INSTALLATION To install OSSP uuid into /path/to/uuid/ perform the following steps in your shell: $ ./configure --prefix=/path/to/uuid [--with-dce] [--with-perl[=/path/to/[bin[/perl] --with-perl-compat]] [--with-php] $ make $ make check $ make install [DESTDIR=/path/to/temp/root] uuid-1.6.2/MANIFEST 644 0 0 167610764216727 125250ustar osspossp 0 0AUTHORS BINDINGS ChangeLog HISTORY INSTALL MANIFEST Makefile.PL Makefile.in NEWS OVERVIEW PORTING README SEEALSO THANKS TODO USERS aclocal.m4 config.guess config.h.in config.sub configure configure.ac libtool.m4 ltmain.sh perl/MANIFEST perl/Makefile.PL perl/uuid.pm perl/uuid.pod perl/uuid.tm perl/uuid.ts perl/uuid.xs perl/uuid_compat.pm perl/uuid_compat.pod perl/uuid_compat.ts pgsql/Makefile pgsql/uuid.c pgsql/uuid.sql.in pgsql/uuid.txt php/Makefile.local php/config.m4 php/package.xml php/uuid.c php/uuid.php4 php/uuid.php5 php/uuid.ts shtool uuid++.3 uuid++.cc uuid++.hh uuid++.pod uuid-config.1 uuid-config.in uuid-config.pod uuid.1 uuid.3 uuid.ac uuid.c uuid.h.in uuid.pc.in uuid.pod uuid_ac.h uuid_bm.h uuid_cli.c uuid_cli.pod uuid_dce.c uuid_dce.h uuid_mac.c uuid_mac.h uuid_md5.c uuid_md5.h uuid_prng.c uuid_prng.h uuid_sha1.c uuid_sha1.h uuid_str.c uuid_str.h uuid_time.c uuid_time.h uuid_ui128.c uuid_ui128.h uuid_ui64.c uuid_ui64.h uuid_vers.h uuid-1.6.2/Makefile.PL 644 0 0 436110764555614 133410ustar osspossp 0 0## ## OSSP uuid - Universally Unique Identifier ## Copyright (c) 2004-2008 Ralf S. Engelschall ## Copyright (c) 2004-2008 The OSSP Project ## ## This file is part of OSSP uuid, a library for the generation ## of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS 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 ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## ## Makefile.PL: top-level Perl ExtUtils::MakeMaker wrapper script ## require 5.008; use IO::File; my $ARGS = join(" ", @ARGV); print "++ writing Makefile\n"; my $mk = new IO::File ">Makefile" or die; $mk->print(<< "EOF"); PERL = $^X FULLPERL = $^X ARGS = $ARGS all pure_all: \@if [ ! -d build ]; then mkdir build; fi \@if [ ! -f build/Makefile ]; then (cd build && ../configure --disable-shared); fi \@if [ ! -f build/libuuid.la ]; then (cd build && \$(MAKE) \$(MFLAGS) libuuid.la); fi \@if [ ! -f perl/Makefile ]; then (cd perl && \$(PERL) Makefile.PL \$(ARGS)); fi \@cd perl && \$(MAKE) \$(MFLAGS) \$\@ install pure_install test: \@cd perl && \$(MAKE) \$(MFLAGS) \$\@ clean: \@cd build && \$(MAKE) \$(MFLAGS) \$\@ \@cd perl && \$(MAKE) \$(MFLAGS) \$\@ distclean realclean: \@cd build && \$(MAKE) \$(MFLAGS) \$\@ \@cd perl && \$(MAKE) \$(MFLAGS) \$\@ -rm -rf build || true -rm -rf Makefile || true EOF $mk->close(); uuid-1.6.2/Makefile.in 644 0 0 3415010764555614 134530ustar osspossp 0 0## ## OSSP uuid - Universally Unique Identifier ## Copyright (c) 2004-2008 Ralf S. Engelschall ## Copyright (c) 2004-2008 The OSSP Project ## ## This file is part of OSSP uuid, a library for the generation ## of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS 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 ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## ## Makefile.in: make(1) build procedure ## @SET_MAKE@ VPATH = @srcdir@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ S = $(srcdir) C = . DESTDIR = prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ bindir = @bindir@ libdir = @libdir@ includedir = @includedir@ mandir = @mandir@ CC = @CC@ CXX = @CXX@ CPPFLAGS = -I. -I$(S) @CPPFLAGS@ @DEFS@ CFLAGS = @CFLAGS@ CXXFLAGS = @CXXFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ RM = rm -f CP = cp RMDIR = rmdir SHTOOL = $(S)/shtool LIBTOOL = $(C)/libtool TRUE = true POD2MAN = pod2man PERL = @PERL@ PHP = @PHP@ PG_CONFIG = @PG_CONFIG@ LIB_NAME = libuuid.la LIB_OBJS = uuid.lo uuid_md5.lo uuid_sha1.lo uuid_prng.lo uuid_mac.lo uuid_time.lo uuid_ui64.lo uuid_ui128.lo uuid_str.lo DCE_NAME = libuuid_dce.la DCE_OBJS = uuid_dce.lo $(LIB_OBJS) CXX_NAME = libuuid++.la CXX_OBJS = uuid++.lo $(LIB_OBJS) PRG_NAME = uuid PRG_OBJS = uuid_cli.o MAN_NAME = uuid.3 uuid++.3 uuid.1 PERL_NAME = $(S)/perl/blib/lib/OSSP/uuid.pm PERL_OBJS = $(S)/perl/uuid.pm PHP_NAME = $(S)/php/modules/uuid.so PHP_OBJS = $(S)/php/uuid.c PGSQL_NAME = $(S)/pgsql/libuuid.so PGSQL_OBJS = $(S)/pgsql/uuid.c TARGETS = $(LIB_NAME) @DCE_NAME@ @CXX_NAME@ $(PRG_NAME) @PERL_NAME@ @PHP_NAME@ @PGSQL_NAME@ WITH_DCE = @WITH_DCE@ WITH_CXX = @WITH_CXX@ WITH_PERL = @WITH_PERL@ WITH_PERL_COMPAT = @WITH_PERL_COMPAT@ WITH_PHP = @WITH_PHP@ WITH_PGSQL = @WITH_PGSQL@ .SUFFIXES: .SUFFIXES: .c .cc .o .lo all: $(TARGETS) .c.o: $(CC) $(CPPFLAGS) $(CFLAGS) -c $< .cc.o: $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< .c.lo: @$(LIBTOOL) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) -c $< .cc.lo: @$(LIBTOOL) --mode=compile $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(LIB_NAME): $(LIB_OBJS) @$(LIBTOOL) --mode=link $(CC) -o $(LIB_NAME) $(LIB_OBJS) -rpath $(libdir) \ -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h` $(DCE_NAME): $(DCE_OBJS) @$(LIBTOOL) --mode=link $(CC) -o $(DCE_NAME) $(DCE_OBJS) -rpath $(libdir) \ -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h` $(CXX_NAME): $(CXX_OBJS) @$(LIBTOOL) --mode=link $(CXX) -o $(CXX_NAME) $(CXX_OBJS) -rpath $(libdir) \ -version-info `$(SHTOOL) version -l c -d libtool $(S)/uuid_vers.h` $(PRG_NAME): $(PRG_OBJS) $(LIB_NAME) @$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $(PRG_NAME) $(PRG_OBJS) $(LIB_NAME) $(LIBS) $(PERL_NAME): $(PERL_OBJS) $(LIB_NAME) @cd $(S)/perl && $(PERL) Makefile.PL PREFIX=$(prefix) COMPAT=$(WITH_PERL_COMPAT) && $(MAKE) $(MFLAGS) all @touch $(PERL_NAME) $(PHP_NAME): $(PHP_OBJS) $(LIB_NAME) @cd $(S)/php && $(MAKE) $(MFLAGS) -f Makefile.local PHP=$(PHP) @touch $(PHP_NAME) $(PGSQL_NAME): $(PGSQL_OBJS) $(LIB_NAME) @cd $(S)/pgsql && $(MAKE) $(MFLAGS) PG_CONFIG=$(PG_CONFIG) @touch $(PGSQL_NAME) uuid.lo: $(S)/uuid.c uuid.h $(S)/uuid_md5.h $(S)/uuid_sha1.h $(S)/uuid_prng.h $(S)/uuid_mac.h $(S)/uuid_ui64.h $(S)/uuid_ui128.h $(S)/uuid_str.h $(S)/uuid_bm.h $(S)/uuid_ac.h uuid_mac.lo: $(S)/uuid_mac.c $(S)/uuid_mac.h uuid_md5.lo: $(S)/uuid_md5.c $(S)/uuid_md5.h uuid_sha1.lo: $(S)/uuid_sha1.c $(S)/uuid_sha1.h uuid_prng.lo: $(S)/uuid_prng.c $(S)/uuid_prng.h uuid_str.lo: $(S)/uuid_str.c $(S)/uuid_str.h uuid_ui64.lo: $(S)/uuid_ui64.c $(S)/uuid_ui64.h uuid_ui128.lo: $(S)/uuid_ui64.c $(S)/uuid_ui128.h uuid_dce.lo: $(S)/uuid_dce.c uuid.h $(S)/uuid_dce.h uuid_cli.o: $(S)/uuid_cli.c uuid.h uuid++.lo: $(S)/uuid++.cc $(S)/uuid++.hh man: uuid.3 uuid++.3 uuid-config.1 uuid.1 uuid.3: uuid.pod V1=`$(SHTOOL) version -l c -d short $(S)/uuid_vers.h`; \ V2=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h`; \ D=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h | sed -e 's;.*(;;' -e 's;).*;;'`; \ $(POD2MAN) --quotes=none \ --section=3 --center="Universally Unique Identifier" \ --release="$$D" --date="OSSP uuid $$V1" $(S)/uuid.pod | \ sed -e "s;UUID_VERSION_STR;$$V2;" >uuid.3 uuid++.3: uuid++.pod V1=`$(SHTOOL) version -l c -d short $(S)/uuid_vers.h`; \ V2=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h`; \ D=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h | sed -e 's;.*(;;' -e 's;).*;;'`; \ $(POD2MAN) --quotes=none \ --section=3 --center="Universally Unique Identifier" \ --release="$$D" --date="OSSP uuid $$V1" $(S)/uuid++.pod | \ sed -e "s;UUID_VERSION_STR;$$V2;" >uuid++.3 uuid-config.1: uuid-config.pod V1=`$(SHTOOL) version -l c -d short $(S)/uuid_vers.h`; \ V2=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h`; \ D=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h | sed -e 's;.*(;;' -e 's;).*;;'`; \ $(POD2MAN) --quotes=none \ --section=1 --center="Universally Unique Identifier" \ --release="$$D" --date="OSSP uuid $$V1" $(S)/uuid-config.pod | \ sed -e "s;UUID_VERSION_STR;$$V2;" >uuid-config.1 uuid.1: uuid_cli.pod V1=`$(SHTOOL) version -l c -d short $(S)/uuid_vers.h`; \ V2=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h`; \ D=`$(SHTOOL) version -l c -d long $(S)/uuid_vers.h | sed -e 's;.*(;;' -e 's;).*;;'`; \ $(CP) $(S)/uuid_cli.pod /tmp/uuid.pod; \ $(POD2MAN) --quotes=none \ --section=1 --center="Universally Unique Identifier" \ --release="$$D" --date="OSSP uuid $$V1" /tmp/uuid.pod | \ sed -e "s;UUID_VERSION_STR;$$V2;" >uuid.1; \ $(RM) /tmp/uuid.pod check: all @echo "==== UUID version 1 (time and node based): 4 single iterations"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v1 -n 4 -1 @echo "==== UUID version 1 (time and node based): 4 subsequent iterations"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v1 -n 4 @echo "==== UUID version 3 (name based, MD5): 2 times repeated"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v3 -n 2 ns:URL http://www.ossp.org/ @echo "==== UUID version 5 (name based, SHA-1): 2 times repeated"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v5 -n 2 ns:URL http://www.ossp.org/ @echo "==== UUID version 4 (random data based): 4 single iterations"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v4 -n 4 -1 @echo "==== UUID version 4 (random data based): 4 subsequent iterations"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -v4 -n 4 @echo "==== UUID version 1 generation and decoding"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute ./$(PRG_NAME) -v1`; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute ./$(PRG_NAME) -v1 -m` @echo "==== UUID version 3 generation and decoding"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute ./$(PRG_NAME) -v3 ns:URL http://www.ossp.org/` @echo "==== UUID version 5 generation and decoding"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute ./$(PRG_NAME) -v5 ns:URL http://www.ossp.org/` @echo "==== UUID version 3 generation and decoding"; \ $(LIBTOOL) --mode=execute ./$(PRG_NAME) -d `$(LIBTOOL) --mode=execute ./$(PRG_NAME) -v4` -@if [ ".$(WITH_PERL)" = .yes ]; then \ echo "==== Perl bindings to C API"; \ (cd $(S)/perl && $(MAKE) $(MFLAGS) test); \ fi -@if [ ".$(WITH_PHP)" = .yes ]; then \ echo "==== PHP bindings to C API"; \ (cd $(S)/php && $(MAKE) $(MFLAGS) -f Makefile.local test PHP=$(PHP)); \ fi -@if [ ".$(WITH_PGSQL)" = .yes ]; then \ echo "==== PGSQL bindings to C API"; \ (cd $(S)/pgsql && $(MAKE) $(MFLAGS) test PG_CONFIG=$(PG_CONFIG)); \ fi .PHONY: install install: $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(prefix) $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(bindir) $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(includedir) $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(libdir)/pkgconfig $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(mandir)/man3 $(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(mandir)/man1 $(SHTOOL) install -c -m 755 uuid-config $(DESTDIR)$(bindir)/ $(SHTOOL) install -c -m 644 $(S)/uuid-config.1 $(DESTDIR)$(mandir)/man1/ $(SHTOOL) install -c -m 644 $(S)/uuid.pc $(DESTDIR)$(libdir)/pkgconfig/ $(SHTOOL) install -c -m 644 uuid.h $(DESTDIR)$(includedir)/ -@if [ ".$(WITH_DCE)" = .yes ]; then \ echo "$(SHTOOL) install -c -m 644 $(S)/uuid_dce.h $(DESTDIR)$(includedir)/"; \ $(SHTOOL) install -c -m 644 $(S)/uuid_dce.h $(DESTDIR)$(includedir)/; \ fi -@if [ ".$(WITH_CXX)" = .yes ]; then \ echo "$(SHTOOL) install -c -m 644 $(S)/uuid++.hh $(DESTDIR)$(includedir)/"; \ $(SHTOOL) install -c -m 644 $(S)/uuid++.hh $(DESTDIR)$(includedir)/; \ fi $(SHTOOL) install -c -m 644 $(S)/uuid.3 $(DESTDIR)$(mandir)/man3/ -@if [ ".$(WITH_CXX)" = .yes ]; then \ echo "$(SHTOOL) install -c -m 644 $(S)/uuid++.3 $(DESTDIR)$(mandir)/man3/"; \ $(SHTOOL) install -c -m 644 $(S)/uuid++.3 $(DESTDIR)$(mandir)/man3/; \ fi @$(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 $(LIB_NAME) $(DESTDIR)$(libdir)/ -@if [ ".$(WITH_DCE)" = .yes ]; then \ $(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 $(DCE_NAME) $(DESTDIR)$(libdir)/; \ fi -@if [ ".$(WITH_CXX)" = .yes ]; then \ $(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 $(CXX_NAME) $(DESTDIR)$(libdir)/; \ fi @$(LIBTOOL) --mode=install $(SHTOOL) install -c -s -m 755 uuid $(DESTDIR)$(bindir)/ $(SHTOOL) install -c -m 644 $(S)/uuid.1 $(DESTDIR)$(mandir)/man1/ -@if [ ".$(WITH_PERL)" = .yes ]; then \ (cd $(S)/perl && $(MAKE) $(MFLAGS) install DESTDIR=$(DESTDIR)); \ fi -@if [ ".$(WITH_PHP)" = .yes ]; then \ (cd $(S)/php && $(MAKE) $(MFLAGS) -f Makefile.local install EXTDIR=$(prefix)/lib/php PHP=$(PHP) DESTDIR=$(DESTDIR)); \ fi -@if [ ".$(WITH_PGSQL)" = .yes ]; then \ (cd $(S)/pgsql && $(MAKE) $(MFLAGS) install DESTDIR=$(DESTDIR) PG_CONFIG=$(PG_CONFIG)); \ fi .PHONY: uninstall uninstall: -$(RM) $(DESTDIR)$(mandir)/man1/uuid.1 -@$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(bindir)/uuid -@$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIB_NAME) -@if [ ".$(WITH_DCE)" = .yes ]; then \ $(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(DCE_NAME); \ fi -@if [ ".$(WITH_CXX)" = .yes ]; then \ $(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(CXX_NAME); \ fi -$(RM) $(DESTDIR)$(mandir)/man3/uuid.3 -@if [ ".$(WITH_CXX)" = .yes ]; then \ echo "$(RM) $(DESTDIR)$(mandir)/man3/uuid++.3"; \ $(RM) $(DESTDIR)$(mandir)/man3/uuid++.3; \ fi -$(RM) $(DESTDIR)$(includedir)/uuid.h -@if [ ".$(WITH_DCE)" = .yes ]; then \ echo "$(RM) $(DESTDIR)$(includedir)/uuid_dce.h"; \ $(RM) $(DESTDIR)$(includedir)/uuid_dce.h; \ fi -@if [ ".$(WITH_CXX)" = .yes ]; then \ echo "$(RM) $(DESTDIR)$(includedir)/uuid++.hh"; \ $(RM) $(DESTDIR)$(includedir)/uuid++.hh; \ fi -$(RM) $(DESTDIR)$(libdir)/pkgconfig/uuid.pc -$(RM) $(DESTDIR)$(mandir)/man1/uuid-config.1 -$(RM) $(DESTDIR)$(bindir)/uuid-config -$(RMDIR) $(DESTDIR)$(mandir)/man1 >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(mandir)/man3 >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(mandir) >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(libdir)/pkgconfig >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(libdir) >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(includedir) >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(bindir) >/dev/null 2>&1 || $(TRUE) -$(RMDIR) $(DESTDIR)$(prefix) >/dev/null 2>&1 || $(TRUE) .PHONY: clean clean: -$(RM) $(LIB_NAME) $(LIB_OBJS) -@if [ ".$(WITH_DCE)" = .yes ]; then \ echo "$(RM) $(DCE_NAME) $(DCE_OBJS)"; \ $(RM) $(DCE_NAME) $(DCE_OBJS); \ fi -@if [ ".$(WITH_CXX)" = .yes ]; then \ echo "$(RM) $(CXX_NAME) $(CXX_OBJS)"; \ $(RM) $(CXX_NAME) $(CXX_OBJS); \ fi -$(RM) $(PRG_NAME) $(PRG_OBJS) -$(RM) -r .libs >/dev/null 2>&1 || $(TRUE) -$(RM) *.o *.lo -@if [ ".$(WITH_PERL)" = .yes ]; then \ (cd $(S)/perl && $(MAKE) $(MFLAGS) clean || true); \ fi -@if [ ".$(WITH_PHP)" = .yes ]; then \ (cd $(S)/php && $(MAKE) $(MFLAGS) -f Makefile.local clean || true); \ fi -@if [ ".$(WITH_PGSQL)" = .yes ]; then \ (cd $(S)/pgsql && $(MAKE) $(MFLAGS) clean PG_CONFIG=$(PG_CONFIG) || true); \ fi distclean: clean -$(RM) config.log config.status config.cache -$(RM) Makefile config.h uuid-config uuid.h uuid.pc -$(RM) libtool -@if [ ".$(WITH_PERL)" = .yes ]; then \ (cd $(S)/perl && $(MAKE) $(MFLAGS) distclean || true; rm -f Makefile.old); \ fi -@if [ ".$(WITH_PHP)" = .yes ]; then \ (cd $(S)/php && $(MAKE) $(MFLAGS) -f Makefile.local distclean || true); \ fi -@if [ ".$(WITH_PGSQL)" = .yes ]; then \ (cd $(S)/pgsql && $(MAKE) $(MFLAGS) distclean PG_CONFIG=$(PG_CONFIG) || true); \ fi realclean: distclean -$(RM) uuid.3 uuid.1 -$(RM) configure config.h.in -$(RM) shtool -$(RM) ltmain.sh libtool.m4 config.guess config.sub -@if [ ".$(WITH_PERL)" = .yes ]; then \ (cd $(S)/perl && $(MAKE) $(MFLAGS) realclean || true; rm -f Makefile.old); \ fi -@if [ ".$(WITH_PHP)" = .yes ]; then \ (cd $(S)/php && $(MAKE) $(MFLAGS) -f Makefile.local realclean || true); \ fi -@if [ ".$(WITH_PGSQL)" = .yes ]; then \ (cd $(S)/pgsql && $(MAKE) $(MFLAGS) realclean PG_CONFIG=$(PG_CONFIG) || true); \ fi uuid-1.6.2/NEWS 644 0 0 207510764216727 120650ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier NEWS This is a list of major changes to OSSP uuid. For more detailed change descriptions, please have a look at the ChangeLog file. Major changes between 1.4 and 1.5 o Many internal code cleanups and fixes. o Improved and fixed PostgreSQL API. o Improved and fixed PHP API. Major changes between 1.3 and 1.4 o Added PostgreSQL API. Major changes between 1.2 and 1.3 o Added Perl TIE-style API. o Added Perl Data::UUID backward compatibility API. o Added C++ API. o Added PHP API. Major changes between 1.1 and 1.2 o Added support for version 5 UUIDs (name-based, SHA-1) Major changes between 1.0 and 1.1 o Added Perl API Major changes between 0.9 and 1.0 o Initial functionality uuid-1.6.2/OVERVIEW 644 0 0 1154610764216727 126020ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier OVERVIEW A UUID consists of 128 bits (16-octets) which are split into 6 octet-bounded unsigned integer fields ("time_low", "time_mid", "time_hi_and_version", "clk_seq_hi_res", "clk_seq_low" and "node") and where two fields are multiplexed with a fixed size 4-bit "version" and a variable sized 2-3 bit "variant" field. The UUID octets are counted from left to right 15 to 0 and the bits in each octet are counted from left to right 7 to 0 (most significant bit first, least significant bit last). The unsigned integer fields formed out of multiple octets are stored in "network byte order" (most significant octet first, least significant octet last). A UUID is stored and transmitted from left to right, i.e., in "network byte order" with the most significant octet first and the least significant octet last. Illustration 1: (single octet array, less compact, more annotations) Bits: [4] [2-3] Field: version variant MSO -->| |<-- -->| |<-- LSO \ | | | | / Octet: 15 14 13 12 11 10 | |9 8 | | 7 6 5 4 3 2 1 0 +------++------++------++------++------++------++------++------++------++------++------++------++------++------++------++------+ UUID: | || || || || || |#### || |##: || || || || || || || | +------++------++------++------++------++------++------++------++------++------++------++------++------++------++------++------+ Bit: 76543210765432107654321076543210765432107654321076543210765432107654321076543210765432107654321076543210765432107654321076543210 /| || || || || || |\ MSB | || || || || || | LSB |<---------------------------->||<------------>||<------------>||<---->||<---->||<-------------------------------------------->| time_hi clk_seq clk_seq Field: time_low time_mid _and_version _hi_res _low node Bits: [32] [16] [16] [5-6] [8] [48] Illustration 2: (two octet arrays, more compact, less annotations) [4] version -->| |<-- | | | | [16] [32] [16] | |time_hi time_low time_mid | _and_version |<---------------------------->||<------------>||<------------>| | MSO || || | | | / || || | | | 15 14 13 12 || 11 10 || |9 8 | 7654321076543210765432107654321076543210765432107654321076543210 /+------++------++------++------++------++------++------++------+~ MSB | || || || || || |#### || | ... +------++------++------++------++------++------++------++------+~ ~+------++------++------++------++------++------++------++------+ ... ##: || || || || || || || | LSB ~+------++------++------++------++------++------++------++------+/ 7654321076543210765432107654321076543210765432107654321076543210 | | 7 || 6 || 5 4 3 2 1 0 | | | || || / | | | || || LSO | |<---->||<---->||<-------------------------------------------->| |clk_seq clk_seq node |_hi_res _low [48] |[5-6] [8] | | -->| |<-- variant [2-3] uuid-1.6.2/PORTING 644 0 0 217410764216727 124330ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier PORTING OSSP uuid was already written with maximum portability in mind, so there should be no great effort required to get it running on any Unix platform with a reasonable POSIX API. Additionally, the portability was tested by successfully building and running it on the following particular Unix platforms (syntax is "- ()"): alpha-tru644.0 (cc) alpha-tru645.1 (gcc, cc) hppa-hpux11.11 (cc) ia64-hpux11.23 (cc) ix86-debian2.2 (gcc, icc) ix86-debian3.0 (gcc) ix86-debian3.1 (gcc) ix86-freebsd4.9 (gcc) ix86-freebsd5.2 (gcc, icc) ix86-netbsd1.6 (gcc) ix86-qnx6.2 (gcc) ix86-solaris10 (gcc) ix86-unixware7.1.3 (cc) mips64-irix6.5 (gcc) sparc64-solaris8 (gcc, forte) sparc64-solaris9 (gcc) uuid-1.6.2/README 644 0 0 543611033514421 122300ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier Version 1.6.2 (04-Jul-2008) ABSTRACT OSSP uuid is a ISO-C:1999 application programming interface (API) and corresponding command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and IETF RFC-4122 compliant Universally Unique Identifier (UUID). It supports DCE 1.1 variant UUIDs of version 1 (time and node based), version 3 (name based, MD5), version 4 (random number based) and version 5 (name based, SHA-1). Additional API bindings are provided for the languages ISO-C++:1998, Perl:5 and PHP:4/5. Optional backward compatibility exists for the ISO-C DCE-1.1 and Perl Data::UUID APIs. UUIDs are 128 bit numbers which are intended to have a high likelihood of uniqueness over space and time and are computationally difficult to guess. They are globally unique identifiers which can be locally generated without contacting a global registration authority. UUIDs are intended as unique identifiers for both mass tagging objects with an extremely short lifetime and to reliably identifying very persistent objects across a network. COPYRIGHT AND LICENSE Copyright (c) 2004-2008 Ralf S. Engelschall Copyright (c) 2004-2008 The OSSP Project This file is part of OSSP uuid, a library for the generation of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR CONTRIBUTORS 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 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. HOME AND DOCUMENTATION The documentation and latest release can be found on o http://www.ossp.org/pkg/lib/uuid/ o ftp://ftp.ossp.org/pkg/lib/uuid/ uuid-1.6.2/SEEALSO 644 0 0 322010764216727 123750ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier SEE ALSO Although we consider OSSP uuid the ultimate reference implementation of an UUID generator, there are multiple alternatives available. Following is a short reference of all currently known UUID implementations for platforms with an Unix/POSIX API: o OSSP uuid (ISO-C), OSSP::uuid (Perl) http://www.ossp.org/pkg/lib/uuid/ http://cvs.ossp.org/ossp-pkg/uuid/ o FreeBSD libc (ISO-C) http://www.freebsd.org/ http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/uuid/ o Sun Solaris libc (ISO-C), DCE::UUID (Perl/XS) http://www.opensolaris.org/ http://cvs.opensolaris.org/source/xref/usr/src/lib/libuuid/ o APR libaprutil (ISO-C), APR::UUID (Perl/XS) http://svn.apache.org/repos/asf/apr/apr-util/trunk/crypto/ o e2fsprogs/libuuid (ISO-C), UUID (Perl/XS) http://e2fsprogs.sourceforge.net/ http://thunk.org/hg/e2fsprogs/ o Wine rpcrt4 DLL (ISO-C) http://www.winehq.org/ o Data::UUID (Perl/XS) http://search.cpan.org/src/AGOLOMSH/ http://www.cpan.org/modules/by-module/Data/ o JUG (Java/JNI) http://www.doomdark.org/doomdark/proj/jug/ o Mozilla (ISO-C, ISO-C++) http://www.mozilla.org/ http://lxr.mozilla.org/mozilla1.7/source/calendar/libxpical/token.c o HelixPlayer (ISO-C, ISO-C++) https://player.helixcommunity.org/ common/util/chxuuid.cpp uuid-1.6.2/THANKS 644 0 0 250410764216727 122760ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier THANKS Credit has to be given to the following people who contributed ideas, bugfixes, hints, gave platform feedback, etc. (in alphabetical order): o Matthias Andree o Neil Caunt o Neil Conway o M. Daniel o Simon "janus" Dassow o Fuyuki o Thomas Lotterer o Roman Neuhauser o Hrvoje Niksic o Piotr Roszatycki o Hiroshi Saito o Michael Schloh o Guerry Semones o David Wheeler o Wu Yongwei uuid-1.6.2/TODO 644 0 0 127510764216727 120570ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier TODO ==== - CANDO ===== - allow to re-create version 1 UUIDs by specifying time, etc. - getopt_long support for CLI? - a more sophisticated test suite with UUID references?! - more platform support in uuid_mac.c?! - global memory locking according to standard hints?? - persistent/non-volatile state writing according to standard hints?? uuid-1.6.2/USERS 644 0 0 262710764556505 122160ustar osspossp 0 0 _ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| OSSP uuid - Universally Unique Identifier USERS OSSP uuid is known to be used by at least the following Open Source software packages: o PostgreSQL Relational Database Management System (RDBMS) http://www.postgresql.org/ o Aegis Software Configuration Management (SCM) System http://aegis.sourceforge.net/ o Heartbeat Core component of the High-Availability Linux (Linux-HA) project http://linux-ha.org/heartbeat/ o GAT Grid Application Toolkit (GAT) https://www.gridlab.org/WorkPackages/wp-1/ o Menes High-Level C++ Library for mutexes, networking, etc. http://www.saurik.com/ http://svn.saurik.com/repos/menes/trunk/ o OpenAether OAPR C++ wrapper for NSPR http://www.openaether.org/oapr.html o Gauche Scheme Interpreter, UUID extension http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/gauche/Gauche-uuid/ http://www.shiro.dreamhost.com/scheme/gauche/ o Guile Extension Examples (GEE) https://gna.org/projects/gee o CGI::Session::ID::uuid UUID based ID generator backend for CGI::Session http://www.cpan.org/modules/by-authors/id/RSE/ uuid-1.6.2/aclocal.m4 644 0 0 2760310764216727 132520ustar osspossp 0 0dnl ## dnl ## SA - OSSP Socket Abstraction Library dnl ## Copyright (c) 2001-2003 Ralf S. Engelschall dnl ## Copyright (c) 2001-2003 The OSSP Project dnl ## Copyright (c) 2001-2003 Cable & Wireless Deutschland dnl ## dnl ## This file is part of OSSP SA, a socket abstraction library which dnl ## can be found at http://www.ossp.org/pkg/sa/. dnl ## dnl ## Permission to use, copy, modify, and distribute this software for dnl ## any purpose with or without fee is hereby granted, provided that dnl ## the above copyright notice and this permission notice appear in all dnl ## copies. dnl ## dnl ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED dnl ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF dnl ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. dnl ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR dnl ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, dnl ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT dnl ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF dnl ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND dnl ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, dnl ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT dnl ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF dnl ## SUCH DAMAGE. dnl ## dnl ## aclocal.m4: GNU Autoconf local macro definitions dnl ## dnl ## dnl ## Check whether compiler option works dnl ## dnl ## configure.in: dnl ## AC_COMPILER_OPTION(, ,