]>
git.ipfire.org Git - people/ms/u-boot.git/blob - lib/uuid.c
2 * Copyright 2011 Calxeda, Inc.
4 * SPDX-License-Identifier: GPL-2.0+
7 #include <linux/ctype.h>
11 * This is what a UUID string looks like.
13 * x is a hexadecimal character. fields are separated by '-'s. When converting
14 * to a binary UUID, le means the field should be converted to little endian,
15 * and be means it should be converted to big endian.
18 * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
22 int uuid_str_valid(const char *uuid
)
29 for (i
= 0, valid
= 1; uuid
[i
] && valid
; i
++) {
31 case 8: case 13: case 18: case 23:
32 valid
= (uuid
[i
] == '-');
35 valid
= isxdigit(uuid
[i
]);
40 if (i
!= 36 || !valid
)
46 void uuid_str_to_bin(const char *uuid
, unsigned char *out
)
55 tmp32
= cpu_to_le32(simple_strtoul(uuid
, NULL
, 16));
56 memcpy(out
, &tmp32
, 4);
58 tmp16
= cpu_to_le16(simple_strtoul(uuid
+ 9, NULL
, 16));
59 memcpy(out
+ 4, &tmp16
, 2);
61 tmp16
= cpu_to_le16(simple_strtoul(uuid
+ 14, NULL
, 16));
62 memcpy(out
+ 6, &tmp16
, 2);
64 tmp16
= cpu_to_be16(simple_strtoul(uuid
+ 19, NULL
, 16));
65 memcpy(out
+ 8, &tmp16
, 2);
67 tmp64
= cpu_to_be64(simple_strtoull(uuid
+ 24, NULL
, 16));
68 memcpy(out
+ 10, (char *)&tmp64
+ 2, 6);