Use only one hash algorithm (SHA512) in the PRF.
On some platforms, OpenSSL by default does not support the Whirlpool algorithm.
This commit is contained in:
		
							parent
							
								
									1f00111e94
								
							
						
					
					
						commit
						cb6cbf452f
					
				
					 1 changed files with 3 additions and 6 deletions
				
			
		|  | @ -23,7 +23,7 @@ | |||
| #include "prf.h" | ||||
| 
 | ||||
| /* Generate key material from a master secret and a seed, based on RFC 4346 section 5.
 | ||||
|    We use SHA512 and Whirlpool instead of MD5 and SHA1. | ||||
|    We use SHA512 instead of MD5 and SHA1. | ||||
|  */ | ||||
| 
 | ||||
| static bool prf_xor(int nid, const char *secret, size_t secretlen, char *seed, size_t seedlen, char *out, ssize_t outlen) { | ||||
|  | @ -66,11 +66,8 @@ static bool prf_xor(int nid, const char *secret, size_t secretlen, char *seed, s | |||
| } | ||||
| 
 | ||||
| bool prf(const char *secret, size_t secretlen, char *seed, size_t seedlen, char *out, size_t outlen) { | ||||
| 	/* Split secret in half, generate outlen bits with two different hash algorithms,
 | ||||
| 	   and XOR the results. */ | ||||
| 
 | ||||
| 	/* This construction allows us to easily switch back to a scheme where the PRF is calculated using two different digest algorithms. */ | ||||
| 	memset(out, 0, outlen); | ||||
| 
 | ||||
| 	return prf_xor(NID_sha512, secret, (secretlen + 1) / 2, seed, seedlen, out, outlen) | ||||
| 		&& prf_xor(NID_whirlpool, secret + secretlen / 2, (secretlen + 1) / 2, seed, seedlen, out, outlen); | ||||
| 	return prf_xor(NID_sha512, secret, secretlen, seed, seedlen, out, outlen); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue