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

AI review queuedeth: fix data streaming issue when data lenght is exactly 1 byteby Tomas Vrba · a2579c78 · Mar 10, 2026 · 6 filesMessage 73 · AdequateModerate 59Details
Commit message · Tomas Vrba

eth: fix data streaming issue when data lenght is exactly 1 byte

When transaction data is streamed from the host in chunks, the
first_byte() method was called synchronously but the byte hadn't
been fetched yet for 1-byte payloads. Make first_byte() async so
it can request the byte from the host on demand, and handle the
1-byte special case in next() by returning the cached byte
directly instead of issuing a redundant chunk request.

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 59/100

This commit fixes a bug in the BitBox02 hardware wallet's Ethereum transaction signing. When signing an Ethereum transaction whose 'data' field is exactly 1 byte long and is streamed from the host computer in chunks, the device could call for the first byte before it had actually been fetched, leading to a crash or failed signing. The fix makes the first-byte lookup asynchronous so it can request the byte from the host on demand, and avoids asking for an extra chunk when the whole payload is just that one byte. New unit tests and regenerated test vectors confirm the 1-byte case now works.

AI review queueddelay: remove unused delay_is_elapsedby Marko Bencun · d7eba581 · Mar 7, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

delay: remove unused delay_is_elapsed

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit simply removes a software function named delay_is_elapsed that is no longer used anywhere in the code. It is a routine cleanup change with no apparent security relevance.

AI review queuedhal: add resetby Marko Bencun · d85daea2 · Mar 2, 2026 · 4 filesMessage 28 · OpaqueInformational 18Details
Commit message · Marko Bencun

hal: add reset

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

This commit is a small internal cleanup: it adds a new 'reset' method to the user-interface layer and makes the start of a new secure session call that method instead of calling a lower-level screen-clearing function directly. The behavior is essentially the same as before—clearing leftover screens when a new connection begins—so there is no new security problem. It is a refactoring change, not a fix for a known vulnerability.

AI review queuedUi: Display address in groups of 4 charactersby Cedric Wiese · a871abc7 · Mar 2, 2026 · 12 filesMessage 45 · ThinInformational 15Details
Commit message · Cedric Wiese

Ui: Display address in groups of 4 characters

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 only changes how wallet addresses are shown on the BitBox02 screen. It inserts spaces every four characters (for example, a Bitcoin address becomes "bc1q k5f9 em9q ..." instead of one long string). There is no code that changes security logic, cryptography, or how transactions are approved. It is a user-experience improvement to make long addresses easier to read and compare.

AI review queuedhal: add communication_timeout_resetby Marko Bencun · eae607ad · Mar 2, 2026 · 5 filesMessage 35 · OpaqueInformational 17Details
Commit message · Marko Bencun

hal: add communication_timeout_reset

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 17/100

This commit refactors how the BitBox02 hardware wallet resets its USB communication watchdog during long-running operations. It introduces a new method in the hardware abstraction layer so Rust code can reset the timeout without directly calling a lower-level USB module. The change itself is a structural cleanup; it does not appear to fix or introduce a security vulnerability, but it touches code that prevents tasks from being cancelled while handling sensitive operations like seed encryption and device reset.

AI review queuedhal/ui: add empty_create to Ui Halby Marko Bencun · 274acabe · Mar 2, 2026 · 5 filesMessage 45 · ThinInformational 19Details
Commit message · Marko Bencun

hal/ui: add empty_create to Ui Hal

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 19/100

This commit is a small internal code cleanup in the BitBox02 hardware wallet firmware. It moves the creation of an empty on-screen placeholder component into a common hardware-abstraction layer (HAL) so that both real device code and automated test code use the same interface. There is no direct security fix here; it is a refactoring that makes the code easier to test and maintain.

AI review queuedhal/ui: add switch_to_logo()by Marko Bencun · 2c3738cf · Feb 24, 2026 · 5 filesMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

hal/ui: add switch_to_logo()

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a small code cleanup in the BitBox02 hardware wallet firmware. It moves a direct call to a low-level screen-switching function into a proper hardware-abstraction trait, making the code more testable and consistent. There is no indication it fixes a security bug or changes user-visible behavior.

AI review queuedhal/ui: add progress to Ui Halby Marko Bencun · a0a8f0ee · Feb 20, 2026 · 5 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

hal/ui: add progress to Ui Hal

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 routine code cleanup: it moves the progress-bar UI code behind a Rust trait (interface) so different parts of the firmware can use it through a common abstraction. It does not change security behavior, fix a bug, or add a new user-facing feature beyond the existing progress bars.

AI review queuedhal/ui: remove get_mnemonicby Marko Bencun · 7f69f575 · Feb 18, 2026 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

hal/ui: remove get_mnemonic

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine code cleanup in the BitBox02 firmware's user-interface layer. It removes a convenience method called get_mnemonic from the UI hardware-abstraction trait and makes callers use the underlying workflow function directly. The change also expands unit-test helpers so the existing restore-from-mnemonic test can simulate a 24-word recovery phrase. There is no indication this fixes a security bug or changes user-visible behavior.

AI review queuedhal/ui: remove show_and_confirm_mnemonicby Marko Bencun · 923eb529 · Feb 18, 2026 · 5 filesMessage 35 · OpaqueInformational 12Details
Commit message · Marko Bencun

hal/ui: remove show_and_confirm_mnemonic

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 12/100

This commit is a code cleanup and test improvement. It removes a redundant user-interface method called show_and_confirm_mnemonic from the hardware abstraction layer and makes callers use the underlying workflow directly. It also adds more detailed test helpers so the device screens shown during backup verification can be checked more precisely. There is no indication this fixes a security bug or changes real device behavior in a risky way.

AI review queuedbitbox02_rust/hal: add ui trinary choiceby Marko Bencun · 2337a52a · Feb 18, 2026 · 5 filesMessage 78 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/hal: add ui trinary choice

Introduce hal::ui::TrinaryChoice and remove direct dependency on bitbox02::ui::TrinaryChoice in HAL consumers.

Add exhaustive conversion tests in hal::bitbox02::ui for to_hal_trinary_choice.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a routine internal code cleanup. It introduces a new Rust enum called TrinaryChoice inside a hardware abstraction layer (HAL) so that higher-level code no longer directly depends on a lower-level bitbox02 UI type. The actual on-device behavior is unchanged; only the names used in the source code are different. There is no security bug being fixed here.

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.

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.

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.

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.

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.

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.

AI review queuedeth: unify sighash data producerby Marko Bencun · 06454b29 · Feb 14, 2026 · 2 filesMessage 68 · AdequateInformational 12Details
Commit message · Marko Bencun

eth: unify sighash data producer

Firmware size (build/bin/firmware.bin, clean build).
Before: 708668 bytes (e217ae3a).
After: 707204 bytes.
Saved: 1464 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 Ethereum signing code. It merges two separate ways of feeding transaction data into one unified mechanism, with no intended behavior change. The only functional difference visible in the diff is a minor type change in a length check (from `usize` to `u32`), which does not appear to introduce a security issue. There is no indication this is a security fix.

AI review queuedeth: extract eth sighash test data into jsonby Tomas Vrba · bfc22b42 · Feb 13, 2026 · 13 filesMessage 70 · AdequateInformational 15Details
Commit message · Tomas Vrba

eth: extract eth sighash test data into json

extracts the go scripts that generate eth sighash test data into a
standalone go script and commits generate json data

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine code cleanup: it moves Ethereum transaction test data out of Rust source files into separate JSON files and adds small helper scripts to generate that data. It also makes minor type-casting fixes in unrelated test code. There is no change to the actual transaction signing logic or to any code that runs on the device in production.

AI review queuedeth: implement data producer for streamingby Tomas Vrba · 5c39f840 · Feb 13, 2026 · 2 filesMessage 80 · StrongLow 34Details
Commit message · Tomas Vrba

eth: implement data producer for streaming

Implements the DataProducer trait with two implementations:
- SimpleProducer: Returns all data in one call (for small data)
- ChunkingProducer: Fetches data in 4096-byte chunks via IPC (for large data)

Updates DataProducer::next() to return Result<Option<Vec<u8>>, Error>
instead of Option<Vec<u8>> for proper error handling.

Updates sighash computation functions (compute_legacy, compute_eip1559) to:
- Accept DataProducer via RefCell for async access
- Propagate errors through the call chain
- Use the Write trait to stream data into the hasher

Updates sign.rs hash functions to use ChunkingProducer when
data_length > 0, otherwise use SimpleProducer with inline data.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100

This commit adds support for signing Ethereum transactions with very large 'data' fields by streaming the data in 4 KB chunks instead of loading it all at once. It also adds safety checks: streamed and inline data cannot both be provided, and streamed data is capped at 1 MB. The change is a feature/refactoring with embedded defensive checks, but it is not described by the vendor as a security fix.

AI review queuedeth: make sighash computation streaming/asyncby Marko Bencun · 65be9d60 · Feb 13, 2026 · 2 filesMessage 78 · AdequateLow 33Details
Commit message · Marko Bencun

eth: make sighash computation streaming/async

So it can handle ETH transactions with very large data fields that
can't be sent by the host in one USB packet.

The Go code to produce the tests has been adjusted to work with the
updated go-ethereum package, and to output the data using the
`SimpleProducer`.

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 pathsecond-pass: security-sensitive path
AI analysis · Low 33/100

This commit refactors how the BitBox02 hardware wallet computes the Ethereum transaction hash (sighash) when the transaction contains a very large 'data' field. Previously, the entire data field had to be held in memory at once, which could fail if it was too large for a single USB message. The change makes the hashing process 'streaming' or 'asynchronous', so the device can receive and hash the data in smaller chunks. The commit itself is a feature/robustness improvement, not a direct security fix, but it touches the core cryptographic hashing path for Ethereum transactions.

AI review queuedui: drop Component lifetime markerby benma's agent · 2199c28d · Feb 13, 2026 · 4 filesMessage 60 · AdequateInformational 15Details
Commit message · benma's agent

ui: drop Component lifetime marker

All callbacks are gone, so 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 pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a routine internal cleanup in the BitBox02 firmware's user-interface code. It removes an artificial lifetime marker (a 'PhantomData' placeholder) from the Rust 'Component' type because the underlying callbacks that once required it have already been removed. There is no change to security logic, user-facing behavior, or how the device handles secrets.

AI review queuedui: port tx fee confirm to asyncby Niklas Dusenlund · c7c875c9 · Feb 12, 2026 · 4 filesMessage 80 · StrongInformational 15Details
Commit message · Niklas Dusenlund

ui: port tx fee confirm to async

Port confirm_transaction_fee_create() to async/await.

Note: remove Component::on_drop because all component constructors now
set it to None, so the field and drop callback path are dead code.

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

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine internal refactoring of the BitBox02 firmware's user-interface code. It rewrites one transaction-fee confirmation screen to use Rust's async/await style instead of a callback style, and removes an unused 'on_drop' cleanup field. There is no indication of a security bug being fixed or introduced.