X-Git-Url: https://pd.if.org/git/?p=uuid;a=blobdiff_plain;f=pduuid.h;h=36f7efab8d0df9bfb8c3ddecfab9405470bfdde4;hp=77cbcc19cbd95824fffe1369be2f7159166a0dfc;hb=HEAD;hpb=c7e13d717c38e528ae241bf5facb51bca63f323c diff --git a/pduuid.h b/pduuid.h index 77cbcc1..36f7efa 100644 --- a/pduuid.h +++ b/pduuid.h @@ -3,10 +3,16 @@ #include +#define PD_UUID_BINLEN 16 +#define PD_UUID_STRLEN 36 + struct pd_uuid_state { uint64_t timestamp, node; uint16_t clock_sequence; int available; + void *rng_state; + unsigned char uuid[16]; + int (*get_lock)(void *); int (*release_lock)(void *); void *lock_data; @@ -15,7 +21,6 @@ struct pd_uuid_state { /* TODO hook for a random number generator? */ unsigned long (*random_bytes)(void *out, unsigned long outlen, void *prng_state); - void *rng_state; }; struct pd_uuid { @@ -24,17 +29,26 @@ struct pd_uuid { typedef struct pd_uuid pd_uuid_t; int pd_uuid_init_state(struct pd_uuid_state *s); +int pd_uuid_init(struct pd_uuid_state *s, int f); int pd_uuid_make_v1(struct pd_uuid_state *s, pd_uuid_t *uuid); int pd_uuid_make_v1mc(struct pd_uuid_state *s, pd_uuid_t *uuid); int pd_uuid_make_v4(struct pd_uuid_state *s, pd_uuid_t *uuid); int pd_uuid_make_v3(struct pd_uuid_state *s, pd_uuid_t *uuid, pd_uuid_t *ns, void *data, int len); int pd_uuid_make_v5(struct pd_uuid_state *s, pd_uuid_t *uuid, pd_uuid_t *ns, void *data, int len); +int pd_uuid_copy(pd_uuid_t *src, pd_uuid_t *dst); +int pd_uuid_cmp(pd_uuid_t *a, pd_uuid_t *b); + int pd_set_uuid_hash(pd_uuid_t *s, void *hash, int version); int pd_uuid_set_string(pd_uuid_t *uuid, char *s); +char *pd_uuid_get_string(pd_uuid_t *uuid, char *s); unsigned long pd_uuid_rng_get_bytes(unsigned char *out, unsigned long outlen); +pd_uuid_t pd_uuid_ns_x500; +pd_uuid_t pd_uuid_ns_url; +pd_uuid_t pd_uuid_ns_dns; +pd_uuid_t pd_uuid_ns_oid; #endif