From aa581523c97e44b40e164c169f4b58823b584e5c Mon Sep 17 00:00:00 2001 From: Deomid rojer Ryabkov Date: Sun, 30 Mar 2025 00:49:08 +0200 Subject: [PATCH] feat(mbedtls): Add mbedtls_esp_random() Suitable for passing as f_rng to various Mbed-TLS APIs that require it --- components/mbedtls/port/esp_hardware.c | 7 +++++ .../mbedtls/port/include/mbedtls/esp_random.h | 29 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 components/mbedtls/port/include/mbedtls/esp_random.h diff --git a/components/mbedtls/port/esp_hardware.c b/components/mbedtls/port/esp_hardware.c index 6376ca8f8c..4168b3c9d3 100644 --- a/components/mbedtls/port/esp_hardware.c +++ b/components/mbedtls/port/esp_hardware.c @@ -9,6 +9,7 @@ #include #include #include "esp_random.h" +#include "mbedtls/esp_random.h" #include @@ -23,3 +24,9 @@ int mbedtls_hardware_poll( void *data, *olen = len; return 0; } + +int mbedtls_esp_random(void *ctx, unsigned char *buf, size_t len) +{ + esp_fill_random(buf, len); + return 0; +} diff --git a/components/mbedtls/port/include/mbedtls/esp_random.h b/components/mbedtls/port/include/mbedtls/esp_random.h new file mode 100644 index 0000000000..7e5e7a1d4c --- /dev/null +++ b/components/mbedtls/port/include/mbedtls/esp_random.h @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief MbedTLS-compatible RNG function + * + * @note Suitable for passing as f_rng to various Mbed-TLS APIs that require it. + * + * @param ctx User-supplied context + * @param buf Pointer to buffer to fill with random numbers. + * @param len Length of buffer in bytes + * + * @return 0 (success) + */ +int mbedtls_esp_random(void *ctx, unsigned char *buf, size_t len); + +#ifdef __cplusplus +} +#endif