PebbleOS
Loading...
Searching...
No Matches
Data Structures | Macros
Legacy shared PRF storage layout

Former single-struct layout of the shared PRF storage, not used by the firmware. More...

Data Structures

struct  BLEPairingData
 BLE pairing. More...
 
struct  BTClassicPairingData
 BT Classic pairing. More...
 
struct  SharedPRFData
 Legacy shared PRF storage contents. More...
 
struct  SharedPRFData.main_fw_scratch
 Area reserved for the normal firmware to stash pairing related data. More...
 

Macros

#define SHARED_PRF_STORAGE_VERSION   3
 Layout version.
 

Detailed Description

Former single-struct layout of the shared PRF storage, not used by the firmware.


Data Structure Documentation

◆ BLEPairingData

struct BLEPairingData

BLE pairing.

Data Fields
struct pbl_bt_sm_key csrk Remote signature key.
uint16_t ediv Remote EDIV, used when the watch is central.
struct pbl_bt_device_internal identity Remote identity address, used when the watch is peripheral.
struct pbl_bt_sm_key irk Remote IRK, used when the watch is peripheral.
bool is_local_encryption_info_valid: 1 local_div and local_ediv are valid.
bool is_remote_encryption_info_valid: 1 ltk, rand and ediv are valid.
bool is_remote_identity_info_valid: 1 irk and identity are valid.
bool is_remote_signing_info_valid: 1 csrk is valid.

Since iOS 9, the CSRK is no longer exchanged.

uint16_t local_div DIV handed to the remote with our LTK, used when the watch is peripheral.
uint16_t local_ediv EDIV handed to the remote with our LTK, used when the watch is peripheral.
struct pbl_bt_sm_key ltk Remote LTK, used when the watch is central.
char name[PBL_BT_DEVICE_NAME_BUFFER_SIZE] Remote device name.
uint64_t rand Remote Rand, used when the watch is central.

◆ BTClassicPairingData

struct BTClassicPairingData

BT Classic pairing.

Data Fields
struct pbl_bt_addr address Remote address.
struct pbl_bt_sm_key link_key Link key.
char name[PBL_BT_DEVICE_NAME_BUFFER_SIZE] Remote device name.
uint8_t platform_bits Remote platform bits.

◆ SharedPRFData

struct SharedPRFData

Legacy shared PRF storage contents.

Shared PRF storage entry.

Data Fields
BLEPairingData ble_data BLE pairing, must be adjacent to bt_classic_data.
SprfBlePairingData ble_pairing_data BLE pairing.
SprfBlePairingName ble_pairing_name BLE pairing device name.
BTClassicPairingData bt_classic_data BT Classic pairing.
SprfGettingStarted getting_started Onboarding state.
bool getting_started_is_complete Onboarding has been completed.
char local_device_name[PBL_BT_DEVICE_NAME_BUFFER_SIZE] Custom local device name, empty to use the default name.
SprfLocalIdentityAddress local_identity_address Local identity address.
SprfLocalName local_name Custom local device name.
SprfMagic magic Entry state.
struct SharedPRFData.main_fw_scratch main_fw_scratch Area reserved for the normal firmware to stash pairing related data.
SprfPinnedAddress pinned_address Pinned address.
struct pbl_bt_sm_key root_keys[PBL_BT_SM_ROOT_KEY_TYPE_NUM] BLE root keys (ER and IR).
SprfRootKeys root_keys BLE root keys.
uint8_t rsvd[3] Reserved.
uint32_t version Layout version, see SHARED_PRF_STORAGE_VERSION.
uint8_t version Layout version, currently 2.

◆ SharedPRFData.main_fw_scratch

struct SharedPRFData.main_fw_scratch

Area reserved for the normal firmware to stash pairing related data.

Data Fields
uint8_t rsvd[32] Reserved.

Macro Definition Documentation

◆ SHARED_PRF_STORAGE_VERSION

#define SHARED_PRF_STORAGE_VERSION   3

Layout version.

  • 1: Added BLE and BT Classic pairing data.
  • 2: Added getting started is complete bit.
  • 3: Added remote Rand, remote EDIV, local DIV, local EDIV, is_..._valid flags, local device name.