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

Add Ironwood PCZT support

Public commit record

What the developer wrote

Authored by Adam Tucker

68/100 · Adequate
Add Ironwood PCZT support

Add cypherpunk Zcash PCZT parse/check/sign support for v6/Ironwood while
preserving existing Orchard and transparent behavior. Legacy multi_coins
paths reject v6/Ironwood PCZTs instead of mis-handling them. Signed
responses stamp the firmware version and redact optional PCZT fields
(including Ironwood bundle data) before returning QR-sized results.

Restores, against the new builder API, the runtime-constructed regression
tests dropped during the dependency bump:
- internal-OVK change-spoofing rejection (parse + check)
- empty Sapling bundle with non-zero value sum rejection
- Orchard spend/output value + ownership decode (parse + check)
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
The short version

What changed, and why it matters

This commit adds support for a new Zcash transaction format called Ironwood PCZT to the Keystone hardware wallet firmware. It also hardens the wallet against several real attack scenarios: legacy code paths now refuse to handle the new format (instead of mis-processing it), a bug where an attacker could make a payment to themselves look like the user's own change is now blocked, and malformed transaction bundles with contradictory value sums are rejected. The changes are mostly defensive and include many new regression tests.

Recommended action

Review the new cypherpunk path thoroughly, especially the Ironwood signing key collection and the redaction logic, because the diff is large and the security boundary between legacy and cypherpunk paths is new. Ensure the new tests run in CI and that the UI layer (gui_zcash.c) correctly surfaces the new rejection messages to users.

Security signals we found

01

Rejects legacy code paths for v6/Ironwood PCZTs to prevent mis-handling

02

Blocks internal-OVK change-spoofing attack in parse and check paths

03

Rejects empty Sapling bundle with non-zero value_sum before signing

04

Validates Orchard/Ironwood user_address against decoded recipient

05

Adds Ironwood bundle redaction in signed QR-sized responses

06

Stamps firmware version in signed PCZT global proprietary field

07

Adds numerous regression tests for the above behaviors

Risk score

Why this scored 59/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 8/15
Affected reach 10/15
Confidence 7/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.