bitbox02_rust: enable app/firmware features in simulator
What changed, and why it matters
This commit is a build/test configuration fix for the BitBox02 graphical simulator. It enables the same cryptocurrency app features (Bitcoin, Litecoin, Ethereum, Cardano) and firmware feature in the simulator that were already available in the real device build. The change only affects the simulator's compiled feature flags and dependency lock file; it does not change any user-facing behavior or fix a security vulnerability.
No security action required. Treat as a normal build/test maintenance commit. If reviewing, verify that the simulator now exercises the same code paths as the firmware build and that no unintended production code is pulled into the simulator only.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch modifies src/rust/bitbox02-rust/Cargo.toml so the simulator-graphical feature now includes app-bitcoin, app-litecoin, app-ethereum, app-cardano, and firmware in addition to bitbox02/simulator-graphical. The Cargo.lock file is updated to reflect the newly pulled-in transitive dependencies (bip32-ed25519, blake2, crc, ed25519-dalek, erc20_params, keccak, minicbor, miniscript, num-bigint, sha3, streaming-silent-payments, etc.). The commit message explains this was needed because bitbox02_rust_c is not a dependency in the graphical simulator, so the features it previously enabled were disabled. This is a parity/fix-up change for the simulator build, not a runtime security fix.
Changed components
src/rust/bitbox02-rust/Cargo.tomltest/simulator-graphical-bb03/Cargo.lockBitBox02 graphical simulator build configurationInspect captured patch +144 / −3
diff --git a/src/rust/bitbox02-rust/Cargo.toml b/src/rust/bitbox02-rust/Cargo.toml
index 43c62ac..f7da181 100644
--- a/src/rust/bitbox02-rust/Cargo.toml
+++ b/src/rust/bitbox02-rust/Cargo.toml
@@ -106,7 +106,14 @@ testing = [
c-unit-testing = []
-simulator-graphical = ["bitbox02/simulator-graphical"]
+simulator-graphical = [
+ "bitbox02/simulator-graphical",
+ "app-bitcoin",
+ "app-litecoin",
+ "app-ethereum",
+ "app-cardano",
+ "firmware",
+]
firmware = []
diff --git a/test/simulator-graphical-bb03/Cargo.lock b/test/simulator-graphical-bb03/Cargo.lock
index f4805a0..5131fcf 100644
--- a/test/simulator-graphical-bb03/Cargo.lock
+++ b/test/simulator-graphical-bb03/Cargo.lock
@@ -293,6 +293,17 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72"
+[[package]]
+name = "bip32-ed25519"
+version = "0.2.1"
+source = "git+https://github.com/BitBoxSwiss/rust-bip32-ed25519?tag=v0.2.1#385d8a907f694aab7ca3f61ad603804c72ac520a"
+dependencies = [
+ "curve25519-dalek",
+ "digest",
+ "hmac",
+ "zeroize",
+]
+
[[package]]
name = "bip39"
version = "2.2.0"
@@ -435,6 +446,7 @@ name = "bitbox02-rust"
version = "0.1.0"
dependencies = [
"binascii",
+ "bip32-ed25519",
"bip39",
"bitbox-aes",
"bitbox-bytequeue",
@@ -448,15 +460,25 @@ dependencies = [
"bitbox02-noise",
"bitcoin",
"bitcoin_hashes",
+ "blake2",
+ "crc",
"digest",
+ "ed25519-dalek",
+ "erc20_params",
"futures-lite",
"hex",
"hex_lit",
"hmac",
+ "keccak",
+ "minicbor",
+ "miniscript",
+ "num-bigint",
"num-traits",
"prost",
"serde_json",
"sha2",
+ "sha3",
+ "streaming-silent-payments",
"util",
"zeroize",
]
@@ -494,7 +516,7 @@ dependencies = [
"bitcoin-io",
"bitcoin-units",
"bitcoin_hashes",
- "hex-conservative",
+ "hex-conservative 0.2.2",
"hex_lit",
"secp256k1",
]
@@ -527,7 +549,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b"
dependencies = [
"bitcoin-io",
- "hex-conservative",
+ "hex-conservative 0.2.2",
]
[[package]]
@@ -557,6 +579,15 @@ dependencies = [
"core2",
]
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest",
+]
+
[[package]]
name = "block-buffer"
version = "0.10.4"
@@ -974,6 +1005,7 @@ dependencies = [
"cfg-if",
"cpufeatures",
"curve25519-dalek-derive",
+ "digest",
"fiat-crypto",
"rustc_version 0.4.1",
"subtle",
@@ -1047,6 +1079,28 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
+[[package]]
+name = "ed25519"
+version = "2.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
+dependencies = [
+ "signature",
+]
+
+[[package]]
+name = "ed25519-dalek"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9"
+dependencies = [
+ "curve25519-dalek",
+ "ed25519",
+ "sha2",
+ "signature",
+ "subtle",
+]
+
[[package]]
name = "either"
version = "1.15.0"
@@ -1089,6 +1143,13 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+[[package]]
+name = "erc20_params"
+version = "0.1.0"
+dependencies = [
+ "hex",
+]
+
[[package]]
name = "errno"
version = "0.3.14"
@@ -1449,6 +1510,12 @@ dependencies = [
"arrayvec",
]
+[[package]]
+name = "hex-conservative"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "366fa3443ac84474447710ec17bb00b05dfbd096137817981e86f992f21a2793"
+
[[package]]
name = "hex_lit"
version = "0.1.1"
@@ -1597,6 +1664,15 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "keccak"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653"
+dependencies = [
+ "cpufeatures",
+]
+
[[package]]
name = "khronos_api"
version = "3.1.0"
@@ -1725,6 +1801,37 @@ dependencies = [
"libc",
]
+[[package]]
+name = "minicbor"
+version = "0.24.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29be4f60e41fde478b36998b88821946aafac540e53591e76db53921a0cc225b"
+dependencies = [
+ "minicbor-derive",
+]
+
+[[package]]
+name = "minicbor-derive"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd2209fff77f705b00c737016a48e73733d7fbccb8b007194db148f03561fb70"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "miniscript"
+version = "13.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "867b1f11e0545ad5ebbddd8a9f18756d9657a6758bf10d96cf15ddd0b726b650"
+dependencies = [
+ "bech32",
+ "bitcoin",
+ "hex-conservative 1.0.1",
+]
+
[[package]]
name = "miniz_oxide"
version = "0.8.9"
@@ -2783,6 +2890,16 @@ dependencies = [
"digest",
]
+[[package]]
+name = "sha3"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
+dependencies = [
+ "digest",
+ "keccak",
+]
+
[[package]]
name = "sharded-slab"
version = "0.1.7"
@@ -2798,6 +2915,15 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+[[package]]
+name = "signature"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
+dependencies = [
+ "digest",
+]
+
[[package]]
name = "simd-adler32"
version = "0.3.8"
@@ -2899,6 +3025,14 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+[[package]]
+name = "streaming-silent-payments"
+version = "0.1.0"
+dependencies = [
+ "bitbox-secp256k1",
+ "bitcoin",
+]
+
[[package]]
name = "strict-num"
version = "0.1.1"
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.