Allow setting non-default IRK
- Dominant language
- C
- Stars
- 893
- Forks
- 512
- Avg merge
- 13d 31m
- Merged PRs (30d)
- 7
Description
hi! I'm from the [MicroPython](https://github.com/micropython/micropython) project, where we use NimBLE as our BLE stack (on top of a few different HCI controllers). I've recently been doing some work with pairing & bonding, and seem to be missing something important -- I can't see a way to not use the default IRK ble_hs_pvcy_default_irk.
ble_hs_pvcy_set_our_irk is in a private header (ble_hs_pvcy_priv.h), and even if it wasn't there's no way to avoid it already being called at startup (ble_hs_startup_go calls ble_hs_pvcy_set_our_irk(NULL))
But even if do use ble_hs_pvcy_set_our_irk is in a private header (ble_hs_pvcy_priv.h), and even if it wasn't there's no way to avoid it already being called at startup to re-set it in sync_cb or somewhere, then now all the peer IRK entries loaded from my key store will be thrown away, so I'd have to call ble_hs_misc_restore_irks to re-load them. But that's also in a private header.
I notice in #517 there's a reference to "setting a custom IRK". I'm not sure what the mechanism to set a custom IRK is, but in our case (MicroPython) this should ideally be able to be generated and set at runtime (i.e. not a syscfg option).
How are other NimBLE implementors using a non-default IRK in their devices? Thanks!
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing ble_hs_startup_go and ble_hs_pvcy_set_our_irk in ble_hs_pvcy_priv.h, then inspect ble_hs_misc_restore_irks and the startup ordering described in the issue. Done should provide a supported runtime way to set a non-default IRK without losing peer IRK entries.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100