From 15a56813a28814cc4132188dd233a8c11b2794de Mon Sep 17 00:00:00 2001 From: Xiaofei Bai Date: Fri, 5 Nov 2021 10:52:12 +0000 Subject: [PATCH] TLS1.3 Add hostname extention Signed-off-by: Xiaofei Bai --- library/ssl_cli.c | 9 +++++++++ library/ssl_misc.h | 7 +++++++ library/ssl_tls13_client.c | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 9fc804126..f070b0fad 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -156,6 +156,15 @@ static int ssl_write_hostname_ext( mbedtls_ssl_context *ssl, return( 0 ); } + +int mbedtls_ssl_write_hostname_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ) +{ + return ssl_write_hostname_ext( ssl, buf, end, olen ); +} + #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #if defined(MBEDTLS_SSL_RENEGOTIATION) diff --git a/library/ssl_misc.h b/library/ssl_misc.h index c7d966bf2..87347bf26 100644 --- a/library/ssl_misc.h +++ b/library/ssl_misc.h @@ -1037,6 +1037,13 @@ void mbedtls_ssl_set_inbound_transform( mbedtls_ssl_context *ssl, void mbedtls_ssl_set_outbound_transform( mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform ); +#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) +int mbedtls_ssl_write_hostname_ext( mbedtls_ssl_context *ssl, + unsigned char *buf, + const unsigned char *end, + size_t *olen ); +#endif + int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ); void mbedtls_ssl_handshake_wrapup( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls13_client.c b/library/ssl_tls13_client.c index 9c8848454..511f4cd28 100644 --- a/library/ssl_tls13_client.c +++ b/library/ssl_tls13_client.c @@ -798,6 +798,14 @@ static int ssl_tls13_write_client_hello_body( mbedtls_ssl_context *ssl, #endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ +#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + /* Write server name extention */ + ret = mbedtls_ssl_write_hostname_ext( ssl, p, end, &output_len ); + if( ret != 0 ) + return( ret ); + p += output_len; +#endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ + /* Add more extensions here */ /* Write the length of the list of extensions. */