AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Informational 19 Bitcoin

feat(zcash): stamp firmware version into signed PCZTs

Public commit record

What the developer wrote

Authored by Adam Tucker

85/100 · Strong
feat(zcash): stamp firmware version into signed PCZTs

Every signed PCZT response now carries
global.proprietary["keystone:fw_version"] = [major, minor, build]
so wallets can detect the Keystone firmware version after scanning
the signed QR and gate features accordingly.

The firmware does not enforce any minimum version — it just reports
its own. The wallet is the authority on version policy.

- build.rs reads src/config/version.h at compile time to generate
the KEYSTONE_FW_VERSION const (no manual sync needed)
- sign_pczt stamps the version via the pczt Updater role before
the Redactor strips witness data
- Simulator-only: replace the synchronous AsyncExecute stub with a
proper FIFO queue so the cypherpunk simulator doesn't crash during
wallet onboarding
- Simulator-only: guard KbTextAreaHandler against freed objects
during LVGL group cleanup
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
The short version

What changed, and why it matters

This commit adds a firmware version stamp to Zcash signed transaction QR codes so wallets can tell which Keystone firmware version produced the signature. It also fixes two simulator-only stability bugs: one in the async task queue and one in a keyboard text-area handler. There is no direct security vulnerability in the diff; the changes are defensive or feature additions.

Recommended action

No immediate security action required. Review the version-stamping logic for correctness and ensure the proprietary key namespace does not collide with future PCZT standards. Treat the simulator fixes as routine stability improvements.

Security signals we found

01

New build.rs reads version.h at compile time and panics on missing/invalid version macros

02

sign_pczt now uses Updater to set a proprietary global field before Redactor runs

03

Firmware explicitly does not validate or enforce wallet-supplied minimum version keys

04

Simulator-only: AsyncExecute now deep-copies input data and drains via FIFO timer

05

Simulator-only: KbTextAreaHandler skips unhandled event codes to avoid freed-object access

Risk score

Why this scored 19/100

Our methodology →
Potential impact 2/30
Exploitability 1/25
Stealth signal 1/15
Affected reach 3/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.