From 268b06cf33caf3ef3f0ec0a967b67f56a32f7258 Mon Sep 17 00:00:00 2001 From: John Driscoll Date: Tue, 16 Jun 2026 11:27:13 -0500 Subject: [PATCH] fix(wasm-mps): use bip32 derivation Ticket: HSM-384 --- packages/wasm-mps/Cargo.lock | 24 ++++++++++++++++++++++-- packages/wasm-mps/Cargo.toml | 2 +- packages/wasm-mps/src/lib.rs | 3 ++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/wasm-mps/Cargo.lock b/packages/wasm-mps/Cargo.lock index 12a74c3dd5f..97736688008 100644 --- a/packages/wasm-mps/Cargo.lock +++ b/packages/wasm-mps/Cargo.lock @@ -457,8 +457,9 @@ checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "multi-party-schnorr" -version = "1.2.0-pre.1" -source = "git+https://github.com/silence-laboratories/multi-party-schnorr.git?rev=7511971e757a2260afa797283cf239c9cdfd5f19#7511971e757a2260afa797283cf239c9cdfd5f19" +version = "1.3.0-pre.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ec19b462861fe10a2c01dd2245ab00a47dfe854a73bec120699ef47849921c0" dependencies = [ "bytemuck", "ciborium", @@ -478,6 +479,7 @@ dependencies = [ "serde_bytes", "sha2", "signature", + "sl-mpc-derive", "sl-mpc-mate", "thiserror 1.0.69", "zeroize", @@ -719,6 +721,24 @@ dependencies = [ "rand_core", ] +[[package]] +name = "sl-mpc-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77ad793fb84ed507aa8b9225c5d2c7b8f4db81538a399875d58888d1a0a1966" +dependencies = [ + "crypto-bigint", + "curve25519-dalek", + "ed25519-dalek", + "elliptic-curve", + "ff", + "hmac", + "rand", + "rand_chacha", + "sha2", + "thiserror 1.0.69", +] + [[package]] name = "sl-mpc-mate" version = "1.1.0" diff --git a/packages/wasm-mps/Cargo.toml b/packages/wasm-mps/Cargo.toml index 8c374f3f607..9d6c435e563 100644 --- a/packages/wasm-mps/Cargo.toml +++ b/packages/wasm-mps/Cargo.toml @@ -17,7 +17,7 @@ bincode = "1.3" crypto_box = "0.9" getrandom = { version = "0.2", features = ["js"] } js-sys = "0.3" -multi-party-schnorr = { git = "https://github.com/silence-laboratories/multi-party-schnorr.git", rev = "7511971e757a2260afa797283cf239c9cdfd5f19", features = ["serde"]} +multi-party-schnorr = { version = "1.3.0-pre.5", features = ["serde"]} rand = "0.8" serde = { version = "1.0", features = ["derive"] } thiserror = "2.0.18" diff --git a/packages/wasm-mps/src/lib.rs b/packages/wasm-mps/src/lib.rs index b8a65a40b8b..01ee70c396f 100644 --- a/packages/wasm-mps/src/lib.rs +++ b/packages/wasm-mps/src/lib.rs @@ -6,6 +6,7 @@ mod mps { common::{ ser::Serializable, traits::{GroupElem, Round, ScalarReduce}, + Bip32Public, }, curve25519_dalek::EdwardsPoint, keygen::{ @@ -318,7 +319,7 @@ mod mps { bincode::deserialize(share).map_err(|_| MpsError::DeserializationError)?; // Create signer party - let p0 = SignerParty::::new( + let p0 = SignerParty::::new_with_format::<_, Bip32Public>( Arc::new(keyshare), message.to_vec(), derivation_path