UUID_GENERATE

Section: Libuuid API (3)
Updated: May 2009
Index Return to Main Contents
 

名前

uuid_generate, uuid_generate_random, uuid_generate_time, uuid_generate_time_safe - 他と重ならない 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);
 

説明

uuid_generate 関数は新しい UUID (universally unique identifier: 絶対に他とは重ならない識別子) を生成する。 UUID の生成には、 /dev/urandom のような質の良い乱数発生機構が利用できる場合はそれを利用する。 できない場合には、 uuid_generate は別のアルゴリズムを用いる。 この場合は現在時刻、ローカルなイーサネットの MAC アドレスが取得できればその値、 および擬似乱数発生機構から生成された乱数が用いられる。

uuid_generate_random 関数は、質の良い乱数発生機構 (例えば /dev/urandom) が利用できない場合でも、完全にランダムベースの (つまり時刻や MAC アドレスを使わない) UUID フォーマットを作りたい場合に用いる。 この場合は擬似乱数発生機構が代わりに用いられる。 擬似乱数発生機構を利用すると、このように生成された UUID の 一意性は劣化するかもしれないことに注意すること。

uuid_generate_time 関数は、代替アルゴリズムを使いたい場合に用いる。 これは現在時刻と (あれば) イーサネットの MACアドレスを用いる。 このアルゴリズムはかつて UUID 生成方法のデフォルトであったが、 イーサネットの MAC アドレスを用いるので、 いつどこで UUID が生成されたかの情報がリークしてしまう。 これはアプリケーションによってはプライバシー問題を起こすことがあるので、 uuid_generate 関数は質の高い乱数発生機構が利用できない場合に限って、このアルゴリズムを 用いるようになった。 並列に実行されているプロセスで生成された UUID の一意性を保証するため、 uuid ライブラリは (プロセスがグローバルクロックステートカウンターの ファイルに排他アクセスを取得する権限がある場合) グローバルクロックステートカウンターを使う。 また、 uuidd デーモンが既に実行されているか、プロセスによってデーモンが生成 (spawn) できる場合 (uuidd デーモンがインストールされていて、プロセスがデーモンを実行するのに充分な 権限を持っている場合)、uuid ライブラリは uuidd デーモンを使う。 2 つの同期機構のどちらも使えない場合、2 つの並列に実行されているプロセスは、 論理的には同じ UUID を取得する可能性がある。 UUID が安全な方法で生成されているかを調べるには、 uuid_generate_time_safe を使うこと。

uuid_generate_time_safe 関数は、 uuid_generate_time と同様であるが、同期機構 (上記を参照) が使われているかを表す値を返す。

UUID は 16 バイト (128 ビット) 長で、およそ 3.4x10^38 個のユニークな値を与える (Carl Segan の Cosmos によれば、全宇宙にある素粒子の個数は 10^80 だそうである)。 新たに作られた UUID は、ローカルなシステムや外部のシステムによって 過去または未来に生成された/される UUID のいずれとも異なると考えることができる。

uuid_generate_md5uuid_generate_sha1 関数は MD5 と SHA1 でハッシュされた (予測可能な) UUID を生成する。 これは、名前空間と任意のバイナリ文字列を提供する、よく知られた UUID に基づいている。 この UUID は、RFC-4122 の V3 と V5 の UUID に準拠する。  

返り値

新たに生成された UUID が、 out の指すメモリ位置に返される。 uuid_generate_time_safe は UUID が安全な方法で生成された場合は 0 を返す。 そうでない場合は、-1 を返す。  

準拠

このライブラリは OSF DCE 1.1 に準拠した UUID を生成する。 また、ハッシュベース UUID V3 と V5 は RFC-4122 に準拠する。  

作者

Theodore Y. Ts'o  

入手方法

libuuid はバージョン 2.15.1 から util-linux パッケージの一部であり、 https://www.kernel.org/pub/linux/utils/util-linux/ から入手できる。  

関連項目

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)


 

Index

名前
書式
説明
返り値
準拠
作者
入手方法
関連項目

This document was created by man2html, using the manual pages.
Time: 13:59:43 GMT, May 02, 2020