Skip to content

transport: reset sessions on connect - #13

Open
benma-agent wants to merge 1 commit into
BitBoxSwiss:masterfrom
benma-agent:benma-agent/reset-session
Open

benma-agent wants to merge 1 commit into
BitBoxSwiss:masterfrom
benma-agent:benma-agent/reset-session

Conversation

@benma-agent

@benma-agent benma-agent commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Disconnecting after an intermediate signing response leaves the firmware
waiting for a continuation while the device stays powered. On reconnect,
the old workflow consumes the first unlock request and returns an
encrypted error. Pairing can still succeed because the unlock response is
ignored, masking the stale session.

Send HWW_REQ_RESET (0x03) after version discovery and before unlock and
Noise pairing on firmware v9.28.0 or newer. Keep the helper private, retry
BUSY responses once per second, and require an ACK without a payload.
Older firmware keeps its existing connection flow.

Add a simulator regression that disconnects with signing unfinished,
reconnects to the same running process, checks the real unlock response,
pairs, and reads the root fingerprint. The regression uses the locally
built v9.28.0 C simulator and fails if the reset call is disabled. The
existing connection tests cover the version gate on older firmware.

Firmware counterpart: BitBoxSwiss/bitbox02-firmware#2111

Related client PRs in this change:

Disconnecting after an intermediate signing response leaves the firmware
waiting for a continuation while the device stays powered. On reconnect,
the old workflow consumes the first unlock request and returns an
encrypted error. Pairing can still succeed because the unlock response is
ignored, masking the stale session.

Send HWW_REQ_RESET (0x03) after version discovery and before unlock and
Noise pairing on firmware v9.28.0 or newer. Keep the helper private, retry
BUSY responses once per second, and require an ACK without a payload.
Older firmware keeps its existing connection flow.

Add a simulator regression that disconnects with signing unfinished,
reconnects to the same running process, checks the real unlock response,
pairs, and reads the root fingerprint. The regression uses the locally
built v9.28.0 C simulator and fails if the reset call is disabled. The
existing connection tests cover the version gate on older firmware.

Firmware counterpart: BitBoxSwiss/bitbox02-firmware#2111

@bznein bznein left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants