From 993b4b75d77ce37f33c171504ede14d1e261af20 Mon Sep 17 00:00:00 2001 From: dmitrmax Date: Wed, 9 Apr 2025 13:01:19 +0400 Subject: [PATCH] Update rand to 0.9.x, getrandom to 0.3 and js-sys to 0.3.77 --- Cargo-minimal.lock | 372 +++++++++++--------------------------- Cargo-recent.lock | 120 ++++++++---- Cargo.toml | 8 +- examples/generate_keys.rs | 2 +- no_std_test/src/main.rs | 6 +- src/context.rs | 18 +- src/ecdh.rs | 18 +- src/ecdsa/recovery.rs | 34 ++-- src/key.rs | 52 +++--- src/lib.rs | 48 ++--- src/scalar.rs | 2 +- src/schnorr.rs | 8 +- 12 files changed, 288 insertions(+), 400 deletions(-) diff --git a/Cargo-minimal.lock b/Cargo-minimal.lock index d3fe48f75..2c9037c9e 100644 --- a/Cargo-minimal.lock +++ b/Cargo-minimal.lock @@ -8,12 +8,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "base-x" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9ad92e7876f320bf1ba3325acb19d1bfcfdfdf52d15cbe7bd38314cf81854d" - [[package]] name = "bincode" version = "1.3.3" @@ -39,6 +33,12 @@ dependencies = [ "hex-conservative", ] +[[package]] +name = "bitflags" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" + [[package]] name = "bumpalo" version = "3.2.1" @@ -79,27 +79,16 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "discard" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9117502da3c5657cb8e2ca7ffcf52d659f00c78c5127d1ebadc2ebe76465be" - -[[package]] -name = "dtoa" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5edd69c67b2f8e0911629b7e6b8a34cb3956613cd7c6e6414966dee349c2db4f" - [[package]] name = "getrandom" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8025cf36f917e6a52cce185b7c7177689b838b7ec138364e50cc2277a56cf4" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ - "cfg-if 0.1.2", + "cfg-if 1.0.0", + "js-sys", "libc", - "stdweb", + "r-efi", "wasi", "wasm-bindgen", ] @@ -125,32 +114,21 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" -[[package]] -name = "itoa" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fd9dc2c587067de817fec4ad355e3818c3d893a78cab32a0a474c7a15bb8d5" - [[package]] name = "js-sys" -version = "0.3.46" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d7383929f7c9c7c2d0fa596f325832df98c3704f2c60553080f7127a58175" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] -[[package]] -name = "lazy_static" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" - [[package]] name = "libc" -version = "0.2.64" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74dfca3d9957906e8d1e6a0b641dc9a59848e793f1da2165889fd4f62d10d79c" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "log" @@ -162,76 +140,60 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.1.32" +name = "once_cell" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51eab148f171aefad295f8cece636fc488b9b392ef544da31ea4b8ef6b9e9c39" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "ppv-lite86" -version = "0.2.8" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea" - -[[package]] -name = "proc-macro2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa93823f53cfd0f5ac117b189aed6cfdfb2cfc0a9d82e956dd7927595ed7d46" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "unicode-xid 0.1.0", + "zerocopy", ] [[package]] name = "proc-macro2" -version = "1.0.13" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53f5ffe53a6b28e37c9c1ce74893477864d64f74778a93a4beb43c8fa167f639" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ - "unicode-xid 0.2.0", + "unicode-ident", ] [[package]] name = "quote" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f0fc799e40f2a2c2be239825b30b686f1bd1d2e0e3d5e943b14c1380db49acf" - -[[package]] -name = "quote" -version = "0.6.0" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b925e6c90a6272d38f6a2f87b3ee68760bc1db9572f8f93dbbb25429fb9e7fe3" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ - "proc-macro2 0.4.4", + "proc-macro2", ] [[package]] -name = "quote" -version = "1.0.0" +name = "r-efi" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab938ebe6f1c82426b5fb82eaf10c3e3028c53deaa3fbe38f5904b37cf4d767" -dependencies = [ - "proc-macro2 1.0.13", -] +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" [[package]] name = "rand" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76330fb486679b4ace3670f117bbc9e16204005c4bde9c4bd372f45bed34f12" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ - "libc", "rand_chacha", "rand_core", - "rand_hc", + "zerocopy", ] [[package]] name = "rand_chacha" -version = "0.3.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -239,30 +201,18 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom", ] [[package]] -name = "rand_hc" -version = "0.3.0" +name = "rustversion" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rustc_version" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e114e275f7c9b5d50bb52b28f9aac1921209f02aa6077c8b255e21eefaf8ffa" -dependencies = [ - "semver", -] +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "scoped-tls" @@ -295,21 +245,6 @@ dependencies = [ "libc", ] -[[package]] -name = "semver" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.103" @@ -327,39 +262,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_derive" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a61ecb8511aaff381424f98b49a059017420ec60e15e8d63b645701af7fa9b8" -dependencies = [ - "quote 0.3.8", - "serde_derive_internals", - "syn 0.11.10", -] - -[[package]] -name = "serde_derive_internals" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021c338d22c7e30f957a6ab7e388cb6098499dda9fd4ba1661ee074ca7a180d1" -dependencies = [ - "syn 0.11.10", - "synom", -] - -[[package]] -name = "serde_json" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b1ec939469a124b27e208106550c38358ed4334d2b1b5b3825bc1ee37d946a" -dependencies = [ - "dtoa", - "itoa", - "num-traits", - "serde", -] - [[package]] name = "serde_test" version = "1.0.19" @@ -369,149 +271,55 @@ dependencies = [ "serde", ] -[[package]] -name = "sha1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" - -[[package]] -name = "stdweb" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a68c0ce28cf7400ed022e18da3c4591e14e1df02c70e93573cc59921b3923aeb" -dependencies = [ - "discard", - "rustc_version", - "stdweb-derive", - "stdweb-internal-macros", - "stdweb-internal-runtime", - "wasm-bindgen", -] - -[[package]] -name = "stdweb-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e21ebd9179de08f2300a65454268a17ea3de204627458588c84319c4def3930" -dependencies = [ - "proc-macro2 0.4.4", - "quote 0.6.0", - "serde", - "serde_derive", - "syn 0.15.0", -] - -[[package]] -name = "stdweb-internal-macros" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e68f7d08b76979a43e93fe043b66d2626e35d41d68b0b85519202c6dd8ac59fa" -dependencies = [ - "base-x", - "proc-macro2 0.4.4", - "quote 0.6.0", - "serde", - "serde_derive", - "serde_json", - "sha1", - "syn 0.15.0", -] - -[[package]] -name = "stdweb-internal-runtime" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e93e3ace205c4c1926b882cf8d8209e86acd445fda5fcf850455c3d178651c7" - [[package]] name = "syn" -version = "0.11.10" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171b739972d9a1bfb169e8077238b51f9ebeaae4ff6e08072f7ba386a8802da2" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ - "quote 0.3.8", - "synom", - "unicode-xid 0.0.4", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "syn" -version = "0.15.0" +name = "unicode-ident" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ec67da440de95ec3a63fa50541afc4f433d1f410f1f0926b6c4b169660c721" -dependencies = [ - "proc-macro2 0.4.4", - "quote 0.6.0", - "unicode-xid 0.1.0", -] +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] -name = "syn" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef781e621ee763a2a40721a8861ec519cb76966aee03bb5d00adb6a31dc1c1de" -dependencies = [ - "proc-macro2 1.0.13", - "quote 1.0.0", - "unicode-xid 0.2.0", -] - -[[package]] -name = "synom" -version = "0.11.0" +name = "wasi" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fece1853fb872b0acdc3ff88f37c474018e125ef81cd4cb8c0ca515746b62ed" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ - "unicode-xid 0.0.4", + "wit-bindgen-rt", ] -[[package]] -name = "unicode-xid" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" - -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - -[[package]] -name = "unicode-xid" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasm-bindgen" -version = "0.2.69" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd364751395ca0f68cafb17666eee36b63077fb5ecd972bbcd74c90c4bf736e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if 1.0.0", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.69" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1114f89ab1f4106e5b55e688b828c0ab0ea593a1ea7c094b141b14cbaaec2d62" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", - "lazy_static", "log", - "proc-macro2 1.0.13", - "quote 1.0.0", - "syn 1.0.27", + "proc-macro2", + "quote", + "syn", "wasm-bindgen-shared", ] @@ -529,32 +337,35 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.69" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6ac8995ead1f084a8dea1e65f194d0973800c7f571f6edd70adf06ecf77084" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ - "quote 1.0.0", + "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.69" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a48c72f299d80557c7c62e37e7225369ecc0c963964059509fbafe917c7549" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ - "proc-macro2 1.0.13", - "quote 1.0.0", - "syn 1.0.27", + "proc-macro2", + "quote", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.69" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e7811dd7f9398f14cc76efd356f98f03aa30419dea46aa810d71e819fc97158" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-bindgen-test" @@ -576,8 +387,8 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f093012630c0c14be061ac7a8d99f82a94e2b1cfd74619fa71090705d2c91be" dependencies = [ - "proc-macro2 1.0.13", - "quote 1.0.0", + "proc-macro2", + "quote", ] [[package]] @@ -589,3 +400,32 @@ dependencies = [ "js-sys", "wasm-bindgen", ] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo-recent.lock b/Cargo-recent.lock index 71f42992c..bd967fbbb 100644 --- a/Cargo-recent.lock +++ b/Cargo-recent.lock @@ -33,6 +33,12 @@ dependencies = [ "hex-conservative", ] +[[package]] +name = "bitflags" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" + [[package]] name = "bumpalo" version = "3.12.0" @@ -69,13 +75,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if", "js-sys", "libc", + "r-efi", "wasi", "wasm-bindgen", ] @@ -103,18 +110,19 @@ checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.140" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "log" @@ -139,38 +147,44 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "rand" -version = "0.8.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ - "libc", "rand_chacha", "rand_core", + "zerocopy", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -178,13 +192,19 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom", ] +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "scoped-tls" version = "1.0.1" @@ -244,9 +264,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.109" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -261,29 +281,33 @@ checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn", @@ -304,9 +328,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -314,9 +338,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -327,9 +351,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-bindgen-test" @@ -364,3 +391,32 @@ dependencies = [ "js-sys", "wasm-bindgen", ] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 639da069c..896a568ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ rustdoc-args = ["--cfg", "docsrs"] [features] default = ["std"] -std = ["alloc", "secp256k1-sys/std", "rand?/std", "rand?/std_rng", "hashes?/std"] +std = ["alloc", "secp256k1-sys/std", "rand?/std", "rand?/std_rng", "rand?/thread_rng", "hashes?/std"] # allow use of Secp256k1::new and related API that requires an allocator alloc = ["secp256k1-sys/alloc"] recovery = ["secp256k1-sys/recovery"] @@ -37,11 +37,11 @@ global-context-less-secure = ["global-context"] secp256k1-sys = { version = "0.11.0", default-features = false, path = "./secp256k1-sys" } hashes = { package = "bitcoin_hashes", version = "0.14", default-features = false, optional = true } -rand = { version = "0.8", default-features = false, optional = true } +rand = { version = "0.9", default-features = false, optional = true } serde = { version = "1.0.103", default-features = false, optional = true } [dev-dependencies] -rand_core = "0.6" +rand_core = "0.9" serde_cbor = "0.10.0" serde_test = "1.0.19" bincode = "1.3.3" @@ -49,7 +49,7 @@ hex_lit = "0.1.1" [target.wasm32-unknown-unknown.dev-dependencies] wasm-bindgen-test = "0.3" -getrandom = { version = "0.2", features = ["js"] } +getrandom = { version = "0.3", features = ["wasm_js"] } [lints.rust] unexpected_cfgs = { level = "deny", check-cfg = ['cfg(bench)', 'cfg(secp256k1_fuzz)', 'cfg(rust_secp_no_symbol_renaming)'] } diff --git a/examples/generate_keys.rs b/examples/generate_keys.rs index 2a47df19f..ae45bb010 100644 --- a/examples/generate_keys.rs +++ b/examples/generate_keys.rs @@ -4,7 +4,7 @@ use secp256k1::{PublicKey, Secp256k1, SecretKey}; fn main() { let secp = Secp256k1::new(); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); // First option: let (seckey, pubkey) = secp.generate_keypair(&mut rng); diff --git a/no_std_test/src/main.rs b/no_std_test/src/main.rs index cda191490..194bc3164 100644 --- a/no_std_test/src/main.rs +++ b/no_std_test/src/main.rs @@ -71,14 +71,10 @@ impl RngCore for FakeRng { fn next_u64(&mut self) -> u64 { 57 } - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> { + fn fill_bytes(&mut self, dest: &mut [u8]) { for i in dest { *i = 57; } - Ok(()) - } - fn fill_bytes(&mut self, dest: &mut [u8]) { - self.try_fill_bytes(dest).unwrap(); } } diff --git a/src/context.rs b/src/context.rs index 309809399..d8955a945 100644 --- a/src/context.rs +++ b/src/context.rs @@ -28,12 +28,12 @@ pub mod global { /// A global static context to avoid repeatedly creating contexts. /// /// If `rand` and `std` feature is enabled, context will have been randomized using - /// `thread_rng`. + /// `rng`. /// /// ``` /// # #[cfg(all(feature = "global-context", feature = "rand", feature = "std"))] { /// use secp256k1::{PublicKey, SECP256K1}; - /// let _ = SECP256K1.generate_keypair(&mut rand::thread_rng()); + /// let _ = SECP256K1.generate_keypair(&mut rand::rng()); /// # } /// ``` pub static SECP256K1: &GlobalContext = &GlobalContext { __private: () }; @@ -174,15 +174,15 @@ mod alloc_only { /// Lets you create a context in a generic manner (sign/verify/all). /// /// If `rand` and `std` feature is enabled, context will have been randomized using - /// `thread_rng`. + /// `rng`. /// If `rand` or `std` feature is not enabled please consider randomizing the context as /// follows: /// ``` /// # #[cfg(all(feature = "rand", feature = "std"))] { /// # use secp256k1::Secp256k1; - /// # use secp256k1::rand::{thread_rng, RngCore}; + /// # use secp256k1::rand::{rng, RngCore}; /// let mut ctx = Secp256k1::new(); - /// # let mut rng = thread_rng(); + /// # let mut rng = rng(); /// # let mut seed = [0u8; 32]; /// # rng.fill_bytes(&mut seed); /// // let seed = <32 bytes of random data> @@ -216,7 +216,7 @@ mod alloc_only { not(feature = "global-context-less-secure") ))] { - ctx.randomize(&mut rand::thread_rng()); + ctx.randomize(&mut rand::rng()); } #[allow(clippy::let_and_return)] // as for unusted_mut @@ -228,7 +228,7 @@ mod alloc_only { /// Creates a new Secp256k1 context with all capabilities. /// /// If `rand` and `std` feature is enabled, context will have been randomized using - /// `thread_rng`. + /// `rng`. /// If `rand` or `std` feature is not enabled please consider randomizing the context (see /// docs for `Secp256k1::gen_new()`). pub fn new() -> Secp256k1 { Secp256k1::gen_new() } @@ -238,7 +238,7 @@ mod alloc_only { /// Creates a new Secp256k1 context that can only be used for signing. /// /// If `rand` and `std` feature is enabled, context will have been randomized using - /// `thread_rng`. + /// `rng`. /// If `rand` or `std` feature is not enabled please consider randomizing the context (see /// docs for `Secp256k1::gen_new()`). pub fn signing_only() -> Secp256k1 { Secp256k1::gen_new() } @@ -248,7 +248,7 @@ mod alloc_only { /// Creates a new Secp256k1 context that can only be used for verification. /// /// If `rand` and `std` feature is enabled, context will have been randomized using - /// `thread_rng`. + /// `rng`. /// If `rand` or `std` feature is not enabled please consider randomizing the context (see /// docs for `Secp256k1::gen_new()`). pub fn verification_only() -> Secp256k1 { Secp256k1::gen_new() } diff --git a/src/ecdh.rs b/src/ecdh.rs index 382b3e440..d8bc7950e 100644 --- a/src/ecdh.rs +++ b/src/ecdh.rs @@ -24,8 +24,8 @@ const SHARED_SECRET_SIZE: usize = constants::SECRET_KEY_SIZE; /// # use secp256k1::{rand, Secp256k1}; /// # use secp256k1::ecdh::SharedSecret; /// let s = Secp256k1::new(); -/// let (sk1, pk1) = s.generate_keypair(&mut rand::thread_rng()); -/// let (sk2, pk2) = s.generate_keypair(&mut rand::thread_rng()); +/// let (sk1, pk1) = s.generate_keypair(&mut rand::rng()); +/// let (sk2, pk2) = s.generate_keypair(&mut rand::rng()); /// let sec1 = SharedSecret::new(&pk2, &sk1); /// let sec2 = SharedSecret::new(&pk1, &sk2); /// assert_eq!(sec1, sec2); @@ -116,8 +116,8 @@ impl AsRef<[u8]> for SharedSecret { /// # use secp256k1::hashes::{Hash, sha512}; /// /// let s = Secp256k1::new(); -/// let (sk1, pk1) = s.generate_keypair(&mut rand::thread_rng()); -/// let (sk2, pk2) = s.generate_keypair(&mut rand::thread_rng()); +/// let (sk1, pk1) = s.generate_keypair(&mut rand::rng()); +/// let (sk2, pk2) = s.generate_keypair(&mut rand::rng()); /// /// let point1 = ecdh::shared_secret_point(&pk2, &sk1); /// let secret1 = sha512::Hash::hash(&point1); @@ -197,8 +197,8 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn ecdh() { let s = Secp256k1::signing_only(); - let (sk1, pk1) = s.generate_keypair(&mut rand::thread_rng()); - let (sk2, pk2) = s.generate_keypair(&mut rand::thread_rng()); + let (sk1, pk1) = s.generate_keypair(&mut rand::rng()); + let (sk2, pk2) = s.generate_keypair(&mut rand::rng()); let sec1 = SharedSecret::new(&pk2, &sk1); let sec2 = SharedSecret::new(&pk1, &sk2); @@ -233,8 +233,8 @@ mod tests { use crate::ecdh::shared_secret_point; let s = Secp256k1::signing_only(); - let (sk1, _) = s.generate_keypair(&mut rand::thread_rng()); - let (_, pk2) = s.generate_keypair(&mut rand::thread_rng()); + let (sk1, _) = s.generate_keypair(&mut rand::rng()); + let (_, pk2) = s.generate_keypair(&mut rand::rng()); let secret_sys = SharedSecret::new(&pk2, &sk1); @@ -286,7 +286,7 @@ mod benches { #[bench] pub fn bench_ecdh(bh: &mut Bencher) { let s = Secp256k1::signing_only(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); bh.iter(|| { let res = SharedSecret::new(&pk, &sk); diff --git a/src/ecdsa/recovery.rs b/src/ecdsa/recovery.rs index 6a2ebd49f..b1d013b9e 100644 --- a/src/ecdsa/recovery.rs +++ b/src/ecdsa/recovery.rs @@ -260,11 +260,11 @@ mod tests { let vrfy = Secp256k1::verification_only(); let full = Secp256k1::new(); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest_slice(&msg).unwrap(); // Try key generation - let (sk, pk) = full.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = full.generate_keypair(&mut rand::rng()); // Try signing assert_eq!(sign.sign_ecdsa_recoverable(msg, &sk), full.sign_ecdsa_recoverable(msg, &sk)); @@ -290,7 +290,7 @@ mod tests { #[rustfmt::skip] fn sign() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); let sk = SecretKey::from_slice(&ONE).unwrap(); let msg = Message::from_digest_slice(&ONE).unwrap(); @@ -315,7 +315,7 @@ mod tests { #[rustfmt::skip] fn sign_with_noncedata() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); let sk = SecretKey::from_slice(&ONE).unwrap(); let msg = Message::from_digest_slice(&ONE).unwrap(); @@ -339,17 +339,17 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn sign_and_verify_fail() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest_slice(&msg).unwrap(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let sigr = s.sign_ecdsa_recoverable(msg, &sk); let sig = sigr.to_standard(); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest_slice(&msg).unwrap(); assert_eq!(s.verify_ecdsa(msg, &sig, &pk), Err(Error::IncorrectSignature)); @@ -361,12 +361,12 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn sign_with_recovery() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest_slice(&msg).unwrap(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let sig = s.sign_ecdsa_recoverable(msg, &sk); @@ -377,14 +377,14 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn sign_with_recovery_and_noncedata() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest_slice(&msg).unwrap(); let noncedata = [42u8; 32]; - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let sig = s.sign_ecdsa_recoverable_with_noncedata(msg, &sk, &noncedata); @@ -395,7 +395,7 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn bad_recovery() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); let msg = Message::from_digest_slice(&[0x55; 32]).unwrap(); @@ -467,9 +467,9 @@ mod benches { #[bench] pub fn bench_recover(bh: &mut Bencher) { let s = Secp256k1::new(); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest_slice(&msg).unwrap(); - let (sk, _) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, _) = s.generate_keypair(&mut rand::rng()); let sig = s.sign_ecdsa_recoverable(&msg, &sk); bh.iter(|| { diff --git a/src/key.rs b/src/key.rs index 0962e00b3..f8f3f44de 100644 --- a/src/key.rs +++ b/src/key.rs @@ -48,7 +48,7 @@ use crate::{ /// use secp256k1::{rand, Secp256k1, SecretKey}; /// /// let secp = Secp256k1::new(); -/// let secret_key = SecretKey::new(&mut rand::thread_rng()); +/// let secret_key = SecretKey::new(&mut rand::rng()); /// # } /// ``` /// [`bincode`]: https://docs.rs/bincode @@ -192,7 +192,7 @@ impl SecretKey { /// ``` /// # #[cfg(all(feature = "std", feature = "rand"))] { /// use secp256k1::{rand, SecretKey}; - /// let secret_key = SecretKey::new(&mut rand::thread_rng()); + /// let secret_key = SecretKey::new(&mut rand::rng()); /// # } /// ``` #[inline] @@ -257,7 +257,7 @@ impl SecretKey { /// use secp256k1::{rand, Secp256k1, SecretKey, Keypair}; /// /// let secp = Secp256k1::new(); - /// let keypair = Keypair::new(&secp, &mut rand::thread_rng()); + /// let keypair = Keypair::new(&secp, &mut rand::rng()); /// let secret_key = SecretKey::from_keypair(&keypair); /// # } /// ``` @@ -433,7 +433,7 @@ impl PublicKey { /// use secp256k1::{rand, Secp256k1, SecretKey, PublicKey}; /// /// let secp = Secp256k1::new(); - /// let secret_key = SecretKey::new(&mut rand::thread_rng()); + /// let secret_key = SecretKey::new(&mut rand::rng()); /// let public_key = PublicKey::from_secret_key(&secp, &secret_key); /// # } /// ``` @@ -524,7 +524,7 @@ impl PublicKey { /// use secp256k1::{rand, Secp256k1, PublicKey, Keypair}; /// /// let secp = Secp256k1::new(); - /// let keypair = Keypair::new(&secp, &mut rand::thread_rng()); + /// let keypair = Keypair::new(&secp, &mut rand::rng()); /// let public_key = PublicKey::from_keypair(&keypair); /// # } /// ``` @@ -657,7 +657,7 @@ impl PublicKey { /// use secp256k1::{rand, Secp256k1}; /// /// let secp = Secp256k1::new(); - /// let mut rng = rand::thread_rng(); + /// let mut rng = rand::rng(); /// let (_, pk1) = secp.generate_keypair(&mut rng); /// let (_, pk2) = secp.generate_keypair(&mut rng); /// let sum = pk1.combine(&pk2).expect("It's improbable to fail for 2 random public keys"); @@ -683,7 +683,7 @@ impl PublicKey { /// use secp256k1::{rand, Secp256k1, PublicKey}; /// /// let secp = Secp256k1::new(); - /// let mut rng = rand::thread_rng(); + /// let mut rng = rand::rng(); /// let (_, pk1) = secp.generate_keypair(&mut rng); /// let (_, pk2) = secp.generate_keypair(&mut rng); /// let (_, pk3) = secp.generate_keypair(&mut rng); @@ -817,7 +817,7 @@ impl<'de> serde::Deserialize<'de> for PublicKey { /// use secp256k1::{rand, Keypair, Secp256k1}; /// /// let secp = Secp256k1::new(); -/// let (secret_key, public_key) = secp.generate_keypair(&mut rand::thread_rng()); +/// let (secret_key, public_key) = secp.generate_keypair(&mut rand::rng()); /// let keypair = Keypair::from_secret_key(&secp, &secret_key); /// # } /// ``` @@ -927,7 +927,7 @@ impl Keypair { /// use secp256k1::{rand, Secp256k1, SecretKey, Keypair}; /// /// let secp = Secp256k1::new(); - /// let keypair = Keypair::new(&secp, &mut rand::thread_rng()); + /// let keypair = Keypair::new(&secp, &mut rand::rng()); /// # } /// ``` #[inline] @@ -976,7 +976,7 @@ impl Keypair { /// let secp = Secp256k1::new(); /// let tweak = Scalar::random(); /// - /// let mut keypair = Keypair::new(&secp, &mut rand::thread_rng()); + /// let mut keypair = Keypair::new(&secp, &mut rand::rng()); /// let tweaked = keypair.add_xonly_tweak(&secp, &tweak).expect("Improbable to fail with a randomly generated tweak"); /// # } /// ``` @@ -1160,7 +1160,7 @@ impl CPtr for Keypair { /// use secp256k1::{rand, Secp256k1, Keypair, XOnlyPublicKey}; /// /// let secp = Secp256k1::new(); -/// let keypair = Keypair::new(&secp, &mut rand::thread_rng()); +/// let keypair = Keypair::new(&secp, &mut rand::rng()); /// let xonly = XOnlyPublicKey::from_keypair(&keypair); /// # } /// ``` @@ -1310,7 +1310,7 @@ impl XOnlyPublicKey { /// let secp = Secp256k1::new(); /// let tweak = Scalar::random(); /// - /// let mut keypair = Keypair::new(&secp, &mut rand::thread_rng()); + /// let mut keypair = Keypair::new(&secp, &mut rand::rng()); /// let (xonly, _parity) = keypair.x_only_public_key(); /// let tweaked = xonly.add_tweak(&secp, &tweak).expect("Improbable to fail with a randomly generated tweak"); /// # } @@ -1370,7 +1370,7 @@ impl XOnlyPublicKey { /// let secp = Secp256k1::new(); /// let tweak = Scalar::random(); /// - /// let mut keypair = Keypair::new(&secp, &mut rand::thread_rng()); + /// let mut keypair = Keypair::new(&secp, &mut rand::rng()); /// let (mut public_key, _) = keypair.x_only_public_key(); /// let original = public_key; /// let (tweaked, parity) = public_key.add_tweak(&secp, &tweak).expect("Improbable to fail with a randomly generated tweak"); @@ -1667,7 +1667,7 @@ mod test { fn keypair_slice_round_trip() { let s = Secp256k1::new(); - let (sk1, pk1) = s.generate_keypair(&mut rand::thread_rng()); + let (sk1, pk1) = s.generate_keypair(&mut rand::rng()); assert_eq!(SecretKey::from_slice(&sk1[..]), Ok(sk1)); assert_eq!(PublicKey::from_slice(&pk1.serialize()[..]), Ok(pk1)); assert_eq!(PublicKey::from_slice(&pk1.serialize_uncompressed()[..]), Ok(pk1)); @@ -1733,10 +1733,6 @@ mod test { data[31] = self.0; self.0 -= 1; } - fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> { - self.fill_bytes(dest); - Ok(()) - } } let s = Secp256k1::new(); @@ -1950,7 +1946,7 @@ mod test { fn tweak_add_arbitrary_data() { let s = Secp256k1::new(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); assert_eq!(PublicKey::from_secret_key(&s, &sk), pk); // Sanity check. // TODO: This would be better tested with a _lot_ of different tweaks. @@ -1969,7 +1965,7 @@ mod test { fn tweak_add_zero() { let s = Secp256k1::new(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let tweak = Scalar::ZERO; @@ -1984,7 +1980,7 @@ mod test { fn tweak_mul_arbitrary_data() { let s = Secp256k1::new(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); assert_eq!(PublicKey::from_secret_key(&s, &sk), pk); // Sanity check. // TODO: This would be better tested with a _lot_ of different tweaks. @@ -2002,7 +1998,7 @@ mod test { #[cfg(all(feature = "rand", feature = "std"))] fn tweak_mul_zero() { let s = Secp256k1::new(); - let (sk, _) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, _) = s.generate_keypair(&mut rand::rng()); let tweak = Scalar::ZERO; assert!(sk.mul_tweak(&tweak).is_err()) @@ -2013,7 +2009,7 @@ mod test { fn test_negation() { let s = Secp256k1::new(); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); assert_eq!(PublicKey::from_secret_key(&s, &sk), pk); // Sanity check. @@ -2047,7 +2043,7 @@ mod test { let mut set = HashSet::new(); const COUNT: usize = 1024; for _ in 0..COUNT { - let (_, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (_, pk) = s.generate_keypair(&mut rand::rng()); let hash = hash(&pk); assert!(!set.contains(&hash)); set.insert(hash); @@ -2118,8 +2114,8 @@ mod test { fn create_pubkey_combine() { let s = Secp256k1::new(); - let (sk1, pk1) = s.generate_keypair(&mut rand::thread_rng()); - let (sk2, pk2) = s.generate_keypair(&mut rand::thread_rng()); + let (sk1, pk1) = s.generate_keypair(&mut rand::rng()); + let (sk2, pk2) = s.generate_keypair(&mut rand::rng()); let sum1 = pk1.combine(&pk2); assert!(sum1.is_ok()); @@ -2232,7 +2228,7 @@ mod test { for _ in 0..10 { let tweak = Scalar::random(); - let kp = Keypair::new(&s, &mut rand::thread_rng()); + let kp = Keypair::new(&s, &mut rand::rng()); let (xonly, _) = XOnlyPublicKey::from_keypair(&kp); let tweaked_kp = kp.add_xonly_tweak(&s, &tweak).expect("keypair tweak add failed"); @@ -2486,7 +2482,7 @@ mod test { #[cfg(all(feature = "rand", feature = "std"))] fn test_keypair_from_str() { let ctx = crate::Secp256k1::new(); - let keypair = Keypair::new(&ctx, &mut rand::thread_rng()); + let keypair = Keypair::new(&ctx, &mut rand::rng()); let mut buf = [0_u8; constants::SECRET_KEY_SIZE * 2]; // Holds hex digits. let s = to_hex(&keypair.secret_key().secret_bytes(), &mut buf).unwrap(); let parsed_key = Keypair::from_str(s).unwrap(); diff --git a/src/lib.rs b/src/lib.rs index f2d5e2f6e..c079a95cc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,12 +29,12 @@ //! //! ```rust //! # #[cfg(all(feature = "rand", feature = "hashes", feature = "std"))] { -//! use secp256k1::rand::rngs::OsRng; +//! use secp256k1::rand; //! use secp256k1::{Secp256k1, Message}; //! use secp256k1::hashes::{sha256, Hash}; //! //! let secp = Secp256k1::new(); -//! let (secret_key, public_key) = secp.generate_keypair(&mut OsRng); +//! let (secret_key, public_key) = secp.generate_keypair(&mut rand::rng()); //! let digest = sha256::Hash::hash("Hello World!".as_bytes()); //! let message = Message::from_digest(digest.to_byte_array()); //! @@ -50,7 +50,7 @@ //! use secp256k1::{rand, generate_keypair, Message}; //! use secp256k1::hashes::{sha256, Hash}; //! -//! let (secret_key, public_key) = generate_keypair(&mut rand::thread_rng()); +//! let (secret_key, public_key) = generate_keypair(&mut rand::rng()); //! let digest = sha256::Hash::hash("Hello World!".as_bytes()); //! let message = Message::from_digest(digest.to_byte_array()); //! @@ -134,7 +134,7 @@ //! * `lowmemory` - optimize the library for low-memory environments. //! * `global-context` - enable use of global secp256k1 context (implies `std`). //! * `serde` - implements serialization and deserialization for types in this crate using `serde`. -//! **Important**: `serde` encoding is **not** the same as consensus encoding! +//! **Important**: `serde` encoding is **not** the same as consensus encoding! //! // Coding conventions @@ -540,7 +540,7 @@ mod tests { let sign = unsafe { Secp256k1::from_raw_signing_only(ctx_sign.ctx) }; let mut vrfy = unsafe { Secp256k1::from_raw_verification_only(ctx_vrfy.ctx) }; - let (sk, pk) = full.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = full.generate_keypair(&mut rand::rng()); let msg = Message::from_digest([2u8; 32]); // Try signing assert_eq!(sign.sign_ecdsa(msg, &sk), full.sign_ecdsa(msg, &sk)); @@ -607,7 +607,7 @@ mod tests { // drop(buf_vfy); // The buffer can't get dropped before the context. // println!("{:?}", buf_ful[5]); // Can't even read the data thanks to the borrow checker. - let (sk, pk) = full.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = full.generate_keypair(&mut rand::rng()); let msg = Message::from_digest([2u8; 32]); // Try signing assert_eq!(sign.sign_ecdsa(msg, &sk), full.sign_ecdsa(msg, &sk)); @@ -625,11 +625,11 @@ mod tests { let vrfy = Secp256k1::verification_only(); let full = Secp256k1::new(); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); // Try key generation - let (sk, pk) = full.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = full.generate_keypair(&mut rand::rng()); // Try signing assert_eq!(sign.sign_ecdsa(msg, &sk), full.sign_ecdsa(msg, &sk)); @@ -651,13 +651,13 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn signature_serialize_roundtrip() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); for _ in 0..100 { - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); - let (sk, _) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, _) = s.generate_keypair(&mut rand::rng()); let sig1 = s.sign_ecdsa(msg, &sk); let der = sig1.serialize_der(); let sig2 = ecdsa::Signature::from_der(&der[..]).unwrap(); @@ -741,14 +741,14 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn sign_and_verify_ecdsa() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); let noncedata = [42u8; 32]; for _ in 0..100 { - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let sig = s.sign_ecdsa(msg, &sk); assert_eq!(s.verify_ecdsa(msg, &sig, &pk), Ok(())); let noncedata_sig = s.sign_ecdsa_with_noncedata(msg, &sk, &noncedata); @@ -775,7 +775,7 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn sign_and_verify_extreme() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); // Wild keys: 1, CURVE_ORDER - 1 // Wild msgs: 1, CURVE_ORDER - 1 @@ -809,16 +809,16 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn sign_and_verify_fail() { let mut s = Secp256k1::new(); - s.randomize(&mut rand::thread_rng()); + s.randomize(&mut rand::rng()); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let sig = s.sign_ecdsa(msg, &sk); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); assert_eq!(s.verify_ecdsa(msg, &sig, &pk), Err(Error::IncorrectSignature)); } @@ -854,7 +854,7 @@ mod tests { use super::to_hex; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); const AMOUNT: usize = 1024; for i in 0..AMOUNT { // 255 isn't a valid utf8 character. @@ -1026,9 +1026,9 @@ mod benches { #[bench] pub fn bench_sign_ecdsa(bh: &mut Bencher) { let s = Secp256k1::new(); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); - let (sk, _) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, _) = s.generate_keypair(&mut rand::rng()); bh.iter(|| { let sig = s.sign_ecdsa(msg, &sk); @@ -1039,9 +1039,9 @@ mod benches { #[bench] pub fn bench_verify_ecdsa(bh: &mut Bencher) { let s = Secp256k1::new(); - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let msg = Message::from_digest(msg); - let (sk, pk) = s.generate_keypair(&mut rand::thread_rng()); + let (sk, pk) = s.generate_keypair(&mut rand::rng()); let sig = s.sign_ecdsa(msg, &sk); bh.iter(|| { diff --git a/src/scalar.rs b/src/scalar.rs index 4bd4d55f4..b67ca740e 100644 --- a/src/scalar.rs +++ b/src/scalar.rs @@ -42,7 +42,7 @@ impl Scalar { /// Generates a random scalar #[cfg(all(feature = "rand", feature = "std"))] - pub fn random() -> Self { Self::random_custom(rand::thread_rng()) } + pub fn random() -> Self { Self::random_custom(rand::rng()) } /// Generates a random scalar using supplied RNG #[cfg(feature = "rand")] diff --git a/src/schnorr.rs b/src/schnorr.rs index 47f41712e..66a91fdd7 100644 --- a/src/schnorr.rs +++ b/src/schnorr.rs @@ -141,7 +141,7 @@ impl Secp256k1 { /// generator to generate the auxiliary random data. #[cfg(all(feature = "rand", feature = "std"))] pub fn sign_schnorr(&self, msg: &[u8], keypair: &Keypair) -> Signature { - self.sign_schnorr_with_rng(msg, keypair, &mut rand::thread_rng()) + self.sign_schnorr_with_rng(msg, keypair, &mut rand::rng()) } /// Creates a schnorr signature without using any auxiliary random data. @@ -253,12 +253,12 @@ mod tests { fn sign_helper(sign: fn(&Secp256k1, &[u8], &Keypair, &mut ThreadRng) -> Signature) { let secp = Secp256k1::new(); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let kp = Keypair::new(&secp, &mut rng); let (pk, _parity) = kp.x_only_public_key(); for _ in 0..100 { - let msg = crate::random_32_bytes(&mut rand::thread_rng()); + let msg = crate::random_32_bytes(&mut rand::rng()); let sig = sign(&secp, &msg, &kp, &mut rng); @@ -359,7 +359,7 @@ mod tests { #[cfg(all(feature = "rand", feature = "std"))] fn test_pubkey_serialize_roundtrip() { let secp = Secp256k1::new(); - let kp = Keypair::new(&secp, &mut rand::thread_rng()); + let kp = Keypair::new(&secp, &mut rand::rng()); let (pk, _parity) = kp.x_only_public_key(); let ser = pk.serialize();