mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-10-30 19:20:40 -04:00 
			
		
		
		
	Merge remote-tracking branch 'upstream-public/pr/1378' into development
This commit is contained in:
		
						commit
						cac0c1a250
					
				| @ -7,6 +7,9 @@ Bugfix | |||||||
|      MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 |      MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 | ||||||
|    * Fix a memory leak in ecp_mul_comb() if ecp_precompute_comb() fails. |    * Fix a memory leak in ecp_mul_comb() if ecp_precompute_comb() fails. | ||||||
|      Fix contributed by Espressif Systems. |      Fix contributed by Espressif Systems. | ||||||
|  |    * Add ecc extensions only if an ecc based ciphersuite is used. | ||||||
|  |      This improves compliance to RFC 4492, and as a result, solves | ||||||
|  |      interoperability issues with BouncyCastle. Raised by milenamil in #1157. | ||||||
| 
 | 
 | ||||||
| Changes | Changes | ||||||
|    * Copy headers preserving timestamps when doing a "make install". |    * Copy headers preserving timestamps when doing a "make install". | ||||||
|  | |||||||
| @ -2320,7 +2320,8 @@ mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphers | |||||||
| 
 | 
 | ||||||
| #endif /* MBEDTLS_PK_C */ | #endif /* MBEDTLS_PK_C */ | ||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) | #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | ||||||
|  |     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
| int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ) | int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ) | ||||||
| { | { | ||||||
|     switch( info->key_exchange ) |     switch( info->key_exchange ) | ||||||
| @ -2330,13 +2331,14 @@ int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ) | |||||||
|         case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: |         case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: | ||||||
|         case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: |         case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: | ||||||
|         case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: |         case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: | ||||||
|  |         case MBEDTLS_KEY_EXCHANGE_ECJPAKE: | ||||||
|             return( 1 ); |             return( 1 ); | ||||||
| 
 | 
 | ||||||
|         default: |         default: | ||||||
|             return( 0 ); |             return( 0 ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C */ | #endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C || MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED*/ | ||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) | #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) | ||||||
| int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ) | int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ) | ||||||
|  | |||||||
| @ -766,6 +766,10 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) | |||||||
|     unsigned char offer_compress; |     unsigned char offer_compress; | ||||||
|     const int *ciphersuites; |     const int *ciphersuites; | ||||||
|     const mbedtls_ssl_ciphersuite_t *ciphersuite_info; |     const mbedtls_ssl_ciphersuite_t *ciphersuite_info; | ||||||
|  | #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | ||||||
|  |     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
|  |     int uses_ec = 0; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write client hello" ) ); |     MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write client hello" ) ); | ||||||
| 
 | 
 | ||||||
| @ -917,6 +921,11 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) | |||||||
|         MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, add ciphersuite: %04x", |         MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, add ciphersuite: %04x", | ||||||
|                                     ciphersuites[i] ) ); |                                     ciphersuites[i] ) ); | ||||||
| 
 | 
 | ||||||
|  | #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | ||||||
|  |     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
|  |         uses_ec |= mbedtls_ssl_ciphersuite_uses_ec( ciphersuite_info ); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|         n++; |         n++; | ||||||
|         *p++ = (unsigned char)( ciphersuites[i] >> 8 ); |         *p++ = (unsigned char)( ciphersuites[i] >> 8 ); | ||||||
|         *p++ = (unsigned char)( ciphersuites[i]      ); |         *p++ = (unsigned char)( ciphersuites[i]      ); | ||||||
| @ -1010,11 +1019,14 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) | |||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | ||||||
|     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) |     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
|     ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, &olen ); |     if( uses_ec ) | ||||||
|     ext_len += olen; |     { | ||||||
|  |         ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, &olen ); | ||||||
|  |         ext_len += olen; | ||||||
| 
 | 
 | ||||||
|     ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); |         ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); | ||||||
|     ext_len += olen; |         ext_len += olen; | ||||||
|  |     } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
|  | |||||||
| @ -2589,8 +2589,12 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) | |||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ | ||||||
|     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) |     defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
|     ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); |     if ( mbedtls_ssl_ciphersuite_uses_ec( | ||||||
|     ext_len += olen; |          mbedtls_ssl_ciphersuite_from_id( ssl->session_negotiate->ciphersuite ) ) ) | ||||||
|  |     { | ||||||
|  |         ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); | ||||||
|  |         ext_len += olen; | ||||||
|  |     } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) | ||||||
|  | |||||||
| @ -4607,6 +4607,56 @@ run_test    "SSL async private: renegotiation: server-initiated; decrypt" \ | |||||||
|             -s "Async decrypt callback: using key slot " \ |             -s "Async decrypt callback: using key slot " \ | ||||||
|             -s "Async resume (slot [0-9]): decrypt done, status=0" |             -s "Async resume (slot [0-9]): decrypt done, status=0" | ||||||
| 
 | 
 | ||||||
|  | # Tests for ECC extensions (rfc 4492) | ||||||
|  | 
 | ||||||
|  | requires_config_enabled MBEDTLS_AES_C | ||||||
|  | requires_config_enabled MBEDTLS_CIPHER_MODE_CBC | ||||||
|  | requires_config_enabled MBEDTLS_SHA256_C | ||||||
|  | requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED | ||||||
|  | run_test    "Force a non ECC ciphersuite in the client side" \ | ||||||
|  |             "$P_SRV debug_level=3" \ | ||||||
|  |             "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \ | ||||||
|  |             0 \ | ||||||
|  |             -C "client hello, adding supported_elliptic_curves extension" \ | ||||||
|  |             -C "client hello, adding supported_point_formats extension" \ | ||||||
|  |             -S "found supported elliptic curves extension" \ | ||||||
|  |             -S "found supported point formats extension" | ||||||
|  | 
 | ||||||
|  | requires_config_enabled MBEDTLS_AES_C | ||||||
|  | requires_config_enabled MBEDTLS_CIPHER_MODE_CBC | ||||||
|  | requires_config_enabled MBEDTLS_SHA256_C | ||||||
|  | requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED | ||||||
|  | run_test    "Force a non ECC ciphersuite in the server side" \ | ||||||
|  |             "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \ | ||||||
|  |             "$P_CLI debug_level=3" \ | ||||||
|  |             0 \ | ||||||
|  |             -C "found supported_point_formats extension" \ | ||||||
|  |             -S "server hello, supported_point_formats extension" | ||||||
|  | 
 | ||||||
|  | requires_config_enabled MBEDTLS_AES_C | ||||||
|  | requires_config_enabled MBEDTLS_CIPHER_MODE_CBC | ||||||
|  | requires_config_enabled MBEDTLS_SHA256_C | ||||||
|  | requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED | ||||||
|  | run_test    "Force an ECC ciphersuite in the client side" \ | ||||||
|  |             "$P_SRV debug_level=3" \ | ||||||
|  |             "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ | ||||||
|  |             0 \ | ||||||
|  |             -c "client hello, adding supported_elliptic_curves extension" \ | ||||||
|  |             -c "client hello, adding supported_point_formats extension" \ | ||||||
|  |             -s "found supported elliptic curves extension" \ | ||||||
|  |             -s "found supported point formats extension" | ||||||
|  | 
 | ||||||
|  | requires_config_enabled MBEDTLS_AES_C | ||||||
|  | requires_config_enabled MBEDTLS_CIPHER_MODE_CBC | ||||||
|  | requires_config_enabled MBEDTLS_SHA256_C | ||||||
|  | requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED | ||||||
|  | run_test    "Force an ECC ciphersuite in the server side" \ | ||||||
|  |             "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ | ||||||
|  |             "$P_CLI debug_level=3" \ | ||||||
|  |             0 \ | ||||||
|  |             -c "found supported_point_formats extension" \ | ||||||
|  |             -s "server hello, supported_point_formats extension" | ||||||
|  | 
 | ||||||
| # Tests for DTLS HelloVerifyRequest | # Tests for DTLS HelloVerifyRequest | ||||||
| 
 | 
 | ||||||
| run_test    "DTLS cookie: enabled" \ | run_test    "DTLS cookie: enabled" \ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jaeden Amero
						Jaeden Amero