Skip to content

Commit ef414bf

Browse files
committed
Handle server_hostname argument in espressif SSLContext.wrap_socket
1 parent bcb516c commit ef414bf

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

ports/espressif/common-hal/ssl/SSLContext.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t
4747
sock->ssl_context = self;
4848
sock->sock = socket;
4949

50+
// Create a copy of the ESP-TLS config object and store the server hostname
51+
// Note that ESP-TLS will use common_name for both SNI and verification
52+
memcpy(&sock->ssl_config, &self->ssl_config, sizeof(self->ssl_config));
53+
sock->ssl_config.common_name = server_hostname;
54+
5055
esp_tls_t *tls_handle = esp_tls_init();
5156
if (tls_handle == NULL) {
5257
mp_raise_espidf_MemoryError();
@@ -55,6 +60,5 @@ ssl_sslsocket_obj_t *common_hal_ssl_sslcontext_wrap_socket(ssl_sslcontext_obj_t
5560

5661
// TODO: do something with the original socket? Don't call a close on the internal LWIP.
5762

58-
// Should we store server hostname on the socket in case connect is called with an ip?
5963
return sock;
6064
}

ports/espressif/common-hal/ssl/SSLSocket.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ void common_hal_ssl_sslsocket_close(ssl_sslsocket_obj_t *self) {
5555

5656
void common_hal_ssl_sslsocket_connect(ssl_sslsocket_obj_t *self,
5757
const char *host, size_t hostlen, uint32_t port) {
58-
esp_tls_cfg_t *tls_config = NULL;
59-
tls_config = &self->ssl_context->ssl_config;
60-
int result = esp_tls_conn_new_sync(host, hostlen, port, tls_config, self->tls);
58+
int result = esp_tls_conn_new_sync(host, hostlen, port, &self->ssl_config, self->tls);
6159
self->sock->connected = result >= 0;
6260
if (result < 0) {
6361
int esp_tls_code;

ports/espressif/common-hal/ssl/SSLSocket.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ typedef struct {
3939
socketpool_socket_obj_t *sock;
4040
esp_tls_t *tls;
4141
ssl_sslcontext_obj_t *ssl_context;
42+
esp_tls_cfg_t ssl_config;
4243
} ssl_sslsocket_obj_t;
4344

4445
#endif // MICROPY_INCLUDED_ESPRESSIF_COMMON_HAL_SSL_SSLSOCKET_H

0 commit comments

Comments
 (0)