diff --git a/Cargo.toml b/Cargo.toml index 6e6a6ce..33cb706 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ crypto = ["unknown_order/crypto"] gmp = ["unknown_order/gmp"] openssl = ["unknown_order/openssl"] rust = ["unknown_order/rust"] -wasm = ["getrandom", "rand", "wasm-bindgen"] +wasm = ["getrandom", "rand", "wasm-bindgen", "serde-wasm-bindgen"] [dependencies] digest = "0.10" @@ -26,6 +26,7 @@ getrandom = { version = "0.2", features = ["js"], optional = true } rand = { version = "0.8", optional = true } serde = { version = "1.0", features = ["serde_derive"] } serde_bare = "0.5" +serde-wasm-bindgen = { version = "0.6", optional = true } unknown_order = { version = "0.8", default-features = false } wasm-bindgen = { version = "0.2", default-features = false, features = ["serde-serialize"], optional = true } zeroize = { version = "1.5", features = ["zeroize_derive"] } @@ -34,6 +35,7 @@ zeroize = { version = "1.5", features = ["zeroize_derive"] } elliptic-curve = "0.13" hex = "0.4" k256 = { version = "0.13", features = ["arithmetic"] } +wasm-bindgen-test = "0.3" rand = "0.8" multibase = "0.9" sha2 = "0.10" diff --git a/src/macros.rs b/src/macros.rs index b036905..9188fe9 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -42,13 +42,11 @@ macro_rules! wasm_slice_impl { } } - impl std::convert::TryFrom for $name { + impl TryFrom for $name { type Error = &'static str; fn try_from(value: wasm_bindgen::JsValue) -> Result { - value - .into_serde::<$name>() - .map_err(|_| "unable to deserialize value") + serde_wasm_bindgen::from_value(value).map_err(|_| "unable to deserialize value") } } }; diff --git a/tests/paillier.rs b/tests/paillier.rs index c77d877..efa80be 100644 --- a/tests/paillier.rs +++ b/tests/paillier.rs @@ -17,6 +17,7 @@ fn b10(s: &str) -> BigNumber { BigNumber::from_slice(bytes.as_slice()) } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn encrypt() { let res = DecryptionKey::with_primes_unchecked(&b10(TEST_PRIMES[0]), &b10(TEST_PRIMES[1])); @@ -46,6 +47,7 @@ fn encrypt() { } } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn add() { let res = DecryptionKey::with_primes_unchecked(&b10(TEST_PRIMES[0]), &b10(TEST_PRIMES[1])); @@ -73,6 +75,7 @@ fn add() { assert_eq!(m3, BigNumber::from(13)); } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn mul() { let res = DecryptionKey::with_primes_unchecked(&b10(TEST_PRIMES[0]), &b10(TEST_PRIMES[1])); @@ -97,6 +100,7 @@ fn mul() { assert_eq!(m3, BigNumber::from(42)); } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn serialization() { let res = DecryptionKey::with_primes_unchecked(&b10(TEST_PRIMES[2]), &b10(TEST_PRIMES[3])); @@ -131,6 +135,7 @@ fn serialization() { assert_eq!(sk.n(), sk1.n()); } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn bytes() { let res = DecryptionKey::with_primes_unchecked(&b10(TEST_PRIMES[2]), &b10(TEST_PRIMES[3])); @@ -154,6 +159,7 @@ fn bytes() { assert_eq!(sk.n(), sk1.n()); } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn proof() { use k256::elliptic_curve::group::prime::PrimeCurveAffine; @@ -194,6 +200,7 @@ fn proof() { assert!(res.is_err()); } +#[cfg_attr(feature = "wasm", wasm_bindgen_test::wasm_bindgen_test)] #[test] fn all() { let res = DecryptionKey::random();