aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannes Tschofenig <hannes.tschofenig@arm.com>2020-12-03 17:37:49 +0100
committerHannes Tschofenig <hannes.tschofenig@arm.com>2020-12-03 17:37:49 +0100
commite151a3528a856b7c677741fdefd2608e12f1d8a6 (patch)
tree8fe4acc4bef3a1313d016c796f6f35a1639a66fb
parentc34d9cf37a3b394fe25d9087940c25e0ced26e53 (diff)
downloadmbedtls-e151a3528a856b7c677741fdefd2608e12f1d8a6.zip
mbedtls-e151a3528a856b7c677741fdefd2608e12f1d8a6.tar.gz
mbedtls-e151a3528a856b7c677741fdefd2608e12f1d8a6.tar.bz2
Adding early ECDHE key generation to ssl_cli.c
-rw-r--r--library/ssl_cli.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/library/ssl_cli.c b/library/ssl_cli.c
index eaba905..822b069 100644
--- a/library/ssl_cli.c
+++ b/library/ssl_cli.c
@@ -3661,11 +3661,15 @@ static int ssl_out_client_key_exchange_write( mbedtls_ssl_context *ssl,
*p++ = 2 * NUM_ECC_BYTES + 1;
*p++ = 0x04; /* uncompressed point presentation */
+#if defined(MBEDTLS_EARLY_KEY_COMPUTATION) && defined(MBEDTLS_USE_TINYCRYPT)
+ memcpy( p, ssl->handshake->ecdh_publickey, 2 * NUM_ECC_BYTES );
+#else
ret = uECC_make_key( p, ssl->handshake->ecdh_privkey );
if( ret == UECC_FAULT_DETECTED )
return( MBEDTLS_ERR_PLATFORM_FAULT_DETECTED );
if( ret != UECC_SUCCESS )
return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED );
+#endif /* MBEDTLS_EARLY_KEY_COMPUTATION && MBEDTLS_USE_TINYCRYPT */
p += 2 * NUM_ECC_BYTES;
}
else
@@ -4272,6 +4276,14 @@ int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl )
* ServerHelloDone
*/
case MBEDTLS_SSL_SERVER_HELLO:
+#if defined(MBEDTLS_EARLY_KEY_COMPUTATION) && defined(MBEDTLS_USE_TINYCRYPT)
+ ret = uECC_make_key( ssl->handshake->ecdh_publickey, ssl->handshake->ecdh_privkey );
+ if( ret == UECC_FAULT_DETECTED )
+ return( MBEDTLS_ERR_PLATFORM_FAULT_DETECTED );
+ if( ret != UECC_SUCCESS )
+ return( MBEDTLS_ERR_SSL_HW_ACCEL_FAILED );
+#endif /* MBEDTLS_EARLY_KEY_COMPUTATION && MBEDTLS_USE_TINYCRYPT */
+
ret = ssl_parse_server_hello( ssl );
break;