Line data Source code
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 "includes.h"
10 :
11 : #include "common.h"
12 : #include "uuid.h"
13 :
14 466 : int uuid_str2bin(const char *str, u8 *bin)
15 : {
16 : const char *pos;
17 : u8 *opos;
18 :
19 466 : pos = str;
20 466 : opos = bin;
21 :
22 466 : if (hexstr2bin(pos, opos, 4))
23 20 : return -1;
24 446 : pos += 8;
25 446 : opos += 4;
26 :
27 446 : if (*pos++ != '-' || hexstr2bin(pos, opos, 2))
28 3 : return -1;
29 443 : pos += 4;
30 443 : opos += 2;
31 :
32 443 : if (*pos++ != '-' || hexstr2bin(pos, opos, 2))
33 2 : return -1;
34 441 : pos += 4;
35 441 : opos += 2;
36 :
37 441 : if (*pos++ != '-' || hexstr2bin(pos, opos, 2))
38 2 : return -1;
39 439 : pos += 4;
40 439 : opos += 2;
41 :
42 439 : if (*pos++ != '-' || hexstr2bin(pos, opos, 6))
43 2 : return -1;
44 :
45 437 : return 0;
46 : }
47 :
48 :
49 8415 : int uuid_bin2str(const u8 *bin, char *str, size_t max_len)
50 : {
51 : int len;
52 134640 : len = os_snprintf(str, max_len, "%02x%02x%02x%02x-%02x%02x-%02x%02x-"
53 : "%02x%02x-%02x%02x%02x%02x%02x%02x",
54 33660 : bin[0], bin[1], bin[2], bin[3],
55 33660 : bin[4], bin[5], bin[6], bin[7],
56 33660 : bin[8], bin[9], bin[10], bin[11],
57 33660 : bin[12], bin[13], bin[14], bin[15]);
58 8415 : if (os_snprintf_error(max_len, len))
59 0 : return -1;
60 8415 : return 0;
61 : }
62 :
63 :
64 1524 : int is_nil_uuid(const u8 *uuid)
65 : {
66 : int i;
67 19652 : for (i = 0; i < UUID_LEN; i++)
68 18519 : if (uuid[i])
69 391 : return 0;
70 1133 : return 1;
71 : }
|