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 queue200AI analyses
28commits · 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 Bencun390117119258
benma's agent892831162
Niklas Dusenlund1112929059
cedwies1256063
Tomas Vrba944074
Cedric Wiese1234049
Jad811062
thisconnect211072
benma211074
Niklas111035
Yasser Aziza111070
Patrick Steiger111045
Analysis record

Published AI watches

Last scanned 52 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.

Security candidateremove keystore.cby benma's agent · a8d387df · Dec 22, 2025 · 5 filesMessage 43 · ThinInformational 12Details
Commit message · benma's agent

remove keystore.c

The two remaning functions are unrelated to keystore, and inlined into
the Rust C wrappers of secp256k1.

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 12/100

This commit removes an old C source file called keystore.c and moves two small cryptographic helper functions directly into the Rust part of the project. The functions themselves still do exactly the same secp256k1 signing and nonce-commitment work as before; they are just called from Rust instead of going through a thin C wrapper. There is no indication this fixes or introduces a security bug.

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.

Security candidaterust: move secp256k1 funcs from keystore.rs to secp256k1.rsby benma's agent · d5b90e6a · Dec 22, 2025 · 9 filesMessage 65 · AdequateInformational 15Details
Commit message · benma's agent

rust: move secp256k1 funcs from keystore.rs to secp256k1.rs

They are not related to the keystore. The keystore.c functions they
use will be dealt with in the next commit.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a simple code reorganization: it moves functions that perform secp256k1 cryptographic signing from a file named keystore.rs into a file named secp256k1.rs. The actual behavior of the code, including how private keys are used and how signatures are produced, does not change. It is a refactoring, not a security fix or vulnerability.

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.

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.

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.

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.

Security candidateadd attestation_sign to securechip HALby benma's agent · 28e8957b · Nov 27, 2025 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · benma's agent

add attestation_sign to securechip HAL

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
update trustboot or update path
AI analysis · Informational 15/100

This commit is a straightforward internal refactoring: it moves the device attestation signing function behind a hardware-abstraction-layer (HAL) interface so the code can be more easily tested. The actual cryptographic operation and the data it uses remain unchanged. There is no indication this fixes or introduces a security vulnerability.

Security candidateHAL/SecureChip: add kdf()by Marko Bencun · ef85ad35 · Nov 27, 2025 · 31 filesMessage 70 · AdequateLow 32Details
Commit message · Marko Bencun

HAL/SecureChip: add kdf()

Due to copy_seed and copy_bip39_seed needing kdf, a ton of functions
are infected by the HAL param, as so many of them transitively make
use of these functions.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
secret or key materialsigning or wallet path
AI analysis · Low 32/100

This commit is a large internal refactoring of the BitBox02 firmware. It adds a new secure-chip key-derivation function (KDF) to the hardware abstraction layer (HAL) and threads that HAL through many existing functions so they can use it. The change touches 31 files and many tests, but it does not appear to introduce a new security vulnerability on its own. It is a structural change that prepares the code for using the secure chip's KDF more consistently.

Security candidatehww: add change password workflowby cedwies · f30b1203 · Nov 27, 2025 · 14 filesMessage 73 · AdequateLow 36Details
Commit message · cedwies

hww: add change password workflow

Currently, changing the device password requires a full device reset
and restoration from a backup. This process is cumbersome and increases
the risk of user error or seed exposure during the restoration process.

This patch introduces a native "Change Password" workflow that allows
the user to rotate their device password without resetting the device.

The workflow:
1. Forces the user to re-enter the current password for security, even
if the device is already unlocked.
2. Prompts for the new password (entered twice).
3. Re-encrypts the stored seed and BIP39 entropy with the new password
using the Secure Chip for key stretching.

The implementation ensures that the wallet identity (Root Fingerprint
and BIP39 seed) is preserved, so the device remains paired and
functional with the same accounts (including passphrase) after the
password change.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnesssecret or key materialaccess controlcryptography-sensitive path
AI analysis · Low 36/100

This commit adds a new 'Change Password' feature to the BitBox02 hardware wallet. Instead of resetting the device and restoring from a backup, users can now change their device password directly. The wallet re-encrypts the stored seed with the new password while keeping the same accounts and identity. The change is a normal product feature, not a security fix, but it touches sensitive crypto code that protects the user's funds.

Security candidateFirmware v9.24.0 verificationby Yasser Aziza · d969a6b2 · Nov 23, 2025 · 2 filesMessage 70 · AdequateInformational 15Details
Commit message · Yasser Aziza

Firmware v9.24.0 verification

Signed-off-by: Yasser Aziza <yasser@posteo.net>

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
defensive validationboot or update path
AI analysis · Informational 15/100

This commit adds two digital signature files for the BitBox02 firmware version 9.24.0. These signatures are used to publicly verify that the released firmware binaries are authentic and have not been tampered with. There is no code change and no indication of a security vulnerability.

Security candidateport test_memory_functional C tests to Rustby benma's agent · 5ed0c203 · Nov 19, 2025 · 6 filesMessage 70 · AdequateInformational 15Details
Commit message · benma's agent

port test_memory_functional C tests to Rust

test_get_attestation_bootloader_hash is dropped as it's redundant with
the other more involved test that was ported.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
update trustseed or entropy path
AI analysis · Informational 15/100

This commit is a routine refactoring that rewrites existing C unit tests in Rust. It does not change the actual firmware behavior or fix any security issue. One redundant test was removed, and several internal test-only helpers were added so the Rust tests can call the same underlying C memory functions.

Security candidatekeystore: add locked lockout testby benma's agent · 39c1f85f · Nov 12, 2025 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · benma's agent

keystore: add locked lockout test

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

This commit only adds a new automated test to the BitBox02 firmware. It checks that entering the wrong password repeatedly while the device is already locked correctly triggers the lockout mechanism and eventually wipes the seed. There is no change to production code, no new feature, and no fix to an existing bug.

Security candidateorientation-screen: Migrate to rustby Niklas Dusenlund · eb9513b3 · Nov 12, 2025 · 27 filesMessage 60 · AdequateInformational 24Details
Commit message · Niklas Dusenlund

orientation-screen: Migrate to rust

create an async friendly hardware supported delayin C and wrap it in
rust using Future.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 24/100

This commit rewrites the BitBox02's startup orientation screen from C to Rust and introduces a new shared delay/timer subsystem. It is a refactoring change: the device still asks the user to pick screen orientation at boot, then waits 1.3 seconds before switching to the lock screen and enabling USB/Bluetooth. The rewrite changes how internal timers and product-version strings are handled, but it does not add or remove security features. There is no vendor statement that this fixes a security bug.

Security candidatekeystore: port copy_seed and retain_seed to Rustby Marko Bencun · 35dd5c89 · Nov 12, 2025 · 5 filesMessage 60 · AdequateLow 26Details
Commit message · Marko Bencun

keystore: port copy_seed and retain_seed to Rust

Same as with the bip39 seed in the previous commit.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
secret or key material
AI analysis · Low 26/100

This commit rewrites two internal seed-handling functions from C to Rust as part of an ongoing porting effort. It moves where the encrypted wallet seed is stored and how it is decrypted, but keeps the same encryption design. There is no direct evidence in the commit that this fixes or introduces a security bug; it is primarily a code-rewrite change.

Security candidatekeystore: port bip39 unlock/retain to Rustby Marko Bencun · e0451ea8 · Nov 12, 2025 · 6 filesMessage 80 · StrongLow 26Details
Commit message · Marko Bencun

keystore: port bip39 unlock/retain to Rust

retain_bip39_seed encrypted the seed, copy_bip39_seed decrypted
it. This is ported to a helper struct `RetainedEncryptedBuffer` that
does the same. The helper struct is made because the other
seed (_retained_seed_encrypted) does the exact same operation, just
with a different purpose string when hashing, so we can reuse that
later when porting retain_seed/copy_seed.

_is_unlocked_bip39 is not ported, as it is redundant and equivaent with
RETAINED_BIP39_SEED being Some().

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
secret or key material
AI analysis · Low 26/100

This commit rewrites the code that keeps the BIP-39 seed temporarily encrypted in memory, moving it from C to Rust. It is a refactoring/porting change, not a fix for a known bug or attack. The same encryption approach is preserved, but the change touches sensitive seed-handling code, so it deserves careful review.

Security candidateformatting: Indent preprocessor directivesby Niklas Dusenlund · 90895379 · Nov 5, 2025 · 63 filesMessage 35 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

formatting: Indent preprocessor directives

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathseed or entropy pathboot or update pathparser or protocol path
AI analysis · Informational 15/100

This commit is purely a code-style change. It tells the project's automatic formatter (clang-format) to indent preprocessor directives like #if, #include, and #error, and then applies that new rule across many source files. No program logic, security checks, or behavior were changed.

Security candidaterust/hal: add Random to HALby benma's agent · 1c787d45 · Nov 3, 2025 · 3 filesMessage 95 · StrongInformational 19Details
Commit message · benma's agent

rust/hal: add Random to HAL

Will allow to input different implementations in bb02, future
bitboxes, unit tests, simulator, etc.

The two Taproot signature checks are adjusted, as they changed due to
using the new testing random numbers.

95/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnesssigning boundarysigning or wallet path
AI analysis · Informational 19/100

This commit is a routine code refactor, not a security fix. It moves the source of random numbers behind a new 'hardware abstraction layer' (HAL) interface so the same code can use a fake predictable random generator during automated tests and the real secure random generator on the actual BitBox02 device. The only production behavior change is that Taproot/Schnorr signing now fetches its auxiliary randomness through this new interface instead of calling the device's random function directly. The real-device implementation still uses the same secure random function as before, so security properties are unchanged.

Security candidatekeystore: port antiklepto protocol test to Rustby benma's agent · c3e9f440 · Nov 3, 2025 · 6 filesMessage 55 · ThinInformational 13Details
Commit message · benma's agent

keystore: port antiklepto protocol test to Rust

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 13/100

This commit is a straightforward refactoring: it moves an existing anti-klepto protocol unit test from C to Rust. No production firmware code is changed, and no security vulnerability is introduced or fixed. The same cryptographic checks are still performed, just in a different test language.

Security candidateAssert firmware-btc-v9.23.3by Patrick Steiger · 91bf6418 · Nov 3, 2025 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Patrick Steiger

Assert firmware-btc-v9.23.3

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit adds a PGP public key and a signature file for a firmware release. It is a routine release attestation step, not a code change, and contains no security fix or vulnerability.

Security candidaterust/keystore: move bip39_unlock and ROOT_FINGERPRINTby Marko Bencun · d02d1390 · Oct 30, 2025 · 3 filesMessage 50 · ThinInformational 12Details
Commit message · Marko Bencun

rust/keystore: move bip39_unlock and ROOT_FINGERPRINT

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

This commit is a code reorganization: it moves the BIP39 seed derivation and root fingerprint storage from one Rust module to another. The same logic is preserved, including a safety check that derives the seed twice to detect memory corruption. There is no visible security fix or vulnerability being introduced.

Security candidatereleases: assert v9.24.0by Niklas Dusenlund · 48283beb · Oct 30, 2025 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · Niklas Dusenlund

releases: assert v9.24.0

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit adds two digital signature files for the BitBox02 firmware version 9.24.0. These signatures are part of the release attestation process, where a trusted person (here, 'nickez') cryptographically signs the released firmware so users can verify its authenticity. No code was changed, and there is no indication of any security bug or vulnerability.

Security candidaterust: move bitbox02::keystore::bip39_mnemonic_from_seed() to bip39 moduleby Marko Bencun · c4c11807 · Oct 30, 2025 · 4 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

rust: move bitbox02::keystore::bip39_mnemonic_from_seed() to bip39 module

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

This commit is a simple internal code reorganization: a function that converts a seed into a BIP39 recovery phrase is moved from one Rust module to another, with all callers updated. The actual behavior of the function is unchanged, and no security bug is introduced or fixed.

Security candidaterust/keystore: move mock_unlocked() etc to bitbox02_rust::keystoreby Marko Bencun · 1d0096a9 · Oct 30, 2025 · 28 filesMessage 50 · ThinInformational 15Details
Commit message · Marko Bencun

rust/keystore: move mock_unlocked() etc to bitbox02_rust::keystore

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

This commit is a code cleanup and refactoring change. It moves test-only helper functions (used to simulate an unlocked device during automated tests) from one internal Rust module to another, closer to where they are actually used. It also moves a BIP39 mnemonic-to-seed conversion function into a more appropriate module. There is no change to the actual device firmware behavior, user-facing functionality, or security logic.

Security candidaterust/keystore: wrap unlock_bip39() and copy_bip39_seed() in bitbox02-rustby Marko Bencun · 46514177 · Oct 30, 2025 · 6 filesMessage 73 · AdequateInformational 18Details
Commit message · Marko Bencun

rust/keystore: wrap unlock_bip39() and copy_bip39_seed() in bitbox02-rust

Original is renamed so the compiler can error if we missed one.

By moving all keystore calls to bitbox02_rust::keystore, we can more
easily replace the function bodies with native Rust
implementations (without wrapping C).

73/100 · AdequateMessage clarity
✓ Specific, 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 is a routine internal code reorganization in the BitBox02 firmware. It moves two existing keystore functions—used to unlock and copy the BIP39 seed—into a higher-level Rust wrapper module, and renames the original low-level functions with an underscore prefix so the compiler flags any remaining direct callers. The change does not alter the cryptographic behavior, add new user-facing features, or fix a known security bug. It is preparation for a future native Rust implementation.