BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

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

240security candidates161second-pass queue727AI analyses
74commits · 30 days
146commits · 60 days
318commits · 180 days
699commits · 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
69Strong · 80–100
326Adequate · 60–79
306Thin · 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 Bencun453133424357
benma's agent11341106164
Niklas Dusenlund15543134057
cedwies12512063
Tomas Vrba10410071
Cedric Wiese12312049
Yasser Aziza333070
Jad14210060
Sebastian Sutter222050
thisconnect212072
benma212074
Niklas111035
Analysis record

Published AI watches

Last scanned 0 minutes ago

Informational 15 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

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

This commit only adds two digital signature files for an already-released firmware version (v9.25.0). These are third-party reproducible-build assertions by a user named 'yaziza', not changes to the firmware source code. There is no code c…

b8bbbb64by Marko Bencun+0−02 files
No security note in commit
Informational 0 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

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

This commit only adds two digital signature files for an already-released firmware version (v9.27.1). These are release attestation signatures from a contributor named 'yaziza'. There is no code change, no firmware change, and nothing in t…

392ac2ffby Marko Bencun+0−02 files
No security note in commit
Informational 12 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb02-finalize-elf'

This commit is a build-system refactor that unifies how firmware image headers are generated for the BitBox02 and BitBox03. It replaces a device-specific Python script and a C header placeholder with a shared Python tool and JSON manifests…

New input validation in image_header.py for magic, flags, product_id, monotonic_version, marketing_version, image length, and zeroed signature slotsRust parsing now validates slot length, header length alignment, and image length bounds before deriving code lengthRemoval of prepare-stage1-unsigned path reduces attack surface in build tooling
810d3e87by Niklas Dusenlund+573−14413 files
No security note in commit
Informational 12 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: use shared stage1 header tool

This commit is a build-system refactoring for the BitBox02 bootloader. It replaces a C-language placeholder for the bootloader's stage1 header with a Python tool that generates the same header from JSON manifests during the build. The old …

5b14742fby Niklas Dusenlund+52−1105 files
No security note in commit
Low 27 AI analysisMessage 83 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

scripts: unify the BitBox image format

This commit refactors the firmware image header format used by BitBox hardware wallets so that BitBox02 and BitBox03 share a single 1024-byte layout. It adds new metadata fields (product ID, version numbers, signature slots) and switches t…

Changed binary image header format and parserAdded checked integer conversions for 64-bit image lengthAdded bounds checks on slot length, header length, and image length in Rust loader
9403e6feby Niklas Dusenlund+524−376 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

scripts: rename image header tool

This commit simply renames a build script from bitbox03_image_header.py to image_header.py and updates all references in the Makefile and Rust build files. The script's contents and behavior are unchanged. There is no security issue here.

29d6720aby Niklas Dusenlund+7−75 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Firmware v9.27.1 verification (yaziza)

This commit adds two digital signature files for BitBox02 firmware version 9.27.1. These signatures are a third-party reproducible-build verification (called an 'assertion') created by an independent contributor named yaziza. The commit do…

6d2e6955by Yasser Aziza+0−02 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Firmware v9.25.0 verification

This commit adds two digital signature files to the repository. They are third-party reproducible-build attestations (assertions) for the already-released BitBox02 firmware version 9.25.0. The commit does not change any firmware source cod…

b454a627by Yasser Aziza+0−02 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-prioritybitbox02_rust: drop sdcard::UserAbort for hal::ui::UserAbortby benma's agent · de9229fe · Feb 18, 2026 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · benma's agent

bitbox02_rust: drop sdcard::UserAbort for hal::ui::UserAbort

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a small internal cleanup in the BitBox02 firmware's Rust code. It removes a duplicate definition of a 'user cancelled' error type used when the user aborts an SD card insertion prompt, and makes all code use a single shared 'UserAbort' type instead. There is no change to user-facing behavior or security.

Lower-prioritybitbox02_rust: drop workflow::cancel::Error for hal::ui::UserAbortby benma's agent · dc07c3b8 · Feb 18, 2026 · 10 filesMessage 65 · AdequateInformational 15Details
Commit message · benma's agent

bitbox02_rust: drop workflow::cancel::Error for hal::ui::UserAbort

We want to make the HAL self-contained so it can be moved to a new
crate bitbox-hal.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a routine internal code cleanup. It removes a small, dedicated 'cancel' error type and replaces it with an existing, equivalent 'UserAbort' type in the hardware abstraction layer (HAL). The goal stated by the developer is to make the HAL self-contained so it can later be moved to its own crate. There is no change to user-visible behavior, no bug fix, and no security-related change.

AI review queuedbitbox02_rust: move workflow::confirm::UserAbort to hal::uiby benma's agent · 15394330 · Feb 18, 2026 · 13 filesMessage 65 · AdequateInformational 15Details
Commit message · benma's agent

bitbox02_rust: move workflow::confirm::UserAbort to hal::ui

We want to make the HAL self-contained so it can be moved to a new crate bitbox-hal.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple internal code reorganization. It moves a small user-cancelled error type (UserAbort) from one Rust module to another so the hardware abstraction layer (HAL) can eventually become its own separate crate. No security behavior changes; only import paths and type references are updated.

AI review queuedbitbox02_rust: drop workflow::transaction::UserAbort for hal::ui::UserAbortby benma's agent · 12c98288 · Feb 18, 2026 · 5 filesMessage 65 · AdequateInformational 15Details
Commit message · benma's agent

bitbox02_rust: drop workflow::transaction::UserAbort for hal::ui::UserAbort

We want to make the HAL self-contained so it can be moved to a new
crate bitbox-hal.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup. It replaces one definition of a user-cancellation error type with another identical one so that a hardware abstraction layer can be moved to its own crate. There is no change to user-facing behavior, security logic, or how transaction approvals and rejections are handled.

Lower-prioritybitbox02_rust/ui: inline quiz_mnemonicby Marko Bencun · fee152c4 · Feb 18, 2026 · 4 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline quiz_mnemonic

Inline mnemonic quiz word confirmation into the BB02 HAL UI
and remove the redundant mnemonic helper.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a small internal code cleanup: a helper function that displayed a list of recovery words for the user to pick from was moved from one Rust module into another and the old copy was deleted. The actual on-device behavior is unchanged, and there is no indication of a security bug being fixed.

Lower-prioritybitbox02_rust/ui: inline show_mnemonicby Marko Bencun · c63a2af0 · Feb 18, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline show_mnemonic

Inline mnemonic display into the BB02 HAL UI and remove the
redundant mnemonic wrapper helper.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a simple code cleanup: it moves the logic for displaying a recovery phrase (mnemonic) from a shared helper function directly into the device's user-interface layer, and removes the now-unused helper. There is no change in behavior, no bug fix, and no security-relevant change.

Lower-prioritybitbox02_rust/ui: inline trinary_choiceby Marko Bencun · 6e9609c6 · Feb 18, 2026 · 7 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline trinary_choice

Inline trinary choice handling into the BB02 HAL UI and remove
the workflow wrapper module and type indirection.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup: it removes a thin Rust wrapper around a three-option user-interface prompt and calls the underlying function directly. There is no visible change in behavior, no bug fix, and no security-relevant change.

Lower-prioritybitbox02_rust/ui: inline menu wrapperby Marko Bencun · 3614a8b3 · Feb 18, 2026 · 6 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline menu wrapper

Inline word-menu selection into the BB02 HAL UI and remove
the workflow::menu wrapper module.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a routine code cleanup: a small helper function for showing a word menu was moved and the old wrapper module was deleted. There is no security-relevant change visible in the diff.

Lower-prioritybitbox02_rust/ui: inline sdcard wrapperby Marko Bencun · ce914662 · Feb 18, 2026 · 2 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline sdcard wrapper

Inline SD card prompt handling into the BB02 HAL UI and remove
the obsolete workflow wrapper.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a simple internal code cleanup. It moves the logic for handling an SD card prompt from a separate wrapper function directly into the device's user-interface HAL layer. The actual behavior—waiting for the user to insert an SD card or cancel—does not change. There is no visible security fix or vulnerability here.

Lower-prioritybitbox02_rust/ui: inline enter_stringby Marko Bencun · e7e62c4e · Feb 18, 2026 · 3 filesMessage 50 · ThinInformational 12Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline enter_string

Inline trinary input handling in the BB02 HAL UI and remove
the redundant workflow helper.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 12/100

This commit is a small code cleanup: it moves the logic for entering a string on the BitBox02 device from a shared helper function directly into the device's user-interface layer, and removes the now-unused helper. There is no visible security change in behavior.

Lower-prioritybitbox02_rust/ui: inline status wrapperby Marko Bencun · e73feba6 · Feb 18, 2026 · 3 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline status wrapper

Inline status display into the BB02 HAL UI and remove the
obsolete workflow::status module.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a simple internal code cleanup: it removes a tiny wrapper function that displayed status messages and calls the underlying status function directly instead. There is no user-facing change, no bug fix, and no security relevance visible in the code.

AI review queuedbitbox02_rust/ui: inline verify_total_feeby Marko Bencun · 24adc280 · Feb 18, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline verify_total_fee

Inline total-fee confirmation into the BB02 HAL UI and remove
the redundant transaction wrapper.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple internal code cleanup: it removes a thin wrapper function and calls the underlying UI confirmation directly. There is no visible change in behavior, no bug fix, and no security-relevant change.

AI review queuedbitbox02_rust/ui: inline verify_recipientby Marko Bencun · b080eada · Feb 18, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline verify_recipient

Inline recipient confirmation into the BB02 HAL UI and remove
the redundant transaction wrapper.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple code cleanup: it moves the recipient-confirmation logic directly into the user-interface layer and removes a small wrapper function that was no longer needed. There is no change to security behavior, no bug fix, and no new feature.

Lower-prioritybitbox02_rust/ui: inline confirm wrapperby Marko Bencun · d6b728b7 · Feb 18, 2026 · 3 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/ui: inline confirm wrapper

Inline the confirm workflow wrapper into the BB02 HAL UI
implementation and drop the redundant helper function.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a small internal code cleanup. It moves the logic that converts a user's approve/cancel response into a success or error result from a shared helper function directly into the user-interface implementation for the BitBox02 device. No behavior changes; no security relevance.

AI review queuedeth: use hex! instead of bytestring literalsby Marko Bencun · d6d96e66 · Feb 18, 2026 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

eth: use hex! instead of bytestring literals

For readability.

45/100 · ThinMessage clarity
✓ 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 pure code cleanup: it replaces hard-to-read byte-string literals in Ethereum test code with a more readable hex!() macro. The actual byte values are identical, and no production behavior changes. There is no security issue.

Lower-priorityhal: use HAL memory in main_loopby Marko Bencun · 5704b15f · Feb 17, 2026 · 6 filesMessage 78 · AdequateInformational 15Details
Commit message · Marko Bencun

hal: use HAL memory in main_loop

Replace direct memory get_device_name/get_platform calls in the
main loop with hal.memory() accessors.

This keeps behavior unchanged while routing through the existing
HAL abstraction.

hal: add memory ble_enable/ble_enabled to HAL

Extend the Memory HAL trait with ble_enabled() and implement
it in BitBox02 and testing HAL backends.

Use the new HAL method in main_loop and other callsites instead of
calling bitbox02::memory::ble_enabled() directly.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a straightforward internal refactoring: it moves a few memory-related reads and writes (Bluetooth enabled flag, device name, platform type) behind an existing hardware abstraction layer (HAL). The actual behavior of the firmware is unchanged; the code just calls the same underlying functions through a different interface. There is no indication of a security fix or vulnerability being addressed.

Lower-priorityhal: add local memory/securechip typesby Marko Bencun · 04b8d432 · Feb 17, 2026 · 16 filesMessage 68 · AdequateInformational 19Details
Commit message · Marko Bencun

hal: add local memory/securechip types

We want to have HAL be self contained and not depend on bitbox02 -
bitbox02 will contain the bitbox02 HAL impl in the future.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100

This commit is a software-architecture cleanup, not a security fix. It moves data types such as device platform, secure chip model, and password-stretching algorithm out of a low-level BitBox02-specific module into a new hardware-abstraction layer (HAL). The real hardware behavior is unchanged; only the internal Rust type names and error-conversion paths are different. A few error mappings were made slightly more precise (for example, a duplicate name now returns a clearer 'duplicate' error instead of a generic memory error), but these are minor refinements rather than vulnerability fixes.

AI review queueduse new executor for u2f futuresby Niklas Dusenlund · 858bbce2 · Feb 17, 2026 · 23 filesMessage 60 · AdequateLow 32Details
Commit message · Niklas Dusenlund

use new executor for u2f futures

Co-Authored-By: Marko Bencun <marko@shiftcrypto.ch>

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Low 32/100

This commit refactors how the BitBox02 hardware wallet handles U2F (Universal 2nd Factor) security-key workflows. It replaces an older polling-style task system with a new async executor and swaps several `static mut` global variables for safer building blocks from a vendored Rust crate called `grounded`. The change is mostly a code-quality and safety improvement: it removes deprecated `static mut` references and makes the U2F unlock/confirm workflows run as proper async tasks. There is no direct evidence in the commit message or diff that this fixes an active security vulnerability, but it reduces the risk of memory-unsafety bugs in a security-sensitive code path.

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.

AI review queuedui: port status to asyncby Marko Bencun · f08c87ca · Feb 15, 2026 · 4 filesMessage 38 · OpaqueInformational 15Details
Commit message · Marko Bencun

ui: port status to async

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 is a routine internal code cleanup. It moves the logic for showing a short status message on the device screen from one Rust function to another and converts it to use the project's async/await pattern. There is no visible change in behavior: the status screen still appears for the same 2-second duration. Nothing in the commit suggests a security fix or vulnerability.

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.

AI review queuedeth: switch sighash to dyn dispatchby Marko Bencun · aad56de5 · Feb 14, 2026 · 2 filesMessage 68 · AdequateInformational 12Details
Commit message · Marko Bencun

eth: switch sighash to dyn dispatch

Firmware size (build/bin/firmware.bin, clean build).
Before: 707204 bytes (previous commit).
After: 705428 bytes.
Saved: 1776 bytes.
Cumulative vs e217ae3a: 3240 bytes.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a code cleanup in the BitBox02 firmware's Ethereum transaction signing module. It replaces a generic/template-based approach with dynamic dispatch (using Rust trait objects) to reduce firmware size by about 1,776 bytes. There is no indication in the commit or supplied references that this fixes a security vulnerability or changes security-relevant behavior.