1 /*
2 * Universally Unique IDentifier (UUID)
3 * Copyright (c) 2008, Jouni Malinen <j@w1.fi>
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 */
8
9 #include "utils/includes.h"
10
11 #include "utils/common.h"
12 #include "utils/uuid.h"
13
uuid_str2bin(const char * str,u8 * bin)14 int uuid_str2bin(const char *str, u8 *bin)
15 {
16 const char *pos;
17 u8 *opos;
18
19 pos = str;
20 opos = bin;
21
22 if (hexstr2bin(pos, opos, 4))
23 return -1;
24 pos += 8;
25 opos += 4;
26
27 if (*pos++ != '-' || hexstr2bin(pos, opos, 2))
28 return -1;
29 pos += 4;
30 opos += 2;
31
32 if (*pos++ != '-' || hexstr2bin(pos, opos, 2))
33 return -1;
34 pos += 4;
35 opos += 2;
36
37 if (*pos++ != '-' || hexstr2bin(pos, opos, 2))
38 return -1;
39 pos += 4;
40 opos += 2;
41
42 if (*pos++ != '-' || hexstr2bin(pos, opos, 6))
43 return -1;
44
45 return 0;
46 }
47
48
uuid_bin2str(const u8 * bin,char * str,size_t max_len)49 int uuid_bin2str(const u8 *bin, char *str, size_t max_len)
50 {
51 int len;
52 len = snprintf(str, max_len, "%02x%02x%02x%02x-%02x%02x-%02x%02x-"
53 "%02x%02x-%02x%02x%02x%02x%02x%02x",
54 bin[0], bin[1], bin[2], bin[3],
55 bin[4], bin[5], bin[6], bin[7],
56 bin[8], bin[9], bin[10], bin[11],
57 bin[12], bin[13], bin[14], bin[15]);
58 if (len < 0 || (size_t) len >= max_len)
59 return -1;
60 return 0;
61 }
62
63
is_nil_uuid(const u8 * uuid)64 int is_nil_uuid(const u8 *uuid)
65 {
66 int i;
67 for (i = 0; i < UUID_LEN; i++)
68 if (uuid[i])
69 return 0;
70 return 1;
71 }
72