Quick update on what landed last week:
-
enc_ciphertextrecomputed on-device for every Orchard output. The companion now ships(d, pk_d, value, rseed, memo)per action; the device runs Pallas ECDH → Orchard KDF → ChaCha20-Poly1305 on-chip and constant-time compares against the action bytes (epkincluded).eskisn’t on the wire — derived fromrseed + ρper ZIP-212. Closes the memo-substitution path. -
Miner fee computed on-device + explicit user confirmation.
fee = t_in − t_out + value_balancewith overflow/negative detection;verify()refuses to advance toVERIFIEDuntil the user has OK’d the fee number rendered on the trusted screen. Closesvalue_balance-inflation. -
Memo rendered on the Flipper screen.
Net: every component of the sighash and every byte of every output (recipient, value, memo, fee) is either recomputed on-device or rendered on the trusted screen for explicit confirmation. The only thing the companion is still trusted for is the Halo2 proof itself, and a wrong proof produces a tx the network rejects, not one that pays an attacker.
Commits:
-
libzcash-orchard-c382419b,47921e6,13094d8 -
zcash-hw-wallet-sdka29e08f,465f6ed -
FlipZcashpaired update (memo scene + submodule bump)
Thanks again for the pushback