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.
58/100 average clarity
68Strong · 80–100
321Adequate · 60–79
302Thin · 40–59
88Opaque · 0–39
26security candidates with opaque commit messaging
This commit adds a new 'session reset' command to the BitBox02 hardware wallet's USB protocol. It lets the host computer cleanly reset the device connection if a previous operation was interrupted, instead of leaving the device stuck mid-t…
New USB control command added to host-wallet protocolReset path cancels async task, resets Noise state, unlocks USB processing, and clears output queueU2F UI ownership check prevents reset from interrupting an active U2F workflow
This is a routine Python code refactor. It moves an existing 'reset session' command from one internal class to another and adds a version check so older firmware simply skips it. There is no security bug being fixed here; it is purely org…
This commit fixes a bug in the BitBox02 hardware wallet where unplugging the USB cable at the wrong moment could leave a half-finished operation running. If the device stayed powered and a new host reconnected, the new host's first message…
Fixes cross-session state confusion on USB reconnectAdds explicit session reset command to cancel stale async workflowsResets Noise cryptographic session to prevent old-key encrypted responses
This commit adds a new recovery-word entry screen for the upcoming BitBox03 hardware wallet. It is a large feature patch: it introduces a dedicated BIP39 wordlist keyboard, a new recovery-words review screen, and changes how the device han…
New UI workflow distinguishes 'back' from 'cancel' during seed restoration, reducing accidental aborts.Cancel actions still require an explicit confirmation prompt before the restore is abandoned.Wordlist keyboard disables keys that cannot lead to a valid BIP39 word, preventing invalid-word compositions at the widget level.
This commit improves the BitBox02 hardware wallet's Ethereum token-approval screen. When a user signs an ERC20 token transfer, the device now also shows the token's smart-contract address if the token symbol is ambiguous (the same ticker, …
UI hardening: adds contract-address confirmation for ERC20 tokens with ambiguous or unknown symbolsRegistry validation: rejects payment requests for tokens not present in the firmware's ERC20 registryBuild-time ambiguity detection: generates a sorted list of units shared by multiple contracts
This commit relaxes a version check in the BitBox02 bootloader upgrade code. Previously, the firmware installer required that a stage0 bootloader descriptor's version exactly matched the currently expected image version. Now it accepts des…
Strict version equality check removed from bootloader descriptor parsingChange located in bootloader upgrade / firmware installer verification pathNo bounds, length, or pointer validation changes observed
This commit hardens the BitBox02 firmware so it stops trusting that incoming text strings are valid UTF-8 or plain ASCII. It replaces risky C string copies with length-checked, UTF-8-aware helpers, rejects non-ASCII characters at UI bounda…
Replaced snprintf-based string copies with length-bounded UTF-8-aware copiesAdded explicit length parameter to memory_set_device_name and reject embedded/invalid nullsAdded printable-ASCII enforcement at Rust UI boundary before C rendering
This commit fixes a coding guideline violation in the BitBox02 factory setup code. A 32-byte buffer that receives output from a Rust function was not initialized to zeroes before use. The accompanying documentation now explicitly requires …
Uninitialized stack buffer used as output buffer for Rust/C FFI callDefensive zero-initialization added to prevent use of stale stack data on error or partial write pathsProject coding guidelines updated to mandate zero-initialization for rust_util_bytes_mut buffers
This commit fixes a display behavior issue during startup of the BitBox02 hardware wallet. Previously, when the device turned on, the screen's reset pin was left in a state that could allow leftover images or text from an earlier session t…
Information disclosure via residual display content during bootOLED reset pin sequencing hardeningDefense against stale/misleading UI state before verified firmware initializes display
This commit trims the BitBox02 factory-setup firmware image by switching stored root attestation public keys from 65-byte uncompressed to 33-byte compressed secp256k1 keys, and by using a smaller static secp256k1 verification context inste…
Change in trusted public-key table format and derivation logicSwitch to static/no-precomp secp256k1 verification contextAddition of secp256k1 self-test at boot
This commit adds extra safety checks in the BitBox02 Python library for ECDSA signatures used in Bitcoin and Ethereum signing. It now validates that signatures have the correct length, use valid numbers, and use the safer low-S form. It al…
Defensive validation added for ECDSA signature format and low-S encodingRecovery ID range validation added for recoverable signaturesAnti-Klepto verification now rejects malformed/malleable signatures before nonce verification
This commit tweaks how the BitBox02 hardware wallet displays a payment-request memo on screen. It changes the label from 'Memo from\n\nMerchant' to 'Memo from: Merchant' and makes the screen scrollable so long merchant names don't get cut …
No security-relevant signal in commit message or diffUI/UX change only: text formatting and scrollabilityNo memory-safety, cryptographic, or authorization changes observed
This commit is a hardening and size-optimization change for the BitBox02 factory-setup firmware. It stores the 110 built-in root attestation public keys in compressed (33-byte) form instead of uncompressed (65-byte) form, and marks the tab…
Data table moved from writable RAM to read-only flash (const)Public-key table size reduced from 65 to 33 bytes per keyNew Rust helper normalizes compressed/uncompressed keys before hashing
This commit swaps one internal cryptography library for another when computing HMAC-SHA256 in the factory-setup code. The goal is to reduce firmware size by reusing an existing SHA-256 implementation, not to fix a security bug. New test ve…
Cryptographic implementation change in HMAC-SHA256 helperUse of `.unwrap()` on `new_from_slice`, which can panic if key length is unsupported; for HMAC-SHA256 the RustCrypto `new_from_slice` accepts any key length, so this is effectively safe but still a panic pathNo removal of existing call sites; normal firmware still uses `bitcoin_hashes` for other callers
This commit changes how the BitBox02 factory-setup program checks digital signatures. It switches from a dynamically created crypto context to a built-in, read-only verification context, which makes the factory-setup firmware about 35 KB s…
Cryptographic context change in verification pathRemoval of dynamic secp256k1 context creation in factory setupExplicit addition of secp256k1_selftest() to compensate for skipped implicit self-test
This commit is a performance optimization in the BitBox02 factory setup process. It changes how the device picks which trusted root public key to use when verifying an attestation certificate. Previously, the device tried verifying the sig…
No removal of cryptographic verification: rust_secp256k1_verify is still performed after key selection.No change to accepted inputs: any certificate accepted before is still accepted, and any rejected before is still rejected.Identifier comparison uses MEMEQ over the full 32-byte SHA-256 digest, so collision resistance is standard.
This commit is a large feature merge that adds initial support for a new hardware variant, the BitBox03 (STM32U5-based development kit). It introduces new bootloader and firmware binaries, board support crates, vendored Rust dependencies (…
This commit adds a progress bar that appears while the BitBox02 is loading large Ethereum transaction data from a connected computer. It is a user-experience improvement, not a security fix. The code only changes how progress is displayed …
This commit adds a configuration file for OpenOCD, a debugging tool used during hardware development and testing. It tells the debugger how to connect to an STM32U5 test board using a J-Link adapter. There is no change to firmware code, no…
This commit only adds explanatory comments to Python type-stub files describing what happens when an optional anti-klepto host nonce commitment is left out. It does not change any firmware logic, cryptographic code, or default behavior. Th…
Documentation-only change in generated Python stubsMentions anti-klepto / S2C nonce commitment fallback behaviorNo logic, default, or cryptographic implementation change
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Security candidateBtc: Add btc address derivation to coin purchase memo in payment requestby Cedric Wiese · 9eb4fd04 · Mar 23, 2026 · 5 filesMessage 50 · ThinLow 28Details
Commit message · Cedric Wiese
Btc: Add btc address derivation to coin purchase memo in payment request
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Low 28/100
This commit adds support for deriving and verifying Bitcoin-family destination addresses inside payment-request memos used for coin swaps. It extends the existing Ethereum-only address-derivation feature to also cover BTC/LTC, and validates that the claimed swap destination address actually matches the derived one. There is no direct evidence this fixes an active security bug; it appears to be a feature addition that also hardens validation.
Security candidateda14531: switch C to Rust API and clean upby Marko Bencun · 5e11f180 · Mar 22, 2026 · 9 filesMessage 45 · ThinInformational 11Details
Commit message · Marko Bencun
da14531: switch C to Rust API and clean up
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 11/100
This commit is a routine code cleanup: it removes several C functions that control the Bluetooth chip and replaces their use with equivalent Rust functions. There is no indication in the commit itself that this fixes a security bug or introduces a vulnerability. It is a refactoring change.
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 15/100
This is a routine code cleanup commit that reorganizes how two internal Rust software components connect to each other. It removes a circular dependency where a higher-level crate called 'bitbox02-rust' depended on a lower-level crate called 'bitbox02', and vice versa. The change moves a small piece of noise-cryptography-related code into the lower-level crate and adjusts build configuration files accordingly. There is no indication this fixes a security vulnerability or changes user-visible behavior.
Py: avoid brittle Bootloader import in editable installs
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
update trust
AI analysis · Informational 15/100
This is a minor Python import cleanup in a developer/test script. It changes how one internal class is imported so that the script works reliably when installed in 'editable' mode. There is no security issue here.
Security candidatesecurechip: decouple from C bitbox02 memory implby Marko Bencun · e1cea0c5 · Mar 16, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun
securechip: decouple from C bitbox02 memory impl
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit is a routine internal refactoring: it moves the lookup of which secure chip type (ATECC or Optiga) is present from an older C memory module to a newer Rust memory module. The actual chip-detection logic and behavior do not change; only which internal API is called. There is no indication this fixes or introduces a security vulnerability.
Security candidateoptiga+atecc: decouple from memory.hby Marko Bencun · 627f089a · Mar 16, 2026 · 16 filesMessage 60 · AdequateInformational 17Details
Commit message · Marko Bencun
optiga+atecc: decouple from memory.h
So these C modules can be used in BB03 without relying on BB02 memory functions.
60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 17/100
This commit is a software architecture cleanup: it moves some type definitions and helper functions so that secure-chip code (ATECC/Optiga) no longer depends directly on the BitBox02-specific memory module. The goal stated by the developer is to make those modules reusable in a future BitBox03. There is no direct evidence in the commit that it fixes a security vulnerability, changes cryptographic behavior, or introduces a bug.
Pin the Mattermost action in report-artifacts to an immutable commit SHA instead of the mutable master branch.
Also set explicit job-level permissions to contents: read to reduce default GITHUB_TOKEN privileges for this secret-using job.
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
access controlcredential or privilege statedocumentation-only discount
AI analysis · Low 30/100
This commit hardens the project's automated CI workflow in two ways: it pins a third-party Mattermost notification action to a specific, unchangeable version (instead of a moving 'master' branch), and it restricts the job's GitHub token permissions to read-only access to repository contents. These are defensive security improvements that reduce supply-chain and privilege risks, but the commit itself does not fix an active vulnerability.
Security candidatereplace asf4 C ringbuffer with Rust ByteQueueby Marko Bencun · 4c69f5c5 · Mar 2, 2026 · 26 filesMessage 45 · ThinLow 38Details
Commit message · Marko Bencun
replace asf4 C ringbuffer with Rust ByteQueue
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update pathparser or protocol path
AI analysis · Low 38/100
This commit swaps out an old C ringbuffer for a new Rust-based byte queue used to hold data sent to the Bluetooth chip. The change touches many files but is mostly a rewrite/refactor. It removes several explicit 'will it fit?' size checks before adding data to the queue, and it changes how callers pass the queue around. The Rust ByteQueue implementation itself is not shown in the diff, so we cannot verify whether it safely handles overflow, memory allocation failures, or concurrent access. The change is therefore a security-relevant refactor with some risk, but no proven vulnerability is visible in the supplied commit.
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 27/100
This commit adds a new 'coin purchase memo' feature to BitBox02 payment requests. It lets a payment request include details about a separate coin purchase (e.g., '0.25 ETH to address 0x...') and verifies that the listed Ethereum address really belongs to the wallet by deriving it from a provided keypath. The change is mostly a feature addition, but it introduces cross-currency validation logic and a TODO noting that the user-interface confirmation for this new memo type is not yet implemented.
Security candidatemove DEVICE_MAX_LEN/MULTISIG_NAME_MAX_LEN defs from C to Rustby Marko Bencun · 632db34f · Feb 20, 2026 · 15 filesMessage 85 · StrongInformational 15Details
Commit message · Marko Bencun
move DEVICE_MAX_LEN/MULTISIG_NAME_MAX_LEN defs from C to Rust
Removes `bitbox02::memory` references from bitbox02-rust and makes the consts available to all targets (bb02, bb03).
It's defined in the bitbox-hal crate because it is part of the trait set_device_name/smultisig_set_by_hash constraints that must be obeyed by all targets.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit is a routine code reorganization. It moves two constant definitions—how long device names and multisig account names can be—from the C code into Rust, so both the BitBox02 and future BitBox03 products can share the same values. The actual length limits (63 characters plus a null terminator for device names, 30 plus null for multisig names) are unchanged, and the commit adds compile-time checks to prove they stay the same. There is no security bug being fixed here.
With introduction of HAL, many of them are not needed anymore.
60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100
This commit only cleans up test code by removing unnecessary calls to a mock memory setup function. It does not change the actual firmware that runs on the BitBox02 device, so it has no security impact on users.
Security candidatekeystore: add KeystoreHal abstractionby Marko Bencun · 4fc335ee · Feb 19, 2026 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · Marko Bencun
keystore: add KeystoreHal abstraction
Introduce the KeystoreHal trait and KeystoreHalImpl adapter over HAL subsystems.
Route unlock_bip39 and transitive keystore internals through KeystoreHal and update workflow unlock to pass KeystoreHalImpl.
Reason: to not keep a mutable borrow of Hal Ui (part of Hal), which will be used in parallel during unlock_bip39(), which performs an UI animation in parallel.
This commit is a straightforward internal code refactor. It introduces a new 'KeystoreHal' adapter so that the keystore code can borrow only the hardware subsystems it needs (memory, random number generator, secure chip) instead of borrowing the entire HAL, which also contains the user interface. The stated reason is to allow a UI animation to run in parallel while the device unlocks. There is no change to security logic, cryptography, or user-facing behavior.
Security candidatesalt: hash_data takes Memoryby Marko Bencun · b608856e · Feb 19, 2026 · 3 filesMessage 58 · ThinInformational 12Details
Commit message · Marko Bencun
salt: hash_data takes Memory
Change salt::hash_data to take &mut impl Memory instead of &mut impl Hal.
Update keystore callsites to pass hal.memory().
Reason: to not keep a mutable borrow of Hal Ui (part of Hal), which will be used in parallel during unlock_bip39().
This is a small internal code cleanup in the BitBox02 firmware's Rust code. It changes a helper function so it borrows only the memory/storage part of the hardware abstraction layer, rather than the whole hardware abstraction layer. The commit message says this is preparation for a future change where the user interface part of the hardware layer will be used at the same time during wallet unlocking. There is no direct security fix here and no vulnerability is described.
Security candidatemove rust_keystore_get_u2f_seedby Marko Bencun · 51a87765 · Feb 19, 2026 · 2 filesMessage 25 · OpaqueInformational 15Details
Commit message · Marko Bencun
move rust_keystore_get_u2f_seed
25/100 · OpaqueMessage clarity
✓ Descriptive subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit simply moves a function from one Rust source file to another. The code itself is unchanged; only its location in the project changed. There is no indication of a security fix or vulnerability.
Security candidatemove rust_salt_hash_databy Marko Bencun · 51d18d53 · Feb 19, 2026 · 2 filesMessage 18 · OpaqueInformational 11Details
Commit message · Marko Bencun
move rust_salt_hash_data
18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 11/100
This commit simply moves a function called rust_salt_hash_data from one Rust source file to another. The function itself is unchanged; only its location and the associated test code are reorganized. There is no indication this fixes or introduces a security problem.
Security candidatemove rust_communication_mode_*by Marko Bencun · 08dd169d · Feb 19, 2026 · 5 filesMessage 25 · OpaqueInformational 15Details
Commit message · Marko Bencun
move rust_communication_mode_*
25/100 · OpaqueMessage clarity
✓ Descriptive subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit is a routine code reorganization. It moves two C-callable Rust functions related to Bluetooth Low Energy (BLE) communication mode from one Rust source file to another, and adjusts which Rust crate features enable the relevant code. There is no visible change to what the code does, only where it lives in the project. No security issue is evident from the diff.
Security candidatemove bitbox02-rust C API that needs HAL to bitbox-rust-c - main_loopby Marko Bencun · 43f64c11 · Feb 19, 2026 · 3 filesMessage 65 · AdequateInformational 15Details
Commit message · Marko Bencun
move bitbox02-rust C API that needs HAL to bitbox-rust-c - main_loop
Decouple bitbox02-rust from bitbox02 dep, starting with main_loop.
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit is a straightforward internal code reorganization. It moves the C-compatible entry point for the device's main loop from one Rust module to another, so that the core Rust logic no longer directly depends on the hardware abstraction layer. There is no change to user-facing behavior, no bug fix, and no security-related content.
Security candidatehal: move bitbox02 HAL impl to bitbox02 crateby Marko Bencun · 706e4f96 · Feb 18, 2026 · 16 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun
hal: move bitbox02 HAL impl to bitbox02 crate
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 15/100
This commit is a pure internal code reorganization: it moves the BitBox02 hardware-abstraction-layer implementation from one Rust crate (bitbox02-rust) into another (bitbox02). The actual logic, behavior, and security-sensitive operations such as memory access, random number generation, secure-chip handling, SD card access, and user-interface prompts remain identical; only the file paths and import paths change. There is no indication of a security fix or vulnerability being addressed.
Security candidatehal: move hal traits/types from bitbox02-rust to new bitbox-halby Marko Bencun · 2bd2c0e7 · Feb 18, 2026 · 14 filesMessage 73 · AdequateInformational 15Details
Commit message · Marko Bencun
hal: move hal traits/types from bitbox02-rust to new bitbox-hal
This will enable us to move the bitbox02 HAL implementation from bitbox02-rust to the bitbox02 crate, avoiding circular deps.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
seed or entropy path
AI analysis · Informational 15/100
This commit is a routine code reorganization: it moves hardware-abstraction trait definitions (interfaces describing how the firmware talks to the screen, secure chip, memory, SD card, random number generator and system reboot) from one internal Rust crate to a newly created crate called bitbox-hal. No behavior of the actual device code is changed; it is purely a dependency and file move to avoid circular imports in the future.
Security candidatebitbox02_rust/hal: add ui confirm/fontby Marko Bencun · 5bacbf78 · Feb 18, 2026 · 38 filesMessage 78 · AdequateInformational 15Details
Commit message · Marko Bencun
bitbox02_rust/hal: add ui confirm/font
Introduce hal::ui::ConfirmParams and hal::ui::Font so HAL interfaces no longer depend on workflow or bitbox02 ui confirmation types.
Adapt all callsites and add exhaustive conversion tests in hal::bitbox02::ui for font and confirm params mapping.
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100
This commit is a routine internal code cleanup. It moves the definitions of confirmation-screen parameters and fonts out of the workflow layer and into the hardware-abstraction (HAL) layer, then updates all call sites to use the new names. There is no change to user-facing behavior, no bug fix, and no security vulnerability being addressed.
Security candidatedocker: Add new targetby Niklas Dusenlund · 57410cb2 · Feb 16, 2026 · 423 filesMessage 63 · AdequateInformational 17Details
Commit message · Niklas Dusenlund
docker: Add new target
* Add target for cortex-m33 * Update rustc to latest (reduces firmware size by about 4k) * Update llvm to match rust * Vendor new deps due to new toolchain * Update Arm GNU toolchain to 15 (further reduces by about 2k)
63/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathauthentication pathparser or protocol path
AI analysis · Informational 17/100
This is a routine build-system and toolchain update for the BitBox02 firmware. It adds support for a new ARM processor target (Cortex-M33), upgrades the Rust compiler, LLVM, and the ARM GNU toolchain, and pulls in newer versions of some third-party Rust libraries. There is no direct evidence in the commit of a security vulnerability being fixed or introduced. The main risk is the usual one with large toolchain and dependency updates: a small chance that compiler, library, or behavior changes could introduce subtle bugs, but nothing in the diff points to an exploitable flaw.
eth: allow EIP-712 message signing without anti-klepto
Some defi apps require deterministic signatures, and anti-klepto is not compatible with, as a random host nonce is contributed.
The host could instead contribute a constant nonce, which would work, but the resulting signature would not be the same as a regular RFC6979 signature that does not use the additional data. This would not be optimal in terms of interopability with other wallets.
This commit allows the host to skip the host nonce, in which case we fall back to regular deterministic signatures.
78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarysecure hardware boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Low 31/100
This commit adds an optional mode for signing Ethereum typed messages (EIP-712) that skips the anti-klepto protocol, falling back to normal deterministic signatures. The change is intentional and documented: some DeFi apps need signatures that are reproducible by other wallets, which the anti-klepto protocol prevents. The feature is gated behind a new host flag and requires firmware v9.26.0 or newer. It does not remove anti-klepto from other signing paths such as Bitcoin or regular Ethereum transactions.
Security candidateworkflow/mnemonic: use HAL to get random numberby Marko Bencun · dcb05fbc · Feb 14, 2026 · 6 filesMessage 50 · ThinLow 29Details
Commit message · Marko Bencun
workflow/mnemonic: use HAL to get random number
50/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
entropy or randomness
AI analysis · Low 29/100
This commit refactors how random numbers are generated during the backup verification workflow. Previously, the code called a low-level device function directly; now it uses a hardware abstraction layer (HAL) interface so the same code can be tested with a mock random source. The change itself is a code-quality/testability improvement and does not appear to fix an active security vulnerability, but it touches the code that creates the random word-order challenges used to verify a user's seed backup.
Security candidatehal: add mcu_32_bytesby Marko Bencun · 6a66250f · Feb 14, 2026 · 3 filesMessage 28 · OpaqueInformational 15Details
Commit message · Marko Bencun
hal: add mcu_32_bytes
28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
AI analysis · Informational 15/100
This commit adds a new method called mcu_32_bytes to the random number generation abstraction layer in the BitBox02 firmware. It is a straightforward code addition that exposes an existing microcontroller random function through the Rust hardware abstraction layer, and adds corresponding test support. There is no indication this fixes or introduces a security vulnerability.
Security candidaterefactor hal with HalSubsystemsby Marko Bencun · 91c24b1c · Feb 14, 2026 · 9 filesMessage 63 · AdequateInformational 13Details
Commit message · Marko Bencun
refactor hal with HalSubsystems
Introduce HalSubsystems and make subsystems() the single required Hal implementation point.
This allows to mutably borrow multiple subsystems, which is needed to be able to access hal::random from hal::ui, to select random words in the mnemonic quiz.
This commit is a routine internal code cleanup in the BitBox02 firmware's Rust hardware-abstraction layer. It restructures how subsystems (screen UI, random number generator, SD card, secure chip, memory, system control) are accessed so that multiple subsystems can be borrowed at the same time. The stated reason is to let the user-interface code use the random generator for a mnemonic quiz feature. There is no security fix or vulnerability patch here.