KS
← All projectsKeystone

Keystone 3 firmware

Open-source device firmware for Keystone 3 hardware wallets.

BitcoinHardware walletsNormal
Repository coverage

536 commits in the local evidence base

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.

111security candidates287second-pass queue401AI analyses
119commits · 30 days
159commits · 60 days
276commits · 180 days
535commits · 365 days
Backfill bands
Aug 5 → Feb 6260 seen14 candidatesComplete
Feb 6 → Jun 6117 seen7 candidatesComplete
Jun 6 → Jul 639 seen4 candidatesComplete
Jul 6 → Aug 5115 seen4 candidatesComplete
Commit communication

Does the history explain itself?

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
204Thin · 40–59
233Opaque · 0–39
38security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Adam Tucker931148163
aaron30412148
ww351268717652165026
soralit1153470048
willwang15214025
John Boyd623088
Soralit321058
Qkin-Keystone26123036
qkin12111050
Greg Pfeil412071
Daira-Emma Hopwood211085
bianminyan45042032
Analysis record

Published AI watches

Last scanned 52 minutes ago

Moderate 59 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2260 from KeystoneHQ/replace-lvgl-rand

This commit replaces the on-screen keyboard shuffle and a word-list randomizer so they use the device's true random-number generator (TRNG) instead of LVGL's weaker pseudo-random function. The change is defensive: it removes a source of pr…

Replaced pseudo-random generator with hardware TRNG in security-sensitive shuffle operationsRemoved fixed-range modulo reduction bias source (`lv_rand(0, 2048) % n`)Changed include from LVGL UI library to device TRNG driver in utility code
230abd77by Soralit+8−32 files
No security note in commit
Moderate 59 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

replace lvgl rand

This commit swaps out the LVGL graphics library's pseudo-random number generator for the device's hardware true random number generator (TRNG) in two places: shuffling the on-screen numeric keypad and shuffling recovery-word lists. The old…

Replacement of non-cryptographic PRNG with hardware TRNG in security-sensitive shuffle routinesFisher-Yates shuffle of on-screen PIN keypad now uses TrngGetFisher-Yates shuffle of mnemonic word array now uses TrngGet
f7d64fb8by ww3512687+8−32 files
No security note in commit
Informational 19 AI analysisMessage 85 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(simulator): return password error on PIN mismatch in SimulatorLoadAccountSecret

This commit fixes a bug in the firmware's simulator (a software stand-in used for testing, not the real hardware wallet). When checking a stored account password/PIN, the simulator was accidentally returning 'success' even when the passwor…

Incorrect success return on authentication failure in simulator-only codeMismatch between simulator and real-device authentication error semanticsFunctional regression in multi-account PIN creation in simulator builds
6bec6930by soralit+4−11 file
No security note in commit
Low 49 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: address Solana review findings

This commit improves how Keystone 3's Solana app recognizes and displays certain transaction types. It adds support for the Solana Compute Budget program so those instructions are no longer labeled as 'Unknown,' and it adds parsing for Sol…

Previously unknown Compute Budget instructions are now parsed and labeled, reducing the chance a user approves a transaction they cannot understand.Off-chain signing messages are parsed with format and length validation, so wallet-connect-style sign-in messages are shown as text rather than misinterpreted as transactions.Unknown program accounts are surfaced explicitly in the UI instead of being hidden inside a generic 'Unknown' instruction list.
e1752174by soralit+343−5711 files
No security note in commit
Informational 12 AI analysisMessage 47 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: remove implementation plan

This commit only deletes a planning document from the repository's docs folder. No firmware code, build scripts, or cryptographic logic were changed. The deleted file described a previously completed security-hardening task about removing …

Deleted document references a prior security-hardening task (issue #2255 / PRNG fallback removal)No source-code or build-system changes in the diff
4620fe94by ww3512687+0−1041 file
No security note in commit
Moderate 64 AI analysisMessage 80 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: remove insecure PRNG fallback

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
17c78e30by ww3512687+108−693 files
Vendor flagged security relevance
Informational 10 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci

This commit is described as a routine CI (continuous integration) update with only one line changed in a release-related file. No code changes affecting wallet security, cryptography, or user funds are visible, and no security relevance is…

39cfff13by soralit+1−11 file
No security note in commit
Moderate 63 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular AI code review and fix

This is a large, routine code-quality and hardening patch for the Keystone 3 hardware wallet firmware. It tightens how transactions are parsed and displayed for several cryptocurrencies (Arweave, Avalanche, Bitcoin, Cosmos, Ethereum, Solan…

Arweave: duplicate required tags now rejected, malformed/trailing Avro data now rejectedArweave: DataItem tag count mismatch now rejectedAvalanche: trailing transaction bytes now rejected via parsed_size checks
e2c0ef31by soralit+3998−142676 files
No security note in commit
Informational 19 AI analysisMessage 85 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: guard Solana USB pubkey service for non-web3 builds

This commit fixes a firmware build problem, not a runtime security bug. The Solana USB public-key service was calling a function that only exists in the multi-coin 'web3' firmware variant, so the more limited 'cypherpunk' and 'bitcoin-only…

Build/link-time failure fix for conditional feature compilationExplicit error response added for unsupported coin type on non-web3 buildsNo input validation, memory safety, or cryptographic changes observed
9d04150dby John Boyd+10−01 file
No security note in commit
Low 33 AI analysisMessage 45 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

optimize sol derivation path allocation

This commit refactors how a Solana cryptocurrency derivation path is stored while parsing a USB request. Previously, the code dynamically allocated a small heap buffer inside a helper function and returned it to the caller, which then had …

Eliminates heap allocation for a fixed-size derivation-path bufferRemoves manual free responsibility from caller, reducing memory leak / use-after-free riskSwitches helper return type from pointer to bool to enforce explicit success/failure handling
9c3efd94by ww3512687+12−201 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: upgrade rust version

This commit upgrades the Rust compiler toolchain from one nightly version to a newer one and adjusts code to keep the project building and tests passing. It does not fix a known security bug or change how user funds are protected. Most of …

82a48133by soralit+511−1321 files
No security note in commit
Low 36 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

support sol cli

This commit adds Solana CLI support to the Keystone 3 hardware wallet firmware. It introduces a new USB command that lets a connected computer request public keys for specific Solana derivation paths, and it reworks how USB responses are s…

New USB command exposes public-key export for a specific coin type and derivation pathAdded NULL/empty checks before returning generated UR data and before using cached passwordMoved several UR result sends from synchronous to asynchronous (task-queue based) dispatch
77833f49by ww3512687+282−2016 files
No security note in commit
Informational 17 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Preserve Zcash account firmware version (#37)

This commit is a small, non-security code change. It updates a Zcash wallet test to verify that the firmware version string is preserved when account data is encoded and decoded, and it switches two Rust library dependencies from the publi…

Dependency source changed from crates.io to a third-party Git repository (valargroup/keystone-sdk-rust)No mention of vulnerability, CVE, security fix, or researcher attribution in commit message or diffChange is limited to a unit test assertion and dependency source pinning
20d7ea2dby Adam+11−73 files
No security note in commit
Low 28 AI analysisMessage 45 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Preserve PCZT v1 response encoding

This commit changes how the Keystone hardware wallet handles Zcash PCZT (partially-created transaction) files. Previously, after checking and signing a transaction, the device always returned the result in the newer v2 format. Now it remem…

Behavioral change in serialization format selectionNew parsing helper reads wire version from raw bytesTest coverage added for v1 preservation
acf3611aby Adam Tucker+136−245 files
No security note in commit
Informational 12 AI analysisMessage 67 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

test(zcash): harden v1 PCZT end-to-end coverage

This commit only adds and updates test code for the Zcash PCZT (Partially-Created Zcash Transaction) feature. It hardens end-to-end test coverage for version 1 PCZTs that include both transparent and Orchard shielded inputs/outputs. There …

No production code changesTest-only commitAdds defensive assertions for signature finalization behavior
2c54cb53by Adam Tucker+177−363 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

refactor(zcash): use shielded pool display directly

This commit is a minor code cleanup in the Zcash shielded-transaction handling code. It removes temporary variables named `pool_label` and instead uses the existing `pool` value directly when building error messages. There is no change to …

9074e087by Adam Tucker+22−334 files
No security note in commit
Moderate 60 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(zcash): validate transparent PCZT formats

This commit tightens validation for Zcash transaction formats (PCZT) on the Keystone 3 hardware wallet. Previously, the firmware only checked that a transaction was version 6 or higher and not v6 specifically, plus that it had no Sapling o…

Input-validation hardening for transaction parsing/signingExplicit allow-listing of supported (tx_version, version_group_id, orchard_revision) tuplesNew negative test for v6 + Nu6 branch rejection
0d02c355by Adam Tucker+80−22 files
No security note in commit
Low 37 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(zcash): allow transparent-only V6 PCZTs

This commit changes how Keystone's Zcash transaction handling treats version 6 (V6) PCZTs. Previously, all V6 Zcash transactions were rejected in the non-cypherpunk (transparent-only) code path. The patch now allows V6 transactions as long…

Guard relaxation: V6 PCZTs no longer blanket-rejected in transparent-only buildsBoundary enforcement remains for shielded Sapling/Orchard/Ironwood contentUnknown transaction versions still rejected
ba4ecf28by Adam Tucker+127−954 files
No security note in commit
Moderate 59 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(zcash): validate empty shielded bundle balances

This commit adds a validation check for Zcash PCZT (Partially Created Zcash Transaction) parsing in the Keystone hardware wallet firmware. It ensures that if an Orchard or Ironwood shielded bundle contains no actions, its declared value su…

Input validation added for empty shielded bundle value_sumPotential balance-consistency issue in Zcash PCZT handlingTest case demonstrates malformed PCZT rejection
5e05a21aby Adam Tucker+99−01 file
No security note in commit
Informational 10 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci

This commit is described as a routine CI (Continuous Integration) update with only one line changed in one file. No diff content is available, and there are no verified references suggesting any security relevance. It appears to be a munda…

7f2c4423by soralit+1−11 file
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

AI review queuedUpdate versionby bianminyan · 1dc73381 · Dec 22, 2025 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · bianminyan

Update version

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only changes a single software version number (the build counter from 0 to 2) in a header file. There is no functional code change, no bug fix, and no security-related content visible in the diff.

AI review queuedadd nabox walletby ww3512687 · bb214ff0 · Dec 18, 2025 · 10 filesMessage 28 · OpaqueInformational 15Details
Commit message · ww3512687

add nabox wallet

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit adds support for a new software wallet called Nabox to the Keystone 3 hardware wallet firmware. It is a routine feature addition: new icon images, generated image source files, and registration of the wallet in UI lists. There is no indication of a security fix or vulnerability.

AI review queuedrefactor connect wallet uiby ww3512687 · 893d86fd · Dec 18, 2025 · 107 filesMessage 35 · OpaqueInformational 15Details
Commit message · ww3512687

refactor connect wallet ui

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a user-interface cleanup for the 'connect wallet' screen. It removes many unused wallet-list image files and their generated C code, updates one remaining icon (Backpack) to a larger size, and refreshes an image-hash file. There is no visible change to security-sensitive code, cryptography, transaction handling, or communication logic.

AI review queuedfix connect walletby ww3512687 · b7fddd97 · Dec 12, 2025 · 1 fileMessage 28 · OpaqueLow 47Details
Commit message · ww3512687

fix connect wallet

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Low 47/100

This commit fixes a single-character bug in the hardware wallet's 'connect wallet' screen. The original code used a single equals sign (=) instead of a double equals sign (==), which in C means it assigned a value rather than checking it. As a result, the code always treated the wallet as a Bitcoin wallet and ran the Bitcoin-specific tutorial branch, regardless of which wallet the user actually selected. The fix changes it to a proper comparison (==).

AI review queuedfix ton crashby ww3512687 · 3364d9be · Dec 11, 2025 · 1 fileMessage 28 · OpaqueModerate 59Details
Commit message · ww3512687

fix ton crash

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: broader security terminologysecond-pass: opaque commit message
AI analysis · Moderate 59/100

This commit fixes a crash in the TON (The Open Network) signing code for the Keystone 3 hardware wallet. Previously, if a user had not set a custom derivation path, the code would blindly copy the seed bytes into a fixed 32-byte secret key buffer. If the seed was shorter than 32 bytes, this would read past the end of the seed data, causing a crash or undefined behavior. The fix checks the seed length first and returns a controlled error if it is too short.

AI review queuedOptimize the link between the BTC wallet and the wallet.by ww3512687 · 62a75868 · Dec 10, 2025 · 11 filesMessage 50 · ThinInformational 15Details
Commit message · ww3512687

Optimize the link between the BTC wallet and the wallet.

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine user-interface update for the Keystone 3 hardware wallet firmware. It swaps in a larger Zeus wallet icon, adds a new Bitcoin wallet-list icon, updates the corresponding image asset files, refreshes an image-hash file, and adjusts a few UI labels and status-bar resources. There is no change to cryptographic code, transaction signing, key handling, parsing of untrusted data, or any other security-sensitive logic.

AI review queuedmodify 2.3.0 changelogby bianminyan · f73e351f · Dec 2, 2025 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · bianminyan

modify 2.3.0 changelog

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only changes one line in a Chinese-language changelog, correcting the heading 'Bug Fixes' to 'Bug 修复' (Chinese for 'Bug Fixes'). No code, configuration, or documentation with security implications was modified.

AI review queuedmodify 2.3.0 changelogby bianminyan · 4cbe1211 · Dec 1, 2025 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · bianminyan

modify 2.3.0 changelog

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only edits the formatting and wording of a product changelog. It adds blank lines and changes headings like 'BTC-ONLY' to 'BTC Only' and 'CYPHERPUNK' to 'Cypherpunk'. No code, configuration, or security-related content was changed.

Lower-priorityfix squads multisig create uiby ww3512687 · 1f29e235 · Nov 28, 2025 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · ww3512687

fix squads multisig create ui

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityfix squads multisig create uiby ww3512687 · c2f4d445 · Nov 28, 2025 · 6 filesMessage 45 · ThinTriage 0Details
Commit message · ww3512687

fix squads multisig create ui

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedadd 2.3.0 cahngelogby bianminyan · 67d1bf9e · Nov 28, 2025 · 3 filesMessage 38 · OpaqueInformational 15Details
Commit message · bianminyan

add 2.3.0 cahngelog

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only adds a new version entry to the changelog files and bumps the firmware version number from 2.2.20 to 2.3.0. It does not change any executable code, cryptographic logic, or security-sensitive behavior. There is no security issue in this commit itself.

AI review queuedchore: optimize test and lintsby soralit · 33cf6275 · Nov 28, 2025 · 47 filesMessage 67 · AdequateInformational 15Details
Commit message · soralit

chore: optimize test and lints

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine maintenance change titled 'chore: optimize test and lints'. It updates code-coverage thresholds in CI workflows, adds Rust lint configuration for a nightly coverage feature, removes an obsolete nightly Rust feature flag, and adjusts some test data and test cases. There is no indication of a security fix or vulnerability being addressed.

AI review queuedconnect wallet crashby ww3512687 · 39fb015c · Nov 28, 2025 · 1 fileMessage 28 · OpaqueLow 36Details
Commit message · ww3512687

connect wallet crash

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: broader security terminologysecond-pass: opaque commit message
AI analysis · Low 36/100

This commit fixes a software crash in the wallet connection screen of the Keystone 3 hardware wallet firmware. The code now checks whether a selected coin/wallet type was found before continuing. Without this check, the device could crash when connecting to a wallet it does not recognize, likely causing a denial of service rather than theft of funds.

AI review queuedfmtby ww3512687 · caaca11d · Nov 27, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

fmt

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only reformats two lines of Rust source code. It does not change what the code does, only how it is visually laid out. There is no security relevance.

AI review queuedfix btc sign messageby ww3512687 · c5f8986c · Nov 27, 2025 · 13 filesMessage 28 · OpaqueLow 27Details
Commit message · ww3512687

fix btc sign message

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Low 27/100

This commit fixes how the Keystone hardware wallet handles Bitcoin 'sign message' QR codes. Previously, many malformed or unsupported message formats were reported as 'unsupported transaction,' which could mislead users. The change introduces a clearer 'Invalid Message' error and adds a new Japanese font glyph. It is primarily a user-experience and error-handling improvement, not a fix for a known exploit.

AI review queuedfix multisigby ww3512687 · 737d1a7c · Nov 27, 2025 · 1 fileMessage 18 · OpaqueLow 42Details
Commit message · ww3512687

fix multisig

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 42/100

This commit fixes a Bitcoin multisig signing flow in the Keystone 3 hardware wallet firmware. Previously, when a transaction did not need a signature, the code exported the PSBT but did not properly handle the result object; when it did need a signature, it signed but skipped updating the UI status and freeing the result. The patch unifies both branches so the result is always processed and cleaned up. It also wraps some legacy Keystone transaction code in a WEB3_VERSION compile guard, likely preventing it from running on Bitcoin-only firmware builds where it could behave incorrectly.

AI review queuedbluewallet add taprootby ww3512687 · fc22294d · Nov 27, 2025 · 9 filesMessage 28 · OpaqueInformational 20Details
Commit message · ww3512687

bluewallet add taproot

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 20/100

This commit refactors how the Keystone hardware wallet exports Bitcoin account data (extended public keys) when pairing with BlueWallet and other apps. Previously BlueWallet received only three key types (Native SegWit, SegWit, Legacy). Now it uses the same function as Sparrow/Zeus/UniSat, which also includes the Taproot key type. This is a feature addition, not a vulnerability fix, and does not change how secrets are handled.

Lower-priorityfix sign message utf-8 string checkby ww3512687 · 8765abe6 · Nov 27, 2025 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · ww3512687

fix sign message utf-8 string check

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedfix zcash unwrapby ww3512687 · 7cee191e · Nov 27, 2025 · 1 fileMessage 28 · OpaqueModerate 57Details
Commit message · ww3512687

fix zcash unwrap

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Moderate 57/100

This commit changes two Zcash-related functions in the Keystone hardware wallet firmware so that the wallet seed is no longer treated as a mutable buffer and is no longer explicitly wiped (zeroized) from memory after use. The title says 'fix zcash unwrap,' suggesting the change was made to resolve a Rust panic caused by calling .unwrap() or by a mutability mismatch. Removing zeroize reduces memory cleanup of the secret seed, which could leave sensitive material in memory longer than intended. However, the diff alone does not prove an exploitable vulnerability; it may simply trade one bug for another.

AI review queuedfix buildby ww3512687 · 32fdbb2c · Nov 27, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

fix build

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit adds a single missing function declaration (PreparePublicKeys) in a Bitcoin UI source file. It is a straightforward build fix with no visible security relevance.

AI review queuedfmtby ww3512687 · f88d5173 · Nov 26, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

fmt

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is purely a code-formatting change. It only rewrites two test assertions in a Rust file so they fit on single lines instead of being split across multiple lines. No logic, behavior, or security checks were changed.

Security candidateadd unit testby ww3512687 · 078a4d1c · Nov 26, 2025 · 5 filesMessage 38 · OpaqueInformational 15Details
Commit message · ww3512687

add unit test

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only adds and updates unit tests. It does not change any production code. The tests verify that all-zero and all-0xFF seeds are rejected as invalid by several cryptographic modules. There is no security fix or vulnerability introduced here.

Security candidateadd trivial seed checkby ww3512687 · 20a7a901 · Nov 26, 2025 · 7 filesMessage 28 · OpaqueModerate 61Details
Commit message · ww3512687

add trivial seed check

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Moderate 61/100

This firmware update adds a safety check that refuses to use cryptocurrency seeds made entirely of 0x00 or 0xFF bytes across Cardano, Bitcoin-style (secp256k1), Ed25519, RSA, and Zcash key operations. Such 'trivial' seeds produce predictable or weak private keys that attackers could guess. The patch also moves a memory-clearing call in Ethereum batch signing so the seed is wiped only after all transactions are processed, rather than after the first one. The commit message does not call this a security fix, but the change clearly reduces a key-derivation risk.

Security candidatepsbt crashby ww3512687 · 7c1d1b25 · Nov 26, 2025 · 1 fileMessage 0 · OpaqueModerate 59Details
Commit message · ww3512687

psbt crash

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
signing boundary
AI analysis · Moderate 59/100

This commit fixes a bug in the Bitcoin PSBT (Partially Signed Bitcoin Transaction) handling code of the Keystone 3 hardware wallet firmware. The bug involved passing the wrong size for the master fingerprint (mfp) buffer to several Rust/C FFI functions. In C, `sizeof(mfp)` where `mfp` is a function parameter of type `uint8_t*` gives the size of a pointer (typically 4 or 8 bytes), not the actual 4-byte array length. The fix adds an explicit `mfpLen` parameter so the correct length (4 bytes) is passed. The commit title 'psbt crash' suggests this mismatch caused crashes when parsing or signing PSBTs. A separate cleanup refactors how public key arrays are prepared to avoid stack-use-after-scope issues.

Security candidatefix passphrase ada pathby ww3512687 · 09077fc6 · Nov 24, 2025 · 1 fileMessage 28 · OpaqueLow 44Details
Commit message · ww3512687

fix passphrase ada path

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
access control
AI analysis · Low 44/100

This commit fixes how the Keystone hardware wallet selects the Cardano (ADA) key derivation algorithm when a passphrase is used. Previously, the selected derivation style was stored in a global variable that was not reset between wallet sessions. If a user switched between a standard wallet and a passphrase-protected wallet, the device could continue using the wrong derivation path, producing Cardano public keys and addresses that do not match the user's expected wallet. This could make funds appear missing or, in rare cases, lead to sending or receiving to an unintended address family. The patch resets the derivation choice when memory is freed and re-initializes it from the current account type when the key-derivation screen is opened.