 9710fe70a6
			
		
	
	9710fe70a6
	
	
	
		
			
			This version fixes two vulnerabilities: -CVE-2022-34293[high]: Potential for DTLS DoS attack -[medium]: Ciphertext side channel attack on ECC and DH operations. The patch fixing x86 aesni build has been merged upstream. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Since commit 6467de5a8840 ("Randomize z ordinates in scalar
 | |
| mult when timing resistant") wolfssl requires a RNG for an EC
 | |
| key when the hardened built option is selected.
 | |
| 
 | |
| wc_ecc_set_rng is only available when built hardened, so there
 | |
| is no safe way to install the RNG to the key regardless whether
 | |
| or not wolfssl is compiled hardened.
 | |
| 
 | |
| Always export wc_ecc_set_rng so tools such as hostapd can install
 | |
| RNG regardless of the built settings for wolfssl.
 | |
| 
 | |
| --- a/wolfcrypt/src/ecc.c
 | |
| +++ b/wolfcrypt/src/ecc.c
 | |
| @@ -12288,21 +12288,21 @@ void wc_ecc_fp_free(void)
 | |
|  
 | |
|  #endif /* FP_ECC */
 | |
|  
 | |
| -#ifdef ECC_TIMING_RESISTANT
 | |
|  int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng)
 | |
|  {
 | |
|      int err = 0;
 | |
|  
 | |
| +#ifdef ECC_TIMING_RESISTANT
 | |
|      if (key == NULL) {
 | |
|          err = BAD_FUNC_ARG;
 | |
|      }
 | |
|      else {
 | |
|          key->rng = rng;
 | |
|      }
 | |
| +#endif
 | |
|  
 | |
|      return err;
 | |
|  }
 | |
| -#endif
 | |
|  
 | |
|  #ifdef HAVE_ECC_ENCRYPT
 | |
|  
 | |
| --- a/wolfssl/wolfcrypt/ecc.h
 | |
| +++ b/wolfssl/wolfcrypt/ecc.h
 | |
| @@ -650,10 +650,8 @@ WOLFSSL_API
 | |
|  void wc_ecc_fp_free(void);
 | |
|  WOLFSSL_LOCAL
 | |
|  void wc_ecc_fp_init(void);
 | |
| -#ifdef ECC_TIMING_RESISTANT
 | |
|  WOLFSSL_API
 | |
|  int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng);
 | |
| -#endif
 | |
|  
 | |
|  WOLFSSL_API
 | |
|  int wc_ecc_set_curve(ecc_key* key, int keysize, int curve_id);
 |