Merge branch 'revert/revert_ble_commit' into 'release/v5.1'

Revert "fix(ble): fixed the assert issue when using tinycrypt on ESP32-C2"

See merge request espressif/esp-idf!44734
This commit is contained in:
Jiang Jiang Jian
2026-01-09 11:34:16 +08:00
11 changed files with 19 additions and 144 deletions
+3 -31
View File
@@ -230,10 +230,6 @@ static void esp_bt_ctrl_log_partition_get_and_erase_first_block(void);
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
static bool esp_bt_check_wakeup_by_bt(void);
#endif // CONFIG_FREERTOS_USE_TICKLESS_IDLE
#if (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
#include "tinycrypt/ecc.h"
static int ecc_rand_func(uint8_t *dst, unsigned int len);
#endif // (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
/* Local variable definition
***************************************************************************
*/
@@ -1026,9 +1022,6 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "hci transport init failed %d", ret);
goto free_controller;
}
#if (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
uECC_set_rng(ecc_rand_func);
#endif // (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
return ESP_OK;
free_controller:
hci_transport_deinit();
@@ -1462,27 +1455,6 @@ static mbedtls_ecp_keypair keypair;
#if CONFIG_BT_LE_SM_SC
#include "tinycrypt/cmac_mode.h"
#include "tinycrypt/ecc_dh.h"
/* Used by uECC to get random data */
static int ecc_rand_func(uint8_t *dst, unsigned int len)
{
int offset_cnt = 0;
uint8_t *u8ptr = dst;
uint64_t random_64 = 0;
while(len > 0) {
random64 = (uint64_t)esp_random();
random64 = (random64 << 32)| (uint64_t)esp_random();;
offset_cnt = len < sizeof(uint64_t) ? len : sizeof(uint64_t);
memcpy(u8ptr, &random64, offset_cnt);
len -= offset_cnt;
u8ptr += offset_cnt;
}
return 1;
}
#endif // CONFIG_BT_LE_SM_SC
#endif // CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS
@@ -1574,11 +1546,11 @@ exit:
}
#else
if (uECC_valid_public_key(pk, uECC_secp256r1()) < 0) {
if (uECC_valid_public_key(pk, &curve_secp256r1) < 0) {
return BLE_SM_KEY_ERR;
}
rc = uECC_shared_secret(pk, priv, dh, uECC_secp256r1());
rc = uECC_shared_secret(pk, priv, dh, &curve_secp256r1);
if (rc == TC_CRYPTO_FAIL) {
return BLE_SM_KEY_ERR;
}
@@ -1654,7 +1626,7 @@ int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv)
return BLE_SM_KEY_ERR;
}
#else
if (uECC_make_key(pk, priv, uECC_secp256r1()) != TC_CRYPTO_SUCCESS) {
if (uECC_make_key(pk, priv, &curve_secp256r1) != TC_CRYPTO_SUCCESS) {
return BLE_SM_KEY_ERR;
}
#endif // CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS
@@ -985,11 +985,3 @@ config BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN
When this option is enabled, the Controller continues receiving PDUs
In the next connection event instead of entering latency
After a data packet is received.
config BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN
bool "Enables the automatic initiation of a data length update(Experimental)."
default n
help
When this option is enabled, the Controller automatically initiates a data length update
Using the appropriate data length parameters
When a PHY update or a connection interval update occurs.
+7 -37
View File
@@ -34,8 +34,8 @@
#include "os/endian.h"
#include "esp_bt.h"
#include "ble_priv.h"
#include "esp_intr_alloc.h"
#include "ble_priv.h"
#include "esp_sleep.h"
#include "esp_pm.h"
#include "esp_phy_init.h"
@@ -134,6 +134,7 @@ typedef union {
};
uint32_t val;
} bt_wakeup_params_t;
/* External functions or variables
************************************************************************
*/
@@ -192,7 +193,6 @@ extern int r_ble_get_npl_element_info(esp_bt_controller_config_t *cfg, ble_npl_c
extern char *ble_controller_get_compile_version(void);
extern int esp_ble_register_bb_funcs(void);
extern void esp_ble_unregister_bb_funcs(void);
extern bool esp_ble_controller_lib_check(void);
extern uint32_t _bt_bss_start;
extern uint32_t _bt_bss_end;
extern uint32_t _bt_controller_bss_start;
@@ -234,11 +234,6 @@ static void esp_bt_ctrl_log_partition_get_and_erase_first_block(void);
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
static bool esp_bt_check_wakeup_by_bt(void);
#endif // CONFIG_FREERTOS_USE_TICKLESS_IDLE
#if (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
#include "tinycrypt/ecc.h"
static int ecc_rand_func(uint8_t *dst, unsigned int len);
#endif // (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
/* Local variable definition
***************************************************************************
*/
@@ -1057,7 +1052,6 @@ static void ble_rtc_clk_init(esp_bt_controller_config_t *cfg)
esp_bt_rtc_slow_clk_select(s_bt_lpclk_src);
}
esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
{
uint8_t mac[6];
@@ -1194,13 +1188,6 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
goto free_controller;
}
if (!esp_ble_controller_lib_check()) {
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "Controller lib version mismatch!");
}
#if (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
uECC_set_rng(ecc_rand_func);
#endif // (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
return ESP_OK;
free_controller:
hci_transport_deinit();
@@ -1453,6 +1440,7 @@ esp_err_t esp_bt_mem_release(esp_bt_mode_t mode)
return ret;
}
esp_bt_controller_status_t esp_bt_controller_get_status(void)
{
return ble_controller_status;
@@ -1673,25 +1661,6 @@ static mbedtls_ecp_keypair keypair;
#if CONFIG_BT_LE_SM_SC
#include "tinycrypt/cmac_mode.h"
#include "tinycrypt/ecc_dh.h"
/* Used by uECC to get random data */
static int ecc_rand_func(uint8_t *dst, unsigned int len)
{
int offset_cnt = 0;
uint8_t *u8ptr = dst;
uint64_t random_64 = 0;
while(len > 0) {
random64 = (uint64_t)esp_random();
random64 = (random64 << 32)| (uint64_t)esp_random();;
offset_cnt = len < sizeof(uint64_t) ? len : sizeof(uint64_t);
memcpy(u8ptr, &random64, offset_cnt);
len -= offset_cnt;
u8ptr += offset_cnt;
}
return 1;
}
#endif // CONFIG_BT_LE_SM_SC
#endif // CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS
@@ -1783,11 +1752,11 @@ exit:
}
#else
if (uECC_valid_public_key(pk, uECC_secp256r1()) < 0) {
if (uECC_valid_public_key(pk, &curve_secp256r1) < 0) {
return BLE_SM_KEY_ERR;
}
rc = uECC_shared_secret(pk, priv, dh, uECC_secp256r1());
rc = uECC_shared_secret(pk, priv, dh, &curve_secp256r1);
if (rc == TC_CRYPTO_FAIL) {
return BLE_SM_KEY_ERR;
}
@@ -1863,7 +1832,7 @@ int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv)
return BLE_SM_KEY_ERR;
}
#else
if (uECC_make_key(pk, priv, uECC_secp256r1()) != TC_CRYPTO_SUCCESS) {
if (uECC_make_key(pk, priv, &curve_secp256r1) != TC_CRYPTO_SUCCESS) {
return BLE_SM_KEY_ERR;
}
#endif // CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS
@@ -1879,6 +1848,7 @@ int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv)
#endif // CONFIG_BT_LE_SM_LEGACY || CONFIG_BT_LE_SM_SC
#endif // (!CONFIG_BT_NIMBLE_ENABLED) && (CONFIG_BT_CONTROLLER_ENABLED)
#if CONFIG_BT_LE_DEBUG_REMAIN_SCENE_ENABLED
#include "esp_gdbstub.h"
#endif // CONFIG_BT_LE_DEBUG_REMAIN_SCENE_ENABLED
@@ -218,13 +218,6 @@ extern "C" {
#define DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN (0)
#endif
#if defined(CONFIG_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN)
#define DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN (CONFIG_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN)
#else
#define DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN (0)
#endif
#ifdef CONFIG_BT_LE_HCI_INTERFACE_USE_UART
#define HCI_UART_EN CONFIG_BT_LE_HCI_INTERFACE_USE_UART
#else
@@ -314,6 +307,7 @@ extern "C" {
#define RUN_QA_TEST (0)
#define NIMBLE_DISABLE_SCAN_BACKOFF (0)
#define BT_LL_CTRL_PRIO_LVL_CFG ((CONFIG_BT_LE_DFT_SYNC_SCHED_PRIO_LEVEL << 4) | (CONFIG_BT_LE_DFT_PERIODIC_ADV_SCHED_PRIO_LEVEL << 2) | CONFIG_BT_LE_DFT_ADV_SCHED_PRIO_LEVEL)
#ifdef __cplusplus
}
#endif
@@ -989,11 +989,3 @@ config BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN
When this option is enabled, the Controller continues receiving PDUs
In the next connection event instead of entering latency
After a data packet is received.
config BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN
bool "Enables the automatic initiation of a data length update(Experimental)."
default n
help
When this option is enabled, the Controller automatically initiates a data length update
Using the appropriate data length parameters
When a PHY update or a connection interval update occurs.
+3 -36
View File
@@ -187,7 +187,6 @@ extern int r_ble_get_npl_element_info(esp_bt_controller_config_t *cfg, ble_npl_c
extern char *ble_controller_get_compile_version(void);
extern int esp_ble_register_bb_funcs(void);
extern void esp_ble_unregister_bb_funcs(void);
extern bool esp_ble_controller_lib_check(void);
extern uint32_t _bt_bss_start;
extern uint32_t _bt_bss_end;
extern uint32_t _bt_controller_bss_start;
@@ -227,10 +226,6 @@ static void esp_bt_ctrl_log_partition_get_and_erase_first_block(void);
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE
static bool esp_bt_check_wakeup_by_bt(void);
#endif // CONFIG_FREERTOS_USE_TICKLESS_IDLE
#if (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
#include "tinycrypt/ecc.h"
static int ecc_rand_func(uint8_t *dst, unsigned int len);
#endif // (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
/* Local variable definition
***************************************************************************
*/
@@ -1014,7 +1009,6 @@ static void ble_rtc_clk_init(esp_bt_controller_config_t *cfg)
esp_bt_rtc_slow_clk_select(s_bt_lpclk_src);
}
esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
{
uint8_t mac[6];
@@ -1150,13 +1144,6 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
goto free_controller;
}
if (!esp_ble_controller_lib_check()) {
ESP_LOGW(NIMBLE_PORT_LOG_TAG, "Controller lib version mismatch!");
}
#if (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
uECC_set_rng(ecc_rand_func);
#endif // (CONFIG_BT_CONTROLLER_ONLY) && (CONFIG_BT_LE_SM_SC) && (!CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS)
return ESP_OK;
free_controller:
hci_transport_deinit();
@@ -1627,25 +1614,6 @@ static mbedtls_ecp_keypair keypair;
#if CONFIG_BT_LE_SM_SC
#include "tinycrypt/cmac_mode.h"
#include "tinycrypt/ecc_dh.h"
/* Used by uECC to get random data */
static int ecc_rand_func(uint8_t *dst, unsigned int len)
{
int offset_cnt = 0;
uint8_t *u8ptr = dst;
uint64_t random_64 = 0;
while(len > 0) {
random64 = (uint64_t)esp_random();
random64 = (random64 << 32)| (uint64_t)esp_random();;
offset_cnt = len < sizeof(uint64_t) ? len : sizeof(uint64_t);
memcpy(u8ptr, &random64, offset_cnt);
len -= offset_cnt;
u8ptr += offset_cnt;
}
return 1;
}
#endif // CONFIG_BT_LE_SM_SC
#endif // CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS
@@ -1737,11 +1705,11 @@ exit:
}
#else
if (uECC_valid_public_key(pk, uECC_secp256r1()) < 0) {
if (uECC_valid_public_key(pk, &curve_secp256r1) < 0) {
return BLE_SM_KEY_ERR;
}
rc = uECC_shared_secret(pk, priv, dh, uECC_secp256r1());
rc = uECC_shared_secret(pk, priv, dh, &curve_secp256r1);
if (rc == TC_CRYPTO_FAIL) {
return BLE_SM_KEY_ERR;
}
@@ -1817,7 +1785,7 @@ int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv)
return BLE_SM_KEY_ERR;
}
#else
if (uECC_make_key(pk, priv, uECC_secp256r1()) != TC_CRYPTO_SUCCESS) {
if (uECC_make_key(pk, priv, &curve_secp256r1) != TC_CRYPTO_SUCCESS) {
return BLE_SM_KEY_ERR;
}
#endif // CONFIG_BT_LE_CRYPTO_STACK_MBEDTLS
@@ -1833,7 +1801,6 @@ int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv)
#endif // CONFIG_BT_LE_SM_LEGACY || CONFIG_BT_LE_SM_SC
#endif // (!CONFIG_BT_NIMBLE_ENABLED) && (CONFIG_BT_CONTROLLER_ENABLED)
#if CONFIG_BT_LE_DEBUG_REMAIN_SCENE_ENABLED
#include "esp_gdbstub.h"
#endif // CONFIG_BT_LE_DEBUG_REMAIN_SCENE_ENABLED
@@ -215,13 +215,6 @@ extern "C" {
#define DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN (0)
#endif
#if defined(CONFIG_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN)
#define DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN (CONFIG_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN)
#else
#define DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN (0)
#endif
#ifdef CONFIG_BT_LE_HCI_INTERFACE_USE_UART
#define HCI_UART_EN CONFIG_BT_LE_HCI_INTERFACE_USE_UART
#else
@@ -156,7 +156,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20251125
#define CONFIG_VERSION 0x20251104
#define CONFIG_MAGIC 0x5A5AA5A5
/**
@@ -234,7 +234,6 @@ typedef struct {
uint8_t conn_rsv_cnt; /*!< BLE conn state machine reserve count number */
uint8_t priority_level_cfg; /*!< The option for priority level configuration */
uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint32_t config_magic; /*!< Magic number for configuration validation */
} esp_bt_controller_config_t;
@@ -299,8 +298,7 @@ typedef struct {
.adv_rsv_cnt = BLE_LL_ADV_SM_RESERVE_CNT_N, \
.conn_rsv_cnt = BLE_LL_CONN_SM_RESERVE_CNT_N, \
.priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.config_magic = CONFIG_MAGIC, \
}
#elif CONFIG_IDF_TARGET_ESP32C61
@@ -364,7 +362,6 @@ typedef struct {
.conn_rsv_cnt = BLE_LL_CONN_SM_RESERVE_CNT_N, \
.priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.config_magic = CONFIG_MAGIC, \
}
#endif
@@ -161,7 +161,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20251125
#define CONFIG_VERSION 0x20251104
#define CONFIG_MAGIC 0x5A5AA5A5
/**
@@ -238,7 +238,6 @@ typedef struct {
uint8_t conn_rsv_cnt; /*!< BLE conn state machine reserve count number */
uint8_t priority_level_cfg; /*!< The option for priority level configuration */
uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint32_t config_magic; /*!< Configuration magic value */
} esp_bt_controller_config_t;
@@ -303,7 +302,6 @@ typedef struct {
.conn_rsv_cnt = BLE_LL_CONN_SM_RESERVE_CNT_N, \
.priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.config_magic = CONFIG_MAGIC, \
}