| /* |
| * Universally Unique IDentifier (UUID) |
| * Copyright (c) 2008, Jouni Malinen <j@w1.fi> |
| * |
| * This software may be distributed under the terms of the BSD license. |
| * See README for more details. |
| */ |
| |
| #include "includes.h" |
| |
| #include "common.h" |
| #include "uuid.h" |
| |
| int uuid_str2bin(const char *str, u8 *bin) |
| { |
| const char *pos; |
| u8 *opos; |
| |
| pos = str; |
| opos = bin; |
| |
| if (hexstr2bin(pos, opos, 4)) |
| return -1; |
| pos += 8; |
| opos += 4; |
| |
| if (*pos++ != '-' || hexstr2bin(pos, opos, 2)) |
| return -1; |
| pos += 4; |
| opos += 2; |
| |
| if (*pos++ != '-' || hexstr2bin(pos, opos, 2)) |
| return -1; |
| pos += 4; |
| opos += 2; |
| |
| if (*pos++ != '-' || hexstr2bin(pos, opos, 2)) |
| return -1; |
| pos += 4; |
| opos += 2; |
| |
| if (*pos++ != '-' || hexstr2bin(pos, opos, 6)) |
| return -1; |
| |
| return 0; |
| } |
| |
| |
| int uuid_bin2str(const u8 *bin, char *str, size_t max_len) |
| { |
| int len; |
| len = os_snprintf(str, max_len, "%02x%02x%02x%02x-%02x%02x-%02x%02x-" |
| "%02x%02x-%02x%02x%02x%02x%02x%02x", |
| bin[0], bin[1], bin[2], bin[3], |
| bin[4], bin[5], bin[6], bin[7], |
| bin[8], bin[9], bin[10], bin[11], |
| bin[12], bin[13], bin[14], bin[15]); |
| if (len < 0 || (size_t) len >= max_len) |
| return -1; |
| return 0; |
| } |
| |
| |
| int is_nil_uuid(const u8 *uuid) |
| { |
| int i; |
| for (i = 0; i < UUID_LEN; i++) |
| if (uuid[i]) |
| return 0; |
| return 1; |
| } |