mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	lib: uuid: use RNG device if present
When calculating a random UUID we use a weak seed. Use a RNG device if present to increase entropy. Signed-off-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: Torsten Duwe <duwe@suse.de>
This commit is contained in:
		
				
					committed by
					
						 Tom Rini
						Tom Rini
					
				
			
			
				
	
			
			
			
						parent
						
							0be3d1fafb
						
					
				
				
					commit
					92fdad28cf
				
			
							
								
								
									
										19
									
								
								lib/uuid.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								lib/uuid.c
									
									
									
									
									
								
							| @@ -15,6 +15,8 @@ | ||||
| #include <asm/io.h> | ||||
| #include <part_efi.h> | ||||
| #include <malloc.h> | ||||
| #include <dm/uclass.h> | ||||
| #include <rng.h> | ||||
|  | ||||
| /* | ||||
|  * UUID - Universally Unique IDentifier - 128 bits unique number. | ||||
| @@ -249,9 +251,22 @@ void gen_rand_uuid(unsigned char *uuid_bin) | ||||
| { | ||||
| 	u32 ptr[4]; | ||||
| 	struct uuid *uuid = (struct uuid *)ptr; | ||||
| 	int i; | ||||
| 	int i, ret; | ||||
| 	struct udevice *devp; | ||||
| 	u32 randv = 0; | ||||
|  | ||||
| 	srand(get_ticks() + rand()); | ||||
| 	if (IS_ENABLED(CONFIG_DM_RNG)) { | ||||
| 		ret = uclass_get_device(UCLASS_RNG, 0, &devp); | ||||
| 		if (ret) { | ||||
| 			ret = dm_rng_read(devp, &randv, sizeof(randv)); | ||||
| 			if (ret < 0) | ||||
| 				randv = 0; | ||||
| 		} | ||||
| 	} | ||||
| 	if (randv) | ||||
| 		srand(randv); | ||||
| 	else | ||||
| 		srand(get_ticks() + rand()); | ||||
|  | ||||
| 	/* Set all fields randomly */ | ||||
| 	for (i = 0; i < 4; i++) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user