From 4a8aba20db7fcea843cddd6b660e69b164179e00 Mon Sep 17 00:00:00 2001 From: benk10 Date: Tue, 29 Apr 2025 11:15:58 +0300 Subject: [PATCH 1/2] Update bitcoin and async-hwi versions --- src-tauri/Cargo.lock | 92 ++++++++------------------------------------ src-tauri/Cargo.toml | 4 +- 2 files changed, 17 insertions(+), 79 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 5c317fb..052beb7 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -117,14 +117,13 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-hwi" -version = "0.0.25" +version = "0.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2bf351445dda3f867da2effb866be894cc88f7648a67b93d1f462fde026a6d" +checksum = "e9e928e319430e339a0d6895e42f40fef8eb7d4c47a8f17c35a572a718072e7e" dependencies = [ "async-trait", "bitbox-api", - "bitcoin 0.31.2", - "bitcoin 0.32.5", + "bitcoin", "coldcard", "futures", "hidapi", @@ -288,12 +287,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bech32" -version = "0.10.0-beta" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea" - [[package]] name = "bech32" version = "0.11.0" @@ -308,7 +301,7 @@ checksum = "8349407999d3653dbbd3f75182742a6c8ad73f424ef83fcf5b87ead0c8ce2528" dependencies = [ "async-trait", "base32", - "bitcoin 0.32.5", + "bitcoin", "byteorder", "chrono", "getrandom 0.2.15", @@ -327,23 +320,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "bitcoin" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae" -dependencies = [ - "base64 0.21.7", - "bech32 0.10.0-beta", - "bitcoin-internals 0.2.0", - "bitcoin_hashes 0.13.0", - "core2", - "hex-conservative 0.1.2", - "hex_lit", - "secp256k1 0.28.2", - "serde", -] - [[package]] name = "bitcoin" version = "0.32.5" @@ -352,14 +328,14 @@ checksum = "ce6bc65742dea50536e35ad42492b234c27904a27f0abdcbce605015cb4ea026" dependencies = [ "base58ck", "base64 0.21.7", - "bech32 0.11.0", + "bech32", "bitcoin-internals 0.3.0", "bitcoin-io", "bitcoin-units", "bitcoin_hashes 0.14.0", "hex-conservative 0.2.1", "hex_lit", - "secp256k1 0.29.1", + "secp256k1", "serde", ] @@ -368,9 +344,6 @@ name = "bitcoin-internals" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" -dependencies = [ - "serde", -] [[package]] name = "bitcoin-internals" @@ -404,9 +377,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ "bitcoin-internals 0.2.0", - "core2", "hex-conservative 0.1.2", - "serde", ] [[package]] @@ -773,15 +744,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core2" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239fa3ae9b63c2dc74bd3fa852d4792b8b305ae64eeede946265b6af62f1fff3" -dependencies = [ - "memchr", -] - [[package]] name = "cpufeatures" version = "0.2.16" @@ -1806,9 +1768,6 @@ name = "hex-conservative" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" -dependencies = [ - "core2", -] [[package]] name = "hex-conservative" @@ -2468,7 +2427,7 @@ version = "0.2.2" dependencies = [ "aes-gcm", "async-hwi", - "bitcoin 0.31.2", + "bitcoin", "env_logger", "hex", "log", @@ -2541,12 +2500,12 @@ dependencies = [ [[package]] name = "ledger_bitcoin_client" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8606a9c7375fb139e68fc1ca7cf9c6709566eeca448ff33e37632d8a4302eefe" +checksum = "38bb192e14da7725505c49791fde863bafee2b28dede2f37e05559fe72c29416" dependencies = [ "async-trait", - "bitcoin 0.31.2", + "bitcoin", "miniscript", ] @@ -2706,13 +2665,12 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniscript" -version = "11.2.0" +version = "12.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3127e10529a57a8f7fa9b1332c4c2f72baadaca6777798f910dff3c922620b14" +checksum = "82911d2fb527bb9aacd2446d2f517aff3f8e3846ace1b3c24258b61ea3cce2bc" dependencies = [ - "bech32 0.10.0-beta", - "bitcoin 0.31.2", - "bitcoin-internals 0.2.0", + "bech32", + "bitcoin", ] [[package]] @@ -3978,17 +3936,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secp256k1" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" -dependencies = [ - "bitcoin_hashes 0.13.0", - "secp256k1-sys 0.9.2", - "serde", -] - [[package]] name = "secp256k1" version = "0.29.1" @@ -3996,19 +3943,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ "bitcoin_hashes 0.14.0", - "secp256k1-sys 0.10.1", + "secp256k1-sys", "serde", ] -[[package]] -name = "secp256k1-sys" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" -dependencies = [ - "cc", -] - [[package]] name = "secp256k1-sys" version = "0.10.1" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 7e3eea4..d6443b4 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -23,8 +23,8 @@ hex = "0.4.3" log = "0.4" thiserror = "1.0" env_logger = "0.10" -bitcoin = { version = "0.31", features = ["serde", "base64"] } -async-hwi = "0.0.25" +bitcoin = { version = "0.32", features = ["serde", "base64"] } +async-hwi = "0.0.27" x25519-dalek = "2.0.1" [features] From 51fecc27333c744345d6c353ee2fb60a19f75a95 Mon Sep 17 00:00:00 2001 From: benk10 Date: Tue, 29 Apr 2025 11:16:06 +0300 Subject: [PATCH 2/2] Fix coldcard signing --- src-tauri/src/main.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index a22b5fd..1354be7 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -241,6 +241,8 @@ async fn hwi_sign_tx( ) .await?; + let mut psbt_obj = bitcoin::Psbt::from_str(&psbt).map_err(|e| e.to_string())?; + if hwi_state.device_type != HWIDeviceType::Coldcard { let is_registered = device .is_wallet_registered(&wallet_name.clone().unwrap_or_default(), &policy) @@ -274,10 +276,11 @@ async fn hwi_sign_tx( .await?; } } + } else { + // Coldcard change verification gives an error when xpubs are included for Miniscript scheme + psbt_obj.xpub.clear(); } - let mut psbt_obj = bitcoin::Psbt::from_str(&psbt).map_err(|e| e.to_string())?; - device .sign_tx(&mut psbt_obj) .await