Skip to content

reconcile: carry upstream presign and reproducibility work into alpha - #611

Merged
BitHighlander merged 4 commits into
alphafrom
reconcile/alpha-upstream-20260826
Aug 27, 2026
Merged

reconcile: carry upstream presign and reproducibility work into alpha#611
BitHighlander merged 4 commits into
alphafrom
reconcile/alpha-upstream-20260826

Conversation

@BitHighlander

Copy link
Copy Markdown
Owner

Scope\n\nSelective reconciliation of reviewed upstream/develop work into the BitHighlander alpha line.\n\n- Restores exact-byte review for Solana raw messages, off-chain messages, and memos.\n- Binds raw/off-chain signing to the displayed version, format, and domain.\n- Wires the existing overflow-safe compute-budget calculation into signing UI, showing fee payer and maximum priority fee in SOL.\n- Adds the native memo exact-byte regression.\n- Imports the reproducible-build verification script and hardens its argument and device-hash checks.\n- Pins BitHighlander/python-keepkey PR #63 exact head 4ab0d91be737bbaa0630274a15876ac0456f83c5.\n- Retains device-protocol exact pin f54f0a7dabb2d38c6f423bf6b6a68e8f979b1b53.\n\n## Verification\n\n- Docker image digest: sha256:caef12386b1000130257ca220a754df5eb51bd2f66b2fe7aaeb4f45a8de52762\n- Native xunit: 584 passed (firmware 539, board 21, crypto 18, Pallas constant-time 6).\n- Focused exact-emulator integration: 5 passed, including all four disclosure differentials and compute-budget priority-fee signing.\n- 27 OLED PNGs captured in the focused run.\n- Shell syntax, changed-line formatting, and git diff checks pass.\n\n## Merge gate\n\nDo not merge this PR before BitHighlander/python-keepkey#63. After #63 merges, repin this PR to the durable develop merge commit and rerun the complete exact-head firmware gate. This PR intentionally does not alter the report generator because that remediation is being handled separately.

Third-party verifiers keep failing KeepKey reproducibility checks by
hashing the freshly built binary (zeroed signature slots in its 256-byte
KPKY header) against the signed release's payload hash — an
apples-to-oranges comparison that can never match (#433, and the same
confusion in 2021's #283).

scripts/build/verify-repro.sh makes the correct comparison a single
command: clean clone at the tag, official Docker build, download of the
signed release asset, and payload-hash (tail -c +257) comparison on both
sides, printing all four hashes and PASS/FAIL.

docs/ReproducibleBuilds.md documents the header layout, why full-file
hashes never match by construction, the manual steps, and the on-device
cross-checks (Features.revision, Features.firmware_hash).
…s-check

- error out on unrecognized/mistyped flags (e.g. --local=x) instead of
  silently ignoring them and falling through to the download-and-compare
  path, which could print a false PASS for a binary that was never read
- docs: Features.firmware_hash covers the full signed file (header +
  payload, per memory_firmware_hash()), not the payload alone — the doc
  previously implied it matched the payload hash, which never matches
@BitHighlander

Copy link
Copy Markdown
Owner Author

Readiness update: this feature line is included in the coherent alpha roll-up #625 rather than being merged independently with a stale companion gitlink. #625 contains this PR’s firmware commits and pins the unified companion #63 line that covers both Solana disclosure and EIP-712. Keep this PR open until #625’s exact-head matrices finish; if #625 merges, this PR should be closed as subsumed, not separately merged.

@BitHighlander
BitHighlander merged commit 8332df3 into alpha Aug 27, 2026
15 of 18 checks passed
@BitHighlander

Copy link
Copy Markdown
Owner Author

GitHub marked this PR merged when #625 landed at 03:04:58Z because this head is contained in #625 ancestry. Operational disposition: subsumed by #625; do not repin to this PR’s former standalone companion gitlink.

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.

1 participant