From ab4ec67e4ef715b81aad6984e8bca072314b836c Mon Sep 17 00:00:00 2001 From: Anthony Grondin <104731965+AnthonyGrondin@users.noreply.github.com> Date: Fri, 6 Oct 2023 16:40:03 -0400 Subject: [PATCH] feat(SHA256): Add initial hardware acceleration impl for SHA256 - Currently, esp-wifi needs to be patched to work with this hal revision --- Cargo.toml | 13 +++ esp-mbedtls-sys/headers/esp32/config.h | 2 +- esp-mbedtls-sys/headers/esp32c3/config.h | 2 +- esp-mbedtls-sys/headers/esp32c3/sha256_alt.h | 7 ++ esp-mbedtls-sys/src/include/esp32.rs | 9 -- esp-mbedtls-sys/src/include/esp32c3.rs | 11 +-- esp-mbedtls/Cargo.toml | 1 + esp-mbedtls/src/compat.rs | 4 +- esp-mbedtls/src/lib.rs | 20 +++++ esp-mbedtls/src/sha/mod.rs | 15 ++++ esp-mbedtls/src/sha/sha256.rs | 77 +++++++++++++++++ examples/async_client.rs | 19 +---- examples/async_client_mTLS.rs | 19 +---- examples/async_server.rs | 19 +---- examples/async_server_mTLS.rs | 19 +---- examples/crypto_self_test.rs | 80 ++++++++++++++++++ examples/sync_client.rs | 13 +-- examples/sync_client_mTLS.rs | 13 +-- examples/sync_server.rs | 13 +-- examples/sync_server_mTLS.rs | 13 +-- .../libmbedcrypto.a | Bin 973422 -> 966172 bytes libs/riscv32imc-unknown-none-elf/libmbedtls.a | Bin 608982 -> 608982 bytes libs/xtensa-esp32-none-elf/libmbedcrypto.a | Bin 1159106 -> 1158414 bytes libs/xtensa-esp32-none-elf/libmbedtls.a | Bin 367574 -> 368262 bytes libs/xtensa-esp32-none-elf/libmbedx509.a | Bin 134544 -> 134524 bytes libs/xtensa-esp32s2-none-elf/libmbedcrypto.a | Bin 1158954 -> 1158930 bytes libs/xtensa-esp32s3-none-elf/libmbedcrypto.a | Bin 1159106 -> 1159082 bytes 27 files changed, 239 insertions(+), 130 deletions(-) create mode 100644 esp-mbedtls-sys/headers/esp32c3/sha256_alt.h create mode 100644 esp-mbedtls/src/sha/mod.rs create mode 100644 esp-mbedtls/src/sha/sha256.rs create mode 100644 examples/crypto_self_test.rs diff --git a/Cargo.toml b/Cargo.toml index 8f94d3c..dc2d056 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,6 +43,10 @@ esp-mbedtls = { path = "./esp-mbedtls" } [target.xtensa-esp32s3-none-elf.dependencies] +[[example]] +name = "crypto_self_test" +required-features = ["esp-wifi/wifi-logs"] + [[example]] name = "async_client" required-features = ["async"] @@ -66,3 +70,12 @@ esp32s2 = ["esp32s2-hal/embassy-time-timg0", "esp-backtrace/esp32s2", "esp-print esp32s3 = ["esp32s3-hal/embassy-time-timg0", "esp-backtrace/esp32s3", "esp-println/esp32s3", "embassy-executor?/arch-xtensa", "esp-wifi/esp32s3", "esp-mbedtls/esp32s3"] async = ["esp-wifi/async", "esp-wifi/embassy-net", "embassy-executor", "embassy-net", "embassy-time", "embedded-io/async", "esp-mbedtls/async"] +[patch."https://github.com/esp-rs/esp-wifi.git"] +# Change PATH and patch for interrupt changes +esp-wifi = { package = "esp-wifi", path = "../esp-wifi/esp-wifi/" } + +[patch.crates-io] +esp32-hal = { package = "esp32-hal", git = "https://github.com/esp-rs/esp-hal.git", rev = "44e968f7a83f80be43d60cdc01c10eccab4b39cf" } +esp32c3-hal = { package = "esp32c3-hal", git = "https://github.com/esp-rs/esp-hal.git", rev = "44e968f7a83f80be43d60cdc01c10eccab4b39cf" } +esp32s2-hal = { package = "esp32s2-hal", git = "https://github.com/esp-rs/esp-hal.git", rev = "44e968f7a83f80be43d60cdc01c10eccab4b39cf" } +esp32s3-hal = { package = "esp32s3-hal", git = "https://github.com/esp-rs/esp-hal.git", rev = "44e968f7a83f80be43d60cdc01c10eccab4b39cf" } diff --git a/esp-mbedtls-sys/headers/esp32/config.h b/esp-mbedtls-sys/headers/esp32/config.h index 1f366db..b1c746b 100644 --- a/esp-mbedtls-sys/headers/esp32/config.h +++ b/esp-mbedtls-sys/headers/esp32/config.h @@ -3069,7 +3069,7 @@ * * This module adds support for SHA-224. */ -#define MBEDTLS_SHA224_C +// #define MBEDTLS_SHA224_C /** * \def MBEDTLS_SHA256_C diff --git a/esp-mbedtls-sys/headers/esp32c3/config.h b/esp-mbedtls-sys/headers/esp32c3/config.h index 7eb82a8..2dcb92a 100644 --- a/esp-mbedtls-sys/headers/esp32c3/config.h +++ b/esp-mbedtls-sys/headers/esp32c3/config.h @@ -331,7 +331,7 @@ //#define MBEDTLS_RIPEMD160_ALT //#define MBEDTLS_RSA_ALT //#define MBEDTLS_SHA1_ALT -//#define MBEDTLS_SHA256_ALT +#define MBEDTLS_SHA256_ALT //#define MBEDTLS_SHA512_ALT /* diff --git a/esp-mbedtls-sys/headers/esp32c3/sha256_alt.h b/esp-mbedtls-sys/headers/esp32c3/sha256_alt.h new file mode 100644 index 0000000..541f992 --- /dev/null +++ b/esp-mbedtls-sys/headers/esp32c3/sha256_alt.h @@ -0,0 +1,7 @@ + +typedef struct mbedtls_sha256_context { + void* peripheral; + void* hasher; +} mbedtls_sha256_context; + + diff --git a/esp-mbedtls-sys/src/include/esp32.rs b/esp-mbedtls-sys/src/include/esp32.rs index 34a5e23..fb9b3d5 100644 --- a/esp-mbedtls-sys/src/include/esp32.rs +++ b/esp-mbedtls-sys/src/include/esp32.rs @@ -152,8 +152,6 @@ pub const MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY: u32 = 1; pub const PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY: u32 = 1; pub const MBEDTLS_PSA_BUILTIN_ALG_SHA_1: u32 = 1; pub const PSA_WANT_ALG_SHA_1: u32 = 1; -pub const MBEDTLS_PSA_BUILTIN_ALG_SHA_224: u32 = 1; -pub const PSA_WANT_ALG_SHA_224: u32 = 1; pub const MBEDTLS_PSA_BUILTIN_ALG_SHA_256: u32 = 1; pub const PSA_WANT_ALG_SHA_256: u32 = 1; pub const MBEDTLS_PSA_BUILTIN_ALG_SHA_384: u32 = 1; @@ -13457,13 +13455,6 @@ extern "C" { is224: crate::c_types::c_int, ) -> crate::c_types::c_int; } -extern "C" { - /// \brief The SHA-224 checkup routine. - /// - /// \return \c 0 on success. - /// \return \c 1 on failure. - pub fn mbedtls_sha224_self_test(verbose: crate::c_types::c_int) -> crate::c_types::c_int; -} extern "C" { /// \brief The SHA-256 checkup routine. /// diff --git a/esp-mbedtls-sys/src/include/esp32c3.rs b/esp-mbedtls-sys/src/include/esp32c3.rs index 02e7202..2039009 100644 --- a/esp-mbedtls-sys/src/include/esp32c3.rs +++ b/esp-mbedtls-sys/src/include/esp32c3.rs @@ -13324,18 +13324,11 @@ extern "C" { /// \return \c 1 on failure. pub fn mbedtls_sha1_self_test(verbose: crate::c_types::c_int) -> crate::c_types::c_int; } -/// \brief The SHA-256 context structure. -/// -/// The structure is used both for SHA-256 and for SHA-224 -/// checksum calculations. The choice between these two is -/// made in the call to mbedtls_sha256_starts(). #[repr(C)] #[derive(Copy, Clone)] pub struct mbedtls_sha256_context { - pub private_total: [u32; 2usize], - pub private_state: [u32; 8usize], - pub private_buffer: [crate::c_types::c_uchar; 64usize], - pub private_is224: crate::c_types::c_int, + pub peripheral: *mut crate::c_types::c_void, + pub hasher: *mut crate::c_types::c_void, } extern "C" { /// \brief This function initializes a SHA-256 context. diff --git a/esp-mbedtls/Cargo.toml b/esp-mbedtls/Cargo.toml index ed87ba4..0e5ac07 100644 --- a/esp-mbedtls/Cargo.toml +++ b/esp-mbedtls/Cargo.toml @@ -11,6 +11,7 @@ esp32-hal = { version = "0.15.0", optional = true } esp32c3-hal = { version = "0.12.0", optional = true } esp32s2-hal = { version = "0.12.0", optional = true } esp32s3-hal = { version = "0.12.0", optional = true } +nb = "1.1.0" [features] async = ["embedded-io/async"] diff --git a/esp-mbedtls/src/compat.rs b/esp-mbedtls/src/compat.rs index 6f4ef58..48fb52f 100644 --- a/esp-mbedtls/src/compat.rs +++ b/esp-mbedtls/src/compat.rs @@ -2,8 +2,8 @@ use core::ffi::VaListImpl; use core::fmt::Write; #[no_mangle] -extern "C" fn putchar() { - todo!() +extern "C" fn putchar(c: crate::c_int) { + log::info!("{c}"); } #[no_mangle] diff --git a/esp-mbedtls/src/lib.rs b/esp-mbedtls/src/lib.rs index 1c5f4d5..1a34dcd 100644 --- a/esp-mbedtls/src/lib.rs +++ b/esp-mbedtls/src/lib.rs @@ -29,6 +29,26 @@ use embedded_io::Io; use esp_mbedtls_sys::bindings::*; use esp_mbedtls_sys::c_types::*; +/// Re-export self-tests +pub use esp_mbedtls_sys::bindings::{ + // AES + mbedtls_aes_self_test, + // MD5 + mbedtls_md5_self_test, + // RSA + mbedtls_rsa_self_test, + // SHA + mbedtls_sha1_self_test, + mbedtls_sha256_self_test, + mbedtls_sha384_self_test, + mbedtls_sha512_self_test, +}; + +#[cfg(not(feature = "esp32"))] +pub use esp_mbedtls_sys::bindings::mbedtls_sha224_self_test; + +mod sha; + // these will come from esp-wifi (i.e. this can only be used together with esp-wifi) extern "C" { fn free(ptr: *const u8); diff --git a/esp-mbedtls/src/sha/mod.rs b/esp-mbedtls/src/sha/mod.rs new file mode 100644 index 0000000..db88c2f --- /dev/null +++ b/esp-mbedtls/src/sha/mod.rs @@ -0,0 +1,15 @@ +//! Re-export SHA Hardware implementation based on availability. +//! +//! # Hardware support +//! This does not reflect the current implementation but rather the support +//! for the SHA modes on the specific SoCs. +//! +//! | Modes | esp32 | esp32c3 | esp32s2 | esp32s3 | +//! | ------- | ------- | ------- | ------- | ------- | +//! | SHA1 | ✓ | ✓ | ✓ | ✓ | +//! | SHA224 | x | ✓ | ✓ | ✓ | +//! | SHA256 | ✓ | ✓ | ✓ | ✓ | +//! | SHA384 | ✓ | x | ✓ | ✓ | +//! | SHA512 | ✓ | x | ✓ | ✓ | + +mod sha256; diff --git a/esp-mbedtls/src/sha/sha256.rs b/esp-mbedtls/src/sha/sha256.rs new file mode 100644 index 0000000..164a388 --- /dev/null +++ b/esp-mbedtls/src/sha/sha256.rs @@ -0,0 +1,77 @@ +use crate::hal::peripherals::SHA; +use crate::hal::sha::Sha; +use crate::hal::sha::ShaMode; +use esp_mbedtls_sys::c_types::*; +use nb::block; + +#[repr(C)] +pub struct mbedtls_sha256_context<'a> { + peripheral: SHA, + hasher: Sha<'a>, +} + +#[no_mangle] +pub unsafe extern "C" fn mbedtls_sha256_init(ctx: *mut mbedtls_sha256_context) { + (*ctx).peripheral = SHA::steal(); +} + +#[no_mangle] +pub unsafe extern "C" fn mbedtls_sha256_free(_ctx: *mut mbedtls_sha256_context) { + // Do nothing +} + +#[no_mangle] +pub unsafe extern "C" fn mbedtls_sha256_clone<'a>( + dst: *mut mbedtls_sha256_context<'a>, + src: *const mbedtls_sha256_context<'a>, +) { + core::ptr::copy_nonoverlapping(src, dst, 1) +} + +#[allow(unused_variables)] +#[no_mangle] +pub unsafe extern "C" fn mbedtls_sha256_starts( + ctx: *mut mbedtls_sha256_context, + is224: c_int, +) -> c_int { + #[cfg(not(feature = "esp32"))] + let mode = if is224 == 1 { + ShaMode::SHA224 + } else { + ShaMode::SHA256 + }; + + #[cfg(feature = "esp32")] + let mode = ShaMode::SHA256; + + let hasher = Sha::new(&mut (*ctx).peripheral, mode); + + (*ctx).hasher = hasher; + 0 +} + +#[no_mangle] +pub unsafe extern "C" fn mbedtls_sha256_update( + ctx: *mut mbedtls_sha256_context, + input: *const c_uchar, + ilen: usize, +) -> c_int { + let slice = core::ptr::slice_from_raw_parts(input as *const u8, ilen as usize); + let mut remaining = &*slice; + + while remaining.len() > 0 { + remaining = block!((*ctx).hasher.update(remaining)).unwrap(); + } + 0 +} + +#[no_mangle] +pub unsafe extern "C" fn mbedtls_sha256_finish( + ctx: *mut mbedtls_sha256_context, + output: *mut c_uchar, +) -> c_int { + let mut data = [0u8; 32]; + block!((*ctx).hasher.finish(&mut data)).unwrap(); + core::ptr::copy_nonoverlapping(data.as_ptr(), output, data.len()); + 0 +} diff --git a/examples/async_client.rs b/examples/async_client.rs index 1944c2c..535c5cb 100644 --- a/examples/async_client.rs +++ b/examples/async_client.rs @@ -54,22 +54,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, @@ -86,11 +77,7 @@ fn main() -> ! { let (wifi_interface, controller) = esp_wifi::wifi::new_with_mode(&init, wifi, WifiMode::Sta).unwrap(); - let timer_group0 = TimerGroup::new( - peripherals.TIMG0, - &clocks, - &mut system.peripheral_clock_control, - ); + let timer_group0 = TimerGroup::new(peripherals.TIMG0, &clocks); embassy::init(&clocks, timer_group0.timer0); let config = Config::dhcpv4(Default::default()); diff --git a/examples/async_client_mTLS.rs b/examples/async_client_mTLS.rs index bbda903..b4d144b 100644 --- a/examples/async_client_mTLS.rs +++ b/examples/async_client_mTLS.rs @@ -54,22 +54,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, @@ -86,11 +77,7 @@ fn main() -> ! { let (wifi_interface, controller) = esp_wifi::wifi::new_with_mode(&init, wifi, WifiMode::Sta).unwrap(); - let timer_group0 = TimerGroup::new( - peripherals.TIMG0, - &clocks, - &mut system.peripheral_clock_control, - ); + let timer_group0 = TimerGroup::new(peripherals.TIMG0, &clocks); embassy::init(&clocks, timer_group0.timer0); let config = Config::dhcpv4(Default::default()); diff --git a/examples/async_server.rs b/examples/async_server.rs index a8beeb3..153ffa5 100644 --- a/examples/async_server.rs +++ b/examples/async_server.rs @@ -58,22 +58,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, @@ -90,11 +81,7 @@ fn main() -> ! { let (wifi_interface, controller) = esp_wifi::wifi::new_with_mode(&init, wifi, WifiMode::Sta).unwrap(); - let timer_group0 = TimerGroup::new( - peripherals.TIMG0, - &clocks, - &mut system.peripheral_clock_control, - ); + let timer_group0 = TimerGroup::new(peripherals.TIMG0, &clocks); embassy::init(&clocks, timer_group0.timer0); let config = Config::dhcpv4(Default::default()); diff --git a/examples/async_server_mTLS.rs b/examples/async_server_mTLS.rs index 824ee3e..8d7e4e4 100644 --- a/examples/async_server_mTLS.rs +++ b/examples/async_server_mTLS.rs @@ -75,22 +75,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, @@ -107,11 +98,7 @@ fn main() -> ! { let (wifi_interface, controller) = esp_wifi::wifi::new_with_mode(&init, wifi, WifiMode::Sta).unwrap(); - let timer_group0 = TimerGroup::new( - peripherals.TIMG0, - &clocks, - &mut system.peripheral_clock_control, - ); + let timer_group0 = TimerGroup::new(peripherals.TIMG0, &clocks); embassy::init(&clocks, timer_group0.timer0); let config = Config::dhcpv4(Default::default()); diff --git a/examples/crypto_self_test.rs b/examples/crypto_self_test.rs new file mode 100644 index 0000000..b5fac2d --- /dev/null +++ b/examples/crypto_self_test.rs @@ -0,0 +1,80 @@ +//! Run crypto self tests to ensure their functionnality +#![no_std] +#![no_main] + +#[doc(hidden)] +#[cfg(feature = "esp32")] +pub use esp32_hal as hal; +#[doc(hidden)] +#[cfg(feature = "esp32c3")] +pub use esp32c3_hal as hal; +#[doc(hidden)] +#[cfg(feature = "esp32s2")] +pub use esp32s2_hal as hal; +#[doc(hidden)] +#[cfg(feature = "esp32s3")] +pub use esp32s3_hal as hal; + +use esp_backtrace as _; +use esp_mbedtls::set_debug; +use esp_println::{logger::init_logger, println}; + +/// Only used for ROM functions +#[allow(unused_imports)] +use esp_wifi::{initialize, EspWifiInitFor}; +use hal::{clock::ClockControl, peripherals::Peripherals, prelude::*, Rng}; + +#[entry] +fn main() -> ! { + init_logger(log::LevelFilter::Info); + + // Init ESP-WIFI heap for malloc + let peripherals = Peripherals::take(); + #[cfg(feature = "esp32")] + let mut system = peripherals.DPORT.split(); + #[cfg(not(feature = "esp32"))] + #[allow(unused_mut)] + let mut system = peripherals.SYSTEM.split(); + let clocks = ClockControl::max(system.clock_control).freeze(); + + #[cfg(feature = "esp32c3")] + let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; + #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; + let _ = initialize( + EspWifiInitFor::Wifi, + timer, + Rng::new(peripherals.RNG), + system.radio_clock_control, + &clocks, + ) + .unwrap(); + + set_debug(0); + + // println!("Testing AES"); + // unsafe { + // esp_mbedtls::mbedtls_aes_self_test(1i32); + // } + // println!("Testing MD5"); + // unsafe { + // esp_mbedtls::mbedtls_md5_self_test(1i32); + // } + // println!("Testing RSA"); + // unsafe { + // esp_mbedtls::mbedtls_rsa_self_test(1i32); + // } + println!("Testing SHA"); + unsafe { + // esp_mbedtls::mbedtls_sha1_self_test(1i32); + #[cfg(not(feature = "esp32"))] + esp_mbedtls::mbedtls_sha224_self_test(1i32); + esp_mbedtls::mbedtls_sha256_self_test(1i32); + // esp_mbedtls::mbedtls_sha384_self_test(1i32); + esp_mbedtls::mbedtls_sha512_self_test(1i32); + } + + println!("Done"); + + loop {} +} diff --git a/examples/sync_client.rs b/examples/sync_client.rs index f82b4a3..35081dd 100644 --- a/examples/sync_client.rs +++ b/examples/sync_client.rs @@ -42,22 +42,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, diff --git a/examples/sync_client_mTLS.rs b/examples/sync_client_mTLS.rs index be6916b..ad057bf 100644 --- a/examples/sync_client_mTLS.rs +++ b/examples/sync_client_mTLS.rs @@ -42,22 +42,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, diff --git a/examples/sync_server.rs b/examples/sync_server.rs index 662dade..776947b 100644 --- a/examples/sync_server.rs +++ b/examples/sync_server.rs @@ -45,22 +45,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, diff --git a/examples/sync_server_mTLS.rs b/examples/sync_server_mTLS.rs index f93199d..5747604 100644 --- a/examples/sync_server_mTLS.rs +++ b/examples/sync_server_mTLS.rs @@ -62,22 +62,13 @@ fn main() -> ! { init_logger(log::LevelFilter::Info); let peripherals = Peripherals::take(); - #[cfg(feature = "esp32")] - let mut system = peripherals.DPORT.split(); - #[cfg(not(feature = "esp32"))] - #[allow(unused_mut)] - let mut system = peripherals.SYSTEM.split(); + let system = peripherals.SYSTEM.split(); let clocks = ClockControl::max(system.clock_control).freeze(); #[cfg(feature = "esp32c3")] let timer = hal::systimer::SystemTimer::new(peripherals.SYSTIMER).alarm0; #[cfg(any(feature = "esp32", feature = "esp32s2", feature = "esp32s3"))] - let timer = hal::timer::TimerGroup::new( - peripherals.TIMG1, - &clocks, - &mut system.peripheral_clock_control, - ) - .timer0; + let timer = hal::timer::TimerGroup::new(peripherals.TIMG1, &clocks).timer0; let init = initialize( EspWifiInitFor::Wifi, timer, diff --git a/libs/riscv32imc-unknown-none-elf/libmbedcrypto.a b/libs/riscv32imc-unknown-none-elf/libmbedcrypto.a index 3959f1c5470e8b217452f749379fd2c64a6f452f..dc6817cca64a38eef858719a7069e938a00bfbea 100644 GIT binary patch delta 13370 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 delta 397 zcmcaMRrT6b)eV~uDfku_8D?czM*8}N73!Dd78DmH>s9$1xdoY5y80F;7ffG&kVSO! zi$m21iBsA>qlIz%j25Qil|-qRXm{3Q-tMf&;xn0``t3lctawFG8OX)b+b6AIo%@rZ o+U@?!*jDrtR5l%`OnSSK8GGeRBGo>V=g>SxQ0;d8XB^8@0KpKH*8l(j diff --git a/libs/xtensa-esp32-none-elf/libmbedcrypto.a b/libs/xtensa-esp32-none-elf/libmbedcrypto.a index 248fbd8572f9668fcdde039d19a9a66eefc4b87d..70f8623843d897c72edce34e0916713261bbd52b 100644 GIT binary patch delta 20561 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 delta 21373 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%0A8_FjM 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 Ovus0BuSzq&(D)yO+*ru~ diff --git a/libs/xtensa-esp32-none-elf/libmbedtls.a b/libs/xtensa-esp32-none-elf/libmbedtls.a index 0e8d78c0da6c77cb3908c902004f3ecc6c88dc1d..6cdcddb31ed287a3f3f415b7ac96c50cb9100271 100644 GIT binary patch delta 52410 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 BQR@Hz diff --git a/libs/xtensa-esp32-none-elf/libmbedx509.a b/libs/xtensa-esp32-none-elf/libmbedx509.a index 6ee249abdfe2217a491a7c07875b1e17760e5b2a..2112444aaeda3c95397c74f168b5efa20fb37b24 100644 GIT binary patch delta 433 zcmbO*o8!+cjtSfAw=giQM#JYc7#Ps;zY`1$RKScKM;K6WJxE}i26geP1q_VD;oQwz z86R3R8(J7lEAJQ$jU_8Gv8`69dBvAl?APJD3=z8ysTH-E0#U;W%03 ziNWRz(-Q<4J0=^h^k-C=+_P!(5 zllji7F;19#5Xg~)r|KO0a(YBJOBUy delta 443 zcmew}i(|rUjtSfAPcSg7M#JZ97#Ps;zdH;JRKScKHyBWGJxE}i4R!IWEewpr;oQwz z86R3R8yOf(jy3vV0PzMO-T}l1m>4EsxRJZrBrL*l z@|VXpoA*pl5M-P%S$3sAqt4{qmDNnAm?p=aQDPLC%)3gR?M@^ELkPp8sRP z6C@ZIEG8ec7M?6{R)BHFC6&&yR3xGVB?2GP(Ej+Z!A7Y)C^{(m zL*&8}*h7hs^rBF3UxFS3>8&1m(h)xNWClG1jp$sR5k1v~51cRO_xt|1pBF2w(<`k@ zZ(WBfftvq;JD-5IdAL56aox(eP*4P$kR#XyRoEeDLayKt@&u<~-Ej-~f^KG9bVTDO zzkLsS`9cw`@^w_J&EaDDrtfzc0EW@g*0is@*GTlm6GpJS_oxA}o_M^k*V+PH>bW|& zHJi69Xij7If@1KQe$xG?5nwGJ;JzFy02_2kPUrycY)+VWYp4}@d4LS|X^#BV;>EDJ z_aJ$(#AkH_qy^k*O;RObDR)Px7|VDhLP0dlClMM@(Z^an&B}7Vo^Hs}+dv(%j5W|X zySnBDxQ8j@OMus#s6vgE0vy*;G0BZ5s1sXw@fily&H{iDC8ci!ly@FZM=_*iJTotI zLrSEOs~aUQg}7ZZHt_gK3ahU}03U5LF)f%=B8@zoBx%_#|BKxHUJ2kME^DS!N=tV`zna|G_Up7}abtbDHD}LwthtOgh8)HGV~Ct0RvRW;o>+H|(sQx?YIM_j)!3%> zi7|3(IL{9z=`1er>LlIFI>reepQ13Pc{Pe*MfX{Hv5gNjN_t$kX;*ERXOk*Fox^~X eTuV~e{vr6=uScY3{VEkvHjZJD`7=pXmA?QZ_0~TC delta 892 zcmb7>O-NK>6o$`tXXbXDKku;_&2*d}X+}+$%xRd?(ejUiK%;15kb$N76D@*ftVO6G zM1jsgCn&-q3fg28+@Qf)1hoiSv~iQVm_>`I8E_Fbi_V>&5ZlxT5BGh~_uaF2-^6O) zlhwYZceZ_Dz@C5L`cJ?T33(=Go6Fe*BQXZX$e0+J*~TbL8DnNFjFr*z)$Dgn^TL9A5(&Yd|wadudnZ@>qNw@tvGqq6GS z;*ZeoF?4&6@i<)$aFd@@fB}ZsU*h-nqK|7cE!Zb0+h4YmR`+7J=4-`j(Nb4fzRn-9 zy`a;&b{F&)UAqeUtFApX5yE=m)#gJuE{i(K9l$%nO}E?dGGD6gc$_bX+wr7HWa!l) z>=#$b(uG$gA&q05K`4W_;3H2dzhiU)pfodS2$2nw_+#gKf%B1G*16>CFwL zl9p4dD!=ywtQZnmpUqkgFu-Z)VN@i8*&6v&4M0NB&?m_!EjE#-Q&dt@54O@m+|($g zqDgh6j+T4z8u@#1w3IpzemMV5Jw1qF`~RfA!vWypv`eW+oSRc0AKRR|g_;$!l|GMS zvu2*a1+lA`zrqVj`CD~e%wN^Dix%gMRrG7pY_;)n{dn}bSIbPI!NMhM#PBhfa5tVW z!7-IDVRQ=Zio6s6FiJ_!cOTuG#s>LCBS6NQyvY9BG@dBdB4RW$g8{KZYf%x96qnwJ rI7q<`b`Qh(Ld0PT&SF4b3Ioi_dKDk)w^mWhH5IE6A?@QVb~pV7$A8rZ diff --git a/libs/xtensa-esp32s3-none-elf/libmbedcrypto.a b/libs/xtensa-esp32s3-none-elf/libmbedcrypto.a index 248fbd8572f9668fcdde039d19a9a66eefc4b87d..291cc3b97341e927e5f4ff7ca1780cf3f93429b6 100644 GIT binary patch delta 843 zcma*kUr19?9KiA4Irr{*U31&dHkakqwZZ;~!O9$hD~8P#ArTZ26tu!ZQC37ytsr4m z4{3-CenC(YLJ~dfsY@Vb_LrV|i12Mf5kV1qDC(i0-`!?K5Om=SzjMzy_u+FFO6l9B zbn#h3*ImHWe{?AaxZKnQ`t-(b(1f8Pbr@=M;lZPK`Kaq+)Fn8{DV)mLIE}00bgrJW zb1OIp*T6YB>#p03x^TQs#=8rp&tVavQWKVF;fHOV`N4+@O1q!R5o~eW{lL$WgF_>S z2dvrjMDeCh$7iLVo_-PTwfzF1>;jnJV~wD|K3XxA3CKkcWztGW z>fXX=IV6)_Dq73AP~jynw|OZ!p*PX}qxEj>c?e)pq4~`sVDmTgx9LC%gIZ<{69}5# zt_I|EJ56s@nrI<~o%HaP5*2f1TOZbm3NZEbVcvY5#!2tLmB;sE-1(Ps%mZMs?y~Yu z@1M%S;hM6aE{|Zh`D6sAM01T%=WEN<4r^|uV_EbuUNLL;(TyxRSny63zuK91<}}{o z6aBdg@8evBchwnm>e^fwK$TVA9eL)RkMhrRRC%xGfAfl~Q!=K{fb`w1cHMQ|EB+)GhWWge>O}nmLv&@{(bMM38}%v9S&nr9uc( z9He9}_#KLhE`mr%hu%w8*r6SQJap)`LDJFQLr{mnesd~BhkD`5`#itrecr=osgPJJ zBv#(ncC7*S{YQ5f0C!t>Oq*Y-behvGNbS1Cm3#B z;WHa8Ro6H$E@1C*@aiOeJcKQ6r+I8@0CPO50|kb8Kgs9zo&A`h9ma%EZr->~gPnNJ zc;1OF;qsLKRpgi0S6*+F)-6;Fqf@lf&oKH#o8j)lq$)g=J%SJUaDNnU@!_K=4)UQH z#j{rRmm6SKP%$dJl#XLi&GOGUPuv=&ZV{JJ9flZgNjI zRnkr2eZgL_G&*Zr%CHW;EOatwEKZt8V-w3gNaK$x{%m#(7nwCYzRkKkUSfSYfp(k7 zla|3#;sagC;KZ(=n5V4_2BhgOxOR+ WFU+Q8JQ?eurzey~