Home | History | Annotate | Download | only in utils
      1 /*
      2  * Universally Unique IDentifier (UUID)
      3  * Copyright (c) 2008, Jouni Malinen <j (at) 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 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 
     49 int uuid_bin2str(const u8 *bin, char *str, size_t max_len)
     50 {
     51 	int len;
     52 	len = os_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 
     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