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 queue338AI 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 Bencun390117194258
benma's agent892855162
Niklas Dusenlund1112955059
cedwies1257063
Tomas Vrba947074
Cedric Wiese1239049
Jad814062
thisconnect211072
benma211074
Niklas111035
Yasser Aziza111070
Patrick Steiger111045
Analysis record

Published AI watches

Last scanned 22 minutes ago

Moderate 59 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/validate-backup-seed-length'

This commit adds a safety check to the BitBox02 hardware wallet's backup loading code. It now rejects backup files that claim to contain a 'seed' longer than 32 bytes. Without this check, a tampered or malformed backup could potentially ca…

Added input validation on deserialized seed_length fieldBounds check prevents oversized seed length (>32 bytes) from being acceptedNew unit test covers malformed backup with seed_length mismatch
f6d2942cby Marko Bencun+34−01 file
No security note in commit
Low 44 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/reject-oversized-policy-keys'

This commit adds a length check before showing a Bitcoin policy key on the BitBox02 device screen. Previously, an extremely long key string could be displayed or processed without a size limit. The fix rejects keys whose on-screen text exc…

Input size limit added before UI confirmationNew unit test for boundary condition (MAX_CONFIRM_BODY_SIZE and MAX_CONFIRM_BODY_SIZE + 1)Potential UI truncation or buffer issue mitigated for policy key display
1e674dfcby Marko Bencun+43−01 file
No security note in commit
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 44 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

btc: reject oversized policy keys

This commit fixes a user-interface safety issue in the BitBox02 hardware wallet's Bitcoin multi-signature policy registration. Previously, a very long policy key could be approved by the user even though the device could not display the fu…

Input validation added to enforce UI display limitPrevents registration of keys that cannot be fully displayedBoundary test added at MAX_CONFIRM_BODY_SIZE and MAX_CONFIRM_BODY_SIZE+1
203bb0aaby benma's agent+43−01 file
Vendor flagged security relevance
Informational 15 AI analysisMessage 60 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bb03 ui: replace long touch with slide to confirm

This commit changes how users confirm sensitive actions on the BitBox03 hardware wallet. It replaces a 'hold/long-press to confirm' button with a 'slide to confirm' gesture, similar to the swipe gestures used on many smartphone lock screen…

cc6ae75dby Jad+40−781 file
No security note in commit
Low 28 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bb03 UI: slide to confirm

This commit adds a new 'slide to confirm' user-interface control to the BitBox03 hardware wallet. It is a deliberate UX/security feature for high-risk actions (like approving transactions), replacing a simple tap with a drag gesture. The c…

New high-stakes confirmation gesture (slide instead of tap)Input hardening: per-sample advance cap, off-track rejection, non-pointer rejectionSnap-back behavior on incomplete slides to prevent accidental confirmation
30a68c8dby Jad+3076−111 files
No security note in commit
Informational 11 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

u2f: fix refresh screen

This commit fixes a UI cleanup bug in the BitBox02 hardware wallet's U2F (Universal 2nd Factor) feature. Previously, a 'Refresh webpage' screen could be destroyed without clearing the pointer that tracked it, potentially leaving a dangling…

dangling-pointer mitigationuse-after-free preventionfirmware UI state cleanup
890f4ce3by benma's agent+17−11 file
No security note in commit
Low 27 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

u2f: fix nudge screen

This commit fixes how a small on-screen reminder (the 'nudge screen') for U2F is created, tracked, and cleaned up. Before the fix, the code could lose track of the reminder screen or mishandle its removal, which might cause display glitche…

Use-after-free / dangling-pointer risk: global _nudge_label pointer could outlive the component it referencesUI state inconsistency: previous callback set _nudge_label = NULL on screen pop, but component cleanup may occur later or not at allMemory management fix: custom cleanup wrapper now synchronizes global pointer with component lifetime
931e75d6by benma's agent+22−71 file
No security note in commit
Low 42 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Fix GroundedCell result lifetime

This commit fixes a bug in the U2F confirmation workflow where the firmware could read a result from memory that had already been cleared, potentially giving an incorrect success/failure answer. The fix simply reads the result before wipin…

use-after-clear / stale reference in task stateincorrect result lifetime orderingU2F confirmation workflow
dcd408f9by benma's agent+1−11 file
No security note in commit
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
Moderate 60 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

factorysetup: validate RTT message length

This commit fixes a bug in the BitBox02 factory setup tool that receives debug messages over SEGGER RTT. Previously, if a message said it contained more bytes than were actually received, the code would copy whatever leftover data happened…

Copy of uninitialized stack data into command buffer (information disclosure / undefined behavior)Missing length validation against actual bytes receivedFactory-only code path (factorysetup), not normal user firmware operation
bb882fc0by benma's agent+5−01 file
Vendor flagged security relevance
Low 42 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

memory: initialize BLE random buffer

This commit fixes a minor but real security hygiene issue in the BitBox02 Plus hardware wallet. Before the patch, a 32-byte buffer meant to hold freshly generated random bytes for Bluetooth Low Energy (BLE) pairing security was not initial…

Uninitialized cryptographic buffer in security-critical reset routineBLE identity key (IRK) and identity address derivation contextDefense-in-depth initialization of random material
135bb8baby benma's agent+1−11 file
No security note in commit
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
Moderate 59 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

btc: limit Miniscript encoding depth

This commit adds a safety limit to how deeply nested a Bitcoin policy (a set of spending rules) can be before the BitBox02 hardware wallet will reject it. Without such a limit, an attacker could craft an unusually deep policy that causes t…

Adds explicit depth bound to prevent recursive stack exhaustionApplies to both WSH and Taproot (TR) policy parsing pathsIncludes boundary and regression-style tests for deep policies
82346eebby benma's agent+109−01 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
Informational 15 AI analysisMessage 43 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

prepare v9.26.5

This commit is a routine release bookkeeping change. It updates the version number from v9.27.0 to v9.26.5 and reorganizes the changelog so that two bug fixes are listed under the new v9.26.5 release section instead of 'Unreleased'. The ac…

51ce24e6by benma's agent+5−22 files
No security note in commit
Low 30 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

api: disable BitBoxSync by default

This commit turns off a feature called BitBoxSync by default. Unless a developer explicitly enables it during build, any request to use BitBoxSync will now receive a standard 'disabled' error. The change is framed as temporary while API ch…

Feature-gates an API that was previously reachable by defaultReturns Error::Disabled for requests to the gated APICommit message describes the change as temporary pending API changes
93d36fc8by benma's agent+7−02 files
No security note in commit
Low 42 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

rust: bound executor queue

This commit replaces an unbounded task queue inside the BitBox02 firmware's Rust executor with a fixed 16-slot ring buffer. It also adds a hard limit of 16 active tasks and protects queue access with critical sections so interrupt-driven c…

Replaced unbounded queue with fixed-capacity ring buffer to prevent memory exhaustionRemoved allocation from scheduling/wake path, including interrupt contextAdded critical-section synchronization between wakers and main-loop executor
b99e200aby benma's agent+186−285 files
No security note in commit
Moderate 57 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

rust: use static no-op waker

This commit replaces a custom-built notification helper (a 'waker') inside the BitBox02 firmware's Rust code with a built-in, memory-safe no-op version. The old helper used heap memory and reference counting (Arc), which could be freed by …

Eliminates heap-allocated Arc in waker constructionRemoves custom RawWakerVTable with unsafe clone/wake/drop operationsPrevents ISR callbacks from freeing Arc while heap allocator is active
5be42f61by benma's agent+2−523 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

usb: block HWW during U2F workflows

This commit fixes a concurrency bug in the BitBox02 hardware wallet's USB handling. When a U2F (two-factor authentication) workflow is still running on the device's screen, a new hardware wallet request could previously start and reset or …

Concurrency/lifetime bug between HWW and U2F USB endpointsUse-after-free or invalidation risk for live U2F UI objectsSession reset/cancellation path could corrupt shared UI state
0014300bby benma's agent+114−05 files
No security note in commit
Repository ledger

Explore captured commits

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

Security candidatekeystore: move keystore_get_bip39_word_stack out of keystore.cby benma's agent · 9fd859e5 · Dec 22, 2025 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · benma's agent

keystore: move keystore_get_bip39_word_stack out of keystore.c

It has nothing to do with the keystore.

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
secret or key material
AI analysis · Informational 15/100

This commit simply moves a helper function that looks up a BIP39 word by its index from one source file to another. The function's behavior and the callers' logic are unchanged; it is a code cleanup with no security impact.

Lower-prioritybuild: fix secp256k1 link orderby benma's agent · 5ec143da · Dec 22, 2025 · 1 fileMessage 92 · StrongTriage 0Details
Commit message · benma's agent

build: fix secp256k1 link order

Fix undefined secp256k1_* symbols when linking firmware. These errors
would happen if keystore.c stops referencing the secp256k1
symbols (see later commit).

We link libsecp256k1 as a static archive and the linker resolves
static libs left-to-right, only pulling in objects that satisfy
currently-unresolved symbols. Since the Rust archive introduces the
secp256k1_* references, it must appear before the secp256k1 library on
the link line (otherwise the linker scans secp256k1 too early and
doesn't pull the needed objects).

92/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
documentation-only discount
Lower-priorityworkflow/status: use delay_for instead of frame counterby Marko Bencun · 3f0a5df6 · Dec 21, 2025 · 7 filesMessage 50 · ThinTriage 0Details
Commit message · Marko Bencun

workflow/status: use delay_for instead of frame counter

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidatereadme: improve py/readme.md with install instructionsby thisconnect · e3ea774b · Dec 21, 2025 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · thisconnect

readme: improve py/readme.md with install instructions

Added copy / pasteable instructions so that users without deeper
python knowledge can just use the python scripts.
i.e. users without knowledge about venv.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit only updates user documentation (README) and adds a binary firmware file. There is no code change that fixes or introduces a security vulnerability. It is a routine documentation improvement.

Lower-prioritygitignore: ignore .venv directoriesby thisconnect · 666d3c33 · Dec 21, 2025 · 1 fileMessage 58 · ThinTriage 0Details
Commit message · thisconnect

gitignore: ignore .venv directories

The venv module supports creating lightweight "virtual environments",
each with their own independent set of Python packages usually
installed in a local .venv directory.

These packages, should not be commited an can be ignored.

For example in case a user sets up a python virtual environment for
the python scripts in py directory.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Lower-prioritydeduplicate MAX_UNLOCK_ATTEMPTS defineby Marko Bencun · c63e1978 · Dec 18, 2025 · 4 filesMessage 50 · ThinTriage 0Details
Commit message · Marko Bencun

deduplicate MAX_UNLOCK_ATTEMPTS define

pub consts in bitbox02-rust are exposed as defines in rust.h, so we
can drop the C defines.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
Lower-prioritybuild.rs: remove unused MAX_UNLOCK_ATTEMPTSby Marko Bencun · cfaceb8e · Dec 18, 2025 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Marko Bencun

build.rs: remove unused MAX_UNLOCK_ATTEMPTS

Its use in Rust was removed in 1266caf5800b589c5621612031f03d96d7def291.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI review queuedoptiga: remove redefinitionby Marko Bencun · 9e729ac2 · Dec 18, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

optiga: remove redefinition

It's already in optiga.h

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 duplicate definition of a constant in one file because the same definition already exists in a header file. It is a routine cleanup with no security impact.

Lower-priorityMove salt_root functions to HALby cedwies · d0db51a2 · Dec 18, 2025 · 3 filesMessage 90 · StrongTriage 0Details
Commit message · cedwies

Move salt_root functions to HAL

Centralizes salt root access behind the HAL abstraction,
enabling full test isolation without C memory dependencies.

TestingHal initializes with a default salt root to preserve
existing test behavior without manual setup in each test.

The 2 rust_salt_hash_data tests keep using mock_memory() +
C-backed salt root because the extern "C" shim internally
constructs BitBox02Hal—these tests verify the FFI path works.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-priorityMoves "unlock_attempts" functions to HALby cedwies · 1266caf5 · Dec 18, 2025 · 6 filesMessage 45 · ThinTriage 0Details
Commit message · cedwies

Moves "unlock_attempts" functions to HAL

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidaterust: update toolchain to 1.92by Marko Bencun · a2fd5f58 · Dec 18, 2025 · 372 filesMessage 80 · StrongLow 25Details
Commit message · Marko Bencun

rust: update toolchain to 1.92

There is a breaking change about abort_immediate_panic, see
CMakeLists.txt.

Also called `cargo update --precise 0.2.177 libc` in src/rust to align
the libc we use with the one in stdlib, to avoid a duplicate dep.

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
seed or entropy pathauthentication path
AI analysis · Low 25/100

This commit updates the Rust compiler toolchain from an unspecified earlier version to Rust 1.92 for the BitBox02 hardware wallet firmware. It also refreshes many vendored third-party Rust libraries (such as libc, hashbrown, getopts) and build tools (cbindgen, bindgen). The stated reason is compatibility with the new toolchain, including a breaking change around panic handling. There is no direct evidence in the commit that this fixes a known security vulnerability, but toolchain and dependency updates can affect security-relevant behavior such as memory safety, panic handling, and type definitions used in cryptographic code.

Lower-priorityoptiga: add _reset_counter util functionby Marko Bencun · aceb1613 · Dec 16, 2025 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

optiga: add _reset_counter util function

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityoptiga: add initial optiga_test.cby benma's agent · 93c97b49 · Dec 16, 2025 · 7 filesMessage 78 · AdequateTriage 0Details
Commit message · benma's agent

optiga: add initial optiga_test.c

The optiga sync ops functions are moved to a new file so they can be
faked in the unit test.

Some defines are moved from optiga.c to optiga.h to make them
available to the unit tests.

The unit test file itself fakes the optiga ops functions to a useful
degree.

The goal is to unit test the stretching algo based on fixtures, so we
can catch regressions.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityoptiga: remove unused hal_delay.h includeby benma's agent · 49a8ba6a · Dec 16, 2025 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · benma's agent

optiga: remove unused hal_delay.h include

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidaterust/util: add unit tests for rust_hmac_sha256/rust_hmac_sha512by benma's agent · 3e2eb99a · Dec 16, 2025 · 3 filesMessage 83 · StrongInformational 15Details
Commit message · benma's agent

rust/util: add unit tests for rust_hmac_sha256/rust_hmac_sha512

And make sure overlaps are allowed explicitly, which we make use of
for example in atecc.c/optiga.c.

rust_sha256 code is also adjusted to be consistent in style (drop
`data` before using `out`).

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

This commit adds unit tests for two cryptographic helper functions and slightly reorders their internal steps so the output buffer is only written after the HMAC calculation is complete. The change makes it safe for the output buffer to overlap with the input or key buffers, and documents that overlap is allowed. There is no new vulnerability here; it is a defensive hardening and testing improvement.

Lower-priorityoptiga: move initialization code out of verify functionby Marko Bencun · 3c05aa03 · Dec 15, 2025 · 1 fileMessage 83 · StrongTriage 0Details
Commit message · Marko Bencun

optiga: move initialization code out of verify function

The verify_config function not only verified, but also set the
protection level and opened the util application.

This is part if moved out, so the verify function only verifies slot
metadata.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityadd initial AGENTS.mdby Marko Bencun · 2857b675 · Dec 11, 2025 · 1 fileMessage 51 · ThinTriage 0Details
Commit message · Marko Bencun

add initial AGENTS.md

To support agentic reviews and coding workflows.

It was generated using the codex init command, with some manual
modifications and extensions by myself.

Unsure if the docker instructions will work or are helpful, but we can
iterate this later.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
Lower-priorityPrevent memory_reset_hww from masking flash write failuresby cedwies · 42b1a4c5 · Dec 11, 2025 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · cedwies

Prevent memory_reset_hww from masking flash write failures

memory_reset_hww combined the CHUNK_1 write result and the
shared BLE chunk write using |=, so a later successful
write could hide an earlier failure. Change both writes to
be checked individually and return false on the first
failure, making the function only report success when all
flash writes succeed.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritytests: remove C fake secure chip event counterby Marko Bencun · f058aecc · Dec 9, 2025 · 6 filesMessage 78 · AdequateTriage 0Details
Commit message · Marko Bencun

tests: remove C fake secure chip event counter

The events are counted in TestingHal now. The only check that is
removed is for root_fingerprint(), which does not use the HAL and so
is naturally not calling any securechip function.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Security candidatehal: add Memory HALby benma's agent · f174e0aa · Dec 8, 2025 · 18 filesMessage 38 · OpaqueInformational 18Details
Commit message · benma's agent

hal: add Memory HAL

With unit tests for `password::enter`

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
AI analysis · Informational 18/100

This commit is a code refactoring that introduces a new 'Memory' hardware abstraction layer (HAL) in the BitBox02 firmware. It moves direct memory access calls behind a trait interface so the code can be more easily tested with mock memory. There is no direct evidence in the commit of a security vulnerability being fixed; it appears to be a structural improvement that also adds unit tests for password entry behavior.

Lower-priorityhal: use u2f_counter_setby Marko Bencun · ba136d9a · Dec 8, 2025 · 2 filesMessage 43 · ThinTriage 0Details
Commit message · Marko Bencun

hal: use u2f_counter_set

Somehow was missed when it was added HAL.

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Lower-priorityoptiga: fix wrong error valueby Marko Bencun · 4c1c0113 · Dec 6, 2025 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Marko Bencun

optiga: fix wrong error value

The error can basically not happen (it can only happen when the salt root
unset, which is never the case when Optiga functions are used).

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritybitbox02/memory: add unit test coverageby benma's agent · a5e23273 · Dec 4, 2025 · 1 fileMessage 78 · AdequateTriage 0Details
Commit message · benma's agent

bitbox02/memory: add unit test coverage

We will be adding all of these to a Memory HAL, so they will not be
indirectly tested anymore by all the tests in bitbox02-rust. We add
unit tests for them here, which serve as unit tests for the BitBox02
C memory functions.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI review queuedport reset_reset to Rustby benma's agent · ea8c87d0 · Dec 4, 2025 · 15 filesMessage 28 · OpaqueInformational 12Details
Commit message · benma's agent

port reset_reset to Rust

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

This commit rewrites the device factory-reset routine from C to Rust. It is a straightforward language port: the same steps (lock keystore, reset secure-chip keys, reset U2F counter, wipe memory, disable SmartEEPROM, show a status screen, reboot) are preserved. The change also adds unit tests and makes the unlock function asynchronous so it can call the new async reset. Nothing in the diff introduces a new vulnerability or changes security-critical behavior in a suspicious way.

Lower-priorityscripts/dockerenv: fix docker images compatbilityby Marko Bencun · cf6cae85 · Dec 1, 2025 · 1 fileMessage 76 · AdequateTriage 0Details
Commit message · Marko Bencun

scripts/dockerenv: fix docker images compatbility

A new docker version defaults the output to some human readable
version that does not match the expected format, so the check always
fails in that case.

See also: https://github.com/docker/cli/issues/6650

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference