Skip to content

Commit e07a82c

Browse files
feat: Use hardware acceleration for exponent mpi.
1 parent c1aeff8 commit e07a82c

File tree

27 files changed

+604
-3
lines changed

27 files changed

+604
-3
lines changed

.cargo/config.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,12 @@ build-std = ["core"]
4242

4343
[alias]
4444
xtask = "run --manifest-path ./xtask/Cargo.toml --"
45+
46+
47+
# Alias' for quickly building for different chips or running examples
48+
# By default we enable
49+
# - `default` HAL features to set up basic chip specific settings
50+
esp32 = "run --features esp32 --target xtensa-esp32-none-elf --features esp32-hal/default"
51+
esp32s2 = "run --features esp32s2 --target xtensa-esp32s2-none-elf --features esp32s2-hal/default"
52+
esp32s3 = "run --features esp32s3 --target xtensa-esp32s3-none-elf --features esp32s3-hal/default"
53+
esp32c3 = "run --features esp32c3 --target riscv32imc-unknown-none-elf --features esp32c3-hal/default"

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ static_cell = { version = "=1.2", features = ["nightly"] }
6868

6969
esp-mbedtls = { path = "./esp-mbedtls" }
7070

71-
[target.xtensa-esp32s3-none-elf.dependencies]
71+
[[example]]
72+
name = "crypto_self_test"
73+
required-features = ["esp-wifi/wifi-logs"]
7274

7375
[[example]]
7476
name = "async_client"

esp-mbedtls-sys/headers/esp32c3/config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@
326326
//#define MBEDTLS_ECJPAKE_ALT
327327
//#define MBEDTLS_GCM_ALT
328328
//#define MBEDTLS_NIST_KW_ALT
329+
#define MBEDTLS_MPI_EXP_MOD_ALT_FALLBACK
329330
//#define MBEDTLS_MD5_ALT
330331
//#define MBEDTLS_POLY1305_ALT
331332
//#define MBEDTLS_RIPEMD160_ALT

esp-mbedtls-sys/headers/esp32s2/config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@
326326
//#define MBEDTLS_ECJPAKE_ALT
327327
//#define MBEDTLS_GCM_ALT
328328
//#define MBEDTLS_NIST_KW_ALT
329+
#define MBEDTLS_MPI_EXP_MOD_ALT_FALLBACK
329330
//#define MBEDTLS_MD5_ALT
330331
//#define MBEDTLS_POLY1305_ALT
331332
//#define MBEDTLS_RIPEMD160_ALT

esp-mbedtls-sys/headers/esp32s3/config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@
326326
//#define MBEDTLS_ECJPAKE_ALT
327327
//#define MBEDTLS_GCM_ALT
328328
//#define MBEDTLS_NIST_KW_ALT
329+
#define MBEDTLS_MPI_EXP_MOD_ALT_FALLBACK
329330
//#define MBEDTLS_MD5_ALT
330331
//#define MBEDTLS_POLY1305_ALT
331332
//#define MBEDTLS_RIPEMD160_ALT

esp-mbedtls-sys/include/include.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,10 @@
88
#include "mbedtls/debug.h"
99
#include "mbedtls/ctr_drbg.h"
1010
#include "psa/crypto_values.h"
11+
12+
// Provides a function prototype to generate bindings for mbedtls_mpi_exp_mod_soft()
13+
#if defined(MBEDTLS_MPI_EXP_MOD_ALT_FALLBACK)
14+
int mbedtls_mpi_exp_mod_soft(mbedtls_mpi *X, const mbedtls_mpi *A,
15+
const mbedtls_mpi *E, const mbedtls_mpi *N,
16+
mbedtls_mpi *prec_RR);
17+
#endif

esp-mbedtls-sys/src/include/esp32c3.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22495,3 +22495,12 @@ extern "C" {
2249522495
/// \return \c 1 on failure.
2249622496
pub fn mbedtls_ctr_drbg_self_test(verbose: crate::c_types::c_int) -> crate::c_types::c_int;
2249722497
}
22498+
extern "C" {
22499+
pub fn mbedtls_mpi_exp_mod_soft(
22500+
X: *mut mbedtls_mpi,
22501+
A: *const mbedtls_mpi,
22502+
E: *const mbedtls_mpi,
22503+
N: *const mbedtls_mpi,
22504+
prec_RR: *mut mbedtls_mpi,
22505+
) -> crate::c_types::c_int;
22506+
}

esp-mbedtls-sys/src/include/esp32s2.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22492,3 +22492,12 @@ extern "C" {
2249222492
/// \return \c 1 on failure.
2249322493
pub fn mbedtls_ctr_drbg_self_test(verbose: crate::c_types::c_int) -> crate::c_types::c_int;
2249422494
}
22495+
extern "C" {
22496+
pub fn mbedtls_mpi_exp_mod_soft(
22497+
X: *mut mbedtls_mpi,
22498+
A: *const mbedtls_mpi,
22499+
E: *const mbedtls_mpi,
22500+
N: *const mbedtls_mpi,
22501+
prec_RR: *mut mbedtls_mpi,
22502+
) -> crate::c_types::c_int;
22503+
}

esp-mbedtls-sys/src/include/esp32s3.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22492,3 +22492,12 @@ extern "C" {
2249222492
/// \return \c 1 on failure.
2249322493
pub fn mbedtls_ctr_drbg_self_test(verbose: crate::c_types::c_int) -> crate::c_types::c_int;
2249422494
}
22495+
extern "C" {
22496+
pub fn mbedtls_mpi_exp_mod_soft(
22497+
X: *mut mbedtls_mpi,
22498+
A: *const mbedtls_mpi,
22499+
E: *const mbedtls_mpi,
22500+
N: *const mbedtls_mpi,
22501+
prec_RR: *mut mbedtls_mpi,
22502+
) -> crate::c_types::c_int;
22503+
}

esp-mbedtls/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ esp-mbedtls-sys = { path = "../esp-mbedtls-sys" }
99
log = "0.4.17"
1010
embedded-io = { version = "0.6.1" }
1111
embedded-io-async = { version = "0.6.0", optional = true }
12+
crypto-bigint = { version = "0.5.3", default-features = false, features = ["extra-sizes"] }
1213
esp32-hal = { version = "0.18.0", optional = true }
1314
esp32c3-hal = { version = "0.15.0", optional = true }
1415
esp32s2-hal = { version = "0.15.0", optional = true }
1516
esp32s3-hal = { version = "0.15.0", optional = true }
17+
cfg-if = "1.0.0"
1618

1719
[features]
1820
async = ["dep:embedded-io-async"]

0 commit comments

Comments
 (0)