Allow compile-time configuration of timer callbacks
Introduces
- MBEDTLS_SSL_CONF_SET_TIMER
- MBEDTLS_SSL_CONF_GET_TIMER
which allows to configure timer callbacks at compile-time.
Impact on code-size:
| | GCC 8.2.1 | ARMC5 5.06 | ARMC6 6.12 |
| --- | --- | --- | --- |
| `libmbedtls.a` before | 23379 | 23981 | 26941 |
| `libmbedtls.a` after | 23351 | 23953 | 26869 |
| gain in Bytes | 28 | 28 | 72 |
diff --git a/programs/ssl/dtls_client.c b/programs/ssl/dtls_client.c
index 6f508ae..700e197 100644
--- a/programs/ssl/dtls_client.c
+++ b/programs/ssl/dtls_client.c
@@ -213,8 +213,15 @@
mbedtls_ssl_set_bio_ctx( &ssl, &server_fd );
#endif
+#if defined(MBEDTLS_TIMING_C)
+#if !defined(MBEDTLS_SSL_CONF_SET_TIMER) && \
+ !defined(MBEDTLS_SSL_CONF_GET_TIMER)
mbedtls_ssl_set_timer_cb( &ssl, &timer, mbedtls_timing_set_delay,
mbedtls_timing_get_delay );
+#else
+ mbedtls_ssl_set_timer_cb_ctx( &ssl, &timer );
+#endif
+#endif
mbedtls_printf( " ok\n" );
diff --git a/programs/ssl/dtls_server.c b/programs/ssl/dtls_server.c
index 7d19d69..e238a95 100644
--- a/programs/ssl/dtls_server.c
+++ b/programs/ssl/dtls_server.c
@@ -254,8 +254,14 @@
goto exit;
}
- mbedtls_ssl_set_timer_cb( &ssl, &timer, mbedtls_timing_set_delay,
- mbedtls_timing_get_delay );
+#if !defined(MBEDTLS_SSL_CONF_SET_TIMER) && \
+ !defined(MBEDTLS_SSL_CONF_GET_TIMER)
+ mbedtls_ssl_set_timer_cb( &ssl, &timer,
+ mbedtls_timing_set_delay,
+ mbedtls_timing_get_delay );
+#else
+ mbedtls_ssl_set_timer_cb_ctx( &ssl, &timer );
+#endif
printf( " ok\n" );
diff --git a/programs/ssl/query_config.c b/programs/ssl/query_config.c
index a4881df..cda71fd 100644
--- a/programs/ssl/query_config.c
+++ b/programs/ssl/query_config.c
@@ -2706,6 +2706,22 @@
}
#endif /* MBEDTLS_SSL_CONF_IGNORE_UNEXPECTED_CID */
+#if defined(MBEDTLS_SSL_CONF_GET_TIMER)
+ if( strcmp( "MBEDTLS_SSL_CONF_GET_TIMER", config ) == 0 )
+ {
+ MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CONF_GET_TIMER );
+ return( 0 );
+ }
+#endif /* MBEDTLS_SSL_CONF_GET_TIMER */
+
+#if defined(MBEDTLS_SSL_CONF_SET_TIMER)
+ if( strcmp( "MBEDTLS_SSL_CONF_SET_TIMER", config ) == 0 )
+ {
+ MACRO_EXPANSION_TO_STR( MBEDTLS_SSL_CONF_SET_TIMER );
+ return( 0 );
+ }
+#endif /* MBEDTLS_SSL_CONF_SET_TIMER */
+
#if defined(MBEDTLS_SSL_CONF_RECV)
if( strcmp( "MBEDTLS_SSL_CONF_RECV", config ) == 0 )
{
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 695cc6a..c63b445 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -1915,8 +1915,13 @@
#endif
#if defined(MBEDTLS_TIMING_C)
+#if !defined(MBEDTLS_SSL_CONF_SET_TIMER) && \
+ !defined(MBEDTLS_SSL_CONF_GET_TIMER)
mbedtls_ssl_set_timer_cb( &ssl, &timer, mbedtls_timing_set_delay,
mbedtls_timing_get_delay );
+#else
+ mbedtls_ssl_set_timer_cb_ctx( &ssl, &timer );
+#endif
#endif
#if defined(MBEDTLS_ECP_RESTARTABLE)
@@ -2507,9 +2512,16 @@
#if defined(MBEDTLS_TIMING_C)
if( opt.nbio != 0 && opt.read_timeout != 0 )
+ {
+#if !defined(MBEDTLS_SSL_CONF_SET_TIMER) && \
+ !defined(MBEDTLS_SSL_CONF_GET_TIMER)
mbedtls_ssl_set_timer_cb( &ssl, &timer,
mbedtls_timing_set_delay,
mbedtls_timing_get_delay );
+#else
+ mbedtls_ssl_set_timer_cb_ctx( &ssl, &timer );
+#endif
+ }
#endif /* MBEDTLS_TIMING_C */
}
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 916a642..876a7a0 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -2898,8 +2898,13 @@
#endif
#if defined(MBEDTLS_TIMING_C)
+#if !defined(MBEDTLS_SSL_CONF_SET_TIMER) && \
+ !defined(MBEDTLS_SSL_CONF_GET_TIMER)
mbedtls_ssl_set_timer_cb( &ssl, &timer, mbedtls_timing_set_delay,
mbedtls_timing_get_delay );
+#else
+ mbedtls_ssl_set_timer_cb_ctx( &ssl, &timer );
+#endif
#endif
mbedtls_printf( " ok\n" );
@@ -3515,9 +3520,16 @@
#if defined(MBEDTLS_TIMING_C)
if( opt.nbio != 0 && opt.read_timeout != 0 )
+ {
+#if !defined(MBEDTLS_SSL_CONF_SET_TIMER) && \
+ !defined(MBEDTLS_SSL_CONF_GET_TIMER)
mbedtls_ssl_set_timer_cb( &ssl, &timer,
mbedtls_timing_set_delay,
mbedtls_timing_get_delay );
+#else
+ mbedtls_ssl_set_timer_cb_ctx( &ssl, &timer );
+#endif
+ }
#endif /* MBEDTLS_TIMING_C */
}