From a5c891c73f505dde0b81cad51b8b216b5b54b6bd Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Wed, 16 Aug 2023 16:35:30 +0200
Subject: [PATCH] mpy: add tls support

---
 components/micropython/CMakeLists.txt                    | 1 +
 components/micropython/vendor/extmod/moduhashlib.c       | 4 ++--
 components/micropython/vendor/extmod/modussl_mbedtls.c   | 4 ++++
 components/micropython/vendor/ports/esp32/mpconfigport.h | 2 +-
 4 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/components/micropython/CMakeLists.txt b/components/micropython/CMakeLists.txt
index 6ac89ec601..d6bfe8d638 100644
--- a/components/micropython/CMakeLists.txt
+++ b/components/micropython/CMakeLists.txt
@@ -107,6 +107,7 @@ set(IDF_COMPONENTS
     heap
     log
     lwip
+    mbedtls
     newlib
     nvs_flash
     sdmmc
diff --git a/components/micropython/vendor/extmod/moduhashlib.c b/components/micropython/vendor/extmod/moduhashlib.c
index 64e15c444d..1f44d82ac8 100644
--- a/components/micropython/vendor/extmod/moduhashlib.c
+++ b/components/micropython/vendor/extmod/moduhashlib.c
@@ -75,7 +75,7 @@ STATIC mp_obj_t uhashlib_sha256_update(mp_obj_t self_in, mp_obj_t arg);
 
 #if MICROPY_SSL_MBEDTLS
 
-#if MBEDTLS_VERSION_NUMBER < 0x02070000
+#if MBEDTLS_VERSION_NUMBER < 0x02070000 || MBEDTLS_VERSION_NUMBER >= 0x03000000
 #define mbedtls_sha256_starts_ret mbedtls_sha256_starts
 #define mbedtls_sha256_update_ret mbedtls_sha256_update
 #define mbedtls_sha256_finish_ret mbedtls_sha256_finish
@@ -203,7 +203,7 @@ STATIC mp_obj_t uhashlib_sha1_digest(mp_obj_t self_in) {
 
 #if MICROPY_SSL_MBEDTLS
 
-#if MBEDTLS_VERSION_NUMBER < 0x02070000
+#if MBEDTLS_VERSION_NUMBER < 0x02070000 || MBEDTLS_VERSION_NUMBER >= 0x03000000
 #define mbedtls_sha1_starts_ret mbedtls_sha1_starts
 #define mbedtls_sha1_update_ret mbedtls_sha1_update
 #define mbedtls_sha1_finish_ret mbedtls_sha1_finish
diff --git a/components/micropython/vendor/extmod/modussl_mbedtls.c b/components/micropython/vendor/extmod/modussl_mbedtls.c
index eea2d79532..44c31bc453 100644
--- a/components/micropython/vendor/extmod/modussl_mbedtls.c
+++ b/components/micropython/vendor/extmod/modussl_mbedtls.c
@@ -225,7 +225,11 @@ STATIC mp_obj_ssl_socket_t *socket_new(mp_obj_t sock, struct ssl_args *args) {
         size_t key_len;
         const byte *key = (const byte *)mp_obj_str_get_data(args->key.u_obj, &key_len);
         // len should include terminating null
+        #if MBEDTLS_VERSION_NUMBER >= 0x03000000
+        ret = mbedtls_pk_parse_key(&o->pkey, key, key_len + 1, NULL, 0, mbedtls_ctr_drbg_random, &o->ctr_drbg);
+        #else
         ret = mbedtls_pk_parse_key(&o->pkey, key, key_len + 1, NULL, 0);
+        #endif
         if (ret != 0) {
             ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; // use general error for all key errors
             goto cleanup;
diff --git a/components/micropython/vendor/ports/esp32/mpconfigport.h b/components/micropython/vendor/ports/esp32/mpconfigport.h
index c878105e4a..ed821bb029 100644
--- a/components/micropython/vendor/ports/esp32/mpconfigport.h
+++ b/components/micropython/vendor/ports/esp32/mpconfigport.h
@@ -131,7 +131,7 @@
 #define MICROPY_HW_SOFTSPI_MIN_DELAY        (0)
 #define MICROPY_HW_SOFTSPI_MAX_BAUDRATE     (ets_get_cpu_frequency() * 1000000 / 200) // roughly
 #define MICROPY_PY_USSL                     (1)
-#define MICROPY_SSL_MBEDTLS                 (0)
+#define MICROPY_SSL_MBEDTLS                 (1)
 #define MICROPY_PY_USSL_FINALISER           (1)
 #define MICROPY_PY_UWEBSOCKET               (1)
 #define MICROPY_PY_WEBREPL                  (1)
-- 
GitLab