Commit Graph
102 Commits
Author SHA1 Message Date
Rahul Tank 972f6ac5a3 fix(protocomm): harden nimble transport size handling 2026-06-15 16:00:56 +05:30
Andrii AnoshynandClaude Opus 4.7 12721c5c8b fix(protocomm): prevent out-of-bounds write in console line buffer
The console transport read loop passed &linebuf[i] to uart_read_bytes()
before checking i < LINE_BUF_SIZE, so a line of LINE_BUF_SIZE or more
bytes without a terminator wrote one byte past the 256-byte linebuf
stack array.

Gate the read on the bounds check and reserve the final byte for the NUL
terminator (LINE_BUF_SIZE - 1), so the buffer handed to esp_console_run()
stays terminated even when an overlong line is truncated.

Closes https://github.com/espressif/esp-idf/issues/18638

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-05 17:33:59 +08:00
Aditya Patwardhan dfbe0cb5f1 fix(protocomm): pass current session id when closing existing session
sec1_new_session()/sec2_new_session() were calling sec*_close_session()
with the *new* session_id parameter instead of the existing
cur_session->id. The close handler validates `cur_session->id ==
session_id` before performing teardown, so the call always failed with
ESP_ERR_INVALID_STATE.

Effect: when a peer started a new provisioning session while another was
already active, the previous session's PSA keys, AES context, SRP handle
and username buffer were leaked instead of being destroyed. The cleared
session struct was overwritten by the new session, leaking the previous
key handles inside PSA Crypto and (for security2) leaking heap memory
for the username and SRP context.

Fix: pass cur_session->id so the close path actually executes the
teardown (psa_destroy_key/psa_cipher_abort/esp_srp_free/free) before the
new session takes over.
2026-05-20 12:38:30 +05:30
Ashish Sharma 0ea58d7984 fix(protocomm): fixes potential issues that can lead to crash during device provisioning 2026-04-28 15:05:01 +08:00
Ashish Sharma cfde557e81 fix(esp_srp): reject SRP client public key when A mod N is zero 2026-04-20 11:17:11 +08:00
Rahul Tank 32cd231a95 fix(nimble): Bugfixes for various issues 2026-02-16 11:22:53 +05:30
Rahul Tank dba9a7dc01 fix(protocomm): Add security checks for buffer overflow and incorrect length handling 2025-12-21 11:52:04 +05:30
Mahavir Jain fe00084407 fix(protocomm): add validation for Security1 client verifier data
Add checks to validate client_verify_data pointer and length before
processing in handle_session_command1. Prevents NULL pointer dereference
when client omits verifier data in Session_Command1, which could cause
device crash during provisioning (remote DoS attack).

We would like to thank Pavel Kohout from Aisle Research for reporting
this vulnerability along with a mitigation strategy.
2025-11-27 10:16:03 +05:30
Rahul Tank 3591e526f0 fix(nimble): Address compilation issues in nimble examples 2025-10-30 11:37:18 +05:30
Mahavir Jain af1bd1472c fix(provisioning): fix incorrect AES-GCM IV usage in security2 scheme
Using same IV in AES-GCM across multiple invocation of
encryption/decryption operations can pose a security risk. It can help
to reveal co-relation between different plaintexts.

This commit introduces a change to use part of IV as a monotonic
counter, which must be incremented after every AES-GCM invocation
on both the client and the device side.

Concept of patch version for a security scheme has been introduced here
which can help to differentiate a protocol behavior for the provisioning
entity. The security patch version will be available in the JSON
response for `proto-ver` endpoint request with the field
`sec_patch_ver`.

Please refer to documentation for more details on the changes required
on the provisioning entity side (e.g., PhoneApps).
2025-03-10 10:00:00 +05:30
Mahavir Jain 7e8251d16b fix(protocomm): memory leak issue for session command0 failure case 2025-03-10 09:59:57 +05:30
Rahul Tank 2bfe84235d fix(nimble): Add notify characteristic flag support 2024-09-05 16:18:24 +05:30
Rahul Tank 8c632f4560 fix(wifi_prov): Add support for ESP IP controller chips in bluedroid 2024-08-29 15:05:00 +05:30
Rahul Tank 948c178a96 fix(wifi_prov): Use calloc instead of malloc to zero initialize variable 2024-08-02 10:35:51 +05:30
Rahul Tank a2666d6f2c fix(wifi_prov): Added API to set random address 2024-07-24 20:52:37 +05:30
zhiweijian b9a1756202 fix(ble/bluedroid): Remove BLE functions discard declaration
fix(nt/bluedroid): Split the device name set functions

feat(bt/bluedroid): added APIs to get/set device name on BT GAP side

change(bt/common): Marked some APIs in device module as deprecated

1. esp_bt_dev_set_device_name
2. esp_bt_dev_get_device_name

change(bt/bluedroid): use BT GAP APIs to set/get device name in bluetooth classic examples

change(bt/bluedroid): use BT/BLE GAP APIs to set/get device name in coexist examples
2024-04-18 15:53:54 +08:00
zhiweijian 5725595d84 fix(ble/bluedroid): Remove esp_bluedroid_init() discard declaration 2024-04-18 15:53:30 +08:00
Jin Cheng a3f68aef8a feat(bt/bluedroid): Added API to get local device name 2023-12-15 19:30:12 +08:00
Vikram Dattu 08f2422ff8 feat(provisioning): Generate Salt and verifier pair for given username and password
This commit adds a new feature to generate a salt and verifier pair for a given username and
password during the provisioning process. This is useful in scenarios where the pairing pin is
randomly generated and shown via some interface such as a display or console.

- Uses the provided username and password to generate a salt and verifier pair
- Adds support for dev mode where the pin/password can still be read from flash
2023-11-21 18:06:24 +05:30
Vikram Dattu b97322c521 refactor(esp_srp): Expose esp_srp.h and add API docs
- Also added missing `protocomm_security2` reference in `protocomm.rst`
2023-11-21 18:06:24 +05:30
Rahul Tank e689cc55d8 Merge branch 'feature/protocomm_update_params' into 'master'
fix(protocomm): added Protocomm BLE Event Structure and Event Handling

See merge request espressif/esp-idf!26707
2023-11-03 14:09:27 +08:00
darshan e1ec13548f fix(protocomm): added Protocomm BLE Event Structure and Event Handling 2023-11-02 15:37:50 +05:30
Jin Cheng fc174f5811 feat(bt/bluedroid): Added mode to use BlueDroid host only without Bluetooth Controller 2023-10-30 00:52:26 +00:00
WanqQixiang 5435c9b04a fix(protocomm): Remove the configuration check of wifi_provisioning for protocomm component 2023-09-25 15:32:03 +08:00
liqigan 0df585dc35 feat(bt/bluedroid): Add new version of API for Bluedroid host stack initialization 2023-08-31 12:28:38 +00:00
KonstantinKondrashov e72061695e all: Removes unnecessary newline character in logs
Closes https://github.com/espressif/esp-idf/issues/11465
2023-06-09 03:31:21 +08:00
Laukik Hase f695c1a788 wifi_prov: Exposed events for secure session establishment 2023-05-23 12:00:40 +05:30
isha.pardikar@espressif.com f29430239c wifi_prov_mgr: Fixed memory leak after bluetooth stack was stopping. 2023-04-24 17:45:41 +05:30
isha.pardikar@espressif.com e72d223737 wifi_prov_mgr : Fixed return value of characteristic read operation 2023-03-06 15:23:26 +05:30
Alexey Lapshin a7e51b2509 protocomm: fix gcc-12 compile errors 2023-02-22 05:33:03 +00:00
Rahul Tank 826495a145 Nimble: Added return value (success / failure ) to nimble_port_init 2023-01-31 12:01:02 +05:30
Laukik Hase 7759079362 protocomm: Fix Kconfig dependency on wifi_provisioning component config
- `protocomm` depends on a config option `CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION`
  from `wifi_provisioning`; however, a lower layer component (`protocomm`) should
  not have any `#ifdef` guard dependent on an upper layer component (`wifi_provisioning`).
- Added a new `ble_link_encryption` flag in `protocomm_ble_config_t` to manage the same

Closes https://github.com/espressif/esp-idf/issues/9443
2023-01-20 11:01:01 +05:30
Mahavir Jain 3a56807568 protocomm: remove "Wno-format" cflag and fix formatting errors 2022-12-21 14:13:55 +05:30
Mahavir Jain a2616c0ab5 protocomm: fix multiple coverity warnings
- comparing array with NULL
- dereferencing null pointer
- resource leak
2022-11-08 15:50:42 +05:30
Laukik Hase e6171b7338 wifi_prov: Exposed event for transport pairing
Closes https://github.com/espressif/esp-idf/issues/10007
2022-11-01 10:06:30 +05:30
Laukik Hase c7142f274b protocomm: Increase Bluedroid-BLE maximum buffer size
- For the security2 scheme, the payload size is quite larger
  than that for security1.
2022-10-26 13:34:39 +05:30
Aditya Patwardhan acc3dc8bd2 protocomm/esp_srp: Allocate memory for username only when the
verification is successful
2022-10-07 18:27:07 +05:30
Aditya Patwardhan 68947b5944 protocommm/esp_srp: Fix small issues reported by coverity. 2022-10-07 18:27:07 +05:30
Laukik Hase b7ae23856a protocomm: MBEDTLS_PRIVATE & MBEDTLS_ALLOW_PRIVATE_ACCESS-related cleanup 2022-09-29 10:13:13 +05:30
Isha Pardikar 2cfcae8d41 Merge branch 'feature/rainmaker_BT_configurable' into 'master'
Doc: Made bluetooth configurable after wifi provisioning is completed

See merge request espressif/esp-idf!18014
2022-07-26 15:21:27 +05:30
Jiang Jiang Jian 92b4e134bb Merge branch 'bugfix/remove_inappropriate_bluetooth_init_api' into 'master'
Remove unused bluetooth init api

See merge request espressif/esp-idf!18923
2022-07-21 14:53:44 +08:00
GengYuchao fd055d3ba6 Fix example after removing API esp_nimble_hci_and_controller_init 2022-07-20 11:44:00 +08:00
Mahavir Jain a94c74c26b mbedtls: remove dependency on driver component
- keep `esp_pm` dependency conditional in mbedtls
- refactor `bt` cmakelist to keep dependencies as private

Related: IDF-1265
2022-07-18 21:10:51 +05:30
Rahul Tank 0dc0f8ad51 WifiProv: Extended support for configuring if link encryption is needed
when attempting to read / write characteristic to bluedroid stack
2022-06-22 10:17:28 +05:30
Aditya PatwardhanandLaukik hase eb7ff34c89 protocomm: Added SRP6a implementation as the security version 2.
1) Rename srp component to esp_srp
2) Remove dependency on hkdf sha
3) Restructure protocomm component APIs to make them more flexible for allowing multiple security versions
4) esp_srp: convert API return type from int to esp_err_t
5) esp_srp: Formatting changes
6) Added mbedtls_gcm instead of aes_ctr

Co-authored-by: Laukik hase <laukik.hase@espressif.com>
2022-06-17 13:16:20 +00:00
Harshit Malpani 2c56c6cad8 Updated coding style and added error logs 2022-05-11 08:58:01 +00:00
Nathan Phillips e8e63a06e8 Don't ignore return value of httpd_stop 2022-05-11 08:58:01 +00:00
lorenzo.consolaro 87cc13f369 Fix iOS advertisement response and simplify 2022-05-05 14:57:25 +05:30
Isha Pardikar e751cbe6c0 Merge branch 'bugfix/wifi_prov_mgr_conn_issue' into 'master'
NimBLE: Fixed device disconnection issue of wifi prov mgr

Closes IDF-4655

See merge request espressif/esp-idf!17236
2022-03-24 15:35:49 +05:30
Mahavir Jain 3b0cb10b9d protocomm: fix copyright header 2022-03-11 09:17:20 +05:30