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

Lower-priorityapi/restore: more robust unit testby Marko Bencun · db63e396 · Sep 10, 2025 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Marko Bencun

api/restore: more robust unit test

Test against fixtures.

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Security candidateapi: add BTCXpubsRequest to fetch multiple xpubs at onceby Marko Bencun · 0334a516 · Sep 10, 2025 · 14 filesMessage 90 · StrongLow 30Details
Commit message · Marko Bencun

api: add BTCXpubsRequest to fetch multiple xpubs at once

To reduce the number of secure chip operations needed, we introduce a
new API call to fetch multiple xpubs at once. This only requires two
operations in total, instead of two per xpub.

We want to reduce the number of secure chip operations to avoid
running into Optiga's throttling security measure.

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
cryptography-sensitive path
AI analysis · Low 30/100

This commit adds a new device API that lets a host computer request up to 20 Bitcoin extended public keys (xpubs) in a single call, instead of making one call per key. The goal is to reduce how often the device talks to its secure chip, avoiding a throttling safeguard. The change itself is a feature addition, not a fix for a known vulnerability, and the code applies existing keypath validation and a double-check against bitflips.

Lower-prioritybuild: fix sanitizersby Niklas Dusenlund · a33c43b0 · Sep 10, 2025 · 6 filesMessage 73 · AdequateInformational 12Details
Commit message · Niklas Dusenlund

build: fix sanitizers

The recommended way to enable sanitizers nowadays is to add
`-fsanitize=*` as a compiler and linking flags.

Also fix some warnings and remove some targets from "all" to speed up
builds.

Bumping macosx version to 11 since that seems to be necessary for asan
to work.

Add CI check to verify that address santizier is turned on for unit
tests

73/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
defensive validation
AI analysis · Informational 12/100

This is a build-system maintenance commit. It updates how the project enables AddressSanitizer and UndefinedBehaviorSanitizer so they work on modern toolchains, bumps the minimum macOS version for compatibility, and adds a CI check to confirm the sanitizer is actually linked into unit tests. There is no indication it fixes a security vulnerability in shipped firmware or in user funds.

AI review queuedxpubcache: typo in docstringby Marko Bencun · 1aa11698 · Sep 10, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

xpubcache: typo in docstring

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 fixes a single typo in a code comment (docstring). The example Bitcoin keypath was missing an apostrophe in one place (m/84/0'/0'/0/0 changed to m/84'/0'/0'/0/0). No actual program code was changed, so there is no functional or security impact.

Lower-prioritykeystore: port keystore_get_u2f_seed to Rustby Marko Bencun · fa2791e7 · Sep 9, 2025 · 6 filesMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

keystore: port keystore_get_u2f_seed to Rust

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidatekeystore: use bitcoin_hashes for hmacby Marko Bencun · 5c0907f9 · Sep 9, 2025 · 1 fileMessage 68 · AdequateInformational 18Details
Commit message · Marko Bencun

keystore: use bitcoin_hashes for hmac

We use both RustCrypto and bitcoin_hashes for hmac, but the latter
is much harder to remove, as it's in bip39, bip32, etc, so we prefer
this over RustCrypto.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
secret or key material
AI analysis · Informational 18/100

This commit swaps one internal cryptographic library for another when computing a special fingerprint used in a backup/recovery feature (BIP-85). The change is described by the developer as a cleanup to use a single, consistent library. There is no direct evidence in the commit that it fixes a security bug or that any vulnerability exists.

AI review queuedsimulator: Simulate Nova platformby Niklas Dusenlund · d5db2a17 · Sep 9, 2025 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

simulator: Simulate Nova platform

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 adds a new simulator/testing feature that pretends the device is a 'Nova' model. It only touches test and simulator code, not the real firmware that runs on customer hardware. There is no indication of a security bug or fix.

Security candidatekeystore: reduce secure chip operations by precomputing fingerprintby Marko Bencun · e3b21df8 · Sep 8, 2025 · 8 filesMessage 73 · AdequateInformational 19Details
Commit message · Marko Bencun

keystore: reduce secure chip operations by precomputing fingerprint

The root fingerprint API call, calling
`bitbox02_rust::keystore::root_fingerprint()`, used two securechip
operations. Using too many operations too quickly in Optiga leads to
throttling, and the BitBoxApp fetches the root fingerprint every time
the BitBox is unlocked.

We can get away with not using hte securechip at all to get the root
fingerprint, by computing and storing it during unlock.

The global static mut could have lived in keystore.c with the other
static muts there, but adding more C code and Rust wrappers seemed
wrong. For now it lives in bitbox02::keystore, and would move over to
bitbox02_rust::keystore when the unlocking functions are migrated to Rust.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 19/100

This commit is a performance and reliability improvement, not a security fix. It precomputes a wallet's 'root fingerprint' during device unlock and stores it in memory, so the BitBoxApp can read it later without repeatedly asking the secure chip. The secure chip was being throttled by too many rapid requests, which could slow down or temporarily block the device. The change removes that throttling risk and slightly reduces secure-chip wear, but it does not patch an exploitable vulnerability.

Lower-priorityCargo.toml: split feature into many linesby Marko Bencun · ac2b1505 · Sep 8, 2025 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

Cargo.toml: split feature into many lines

For readability and better diffs.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritycompile p256 only for u2fby Marko Bencun · bde1a9c6 · Sep 8, 2025 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

compile p256 only for u2f

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritykeystore: compile rust_secp256k1_get_private_key only for testingby Marko Bencun · c9a3dd89 · Sep 8, 2025 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Marko Bencun

keystore: compile rust_secp256k1_get_private_key only for testing

Not used in the firmware.

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Security candidatetest: refactor tests/simulator to compile more with cargoby Niklas Dusenlund · cf482332 · Sep 8, 2025 · 78 filesMessage 95 · StrongInformational 15Details
Commit message · Niklas Dusenlund

test: refactor tests/simulator to compile more with cargo

* Build C files from build.rs script and remove "bitbox_merged" hack.
* Move cmake specifics out of build.rs.
* Rust functions exposed as a C api has been moved to the respective
crates to remove circular dependencies.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a large internal cleanup of how the BitBox02 firmware's test code and simulator are built. It switches more of the build process to use Rust's standard Cargo tooling, removes a workaround called 'bitbox_merged,' and reorganizes Rust code to avoid circular dependencies. There is no indication this change fixes a security bug or introduces a new security feature.

Security candidaterust: Reduce count of depsby Niklas Dusenlund · 19d84ffe · Sep 5, 2025 · 414 filesMessage 72 · AdequateInformational 15Details
Commit message · Niklas Dusenlund

rust: Reduce count of deps

We use the same versions of the deps as the standard library to avoid
vendoring additional versions

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode
Why it was queued
authentication path
AI analysis · Informational 15/100

This commit removes several vendored Rust library dependencies (libc, proc-macro2, quote, syn, unicode-ident) and updates the Cargo.lock file. The stated goal is to reduce dependency count by using the same versions as the Rust standard library. There is no direct code change to the BitBox02 firmware logic, no bug fix, and no security patch visible in the diff.

Lower-prioritysecp: Don't build benchmarks/tests for depsby Niklas Dusenlund · abbb63b6 · Sep 4, 2025 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Niklas Dusenlund

secp: Don't build benchmarks/tests for deps

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-priorityhardfault: Make Abort more useful when developingby Niklas Dusenlund · f6c68c57 · Sep 4, 2025 · 1 fileMessage 70 · AdequateTriage 0Details
Commit message · Niklas Dusenlund

hardfault: Make Abort more useful when developing

If testing code calls abort, print the error message to stderr and exit
the process.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Lower-priorityrust: make workdirs more coherent amongst various cargo invocationsby Niklas Dusenlund · aac763ea · Sep 4, 2025 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · Niklas Dusenlund

rust: make workdirs more coherent amongst various cargo invocations

* Always execute cargo from the same place so that relative paths to CWD
always are the same.
* Always use the "same depth" target dir, so that relative paths to the
c-sources and files built by cmake stays the same.
* Give clippy its own target dir so that we don't have to wipe it before
every run

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
documentation-only discount
Lower-priorityapi/restore: add unit test and count security chip eventsby Marko Bencun · 9f146f9c · Sep 4, 2025 · 1 fileMessage 65 · AdequateTriage 0Details
Commit message · Marko Bencun

api/restore: add unit test and count security chip events

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Lower-prioritysecurechip: count optiga security events and integrate into testsby Marko Bencun · 13d636a6 · Sep 4, 2025 · 7 filesMessage 88 · StrongTriage 0Details
Commit message · Marko Bencun

securechip: count optiga security events and integrate into tests

We count the number of security events the securechip functions take,
and then assert in the keystore unit tests how many events the
functions take there.

This is a basis for trying to reduce the count, so we can measure the
changes properly. Too many events induce throttling.

88/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
AI review queuedrust: use bitcoin::bech32 re-exportby Marko Bencun · 38d5a5e8 · Sep 3, 2025 · 8 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

rust: use bitcoin::bech32 re-export

No need to depend on it explicitly, which removes the need to keep the
versions in sync.

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 dependency cleanup in the BitBox02 hardware wallet firmware. The developers removed a direct dependency on a small library called 'bech32' and instead started using the version that is already included through the larger 'bitcoin' library. The actual code behavior is unchanged; this is purely about simplifying package management and avoiding version mismatches.

Security candidateexternal/vendor: update bitcoin to v0.32.7by Marko Bencun · 3d18dfdf · Sep 3, 2025 · 46 filesMessage 45 · ThinLow 45Details
Commit message · Marko Bencun

external/vendor: update bitcoin to v0.32.7

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Low 45/100

This commit updates the vendored rust-bitcoin library inside the BitBox02 firmware from version 0.32.2 to 0.32.7. It is a routine dependency refresh that pulls in several upstream bug fixes and small feature additions, such as support for testnet4 and pay-to-anchor outputs. The commit does not describe itself as a security fix, and the visible changes are mostly API cleanups and correctness improvements rather than patches for an active vulnerability.

AI review queuedrun clang-formatby Marko Bencun · b15d8f66 · Sep 3, 2025 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Marko Bencun

run clang-format

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

This commit only reorders #include lines in a test helper file to match the project's code formatting rules. It makes no functional change and has no security relevance.

Lower-prioritykeystore: port get_ed25519_seed to Rustby Marko Bencun · 93af9dad · Sep 3, 2025 · 5 filesMessage 70 · AdequateTriage 0Details
Commit message · Marko Bencun

keystore: port get_ed25519_seed to Rust

ed25519.rs already had a copy of the unit tests in `test_get_seed()`.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Security candidatekeystore: port keystore_secp256k1_schnorr_sign to Rustby Marko Bencun · a6b69b33 · Sep 3, 2025 · 7 filesMessage 50 · ThinInformational 11Details
Commit message · Marko Bencun

keystore: port keystore_secp256k1_schnorr_sign to Rust

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
AI analysis · Informational 11/100

This commit rewrites a Bitcoin Schnorr signing function from C to Rust. It is a routine refactoring/porting change with no obvious security bug. The new Rust code does the same steps as the old C code: derive a private key, optionally tweak it, sign with a random auxiliary value, and return the signature. The old C implementation also verified the signature internally after signing; that post-sign verification step is removed in the Rust port, but the commit includes unit tests that verify produced signatures are valid.

Security candidaterust: bump to 2024by Niklas Dusenlund · 1a3bc6ee · Sep 2, 2025 · 74 filesMessage 43 · ThinInformational 15Details
Commit message · Niklas Dusenlund

rust: bump to 2024

We already had 2024 in one of the newer crates. This made rustfmt
confused, as rustfmt.toml had 2021.

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet path
AI analysis · Informational 15/100

This commit upgrades the Rust code edition from 2021 to 2024 across the project and applies the matching rustfmt formatting. It is a routine toolchain/language-version migration: Cargo.toml files are updated, import order is re-sorted, unsafe blocks are wrapped in new unsafe extern/unsafe {} syntax required by the 2024 edition, and test code is reformatted. There are no functional security fixes or behavior changes visible in the diff.

Security candidaterust: update bip32-ed25519by Marko Bencun · 17c3d0a4 · Sep 2, 2025 · 9 filesMessage 35 · OpaqueInformational 21Details
Commit message · Marko Bencun

rust: update bip32-ed25519

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Informational 21/100

This commit updates a vendored Rust library used for deriving cryptocurrency keys (bip32-ed25519) from version 0.2.0 to 0.2.1. The visible code changes are mostly housekeeping: updating Rust edition, formatting, and explicitly zeroing out sensitive key data when dropped. There is no direct evidence in the commit message or diff of a security vulnerability being fixed, but updating a cryptographic dependency can sometimes include undisclosed fixes.