New functions set_master_key, unseal_key and free_key.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2597 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										43
									
								
								kdc/misc.c
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								kdc/misc.c
									
									
									
									
									
								
							| @@ -65,3 +65,46 @@ db_fetch(krb5_context context, krb5_principal principal) | |||||||
|     } |     } | ||||||
|     return ent; |     return ent; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static des_key_schedule master_key; | ||||||
|  | static int master_key_set; | ||||||
|  |  | ||||||
|  | void | ||||||
|  | set_master_key(EncryptionKey *key) | ||||||
|  | { | ||||||
|  |     if(key->keytype != KEYTYPE_DES || key->keyvalue.length != 8) | ||||||
|  | 	abort(); | ||||||
|  |     des_set_random_generator_seed(key->keyvalue.data); | ||||||
|  |     des_set_key(key->keyvalue.data, master_key); | ||||||
|  |     master_key_set = 1; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | Key * | ||||||
|  | unseal_key(Key *key) | ||||||
|  | { | ||||||
|  |     int i; | ||||||
|  |     des_cblock iv; | ||||||
|  |     int num = 0; | ||||||
|  |     Key *new_key; | ||||||
|  |  | ||||||
|  |     ALLOC(new_key); | ||||||
|  |     copy_Key(key, new_key); | ||||||
|  |     if(master_key_set){ | ||||||
|  | 	memset(&iv, 0, sizeof(iv)); | ||||||
|  | 	des_cfb64_encrypt(key->key.keyvalue.data,  | ||||||
|  | 			  new_key->key.keyvalue.data,  | ||||||
|  | 			  key->key.keyvalue.length,  | ||||||
|  | 			  master_key, &iv, &num, 0); | ||||||
|  |     } | ||||||
|  |     return new_key; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | free_key(Key *key) | ||||||
|  | { | ||||||
|  |     memset(key->key.keyvalue.data,  | ||||||
|  | 	   0, | ||||||
|  | 	   key->key.keyvalue.length); | ||||||
|  |     free_Key(key); | ||||||
|  |     free(key); | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Johan Danielsson
					Johan Danielsson