.\"O .TH "UUID_GENERATE" "3" "2021-06-02" "util\-linux 2.37.2" "Programmer\(aqs Manual" .\"O .ie \n(.g .ds Aq \(aq .\"O .el .ds Aq ' .\"O .ss \n[.ss] 0 .\"O .nh .\"O .ad l .\"O .de URL .\"O \fI\\$2\fP <\\$1>\\$3 .\"O .. .\"O .als MTO URL .\"O .if \n[.g] \{\ .\"O . mso www.tmac .\"O . am URL .\"O . ad l .\"O . . .\"O . am MTO .\"O . ad l .\"O . . .\"O . LINKSTYLE blue R < > .\"O .\} .TH UUID_GENERATE 3 2021\-06\-02 "util\-linux 2.37.2" プログラマーマニュアル .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .\"O ---------------------------------------- .\"O .SH "NAME" .\"O uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe \- create a new unique UUID value .SH 名前 uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe \- 新規に一意の UUID を生成する .\"O ---------------------------------------- .\"O .SH "SYNOPSIS" .\"O .sp .\"O \fB#include \fP .\"O .sp .\"O \fBvoid uuid_generate(uuid_t \fIout\fP);\fP .\"O .br .\"O \fBvoid uuid_generate_random(uuid_t \fIout\fP);\fP .\"O .br .\"O \fBvoid uuid_generate_time(uuid_t \fIout\fP);\fP .\"O .br .\"O \fBint uuid_generate_time_safe(uuid_t \fIout\fP);\fP .\"O .br .\"O \fBvoid uuid_generate_md5(uuid_t \fIout\fP, const uuid_t \fIns\fP, const char \fI*name\fP, size_t \fIlen\fP);\fP .\"O .br .\"O \fBvoid uuid_generate_sha1(uuid_t \fIout\fP, const uuid_t \fIns\fP, const char \fI*name\fP, size_t \fIlen\fP);\fP .SH 書式 .sp \fB#include \fP .sp \fBvoid uuid_generate(uuid_t \fP\fIout\fP\fB);\fP .br \fBvoid uuid_generate_random(uuid_t \fP\fIout\fP\fB);\fP .br \fBvoid uuid_generate_time(uuid_t \fP\fIout\fP\fB);\fP .br \fBint uuid_generate_time_safe(uuid_t \fP\fIout\fP\fB);\fP .br \fBvoid uuid_generate_md5(uuid_t \fP\fIout\fP\fB, const uuid_t \fP\fIns\fP\fB, const char \fP\fI*name\fP\fB, size_t \fP\fIlen\fP\fB);\fP .br \fBvoid uuid_generate_sha1(uuid_t \fP\fIout\fP\fB, const uuid_t \fP\fIns\fP\fB, const char \fP\fI*name\fP\fB, size_t \fP\fIlen\fP\fB);\fP .\"O ---------------------------------------- .\"O .SH "DESCRIPTION" .\"O .sp .\"O The \fBuuid_generate\fP() function creates a new universally unique identifier (UUID). The uuid will be generated based on high\-quality randomness from \fBgetrandom\fP(2), \fI/dev/urandom\fP, or \fI/dev/random\fP if available. If it is not available, then \fBuuid_generate\fP() 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. .\"O .sp .\"O The \fBuuid_generate_random\fP() function forces the use of the all\-random UUID format, even if a high\-quality random number generator 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. .\"O .sp .\"O The \fBuuid_generate_time\fP() 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 \fBuuid_generate\fP() 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 \fBuuidd\fP 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 \fBuuid_generate_time_safe\fP. .\"O .sp .\"O The \fBuuid_generate_time_safe\fP() function is similar to \fBuuid_generate_time\fP(), except that it returns a value which denotes whether any of the synchronization mechanisms (see above) has been used. .\"O .sp .\"O 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\(cqs \fICosmos\fP). 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. .\"O .sp .\"O The \fBuuid_generate_md5\fP() and \fBuuid_generate_sha1\fP() 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 conform to V3 and V5 UUIDs per \c .\"O .URL "https://tools.ietf.org/html/rfc4122" "RFC\-4122" "." .SH 説明 .sp \fBuuid_generate\fP() 関数は、 新たな UUID (universally unique identifier) を生成する。 UUID の生成にあたっては、 \fBgetrandom\fP(2)、 \fI/dev/urandom\fP、 \fI/dev/random\fP の中の利用可能なものが用いられ、 高品質な乱数が生成される。 これが利用できない場合、 \fBuuid_generate\fP() は、 これに代わるアルゴリズムを採用する。 そこでは、 現在時刻、 ローカルイーサネットの MAC アドレス (利用できる場合)、 疑似乱数ジェネレーターを使って生成される乱数データを利用する。 .sp \fBuuid_generate_random\fP() 関数は、 高品質の乱数ジェネレーターが利用できない場合であっても、完全なランダム UUID フォーマットを強制的に利用する。 この場合は、 疑似乱数ジェネレーターが代わりに用いられる。 ただし疑似乱数ジェネレーターを用いると、 生成される UUID の一意性は損なわれる場合があることに注意すること。 .sp \fBuuid_generate_time\fP() 関数は、 現在時刻と (利用可能であれば) ローカルのイーサネット MAC アドレスを用いた、 別のアルゴリズムを強制的に利用する。 このアルゴリズムは、 かつては UUID を生成するデフォルトであった。 ただしイーサネット MAC アドレスを利用することから、 いつどこで UUID が生成されたものであるかの情報が漏れてしまう。 アプリケーションによっては、 プライバシーの問題を引き起こす場合がある。 そこで \fBuuid_generate\fP() 関数は、 高品質の乱数発生の仕組みが利用できない場合に限って、 このアルゴリズムを利用している。 並列実行されているプロセスから生成される UUID であっても、 その一意性を保証するために、 uuid ライブラリでは、 グローバルクロックの状態カウンター (status counter) を利用する (プロセスが、 このファイルへの排他的アクセス権限を取得できる場合)。 または \fBuuidd\fP デーモンを利用する (これがインストールされていて、 プロセスがその実行権限を持っている場合)。 この 2 つの同期のメカニズムがともに利用できない場合、 2 つの同時実行されたプロセスが、 同一の UUID を取得することは、 理論的には可能になる。 UUID が安全な方法で生成されたことを確認するには、 \fBuuid_generate_time_safe\fP を用いること。 .sp \fBuuid_generate_time_safe\fP() 関数は \fBuuid_generate_time\fP() と同様である。 ただし関数の返り値として、 どの同期メカニズム (前述参照) を用いたのかを表す値を返す。 .sp UUID は 16 バイト長 (128 ビット) であり、 およそ 3.4x10^38 個の一意な値を提供する (Carl Sagan の \fICosmos\fP によると、宇宙には 10^38 個の素粒子があるとのこと)。 新たに生成された UUID は、 ローカルシステム内に生成されている UUID に対して一意であり、 また過去から未来に向けて、 他のシステム上において生成される UUID に対しても一意となる、 と考えてかまわない。 .sp \fBuuid_generate_md5\fP() 関数および \fBuuid_generate_sha1\fP() 関数は、 名前空間および任意のバイナリ文字列を提供する既知の UUID に基づいた、 MD5 ハッシュ、 SHA1 ハッシュの (予測可能な) UUID を提供する。 UUID は、 以下の V3 および V5 に準拠している。 .URL https://tools.ietf.org/html/rfc4122 RFC\-4122 . .\"O ---------------------------------------- .\"O .SH "RETURN VALUE" .\"O .sp .\"O The newly created UUID is returned in the memory location pointed to by \fIout\fP. \fBuuid_generate_time_safe\fP() returns zero if the UUID has been generated in a safe manner, \-1 otherwise. .SH 返り値 .sp 新たに生成された UUID は、 \fIout\fP によって示されるメモリ上の場所に返される。 UUID が安全な方法で生成されたら 0 を返す。 そうでない場合は \-1 を返す。 .\"O ---------------------------------------- .\"O .SH "CONFORMING TO" .\"O .sp .\"O This library generates UUIDs compatible with OSF DCE 1.1, and hash based UUIDs V3 and V5 compatible with \c .\"O .URL "https://tools.ietf.org/html/rfc4122" "RFC\-4122" "." .SH 準拠 .sp 本ライブラリは OSF DCE 1.1 と互換の UUID を生成する。 またハッシュベース UUID V3 と V5 は、 以下と互換である: .URL https://tools.ietf.org/html/rfc4122 RFC\-4122 . .\"O ---------------------------------------- .\"O .SH "AUTHORS" .\"O .sp .\"O Theodore Y. Ts\(cqo .SH 著者 .sp Theodore Y. Ts\(cqo .\"O ---------------------------------------- .\"O .SH "SEE ALSO" .\"O .sp .\"O \fBuuidgen\fP(1), .\"O \fBuuid\fP(3), .\"O \fBuuid_clear\fP(3), .\"O \fBuuid_compare\fP(3), .\"O \fBuuid_copy\fP(3), .\"O \fBuuid_is_null\fP(3), .\"O \fBuuid_parse\fP(3), .\"O \fBuuid_time\fP(3), .\"O \fBuuid_unparse\fP(3), .\"O \fBuuidd\fP(8) .SH 関連項目 .sp \fBuuidgen\fP(1), \fBuuid\fP(3), \fBuuid_clear\fP(3), \fBuuid_compare\fP(3), \fBuuid_copy\fP(3), \fBuuid_is_null\fP(3), \fBuuid_parse\fP(3), \fBuuid_time\fP(3), \fBuuid_unparse\fP(3), \fBuuidd\fP(8) .\"O ---------------------------------------- .\"O .SH "REPORTING BUGS" .\"O .sp .\"O For bug reports, use the issue tracker at \c .\"O .URL "https://github.com/karelzak/util\-linux/issues" "" "." .SH バグ報告 .sp バグ報告は、 以下にある issue トラッカーを利用すること。 .URL https://github.com/karelzak/util\-linux/issues "" . .\"O ---------------------------------------- .\"O .SH "AVAILABILITY" .\"O .sp .\"O The \fBlibuuid\fP library is part of the util\-linux package since version 2.15.1. It can be downloaded from \c .\"O .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "Linux Kernel Archive" "." .SH 入手方法 .sp \fBlibuuid\fP ライブラリは、 util\-linux 2.15.1 以降、 このパッケージの一部であり、 以下からダウンロードできる。 .URL https://www.kernel.org/pub/linux/utils/util\-linux/ "Linux Kernel Archive" . .\"O ----------------------------------------