Skip to content

communication: reset sessions on connect - #134

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 stops signing with previous transaction
data missing, disconnects, and reconnects to the same running process.
Record the real TCP responses to check that unlock succeeds, then pair
and read the root fingerprint. Older simulator versions exercise ordinary
reconnects. The regression uses the locally built v9.28.0 C simulator and
fails if the reset call is disabled.

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 stops signing with previous transaction
data missing, disconnects, and reconnects to the same running process.
Record the real TCP responses to check that unlock succeeds, then pair
and read the root fingerprint. Older simulator versions exercise ordinary
reconnects. The regression uses the locally built v9.28.0 C simulator and
fails if the reset call is disabled.

Firmware counterpart: BitBoxSwiss/bitbox02-firmware#2111
@benma
benma requested a review from NickeZ September 17, 2026 14:28
@benma
benma marked this pull request as ready for review September 17, 2026 14:28
@benma
benma requested review from bznein and removed request for NickeZ September 17, 2026 14:37

@bznein bznein left a comment

Copy link
Copy Markdown
Collaborator

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