mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-10-30 19:20:40 -04:00 
			
		
		
		
	Merge pull request #4852 from hanno-arm/unify_cli_srv_hs_step
Share preparatory code between client and server handshake steps
This commit is contained in:
		
						commit
						2fb897ecf9
					
				| @ -4210,23 +4210,8 @@ int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ) | |||||||
| { | { | ||||||
|     int ret = 0; |     int ret = 0; | ||||||
| 
 | 
 | ||||||
|     if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER || ssl->handshake == NULL ) |  | ||||||
|         return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); |  | ||||||
| 
 |  | ||||||
|     MBEDTLS_SSL_DEBUG_MSG( 2, ( "client state: %d", ssl->state ) ); |     MBEDTLS_SSL_DEBUG_MSG( 2, ( "client state: %d", ssl->state ) ); | ||||||
| 
 | 
 | ||||||
|     if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) |  | ||||||
|         return( ret ); |  | ||||||
| 
 |  | ||||||
| #if defined(MBEDTLS_SSL_PROTO_DTLS) |  | ||||||
|     if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && |  | ||||||
|         ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) |  | ||||||
|     { |  | ||||||
|         if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) |  | ||||||
|             return( ret ); |  | ||||||
|     } |  | ||||||
| #endif /* MBEDTLS_SSL_PROTO_DTLS */ |  | ||||||
| 
 |  | ||||||
|     /* Change state now, so that it is right in mbedtls_ssl_read_record(), used
 |     /* Change state now, so that it is right in mbedtls_ssl_read_record(), used
 | ||||||
|      * by DTLS for dropping out-of-sequence ChangeCipherSpec records */ |      * by DTLS for dropping out-of-sequence ChangeCipherSpec records */ | ||||||
| #if defined(MBEDTLS_SSL_SESSION_TICKETS) | #if defined(MBEDTLS_SSL_SESSION_TICKETS) | ||||||
|  | |||||||
| @ -4258,23 +4258,8 @@ int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ) | |||||||
| { | { | ||||||
|     int ret = 0; |     int ret = 0; | ||||||
| 
 | 
 | ||||||
|     if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER || ssl->handshake == NULL ) |  | ||||||
|         return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); |  | ||||||
| 
 |  | ||||||
|     MBEDTLS_SSL_DEBUG_MSG( 2, ( "server state: %d", ssl->state ) ); |     MBEDTLS_SSL_DEBUG_MSG( 2, ( "server state: %d", ssl->state ) ); | ||||||
| 
 | 
 | ||||||
|     if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) |  | ||||||
|         return( ret ); |  | ||||||
| 
 |  | ||||||
| #if defined(MBEDTLS_SSL_PROTO_DTLS) |  | ||||||
|     if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && |  | ||||||
|         ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) |  | ||||||
|     { |  | ||||||
|         if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) |  | ||||||
|             return( ret ); |  | ||||||
|     } |  | ||||||
| #endif /* MBEDTLS_SSL_PROTO_DTLS */ |  | ||||||
| 
 |  | ||||||
|     switch( ssl->state ) |     switch( ssl->state ) | ||||||
|     { |     { | ||||||
|         case MBEDTLS_SSL_HELLO_REQUEST: |         case MBEDTLS_SSL_HELLO_REQUEST: | ||||||
|  | |||||||
| @ -5130,12 +5130,40 @@ int mbedtls_ssl_session_load( mbedtls_ssl_session *session, | |||||||
| /*
 | /*
 | ||||||
|  * Perform a single step of the SSL handshake |  * Perform a single step of the SSL handshake | ||||||
|  */ |  */ | ||||||
|  | static int ssl_prepare_handshake_step( mbedtls_ssl_context *ssl ) | ||||||
|  | { | ||||||
|  |     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; | ||||||
|  | 
 | ||||||
|  |     if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) | ||||||
|  |         return( ret ); | ||||||
|  | 
 | ||||||
|  | #if defined(MBEDTLS_SSL_PROTO_DTLS) | ||||||
|  |     if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && | ||||||
|  |         ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) | ||||||
|  |     { | ||||||
|  |         if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) | ||||||
|  |             return( ret ); | ||||||
|  |     } | ||||||
|  | #endif /* MBEDTLS_SSL_PROTO_DTLS */ | ||||||
|  | 
 | ||||||
|  |     return( ret ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int mbedtls_ssl_handshake_step( mbedtls_ssl_context *ssl ) | int mbedtls_ssl_handshake_step( mbedtls_ssl_context *ssl ) | ||||||
| { | { | ||||||
|     int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; |     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; | ||||||
| 
 | 
 | ||||||
|     if( ssl == NULL || ssl->conf == NULL ) |     if( ssl            == NULL                       || | ||||||
|  |         ssl->conf      == NULL                       || | ||||||
|  |         ssl->handshake == NULL                       || | ||||||
|  |         ssl->state     == MBEDTLS_SSL_HANDSHAKE_OVER ) | ||||||
|  |     { | ||||||
|         return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); |         return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     ret = ssl_prepare_handshake_step( ssl ); | ||||||
|  |     if( ret != 0 ) | ||||||
|  |         return( ret ); | ||||||
| 
 | 
 | ||||||
| #if defined(MBEDTLS_SSL_CLI_C) | #if defined(MBEDTLS_SSL_CLI_C) | ||||||
|     if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) |     if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Manuel Pégourié-Gonnard
						Manuel Pégourié-Gonnard