From 797059d2393f3641d227d36499b5a8babb9f7348 Mon Sep 17 00:00:00 2001 From: Kapil Gupta Date: Mon, 11 May 2026 14:10:11 +0530 Subject: [PATCH] fix(esp_wifi): Add support to bypass rng for bringup --- .../src/crypto/crypto_mbedtls-bignum.c | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/components/wpa_supplicant/esp_supplicant/src/crypto/crypto_mbedtls-bignum.c b/components/wpa_supplicant/esp_supplicant/src/crypto/crypto_mbedtls-bignum.c index 120883257d5..958b24c8ed1 100644 --- a/components/wpa_supplicant/esp_supplicant/src/crypto/crypto_mbedtls-bignum.c +++ b/components/wpa_supplicant/esp_supplicant/src/crypto/crypto_mbedtls-bignum.c @@ -551,8 +551,31 @@ int crypto_bignum_is_odd(const struct crypto_bignum *a) int crypto_bignum_rand(struct crypto_bignum *r, const struct crypto_bignum *m) { +#if CONFIG_ESP_BRINGUP_BYPASS_RANDOM_SETTING + static u32 deterministic_counter = 1; + mbedtls_mpi det; + int ret; + + if (mbedtls_mpi_cmp_int((const mbedtls_mpi *) m, 2) <= 0) { + return -1; + } + + mbedtls_mpi_init(&det); + ret = mbedtls_mpi_lset(&det, deterministic_counter++); + if (ret == 0) { + ret = mbedtls_mpi_mod_mpi((mbedtls_mpi *) r, &det, + (const mbedtls_mpi *) m); + } + if (ret == 0 && mbedtls_mpi_cmp_int((mbedtls_mpi *) r, 0) == 0) { + ret = mbedtls_mpi_lset((mbedtls_mpi *) r, 1); + } + mbedtls_mpi_free(&det); + + return ret ? -1 : 0; +#else return ((mbedtls_mpi_random((mbedtls_mpi *) r, 0, (const mbedtls_mpi *) m, mbedtls_psa_get_random, MBEDTLS_PSA_RANDOM_STATE) != 0) ? -1 : 0); +#endif } static int mbedtls_bignum_legendre(const struct crypto_bignum *a,