Allow compile-time configuration of I/O function pointers
Introduce the compile-time options
- MBEDTLS_SSL_CONF_RECV
- MBEDTLS_SSL_CONF_SEND
- MBEDTLS_SSL_CONF_RECV_TIMEOUT
which can be used to configure the callbacks for the underlying
transport at compile-time.
Code-size impact:
| | GCC 8.2.1 | ARMC5 5.06 | ARMC6 6.12 |
| --- | --- | --- | --- |
| `libmbedtls.a` before | 23471 | 24077 | 27045 |
| `libmbedtls.a` before | 23379 | 23981 | 26941 |
| gain in Bytes | 92 | 96 | 104 |
diff --git a/include/mbedtls/check_config.h b/include/mbedtls/check_config.h
index 764fba4..29d9906 100644
--- a/include/mbedtls/check_config.h
+++ b/include/mbedtls/check_config.h
@@ -671,6 +671,18 @@
#define "MBEDTLS_SSL_CONF_EXTENDED_MASTER_SECRET and MBEDTLS_SSL_CONF_ENFORCE_EXTENDED_MASTER_SECRET must be defined together."
#endif
+#if ( defined(MBEDTLS_SSL_CONF_SEND) && \
+ !( defined(MBEDTLS_SSL_CONF_RECV) && \
+ defined(MBEDTLS_SSL_CONF_RECV_TIMEOUT) ) ) || \
+ ( defined(MBEDTLS_SSL_CONF_RECV) && \
+ !( defined(MBEDTLS_SSL_CONF_SEND) && \
+ defined(MBEDTLS_SSL_CONF_RECV_TIMEOUT) ) ) || \
+ ( defined(MBEDTLS_SSL_CONF_RECV_TIMEOUT) && \
+ !( defined(MBEDTLS_SSL_CONF_SEND) && \
+ defined(MBEDTLS_SSL_CONF_RECV) ) )
+#define "MBEDTLS_SSL_CONF_SEND/RECV/RECV_TIMEOUT must be defined simultaneously"
+#endif
+
#if defined(MBEDTLS_SSL_TICKET_C) && !defined(MBEDTLS_CIPHER_C)
#error "MBEDTLS_SSL_TICKET_C defined, but not all prerequisites"
#endif