mirror of
				https://github.com/yuzu-emu/mbedtls.git
				synced 2025-11-04 15:25:03 +00:00 
			
		
		
		
	Make mbedtls_ssl_cf_memcpy_offset() constant-flow
all.sh component test_valgrind_constant_flow is now passing. Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
		
							parent
							
								
									73afa37507
								
							
						
					
					
						commit
						de1cf2c5e1
					
				| 
						 | 
				
			
			@ -314,27 +314,6 @@ int (*mbedtls_ssl_hw_record_read)( mbedtls_ssl_context *ssl ) = NULL;
 | 
			
		|||
int (*mbedtls_ssl_hw_record_finish)( mbedtls_ssl_context *ssl ) = NULL;
 | 
			
		||||
#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */
 | 
			
		||||
 | 
			
		||||
/* The function below is only used in the Lucky 13 counter-measure in
 | 
			
		||||
 * mbedtls_ssl_decrypt_buf(). These are the defines that guard the call site. */
 | 
			
		||||
#if defined(MBEDTLS_SSL_SOME_MODES_USE_MAC) && \
 | 
			
		||||
    ( defined(MBEDTLS_SSL_PROTO_TLS1) || \
 | 
			
		||||
      defined(MBEDTLS_SSL_PROTO_TLS1_1) || \
 | 
			
		||||
      defined(MBEDTLS_SSL_PROTO_TLS1_2) )
 | 
			
		||||
/* This function makes sure every byte in the memory region is accessed
 | 
			
		||||
 * (in ascending addresses order) */
 | 
			
		||||
static void ssl_read_memory( const unsigned char *p, size_t len )
 | 
			
		||||
{
 | 
			
		||||
    unsigned char acc = 0;
 | 
			
		||||
    volatile unsigned char force;
 | 
			
		||||
 | 
			
		||||
    for( ; len != 0; p++, len-- )
 | 
			
		||||
        acc ^= *p;
 | 
			
		||||
 | 
			
		||||
    force = acc;
 | 
			
		||||
    (void) force;
 | 
			
		||||
}
 | 
			
		||||
#endif /* SSL_SOME_MODES_USE_MAC && ( TLS1 || TLS1_1 || TLS1_2 ) */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Encryption/decryption functions
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			@ -1206,10 +1185,13 @@ MBEDTLS_STATIC_TESTABLE void mbedtls_ssl_cf_memcpy_offset(
 | 
			
		|||
                                   size_t offset_min, size_t offset_max,
 | 
			
		||||
                                   size_t len )
 | 
			
		||||
{
 | 
			
		||||
    /* WIP - THIS IS NOT ACTUALLY CONSTANT-FLOW!
 | 
			
		||||
     * This is just to be able to write tests and check they work. */
 | 
			
		||||
    ssl_read_memory( src_base + offset_min, offset_max - offset_min + len );
 | 
			
		||||
    memcpy( dst, src_base + offset_secret, len );
 | 
			
		||||
    size_t offset;
 | 
			
		||||
 | 
			
		||||
    for( offset = offset_min; offset <= offset_max; offset++ )
 | 
			
		||||
    {
 | 
			
		||||
        mbedtls_ssl_cf_memcpy_if_eq( dst, src_base + offset, len,
 | 
			
		||||
                                     offset, offset_secret );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue