diff --git a/ble/central_device_db.h b/ble/central_device_db.h index 6e25ac438..d882b0828 100644 --- a/ble/central_device_db.h +++ b/ble/central_device_db.h @@ -38,26 +38,73 @@ #include +/** + + A Central Device DB is only required for signed writes + + Per bonded device, it stores the Identity Resolving Key (IRK), the Connection Signature Resolving Key (CSRK) + and the last used counter + + The IRK is necessary to identify a device that uses private addresses + The CSRK is used to generate the signatur on the remote device and is needed to verify the signature itself + The Counter is necessary to prevent reply attacks + +*/ + + // Central Device db interface + + +/** + * @brief init + */ void central_device_db_init(); -// @returns index if successful, -1 otherwise +/** + * @brief add device to db + * @param addr_type, address of the device + * @param irk and csrk of the device + * @returns index if successful, -1 otherwise + */ int central_device_db_add(int addr_type, bd_addr_t addr, sm_key_t irk, sm_key_t csrk); -// @returns number of device in db +/** + * @brief get number of devices in db for enumeration + * @returns number of device in db + */ int central_device_db_count(void); -// get device information: addr type and address -void central_device_db_info(int index, int * addr_type, bd_addr_t addr, sm_key_t csrk); +/** + * @brief get device information: addr type and address needed to identify device + * @param index + * @param addr_type, address of the device as output + * @param irk of the device + */ +void central_device_db_info(int index, int * addr_type, bd_addr_t addr, sm_key_t irk); -// get signature key +/** + * @brief get signing key for this device + * @param index + * @param signing key as output + */ void central_device_db_csrk(int index, sm_key_t csrk); -// query last used/seen signing counter +/** + * @brief query last used/seen signing counter + * @param index + * @returns next expected counter, 0 after devices was added + */ uint32_t central_device_db_counter_get(int index); -// update signing counter +/** + * @brief update signing counter + * @param index + * @param counter to store + */ void central_device_db_counter_set(int index, uint32_t counter); -// free device -void central_device_db_remove(int index); \ No newline at end of file +/** + * @brief free device + * @param index + */ +void central_device_db_remove(int index);