From 728a38b40d0a38c3279a178954b0e178d9082a53 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 23 Aug 2019 14:52:22 +0100 Subject: [PATCH] TinyCrypt SSL: Adapt calculation of maximum PMS size in ssl.h ssl.h contains a dummy union of fields each large enough to hold the PMS for a particular ciphersuite. In particular, for pure-ECDH ciphersuites, it contains a field large enough to hold the ECDH shared secret in any of the enabled curves. So far, this upper bound was unconditionally chosen to be MBEDTLS_ECP_MAX_BYTES from the ECP module. With the introduction of TinyCrypt as an alternative implementation for ECDH, we need to - guard the use of MBEDTLS_ECP_MAX_BYTES because MBEDTLS_ECP_C is no longer implied by the surrounding MBEDTLS_KEY_EXCHANGE_XXX guards - add another field which contains the maximum length of shared ECDH secrets for curves supported by TinyCrypt. --- include/mbedtls/ssl.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 7efb411f3..6660346e4 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -46,6 +46,10 @@ #include "ecdh.h" #endif +#if defined(MBEDTLS_USE_TINYCRYPT) +#include "tinycrypt/ecc.h" +#endif + #if defined(MBEDTLS_ZLIB_SUPPORT) #if defined(MBEDTLS_DEPRECATED_WARNING) @@ -510,8 +514,13 @@ union mbedtls_ssl_premaster_secret defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) +#if defined(MBEDTLS_ECDH_C) unsigned char _pms_ecdh[MBEDTLS_ECP_MAX_BYTES]; /* RFC 4492 5.10 */ #endif +#if defined(MBEDTLS_USE_TINYCRYPT) + unsigned char _pms_ecdh_uecc[ NUM_ECC_BYTES ]; +#endif +#endif #if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) unsigned char _pms_psk[4 + 2 * MBEDTLS_PSK_MAX_LEN]; /* RFC 4279 2 */ #endif