diff options
Diffstat (limited to 'lib/uuid.c')
| -rw-r--r-- | lib/uuid.c | 110 | 
1 files changed, 7 insertions, 103 deletions
| diff --git a/lib/uuid.c b/lib/uuid.c index d0187007d0e..afb40bff507 100644 --- a/lib/uuid.c +++ b/lib/uuid.c @@ -7,6 +7,8 @@   *   Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>   */ +#define LOG_CATEGOT LOGC_CORE +  #include <common.h>  #include <command.h>  #include <efi_api.h> @@ -23,50 +25,6 @@  #include <dm/uclass.h>  #include <rng.h> -/* - * UUID - Universally Unique IDentifier - 128 bits unique number. - *        There are 5 versions and one variant of UUID defined by RFC4122 - *        specification. A UUID contains a set of fields. The set varies - *        depending on the version of the UUID, as shown below: - *        - time, MAC address(v1), - *        - user ID(v2), - *        - MD5 of name or URL(v3), - *        - random data(v4), - *        - SHA-1 of name or URL(v5), - * - * Layout of UUID: - * timestamp - 60-bit: time_low, time_mid, time_hi_and_version - * version   - 4 bit (bit 4 through 7 of the time_hi_and_version) - * clock seq - 14 bit: clock_seq_hi_and_reserved, clock_seq_low - * variant:  - bit 6 and 7 of clock_seq_hi_and_reserved - * node      - 48 bit - * - * source: https://www.ietf.org/rfc/rfc4122.txt - * - * UUID binary format (16 bytes): - * - * 4B-2B-2B-2B-6B (big endian - network byte order) - * - * UUID string is 36 length of characters (36 bytes): - * - * 0        9    14   19   24 - * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - *    be     be   be   be       be - * - * where x is a hexadecimal character. Fields are separated by '-'s. - * When converting to a binary UUID, le means the field should be converted - * to little endian and be means it should be converted to big endian. - * - * UUID is also used as GUID (Globally Unique Identifier) with the same binary - * format but it differs in string format like below. - * - * GUID: - * 0        9    14   19   24 - * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - *    le     le   le   be       be - * - * GUID is used e.g. in GPT (GUID Partition Table) as a partiions unique id. - */  int uuid_str_valid(const char *uuid)  {  	int i, valid; @@ -105,6 +63,10 @@ static const struct {  	{"swap",	PARTITION_LINUX_SWAP_GUID},  	{"lvm",		PARTITION_LINUX_LVM_GUID},  	{"u-boot-env",	PARTITION_U_BOOT_ENVIRONMENT}, +	{"cros-kern",	PARTITION_CROS_KERNEL}, +	{"cros-root",	PARTITION_CROS_ROOT}, +	{"cros-fw",	PARTITION_CROS_FIRMWARE}, +	{"cros-rsrv",	PARTITION_CROS_RESERVED},  #endif  #if defined(CONFIG_CMD_EFIDEBUG) || defined(CONFIG_EFI)  	{ @@ -269,12 +231,6 @@ static const struct {  #endif  }; -/* - * uuid_guid_get_bin() - this function get GUID bin for string - * - * @param guid_str - pointer to partition type string - * @param guid_bin - pointer to allocated array for big endian output [16B] - */  int uuid_guid_get_bin(const char *guid_str, unsigned char *guid_bin)  {  	int i; @@ -288,13 +244,6 @@ int uuid_guid_get_bin(const char *guid_str, unsigned char *guid_bin)  	return -ENODEV;  } -/* - * uuid_guid_get_str() - this function get string for GUID. - * - * @param guid_bin - pointer to string with partition type guid [16B] - * - * Returns NULL if the type GUID is not known. - */  const char *uuid_guid_get_str(const unsigned char *guid_bin)  {  	int i; @@ -307,13 +256,6 @@ const char *uuid_guid_get_str(const unsigned char *guid_bin)  	return NULL;  } -/* - * uuid_str_to_bin() - convert string UUID or GUID to big endian binary data. - * - * @param uuid_str - pointer to UUID or GUID string [37B] or GUID shorcut - * @param uuid_bin - pointer to allocated array for big endian output [16B] - * @str_format     - UUID string format: 0 - UUID; 1 - GUID - */  int uuid_str_to_bin(const char *uuid_str, unsigned char *uuid_bin,  		    int str_format)  { @@ -322,6 +264,7 @@ int uuid_str_to_bin(const char *uuid_str, unsigned char *uuid_bin,  	uint64_t tmp64;  	if (!uuid_str_valid(uuid_str)) { +		log_debug("not valid\n");  #ifdef CONFIG_PARTITION_TYPE_GUID  		if (!uuid_guid_get_bin(uuid_str, uuid_bin))  			return 0; @@ -358,23 +301,6 @@ int uuid_str_to_bin(const char *uuid_str, unsigned char *uuid_bin,  	return 0;  } -/** - * uuid_str_to_le_bin() - Convert string UUID to little endian binary data. - * @uuid_str:	pointer to UUID string - * @uuid_bin:	pointer to allocated array for little endian output [16B] - * - * UUID string is 36 characters (36 bytes): - * - * xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - * - * where x is a hexadecimal character. Fields are separated by '-'s. - * When converting to a little endian binary UUID, the string fields are reversed. - * - * Return: - * - *    uuid_bin filled with little endian UUID data - *    On success 0 is returned. Otherwise, failure code. - */  int uuid_str_to_le_bin(const char *uuid_str, unsigned char *uuid_bin)  {  	u16 tmp16; @@ -402,14 +328,6 @@ int uuid_str_to_le_bin(const char *uuid_str, unsigned char *uuid_bin)  	return 0;  } -/* - * uuid_bin_to_str() - convert big endian binary data to string UUID or GUID. - * - * @param uuid_bin:	pointer to binary data of UUID (big endian) [16B] - * @param uuid_str:	pointer to allocated array for output string [37B] - * @str_format:		bit 0: 0 - UUID; 1 - GUID - *			bit 1: 0 - lower case; 2 - upper case - */  void uuid_bin_to_str(const unsigned char *uuid_bin, char *uuid_str,  		     int str_format)  { @@ -449,13 +367,6 @@ void uuid_bin_to_str(const unsigned char *uuid_bin, char *uuid_str,  	}  } -/* - * gen_rand_uuid() - this function generates a random binary UUID version 4. - *                   In this version all fields beside 4 bits of version and - *                   2 bits of variant are randomly generated. - * - * @param uuid_bin - pointer to allocated array [16B]. Output is in big endian. -*/  #if defined(CONFIG_RANDOM_UUID) || defined(CONFIG_CMD_UUID)  void gen_rand_uuid(unsigned char *uuid_bin)  { @@ -493,13 +404,6 @@ void gen_rand_uuid(unsigned char *uuid_bin)  	memcpy(uuid_bin, uuid, 16);  } -/* - * gen_rand_uuid_str() - this function generates UUID v4 (random) in two string - *                       formats UUID or GUID. - * - * @param uuid_str - pointer to allocated array [37B]. - * @param          - uuid output type: UUID - 0, GUID - 1 - */  void gen_rand_uuid_str(char *uuid_str, int str_format)  {  	unsigned char uuid_bin[UUID_BIN_LEN]; | 
