BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

779 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.

231security candidates161second-pass queue719AI analyses
65commits · 30 days
136commits · 60 days
308commits · 180 days
692commits · 365 days
Backfill bands
Aug 5 → Feb 6335 seen28 candidatesComplete
Feb 6 → Jun 6265 seen19 candidatesComplete
Jun 6 → Jul 619 seen5 candidatesComplete
Jul 6 → Aug 526 seen3 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.

58/100 average clarity
68Strong · 80–100
321Adequate · 60–79
302Thin · 40–59
88Opaque · 0–39
26security 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.
Marko Bencun450131422357
benma's agent11240106164
Niklas Dusenlund15139130057
cedwies12512063
Tomas Vrba10410071
Cedric Wiese12312049
Jad14210060
Sebastian Sutter222050
thisconnect212072
benma212074
Yasser Aziza111070
Niklas111035
Analysis record

Published AI watches

Last scanned 52 minutes ago

Low 34 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/hww-start-session'

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
04302490by Marko Bencun+485−1713 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

py: make session reset an API setup helper

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…

50a9e76aby benma's agent+28−163 files
No security note in commit
Moderate 62 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

hww: reset sessions on host reconnect

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
6679936fby benma's agent+473−1712 files
Vendor flagged security relevance
Informational 17 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2073/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

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.
6b04e006by Marko Bencun+7010−24621 files
No security note in commit
Low 47 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/show-erc20-contract'

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
410df562by Marko Bencun+203−123 files
No security note in commit
Low 26 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/bootloader-descriptor-compat'

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
6dccfd24by Marko Bencun+19−72 files
No security note in commit
Moderate 53 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb02-utf8-safe'

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
0bbdf6f0by Niklas Dusenlund+338−9625 files
No security note in commit
Low 41 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'benma/ub'

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
8a6fd97bby Marko Bencun+3−12 files
No security note in commit
Low 35 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

oled: hold display in reset during startup

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
cdb27835by Niklas Dusenlund+2−11 file
Vendor flagged security relevance
Informational 18 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/factorysetup-trim-unused'

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
554a0558by Marko Bencun+457−5647 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/validate-py-antiklepto-signatures'

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
0d1a7997by Marko Bencun+152−65 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/scroll-payment-request-memo-name'

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
be375664by Marko Bencun+115−66 files
No security note in commit
Informational 19 AI analysisMessage 91 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: compress constant root keys

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
e2273c1fby benma's agent+407−5552 files
No security note in commit
Informational 18 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: reuse SHA-256 for HMAC

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
a790a7f0by benma's agent+24−55 files
No security note in commit
Informational 21 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: use static secp context

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
2756aca4by benma's agent+26−42 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: speed up certificate setup

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.
d5617112by benma's agent+10−81 file
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb03-binaries'

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 (…

1a648595by Niklas Dusenlund+17103−5779170 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/1976/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

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 …

386d86f5by Marko Bencun+139−134 files
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Add testboard openocd config

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…

c5984b41by Niklas Dusenlund+16−01 file
No security note in commit
Informational 19 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'py-proto'

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
926a5885by Marko Bencun+28−62 files
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.

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.

Security candidatechore: Break cyclic depby Niklas Dusenlund · 531f9f88 · Mar 17, 2026 · 9 filesMessage 55 · ThinInformational 15Details
Commit message · Niklas Dusenlund

chore: Break cyclic dep

bitbox02 must not depend on bitbox02-rust

55/100 · ThinMessage clarity
✓ 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.

Security candidatePy: avoid brittle Bootloader import in editable installsby Cedric Wiese · faebccd4 · Mar 16, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Cedric Wiese

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.

Security candidateci: pin mattermost notify actionby benma · e17167ee · Mar 11, 2026 · 1 fileMessage 80 · StrongLow 30Details
Commit message · benma

ci: pin mattermost notify action

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.

Security candidateAdd coin purchase memo supportby cedwies · 10746100 · Feb 26, 2026 · 8 filesMessage 45 · ThinLow 27Details
Commit message · cedwies

Add coin purchase memo support

45/100 · ThinMessage clarity
✓ 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.

Security candidatebitbox02-rust: remove redundant mock_memory callsby Marko Bencun · c7089da8 · Feb 19, 2026 · 11 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02-rust: remove redundant mock_memory calls

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.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
secret or key material
AI analysis · Informational 15/100

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().

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
secret or key materialboot or update path
AI analysis · Informational 12/100

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.

Security candidateeth: allow EIP-712 message signing without anti-kleptoby benma's agent · 24ca04e8 · Feb 15, 2026 · 11 filesMessage 78 · AdequateLow 31Details
Commit message · benma's agent

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.

63/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
seed or entropy path
AI analysis · Informational 13/100

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.