diff --git a/ChangeLog.d/add_final_delay_accessor b/ChangeLog.d/add_final_delay_accessor new file mode 100644 index 0000000000..8d341df131 --- /dev/null +++ b/ChangeLog.d/add_final_delay_accessor @@ -0,0 +1,4 @@ +Features + * Add the function mbedtls_timing_get_final_delay() to access the private + final delay field in an mbedtls_timing_delay_context, as requested in + #5183 diff --git a/include/mbedtls/timing.h b/include/mbedtls/timing.h index 25db1c6aa7..652548d971 100644 --- a/include/mbedtls/timing.h +++ b/include/mbedtls/timing.h @@ -90,6 +90,17 @@ void mbedtls_timing_set_delay( void *data, uint32_t int_ms, uint32_t fin_ms ); */ int mbedtls_timing_get_delay( void *data ); +/** + * \brief Get the final timing delay + * + * \param data Pointer to timing data + * Must point to a valid \c mbedtls_timing_delay_context struct. + * + * \return Final timing delay in milliseconds. + */ +uint32_t mbedtls_timing_get_final_delay( + const mbedtls_timing_delay_context *data ); + #ifdef __cplusplus } #endif diff --git a/library/timing.c b/library/timing.c index d66e11e262..a65bc99406 100644 --- a/library/timing.c +++ b/library/timing.c @@ -158,13 +158,28 @@ int mbedtls_timing_get_delay( void *data ) return( 0 ); } -#else -int mbedtls_timing_get_delay( void *data ) + +/* + * Get the final delay. + */ +uint32_t mbedtls_timing_get_final_delay( + const mbedtls_timing_delay_context *data ) +{ + return( data->fin_ms ); +} +#else /* MBEDTLS_HAVE_TIME */ +uint32_t mbedtls_timing_get_final_delay( + const mbedtls_timing_delay_context *data ) { (void) data; return( 0 ); } +int mbedtls_timing_get_delay( void *data ) +{ + (void) data; + return( 0 ); +} void mbedtls_timing_set_delay( void *data, uint32_t int_ms, uint32_t fin_ms ) { (void) data; @@ -178,6 +193,7 @@ unsigned long mbedtls_timing_get_timer( struct mbedtls_timing_hr_time *val, int (void) reset; return( 0 ); } + #endif /* MBEDTLS_HAVE_TIME */ #endif /* !MBEDTLS_TIMING_ALT */ #endif /* MBEDTLS_TIMING_C */ diff --git a/tests/suites/test_suite_ssl.data b/tests/suites/test_suite_ssl.data index 00d9cab434..7de562afd1 100644 --- a/tests/suites/test_suite_ssl.data +++ b/tests/suites/test_suite_ssl.data @@ -3210,3 +3210,6 @@ conf_curve: Test configuration of groups for DHE through mbedtls_ssl_conf_groups() conf_group: + +Test accessor into timing_delay_context +timing_final_delay_accessor diff --git a/tests/suites/test_suite_ssl.function b/tests/suites/test_suite_ssl.function index 53f68d2219..ec50ae5fa5 100644 --- a/tests/suites/test_suite_ssl.function +++ b/tests/suites/test_suite_ssl.function @@ -5441,3 +5441,14 @@ void conf_group() mbedtls_ssl_config_free( &conf ); } /* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_TIMING_C:MBEDTLS_HAVE_TIME */ +void timing_final_delay_accessor( ) +{ + mbedtls_timing_delay_context delay_context; + + mbedtls_timing_set_delay( &delay_context, 50, 100 ); + + TEST_ASSERT( mbedtls_timing_get_final_delay( &delay_context ) == 100 ); +} +/* END_CASE */