From 41139a2541becc709e687ee7f623098310329ec6 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 8 Dec 2021 18:25:39 +0100 Subject: [PATCH] mbedtls_ssl_handshake_params: move group_list earlier to save code size Placing group_list earlier seems to help significantly, not just as a matter of placing it in the 128-element (512-byte) access window. Results (arm-none-eabi-gcc 7.3.1, build_arm_none_eabi_gcc_m0plus build): library/ssl_cli.o: 19559 -> 19551 (diff: 8) library/ssl_msg.o: 24690 -> 24674 (diff: 16) library/ssl_srv.o: 20418 -> 20406 (diff: 12) library/ssl_tls.o: 20555 -> 20519 (diff: 36) library/ssl_tls13_client.o: 7244 -> 7240 (diff: 4) library/ssl_tls13_generic.o: 4693 -> 4697 (diff: -4) Results (same architecture, config-suite-b.h + MBEDTLS_ECDH_LEGACY_CONTEXT + MBEDTLS_ECP_RESTARTABLE): library/ssl_cli.o: 2864 -> 2860 (diff: 4) library/ssl_tls.o: 6566 -> 6546 (diff: 20) Signed-off-by: Gilles Peskine --- library/ssl_misc.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/library/ssl_misc.h b/library/ssl_misc.h index 6af125f704..8a882f2aeb 100644 --- a/library/ssl_misc.h +++ b/library/ssl_misc.h @@ -552,6 +552,10 @@ struct mbedtls_ssl_handshake_params unsigned char retransmit_state; /*!< Retransmission state */ #endif +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + unsigned char group_list_heap_allocated; +#endif + #if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) uint8_t ecrs_enabled; /*!< Handshake supports EC restart? */ mbedtls_x509_crt_restart_ctx ecrs_ctx; /*!< restart context */ @@ -587,6 +591,10 @@ struct mbedtls_ssl_handshake_params mbedtls_ssl_sig_hash_set_t hash_algs; /*!< Set of suitable sig-hash pairs */ #endif +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + const uint16_t *group_list; +#endif + #if defined(MBEDTLS_DHM_C) mbedtls_dhm_context dhm_ctx; /*!< DHM key exchange */ #endif @@ -802,11 +810,6 @@ struct mbedtls_ssl_handshake_params * The library does not use it internally. */ void *user_async_ctx; #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ - -#if !defined(MBEDTLS_DEPRECATED_REMOVED) - const uint16_t *group_list; - unsigned char group_list_heap_allocated; -#endif }; typedef struct mbedtls_ssl_hs_buffer mbedtls_ssl_hs_buffer;