Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
41/100 average clarity
35Strong · 80–100
64Adequate · 60–79
201Thin · 40–59
232Opaque · 0–39
37security candidates with opaque commit messaging
This commit removes a weak, predictable random-number generator that was bundled as a backup inside the firmware's SLIP-39 code. Previously, if the device's proper hardware random source was accidentally left out of a build, the firmware c…
Removal of deterministic LCG PRNG (random32)Removal of weak-symbol random_buffer fallbackRemoval of unused random helper APIs
This commit fixes a bug in the Keystone 3 hardware wallet's Zcash shielded transaction signing. Previously, when a user reviewed and approved a transaction for one account, the device could accidentally authorize a spend from a different a…
Account-scoping enforcement added to shielded spend authorizationPrevents cross-account signing under same seedNew validation in PCZT check path before signing
This commit fixes a bug in the Keystone hardware wallet's Zcash signing code. When signing a batch of Zcash transactions that include 'dummy' placeholder spends (zero-value decoy actions used for privacy), the signer could get stuck or fai…
Zcash privacy-spend signing bypass for finalized dummy actionsBatch-transport redaction state reproduced in regression testPotential signing failure / denial-of-service for Zcash PCZT transactions with dummy spends
This commit is a simple rename of an internal function from `sign_pczt_to_pczt` to `sign_and_redact_pczt` in the Zcash Rust code. No behavior, logic, or security properties changed; it only makes the function name more descriptive. There i…
This is a large firmware commit for the Keystone 3 hardware wallet that restructures how the secure element (SE) chip is used. It introduces a generation-aware backend so the firmware can support two different SE configurations (gen-1, the…
Generation-aware SE backend with fail-closed NULL backend for UNPROVISIONED/INVALID chipsLegacy page-8 PIN-hash wipe gated to gen-1 only to avoid erasing gen-2 R_wrappedPer-account lifecycle status pages for atomic crash recovery of create/change-PIN/delete
This commit fixes a crash in the Keystone hardware wallet when signing certain advanced Zcash transactions. The previous code used a heavy upstream signing helper that needed too much memory, causing the device to reset during an Orchard-t…
Stack overflow / device reset in signing task due to excessive stack usage by upstream RoleSignerReplacement of heavy upstream signer with lean in-repo low_level_signer to fit device stack budgetAddition of consensus-critical NU6.3 v6 Orchard/Ironwood sighash domains in pczt_ext
This commit adds a new Zcash batch-signing feature for shielded transactions and fixes a UI bug where Zcash signing could freeze if the response QR code could not be generated. The changes introduce new Rust code to validate, parse, and si…
New batch signing path for Zcash shielded PCZTs with 35-message limitAtomic batch semantics: any invalid message aborts the whole batchPreflight check `ensure_pczt_has_signable_shielded_action` prevents silent no-signature results
This commit updates the user interface and internal checks for generating wallet seed phrases using dice rolls as a source of randomness. It enforces a minimum number of dice rolls depending on the desired seed strength: at least 50 rolls …
Enforces minimum entropy input length based on target mnemonic strengthAdds server-side/model-layer validation in addition to UI gatingPrevents generation of 256-bit seeds from insufficient dice-roll entropy
This commit removes support for the 'Leap' wallet from the Keystone 3 firmware. It deletes the Leap wallet icon and asset, removes Leap-related text strings from Chinese, Japanese, and Korean font files, and updates the Rust dependency ver…
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 s…
Relaxation of a security-motivated disablement based on entropy lengthNew entropy-length gate for Zcash supportPotential risk if entropy length check is bypassed or miscalculated
This commit adds a new way for the Keystone hardware wallet to handle Tron (TRX) transactions sent as plain JSON sign requests, alongside the older Keystone-specific format. It introduces code that parses JSON, derives the sender address f…
New transaction parsing path from untrusted JSON input (serde_json::Value then protoc::TronTx)Address-ownership check added before signing (derived address vs. JSON 'from' field)Use of keccak256 with slicing `digest[12..]` to form 20-byte TRON address
This commit adds support for the Core Wallet in the Keystone 3 firmware. It mainly expands the number of Avalanche X/P-chain derivation paths from one to ten, updates the Rust SDK dependency, and changes how signing requests extract deriva…
Change to cryptographic signing API (multiple paths / multiple signatures)Change to HD derivation path validation and selection logicChange to master-fingerprint / source-fingerprint verification
This commit adds support for the Core Wallet in the Keystone 3 firmware. It mainly expands the number of Avalanche (AVAX) X/P-chain account paths from one to ten, updates the Rust signing code to accept multiple derivation paths from the w…
Change from hardcoded derivation-path derivation to paths supplied by the signing requestAddition of multiple AVAX X/P-chain account indexes (0-9)Signature generation now iterates over multiple provided paths
This commit removes the special 'TON-only wallet' feature from the Keystone 3 firmware. It deletes code that let users create or import a TON-native 24-word seed phrase separate from the normal BIP39 wallet. After this change, TON is handl…
No security-relevant signals present in the diff or commit metadataFeature removal, not a vulnerability patchNo mention of CVE, security advisory, researcher credit, or exploit in commit message
This firmware update for the Keystone 3 hardware wallet is billed as a security improvement. The most important change is a complete rewrite of the bootloader/firmware update path: it now uses SHA-256 and a signed/length-prefixed 'bootupda…
Bootloader/firmware update verification upgraded from MD5 to SHA-256 with length-prefixed magic headerAUTO_REBOOT_AFTER_COPY_FILE path removed from USB MSC SCSI handler, eliminating host-triggered reboot on file copyUSB endpoint address validation added across DCD, USBD core, and class drivers to prevent out-of-bounds EP array access
This commit is a large firmware update for the Keystone 3 hardware wallet, primarily adding a bootloader update mechanism and hardening the USB stack. It introduces a way to overwrite the device's bootloader from a specially formatted regi…
New bootloader self-update path from application flash with magic-number header, SHA-256 hash, and CRC32 verificationFlash encryption enabled for production builds using OTP-derived AES-CBC key/IVUSB control endpoint hardening: request length validation, descriptor bounds checks, endpoint address validation, stall-on-invalid requests
This is a one-line build-configuration fix for the Keystone hardware wallet's Zcash signing code. Previously, transparent Zcash transaction signing was only enabled when the 'multi_coins' feature was active. The change also enables it when…
No memory-safety issues visible in the diffNo cryptographic algorithm changesNo input validation changes
This is a one-line build-configuration fix for the Keystone hardware wallet's Zcash transparent transaction signing. Previously, the code that signs the transparent (non-shielded) part of a Zcash PCZT transaction was only compiled when the…
Functional bug in cryptographic signing pathBuild-feature conditional compilation errorCould produce invalid/incomplete transaction signatures
This commit adds support for a new wallet partner called Gero Wallet in the Keystone 3 firmware. It is a routine feature addition: a new icon, a new entry in wallet lists, a tutorial link, and recognition of the wallet's origin name when h…
This commit fixes a product limitation: Keystone 3 hardware wallets using a SLIP39-style recovery phrase could not connect to the Keystone mobile app for Zcash. The patch removes Zcash from the list of coins shared when a SLIP39 wallet is …
Functional/compatibility fix for SLIP39 Zcash supportInput validation added for zcash seed fingerprint length (must be 0 or 32)No evidence of buffer overflow, use-after-free, or cryptographic weakness in the patch
Remove trezor-crypto's unused LCG and weak fallback so device builds must link the platform random_buffer implementation. Keep a simulator-only standard library stub.
Co-authored-by: Nikolaus Heger <nheger@gmail.com>
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
entropy or randomnesscryptography-sensitive pathseed or entropy path
AI analysis · Moderate 64/100
This commit removes a weak, predictable random-number generator that was bundled as a backup inside the firmware's SLIP-39 code. Previously, if the device's proper hardware random source was accidentally left out of a build, the firmware could silently fall back to the weak generator, which would make wallet backup seeds predictable. Now the weak generator is gone for hardware builds, so a missing proper random source causes the build to fail instead of silently producing insecure seeds. The simulator still keeps a simple software-only stub for testing.
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Moderate 64/100
This commit fixes a bug in the Keystone 3 hardware wallet's Zcash shielded transaction signing. Previously, when a user reviewed and approved a transaction for one account, the device could accidentally authorize a spend from a different account controlled by the same seed. The patch now checks that every shielded spend belongs to the account the user actually selected, and rejects the transaction if any spend comes from another account. This prevents an attacker or buggy wallet software from tricking the user into signing a spend from an account they did not review.
fix(zcash): skip finalized dummy spends during signing
62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 43/100
This commit fixes a bug in the Keystone hardware wallet's Zcash signing code. When signing a batch of Zcash transactions that include 'dummy' placeholder spends (zero-value decoy actions used for privacy), the signer could get stuck or fail because it tried to re-sign a dummy spend whose signature had already been finalized and then stripped for transport. The fix tells the signer to skip these finalized zero-value dummy spends, allowing the real spend to be signed normally. The changelog frames it as a fix for batch signing with finalized zero-value dummy spends.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100
This commit is a simple rename of an internal function from `sign_pczt_to_pczt` to `sign_and_redact_pczt` in the Zcash Rust code. No behavior, logic, or security properties changed; it only makes the function name more descriptive. There is no security issue here.
- SeGen_t + GetSeGen(): classify the SE generation from the IMMUTABLE locked config manifest only (countMatch/chipOptions/slotConfig[8,13]/keyConfig[4,7,8,11,13]); fail-closed on UNPROVISIONED/INVALID. match_count is NOT used for classification (mutable; a transient slot-8 read must not flip a healthy device to INVALID).
- SeAccountBackend vtable + SeBackend() dispatcher: gen-1 wrappers map to the existing legacy derivation (derive_608/provision_608/on_unlock_success no-op); gen-2 stubs (filled in W2-W9); SeBackend() returns NULL for UNPROVISIONED/INVALID (fail closed).
- Gate the legacy page-8 wipe to SE_GEN_1 at the caller (AccountManagerInit) so it can never erase a gen-2 R_wrapped.
Scaffolding only: vtables in se_manager.c for now (physical split to src/managers/se/ during the gen-1 extraction); no callers wired -> zero runtime change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
add the function seCounter, matchCounter, rearm etc for se gen2
tmp
refactor the gen2 functions and add some functions in the driver
add the function for the gen2 R and K608 related usage
Gen2Provision608
change Gen2Provision608 and clear the secret K608
refactor the 608b logic and set add gen1 and gen2 backend logic
fix the building issues
fix the paras issues
update the solt/key config
show the se gen version in the device info
get the exsiting pwd to get R when adding the 2/3 wallet
check the device bricked in init on gen2
destroy the account and wipe device setting
add the se account status checking logic and change pwd logic
unset the pwd after change pwd and for gen2 use new way to get the existing account number
disable lock on add wallet and change password/pin
adjust current wallet limit and clear the r passs value as required
add the feature for forget password
fix the wrong pin limit issue and remove the logs
feat: add the weak pin modal
fix simulator and disable boot checking for dev build
fix: the weak-passcode modal free issue
clear the pw for R when lock the device
add data checking function when provision608 before R generation
init the view with g_proveOwnershipDone to false
roll kdf_i in the data check failed
set the state after all passed zero
fix the possible save account issues
prevent the pin dup try when reached back to lock view
add log for desstory account
fix the initail value issue on KeyboardWidget
fix: remove bump on the counter to enlarge the lifetime
refactor the code to move gen decision into the se backend
default to gen2 config in the blank chip
check the operation result to avoid mutation issue
fix the simulator
reorder the wipe function steps
add 10 limit on the password check try
drop the current working flow(add-wallet, change-pin etc) to home view if the password try reached limit and fix the memory leak issue
fix the R Recovery issue for nav back and forth on adding wallet view
fix the issue of drop forget pw flow
protect test R_wrapped value to prevent zero value caculation
remove the ForceLockScreen and fix create-wallet missing R issue
R protect: when forget pass, retype the same wallet pw and seed return not pass
clean the comment and salt value
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
access controlcryptography-sensitive pathsigning or wallet path
AI analysis · Moderate 59/100
This is a large firmware commit for the Keystone 3 hardware wallet that restructures how the secure element (SE) chip is used. It introduces a generation-aware backend so the firmware can support two different SE configurations (gen-1, the current fielded design, and gen-2, a new production design) in one binary. The patch moves legacy gen-1 key derivation into its own file, adds a gen-2 backend with a different key-derivation scheme, adds lifecycle status pages so interrupted wallet create/change-PIN/delete operations can be safely resumed or erased at boot, and adds UI flows for weak-passcode warnings and a 'forget password' ownership-proof step. It also gates the legacy page-8 wipe to gen-1 only so it cannot accidentally erase gen-2 data. The commit is described by its authors as scaffolding with no runtime change for current gen-1 devices, but it does add substantial new crypto and state-machine code.
Security candidatefix(zcash): sign shielded PCZTs without RoleSigner to fit the device stackby Adam Tucker · 11592ebc · Jun 26, 2026 · 3 filesMessage 100 · StrongModerate 54Details
Commit message · Adam Tucker
fix(zcash): sign shielded PCZTs without RoleSigner to fit the device stack
The cypherpunk shielded PCZT signing path used the upstream pczt RoleSigner, which reconstructs a full TransactionData for every bundle just to compute the 32-byte ZIP-244 sighash. That setup alone needs ~61 KB of stack, well over the 26 KB UiDisplayTask budget, so signing an Orchard->Ironwood migration batch overflowed the task stack and the device reset into firmware verification.
Replace RoleSigner with the lean signer used before Ironwood: low_level_signer driven in place, with the sighash computed by the in-repo byte-level pczt_ext::shielded_sig_commitment instead of a TransactionData rebuild. Extend that hasher to the v6 (NU6.3) Orchard and Ironwood commitment domains so it stays correct for migration transactions. This restores the pre-Ironwood signing footprint (~45 KB on host, the same as the path that already signs shielded Orchard on shipping Keystones) while supporting Ironwood.
pczt_ext (zcash_vendor): - digest_orchard_v6 / digest_ironwood_v6 and a v6 branch in shielded_sig_commitment: v6 bundle personalizations, anchor omitted from the effects digest, the 5-node to_hash_v6 layout. - sign_ironwood driver mirroring sign_orchard; a shared sign_orchard_action that defers the sign/skip decision to the signer (wallet-controlled zero-value spends are still signed; tx_modifiable is cleared only when a new signature is added).
app_zcash: - A lean SeedSigner (PcztSigner) deriving keys and signing actions in place, preserving the strict per-action validation from the removed collect path (ZIP 32 derivation shape, dummy_sk rules, already-signed skip, per-account key cache, PcztNoMyInputs). - validate_supported_pczt rejects v6 PCZTs carrying a Sapling spend: the lean hasher implements the Orchard/Ironwood v6 domains but not the v6 Sapling-spend domain (distinct noncompact personalization, anchor omitted). Keystone never signs Sapling spends; Sapling outputs are version-independent and remain supported.
Oracle tests assert the lean sighash is bit-exact against RoleSigner::shielded_sighash for Orchard-only, dual-pool migration, and Ironwood-spend shapes, so any upstream sighash change fails CI rather than producing wrong on-device signatures.
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarymemory safetydefensive validationsigning or wallet path
AI analysis · Moderate 54/100
This commit fixes a crash in the Keystone hardware wallet when signing certain advanced Zcash transactions. The previous code used a heavy upstream signing helper that needed too much memory, causing the device to reset during an Orchard-to-Ironwood migration. The patch replaces it with a leaner, in-house signer and adds the new v6/Ironwood hash logic needed to keep signatures valid. It also rejects v6 transactions containing Sapling spends because the lean signer does not yet support that specific hash domain.
Security candidateAdd Zcash batch signing for shielded PCZTsby Adam Tucker · 745330f6 · Jun 24, 2026 · 32 filesMessage 45 · ThinLow 37Details
Commit message · Adam Tucker
Add Zcash batch signing for shielded PCZTs
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet pathparser or protocol path
AI analysis · Low 37/100
This commit adds a new Zcash batch-signing feature for shielded transactions and fixes a UI bug where Zcash signing could freeze if the response QR code could not be generated. The changes introduce new Rust code to validate, parse, and sign batches of Zcash PCZT messages, plus new C UI screens to review and approve those batches. It also tightens error handling so that QR/USB generation failures are reported instead of leaving the device stuck. There is no direct evidence in the commit of an exploitable vulnerability, but the size and complexity of the new signing path means it should be reviewed carefully.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
entropy or randomnesscryptography-sensitive path
AI analysis · Low 35/100
This commit updates the user interface and internal checks for generating wallet seed phrases using dice rolls as a source of randomness. It enforces a minimum number of dice rolls depending on the desired seed strength: at least 50 rolls for 12-word (BIP39) or 20-word (SLIP39) seeds, and at least 100 rolls for 24-word (BIP39) or 33-word (SLIP39) seeds. Previously, the firmware only required 50 rolls regardless of seed length. The change is a security hardening measure to ensure that higher-strength seeds receive enough physical entropy, but it is a partial patch because the dice-roll input itself is not fully validated and the entropy extraction method is not visible in this diff.
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet pathparser or protocol path
AI analysis · Informational 15/100
This commit removes support for the 'Leap' wallet from the Keystone 3 firmware. It deletes the Leap wallet icon and asset, removes Leap-related text strings from Chinese, Japanese, and Korean font files, and updates the Rust dependency versions for the UR (Uniform Resources) parsing libraries used by the firmware. There is no indication of a security fix or vulnerability being patched.
Security candidatefeat(zcash): enable Zcash for SLIP 39 wallets with 33-word sharesby John Boyd · 2729141b · Apr 25, 2026 · 9 filesMessage 100 · StrongLow 29Details
Commit message · John Boyd
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>
100/100 · StrongMessage clarity
✓ 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
Why it was queued
explicit security languageentropy or randomnesssecret or key materialcryptography-sensitive pathsigning or wallet path
AI analysis · Low 29/100
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.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Low 35/100
This commit adds a new way for the Keystone hardware wallet to handle Tron (TRX) transactions sent as plain JSON sign requests, alongside the older Keystone-specific format. It introduces code that parses JSON, derives the sender address from the seed, checks it matches the 'from' field, and signs. The change is a feature addition, not a clearly labeled security fix. There are no obvious catastrophic bugs in the diff, but the new path adds complexity and a few places where input validation could be tightened.
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 26/100
This commit adds support for the Core Wallet in the Keystone 3 firmware. It mainly expands the number of Avalanche X/P-chain derivation paths from one to ten, updates the Rust SDK dependency, and changes how signing requests extract derivation paths and fingerprints. There is no explicit security fix or vulnerability disclosure in the commit message or diff. The changes are feature-oriented, but they touch sensitive code paths (transaction signing, HD path handling, and master-fingerprint checks), so they warrant careful review.
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 27/100
This commit adds support for the Core Wallet in the Keystone 3 firmware. It mainly expands the number of Avalanche (AVAX) X/P-chain account paths from one to ten, updates the Rust signing code to accept multiple derivation paths from the wallet instead of hardcoding a single one, and bumps the Rust UR registry library version. There is no explicit security fix or vulnerability patch visible in the diff; it reads as a feature/integration change.
Security candidateRemove the redundant code and comments related to TONby ww3512687 · abe8f0b7 · Apr 2, 2026 · 42 filesMessage 50 · ThinInformational 15Details
Commit message · ww3512687
Remove the redundant code and comments related to TON
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathparser or protocol path
AI analysis · Informational 15/100
This commit removes the special 'TON-only wallet' feature from the Keystone 3 firmware. It deletes code that let users create or import a TON-native 24-word seed phrase separate from the normal BIP39 wallet. After this change, TON is handled like other coins using a standard BIP39-derived key. There is no security bug being fixed here; it is a feature-removal cleanup.
Security candidatefeat: improve update security, support X Layer, and refresh Zodl wallet integrationby ww3512687 · c42b3eeb · Mar 30, 2026 · 82 filesMessage 67 · AdequateModerate 61Details
Commit message · ww3512687
feat: improve update security, support X Layer, and refresh Zodl wallet integration
67/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication pathparser or protocol path
AI analysis · Moderate 61/100
This firmware update for the Keystone 3 hardware wallet is billed as a security improvement. The most important change is a complete rewrite of the bootloader/firmware update path: it now uses SHA-256 and a signed/length-prefixed 'bootupdate' envelope instead of the older MD5-based verification, and removes an old USB mass-storage auto-reboot behavior that could let a plugged-in host trigger a reboot just by copying a file. The patch also hardens the USB stack against malformed endpoint numbers and oversized control transfers, enables on-chip flash encryption for the external QSPI flash, and improves I2C and random-number error handling. However, the diff is very large and mixes many unrelated features (new wallet icons, X Layer chain support, UI tweaks), so it is hard to be certain every corner case is fixed.
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathboot or update pathauthentication pathparser or protocol path
AI analysis · Moderate 57/100
This commit is a large firmware update for the Keystone 3 hardware wallet, primarily adding a bootloader update mechanism and hardening the USB stack. It introduces a way to overwrite the device's bootloader from a specially formatted region of flash memory, enables hardware-level flash encryption for production builds, and adds many bounds checks and validation routines to the USB device driver to prevent malformed host requests from crashing or confusing the device. The commit also removes the MD5 checksum code entirely and improves I2C and secure-element error handling.
Security candidatefix: zcash transparent is not signingby soralit · 18300002 · Mar 4, 2026 · 1 fileMessage 57 · ThinInformational 20Details
Commit message · soralit
fix: zcash transparent is not signing
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 20/100
This is a one-line build-configuration fix for the Keystone hardware wallet's Zcash signing code. Previously, transparent Zcash transaction signing was only enabled when the 'multi_coins' feature was active. The change also enables it when the 'cypherpunk' feature is active. Without this fix, Zcash transparent signing simply fails to compile or run in cypherpunk-only builds. There is no direct evidence in the commit of a security vulnerability; it appears to be a missing-feature bug.
Security candidatefix: zcash transparent is not signingby soralit · 635fc76e · Mar 4, 2026 · 1 fileMessage 57 · ThinLow 41Details
Commit message · soralit
fix: zcash transparent is not signing
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 41/100
This is a one-line build-configuration fix for the Keystone hardware wallet's Zcash transparent transaction signing. Previously, the code that signs the transparent (non-shielded) part of a Zcash PCZT transaction was only compiled when the 'multi_coins' feature was enabled. The change also enables that signing code when the 'cypherpunk' feature is enabled. Without this fix, a device built with only the 'cypherpunk' feature could produce an incomplete or invalid Zcash transaction signature, likely causing the transaction to be rejected by the network rather than stealing funds.
Security candidatesupport gero walletby ww3512687 · 254e8157 · Feb 25, 2026 · 12 filesMessage 28 · OpaqueInformational 15Details
Commit message · ww3512687
support gero wallet
28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100
This commit adds support for a new wallet partner called Gero Wallet in the Keystone 3 firmware. It is a routine feature addition: a new icon, a new entry in wallet lists, a tutorial link, and recognition of the wallet's origin name when handling key-derivation requests. There is no indication of a security fix or vulnerability.
Security candidatefix: keystone slip39 not support zcashby soralit · 2ff0478e · Jan 21, 2026 · 7 filesMessage 57 · ThinInformational 17Details
Commit message · soralit
fix: keystone slip39 not support zcash
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 17/100
This commit fixes a product limitation: Keystone 3 hardware wallets using a SLIP39-style recovery phrase could not connect to the Keystone mobile app for Zcash. The patch removes Zcash from the list of coins shared when a SLIP39 wallet is used, and it makes the underlying Rust code accept a missing Zcash seed fingerprint. There is no direct evidence this is a security vulnerability; it appears to be a compatibility/functional bug fix.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
access controlcryptography-sensitive path
AI analysis · Low 32/100
This commit fixes a build-configuration bug that could prevent creating or saving public key information when using a SLIP39 passphrase. The old code accidentally skipped the normal key-derivation path for certain crypto types in non-Bitcoin-only builds, which could leave required public key data unset and cause account setup to fail. The patch restructures the conditional compilation so each build variant (Cypherpunk, Web3, Bitcoin-only) follows the correct derivation branch.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 24/100
This commit is a large refactor of how the Keystone 3 firmware handles Zcash transactions. It splits the code into two build flavors: a 'multi-coins' build that supports only transparent (public) Zcash addresses using a normal xpub, and a 'cypherpunk' build that also supports shielded Orchard addresses using a unified full viewing key (UFVK). The change reorganizes feature flags, renames functions, and adjusts how Zcash account data is cached when wallets are created or unlocked. There is no explicit security fix or vulnerability disclosure in the commit message, and the diff itself is mostly structural. A few small items stand out as worth checking: a typo in a feature-guard macro (CYBERPUNK_VERSION vs CYPHERPUNK_VERSION) could leave the cypherpunk UI path disabled, and a debug printf was left in production key-handling code. On its own, this commit does not appear to introduce a clear exploitable vulnerability, but it is a partial refactor and the new multi-coins transparent-only path is simpler and exposes less shielded-key material than before.
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100
This commit adds support for the Zcash (ZEC) cryptocurrency to the Keystone 3 hardware wallet firmware. It introduces address generation, derivation path handling, UI elements, and wallet connection data for Zcash. There is no indication of a security fix or vulnerability being patched.
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body! Contains work-in-progress language! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 24/100
This commit is a work-in-progress 'temp commit' that refactors Zcash support in the Keystone 3 firmware. It moves Zcash UI code from a 'cypherpunk' build variant into the standard multi-coin build, splits a combined Zcash UFVK/seed-fingerprint getter into separate functions, adds a new Zcash seed fingerprint parameter to the Keystone Connect wallet QR/UR generation, and enables the 'zcash' feature in the Rust multi-coins build. There is no clear security fix or vulnerability being patched; it appears to be feature plumbing and code reorganisation.
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100
This commit adds support for Litecoin (LTC) native SegWit addresses (the 'ltc1...' format) to the Keystone 3 hardware wallet firmware. It is a feature addition: it lets users generate and display a new type of LTC address and export the corresponding public key. There is no indication in the commit that it fixes a security bug or vulnerability.