From 09e86f3b69b3112b96d6f89bf388d1ced982aef9 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 9 Dec 2024 13:44:59 +0200 Subject: [PATCH] Bluetooth: Host: Remove HCI ECC emulation Remove the HCI command & event emulation layer for ECDH commands and events. This means that we always do the necessary operations in the host. The existing BT_ECC Kconfig option stays, but now gets automatically enabled when necessary (e.g. based on the BT_SMP option), which is why this commit removes so many explicit assignments in prj.conf files. Signed-off-by: Johan Hedberg --- .../bap_broadcast_assistant/prj.conf | 2 - samples/bluetooth/bap_broadcast_sink/prj.conf | 2 - .../bap_unicast_client/boards/native_sim.conf | 1 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340bsim_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 2 - .../bap_unicast_server/boards/native_sim.conf | 1 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340bsim_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 2 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 2 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 2 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 2 - .../bluetooth/hap_ha/boards/native_sim.conf | 1 - samples/bluetooth/hci_spi/prj.conf | 1 - samples/bluetooth/hci_uart/prj.conf | 1 - samples/bluetooth/hci_uart_3wire/prj.conf | 1 - .../boards/tlsr9518adk80d.conf | 4 - samples/bluetooth/peripheral_sc_only/prj.conf | 1 - .../tmap_bmr/boards/native_posix.conf | 1 - .../bluetooth/tmap_bmr/boards/native_sim.conf | 1 - .../tmap_bms/boards/native_posix.conf | 1 - .../bluetooth/tmap_bms/boards/native_sim.conf | 1 - .../tmap_central/boards/native_posix.conf | 1 - .../tmap_central/boards/native_sim.conf | 1 - .../tmap_peripheral/boards/native_posix.conf | 1 - .../tmap_peripheral/boards/native_sim.conf | 1 - samples/boards/nordic/mesh/onoff-app/prj.conf | 1 - .../onoff_level_lighting_vnd_app/prj.conf | 1 - subsys/bluetooth/controller/hci/hci.c | 6 - subsys/bluetooth/host/CMakeLists.txt | 1 - subsys/bluetooth/host/Kconfig | 27 +- subsys/bluetooth/host/ecc.c | 308 ++++++++------ subsys/bluetooth/host/hci_core.c | 34 +- subsys/bluetooth/host/hci_core.h | 5 - subsys/bluetooth/host/hci_ecc.c | 390 ------------------ subsys/bluetooth/host/hci_ecc.h | 10 - subsys/bluetooth/host/hci_raw.c | 5 - subsys/bluetooth/host/smp.c | 8 +- tests/bluetooth/init/prj_10.conf | 1 - tests/bluetooth/init/prj_11.conf | 1 - tests/bluetooth/init/prj_12.conf | 1 - tests/bluetooth/init/prj_13.conf | 1 - tests/bluetooth/init/prj_14.conf | 1 - tests/bluetooth/init/prj_15.conf | 1 - tests/bluetooth/init/prj_17.conf | 1 - tests/bluetooth/init/prj_20.conf | 1 - tests/bluetooth/init/prj_21.conf | 1 - tests/bluetooth/init/prj_9.conf | 1 - tests/bluetooth/init/prj_ctlr.conf | 1 - tests/bluetooth/init/prj_ctlr_5_x_dbg.conf | 1 - tests/bluetooth/init/prj_ctlr_dbg.conf | 1 - tests/bluetooth/init/prj_ctlr_ticker.conf | 1 - tests/bluetooth/init/prj_ctlr_tiny.conf | 1 - tests/bluetooth/init/prj_llcp.conf | 1 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 3 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 3 - .../nrf5340_audio_dk_nrf5340_cpuapp.conf | 2 - .../boards/nrf5340dk_nrf5340_cpuapp.conf | 2 - tests/bsim/bluetooth/audio/prj.conf | 1 - .../boards/nrf5340bsim_nrf5340_cpuapp.conf | 2 - .../ll/edtt/hci_test_app/prj_dut_llcp.conf | 1 - .../ll/edtt/hci_test_app/prj_tst_llcp.conf | 1 - tests/bsim/bluetooth/ll/throughput/prj.conf | 1 - 67 files changed, 198 insertions(+), 677 deletions(-) delete mode 100644 samples/bluetooth/peripheral_sc_only/boards/tlsr9518adk80d.conf delete mode 100644 subsys/bluetooth/host/hci_ecc.c delete mode 100644 subsys/bluetooth/host/hci_ecc.h diff --git a/samples/bluetooth/bap_broadcast_assistant/prj.conf b/samples/bluetooth/bap_broadcast_assistant/prj.conf index e39c4c3eef0..370ff75f260 100644 --- a/samples/bluetooth/bap_broadcast_assistant/prj.conf +++ b/samples/bluetooth/bap_broadcast_assistant/prj.conf @@ -10,8 +10,6 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=191 -CONFIG_BT_SEND_ECC_EMULATION=y - CONFIG_BT_EXT_ADV=y CONFIG_BT_PER_ADV_SYNC=y CONFIG_BT_BAP_BASS_MAX_SUBGROUPS=2 diff --git a/samples/bluetooth/bap_broadcast_sink/prj.conf b/samples/bluetooth/bap_broadcast_sink/prj.conf index fe0d8787d76..69c57526703 100644 --- a/samples/bluetooth/bap_broadcast_sink/prj.conf +++ b/samples/bluetooth/bap_broadcast_sink/prj.conf @@ -25,5 +25,3 @@ CONFIG_BT_AUDIO_CODEC_CAP_MAX_METADATA_SIZE=64 CONFIG_BT_AUDIO_CODEC_CAP_MAX_DATA_SIZE=64 CONFIG_BT_DEVICE_NAME="Broadcast Audio Sink" - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/bap_unicast_client/boards/native_sim.conf b/samples/bluetooth/bap_unicast_client/boards/native_sim.conf index c951fcc8c33..8ab1d7be113 100644 --- a/samples/bluetooth/bap_unicast_client/boards/native_sim.conf +++ b/samples/bluetooth/bap_unicast_client/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/bap_unicast_client/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/samples/bluetooth/bap_unicast_client/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index 50ba07e8522..614df139f0e 100644 --- a/samples/bluetooth/bap_unicast_client/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/bap_unicast_client/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -9,5 +9,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf b/samples/bluetooth/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf index ffb0e27ed64..9b059b92ddc 100644 --- a/samples/bluetooth/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf +++ b/samples/bluetooth/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf @@ -6,5 +6,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/bap_unicast_client/boards/nrf5340dk_nrf5340_cpuapp.conf b/samples/bluetooth/bap_unicast_client/boards/nrf5340dk_nrf5340_cpuapp.conf index e02323fb3f7..31b3a09380f 100644 --- a/samples/bluetooth/bap_unicast_client/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/bap_unicast_client/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -9,5 +9,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/bap_unicast_server/boards/native_sim.conf b/samples/bluetooth/bap_unicast_server/boards/native_sim.conf index c951fcc8c33..8ab1d7be113 100644 --- a/samples/bluetooth/bap_unicast_server/boards/native_sim.conf +++ b/samples/bluetooth/bap_unicast_server/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/bap_unicast_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/samples/bluetooth/bap_unicast_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index ffb0e27ed64..9b059b92ddc 100644 --- a/samples/bluetooth/bap_unicast_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/bap_unicast_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -6,5 +6,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/bap_unicast_server/boards/nrf5340bsim_nrf5340_cpuapp.conf b/samples/bluetooth/bap_unicast_server/boards/nrf5340bsim_nrf5340_cpuapp.conf index ffb0e27ed64..9b059b92ddc 100644 --- a/samples/bluetooth/bap_unicast_server/boards/nrf5340bsim_nrf5340_cpuapp.conf +++ b/samples/bluetooth/bap_unicast_server/boards/nrf5340bsim_nrf5340_cpuapp.conf @@ -6,5 +6,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/bap_unicast_server/boards/nrf5340dk_nrf5340_cpuapp.conf b/samples/bluetooth/bap_unicast_server/boards/nrf5340dk_nrf5340_cpuapp.conf index e02323fb3f7..31b3a09380f 100644 --- a/samples/bluetooth/bap_unicast_server/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/bap_unicast_server/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -9,5 +9,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/cap_acceptor/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/samples/bluetooth/cap_acceptor/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index f58eedb0453..09fa41842eb 100644 --- a/samples/bluetooth/cap_acceptor/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/cap_acceptor/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -2,5 +2,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/cap_acceptor/boards/nrf5340dk_nrf5340_cpuapp.conf b/samples/bluetooth/cap_acceptor/boards/nrf5340dk_nrf5340_cpuapp.conf index f58eedb0453..09fa41842eb 100644 --- a/samples/bluetooth/cap_acceptor/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/cap_acceptor/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -2,5 +2,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/cap_initiator/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/samples/bluetooth/cap_initiator/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index f58eedb0453..09fa41842eb 100644 --- a/samples/bluetooth/cap_initiator/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/cap_initiator/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -2,5 +2,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/cap_initiator/boards/nrf5340dk_nrf5340_cpuapp.conf b/samples/bluetooth/cap_initiator/boards/nrf5340dk_nrf5340_cpuapp.conf index f58eedb0453..09fa41842eb 100644 --- a/samples/bluetooth/cap_initiator/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/cap_initiator/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -2,5 +2,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/ccp_call_control_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/samples/bluetooth/ccp_call_control_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index f58eedb0453..09fa41842eb 100644 --- a/samples/bluetooth/ccp_call_control_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/ccp_call_control_server/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -2,5 +2,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/ccp_call_control_server/boards/nrf5340dk_nrf5340_cpuapp.conf b/samples/bluetooth/ccp_call_control_server/boards/nrf5340dk_nrf5340_cpuapp.conf index f58eedb0453..09fa41842eb 100644 --- a/samples/bluetooth/ccp_call_control_server/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/samples/bluetooth/ccp_call_control_server/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -2,5 +2,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/samples/bluetooth/hap_ha/boards/native_sim.conf b/samples/bluetooth/hap_ha/boards/native_sim.conf index f6c82a5dfbb..eff540ab4cf 100644 --- a/samples/bluetooth/hap_ha/boards/native_sim.conf +++ b/samples/bluetooth/hap_ha/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y # For LE-audio at 10ms intervals we need the tick counter to occur more frequently # than every 10 ms as each PDU for some reason takes 2 ticks to process. diff --git a/samples/bluetooth/hci_spi/prj.conf b/samples/bluetooth/hci_spi/prj.conf index 68c1cdb5a08..fbab977c266 100644 --- a/samples/bluetooth/hci_spi/prj.conf +++ b/samples/bluetooth/hci_spi/prj.conf @@ -5,7 +5,6 @@ CONFIG_MAIN_STACK_SIZE=512 CONFIG_BT=y CONFIG_BT_HCI_RAW=y CONFIG_BT_MAX_CONN=16 -CONFIG_BT_SEND_ECC_EMULATION=n # Workaround: Unable to allocate command buffer when using K_NO_WAIT since # Host number of completed commands does not follow normal flow control. diff --git a/samples/bluetooth/hci_uart/prj.conf b/samples/bluetooth/hci_uart/prj.conf index 036a9748910..bb4a25b2886 100644 --- a/samples/bluetooth/hci_uart/prj.conf +++ b/samples/bluetooth/hci_uart/prj.conf @@ -13,7 +13,6 @@ CONFIG_BT_BUF_CMD_TX_SIZE=255 CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_CTLR_ASSERT_HANDLER=y CONFIG_BT_MAX_CONN=16 -CONFIG_BT_SEND_ECC_EMULATION=n CONFIG_BT_CTLR_DTM_HCI=y CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512 diff --git a/samples/bluetooth/hci_uart_3wire/prj.conf b/samples/bluetooth/hci_uart_3wire/prj.conf index 670bcec3234..d9a03554f9f 100644 --- a/samples/bluetooth/hci_uart_3wire/prj.conf +++ b/samples/bluetooth/hci_uart_3wire/prj.conf @@ -12,7 +12,6 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_CMD_TX_SIZE=255 CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255 CONFIG_BT_MAX_CONN=16 -CONFIG_BT_SEND_ECC_EMULATION=n CONFIG_BT_CTLR_DTM_HCI=y CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512 diff --git a/samples/bluetooth/peripheral_sc_only/boards/tlsr9518adk80d.conf b/samples/bluetooth/peripheral_sc_only/boards/tlsr9518adk80d.conf deleted file mode 100644 index ce0a87933b7..00000000000 --- a/samples/bluetooth/peripheral_sc_only/boards/tlsr9518adk80d.conf +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2022 Telink Semiconductor -# SPDX-License-Identifier: Apache-2.0 - -CONFIG_BT_SEND_ECC_EMULATION=n diff --git a/samples/bluetooth/peripheral_sc_only/prj.conf b/samples/bluetooth/peripheral_sc_only/prj.conf index b8086b247fe..37276678c5e 100644 --- a/samples/bluetooth/peripheral_sc_only/prj.conf +++ b/samples/bluetooth/peripheral_sc_only/prj.conf @@ -7,6 +7,5 @@ CONFIG_LOG=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_SMP=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_MAX_PAIRED=2 CONFIG_BT_DEVICE_NAME="SC only peripheral" diff --git a/samples/bluetooth/tmap_bmr/boards/native_posix.conf b/samples/bluetooth/tmap_bmr/boards/native_posix.conf index c951fcc8c33..8ab1d7be113 100644 --- a/samples/bluetooth/tmap_bmr/boards/native_posix.conf +++ b/samples/bluetooth/tmap_bmr/boards/native_posix.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_bmr/boards/native_sim.conf b/samples/bluetooth/tmap_bmr/boards/native_sim.conf index 8927008819a..87e355c8675 100644 --- a/samples/bluetooth/tmap_bmr/boards/native_sim.conf +++ b/samples/bluetooth/tmap_bmr/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_bms/boards/native_posix.conf b/samples/bluetooth/tmap_bms/boards/native_posix.conf index c951fcc8c33..8ab1d7be113 100644 --- a/samples/bluetooth/tmap_bms/boards/native_posix.conf +++ b/samples/bluetooth/tmap_bms/boards/native_posix.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_bms/boards/native_sim.conf b/samples/bluetooth/tmap_bms/boards/native_sim.conf index 8927008819a..87e355c8675 100644 --- a/samples/bluetooth/tmap_bms/boards/native_sim.conf +++ b/samples/bluetooth/tmap_bms/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_central/boards/native_posix.conf b/samples/bluetooth/tmap_central/boards/native_posix.conf index c951fcc8c33..8ab1d7be113 100644 --- a/samples/bluetooth/tmap_central/boards/native_posix.conf +++ b/samples/bluetooth/tmap_central/boards/native_posix.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_central/boards/native_sim.conf b/samples/bluetooth/tmap_central/boards/native_sim.conf index 8927008819a..87e355c8675 100644 --- a/samples/bluetooth/tmap_central/boards/native_sim.conf +++ b/samples/bluetooth/tmap_central/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_peripheral/boards/native_posix.conf b/samples/bluetooth/tmap_peripheral/boards/native_posix.conf index c951fcc8c33..8ab1d7be113 100644 --- a/samples/bluetooth/tmap_peripheral/boards/native_posix.conf +++ b/samples/bluetooth/tmap_peripheral/boards/native_posix.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/bluetooth/tmap_peripheral/boards/native_sim.conf b/samples/bluetooth/tmap_peripheral/boards/native_sim.conf index 8927008819a..87e355c8675 100644 --- a/samples/bluetooth/tmap_peripheral/boards/native_sim.conf +++ b/samples/bluetooth/tmap_peripheral/boards/native_sim.conf @@ -1,5 +1,4 @@ CONFIG_LOG_MODE_IMMEDIATE=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_LIBLC3=y CONFIG_FPU=y diff --git a/samples/boards/nordic/mesh/onoff-app/prj.conf b/samples/boards/nordic/mesh/onoff-app/prj.conf index 193e50205fb..0e67042b265 100644 --- a/samples/boards/nordic/mesh/onoff-app/prj.conf +++ b/samples/boards/nordic/mesh/onoff-app/prj.conf @@ -29,7 +29,6 @@ CONFIG_BT_CTLR_PRIVACY=n CONFIG_BT_PERIPHERAL=y CONFIG_BT=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_L2CAP_TX_BUF_COUNT=8 CONFIG_BT_MESH=y diff --git a/samples/boards/nordic/mesh/onoff_level_lighting_vnd_app/prj.conf b/samples/boards/nordic/mesh/onoff_level_lighting_vnd_app/prj.conf index 653e7e1649e..3bb984208c7 100644 --- a/samples/boards/nordic/mesh/onoff_level_lighting_vnd_app/prj.conf +++ b/samples/boards/nordic/mesh/onoff_level_lighting_vnd_app/prj.conf @@ -23,7 +23,6 @@ CONFIG_BT_CTLR_TX_PWR_PLUS_8=y CONFIG_BT_PERIPHERAL=y CONFIG_BT=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_RX_STACK_SIZE=4096 CONFIG_BT_L2CAP_TX_BUF_COUNT=8 diff --git a/subsys/bluetooth/controller/hci/hci.c b/subsys/bluetooth/controller/hci/hci.c index b952092c885..e553345f5ad 100644 --- a/subsys/bluetooth/controller/hci/hci.c +++ b/subsys/bluetooth/controller/hci/hci.c @@ -21,8 +21,6 @@ #include #include -#include "../host/hci_ecc.h" - #include "util/util.h" #include "util/memq.h" #include "util/mem.h" @@ -1049,10 +1047,6 @@ static void read_supported_commands(struct net_buf *buf, struct net_buf **evt) rp->commands[41] |= BIT(1); #endif /* CONFIG_BT_CTLR_SYNC_TRANSFER_RECEIVER */ -#if defined(CONFIG_BT_HCI_RAW) && defined(CONFIG_BT_SEND_ECC_EMULATION) - bt_hci_ecc_supported_commands(rp->commands); -#endif /* CONFIG_BT_HCI_RAW && CONFIG_BT_SEND_ECC_EMULATION */ - /* LE Read TX Power. */ rp->commands[38] |= BIT(7); diff --git a/subsys/bluetooth/host/CMakeLists.txt b/subsys/bluetooth/host/CMakeLists.txt index f92a1f1a7b9..0911c22c8f8 100644 --- a/subsys/bluetooth/host/CMakeLists.txt +++ b/subsys/bluetooth/host/CMakeLists.txt @@ -8,7 +8,6 @@ add_subdirectory_ifdef(CONFIG_BT_SHELL shell) zephyr_library_sources_ifdef(CONFIG_BT_HCI_RAW hci_raw.c hci_common.c) zephyr_library_sources_ifdef(CONFIG_BT_MONITOR monitor.c) -zephyr_library_sources_ifdef(CONFIG_BT_SEND_ECC_EMULATION hci_ecc.c) zephyr_library_sources_ifdef(CONFIG_BT_SETTINGS settings.c) zephyr_library_sources_ifdef(CONFIG_BT_HOST_CCM aes_ccm.c) zephyr_library_sources_ifdef(CONFIG_BT_LONG_WQ long_wq.c) diff --git a/subsys/bluetooth/host/Kconfig b/subsys/bluetooth/host/Kconfig index 4ed05bbda60..885f395dced 100644 --- a/subsys/bluetooth/host/Kconfig +++ b/subsys/bluetooth/host/Kconfig @@ -15,7 +15,7 @@ config BT_LONG_WQ_STACK_SIZE # Hidden: Long workqueue stack size. Should be derived from system # requirements. int - default 1400 if BT_SEND_ECC_EMULATION + default 1400 if BT_ECC default 1300 if BT_GATT_CACHING default 1024 @@ -407,7 +407,7 @@ config BT_SMP bool "Security Manager Protocol support" select BT_CRYPTO select BT_RPA - select BT_ECC + select BT_ECC if !BT_SMP_OOB_LEGACY_PAIR_ONLY help This option enables support for the Security Manager Protocol (SMP), making it possible to pair devices over LE. @@ -991,16 +991,9 @@ config BT_DF_VS_CONN_IQ_REPORT_16_BITS_IQ_SAMPLES format. endif # BT_DF -endif # BT_HCI_HOST config BT_ECC bool "ECDH key generation support" - default y if BT_SMP && !BT_SMP_OOB_LEGACY_PAIR_ONLY - help - This option adds support for ECDH HCI commands. - -config BT_SEND_ECC_EMULATION - bool "Emulate ECDH in the Host using PSA Crypto API library" select MBEDTLS if !BUILD_WITH_TFM select MBEDTLS_PSA_CRYPTO_C if !BUILD_WITH_TFM select PSA_WANT_ALG_ECDH @@ -1008,19 +1001,11 @@ config BT_SEND_ECC_EMULATION select PSA_WANT_ECC_SECP_R1_256 imply MBEDTLS_PSA_P256M_DRIVER_ENABLED if MBEDTLS_PSA_CRYPTO_C select BT_LONG_WQ - depends on BT_ECC && (BT_HCI_RAW || BT_HCI_HOST) - default y if HAS_BT_CTLR && !BT_CTLR_ECDH help - If this option is set PSA Crypto API library is used for emulating the - ECDH HCI commands and events needed by e.g. LE Secure Connections. - In builds including the BLE Host, if not set the controller crypto is - used for ECDH and if the controller doesn't support the required HCI - commands the LE Secure Connections support will be disabled. - In builds including the HCI Raw interface and the BLE Controller, this - option injects support for the 2 HCI commands required for LE Secure - Connections so that Hosts can make use of those. The option defaults - to enabled for a combined build with Zephyr's own controller, since it - does not have any special ECC support itself (at least not currently). + If this option is set PSA Crypto API library is used for performing ECDH + operations needed e.g. by LE Secure Connections. + +endif # BT_HCI_HOST config BT_HOST_CCM bool "Host side AES-CCM module" diff --git a/subsys/bluetooth/host/ecc.c b/subsys/bluetooth/host/ecc.c index a77922d7a6b..d28133e8386 100644 --- a/subsys/bluetooth/host/ecc.c +++ b/subsys/bluetooth/host/ecc.c @@ -13,6 +13,7 @@ #include +#include "long_wq.h" #include "ecc.h" #include "hci_core.h" @@ -24,6 +25,38 @@ static uint8_t pub_key[BT_PUB_KEY_LEN]; static sys_slist_t pub_key_cb_slist; static bt_dh_key_cb_t dh_key_cb; +static void generate_pub_key(struct k_work *work); +static void generate_dh_key(struct k_work *work); +K_WORK_DEFINE(pub_key_work, generate_pub_key); +K_WORK_DEFINE(dh_key_work, generate_dh_key); + +enum { + PENDING_PUB_KEY, + PENDING_DHKEY, + + /* Total number of flags - must be at the end of the enum */ + NUM_FLAGS, +}; + +static ATOMIC_DEFINE(flags, NUM_FLAGS); + +static struct { + uint8_t private_key_be[BT_PRIV_KEY_LEN]; + + union { + uint8_t public_key_be[BT_PUB_KEY_LEN]; + uint8_t dhkey_be[BT_DH_KEY_LEN]; + }; +} ecc; + +/* based on Core Specification 4.2 Vol 3. Part H 2.3.5.6.1 */ +static const uint8_t debug_private_key_be[BT_PRIV_KEY_LEN] = { + 0x3f, 0x49, 0xf6, 0xd4, 0xa3, 0xc5, 0x5f, 0x38, + 0x74, 0xc9, 0xb3, 0xe3, 0xd2, 0x10, 0x3f, 0x50, + 0x4a, 0xff, 0x60, 0x7b, 0xeb, 0x40, 0xb7, 0x99, + 0x58, 0x99, 0xb8, 0xa6, 0xcd, 0x3c, 0x1a, 0xbd, +}; + static const uint8_t debug_public_key[BT_PUB_KEY_LEN] = { /* X */ 0xe6, 0x9d, 0x35, 0x0e, 0x48, 0x01, 0x03, 0xcc, @@ -71,22 +104,145 @@ bool bt_pub_key_is_valid(const uint8_t key[BT_PUB_KEY_LEN]) return false; } +static void set_key_attributes(psa_key_attributes_t *attr) +{ + psa_set_key_type(attr, PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)); + psa_set_key_bits(attr, 256); + psa_set_key_usage_flags(attr, PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DERIVE); + psa_set_key_algorithm(attr, PSA_ALG_ECDH); +} + +static void generate_pub_key(struct k_work *work) +{ + psa_key_attributes_t attr = PSA_KEY_ATTRIBUTES_INIT; + struct bt_pub_key_cb *cb; + psa_key_id_t key_id; + uint8_t tmp_pub_key_buf[BT_PUB_KEY_LEN + 1]; + size_t tmp_len; + int err; + + set_key_attributes(&attr); + + if (psa_generate_key(&attr, &key_id) != PSA_SUCCESS) { + LOG_ERR("Failed to generate ECC key"); + err = BT_HCI_ERR_UNSPECIFIED; + goto done; + } + + if (psa_export_public_key(key_id, tmp_pub_key_buf, sizeof(tmp_pub_key_buf), + &tmp_len) != PSA_SUCCESS) { + LOG_ERR("Failed to export ECC public key"); + err = BT_HCI_ERR_UNSPECIFIED; + goto done; + } + /* secp256r1 PSA exported public key has an extra 0x04 predefined byte at + * the beginning of the buffer which is not part of the coordinate so + * we remove that. + */ + memcpy(ecc.public_key_be, &tmp_pub_key_buf[1], BT_PUB_KEY_LEN); + + if (psa_export_key(key_id, ecc.private_key_be, BT_PRIV_KEY_LEN, + &tmp_len) != PSA_SUCCESS) { + LOG_ERR("Failed to export ECC private key"); + err = BT_HCI_ERR_UNSPECIFIED; + goto done; + } + + if (psa_destroy_key(key_id) != PSA_SUCCESS) { + LOG_ERR("Failed to destroy ECC key ID"); + err = BT_HCI_ERR_UNSPECIFIED; + goto done; + } + + sys_memcpy_swap(pub_key, ecc.public_key_be, BT_PUB_KEY_COORD_LEN); + sys_memcpy_swap(&pub_key[BT_PUB_KEY_COORD_LEN], + &ecc.public_key_be[BT_PUB_KEY_COORD_LEN], BT_PUB_KEY_COORD_LEN); + + atomic_set_bit(bt_dev.flags, BT_DEV_HAS_PUB_KEY); + err = 0; + +done: + atomic_clear_bit(flags, PENDING_PUB_KEY); + + /* Change to cooperative priority while we do the callbacks */ + k_sched_lock(); + + SYS_SLIST_FOR_EACH_CONTAINER(&pub_key_cb_slist, cb, node) { + if (cb->func) { + cb->func(err ? NULL : pub_key); + } + } + + sys_slist_init(&pub_key_cb_slist); + + k_sched_unlock(); +} + +static void generate_dh_key(struct k_work *work) +{ + int err; + + psa_key_attributes_t attr = PSA_KEY_ATTRIBUTES_INIT; + psa_key_id_t key_id; + /* PSA expects secp256r1 public key to start with a predefined 0x04 byte + * at the beginning the buffer. + */ + uint8_t tmp_pub_key_buf[BT_PUB_KEY_LEN + 1] = { 0x04 }; + size_t tmp_len; + + set_key_attributes(&attr); + + const uint8_t *priv_key = (IS_ENABLED(CONFIG_BT_USE_DEBUG_KEYS) ? + debug_private_key_be : + ecc.private_key_be); + if (psa_import_key(&attr, priv_key, BT_PRIV_KEY_LEN, &key_id) != PSA_SUCCESS) { + err = -EIO; + LOG_ERR("Failed to import the private key for key agreement"); + goto exit; + } + + memcpy(&tmp_pub_key_buf[1], ecc.public_key_be, BT_PUB_KEY_LEN); + if (psa_raw_key_agreement(PSA_ALG_ECDH, key_id, tmp_pub_key_buf, + sizeof(tmp_pub_key_buf), ecc.dhkey_be, BT_DH_KEY_LEN, + &tmp_len) != PSA_SUCCESS) { + err = -EIO; + LOG_ERR("Raw key agreement failed"); + goto exit; + } + + if (psa_destroy_key(key_id) != PSA_SUCCESS) { + LOG_ERR("Failed to destroy the key"); + err = -EIO; + } + + err = 0; + +exit: + /* Change to cooperative priority while we do the callback */ + k_sched_lock(); + + if (dh_key_cb) { + bt_dh_key_cb_t cb = dh_key_cb; + + dh_key_cb = NULL; + atomic_clear_bit(flags, PENDING_DHKEY); + + if (err) { + cb(NULL); + } else { + uint8_t dhkey[BT_DH_KEY_LEN]; + + sys_memcpy_swap(dhkey, ecc.dhkey_be, sizeof(ecc.dhkey_be)); + cb(dhkey); + } + } + + k_sched_unlock(); +} + int bt_pub_key_gen(struct bt_pub_key_cb *new_cb) { struct bt_pub_key_cb *cb; - int err; - - /* - * We check for both "LE Read Local P-256 Public Key" and - * "LE Generate DH Key" support here since both commands are needed for - * ECC support. If "LE Generate DH Key" is not supported then there - * is no point in reading local public key. - */ - if (!BT_CMD_TEST(bt_dev.supported_commands, 34, 1) || - !BT_CMD_TEST(bt_dev.supported_commands, 34, 2)) { - LOG_WRN("ECC HCI commands not available"); - return -ENOTSUP; - } if (IS_ENABLED(CONFIG_BT_USE_DEBUG_KEYS)) { if (!BT_CMD_TEST(bt_dev.supported_commands, 41, 2)) { @@ -110,29 +266,20 @@ int bt_pub_key_gen(struct bt_pub_key_cb *new_cb) } } + if (atomic_test_bit(flags, PENDING_DHKEY)) { + LOG_WRN("Busy performing another ECDH operation"); + return -EBUSY; + } + sys_slist_prepend(&pub_key_cb_slist, &new_cb->node); - if (atomic_test_and_set_bit(bt_dev.flags, BT_DEV_PUB_KEY_BUSY)) { + if (atomic_test_and_set_bit(flags, PENDING_PUB_KEY)) { return 0; } atomic_clear_bit(bt_dev.flags, BT_DEV_HAS_PUB_KEY); - err = bt_hci_cmd_send_sync(BT_HCI_OP_LE_P256_PUBLIC_KEY, NULL, NULL); - if (err) { - - LOG_ERR("Sending LE P256 Public Key command failed"); - atomic_clear_bit(bt_dev.flags, BT_DEV_PUB_KEY_BUSY); - - SYS_SLIST_FOR_EACH_CONTAINER(&pub_key_cb_slist, cb, node) { - if (cb->func) { - cb->func(NULL); - } - } - - sys_slist_init(&pub_key_cb_slist); - return err; - } + bt_long_wq_submit(&pub_key_work); return 0; } @@ -141,7 +288,7 @@ void bt_pub_key_hci_disrupted(void) { struct bt_pub_key_cb *cb; - atomic_clear_bit(bt_dev.flags, BT_DEV_PUB_KEY_BUSY); + atomic_clear_bit(flags, PENDING_PUB_KEY); SYS_SLIST_FOR_EACH_CONTAINER(&pub_key_cb_slist, cb, node) { if (cb->func) { @@ -166,111 +313,36 @@ const uint8_t *bt_pub_key_get(void) return NULL; } -static int hci_generate_dhkey_v1(const uint8_t *remote_pk) -{ - struct bt_hci_cp_le_generate_dhkey *cp; - struct net_buf *buf; - - buf = bt_hci_cmd_create(BT_HCI_OP_LE_GENERATE_DHKEY, sizeof(*cp)); - if (!buf) { - return -ENOBUFS; - } - - cp = net_buf_add(buf, sizeof(*cp)); - memcpy(cp->key, remote_pk, sizeof(cp->key)); - - return bt_hci_cmd_send_sync(BT_HCI_OP_LE_GENERATE_DHKEY, buf, NULL); -} - -static int hci_generate_dhkey_v2(const uint8_t *remote_pk, uint8_t key_type) -{ - struct bt_hci_cp_le_generate_dhkey_v2 *cp; - struct net_buf *buf; - - buf = bt_hci_cmd_create(BT_HCI_OP_LE_GENERATE_DHKEY_V2, sizeof(*cp)); - if (!buf) { - return -ENOBUFS; - } - - cp = net_buf_add(buf, sizeof(*cp)); - memcpy(cp->key, remote_pk, sizeof(cp->key)); - cp->key_type = key_type; - - return bt_hci_cmd_send_sync(BT_HCI_OP_LE_GENERATE_DHKEY_V2, buf, NULL); -} - int bt_dh_key_gen(const uint8_t remote_pk[BT_PUB_KEY_LEN], bt_dh_key_cb_t cb) { - int err; - if (dh_key_cb == cb) { return -EALREADY; } - if (dh_key_cb || atomic_test_bit(bt_dev.flags, BT_DEV_PUB_KEY_BUSY)) { - return -EBUSY; - } - if (!atomic_test_bit(bt_dev.flags, BT_DEV_HAS_PUB_KEY)) { return -EADDRNOTAVAIL; } + if (dh_key_cb || + atomic_test_bit(flags, PENDING_PUB_KEY) || + atomic_test_and_set_bit(flags, PENDING_DHKEY)) { + return -EBUSY; + } + dh_key_cb = cb; - if (IS_ENABLED(CONFIG_BT_USE_DEBUG_KEYS) && - BT_CMD_TEST(bt_dev.supported_commands, 41, 2)) { - err = hci_generate_dhkey_v2(remote_pk, - BT_HCI_LE_KEY_TYPE_DEBUG); - } else { - err = hci_generate_dhkey_v1(remote_pk); - } + /* Convert X and Y coordinates from little-endian to + * big-endian (expected by the crypto API). + */ + sys_memcpy_swap(ecc.public_key_be, remote_pk, BT_PUB_KEY_COORD_LEN); + sys_memcpy_swap(&ecc.public_key_be[BT_PUB_KEY_COORD_LEN], + &remote_pk[BT_PUB_KEY_COORD_LEN], BT_PUB_KEY_COORD_LEN); - if (err) { - dh_key_cb = NULL; - LOG_WRN("Failed to generate DHKey (err %d)", err); - return err; - } + bt_long_wq_submit(&dh_key_work); return 0; } -void bt_hci_evt_le_pkey_complete(struct net_buf *buf) -{ - struct bt_hci_evt_le_p256_public_key_complete *evt = (void *)buf->data; - struct bt_pub_key_cb *cb; - - LOG_DBG("status: 0x%02x %s", evt->status, bt_hci_err_to_str(evt->status)); - - atomic_clear_bit(bt_dev.flags, BT_DEV_PUB_KEY_BUSY); - - if (!evt->status) { - memcpy(pub_key, evt->key, BT_PUB_KEY_LEN); - atomic_set_bit(bt_dev.flags, BT_DEV_HAS_PUB_KEY); - } - - SYS_SLIST_FOR_EACH_CONTAINER(&pub_key_cb_slist, cb, node) { - if (cb->func) { - cb->func(evt->status ? NULL : pub_key); - } - } - - sys_slist_init(&pub_key_cb_slist); -} - -void bt_hci_evt_le_dhkey_complete(struct net_buf *buf) -{ - struct bt_hci_evt_le_generate_dhkey_complete *evt = (void *)buf->data; - - LOG_DBG("status: 0x%02x %s", evt->status, bt_hci_err_to_str(evt->status)); - - if (dh_key_cb) { - bt_dh_key_cb_t cb = dh_key_cb; - - dh_key_cb = NULL; - cb(evt->status ? NULL : evt->dhkey); - } -} - #ifdef ZTEST_UNITTEST uint8_t const *bt_ecc_get_public_key(void) { diff --git a/subsys/bluetooth/host/hci_core.c b/subsys/bluetooth/host/hci_core.c index f5aa584e4cd..4701a69b0d5 100644 --- a/subsys/bluetooth/host/hci_core.c +++ b/subsys/bluetooth/host/hci_core.c @@ -40,7 +40,6 @@ #include "keys.h" #include "monitor.h" #include "hci_core.h" -#include "hci_ecc.h" #include "ecc.h" #include "id.h" #include "adv.h" @@ -2757,14 +2756,6 @@ static const struct event_handler meta_events[] = { EVENT_HANDLER(BT_HCI_EVT_LE_LTK_REQUEST, le_ltk_request, sizeof(struct bt_hci_evt_le_ltk_request)), #endif /* CONFIG_BT_SMP */ -#if defined(CONFIG_BT_ECC) - EVENT_HANDLER(BT_HCI_EVT_LE_P256_PUBLIC_KEY_COMPLETE, - bt_hci_evt_le_pkey_complete, - sizeof(struct bt_hci_evt_le_p256_public_key_complete)), - EVENT_HANDLER(BT_HCI_EVT_LE_GENERATE_DHKEY_COMPLETE, - bt_hci_evt_le_dhkey_complete, - sizeof(struct bt_hci_evt_le_generate_dhkey_complete)), -#endif /* CONFIG_BT_SMP */ #if defined(CONFIG_BT_EXT_ADV) #if defined(CONFIG_BT_BROADCASTER) EVENT_HANDLER(BT_HCI_EVT_LE_ADV_SET_TERMINATED, bt_hci_le_adv_set_terminated, @@ -3209,15 +3200,7 @@ static void read_supported_commands_complete(struct net_buf *buf) LOG_DBG("status 0x%02x %s", rp->status, bt_hci_err_to_str(rp->status)); - memcpy(bt_dev.supported_commands, rp->commands, - sizeof(bt_dev.supported_commands)); - - /* Report additional HCI commands used for ECDH as - * supported if PSA Crypto API ECC is used for emulation. - */ - if (IS_ENABLED(CONFIG_BT_SEND_ECC_EMULATION)) { - bt_hci_ecc_supported_commands(bt_dev.supported_commands); - } + memcpy(bt_dev.supported_commands, rp->commands, sizeof(bt_dev.supported_commands)); } static void read_local_features_complete(struct net_buf *buf) @@ -3402,17 +3385,6 @@ static int le_set_event_mask(void) mask |= BT_EVT_MASK_LE_LTK_REQUEST; } - /* - * If "LE Read Local P-256 Public Key" and "LE Generate DH Key" are - * supported we need to enable events generated by those commands. - */ - if (IS_ENABLED(CONFIG_BT_ECC) && - (BT_CMD_TEST(bt_dev.supported_commands, 34, 1)) && - (BT_CMD_TEST(bt_dev.supported_commands, 34, 2))) { - mask |= BT_EVT_MASK_LE_P256_PUBLIC_KEY_COMPLETE; - mask |= BT_EVT_MASK_LE_GENERATE_DHKEY_COMPLETE; - } - /* * Enable CIS events only if ISO connections are enabled and controller * support them. @@ -4059,10 +4031,6 @@ int bt_send(struct net_buf *buf) bt_monitor_send(bt_monitor_opcode(buf), buf->data, buf->len); - if (IS_ENABLED(CONFIG_BT_SEND_ECC_EMULATION)) { - return bt_hci_ecc_send(buf); - } - return bt_hci_send(bt_dev.hci, buf); } diff --git a/subsys/bluetooth/host/hci_core.h b/subsys/bluetooth/host/hci_core.h index ac2bf9d2970..e501ae1d5fe 100644 --- a/subsys/bluetooth/host/hci_core.h +++ b/subsys/bluetooth/host/hci_core.h @@ -36,7 +36,6 @@ enum { BT_DEV_READY, BT_DEV_PRESET_ID, BT_DEV_HAS_PUB_KEY, - BT_DEV_PUB_KEY_BUSY, /** The application either explicitly or implicitly instructed the stack to scan * for advertisers. @@ -509,10 +508,6 @@ void bt_hci_user_passkey_notify(struct net_buf *buf); void bt_hci_user_passkey_req(struct net_buf *buf); void bt_hci_auth_complete(struct net_buf *buf); -/* ECC HCI event handlers */ -void bt_hci_evt_le_pkey_complete(struct net_buf *buf); -void bt_hci_evt_le_dhkey_complete(struct net_buf *buf); - /* Common HCI event handlers */ void bt_hci_le_enh_conn_complete(struct bt_hci_evt_le_enh_conn_complete *evt); diff --git a/subsys/bluetooth/host/hci_ecc.c b/subsys/bluetooth/host/hci_ecc.c deleted file mode 100644 index de9440e2d5e..00000000000 --- a/subsys/bluetooth/host/hci_ecc.c +++ /dev/null @@ -1,390 +0,0 @@ -/** - * @file hci_ecc.c - * HCI ECC emulation - */ - -/* - * Copyright (c) 2016 Intel Corporation - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include "common/bt_str.h" - -#include "hci_ecc.h" -#include "ecc.h" - -#ifdef CONFIG_BT_HCI_RAW -#include -#include "hci_raw_internal.h" -#else -#include "hci_core.h" -#endif -#include "long_wq.h" - -#define LOG_LEVEL CONFIG_BT_HCI_CORE_LOG_LEVEL -#include -LOG_MODULE_REGISTER(bt_hci_ecc); - -static void ecc_process(struct k_work *work); -K_WORK_DEFINE(ecc_work, ecc_process); - -/* based on Core Specification 4.2 Vol 3. Part H 2.3.5.6.1 */ -static const uint8_t debug_private_key_be[BT_PRIV_KEY_LEN] = { - 0x3f, 0x49, 0xf6, 0xd4, 0xa3, 0xc5, 0x5f, 0x38, - 0x74, 0xc9, 0xb3, 0xe3, 0xd2, 0x10, 0x3f, 0x50, - 0x4a, 0xff, 0x60, 0x7b, 0xeb, 0x40, 0xb7, 0x99, - 0x58, 0x99, 0xb8, 0xa6, 0xcd, 0x3c, 0x1a, 0xbd, -}; - -enum { - PENDING_PUB_KEY, - PENDING_DHKEY, - - USE_DEBUG_KEY, - - /* Total number of flags - must be at the end of the enum */ - NUM_FLAGS, -}; - -static ATOMIC_DEFINE(flags, NUM_FLAGS); - -static struct { - uint8_t private_key_be[BT_PRIV_KEY_LEN]; - - union { - uint8_t public_key_be[BT_PUB_KEY_LEN]; - uint8_t dhkey_be[BT_DH_KEY_LEN]; - }; -} ecc; - -static void send_cmd_status(uint16_t opcode, uint8_t status) -{ - struct bt_hci_evt_cmd_status *evt; - struct bt_hci_evt_hdr *hdr; - struct net_buf *buf; - - LOG_DBG("opcode %x status 0x%02x %s", opcode, status, bt_hci_err_to_str(status)); - - buf = bt_buf_get_evt(BT_HCI_EVT_CMD_STATUS, false, K_FOREVER); - bt_buf_set_type(buf, BT_BUF_EVT); - - hdr = net_buf_add(buf, sizeof(*hdr)); - hdr->evt = BT_HCI_EVT_CMD_STATUS; - hdr->len = sizeof(*evt); - - evt = net_buf_add(buf, sizeof(*evt)); - evt->ncmd = 1U; - evt->opcode = sys_cpu_to_le16(opcode); - evt->status = status; - - bt_hci_recv(bt_dev.hci, buf); -} - -static void set_key_attributes(psa_key_attributes_t *attr) -{ - psa_set_key_type(attr, PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)); - psa_set_key_bits(attr, 256); - psa_set_key_usage_flags(attr, PSA_KEY_USAGE_EXPORT | PSA_KEY_USAGE_DERIVE); - psa_set_key_algorithm(attr, PSA_ALG_ECDH); -} - -static uint8_t generate_keys(void) -{ - psa_key_attributes_t attr = PSA_KEY_ATTRIBUTES_INIT; - psa_key_id_t key_id; - uint8_t tmp_pub_key_buf[BT_PUB_KEY_LEN + 1]; - size_t tmp_len; - - set_key_attributes(&attr); - - if (psa_generate_key(&attr, &key_id) != PSA_SUCCESS) { - LOG_ERR("Failed to generate ECC key"); - return BT_HCI_ERR_UNSPECIFIED; - } - - if (psa_export_public_key(key_id, tmp_pub_key_buf, sizeof(tmp_pub_key_buf), - &tmp_len) != PSA_SUCCESS) { - LOG_ERR("Failed to export ECC public key"); - return BT_HCI_ERR_UNSPECIFIED; - } - /* secp256r1 PSA exported public key has an extra 0x04 predefined byte at - * the beginning of the buffer which is not part of the coordinate so - * we remove that. - */ - memcpy(ecc.public_key_be, &tmp_pub_key_buf[1], BT_PUB_KEY_LEN); - - if (psa_export_key(key_id, ecc.private_key_be, BT_PRIV_KEY_LEN, - &tmp_len) != PSA_SUCCESS) { - LOG_ERR("Failed to export ECC private key"); - return BT_HCI_ERR_UNSPECIFIED; - } - - if (psa_destroy_key(key_id) != PSA_SUCCESS) { - LOG_ERR("Failed to destroy ECC key ID"); - return BT_HCI_ERR_UNSPECIFIED; - } - - return 0; -} - -static void emulate_le_p256_public_key_cmd(void) -{ - struct bt_hci_evt_le_p256_public_key_complete *evt; - struct bt_hci_evt_le_meta_event *meta; - struct bt_hci_evt_hdr *hdr; - struct net_buf *buf; - uint8_t status; - - LOG_DBG(""); - - status = generate_keys(); - - buf = bt_buf_get_rx(BT_BUF_EVT, K_FOREVER); - - hdr = net_buf_add(buf, sizeof(*hdr)); - hdr->evt = BT_HCI_EVT_LE_META_EVENT; - hdr->len = sizeof(*meta) + sizeof(*evt); - - meta = net_buf_add(buf, sizeof(*meta)); - meta->subevent = BT_HCI_EVT_LE_P256_PUBLIC_KEY_COMPLETE; - - evt = net_buf_add(buf, sizeof(*evt)); - evt->status = status; - - if (status) { - (void)memset(evt->key, 0, sizeof(evt->key)); - } else { - /* Convert X and Y coordinates from big-endian (provided - * by crypto API) to little endian HCI. - */ - sys_memcpy_swap(evt->key, ecc.public_key_be, BT_PUB_KEY_COORD_LEN); - sys_memcpy_swap(&evt->key[BT_PUB_KEY_COORD_LEN], - &ecc.public_key_be[BT_PUB_KEY_COORD_LEN], BT_PUB_KEY_COORD_LEN); - } - - atomic_clear_bit(flags, PENDING_PUB_KEY); - - bt_hci_recv(bt_dev.hci, buf); -} - -static void emulate_le_generate_dhkey(void) -{ - struct bt_hci_evt_le_generate_dhkey_complete *evt; - struct bt_hci_evt_le_meta_event *meta; - struct bt_hci_evt_hdr *hdr; - struct net_buf *buf; - int ret = 0; - bool use_debug = atomic_test_bit(flags, USE_DEBUG_KEY); - - psa_key_attributes_t attr = PSA_KEY_ATTRIBUTES_INIT; - psa_key_id_t key_id; - /* PSA expects secp256r1 public key to start with a predefined 0x04 byte - * at the beginning the buffer. - */ - uint8_t tmp_pub_key_buf[BT_PUB_KEY_LEN + 1] = { 0x04 }; - size_t tmp_len; - - set_key_attributes(&attr); - - if (psa_import_key(&attr, use_debug ? debug_private_key_be : ecc.private_key_be, - BT_PRIV_KEY_LEN, &key_id) != PSA_SUCCESS) { - ret = -EIO; - LOG_ERR("Failed to import the private key for key agreement"); - goto exit; - } - - memcpy(&tmp_pub_key_buf[1], ecc.public_key_be, BT_PUB_KEY_LEN); - if (psa_raw_key_agreement(PSA_ALG_ECDH, key_id, tmp_pub_key_buf, - sizeof(tmp_pub_key_buf), ecc.dhkey_be, BT_DH_KEY_LEN, - &tmp_len) != PSA_SUCCESS) { - ret = -EIO; - LOG_ERR("Raw key agreement failed"); - goto exit; - } - - if (psa_destroy_key(key_id) != PSA_SUCCESS) { - LOG_ERR("Failed to destroy the key"); - ret = -EIO; - } - -exit: - buf = bt_buf_get_rx(BT_BUF_EVT, K_FOREVER); - - hdr = net_buf_add(buf, sizeof(*hdr)); - hdr->evt = BT_HCI_EVT_LE_META_EVENT; - hdr->len = sizeof(*meta) + sizeof(*evt); - - meta = net_buf_add(buf, sizeof(*meta)); - meta->subevent = BT_HCI_EVT_LE_GENERATE_DHKEY_COMPLETE; - - evt = net_buf_add(buf, sizeof(*evt)); - - if (ret != 0) { - evt->status = BT_HCI_ERR_UNSPECIFIED; - (void)memset(evt->dhkey, 0xff, sizeof(evt->dhkey)); - } else { - evt->status = 0U; - /* Convert from big-endian (provided by crypto API) to - * little-endian HCI. - */ - sys_memcpy_swap(evt->dhkey, ecc.dhkey_be, sizeof(ecc.dhkey_be)); - } - - atomic_clear_bit(flags, PENDING_DHKEY); - - bt_hci_recv(bt_dev.hci, buf); -} - -static void ecc_process(struct k_work *work) -{ - if (atomic_test_bit(flags, PENDING_PUB_KEY)) { - emulate_le_p256_public_key_cmd(); - } else if (atomic_test_bit(flags, PENDING_DHKEY)) { - emulate_le_generate_dhkey(); - } else { - __ASSERT(0, "Unhandled ECC command"); - } -} - -static void clear_ecc_events(struct net_buf *buf) -{ - struct bt_hci_cp_le_set_event_mask *cmd; - - cmd = (void *)(buf->data + sizeof(struct bt_hci_cmd_hdr)); - - /* - * don't enable controller ECC events as those will be generated from - * emulation code - */ - cmd->events[0] &= ~0x80; /* LE Read Local P-256 PKey Compl */ - cmd->events[1] &= ~0x01; /* LE Generate DHKey Compl Event */ -} - -static uint8_t le_gen_dhkey(uint8_t *key, uint8_t key_type) -{ - if (atomic_test_bit(flags, PENDING_PUB_KEY)) { - return BT_HCI_ERR_CMD_DISALLOWED; - } - - if (key_type > BT_HCI_LE_KEY_TYPE_DEBUG) { - return BT_HCI_ERR_INVALID_PARAM; - } - - if (atomic_test_and_set_bit(flags, PENDING_DHKEY)) { - return BT_HCI_ERR_CMD_DISALLOWED; - } - - /* Convert X and Y coordinates from little-endian HCI to - * big-endian (expected by the crypto API). - */ - sys_memcpy_swap(ecc.public_key_be, key, BT_PUB_KEY_COORD_LEN); - sys_memcpy_swap(&ecc.public_key_be[BT_PUB_KEY_COORD_LEN], &key[BT_PUB_KEY_COORD_LEN], - BT_PUB_KEY_COORD_LEN); - - atomic_set_bit_to(flags, USE_DEBUG_KEY, - key_type == BT_HCI_LE_KEY_TYPE_DEBUG); - - bt_long_wq_submit(&ecc_work); - - return BT_HCI_ERR_SUCCESS; -} - -static void le_gen_dhkey_v1(struct net_buf *buf) -{ - struct bt_hci_cp_le_generate_dhkey *cmd; - uint8_t status; - - cmd = (void *)buf->data; - status = le_gen_dhkey(cmd->key, BT_HCI_LE_KEY_TYPE_GENERATED); - - net_buf_unref(buf); - send_cmd_status(BT_HCI_OP_LE_GENERATE_DHKEY, status); -} - -static void le_gen_dhkey_v2(struct net_buf *buf) -{ - struct bt_hci_cp_le_generate_dhkey_v2 *cmd; - uint8_t status; - - cmd = (void *)buf->data; - status = le_gen_dhkey(cmd->key, cmd->key_type); - - net_buf_unref(buf); - send_cmd_status(BT_HCI_OP_LE_GENERATE_DHKEY_V2, status); -} - -static void le_p256_pub_key(struct net_buf *buf) -{ - uint8_t status; - - net_buf_unref(buf); - - if (atomic_test_bit(flags, PENDING_DHKEY)) { - status = BT_HCI_ERR_CMD_DISALLOWED; - } else if (atomic_test_and_set_bit(flags, PENDING_PUB_KEY)) { - status = BT_HCI_ERR_CMD_DISALLOWED; - } else { - bt_long_wq_submit(&ecc_work); - status = BT_HCI_ERR_SUCCESS; - } - - send_cmd_status(BT_HCI_OP_LE_P256_PUBLIC_KEY, status); -} - -int bt_hci_ecc_send(struct net_buf *buf) -{ - if (bt_buf_get_type(buf) == BT_BUF_CMD) { - struct bt_hci_cmd_hdr *chdr = (void *)buf->data; - - switch (sys_le16_to_cpu(chdr->opcode)) { - case BT_HCI_OP_LE_P256_PUBLIC_KEY: - net_buf_pull(buf, sizeof(*chdr)); - le_p256_pub_key(buf); - return 0; - case BT_HCI_OP_LE_GENERATE_DHKEY: - net_buf_pull(buf, sizeof(*chdr)); - le_gen_dhkey_v1(buf); - return 0; - case BT_HCI_OP_LE_GENERATE_DHKEY_V2: - net_buf_pull(buf, sizeof(*chdr)); - le_gen_dhkey_v2(buf); - return 0; - case BT_HCI_OP_LE_SET_EVENT_MASK: - clear_ecc_events(buf); - break; - default: - break; - } - } - - return bt_hci_send(bt_dev.hci, buf); -} - -void bt_hci_ecc_supported_commands(uint8_t *supported_commands) -{ - /* LE Read Local P-256 Public Key */ - supported_commands[34] |= BIT(1); - /* LE Generate DH Key v1 */ - supported_commands[34] |= BIT(2); - /* LE Generate DH Key v2 */ - supported_commands[41] |= BIT(2); -} - -int default_CSPRNG(uint8_t *dst, unsigned int len) -{ - return !bt_rand(dst, len); -} diff --git a/subsys/bluetooth/host/hci_ecc.h b/subsys/bluetooth/host/hci_ecc.h deleted file mode 100644 index e22593c832a..00000000000 --- a/subsys/bluetooth/host/hci_ecc.h +++ /dev/null @@ -1,10 +0,0 @@ -/* hci_ecc.h - HCI ECC emulation */ - -/* - * Copyright (c) 2016 Intel Corporation - * - * SPDX-License-Identifier: Apache-2.0 - */ - -int bt_hci_ecc_send(struct net_buf *buf); -void bt_hci_ecc_supported_commands(uint8_t *supported_commands); diff --git a/subsys/bluetooth/host/hci_raw.c b/subsys/bluetooth/host/hci_raw.c index 1580fea5ba5..3e913151156 100644 --- a/subsys/bluetooth/host/hci_raw.c +++ b/subsys/bluetooth/host/hci_raw.c @@ -19,7 +19,6 @@ #include -#include "hci_ecc.h" #include "monitor.h" #include "hci_raw_internal.h" @@ -313,10 +312,6 @@ int bt_send(struct net_buf *buf) } } - if (IS_ENABLED(CONFIG_BT_SEND_ECC_EMULATION)) { - return bt_hci_ecc_send(buf); - } - return bt_hci_send(bt_dev.hci, buf); } diff --git a/subsys/bluetooth/host/smp.c b/subsys/bluetooth/host/smp.c index cce63f7d1a2..db936b28fdf 100644 --- a/subsys/bluetooth/host/smp.c +++ b/subsys/bluetooth/host/smp.c @@ -298,17 +298,11 @@ static K_SEM_DEFINE(sc_local_pkey_ready, 0, 1); static bool le_sc_supported(void) { - /* - * If controller based ECC is to be used it must support - * "LE Read Local P-256 Public Key" and "LE Generate DH Key" commands. - * Otherwise LE SC are not supported. - */ if (IS_ENABLED(CONFIG_BT_SMP_OOB_LEGACY_PAIR_ONLY)) { return false; } - return BT_CMD_TEST(bt_dev.supported_commands, 34, 1) && - BT_CMD_TEST(bt_dev.supported_commands, 34, 2); + return IS_ENABLED(CONFIG_BT_ECC); } static const struct bt_conn_auth_cb *latch_auth_cb(struct bt_smp *smp) diff --git a/tests/bluetooth/init/prj_10.conf b/tests/bluetooth/init/prj_10.conf index 317857577d7..81503cadb9a 100644 --- a/tests/bluetooth/init/prj_10.conf +++ b/tests/bluetooth/init/prj_10.conf @@ -4,6 +4,5 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_ZTEST=y diff --git a/tests/bluetooth/init/prj_11.conf b/tests/bluetooth/init/prj_11.conf index d0523c0fda2..a5492c5c1eb 100644 --- a/tests/bluetooth/init/prj_11.conf +++ b/tests/bluetooth/init/prj_11.conf @@ -4,7 +4,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_12.conf b/tests/bluetooth/init/prj_12.conf index 2fb4de6e9b3..16fc86e8f82 100644 --- a/tests/bluetooth/init/prj_12.conf +++ b/tests/bluetooth/init/prj_12.conf @@ -3,7 +3,6 @@ CONFIG_BT_PERIPHERAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_13.conf b/tests/bluetooth/init/prj_13.conf index 79b995a6b46..aa8cc122083 100644 --- a/tests/bluetooth/init/prj_13.conf +++ b/tests/bluetooth/init/prj_13.conf @@ -3,7 +3,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_14.conf b/tests/bluetooth/init/prj_14.conf index d030c856e26..93423f64742 100644 --- a/tests/bluetooth/init/prj_14.conf +++ b/tests/bluetooth/init/prj_14.conf @@ -3,5 +3,4 @@ CONFIG_BT_PERIPHERAL=y CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_ZTEST=y diff --git a/tests/bluetooth/init/prj_15.conf b/tests/bluetooth/init/prj_15.conf index 296cfb0dbe3..6dfcf4d7f59 100644 --- a/tests/bluetooth/init/prj_15.conf +++ b/tests/bluetooth/init/prj_15.conf @@ -3,5 +3,4 @@ CONFIG_BT_PERIPHERAL=y CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_ZTEST=y diff --git a/tests/bluetooth/init/prj_17.conf b/tests/bluetooth/init/prj_17.conf index 7cd0ea16996..5e504b9ead1 100644 --- a/tests/bluetooth/init/prj_17.conf +++ b/tests/bluetooth/init/prj_17.conf @@ -4,7 +4,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_20.conf b/tests/bluetooth/init/prj_20.conf index 6df91453eb6..4b80a6b4427 100644 --- a/tests/bluetooth/init/prj_20.conf +++ b/tests/bluetooth/init/prj_20.conf @@ -4,7 +4,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_21.conf b/tests/bluetooth/init/prj_21.conf index c930cc02c74..49c4c6eb452 100644 --- a/tests/bluetooth/init/prj_21.conf +++ b/tests/bluetooth/init/prj_21.conf @@ -4,7 +4,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_9.conf b/tests/bluetooth/init/prj_9.conf index 5e07e0f9479..2fdd7773009 100644 --- a/tests/bluetooth/init/prj_9.conf +++ b/tests/bluetooth/init/prj_9.conf @@ -4,5 +4,4 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_ZTEST=y diff --git a/tests/bluetooth/init/prj_ctlr.conf b/tests/bluetooth/init/prj_ctlr.conf index 8062b929965..b311a76b1cd 100644 --- a/tests/bluetooth/init/prj_ctlr.conf +++ b/tests/bluetooth/init/prj_ctlr.conf @@ -5,7 +5,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y CONFIG_BT_CLASSIC=n diff --git a/tests/bluetooth/init/prj_ctlr_5_x_dbg.conf b/tests/bluetooth/init/prj_ctlr_5_x_dbg.conf index 90a7fbcd19d..828b486b88f 100644 --- a/tests/bluetooth/init/prj_ctlr_5_x_dbg.conf +++ b/tests/bluetooth/init/prj_ctlr_5_x_dbg.conf @@ -57,7 +57,6 @@ CONFIG_BT_ISO_PERIPHERAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_ctlr_dbg.conf b/tests/bluetooth/init/prj_ctlr_dbg.conf index bd88daf7fd3..cc6f478b66b 100644 --- a/tests/bluetooth/init/prj_ctlr_dbg.conf +++ b/tests/bluetooth/init/prj_ctlr_dbg.conf @@ -40,7 +40,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_ctlr_ticker.conf b/tests/bluetooth/init/prj_ctlr_ticker.conf index 6dcbf95c76f..ac15e8662a6 100644 --- a/tests/bluetooth/init/prj_ctlr_ticker.conf +++ b/tests/bluetooth/init/prj_ctlr_ticker.conf @@ -39,7 +39,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_USE_DEBUG_KEYS=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y diff --git a/tests/bluetooth/init/prj_ctlr_tiny.conf b/tests/bluetooth/init/prj_ctlr_tiny.conf index 5bc0aa5a6b4..e3413d68e98 100644 --- a/tests/bluetooth/init/prj_ctlr_tiny.conf +++ b/tests/bluetooth/init/prj_ctlr_tiny.conf @@ -33,7 +33,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y CONFIG_BT_CLASSIC=n diff --git a/tests/bluetooth/init/prj_llcp.conf b/tests/bluetooth/init/prj_llcp.conf index 8542a4e2f20..2bbcfb83834 100644 --- a/tests/bluetooth/init/prj_llcp.conf +++ b/tests/bluetooth/init/prj_llcp.conf @@ -5,7 +5,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_SMP_SC_ONLY=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_GATT_CLIENT=y CONFIG_BT_CLASSIC=n diff --git a/tests/bluetooth/shell/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/tests/bluetooth/shell/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index 4658bfcca48..488baa3f036 100644 --- a/tests/bluetooth/shell/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/tests/bluetooth/shell/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -7,6 +7,3 @@ CONFIG_RING_BUFFER=y CONFIG_USB_DEVICE_STACK=y CONFIG_USB_DEVICE_AUDIO=y CONFIG_USB_DEVICE_PRODUCT="Zephyr Shell USB" - -# Enable encryption in the host -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/tests/bluetooth/shell/boards/nrf5340dk_nrf5340_cpuapp.conf b/tests/bluetooth/shell/boards/nrf5340dk_nrf5340_cpuapp.conf index 4658bfcca48..488baa3f036 100644 --- a/tests/bluetooth/shell/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/tests/bluetooth/shell/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -7,6 +7,3 @@ CONFIG_RING_BUFFER=y CONFIG_USB_DEVICE_STACK=y CONFIG_USB_DEVICE_AUDIO=y CONFIG_USB_DEVICE_PRODUCT="Zephyr Shell USB" - -# Enable encryption in the host -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/tests/bluetooth/tester/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf b/tests/bluetooth/tester/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf index 3f605b57919..5bb1c4d8284 100644 --- a/tests/bluetooth/tester/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf +++ b/tests/bluetooth/tester/boards/nrf5340_audio_dk_nrf5340_cpuapp.conf @@ -22,5 +22,3 @@ CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_BTTESTER_LOG_LEVEL_DBG=y CONFIG_UART_INTERRUPT_DRIVEN=y - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/tests/bluetooth/tester/boards/nrf5340dk_nrf5340_cpuapp.conf b/tests/bluetooth/tester/boards/nrf5340dk_nrf5340_cpuapp.conf index 3f605b57919..5bb1c4d8284 100644 --- a/tests/bluetooth/tester/boards/nrf5340dk_nrf5340_cpuapp.conf +++ b/tests/bluetooth/tester/boards/nrf5340dk_nrf5340_cpuapp.conf @@ -22,5 +22,3 @@ CONFIG_LOG_DEFAULT_LEVEL=3 CONFIG_BTTESTER_LOG_LEVEL_DBG=y CONFIG_UART_INTERRUPT_DRIVEN=y - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/tests/bsim/bluetooth/audio/prj.conf b/tests/bsim/bluetooth/audio/prj.conf index fad001802e4..034f3ac0735 100644 --- a/tests/bsim/bluetooth/audio/prj.conf +++ b/tests/bsim/bluetooth/audio/prj.conf @@ -29,7 +29,6 @@ CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_CMD_TX_SIZE=255 -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_AUDIO=y CONFIG_BT_BAP_UNICAST_SERVER=y diff --git a/tests/bsim/bluetooth/audio_samples/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf b/tests/bsim/bluetooth/audio_samples/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf index 6bf3108da1b..7b48d3d1a6c 100644 --- a/tests/bsim/bluetooth/audio_samples/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf +++ b/tests/bsim/bluetooth/audio_samples/bap_unicast_client/boards/nrf5340bsim_nrf5340_cpuapp.conf @@ -8,5 +8,3 @@ CONFIG_BT_BUF_EVT_RX_SIZE=255 CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251 CONFIG_BT_BUF_CMD_TX_SIZE=255 - -CONFIG_BT_SEND_ECC_EMULATION=y diff --git a/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_dut_llcp.conf b/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_dut_llcp.conf index 981986ebd2c..816319d5016 100644 --- a/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_dut_llcp.conf +++ b/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_dut_llcp.conf @@ -7,7 +7,6 @@ CONFIG_BT_BROADCASTER=y CONFIG_BT_CENTRAL=y CONFIG_BT_OBSERVER=y CONFIG_LOG=y -CONFIG_BT_ECC=y # BUF_CMD_TX_SIZE must be 255 because of HCI/GEV/BV-01-C CONFIG_BT_BUF_ACL_RX_SIZE=60 diff --git a/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_tst_llcp.conf b/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_tst_llcp.conf index b1eb9a86f93..306e1e50e83 100644 --- a/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_tst_llcp.conf +++ b/tests/bsim/bluetooth/ll/edtt/hci_test_app/prj_tst_llcp.conf @@ -5,7 +5,6 @@ CONFIG_BT_HCI_RAW=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_CENTRAL=y CONFIG_LOG=y -CONFIG_BT_ECC=y # BUF_CMD_TX_SIZE must be 255 because of HCI/GEV/BV-01-C CONFIG_BT_BUF_ACL_RX_SIZE=60 diff --git a/tests/bsim/bluetooth/ll/throughput/prj.conf b/tests/bsim/bluetooth/ll/throughput/prj.conf index 49a2099c3a6..476c7e9ad6c 100644 --- a/tests/bsim/bluetooth/ll/throughput/prj.conf +++ b/tests/bsim/bluetooth/ll/throughput/prj.conf @@ -3,7 +3,6 @@ CONFIG_BT_CENTRAL=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_SMP=y CONFIG_BT_GATT_CLIENT=y -CONFIG_BT_SEND_ECC_EMULATION=y CONFIG_BT_BUF_ACL_RX_SIZE=255 CONFIG_BT_BUF_ACL_TX_SIZE=251