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

feat(zcash): enable Zcash for SLIP 39 wallets with 33-word shares

Public commit record

What the developer wrote

Authored by John Boyd

100/100 · Strong
feat(zcash): enable Zcash for SLIP 39 wallets with 33-word shares

Previously Zcash was disabled for all SLIP 39 wallets, due to an
incompatibility with the 20-word scheme. This commit relaxes that
restriction, allowing Zcash use on SLIP 39 wallets when using 33-word
shares.

Zcash requires 256-bit seed entropy to avoid the seed becoming a
security bottleneck, potentially enabling multi-target attacks below
2^125 operations. (The same argument applies to BIP 32-like hierarchical
key derivation in general —preserving full entropy in the chain code
and public key at any tree node requires 256 bits to start with— but
for other coins this has not been a specified requirement, or depended
on in their security analysis.)

SLIP 39 requires all implementations to support both 128-bit and 256-bit
master secrets, so compliant software should accept 33-word shares.

- Add IsZcashSupportedForCurrentMnemonic() to centralize entropy check
- Use conditional checks in both CYPHERPUNK_VERSION and WEB3_VERSION
(home widget, connect wallet coin list, public key derivation in
AccountPublicSavePublicInfo and TempAccountPublicInfo)
- Call SetupZcashCache and SetupZcashSFP in CreateNewSlip39Account for
supported wallets
- Update Rust error messages to describe the actual requirement
- Show notice in asset manager when 20-word shares lack Zcash support
- Fix bug in AccountPublicHomeCoinGet where the "manage" JSON key was
omitted (rather than set to false) for Zcash when the mnemonic type
was not BIP 39

Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Claude Opus 4.6/4.7 (1M context) <noreply@anthropic.com>
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
The short version

What changed, and why it matters

This commit changes how the Keystone hardware wallet enables Zcash for SLIP 39 wallets. Previously, Zcash was completely disabled for all SLIP 39 wallets. Now it is allowed when the SLIP 39 shares are 33 words long (256-bit entropy), but still disabled for 20-word shares (128-bit entropy). The change is driven by a cryptographic requirement: Zcash's security analysis assumes the wallet seed has at least 256 bits of entropy. The patch also fixes a small UI bug where the 'manage' option for Zcash was missing entirely for non-BIP39 mnemonics, instead of being shown as disabled.

Recommended action

Review the implementation of GetCurrentAccountEntropyLen() and IsZcashSupportedForCurrentMnemonic() to ensure the entropy length cannot be spoofed or misreported, and that all Zcash code paths consistently use the new helper. Verify that SetupZcashCache/SetupZcashSFP do not derive or store sensitive material for unsupported wallets. Consider whether the change warrants a security note in release notes because it alters a previously enforced restriction.

Security signals we found

01

Relaxation of a security-motivated disablement based on entropy length

02

New entropy-length gate for Zcash support

03

Potential risk if entropy length check is bypassed or miscalculated

04

UI bug fix that could have hidden Zcash manage option for unsupported wallets

05

Cryptographic rationale cited in commit message (256-bit seed entropy to avoid sub-2^125 attacks)

Risk score

Why this scored 29/100

Our methodology →
Potential impact 5/30
Exploitability 3/25
Stealth signal 4/15
Affected reach 6/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.