|
openaliro
Aliro reader: UWB/CCC core and ESP32-S3/C5/C6 port
|
— CCC STS substitution core (implementation). More...
Functions | |
| static uint32_t | ccc_shim_slot_from_sub (uint32_t sub) |
| Map a blob sub-block offset to a CCC slot (currently pass-through). | |
| int | ccc_shim_bind (const uint8_t mursk[CCC_MURSK_LEN], const uint8_t salted_hash[CCC_SALTED_HASH_LEN], uint32_t sts_index0, uint16_t n_slot_per_round) |
| Bind the shim to a ranging session's derived key material. | |
| int | ccc_shim_bind_from_ursk (const uint8_t ursk[CCC_URSK_LEN], const uint8_t *ranging_config, size_t rc_len, uint32_t sts_index0, uint16_t n_slot_per_round) |
| Bind the shim, deriving mURSK and SaltedHash from URSK and RangingConfiguration. | |
| void | ccc_shim_unbind (void) |
| Unbind the shim; ccc_shim_active returns false afterward. | |
| bool | ccc_shim_active (void) |
| Whether the per-frame STS interception is live (bound AND not suspended). | |
| uint32_t | ccc_shim_sts_index0 (void) |
The bound session's STS_Index0 (for UAD/Pre-POLL derivation); 0 if unbound. | |
| void | ccc_shim_suspend (bool suspend) |
| Suspend or resume the per-frame IV wrap without unbinding. | |
| int | ccc_shim_sts_for_index (uint32_t sts_index, uint8_t dursk[CCC_DURSK_LEN], uint8_t sts_v[CCC_STS_V_LEN]) |
| Map a per-frame STS index to its CCC dURSK (per-cycle) and STS-V (per-PPDU). | |
| int | ccc_shim_dudsk_for_index (uint32_t sts_index, uint8_t dudsk[CCC_DUDSK_LEN]) |
| Derive dUDSK (per-cycle Final_Data key) for the ranging cycle containing sts_index. | |
| int | ccc_shim_sts_for_slot (uint32_t slot, uint8_t dursk[CCC_DURSK_LEN], uint8_t sts_v[CCC_STS_V_LEN]) |
| Map a ranging-slot offset (STS_Index0 plus slot) to its CCC dURSK and STS-V. | |
| uint32_t | ccc_shim_index_from_iv (const uint8_t iv16[16]) |
| Extract the STS index from a DW3000 STS IV (index at bytes 7..4). | |
| uint32_t | ccc_shim_blob_to_ccc_index (uint32_t blob_idx, uint32_t *block, uint32_t *sub) |
| Map the blob's raw provisioned STS index to a CCC-schedule STS index, with origin and stride auto-calibrated from the first two indices. | |
| void | ccc_shim_pin_index (uint32_t ccc_index) |
| Pin the substituted STS to one fixed CCC index (bench validation). | |
| void | ccc_shim_unpin (void) |
| Release the debug pin; STS resumes advancing with the blob index. | |
Variables | ||
| struct { | ||
| } | g | |
| The bound session's key material, schedule anchor, and dURSK cache. | ||
— CCC STS substitution core (implementation).
| int ccc_shim_bind | ( | const uint8_t | mursk[CCC_MURSK_LEN], |
| const uint8_t | salted_hash[CCC_SALTED_HASH_LEN], | ||
| uint32_t | sts_index0, | ||
| uint16_t | n_slot_per_round | ||
| ) |
Bind the shim to a ranging session's derived key material.
| mursk | mURSK bytes. |
| salted_hash | SaltedHash bytes. |
| sts_index0 | Initial STS index for this session. |
| n_slot_per_round | Slots per ranging cycle. |
| int ccc_shim_bind_from_ursk | ( | const uint8_t | ursk[CCC_URSK_LEN], |
| const uint8_t * | ranging_config, | ||
| size_t | rc_len, | ||
| uint32_t | sts_index0, | ||
| uint16_t | n_slot_per_round | ||
| ) |
Bind the shim, deriving mURSK and SaltedHash from URSK and RangingConfiguration.
Bind the shim, deriving mURSK + SaltedHash from the URSK + RangingConfiguration.
| ursk | 256-bit URSK input key. |
| ranging_config | Serialized ranging configuration bytes (may be NULL if rc_len is 0). |
| rc_len | Length of ranging_config in bytes. |
| sts_index0 | Initial STS index for this session. |
| n_slot_per_round | Slots per ranging cycle. |
| uint32_t ccc_shim_blob_to_ccc_index | ( | uint32_t | blob_idx, |
| uint32_t * | block, | ||
| uint32_t * | sub | ||
| ) |
Map the blob's raw provisioned STS index to a CCC-schedule STS index, with origin and stride auto-calibrated from the first two indices.
Map the blob's raw provisioned STS index to a CCC-schedule STS index (origin/stride auto-calibrated from the first two indices).
| blob_idx | Blob provisioned STS index. |
| block | Output pointer receiving the ranging-cycle block index (may be NULL). |
| sub | Output pointer receiving the intra-block sub-offset (may be NULL). |
| int ccc_shim_dudsk_for_index | ( | uint32_t | sts_index, |
| uint8_t | dudsk[CCC_DUDSK_LEN] | ||
| ) |
Derive dUDSK (per-cycle Final_Data key) for the ranging cycle containing sts_index.
Derive the dUDSK (per-cycle Final_Data key) for the ranging cycle containing sts_index.
| sts_index | STS index in the ranging schedule. |
| dudsk | Output buffer receiving dUDSK. |
| uint32_t ccc_shim_index_from_iv | ( | const uint8_t | iv16[16] | ) |
Extract the STS index from a DW3000 STS IV (index at bytes 7..4).
Extract the STS index the blob packed into a DW3000 STS IV (index at bytes 7..4).
| iv16 | 16-byte STS IV. |
| void ccc_shim_pin_index | ( | uint32_t | ccc_index | ) |
Pin the substituted STS to one fixed CCC index (bench validation).
| ccc_index | CCC index to pin for all subsequent frames. |
|
static |
Map a blob sub-block offset to a CCC slot (currently pass-through).
| sub | Sub-block offset. |
| int ccc_shim_sts_for_index | ( | uint32_t | sts_index, |
| uint8_t | dursk[CCC_DURSK_LEN], | ||
| uint8_t | sts_v[CCC_STS_V_LEN] | ||
| ) |
Map a per-frame STS index to its CCC dURSK (per-cycle) and STS-V (per-PPDU).
Map a per-frame STS index to its CCC dURSK (per-cycle) + STS-V (per-PPDU).
| sts_index | STS index in the ranging schedule. |
| dursk | Output buffer receiving dURSK. |
| sts_v | Output buffer receiving STS-V. |
| int ccc_shim_sts_for_slot | ( | uint32_t | slot, |
| uint8_t | dursk[CCC_DURSK_LEN], | ||
| uint8_t | sts_v[CCC_STS_V_LEN] | ||
| ) |
Map a ranging-slot offset (STS_Index0 plus slot) to its CCC dURSK and STS-V.
Map a ranging-slot offset (STS_Index0 + slot) to its CCC dURSK + STS-V.
| slot | Slot offset from STS_Index0. |
| dursk | Output buffer receiving dURSK. |
| sts_v | Output buffer receiving STS-V. |
| void ccc_shim_suspend | ( | bool | suspend | ) |
Suspend or resume the per-frame IV wrap without unbinding.
Suspend/resume the per-frame IV wrap without unbinding.
| suspend | True to suspend, false to resume. |