BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

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

239security candidates161second-pass queue727AI analyses
72commits · 30 days
144commits · 60 days
316commits · 180 days
697commits · 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
325Adequate · 60–79
305Thin · 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 Bencun452133424357
benma's agent11240106164
Niklas Dusenlund15543134057
cedwies12512063
Tomas Vrba10410071
Cedric Wiese12312049
Yasser Aziza333070
Jad14210060
Sebastian Sutter222050
thisconnect212072
benma212074
Niklas111035
Analysis record

Published AI watches

Last scanned 28 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-priorityhal/securechip: make kdf output 32 bytesby Marko Bencun · 6ea21ad5 · Apr 16, 2026 · 8 filesMessage 45 · ThinInformational 18Details
Commit message · Marko Bencun

hal/securechip: make kdf output 32 bytes

For better clarity.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 18/100

This commit is a small code cleanup in the BitBox hardware wallet firmware. It changes the way a 32-byte secret produced by the secure chip's key-derivation function (KDF) is represented in code, switching from a variable-length vector to a fixed 32-byte array. The commit message says this is 'for better clarity.' There is no direct evidence in the commit or supplied references that this fixes a security vulnerability.

Lower-priorityhal/securechip: make kdf input 32 bytesby Marko Bencun · d509583f · Apr 16, 2026 · 9 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

hal/securechip: make kdf input 32 bytes

It is only used with that size, and simplifies the async port of that
function later.

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 routine code cleanup, not a security fix. It changes a key-derivation function so it only accepts exactly 32-byte inputs instead of any length up to 127 bytes. The function was already only ever called with 32-byte inputs, so behavior does not change. The stated reason is to make a later code rewrite easier.

Lower-priorityoptiga: add async bridge and counter readby Marko Bencun · 503ee06f · Apr 16, 2026 · 16 filesMessage 68 · AdequateInformational 11Details
Commit message · Marko Bencun

optiga: add async bridge and counter read

Expose the shared OPTIGA util instance to Rust and route\nmonotonic_increments_remaining() through the async command\nbridge. This keeps the first async step small while exercising\nthe bridge with one real read operation.

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

This commit is a routine firmware refactoring: it moves a single secure-chip counter read from a synchronous C function into a new asynchronous Rust wrapper. There is no indication of a security bug being fixed or introduced. The change is architectural groundwork for future async secure-chip operations.

Security candidaterust: rename bitbox02-noise -> bitbox-noiseby Marko Bencun · 6a206d68 · Apr 15, 2026 · 15 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

rust: rename bitbox02-noise -> bitbox-noise

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 simple rename of a Rust crate from 'bitbox02-noise' to 'bitbox-noise'. The code itself is unchanged; only file paths, package names, and import references are updated. There is no security fix or vulnerability introduced.

Security candidateUse HAL random for noise key generationby Marko Bencun · 4e982183 · Apr 15, 2026 · 11 filesMessage 85 · StrongLow 27Details
Commit message · Marko Bencun

Use HAL random for noise key generation

bitbox02-rust should not depend on bitbox02-specific random types just
to initialize the Noise responder state. Move Noise key generation
onto bitbox_hal::Random and let bitbox02-noise initialize the
responder handshake from HAL-provided randomness.

This removes the old Random32/BB02Random32 plumbing. That trait
existed only because the handshake state was generic over a DH type
whose genkey() path generated the responder ephemeral internally. Once
the responder ephemeral is treated as explicit init input instead, the
state no longer needs a device-specific RNG type parameter. In the
final API, init() takes a HAL random source and derives that ephemeral
key there, which keeps the dependency boundary at bitbox-hal while
preserving the same handshake flow.

85/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnessseed or entropy path
AI analysis · Low 27/100

This commit is a code cleanup in the BitBox02 firmware's Rust code. It changes how random numbers are supplied when creating cryptographic keys for the Noise protocol, moving from a device-specific random type to a more generic hardware abstraction layer (HAL) random source. The commit message and diff do not describe this as fixing a security bug; it reads as an architectural refactor to simplify dependencies. There is no direct evidence in the commit that the old code was exploitable or that any vulnerability was fixed.

Lower-priorityremove cmake run-rust-unit-tests custom targetby Marko Bencun · 32779ab1 · Apr 15, 2026 · 3 filesMessage 55 · ThinInformational 15Details
Commit message · Marko Bencun

remove cmake run-rust-unit-tests custom target

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This change is purely about how the project runs its internal Rust unit tests and regenerates protobuf files. It removes a CMake custom target called 'rust-test' and instead makes the Makefile's 'run-rust-unit-tests' target run cargo directly, while adding a separate 'generate-protobufs' target. There is no change to the firmware code that runs on the device, no bug fix, and no security patch.

Lower-priorityhal: put noise key functions into Memory HALby Marko Bencun · 567efc40 · Apr 15, 2026 · 5 filesMessage 45 · ThinInformational 12Details
Commit message · Marko Bencun

hal: put noise key functions into Memory HAL

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 12/100

This commit is a routine code reorganization. It moves functions that manage Noise protocol cryptographic keys (used for secure communication between the BitBox device and apps) into a common hardware abstraction layer called the Memory HAL. The actual behavior of these functions is not changed; they are simply routed through a new trait interface so the same code can be reused across different BitBox hardware models and test environments. There is no indication this fixes a security bug.

Lower-priorityAGENTS.md: remove run-rust-unit-testsby Marko Bencun · e3e2d3f7 · Apr 15, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Marko Bencun

AGENTS.md: remove run-rust-unit-tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a documentation-only change in the project's AGENTS.md file. It removes a shorthand make target ('make run-rust-unit-tests') and replaces it with the longer underlying cargo command that developers should run directly. There is no code change, no firmware change, and no security fix or vulnerability introduced.

Lower-priorityAGENTS.md: no dev-exec.sh for `cargo` commandsby Marko Bencun · 50b264a2 · Apr 15, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

AGENTS.md: no dev-exec.sh for `cargo` commands

They run on the host without ARM toolchain.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates developer-facing documentation (AGENTS.md). It tells contributors they can run Rust's cargo commands directly on their computer instead of inside the project's Docker/development wrapper script. No firmware code, build scripts, or security behavior changed.

AI review queuedeth/sign: add missing mock_unlock in testsby Marko Bencun · 0d7cabab · Apr 14, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Marko Bencun

eth/sign: add missing mock_unlock in tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds missing test setup calls to two automated unit tests in the Ethereum signing code. It does not change any production firmware behavior, user-facing functionality, or security logic. There is no indication this fixes a vulnerability or affects real devices.

AI review queuedapi/payment_request: serialize ETH value as little endianby Marko Bencun · be2d62c8 · Apr 14, 2026 · 2 filesMessage 73 · AdequateModerate 60Details
Commit message · Marko Bencun

api/payment_request: serialize ETH value as little endian

SLIP-24:

> amount (coinType-dependent length): fixed-length encoding of the amount of the requested output in little-endian byte order, expressed in the smallest unit of the given cryptocurrency (satoshis, wei, etc.). The length of the encoding is equal to the length used natively for the given coinType to encode amounts, e.g. 8 bytes for Bitcoin-like coins and 32 bytes for EVM assets.

73/100 · AdequateMessage clarity
✓ Specific, 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 · Moderate 60/100

This commit fixes a serialization bug in the BitBox02 firmware's payment request validation for Ethereum transactions. Previously, Ethereum payment amounts were encoded as big-endian (most-significant-byte-first), but the SLIP-24 standard requires them to be little-endian (least-significant-byte-first). Because the device signs the payment request using one byte order but the validation code used another, a payment request could be generated that the device would accept even if the actual transaction amount did not match what the user saw on screen. The fix changes the code to serialize Ethereum amounts as 32-byte little-endian values, matching the standard and preventing amount mismatches.

Lower-priorityethereum/amount: fix typo in docstringby Marko Bencun · e9f51e00 · Apr 13, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

ethereum/amount: fix typo in docstring

And switch to a more realistic unit :)

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes placeholder text in documentation and unit tests. It replaces the fake token name 'LOL' with 'ETH' in code comments and test expectations. No real program behavior is altered, and there is no security relevance.

Lower-priorityhal/securechip: mark monotonic_increments_remaining asyncby Marko Bencun · 40b3c548 · Apr 13, 2026 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

hal/securechip: mark monotonic_increments_remaining async

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 routine internal refactoring: it changes one function in the secure-chip hardware abstraction layer from synchronous to asynchronous. It does not fix a bug, change any security behavior, or alter how data is validated. It only adjusts how the firmware waits for the secure chip's answer when reporting how many times a one-way counter can still be incremented.

AI review queuedCHANGELOG: add swapsby Marko Bencun · a200c9bf · Apr 13, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Marko Bencun

CHANGELOG: add swaps

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

This commit only adds a single line to the product changelog describing a new feature: support for swaps in payment requests. There are no code changes, no bug fixes, and no security-related content in the diff.

Lower-prioritypayment_request: truncate long swap-to amountsby Marko Bencun · 8d362ffc · Apr 13, 2026 · 1 fileMessage 68 · AdequateLow 25Details
Commit message · Marko Bencun

payment_request: truncate long swap-to amounts

Same as amount.rs in Ethereum.

We apply it regardless of the coin target, as we can't enumerate
them (any ERC20 token etc. is possible).

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

This commit changes how the BitBox02 hardware wallet displays very long swap-to amounts on its screen. Previously, an extremely long amount string could be shown in full, potentially overflowing the display or making the user interface unusable. Now, long decimal portions are truncated with '...' so the integer part and a fixed number of decimal digits remain visible. This is a UI hardening change rather than a fix for a remote exploit.

AI review queuedui: add swap componentby Marko Bencun · 3948cb63 · Apr 13, 2026 · 15 filesMessage 43 · ThinInformational 12Details
Commit message · Marko Bencun

ui: add swap component

Similar to confirm_transction.c, dedicated to the swap screen.

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit adds a new on-screen user-interface component for confirming cryptocurrency swaps. It is a feature addition that refactors how swap confirmations are displayed, replacing a generic confirmation screen with a dedicated swap screen. There is no direct evidence in the commit that this fixes a security vulnerability or introduces a new attack path.

Lower-prioritysecurechip: port model to Rustby Marko Bencun · 9559e931 · Apr 11, 2026 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

securechip: port model to Rust

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a straightforward code cleanup: it moves a tiny function that reports the hardware security chip model from C to Rust. The function always returned the same fixed value (OPTIGA_TRUST_M_V3), and after the change it still returns that same fixed value. There is no security-relevant change in behavior.

Security candidateadd new bitbox-core-utils workspace crateby Marko Bencun · e12dae77 · Apr 10, 2026 · 13 filesMessage 83 · StrongInformational 15Details
Commit message · Marko Bencun

add new bitbox-core-utils workspace crate

Move the salt and random helpers out of bitbox02-rust into a
new workspace crate that depends on bitbox-hal.
Add bitbox-platform-host as a dev-dependency there so the same
unit tests can run against the host fakes, and update the
bitbox02-rust and bitbox02-rust-c consumers to use the new
crate.

83/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
seed or entropy pathboot or update path
AI analysis · Informational 15/100

This commit is a routine code reorganization: it moves two small helper modules (one for generating random bytes, one for salting/hashing data) from an existing Rust crate into a new shared workspace crate named bitbox-core-utils. The actual logic, algorithms, and behavior are copied unchanged; only the file paths and import names are updated. There is no indication this fixes or introduces a security vulnerability.

Lower-priorityeth: validate payment request coin purchase coin type and keypathby Marko Bencun · 7e443b27 · Apr 9, 2026 · 2 filesMessage 50 · ThinModerate 61Details
Commit message · Marko Bencun

eth: validate payment request coin purchase coin type and keypath

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
defensive validation
AI analysis · Moderate 61/100

This commit adds missing safety checks for Ethereum payment requests on the BitBox02 hardware wallet. Previously, when a user paid a merchant via a Bitcoin payment request that included an Ethereum coin-purchase memo, the device did not verify that the requested Ethereum coin type and the keypath matched a supported mainnet network. A malicious or buggy payment request could therefore ask the device to prove ownership of an address on an unexpected or test Ethereum network, potentially misleading the user or weakening the security guarantee of the payment request. The patch now rejects unsupported coin types (notably testnet coin type 1) and ensures the keypath's second component matches the declared coin type.

Lower-prioritybitbox03: activate app-u2f in bitbox-halby Marko Bencun · 5028149d · Apr 9, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

bitbox03: activate app-u2f in bitbox-hal

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit changes a single line in a Rust package configuration file. It makes the 'app-u2f' feature of the bitbox03 package also enable the 'app-u2f' feature in the underlying 'bitbox-hal' hardware abstraction library. There is no visible bug fix or security patch in the diff itself; it appears to be a build/feature wiring change.

Lower-priorityscripts/format: only format git-tracked filesby Marko Bencun · 03f69906 · Apr 8, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

scripts/format: only format git-tracked files

It also formatted all headers in src/rust/target etc., slowing it down.

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

This commit changes a code-formatting helper script so it only processes files tracked by Git, instead of scanning every file in the source directories. The old behavior accidentally formatted files inside build/cache folders such as src/rust/target, which only made the script slower. There is no security issue here.

Security candidatehal: move TestingRandom to platform hostby Marko Bencun · 57d7c80d · Apr 8, 2026 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

hal: move TestingRandom to platform host

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 simply moves a test-only fake random number generator from one internal Rust module to another. The code is identical and is only used in automated tests running on a developer's computer, not in the real BitBox02 hardware wallet firmware. There is no security issue.

Lower-prioritysalt: use TestingMemory in testsby Marko Bencun · 225097e6 · Apr 8, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Marko Bencun

salt: use TestingMemory in tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only updates internal unit tests to use a more specific mock object (TestingMemory instead of TestingHal). It does not change any production code, security behavior, or user-facing functionality. There is no security issue here.

Security candidatehal: add random, factory_randomness, drop random_32_bytesby Marko Bencun · 47454d61 · Apr 8, 2026 · 27 filesMessage 55 · ThinLow 45Details
Commit message · Marko Bencun

hal: add random, factory_randomness, drop random_32_bytes

55/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
AI analysis · Low 45/100

This commit changes how the BitBox02 hardware wallet generates random numbers used to create secret keys and encrypt stored data. Previously, the firmware used a single 32-byte random value from the microcontroller. After this change, it mixes three sources: the microcontroller's random generator, the secure chip's random generator, and a fixed 32-byte 'factory randomness' value stored in a special flash memory location. The commit also adds a factory script to write that fixed value into devices during production. The change is a defensive hardening measure, not a fix for an active bug, but it introduces a new dependency: if the factory randomness is not actually random or is reused across devices, it could weaken security instead of strengthening it.

Lower-priorityoptiga: move some defs to the headerby Marko Bencun · 53a41be7 · Apr 8, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

optiga: move some defs to the header

So they can be exposed to Rust later.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply moves two constant definitions from a C source file to a header file so they can be used by Rust code later. There is no functional code change, no bug fix, and no security relevance visible in the diff.