From ab4ad9520240ddeaa360224a4d35543f78f2d055 Mon Sep 17 00:00:00 2001 From: Anthony Grondin <104731965+AnthonyGrondin@users.noreply.github.com> Date: Mon, 23 Dec 2024 16:35:28 -0500 Subject: [PATCH] fix: Update esp-mbedtls compatiblity with latest HEAD --- src/client.rs | 37 +++++++++++++------------------------ src/lib.rs | 2 +- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/src/client.rs b/src/client.rs index e4d9f8c..7f91864 100644 --- a/src/client.rs +++ b/src/client.rs @@ -35,14 +35,8 @@ pub struct TlsConfig<'a, const RX_SIZE: usize = 4096, const TX_SIZE: usize = 409 /// Client certificates. See [esp_mbedtls::Certificates] certificates: crate::Certificates<'a>, - /// Will use hardware acceleration on the ESP32 if it contains the RSA peripheral. - rsa: Option<&'a mut esp_mbedtls::hal::peripherals::RSA>, - - /// Buffer for the reading side of the TLS connection - read_buffer: &'a mut [u8; RX_SIZE], - - /// Buffer for the writing side of the TLS connection - write_buffer: &'a mut [u8; TX_SIZE], + /// A reference to instance of the MbedTLS library. + tls_reference: esp_mbedtls::TlsReference<'a>, } /// Type for TLS configuration of HTTP client. @@ -78,18 +72,14 @@ impl<'a> TlsConfig<'a> { #[cfg(feature = "esp-mbedtls")] impl<'a, const RX_SIZE: usize, const TX_SIZE: usize> TlsConfig<'a, RX_SIZE, TX_SIZE> { pub fn new( - read_buffer: &'a mut [u8; RX_SIZE], - write_buffer: &'a mut [u8; TX_SIZE], version: crate::TlsVersion, certificates: crate::Certificates<'a>, - rsa: Option<&'a mut esp_mbedtls::hal::peripherals::RSA>, + tls_reference: crate::TlsReference<'a>, ) -> Self { Self { version, certificates, - rsa, - read_buffer, - write_buffer, + tls_reference, } } } @@ -141,21 +131,20 @@ where if url.scheme() == UrlScheme::HTTPS { #[cfg(feature = "esp-mbedtls")] if let Some(tls) = self.tls.as_mut() { + let mut servername = host.as_bytes().to_vec(); + servername.push(0); let mut session = esp_mbedtls::asynch::Session::new( conn, - host, - esp_mbedtls::Mode::Client, + esp_mbedtls::Mode::Client { + servername: unsafe { core::ffi::CStr::from_bytes_with_nul_unchecked(&servername) }, + }, tls.version, tls.certificates, - tls.read_buffer, - tls.write_buffer, + tls.tls_reference, )?; - if let Some(rsa) = tls.rsa.as_mut() { - session = session.with_hardware_rsa(rsa as &mut esp_mbedtls::hal::peripherals::RSA); - } - - Ok(HttpConnection::Tls(session.connect().await?)) + session.connect().await?; + Ok(HttpConnection::Tls(session)) } else { Ok(HttpConnection::Plain(conn)) } @@ -234,7 +223,7 @@ where Plain(C), PlainBuffered(BufferedWrite<'conn, C>), #[cfg(feature = "esp-mbedtls")] - Tls(esp_mbedtls::asynch::AsyncConnectedSession<'conn, C, 4096, 4096>), + Tls(esp_mbedtls::asynch::Session<'conn, C>), #[cfg(feature = "embedded-tls")] Tls(embedded_tls::TlsConnection<'conn, C, embedded_tls::Aes128GcmSha256>), #[cfg(all(not(feature = "embedded-tls"), not(feature = "esp-mbedtls")))] diff --git a/src/lib.rs b/src/lib.rs index 2fb79c6..bf66261 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -76,7 +76,7 @@ impl From for Error { /// Re-export those members since they're used for [client::TlsConfig]. #[cfg(feature = "esp-mbedtls")] -pub use esp_mbedtls::{Certificates, TlsVersion, X509}; +pub use esp_mbedtls::{Certificates, TlsVersion, X509, TlsReference}; #[cfg(feature = "esp-mbedtls")] impl From for Error {