fix: TxAuth7702 silently maps missing chain_id to all-chains wildcard
The packaged Python client's TxAuth7702 constructor accepted chain_id=None and silently coerced it to 0. The TLV with chain_id=0 crossed the host->device boundary and was interpreted by the firmware as CHAIN_ID_ALL, producing an authorization signature valid on every chain. A bridge or dApp integration carrying chain_id through Optional types could end up requesting a far broader signing scope than intended without any client-side warning. Tighten the type contract: chain_id is now a required int, with no Optional in the signature and no silent coercion of None. Callers that genuinely want an all-chains authorization must pass the explicit TxAuth7702.CHAIN_ID_ALL sentinel. (cherry picked from commit 4f48c980d10645813192cac67acd0abb9bad2c9c)
C
Charles-Edouard de la Vergne committed
cd8220c6f1d48a72ea7342b600d68f3d490c8c57
Parent: 1fbe852
Committed by Alexandre Paillier <alexandre.paillier@ledger.fr>
on 8/25/2026, 3:03:56 PM