BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

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

193security candidates127second-pass queue249AI analyses
25commits · 30 days
47commits · 60 days
312commits · 180 days
647commits · 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.

59/100 average clarity
65Strong · 80–100
281Adequate · 60–79
230Thin · 40–59
71Opaque · 0–39
23security 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 Bencun390117147258
benma's agent892838162
Niklas Dusenlund1112934059
cedwies1257063
Tomas Vrba947074
Cedric Wiese1239049
Jad811062
thisconnect211072
benma211074
Niklas111035
Yasser Aziza111070
Patrick Steiger111045
Analysis record

Published AI watches

Last scanned 45 minutes ago

Moderate 60 AI analysisMessage 90 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

backup: validate decoded seed length

This update fixes a bug in how the BitBox02 hardware wallet reads backup files from an SD card. A tampered backup file could claim to contain a seed longer than the 32-byte limit, which previously caused the device to panic (crash) when li…

Out-of-bounds/panic condition in backup parsingMissing input validation on decoded protobuf fieldSD-card backup file could be attacker-controlled
80baf1eeby benma's agent+34−01 file
Vendor flagged security relevance
Low 39 AI analysisMessage 73 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

rust: initialize C output buffers

This commit fixes a class of low-level memory-safety bugs where Rust code was given buffers containing uninitialized bytes. Rust's rules require every byte of a slice to be initialized, even if the function will overwrite them. Passing uni…

Undefined behavior at C/Rust FFI due to uninitialized buffers being treated as Rust slicesPotential optimizer-dependent behavior from violating Rust slice initialization rulesHardening of cryptographic output paths (SHA-256, HMAC-SHA256, HMAC-SHA512)
511018eaby benma's agent+52−2713 files
Vendor flagged security relevance
High 74 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

eth: limit EIP-712 recursion depth

This commit adds a hard limit on how deeply nested Ethereum typed-message (EIP-712) structures can be when the BitBox02 hardware wallet signs them. Without the limit, an attacker could craft a message type that refers to itself over and ov…

Adds explicit recursion-depth cap to attacker-controlled input parsingPre-validates schema roots before host callbacks or user confirmationProtects against stack exhaustion / denial-of-service from deeply nested EIP-712 types
4ccadcc0by benma's agent+196−451 file
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

py: extract bootloader connection

This commit is a minor code cleanup in a Python helper script. It moves existing bootloader connection logic into a small nested helper function to satisfy a style checker (pylint's limit on the number of return statements). No behavior ch…

886113d0by benma's agent+10−61 file
No security note in commit
Low 42 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Warn before truncated value displays

This commit adds a warning screen to the BitBox02 hardware wallet whenever a long message or value is about to be shown in a truncated form. Previously, the device could silently cut off the end of very long transaction details, message da…

UI truncation warning added before oversized confirmation bodiesCentralized body-size limit to keep Rust and C UI limits in syncReplaced duplicated warning logic with shared confirm_value helper
5b3aee6fby benma's agent+266−4710 files
No security note in commit
Informational 12 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

releases: add v9.26.2, v9.26.3 and v9.26.4

This commit is a routine release-management update. It adds signed build assertions for three new BitBox02 firmware versions (9.26.2, 9.26.3, 9.26.4) and updates the release documentation and build helper script. The build script now delet…

No firmware source code is modifiedNo cryptographic primitives or protocols are changedNo bug fixes or vulnerability mitigations are present in the diff
eed2e68eby Marko Bencun+79−116 files
No security note in commit
Informational 21 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

eth: loosen EIP-712 identifier validation

This firmware update relaxes the rules for valid Ethereum typed-data (EIP-712) names so they can contain a colon (:), which some decentralized apps use as a namespace separator. Member names still cannot contain colons. The change is prese…

Input validation relaxation for externally supplied EIP-712 type namesExplicit claim that ':' cannot forge encodeType boundariesMember-name validation remains strict
9703d8d9by Marko Bencun+50−43 files
No security note in commit
Moderate 59 AI analysisMessage 69 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Limit SD erase file size

This commit fixes a bug in how the BitBox02 hardware wallet wipes files from its SD card. Before erasing a file, the device now checks the file's reported size against a safe maximum. Without this check, a tampered SD card could claim a fi…

CVE-2026-6682 referenced in commit messageMalformed FAT directory entry could cause excessive overwrite loopDenial-of-service via SD card tampering
2453f528by Marko Bencun+4−01 file
Vendor flagged security relevance
High 70 AI analysisMessage 66 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Validate mounted FAT geometry

This update adds a safety check when the BitBox02 hardware wallet mounts a microSD card. A malicious or deliberately malformed FAT filesystem could trick the device's file-system library into placing user data inside attacker-controlled bo…

Fixes integer-wrap / geometry confusion in FAT mount logicAdds explicit post-mount validation of filesystem metadataPrevents data area from landing inside attacker-controlled FAT sectors
01c017d6by Marko Bencun+21−01 file
Vendor flagged security relevance
Low 27 AI analysisMessage 69 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Update FatFs to R0.16

This commit updates the third-party FatFs file-system library inside the BitBox02 firmware from version R0.14b to R0.16 plus an upstream patch. The change is a routine dependency refresh: it replaces the vendored source files with the newe…

Third-party dependency update (FatFs R0.14b -> R0.16+p1)No explicit security claim in commit messageNo CVE or advisory referenced in commit or supplied references
9f2b493dby Marko Bencun+3842−256979 files
No security note in commit
Low 34 AI analysisMessage 59 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

api: add BitBoxSync

This commit adds a brand-new firmware feature called BitBoxSync, which lets the BitBox02 hardware wallet participate in a sync service by proving its identity, signing login/admin intents, and decrypting namespace encryption keys. The code…

New cryptographic API surface added to the hardware wallet (Ed25519, X25519, HKDF, AEAD)Vendored third-party crate `hkdf` introduced into the firmware supply chainNew user-confirmation flow for signing sync intents; one operation (UnwrapNamespaceDek) deliberately skips confirmation
54cdb54dby Marko Bencun+2883−2230 files
No security note in commit
Informational 0 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

blupgrade: update stage1 binaries to v1.2.2

This commit simply swaps in newer pre-built bootloader stage1 binary files (version 1.2.2 replacing 1.2.1) for four BitBox02 hardware variants and updates the corresponding checksum list. The actual code inside the new binary files is not …

5940a800by Marko Bencun+8−86 files
No security note in commit
Moderate 59 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader/stage1: fix erase handling for partially erased blocks

This update fixes the BitBox02 bootloader's firmware-erase routine. Previously, when erasing leftover padding after a firmware update, the bootloader started erasing at the exact page where the firmware ended. Because flash memory can only…

Bootloader firmware erase routine could erase a flash block containing both firmware and paddingFix aligns erase start to erase-block boundary and re-checks erased state before erasingChangelog describes the change as a fix for 'partially erased flash blocks'
b31206a8by Marko Bencun+23−83 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

blupgrade: add stage0/stage1 production binaries

This commit adds production bootloader upgrade files for the BitBox02 hardware wallet and updates build scripts to use them. It is a routine asset-management change: replacing placeholder development hashes with real signed production bina…

8db4b0dcby Marko Bencun+26−1720 files
No security note in commit
Informational 20 AI analysisMessage 83 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

blupgrade: keep dev stage1 unsigned

This commit fixes a build script used only for development/testing versions of the BitBox02 bootloader upgrade. It makes the development-stage1 bootloader images unsigned again, while keeping production images fully signature-verified. The…

Signature verification relaxed only for development buildsProduction payload validation still requires signaturesDevelopment stage0 already skipped stage1 signature verification per commit message
476b90e3by Marko Bencun+9−69 files
No security note in commit
High 76 AI analysisMessage 23 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

security improvements

This BitBox02 firmware update is a broad security patch that fixes several independent bugs: it prevents a maliciously oversized USB report from overflowing memory, stops a corrupted Bluetooth pairing database from being read or written wi…

Bounds check added to USB HID Set Report input lengthBLE bond DB length validation hardened against negative and oversized valuesBootloader firmware image size limit relaxed to intended maximum
cbb40634by Marko Bencun+1117−25021 files
Vendor flagged security relevance
Low 46 AI analysisMessage 60 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: allow full sized images

This commit fixes a bootloader bug where the device rejected firmware updates that used the maximum allowed size. The off-by-one check meant legitimate full-sized firmware images could not be installed, potentially blocking updates. The fi…

Off-by-one input validation in firmware-update pathBootloader change affecting firmware chunk count acceptanceCHANGELOG labels the change as a bugfix for full-sized firmware upgrades
f60b93ccby Marko Bencun+5−33 files
No security note in commit
Moderate 59 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Add bootloader update

This is a large firmware commit that adds a new two-stage bootloader update mechanism for the BitBox02 hardware wallet. It replaces the old single bootloader with a small, fixed 'stage0' plus a separately signed 'stage1', and ships a speci…

Bootloader architecture changed from monolithic to two-stage (stage0 + signed stage1).Firmware signature hash now includes a 16-bit product_id, binding firmware to product variant.Root public keys were rotated/replaced with a single set across all products.
3f1f3172by Marko Bencun+5003−52379 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 73 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Add flash data backup scripts

This commit adds two helper scripts for developers to back up and restore BitBox02 flash memory areas using a Segger J-Link debugger. The scripts require physical hardware access and a debugging probe, and they are not part of the firmware…

285fa768by Niklas Dusenlund+383−03 files
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bb03 UI: placeholder BTC signing workflows

This commit replaces unfinished placeholder code (which would crash with 'todo!()') with simple working user-interface placeholders for Bitcoin signing demonstrations. It adds basic on-screen prompts to confirm a recipient/amount and a tot…

f7b0b082by Jad+24−121 file
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 queueduse new executor for u2f futuresby Niklas Dusenlund · 858bbce2 · Feb 17, 2026 · 23 filesMessage 60 · AdequateTriage 0Details
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
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 · OpaqueTriage 0Details
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
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.

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.

Security candidateeth: add tests with large data to test streamingby Tomas Vrba · 2a1108e0 · Feb 13, 2026 · 6 filesMessage 78 · AdequateInformational 15Details
Commit message · Tomas Vrba

eth: add tests with large data to test streaming

Adds transactions with large data (about 20% of total txs) to the
sighash go script to unit test the chunking producer

- test sign.rs to test that new streaming mode produces same
signatures as non-streaming
- test that streaming large data produces signatures of expected size

eth: prepare tests for eth sighash streaming

prepares initial unit tests for simple and chunking producer for data
streaming

tests generated by Claude Code

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 boundarysigning or wallet path
AI analysis · Informational 15/100

This commit is purely a test-suite update for the BitBox02 hardware wallet's Ethereum transaction signing. It adds unit tests that verify the new 'streaming' mode for large transaction data produces the same cryptographic signatures as the older non-streaming mode, and updates test data files. There is no change to production firmware code or user-facing behavior, and nothing in the commit suggests a security vulnerability.

Lower-priorityeth: update python api to support streaming large transactionsby Tomas Vrba · fd64d9ab · Feb 13, 2026 · 3 filesMessage 83 · StrongTriage 0Details
Commit message · Tomas Vrba

eth: update python api to support streaming large transactions

Adds _handle_eth_chunking() method to BitBox02 class to handle the
chunk request/response loop for ETH transactions with large data fields.

Updates eth_sign() and eth_sign_eip1559() to:
- Set data_length field when data exceeds 6144 bytes
- Call _handle_eth_chunking() to process chunk requests
- Use empty data field when streaming (data is sent incrementally)

Updates send_message.py with a streaming test case for validation.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityeth: bump firmware version for eth streamingby Tomas Vrba · 22fd96b8 · Feb 13, 2026 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · Tomas Vrba

eth: bump firmware version for eth streaming

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
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.

Security candidateeth: prepare and generate proto files for data streamingby Tomas Vrba · 83be97ad · Feb 13, 2026 · 6 filesMessage 83 · StrongInformational 11Details
Commit message · Tomas Vrba

eth: prepare and generate proto files for data streaming

update existing tests to include the new data length field

Adds new protobuf fields to support streaming large transaction data:
- data_length: Indicates total data size (triggers streaming mode if > 6144)
- EthSignDataRequestChunkResponse: Request for a data chunk at offset/length
- EthSignDataResponseChunkRequest: Response containing the requested chunk

Regenerates all protobuf files (Python, Rust, C) from the updated .proto.

Updates existing tests to populate the new data_length field (set to 0
for traditional mode where all data is sent inline).

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 11/100

This commit adds new message definitions and generated code to support streaming large Ethereum transaction data in chunks, but it does not implement the actual streaming logic. Existing tests are updated only to include the new optional field set to zero, meaning the current behavior is unchanged. There is no indication this is a security fix or introduces a vulnerability.

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.

Lower-priorityui: port unlock animation to asyncby Niklas Dusenlund · b0172f36 · Feb 13, 2026 · 6 filesMessage 60 · AdequateTriage 0Details
Commit message · Niklas Dusenlund

ui: port unlock animation to async

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

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
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.

Lower-prioritybitbox02/ui: use ConfirmResponse also in confirm()by benma's agent · cbfa555a · Feb 12, 2026 · 4 filesMessage 50 · ThinTriage 0Details
Commit message · benma's agent

bitbox02/ui: use ConfirmResponse also in confirm()

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedui: port tx address confirm to asyncby Niklas Dusenlund · a33e1d5d · Feb 12, 2026 · 5 filesMessage 60 · AdequateInformational 12Details
Commit message · Niklas Dusenlund

ui: port tx address confirm to async

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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a routine internal refactor of the BitBox02 firmware's user-interface code. It converts the transaction-address confirmation screen from a callback-based (synchronous-style) API to an async/await API. There is no indication in the commit that it fixes a security bug or changes security behavior; it appears to be a code-quality improvement.

Lower-priorityui: port trinary choice to asyncby Niklas Dusenlund · 93d5fcc5 · Feb 12, 2026 · 4 filesMessage 60 · AdequateTriage 0Details
Commit message · Niklas Dusenlund

ui: port trinary choice to async

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

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI review queueddocstring typoby Marko Bencun · 2590e08c · Feb 12, 2026 · 1 fileMessage 18 · OpaqueTriage 0Details
Commit message · Marko Bencun

docstring typo

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityui: port sdcard component to asyncby Niklas Dusenlund · 666e4ce3 · Feb 12, 2026 · 5 filesMessage 60 · AdequateTriage 0Details
Commit message · Niklas Dusenlund

ui: port sdcard component to async

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

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityui: port menu component to asyncby benma's agent · 28d794f4 · Feb 12, 2026 · 7 filesMessage 68 · AdequateTriage 0Details
Commit message · benma's agent

ui: port menu component to async

- The `cancel` field in `MenuParams` is deleted, as all callers set it
to true
- The `with_cancel` primitive that works with `Component` is inlined
into `bitbox02::ui::menu` - it's the only component with a cancel
prompt. If there will be more, we can think of an abstraction again.

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