From 29bf00e2097639f1110da9e661696370be87b961 Mon Sep 17 00:00:00 2001 From: James Wilson Date: Thu, 30 Jan 2025 17:13:58 +0000 Subject: [PATCH] Fix and test sr25519 signing in nostd (#1872) * Fix and test sr25519 signing in nostd * Remove sr25519 signing test on nostd for thumbabi target * Don't use sr25519 feature in nostd tests * Fix nits, remove WASM deps from nostd test, improve comments * Change copypasted comment * fmt * Update CI to account for signer tests --- .github/workflows/rust.yml | 8 +- signer/Cargo.toml | 2 +- signer/src/sr25519.rs | 4 + .../{wasm-tests => tests/no-std}/.gitignore | 0 signer/tests/no-std/Cargo.toml | 19 ++ signer/tests/no-std/tests/no_std.rs | 51 ++++ signer/tests/wasm/.gitignore | 2 + signer/{wasm-tests => tests/wasm}/Cargo.toml | 2 +- .../{wasm-tests => tests/wasm}/tests/wasm.rs | 2 +- testing/no-std-tests/Cargo.lock | 284 +++++++++++------- testing/no-std-tests/Cargo.toml | 2 +- testing/no-std-tests/src/main.rs | 23 +- 12 files changed, 271 insertions(+), 128 deletions(-) rename signer/{wasm-tests => tests/no-std}/.gitignore (100%) create mode 100644 signer/tests/no-std/Cargo.toml create mode 100644 signer/tests/no-std/tests/no_std.rs create mode 100644 signer/tests/wasm/.gitignore rename signer/{wasm-tests => tests/wasm}/Cargo.toml (89%) rename signer/{wasm-tests => tests/wasm}/tests/wasm.rs (97%) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 2851ee0841..355f6e26b9 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -291,6 +291,12 @@ jobs: - name: Install cargo-nextest run: cargo install cargo-nextest + - name: Run subxt-signer no-std tests + uses: actions-rs/cargo@v1.0.3 + with: + command: test + working-directory: signer/tests/no-std + - name: Run tests uses: actions-rs/cargo@v1.0.3 with: @@ -416,7 +422,7 @@ jobs: run: | wasm-pack test --headless --firefox wasm-pack test --headless --chrome - working-directory: signer/wasm-tests + working-directory: signer/tests/wasm - if: "failure()" uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5 diff --git a/signer/Cargo.toml b/signer/Cargo.toml index acc6e66890..90c11f6082 100644 --- a/signer/Cargo.toml +++ b/signer/Cargo.toml @@ -66,7 +66,7 @@ hmac = { workspace = true } zeroize = { workspace = true } bip39 = { workspace = true } bip32 = { workspace = true, features = ["alloc", "secp256k1"], optional = true } -schnorrkel = { workspace = true, optional = true } +schnorrkel = { workspace = true, optional = true, features = ["getrandom"] } secp256k1 = { workspace = true, optional = true, features = [ "alloc", "recovery", diff --git a/signer/src/sr25519.rs b/signer/src/sr25519.rs index 251aa92ab2..db24438a60 100644 --- a/signer/src/sr25519.rs +++ b/signer/src/sr25519.rs @@ -3,6 +3,10 @@ // see LICENSE for license details. //! An sr25519 keypair implementation. +//! +//! **Note:** This implementation requires the `getrandom` dependency to obtain randomness, +//! and will not compile on targets that it does not support. See the supported `getrandom` +//! targets here: . use core::str::FromStr; diff --git a/signer/wasm-tests/.gitignore b/signer/tests/no-std/.gitignore similarity index 100% rename from signer/wasm-tests/.gitignore rename to signer/tests/no-std/.gitignore diff --git a/signer/tests/no-std/Cargo.toml b/signer/tests/no-std/Cargo.toml new file mode 100644 index 0000000000..777bdf0e89 --- /dev/null +++ b/signer/tests/no-std/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "nostd-tests" +version = "0.1.0" +edition = "2021" +publish = false + +[dev-dependencies] + +# This crate is not a part of the workspace, to ensure that no features +# are enabled for it at the workspace level; which conflict with this test. +subxt-signer = { path = "../../", default-features = false, features = [ + "sr25519", + "ecdsa", + "unstable-eth", +] } + +# this shouldn't be needed, it's in workspace.exclude, but still +# I get the complaint unless I add it... +[workspace] diff --git a/signer/tests/no-std/tests/no_std.rs b/signer/tests/no-std/tests/no_std.rs new file mode 100644 index 0000000000..b6dbc68e54 --- /dev/null +++ b/signer/tests/no-std/tests/no_std.rs @@ -0,0 +1,51 @@ +#![no_std] + +use subxt_signer::{ecdsa, eth, sr25519}; + +// Run the tests by calling: +// +// ```text +// cargo test +// ``` +// +// These are independent of any other package to ensure that nothing +// else enabled the same feature flag that subxt-signer needs to work ok +// (subxt seems to, for instance). + +#[test] +fn sr25519_signing_works() { + let alice = sr25519::dev::alice(); + + // There's some non-determinism in the signing, so this ensures that + // the rand stuff is configured properly to run ok in wasm. + let signature = alice.sign(b"Hello there"); + assert!(sr25519::verify( + &signature, + b"Hello there", + &alice.public_key() + )); +} + +#[test] +fn ecdsa_signing_works() { + let alice = ecdsa::dev::alice(); + + // There's some non-determinism in the signing, so this ensures that + // the rand stuff is configured properly to run ok in wasm. + let signature = alice.sign(b"Hello there"); + assert!(ecdsa::verify( + &signature, + b"Hello there", + &alice.public_key() + )); +} + +#[test] +fn eth_signing_works() { + let alice = eth::dev::alith(); + + // There's some non-determinism in the signing, so this ensures that + // the rand stuff is configured properly to run ok in wasm. + let signature = alice.sign(b"Hello there"); + assert!(eth::verify(&signature, b"Hello there", &alice.public_key())); +} diff --git a/signer/tests/wasm/.gitignore b/signer/tests/wasm/.gitignore new file mode 100644 index 0000000000..869df07dae --- /dev/null +++ b/signer/tests/wasm/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock \ No newline at end of file diff --git a/signer/wasm-tests/Cargo.toml b/signer/tests/wasm/Cargo.toml similarity index 89% rename from signer/wasm-tests/Cargo.toml rename to signer/tests/wasm/Cargo.toml index f807f06b3f..3ee73f727b 100644 --- a/signer/wasm-tests/Cargo.toml +++ b/signer/tests/wasm/Cargo.toml @@ -13,7 +13,7 @@ console_error_panic_hook = "0.1.7" # enable the "web" feature here but don't want it enabled as part # of workspace builds. Also disable the "subxt" feature here because # we want to ensure it works in isolation of that. -subxt-signer = { path = "..", default-features = false, features = [ +subxt-signer = { path = "../../", default-features = false, features = [ "web", "sr25519", "ecdsa", diff --git a/signer/wasm-tests/tests/wasm.rs b/signer/tests/wasm/tests/wasm.rs similarity index 97% rename from signer/wasm-tests/tests/wasm.rs rename to signer/tests/wasm/tests/wasm.rs index 667f20a55c..1051877225 100644 --- a/signer/wasm-tests/tests/wasm.rs +++ b/signer/tests/wasm/tests/wasm.rs @@ -8,7 +8,7 @@ wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); // Run the tests by calling: // // ```text -// wasm-pack test --firefox --headless` +// wasm-pack test --firefox --headless // ``` // // These are independent of any other package to ensure that nothing diff --git a/testing/no-std-tests/Cargo.lock b/testing/no-std-tests/Cargo.lock index f776d70566..e80288f4e7 100644 --- a/testing/no-std-tests/Cargo.lock +++ b/testing/no-std-tests/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + [[package]] name = "ahash" version = "0.8.11" @@ -16,21 +26,21 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "base58" @@ -122,26 +132,46 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-common" @@ -150,21 +180,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core", "typenum", ] [[package]] name = "curve25519-dalek" -version = "4.1.2" +version = "4.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", "digest", "fiat-crypto", - "platforms", "rustc_version", "subtle", "zeroize", @@ -178,7 +208,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -202,7 +232,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.96", + "syn", ] [[package]] @@ -213,7 +243,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -224,7 +254,7 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -244,7 +274,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -260,9 +290,9 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equivalent" @@ -272,9 +302,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "fiat-crypto" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "fixed-hash" @@ -332,6 +362,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + [[package]] name = "getrandom_or_panic" version = "0.0.3" @@ -351,6 +392,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + [[package]] name = "heck" version = "0.5.0" @@ -404,30 +451,30 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] name = "indexmap" -version = "2.5.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "keccak" @@ -450,9 +497,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.153" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libc_alloc" @@ -462,9 +509,9 @@ checksum = "7581282928bc99698341d1de7590964c28db747c164eaac9409432a3eaed098a" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "merlin" @@ -480,34 +527,36 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "b91c2d9a6a6004e205b7e881856fb1a0f5022d382acc2c01b52185f7b6f65997" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "77555fd9d578b6470470463fded832619a5fec5ad6cbc551fe4d7507ce50cd3a" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn", ] [[package]] @@ -521,15 +570,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" - -[[package]] -name = "platforms" -version = "3.3.0" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "polkadot-sdk" @@ -581,7 +624,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -595,9 +638,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -613,12 +656,15 @@ name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "regex-automata", "regex-syntax", @@ -626,9 +672,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "regex-syntax", ] @@ -641,18 +687,24 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "scale-bits" @@ -690,7 +742,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -718,14 +770,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] name = "scale-info" -version = "2.11.5" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aa7ffc1c0ef49b0452c6e2986abf2b07743320641ffd5fc63d552458e3b779b" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ "bitvec", "cfg-if", @@ -737,14 +789,14 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.11.5" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46385cc24172cf615450267463f937c10072516359b3ff1cb24228a4a08bf951" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -766,7 +818,7 @@ dependencies = [ "proc-macro2", "quote", "scale-info", - "syn 2.0.96", + "syn", "thiserror", ] @@ -791,6 +843,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de18f6d8ba0aad7045f5feae07ec29899c1112584a38509a84ad7b04451eaa0" dependencies = [ + "aead", "arrayref", "arrayvec", "curve25519-dalek", @@ -813,35 +866,35 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -904,9 +957,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subxt-codegen" @@ -919,7 +972,7 @@ dependencies = [ "scale-info", "scale-typegen", "subxt-metadata", - "syn 2.0.96", + "syn", "thiserror", ] @@ -932,7 +985,7 @@ dependencies = [ "derive-where", "frame-decode", "frame-metadata", - "hashbrown", + "hashbrown 0.14.5", "hex", "impl-serde", "keccak-hash", @@ -974,7 +1027,7 @@ dependencies = [ "scale-typegen", "subxt-codegen", "subxt-utils-fetchmetadata", - "syn 2.0.96", + "syn", ] [[package]] @@ -983,7 +1036,7 @@ version = "0.38.0" dependencies = [ "frame-decode", "frame-metadata", - "hashbrown", + "hashbrown 0.14.5", "parity-scale-codec", "polkadot-sdk", "scale-info", @@ -1019,17 +1072,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.96" @@ -1064,7 +1106,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] @@ -1095,9 +1137,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-core", @@ -1105,9 +1147,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" [[package]] name = "twox-hash" @@ -1140,21 +1182,33 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" + +[[package]] +name = "unicode-xid" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "ad699df48212c6cc6eb4435f35500ac6fd3b9913324f938aea302022ce19d310" dependencies = [ "memchr", ] @@ -1170,29 +1224,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" dependencies = [ "zeroize_derive", ] @@ -1205,5 +1259,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn", ] diff --git a/testing/no-std-tests/Cargo.toml b/testing/no-std-tests/Cargo.toml index a4c2e7f130..1ff9ce11bc 100644 --- a/testing/no-std-tests/Cargo.toml +++ b/testing/no-std-tests/Cargo.toml @@ -8,7 +8,7 @@ resolver = "2" [dependencies] subxt-metadata = { path = "../../metadata", default-features = false } subxt-core = { path = "../../core", default-features = false } -subxt-signer = { path = "../../signer", default-features = false, features = ["subxt", "sr25519"] } +subxt-signer = { path = "../../signer", default-features = false, features = ["subxt"] } subxt-macro = { path = "../../macro" } codec = { package = "parity-scale-codec", version = "3.6.9", default-features = false, features = ["derive"] } libc_alloc = { version = "1.0.6" } diff --git a/testing/no-std-tests/src/main.rs b/testing/no-std-tests/src/main.rs index f2d724cca9..8ae5078b9a 100644 --- a/testing/no-std-tests/src/main.rs +++ b/testing/no-std-tests/src/main.rs @@ -41,21 +41,28 @@ fn compile_test() { const METADATA: &[u8] = include_bytes!("../../../artifacts/polkadot_metadata_small.scale"); subxt_metadata::Metadata::decode(&mut &METADATA[..]).expect("should be valid metadata"); - // Subxt Signer compiles: - use subxt_signer::sr25519; - let keypair = sr25519::dev::alice(); - let message = b"Hello!"; - let _signature = keypair.sign(message); - let _public_key = keypair.public_key(); + // Subxt signer compiles (though nothing much works on this particular nostd target...): + // Supported targets: + use core::str::FromStr; + let _ = subxt_signer::SecretUri::from_str("//Alice/bar"); - // Note: `ecdsa` is not compiling for the `thumbv7em-none-eabi` target. + // Note: sr25519 needs randomness, but `thumbv7em-none-eabi` isn't supported by + // `getrandom`, so we can't sign in nostd on this target. + // + // use subxt_signer::sr25519; + // let keypair = sr25519::dev::alice(); + // let message = b"Hello!"; + // let _signature = keypair.sign(message); + // let _public_key = keypair.public_key(); + + // Note: `ecdsa` is also not compiling for the `thumbv7em-none-eabi` target owing to + // an issue compiling `secp256k1-sys`. // // use subxt_signer::ecdsa; // let keypair = ecdsa::dev::alice(); // let message = b"Hello!"; // let _signature = keypair.sign(message); // let _public_key = keypair.public_key(); - // // Subxt Core compiles: let _era = subxt_core::utils::Era::Immortal;