From e9e27f4feb94041a89c729fd7be8f47d5bfd70c5 Mon Sep 17 00:00:00 2001 From: ardocrat Date: Thu, 16 Jul 2026 21:24:09 +0300 Subject: [PATCH] Update deps (#768) * build: update grin submodule to last staging * build: update grin submodule * build: remove remove_dir_all dependency * build: update rpassword * build: update semver * build: remove unused deps * build: update ring * build: update lock file deps * build: update rustyline * build: update ed25519-dalek * build: update curve25519-dalek * build: update age * build: update uuid * fix: uuid test * build: update x25519-dalek * fix: x25519-dalek build * build: update arti * build: update grin submodule * build: update hyper * fix: initialize rustls provider for tests * build: update grin submodule * fix: rustls install provider * tor: share getting private key * fix: show an error on node version parse * cli: renamed prompt password method * fix: replace into_boxed_slice with try_from * fix: dalek tests for onion * config: comment expanded secret key * fix: import api body for controller * password: handle prompt error * wallet: parse node error message * tests: do not use random values for sign messages * build: make hook executable * build: cargo format all * rustls: do not install provider at tests and globally * build: update grin submodule * build: fix api channel from grin submodule * args: use read_password for piped prompt * build: remove unused dep * test: fixed signature * preserve piped pw input --------- Co-authored-by: wiesche --- .hooks/pre-commit | 0 Cargo.lock | 1903 +++++++----------- Cargo.toml | 11 +- api/Cargo.toml | 6 +- api/src/owner.rs | 2 +- api/src/types.rs | 2 +- config/Cargo.toml | 4 - controller/Cargo.toml | 16 +- controller/src/controller.rs | 110 +- controller/tests/common/mod.rs | 2 +- controller/tests/slatepack.rs | 8 +- grin | 2 +- impls/Cargo.toml | 29 +- impls/src/adapters/slatepack.rs | 2 +- impls/src/tor/arti.rs | 10 +- impls/src/tor/config.rs | 25 +- integration/tests/framework.rs | 2 +- libwallet/Cargo.toml | 12 +- libwallet/src/api_impl/owner.rs | 24 +- libwallet/src/internal/tx.rs | 21 +- libwallet/src/mwixnet/onion/crypto/comsig.rs | 5 +- libwallet/src/mwixnet/onion/crypto/dalek.rs | 65 +- libwallet/src/slate.rs | 2 +- libwallet/src/slate_versions/ser.rs | 44 +- libwallet/src/slate_versions/v4.rs | 2 +- libwallet/src/slate_versions/v4_bin.rs | 20 +- libwallet/src/slatepack/address.rs | 27 +- libwallet/src/slatepack/packer.rs | 2 +- libwallet/src/slatepack/types.rs | 18 +- libwallet/src/types.rs | 2 +- src/bin/grin-wallet.rs | 2 - src/cli/cli.rs | 4 +- src/cmd/wallet.rs | 18 +- src/cmd/wallet_args.rs | 59 +- tests/cmd_line_basic.rs | 2 +- tests/common/mod.rs | 2 +- util/Cargo.toml | 10 +- util/src/ov3.rs | 14 +- 38 files changed, 1051 insertions(+), 1438 deletions(-) mode change 100644 => 100755 .hooks/pre-commit diff --git a/.hooks/pre-commit b/.hooks/pre-commit old mode 100644 new mode 100755 diff --git a/Cargo.lock b/Cargo.lock index b9896b1..92f7f4d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,17 +40,18 @@ dependencies = [ [[package]] name = "age" -version = "0.7.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "815e87cc8c39227cfff259f9550bd9f1c1a082370eccf4e9a176327fb7f906c9" +checksum = "caf6575916925dce67e5cc5588066ec50db90be641b5de10e2495d1a4045d55c" dependencies = [ "age-core", "base64 0.13.1", "bech32 0.8.1", "chacha20poly1305", + "cipher 0.4.4", "cookie-factory", - "hkdf 0.11.0", - "hmac 0.11.0", + "hkdf", + "hmac 0.12.1", "i18n-embed", "i18n-embed-fl", "lazy_static", @@ -60,6 +61,7 @@ dependencies = [ "rand 0.8.6", "rust-embed", "scrypt", + "sha2 0.10.9", "sha2 0.9.9", "subtle", "x25519-dalek 1.1.1", @@ -68,18 +70,19 @@ dependencies = [ [[package]] name = "age-core" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70afa630ef12a4fc666277713efbe6da2bc87bb3f3af0f1149415b701362c615" +checksum = "00a5c8d8a33abc74ad393896a6305351dd159d0e184788f4729e3c80e397fa45" dependencies = [ "base64 0.13.1", "chacha20poly1305", "cookie-factory", - "hkdf 0.11.0", + "hkdf", + "io_tee", "nom", "rand 0.8.6", - "secrecy 0.8.0", - "sha2 0.9.9", + "secrecy", + "sha2 0.10.9", ] [[package]] @@ -113,7 +116,7 @@ checksum = "2a6309e6b8d89b36b9f959b7a8fa093583b94922a0f6438a24fb08936de4d428" dependencies = [ "amplify_syn", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", ] @@ -133,7 +136,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7736fb8d473c0d83098b5bac44df6a561e20470375cd8bcae30516dc889fd62a" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", ] @@ -146,15 +149,6 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi", -] - [[package]] name = "ansi_term" version = "0.12.1" @@ -166,15 +160,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -202,15 +196,15 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "arti-client" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc89b08e6a475a83d70e52f0ede139a433eb46e986a6cee6eeaa1b73297bf1" +checksum = "841d54b6c87059a9b6562bfe585f3a637b72f90cddaa327ac29b5ddf082a54b4" dependencies = [ "async-trait", "cfg-if 1.0.4", @@ -221,12 +215,12 @@ dependencies = [ "fs-mistrust", "futures 0.3.32", "hostname-validator", - "humantime 2.3.0", + "humantime 2.4.0", "humantime-serde", "libc", "once_cell", "postage", - "rand 0.10.1", + "rand 0.10.2", "safelog", "serde", "tempfile", @@ -289,8 +283,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", "synstructure", ] @@ -301,8 +295,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -335,28 +329,6 @@ dependencies = [ "url", ] -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", -] - [[package]] name = "async-trait" version = "0.1.89" @@ -364,8 +336,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -389,7 +361,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "futures-sink", "futures-util", "memchr", @@ -445,9 +417,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-lc-rs" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" dependencies = [ "aws-lc-sys", "zeroize", @@ -455,14 +427,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -580,9 +553,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" dependencies = [ "serde_core", ] @@ -627,8 +600,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0b121a9fe0df916e362fb3271088d071159cdf11db0e4182d02152850756eff" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -687,13 +660,13 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79" dependencies = [ "memchr", "regex-automata", - "serde", + "serde_core", ] [[package]] @@ -743,21 +716,21 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" [[package]] name = "caret" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beae2cb9f60bc3f21effaaf9c64e51f6627edd54eedc9199ba07f519ef2a2101" +checksum = "2bb840a063107846780a14acc022b55bf6c174997a393ffde8b58ff6630c1b56" [[package]] name = "cc" -version = "1.2.63" +version = "1.2.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" dependencies = [ "find-msvc-tools", "jobserver", @@ -797,9 +770,9 @@ dependencies = [ [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if 1.0.4", "cpufeatures 0.3.0", @@ -821,9 +794,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -859,7 +832,7 @@ version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "atty", "bitflags 1.3.2", "strsim 0.8.0", @@ -869,6 +842,17 @@ dependencies = [ "yaml-rust", ] +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + [[package]] name = "cloudabi" version = "0.0.3" @@ -904,7 +888,7 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "memchr", ] @@ -1140,16 +1124,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote 1.0.45", - "syn 1.0.109", -] - [[package]] name = "ctr" version = "0.9.2" @@ -1159,19 +1133,6 @@ dependencies = [ "cipher 0.4.4", ] -[[package]] -name = "curve25519-dalek" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" -dependencies = [ - "byteorder", - "digest 0.8.1", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -1195,7 +1156,22 @@ dependencies = [ "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest 0.10.7", - "fiat-crypto", + "fiat-crypto 0.2.9", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" +dependencies = [ + "cfg-if 1.0.4", + "cpufeatures 0.3.0", + "curve25519-dalek-derive", + "fiat-crypto 0.3.0", "rustc_version", "subtle", "zeroize", @@ -1208,8 +1184,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1251,7 +1227,7 @@ dependencies = [ "fnv", "ident_case", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "strsim 0.10.0", "syn 1.0.109", ] @@ -1265,8 +1241,8 @@ dependencies = [ "fnv", "ident_case", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1277,9 +1253,9 @@ checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ "ident_case", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "strsim 0.11.1", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -1289,7 +1265,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" dependencies = [ "darling_core 0.14.4", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", ] @@ -1300,8 +1276,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1311,8 +1287,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1323,9 +1299,9 @@ checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if 1.0.4", "hashbrown 0.14.5", - "lock_api 0.4.14", + "lock_api", "once_cell", - "parking_lot_core 0.9.12", + "parking_lot_core", ] [[package]] @@ -1389,10 +1365,10 @@ dependencies = [ "itertools 0.15.0", "proc-macro-crate", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "sha3 0.12.0", "strum 0.28.0", - "syn 2.0.117", + "syn 2.0.118", "unicode-ident", "void", ] @@ -1405,7 +1381,7 @@ checksum = "24c1b715c79be6328caa9a5e1a387a196ea503740f0722ec3dd8f67a9e72314d" dependencies = [ "darling 0.14.4", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", ] @@ -1445,9 +1421,9 @@ checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ "convert_case", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "rustc_version", - "syn 2.0.117", + "syn 2.0.118", "unicode-xid 0.2.6", ] @@ -1457,12 +1433,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7" -[[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" - [[package]] name = "digest" version = "0.8.1" @@ -1551,16 +1521,6 @@ dependencies = [ "dirs-sys 0.5.0", ] -[[package]] -name = "dirs-next" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6" -dependencies = [ - "cfg-if 1.0.4", - "dirs-sys-next", -] - [[package]] name = "dirs-next" version = "2.0.0" @@ -1612,8 +1572,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1678,19 +1638,10 @@ dependencies = [ "digest 0.10.7", "elliptic-curve", "rfc6979", - "signature 2.2.0", + "signature", "spki", ] -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "signature 1.6.4", -] - [[package]] name = "ed25519" version = "2.2.3" @@ -1698,21 +1649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", - "signature 2.2.0", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519 1.5.3", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "zeroize", + "signature", ] [[package]] @@ -1722,7 +1659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" dependencies = [ "curve25519-dalek 4.1.3", - "ed25519 2.2.3", + "ed25519", "merlin", "rand_core 0.6.4", "serde", @@ -1739,7 +1676,7 @@ checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" dependencies = [ "enum-ordinalize", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", ] @@ -1783,17 +1720,23 @@ dependencies = [ "cfg-if 1.0.4", ] +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + [[package]] name = "enum-ordinalize" version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ - "num-bigint 0.4.6", + "num-bigint 0.4.8", "num-traits 0.2.19", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1804,8 +1747,8 @@ checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ "once_cell", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1834,8 +1777,8 @@ checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a" dependencies = [ "darling 0.21.3", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -1867,6 +1810,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + [[package]] name = "event-listener" version = "5.4.1" @@ -1896,6 +1849,17 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +[[package]] +name = "fd-lock" +version = "3.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" +dependencies = [ + "cfg-if 1.0.4", + "rustix 0.38.44", + "windows-sys 0.48.0", +] + [[package]] name = "ff" version = "0.13.1" @@ -1912,6 +1876,12 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "fiat-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" + [[package]] name = "figment" version = "0.10.19" @@ -2054,9 +2024,9 @@ dependencies = [ [[package]] name = "fs-mistrust" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cfebc7c6bb65d327ded064db65cd260b6c418c27ae790318650cfa2a81bf33f" +checksum = "cd938e053fbfb6dba36106f4bcf27c53362e6152adc9341700c4bc2264cd4a8f" dependencies = [ "derive_builder_fork_arti", "dirs 6.0.0", @@ -2076,9 +2046,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "fslock-guard" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e77b8a36ee17f9079b53db7281de9b16a8fb2bc97a7cd1e41a2998f3a837af7a" +checksum = "b63307a37c3d90d55a90eefa5441ec12cbd291ff456b6bf1126656c5bc43b058" dependencies = [ "libc", "thiserror 2.0.18", @@ -2130,9 +2100,9 @@ dependencies = [ [[package]] name = "futures-copy" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f320278d16b5617859cc2234ca5775a8d9b24faee8c14e54e79540caab053a" +checksum = "fcad91f8ba72542347d5cc8ee43891abe4698429fa7b3de56f17f4bb6fa514c4" dependencies = [ "futures 0.3.32", "libc", @@ -2170,8 +2140,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -2263,17 +2233,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if 1.0.4", "js-sys", "libc", "r-efi 6.0.0", "rand_core 0.10.1", - "wasip2", - "wasip3", "wasm-bindgen", ] @@ -2284,8 +2252,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cf442baaabe4213ce7d1239afc26c039180b6456da2cededa316ae2c8a77a77" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -2300,7 +2268,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddddbf932745a6be37109b6112d3ee09696106f848449069d3a57bba937ab82e" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "libc", "libgit2-sys", "log", @@ -2314,40 +2282,39 @@ checksum = "9985c9503b412198aa4197559e9a318524ebc4519c229bfa05a535828c950b9d" [[package]] name = "grin_api" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ - "async-stream", - "bytes 1.11.1", + "bytes 1.12.0", "easy-jsonrpc-mw", "futures 0.3.32", "grin_chain", "grin_core", "grin_p2p", "grin_pool", - "grin_store", "grin_util", - "http 0.2.12", - "hyper 0.14.32", - "hyper-rustls 0.23.2", + "http-body-util", + "hyper", + "hyper-rustls", "hyper-timeout", + "hyper-util", "lazy_static", "log", "regex", - "ring 0.16.20", - "rustls 0.20.9", + "rustls", "rustls-pemfile", "serde", "serde_derive", "serde_json", + "subtle", "thiserror 1.0.69", "tokio", - "tokio-rustls 0.23.4", + "tokio-rustls", "url", ] [[package]] name = "grin_chain" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "bit-vec", "bitflags 1.3.2", @@ -2371,7 +2338,7 @@ dependencies = [ [[package]] name = "grin_core" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "blake2-rfc", "byteorder", @@ -2397,7 +2364,7 @@ dependencies = [ [[package]] name = "grin_keychain" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "blake2-rfc", "byteorder", @@ -2418,7 +2385,7 @@ dependencies = [ [[package]] name = "grin_p2p" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "bitflags 1.3.2", "built", @@ -2441,7 +2408,7 @@ dependencies = [ [[package]] name = "grin_pool" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "blake2-rfc", "chrono", @@ -2462,7 +2429,7 @@ version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7bb95f155b1eede2648a1b9afbba82bc3d9f2af0518b478767559a572bd973" dependencies = [ - "arrayvec 0.7.6", + "arrayvec 0.7.8", "cc", "libc", "rand 0.5.6", @@ -2473,7 +2440,7 @@ dependencies = [ [[package]] name = "grin_store" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "byteorder", "chrono", @@ -2495,17 +2462,16 @@ dependencies = [ [[package]] name = "grin_util" -version = "5.4.0" +version = "5.5.1-alpha.0" dependencies = [ "anyhow", "backtrace", "base64 0.12.3", - "byteorder", "grin_secp256k1zkp", "lazy_static", "log", "log4rs", - "parking_lot 0.10.2", + "parking_lot", "rand 0.6.5", "serde", "serde_derive", @@ -2530,17 +2496,13 @@ dependencies = [ "grin_wallet_controller", "grin_wallet_impls", "grin_wallet_libwallet", - "grin_wallet_util", "lazy_static", "linefeed", "log", - "prettytable-rs", - "remove_dir_all", "rpassword", "rustyline", - "semver 0.10.0", + "semver", "serde", - "serde_derive", "serde_json", "thiserror 1.0.69", "url", @@ -2553,7 +2515,7 @@ dependencies = [ "base64 0.12.3", "chrono", "easy-jsonrpc-mw", - "ed25519-dalek 1.0.1", + "ed25519-dalek", "grin_core", "grin_keychain", "grin_util", @@ -2563,7 +2525,7 @@ dependencies = [ "grin_wallet_util", "log", "rand 0.6.5", - "ring 0.16.20", + "ring", "serde", "serde_derive", "serde_json", @@ -2578,8 +2540,6 @@ dependencies = [ "dirs 2.0.2", "grin_core", "grin_util", - "grin_wallet_util", - "pretty_assertions", "rand 0.6.5", "serde", "serde_derive", @@ -2590,10 +2550,8 @@ dependencies = [ name = "grin_wallet_controller" version = "5.4.1" dependencies = [ - "chrono", "easy-jsonrpc-mw", - "ed25519-dalek 1.0.1", - "futures 0.3.32", + "ed25519-dalek", "grin_api", "grin_chain", "grin_core", @@ -2604,21 +2562,18 @@ dependencies = [ "grin_wallet_impls", "grin_wallet_libwallet", "grin_wallet_util", - "hyper 0.14.32", + "http-body-util", + "hyper", "lazy_static", "log", "prettytable-rs", "qr_code", "rand 0.7.3", - "remove_dir_all", - "ring 0.16.20", "serde", - "serde_derive", "serde_json", "term 0.6.1", "thiserror 1.0.69", "tokio", - "url", "uuid", ] @@ -2629,32 +2584,28 @@ dependencies = [ "arti-client", "base64 0.12.3", "blake2-rfc", - "bytes 1.11.1", + "bytes 1.12.0", "chrono", - "curve25519-dalek 4.1.3", - "ed25519-dalek 1.0.1", - "ed25519-dalek 2.2.0", + "ed25519-dalek", "fs-mistrust", "futures 0.3.32", "grin_api", "grin_chain", "grin_core", "grin_keychain", - "grin_store", "grin_util", "grin_wallet_config", "grin_wallet_libwallet", "grin_wallet_util", "http-body-util", - "hyper 1.10.1", + "hyper", "hyper-util", "lazy_static", "log", "rand 0.6.5", "regex", - "remove_dir_all", "reqwest", - "ring 0.16.20", + "ring", "serde", "serde_derive", "serde_json", @@ -2670,7 +2621,6 @@ dependencies = [ "tor-llcrypto", "tor-rtcompat", "url", - "uuid", ] [[package]] @@ -2685,8 +2635,8 @@ dependencies = [ "byteorder", "chacha20 0.8.2", "chrono", - "curve25519-dalek 2.1.3", - "ed25519-dalek 1.0.1", + "curve25519-dalek 5.0.0", + "ed25519-dalek", "grin_core", "grin_keychain", "grin_store", @@ -2699,7 +2649,6 @@ dependencies = [ "num-bigint 0.2.6", "rand 0.6.5", "regex", - "secrecy 0.6.0", "serde", "serde_derive", "serde_json", @@ -2708,7 +2657,7 @@ dependencies = [ "strum_macros 0.18.0", "thiserror 1.0.69", "uuid", - "x25519-dalek 0.6.0", + "x25519-dalek 2.0.1", ] [[package]] @@ -2716,10 +2665,8 @@ name = "grin_wallet_util" version = "5.4.1" dependencies = [ "data-encoding", - "ed25519-dalek 1.0.1", + "ed25519-dalek", "grin_util", - "pretty_assertions", - "rand 0.6.5", "serde", "serde_derive", "sha3 0.8.2", @@ -2749,25 +2696,6 @@ dependencies = [ "xxhash-rust", ] -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes 1.11.1", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.14.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "h2" version = "0.4.15" @@ -2775,11 +2703,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", - "bytes 1.11.1", + "bytes 1.12.0", "fnv", "futures-core", "futures-sink", - "http 1.4.2", + "http", "indexmap 2.14.0", "slab", "tokio", @@ -2853,7 +2781,7 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad82d6598ccf1dac15c8b758a1bd282b755b6776be600429176757190a1b0202" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "byteorder", "heed-traits", "heed-types", @@ -2906,16 +2834,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hkdf" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01706d578d5c281058480e673ae4086a9f4710d8df1ad80a5b03e39ece5f886b" -dependencies = [ - "digest 0.9.0", - "hmac 0.11.0", -] - [[package]] name = "hkdf" version = "0.12.4" @@ -2950,46 +2868,24 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2" -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes 1.11.1", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes 1.11.1", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "bytes 1.11.1", - "http 1.4.2", + "bytes 1.12.0", + "http", ] [[package]] @@ -2998,10 +2894,10 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "futures-core", - "http 1.4.2", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -3028,9 +2924,9 @@ dependencies = [ [[package]] name = "humantime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" [[package]] name = "humantime-serde" @@ -3038,43 +2934,19 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" dependencies = [ - "humantime 2.3.0", + "humantime 2.4.0", "serde", ] [[package]] name = "hybrid-array" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" dependencies = [ "typenum", ] -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes 1.11.1", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.10.1" @@ -3082,13 +2954,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", - "bytes 1.11.1", + "bytes 1.12.0", "futures-channel", "futures-core", - "h2 0.4.15", - "http 1.4.2", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -3096,46 +2969,34 @@ dependencies = [ "want", ] -[[package]] -name = "hyper-rustls" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" -dependencies = [ - "http 0.2.12", - "hyper 0.14.32", - "log", - "rustls 0.20.9", - "rustls-native-certs 0.6.3", - "tokio", - "tokio-rustls 0.23.4", -] - [[package]] name = "hyper-rustls" version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.2", - "hyper 1.10.1", + "http", + "hyper", "hyper-util", - "rustls 0.23.40", + "log", + "rustls", + "rustls-native-certs", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls", "tower-service", ] [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 0.14.32", + "hyper", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", ] [[package]] @@ -3145,17 +3006,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ "base64 0.22.1", - "bytes 1.11.1", + "bytes 1.12.0", "futures-channel", "futures-util", - "http 1.4.2", - "http-body 1.0.1", - "hyper 1.10.1", + "http", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.4", + "socket2", "system-configuration", "tokio", "tower-service", @@ -3191,7 +3052,7 @@ dependencies = [ "intl-memoizer", "lazy_static", "log", - "parking_lot 0.12.5", + "parking_lot", "rust-embed", "thiserror 1.0.69", "unic-langid", @@ -3213,9 +3074,9 @@ dependencies = [ "lazy_static", "proc-macro-error", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "strsim 0.10.0", - "syn 2.0.117", + "syn 2.0.118", "unic-langid", ] @@ -3228,8 +3089,8 @@ dependencies = [ "find-crate", "i18n-config", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -3338,12 +3199,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -3410,16 +3265,16 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "533e68a5842e734946fe159fb03fc9bbbb254f590dd0d8ad321ae5ff7beca2c1" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "inotify-sys", "libc", ] [[package]] name = "inotify-sys" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +checksum = "9ea94e891b3606826e9c998be69ddca42247dad8ad50b1649a5cb7e1c9ae06fd" dependencies = [ "libc", ] @@ -3461,6 +3316,12 @@ dependencies = [ "rustversion", ] +[[package]] +name = "io_tee" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304" + [[package]] name = "ipnet" version = "2.12.0" @@ -3526,10 +3387,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "rustc_version", "simd_cesu8", - "syn 2.0.117", + "syn 2.0.118", ] [[package]] @@ -3547,8 +3408,8 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -3563,13 +3424,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if 1.0.4", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -3631,7 +3491,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "libc", ] @@ -3641,15 +3501,9 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libc" version = "0.2.186" @@ -3670,18 +3524,18 @@ dependencies = [ [[package]] name = "liblzma" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6033b77c21d1f56deeae8014eb9fbe7bdf1765185a6c508b5ca82eeaed7f899" +checksum = "45aec2360b3933207e27908049d8e4df4e476b58180afb1e56b2a4fb72efe4ba" dependencies = [ "liblzma-sys", ] [[package]] name = "liblzma-sys" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a60851d15cd8c5346eca4ab8babff585be2ae4bc8097c067291d3ffe2add3b6" +checksum = "a046c7f353ba30f810545151e04f63545833803f5b86ee3ddf1517247fe560a5" dependencies = [ "cc", "libc", @@ -3696,9 +3550,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ "libc", ] @@ -3743,6 +3597,12 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -3766,15 +3626,6 @@ dependencies = [ "libc", ] -[[package]] -name = "lock_api" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard", -] - [[package]] name = "lock_api" version = "0.4.14" @@ -3786,9 +3637,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" dependencies = [ "serde_core", ] @@ -3811,12 +3662,12 @@ dependencies = [ "derive_more", "flate2", "fnv", - "humantime 2.3.0", + "humantime 2.4.0", "libc", "log", "log-mdc", "mock_instant", - "parking_lot 0.12.5", + "parking_lot", "rand 0.9.4", "serde", "serde-value", @@ -3855,9 +3706,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "memmap" @@ -3871,13 +3722,22 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg 1.5.1", +] + [[package]] name = "merlin" version = "3.0.0" @@ -3926,9 +3786,9 @@ dependencies = [ [[package]] name = "mock_instant" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce6dd36094cac388f119d2e9dc82dc730ef91c32a6222170d630e5414b956e6" +checksum = "9bb517913cfcfb9eeda59f36020269075a152701a01606c612f547e4890be399" [[package]] name = "mortal" @@ -3936,7 +3796,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c624fa1b7aab6bd2aff6e9b18565cc0363b6d45cbcd7465c9ed5e3740ebf097" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "libc", "nix 0.26.4", "smallstr", @@ -3955,24 +3815,34 @@ dependencies = [ "libc", "log", "openssl", - "openssl-probe 0.2.1", + "openssl-probe", "openssl-sys", "schannel", - "security-framework 3.7.0", + "security-framework", "security-framework-sys", "tempfile", ] [[package]] -name = "nix" -version = "0.18.0" +name = "nibble_vec" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nix" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" dependencies = [ "bitflags 1.3.2", "cc", - "cfg-if 0.1.10", + "cfg-if 1.0.4", "libc", + "memoffset", ] [[package]] @@ -4014,7 +3884,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "inotify", "kqueue", "libc", @@ -4031,7 +3901,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] @@ -4079,9 +3949,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" dependencies = [ "num-integer", "num-traits 0.2.19", @@ -4170,16 +4040,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" -dependencies = [ - "hermit-abi 0.5.2", - "libc", -] - [[package]] name = "num_enum" version = "0.7.6" @@ -4198,8 +4058,8 @@ checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -4208,7 +4068,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] @@ -4238,9 +4098,9 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "oneshot-fused-workaround" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17b52d0e4a06a4c7eb8d2943c0015fa628cf4ccc409429cebc0f5bed6d33a82" +checksum = "60d6f8f565703c8a15f98b7782e39526490f8c291910d80c9be54a753a822f6f" dependencies = [ "futures 0.3.32", ] @@ -4259,11 +4119,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.80" +version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a45fa2aa886c42762255da344f0a0d313e254066c46aad76f300c3d3da62d967" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "cfg-if 1.0.4", "foreign-types", "libc", @@ -4278,16 +4138,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - [[package]] name = "openssl-probe" version = "0.2.1" @@ -4305,9 +4159,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.116" +version = "0.9.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28a22dc7140cda5f096e5e7724a6962ca81a7f8bfd2979f9b18c11af56318c4" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" dependencies = [ "cc", "libc", @@ -4340,15 +4194,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] - [[package]] name = "p256" version = "0.13.2" @@ -4403,38 +4248,14 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -[[package]] -name = "parking_lot" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.7.3", -] - [[package]] name = "parking_lot" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ - "lock_api 0.4.14", - "parking_lot_core 0.9.12", -] - -[[package]] -name = "parking_lot_core" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b93f386bb233083c799e6e642a9d73db98c24a5deeb95ffc85bf281255dffc98" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "smallvec", - "winapi", + "lock_api", + "parking_lot_core", ] [[package]] @@ -4564,8 +4385,8 @@ dependencies = [ "phf_generator 0.11.3", "phf_shared 0.11.3", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -4577,8 +4398,8 @@ dependencies = [ "phf_generator 0.13.1", "phf_shared 0.13.1", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -4615,8 +4436,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -4672,7 +4493,7 @@ dependencies = [ "atomic 0.5.3", "crossbeam-queue", "futures 0.3.32", - "parking_lot 0.12.5", + "parking_lot", "pin-project", "static_assertions", "thiserror 1.0.69", @@ -4702,28 +4523,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "pretty_assertions" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" -dependencies = [ - "ansi_term 0.11.0", - "ctor", - "difference", - "output_vt100", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2 1.0.106", - "syn 2.0.117", -] - [[package]] name = "prettytable-rs" version = "0.10.0" @@ -4775,7 +4574,7 @@ checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", "version_check", ] @@ -4787,7 +4586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "version_check", ] @@ -4835,18 +4634,18 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.2", - "rustls 0.23.40", - "socket2 0.6.4", + "rustc-hash 2.1.3", + "rustls", + "socket2", "thiserror 2.0.18", "tokio", "tracing", @@ -4855,18 +4654,19 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" dependencies = [ "aws-lc-rs", - "bytes 1.11.1", - "getrandom 0.3.4", + "bytes 1.12.0", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.4", - "ring 0.17.14", - "rustc-hash 2.1.2", - "rustls 0.23.40", + "rand 0.10.2", + "rand_pcg 0.10.2", + "ring", + "rustc-hash 2.1.3", + "rustls", "rustls-pki-types", "slab", "thiserror 2.0.18", @@ -4877,16 +4677,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.4", + "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4900,9 +4700,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2 1.0.106", ] @@ -4925,6 +4725,16 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rand" version = "0.5.6" @@ -4952,7 +4762,7 @@ dependencies = [ "rand_isaac", "rand_jitter 0.1.4", "rand_os", - "rand_pcg", + "rand_pcg 0.1.2", "rand_xorshift", "winapi", ] @@ -4993,12 +4803,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "chacha20 0.10.0", - "getrandom 0.4.2", + "chacha20 0.10.1", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -5173,6 +4983,15 @@ dependencies = [ "rand_core 0.4.2", ] +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "rand_xorshift" version = "0.1.1" @@ -5238,7 +5057,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", ] [[package]] @@ -5290,15 +5109,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] name = "regex" -version = "1.12.3" +version = "1.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" dependencies = [ "aho-corasick", "memchr", @@ -5319,22 +5138,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - -[[package]] -name = "remove_dir_all" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882f368737489ea543bc5c340e6f3d34a28c39980bd9a979e47322b26f60ac40" -dependencies = [ - "libc", - "log", - "num_cpus", - "rayon", - "winapi", -] +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqwest" @@ -5343,15 +5149,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" dependencies = [ "base64 0.22.1", - "bytes 1.11.1", + "bytes 1.12.0", "encoding_rs", "futures-core", - "h2 0.4.15", - "http 1.4.2", - "http-body 1.0.1", + "h2", + "http", + "http-body", "http-body-util", - "hyper 1.10.1", - "hyper-rustls 0.27.9", + "hyper", + "hyper-rustls", "hyper-util", "js-sys", "log", @@ -5359,12 +5165,12 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.40", + "rustls", "rustls-pki-types", "rustls-platform-verifier", "sync_wrapper", "tokio", - "tokio-rustls 0.26.4", + "tokio-rustls", "tower", "tower-http", "tower-service", @@ -5376,20 +5182,20 @@ dependencies = [ [[package]] name = "reseeding_rng" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35d8fa137e1f0bbc1139893fcf4fff5f099d76658e6da2b10fadd04f0cadc2d4" +checksum = "ecfc8e855ab517235426ec1290bfb0745e73fa478b29619eb66a2a81be9d8716" dependencies = [ "rand_core 0.10.1", ] [[package]] name = "retry-error" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf6aa271ee564cc5d1df57c5cf7c6ac7a21a4f9f40d2bf1d32bf0a1bb3ddaeb0" +checksum = "e7c0e06f9b501df8600ad8bd073f4990f703f36e0f48e574b431f4a15d69b449" dependencies = [ - "humantime 2.3.0", + "humantime 2.4.0", "web-time", ] @@ -5403,21 +5209,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - [[package]] name = "ring" version = "0.17.14" @@ -5428,7 +5219,7 @@ dependencies = [ "cfg-if 1.0.4", "getrandom 0.2.17", "libc", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -5445,12 +5236,13 @@ dependencies = [ [[package]] name = "rpassword" -version = "4.0.5" +version = "7.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" +checksum = "2da316a15f47e3d053de9cb2c439650bd8fa4aaeb9365f2e5f27f492ff73c196" dependencies = [ "libc", - "winapi", + "rtoolbox", + "windows-sys 0.61.2", ] [[package]] @@ -5468,7 +5260,7 @@ dependencies = [ "pkcs8", "rand_core 0.6.4", "sha2 0.10.9", - "signature 2.2.0", + "signature", "spki", "subtle", "zeroize", @@ -5484,13 +5276,23 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "rtoolbox" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50a0e551c1e27e1731aba276dbeaeac73f53c7cd34d1bda485d02bd1e0f36844" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "rusqlite" version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0d2b0146dd9661bf67bb107c0bb2a55064d556eeb3fc314151b957f313bcd4e" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -5530,9 +5332,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49b94b81e5b2c284684141a2fb9e2a31be90638caf040bf9afbc5a0416afe1ac" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "rust-embed-utils", - "syn 2.0.117", + "syn 2.0.118", "walkdir", ] @@ -5560,9 +5362,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -5570,7 +5372,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.28", + "semver", ] [[package]] @@ -5582,67 +5384,58 @@ dependencies = [ "nom", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.13.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.12.1", "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.20.9" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" -dependencies = [ - "log", - "ring 0.16.20", - "sct", - "webpki", -] - -[[package]] -name = "rustls" -version = "0.23.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", + "log", "once_cell", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" -dependencies = [ - "openssl-probe 0.1.6", - "rustls-pemfile", - "schannel", - "security-framework 2.11.1", -] - [[package]] name = "rustls-native-certs" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ - "openssl-probe 0.2.1", + "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.7.0", + "security-framework", ] [[package]] @@ -5656,9 +5449,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046" dependencies = [ "web-time", "zeroize", @@ -5675,11 +5468,11 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.40", - "rustls-native-certs 0.8.4", + "rustls", + "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.7.0", + "security-framework", "security-framework-sys", "webpki-root-certs", "windows-sys 0.61.2", @@ -5698,9 +5491,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ "aws-lc-rs", - "ring 0.17.14", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -5711,17 +5504,22 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustyline" -version = "6.3.0" +version = "9.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0d5e7b0219a3eadd5439498525d4765c59b7c993ef0c12244865cd2d988413" +checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039" dependencies = [ - "cfg-if 0.1.10", - "dirs-next 1.0.2", + "bitflags 1.3.2", + "cfg-if 1.0.4", + "clipboard-win", + "dirs-next", + "fd-lock", "libc", "log", "memchr", - "nix 0.18.0", + "nix 0.23.2", + "radix_trie", "scopeguard", + "smallvec", "unicode-segmentation", "unicode-width", "utf8parse", @@ -5736,9 +5534,9 @@ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "safelog" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a907e0d82c61b1b06a2030c968eb313dcf432686b77801a26bc4b206f96573" +checksum = "4c0812d386a9992c036500b92565c41f84c28fd2e48fe853a395c393261b730b" dependencies = [ "derive_more", "educe", @@ -5755,11 +5553,11 @@ checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "salsa20" -version = "0.9.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0fbb5f676da676c260ba276a8f43a8dc67cf02d1438423aeb1c677a7212686" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ - "cipher 0.3.0", + "cipher 0.4.4", ] [[package]] @@ -5782,9 +5580,9 @@ dependencies = [ [[package]] name = "saturating-time" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63583a1dd0647d1484228529ab4ecaa874048d2956f117362aa5f5826456230" +checksum = "802bdbfcca9a239cb46eeaaedea507e37bb13ba1a673762d2e2ef7a9dac63144" [[package]] name = "schannel" @@ -5827,9 +5625,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73d6d7c6311ebdbd9184ad6c4447b2f36337e327bda107d3ba9e3c374f9d325" +checksum = "ba0aaf3911fff0d942c10a49779de7754699810fc7dbe3df515613b2ecc8195a" dependencies = [ "hmac 0.12.1", "pbkdf2 0.10.1", @@ -5837,16 +5635,6 @@ dependencies = [ "sha2 0.10.9", ] -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", -] - [[package]] name = "sec1" version = "0.7.3" @@ -5861,15 +5649,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secrecy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9182278ed645df3477a9c27bfee0621c621aa16f6972635f7f795dae3d81070f" -dependencies = [ - "zeroize", -] - [[package]] name = "secrecy" version = "0.8.0" @@ -5879,26 +5658,13 @@ dependencies = [ "zeroize", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.12.1", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -5930,27 +5696,12 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" -[[package]] -name = "semver" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "394cec28fa623e00903caf7ba4fa6fb9a0e260280bb8cdbbba029611108a0190" -dependencies = [ - "semver-parser", -] - [[package]] name = "semver" version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -[[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.228" @@ -5997,8 +5748,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6070,8 +5821,8 @@ checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" dependencies = [ "darling 0.23.0", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6172,7 +5923,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32824fab5e16e6c4d86dc1ba84489390419a39f97699852b66480bb87d297ed8" dependencies = [ "bstr", - "dirs 4.0.0", + "dirs 6.0.0", "os_str_bytes", ] @@ -6192,12 +5943,6 @@ dependencies = [ "libc", ] -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - [[package]] name = "signature" version = "2.2.0" @@ -6260,9 +6005,9 @@ dependencies = [ [[package]] name = "slotmap-careful" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed92816c1fbb29891a525b92d5fa95757c9dee47044f76c8e06ceb1e052a8d64" +checksum = "e7cd5208f878dce99cfbefa73c692c67edf946ac53e0cc4455e2dabe43d54af7" dependencies = [ "paste", "serde", @@ -6282,19 +6027,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "socket2" @@ -6306,12 +6041,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -6381,7 +6110,7 @@ dependencies = [ "rsa", "sec1", "sha2 0.10.9", - "signature 2.2.0", + "signature", "ssh-cipher-fork-arti", "ssh-encoding-fork-arti", "subtle", @@ -6400,6 +6129,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + [[package]] name = "strsim" version = "0.8.0" @@ -6441,7 +6176,7 @@ checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" dependencies = [ "heck 0.3.3", "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "syn 1.0.109", ] @@ -6453,8 +6188,8 @@ checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck 0.5.0", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6481,18 +6216,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", + "quote 1.0.46", "unicode-ident", ] @@ -6521,8 +6256,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6560,7 +6295,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.12.1", + "bitflags 2.13.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6588,9 +6323,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", - "rustix", + "rustix 1.1.4", "windows-sys 0.61.2", ] @@ -6610,7 +6345,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" dependencies = [ - "dirs-next 2.0.0", + "dirs-next", "rustversion", "winapi", ] @@ -6671,8 +6406,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6682,8 +6417,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6707,9 +6442,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.49" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711a53c2d47bbd818258c498c8dbfe186a2526c631495cfe7e078567f86b8469" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", "js-sys", @@ -6728,9 +6463,9 @@ checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.29" +version = "0.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c652a3727a9cbb9a02f707f530b618ce00d0ccd762009c8c23bd191df3c17d" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" dependencies = [ "num-conv", "time-core", @@ -6777,27 +6512,17 @@ version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "libc", "mio", - "parking_lot 0.12.5", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.4", + "socket2", "tokio-macros", "windows-sys 0.61.2", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd86198d9ee903fedd2f9a2e72014287c0d9167e4ae43b5853007205dda1b76" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.7.0" @@ -6805,19 +6530,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", -] - -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.9", - "tokio", - "webpki", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -6826,7 +6540,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.40", + "rustls", "tokio", ] @@ -6836,7 +6550,7 @@ version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "futures-core", "futures-io", "futures-sink", @@ -6947,53 +6661,63 @@ checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tor-async-utils" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27fc83e7539ac5f717b722456df991ca8819782d04f7ae2ee28eefacca030eef" +checksum = "58580b41636378f79500bca6a178787e0e434207e0880dd90698ae3f686f24d6" dependencies = [ + "cfg-if 1.0.4", "derive-deftly", "educe", "futures 0.3.32", "oneshot-fused-workaround", "pin-project", "postage", + "sync_wrapper", "thiserror 2.0.18", + "tokio", + "tokio-util", + "tor-basic-utils", + "tor-rtcompat", + "tracing", "void", + "web-time-compat", ] [[package]] name = "tor-basic-utils" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd01b9947f57a99193547f3a40a0bd179e9a332ead855c07e2fb702a1517f74" +checksum = "dd3046aa299df67da91b45c02c24d48d40ae1845f9b91e27f9c8adbde78315ba" dependencies = [ + "derive-deftly", "derive_more", - "getrandom 0.4.2", + "getrandom 0.4.3", "hex", "itertools 0.14.0", "libc", "paste", - "rand 0.10.1", + "rand 0.10.2", "rand_chacha 0.10.0", "serde", "slab", "smallvec", "thiserror 2.0.18", + "tracing", "weak-table", "web-time-compat", ] [[package]] name = "tor-bytes" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de6a7af55881d599cd48c841916520318d5711df17514001aafd5f796f61e337" +checksum = "6b4833cc8ab3fca79eabc06f3ca97db102a3b7db861d77848d39932a6f0ed598" dependencies = [ - "bytes 1.11.1", + "bytes 1.12.0", "derive-deftly", "digest 0.10.7", "educe", - "getrandom 0.4.2", + "getrandom 0.4.3", "safelog", "thiserror 2.0.18", "tor-error", @@ -7003,20 +6727,20 @@ dependencies = [ [[package]] name = "tor-cell" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad292658d194b145aaec268ffb91566b7d96c98971eea4980c1bf951d7d082b" +checksum = "73a01cb2ac6697c12b647729d3d7db404e306d1e08a7a3aacdbee08e35170ebd" dependencies = [ "amplify", - "bitflags 2.12.1", - "bytes 1.11.1", + "bitflags 2.13.0", + "bytes 1.12.0", "caret", "derive-deftly", "derive_more", "educe", "itertools 0.14.0", "paste", - "rand 0.10.1", + "rand 0.10.2", "smallvec", "thiserror 2.0.18", "tor-basic-utils", @@ -7034,14 +6758,15 @@ dependencies = [ [[package]] name = "tor-cert" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474e732207b1be44f9ae4ddf295fba3644cd3c09494d131846ff9c9a624ab263" +checksum = "162d44b975e445de099b3a495710689652bbd0a9a3a0e4946341acbb3138b22b" dependencies = [ "caret", "derive_builder_fork_arti", "derive_more", "digest 0.10.7", + "saturating-time", "thiserror 2.0.18", "tor-bytes", "tor-checkable", @@ -7052,9 +6777,9 @@ dependencies = [ [[package]] name = "tor-chanmgr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bb088804f54de320ee97dd2a48ae319f0df9d9d0e37eef050d65488194a768" +checksum = "bf15c4cbafa5745def4fced9e8e59148533a2bfc8d938e9fad7a0d6d16757712" dependencies = [ "async-trait", "base64ct", @@ -7068,7 +6793,7 @@ dependencies = [ "oneshot-fused-workaround", "percent-encoding", "postage", - "rand 0.10.1", + "rand 0.10.2", "safelog", "serde", "serde_with", @@ -7095,12 +6820,12 @@ dependencies = [ [[package]] name = "tor-checkable" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9505791bac25b31b8de88c0e2b02e1690e10ff1308583c6f61c320bab2677959" +checksum = "ef81835cb0b2db460c694678eae8c4cbad5f31847e473aac42605f9b945fb31a" dependencies = [ - "humantime 2.3.0", - "signature 2.2.0", + "humantime 2.4.0", + "signature", "thiserror 2.0.18", "tor-llcrypto", "web-time-compat", @@ -7108,9 +6833,9 @@ dependencies = [ [[package]] name = "tor-circmgr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e986c7c4e1faae8a412b575ce66ff087050525a371db1034f0b24d70b459a2e" +checksum = "2b63cca1f18282f82b905b6a8c20c6f247787bc010d1b317d9eb98503e4352bf" dependencies = [ "amplify", "async-trait", @@ -7127,7 +6852,7 @@ dependencies = [ "once_cell", "oneshot-fused-workaround", "pin-project", - "rand 0.10.1", + "rand 0.10.2", "retry-error", "safelog", "serde", @@ -7158,9 +6883,9 @@ dependencies = [ [[package]] name = "tor-config" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224f85aa02b514c384ea5ec32f1b924233bea6b553195fd83da7f1e50a2e0d1b" +checksum = "a699adfb8bdb34699afcca7cbbd9d26329246940bc9dbc32f380c87578017350" dependencies = [ "amplify", "cfg-if 1.0.4", @@ -7192,9 +6917,9 @@ dependencies = [ [[package]] name = "tor-config-path" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4232a56a8ce40a47ad6b42c9c7d9e6f4485e6e6a43b3149304c35bc295034107" +checksum = "1d38001695121fc778e67ac7a1c733d3158ee8942a55cfa343981b50d90f5daa" dependencies = [ "directories", "serde", @@ -7206,9 +6931,9 @@ dependencies = [ [[package]] name = "tor-consdiff" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fcd0c631a66b45dca4421b8a06309dd02ae5d6aea5daa55399f68638b2abf3" +checksum = "80e9e3eb11e91ea4c1affe5e1f73628726c283942715739850546acb94bbe028" dependencies = [ "derive_more", "digest 0.10.7", @@ -7223,16 +6948,16 @@ dependencies = [ [[package]] name = "tor-dirclient" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf637d6a5d8c886f23ca2df50edfaa56443f23294428f037206fb3a0d07ba57e" +checksum = "0027cd2a58abab9ebaf61c3c1da9b0fa9e6cbc914b88fedb7b3102bd4f4dd656" dependencies = [ "async-compression", "base64ct", "derive_more", "futures 0.3.32", "hex", - "http 1.4.2", + "http", "httparse", "httpdate", "itertools 0.14.0", @@ -7252,14 +6977,14 @@ dependencies = [ [[package]] name = "tor-dircommon" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e412167d54c3618c3261dc77f1a31fe20c518f59aca5abfdec5f600b6a9b1f" +checksum = "7d2047b2f1ad3453c1060e5e39203bd87ead266e6873707bd7333b1d6bdac768" dependencies = [ "base64ct", "derive-deftly", "getset", - "humantime 2.3.0", + "humantime 2.4.0", "humantime-serde", "serde", "tor-basic-utils", @@ -7273,9 +6998,9 @@ dependencies = [ [[package]] name = "tor-dirmgr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b984d2b0f0a2764a1b24d7c4c203ef83600b071c0c5af36e20d4f63e80ce562" +checksum = "57ebc162ccd628ef8e96912a9e42e848cd7305eb2a5a455a6002f54ad6826422" dependencies = [ "async-trait", "base64ct", @@ -7288,20 +7013,20 @@ dependencies = [ "fslock-guard", "futures 0.3.32", "hex", - "humantime 2.3.0", + "humantime 2.4.0", "humantime-serde", "itertools 0.14.0", "memmap2", "oneshot-fused-workaround", "paste", "postage", - "rand 0.10.1", + "rand 0.10.2", "rusqlite", "safelog", "scopeguard", "serde", "serde_json", - "signature 2.2.0", + "signature", "static_assertions", "strum 0.28.0", "thiserror 2.0.18", @@ -7330,9 +7055,9 @@ dependencies = [ [[package]] name = "tor-error" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1409b1a9085502c7797405a01fe3f3292a9827c9ed6a3f7c34fbb222572db5ac" +checksum = "c6a7ed4aee3e0613a75d420032116dac82d7702594e28566befdfa6707a8fd0e" dependencies = [ "derive_more", "futures 0.3.32", @@ -7348,9 +7073,9 @@ dependencies = [ [[package]] name = "tor-general-addr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f17e219140e587e169f71f53e528ca394c39e83593c9fbe9e9366cce7655e1" +checksum = "cfee544a33dd3e67e0311cc46ef8f667cbf9c02c7c00ef4f25098a25b2b6e1cf" dependencies = [ "derive_more", "thiserror 2.0.18", @@ -7359,9 +7084,9 @@ dependencies = [ [[package]] name = "tor-guardmgr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56c43d7afa526449c6e6460d373a02624a24c78637ddd7c68e2ac1879ae587c" +checksum = "f1e8f52e4b1b08ba58970a9b9879b0b72c35dcba48bad389935f2778ed432d05" dependencies = [ "amplify", "base64ct", @@ -7371,14 +7096,14 @@ dependencies = [ "dyn-clone", "educe", "futures 0.3.32", - "humantime 2.3.0", + "humantime 2.4.0", "humantime-serde", "itertools 0.14.0", "num_enum", "oneshot-fused-workaround", "pin-project", "postage", - "rand 0.10.1", + "rand 0.10.2", "safelog", "serde", "strum 0.28.0", @@ -7404,9 +7129,9 @@ dependencies = [ [[package]] name = "tor-hsclient" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff8ba0afebc5f76b42240f76b2bfb92aa5862c19ff184492c59c654750ee275" +checksum = "28dc813f71e63fd324c4b1b1647ddc2fcc4b6e77c45091e6769ae80e591726ec" dependencies = [ "async-trait", "derive-deftly", @@ -7417,7 +7142,7 @@ dependencies = [ "itertools 0.14.0", "oneshot-fused-workaround", "postage", - "rand 0.10.1", + "rand 0.10.2", "retry-error", "safelog", "slotmap-careful", @@ -7449,9 +7174,9 @@ dependencies = [ [[package]] name = "tor-hscrypto" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3761c1828e74818cba4eb661d1eb79d4f663b05e8e7d3bc6e35d754968282fc0" +checksum = "f82fd6a5a6ede5ece5e7f52708bdf0a007e8f975f9825689b376f038845f1e88" dependencies = [ "cipher 0.4.4", "data-encoding", @@ -7459,13 +7184,13 @@ dependencies = [ "derive_more", "digest 0.10.7", "hex", - "humantime 2.3.0", + "humantime 2.4.0", "itertools 0.14.0", "paste", - "rand 0.10.1", + "rand 0.10.2", "safelog", "serde", - "signature 2.2.0", + "signature", "subtle", "thiserror 2.0.18", "tor-basic-utils", @@ -7482,9 +7207,9 @@ dependencies = [ [[package]] name = "tor-hsrproxy" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0d8041225c2721fb68e8406c2121e3168ea3998148df253859fec70ea20741" +checksum = "9b4231a55048af49ae2a8fcb2d41ea0df986b68c26bf6128f97f7f1324d47498" dependencies = [ "derive-deftly", "futures 0.3.32", @@ -7511,9 +7236,9 @@ dependencies = [ [[package]] name = "tor-hsservice" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa87ed8d1ccfe8447b4e65bf0e2dfcab6a8ac9d2eadf7b3f37c102e1c18e9bb" +checksum = "170b66c977d3b16a5ff79ec344c06392076f0326d2d65146a58c450c50395dae" dependencies = [ "amplify", "async-trait", @@ -7528,13 +7253,13 @@ dependencies = [ "futures 0.3.32", "growable-bloom-filter", "hex", - "humantime 2.3.0", + "humantime 2.4.0", "itertools 0.14.0", "k12", "once_cell", "oneshot-fused-workaround", "postage", - "rand 0.10.1", + "rand 0.10.2", "rand_core 0.10.1", "retry-error", "safelog", @@ -7570,17 +7295,17 @@ dependencies = [ [[package]] name = "tor-key-forge" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c877b95e0679f151743bc2b706320a29e14bd18d9bcb92918df34948e2e9d2" +checksum = "30f83389917e9908c43457c80d0b982ba6dcd3e6ea36a37b29167b7619d9eaa3" dependencies = [ "derive-deftly", "derive_more", "downcast-rs", "paste", - "rand 0.10.1", + "rand 0.10.2", "rsa", - "signature 2.2.0", + "signature", "ssh-key-fork-arti", "thiserror 2.0.18", "tor-bytes", @@ -7592,12 +7317,12 @@ dependencies = [ [[package]] name = "tor-keymgr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f59fbec28e31d688822b4c00a6f7fd94539886baccd3ce1b35dc26699c37873" +checksum = "5c7c18fb26d112c6022b7d1de558a4045b574fecfa1c504045145d8e1a9dc01a" dependencies = [ "amplify", - "arrayvec 0.7.6", + "arrayvec 0.7.8", "cfg-if 1.0.4", "derive-deftly", "derive_builder_fork_arti", @@ -7606,13 +7331,13 @@ dependencies = [ "dyn-clone", "fs-mistrust", "glob-match", - "humantime 2.3.0", + "humantime 2.4.0", "inventory", "itertools 0.14.0", - "rand 0.10.1", + "rand 0.10.2", "safelog", "serde", - "signature 2.2.0", + "signature", "ssh-key-fork-arti", "thiserror 2.0.18", "tor-basic-utils", @@ -7633,9 +7358,9 @@ dependencies = [ [[package]] name = "tor-linkspec" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1cc8d5469c324d1e0761066d868363d3fdccb723b14cdc983a5aef9b67981b" +checksum = "638a849a5d65d4e37adb6a2fa597a5a5c0decb749c17e76d3c44c4aefd696270" dependencies = [ "base64ct", "by_address", @@ -7660,9 +7385,9 @@ dependencies = [ [[package]] name = "tor-llcrypto" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0015d521f5e30a2f74879fe4c615fc2c3ace822d7cc88c1dfed0ae816b25f15" +checksum = "4ef0e63e805e9c1da61511a93eca502dc29bcb0b8635e9668ec750b63a1e53a1" dependencies = [ "aes", "base64ct", @@ -7672,13 +7397,13 @@ dependencies = [ "derive-deftly", "derive_more", "digest 0.10.7", - "ed25519-dalek 2.2.0", + "ed25519-dalek", "educe", "getrandom 0.2.17", "getrandom 0.3.4", - "getrandom 0.4.2", + "getrandom 0.4.3", "hex", - "rand 0.10.1", + "rand 0.10.2", "rand_chacha 0.10.0", "rand_core 0.10.1", "rand_core 0.6.4", @@ -7691,7 +7416,7 @@ dependencies = [ "sha1", "sha2 0.10.9", "sha3 0.10.9", - "signature 2.2.0", + "signature", "subtle", "thiserror 2.0.18", "tor-error", @@ -7703,12 +7428,12 @@ dependencies = [ [[package]] name = "tor-log-ratelim" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d16152b21f2e7b309dfbdcbe587c5adba9547d3119f2933b453d6edbce7e8e0" +checksum = "37d0f759a875b6f9b6f3657a2626a70e2474e698a4404501033babe63ad888a6" dependencies = [ "futures 0.3.32", - "humantime 2.3.0", + "humantime 2.4.0", "thiserror 2.0.18", "tor-error", "tor-rtcompat", @@ -7719,9 +7444,9 @@ dependencies = [ [[package]] name = "tor-memquota" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ad2950d88e968572b0de6bb5702f5ed42f36555f362fb741c572c62441476e" +checksum = "3c06f2e981120a4c1da1e361573cee4af618d05fa3c7ec37c139d766f1b8d47f" dependencies = [ "cfg-if 1.0.4", "derive-deftly", @@ -7750,9 +7475,9 @@ dependencies = [ [[package]] name = "tor-memquota-cost" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993ad5bfd39fb629990da40c2b2086284b1481b7d4843652a959db1d9e5ac463" +checksum = "b86eb903fee638e9211daddaddc146f0c5e4f5605d79983548fce6fec596325c" dependencies = [ "derive-deftly", "itertools 0.14.0", @@ -7762,20 +7487,20 @@ dependencies = [ [[package]] name = "tor-netdir" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6700c5e590818d9873a13e06b49b95cf3a39fa8fb3968bd67ec3295cd584b97c" +checksum = "b8160580273eec3576158c3e833ff198870665dacebb373585892dde93cf9803" dependencies = [ "async-trait", - "bitflags 2.12.1", + "bitflags 2.13.0", "derive_more", "digest 0.10.7", "futures 0.3.32", "hex", - "humantime 2.3.0", + "humantime 2.4.0", "itertools 0.14.0", "num_enum", - "rand 0.10.1", + "rand 0.10.2", "serde", "strum 0.28.0", "thiserror 2.0.18", @@ -7795,9 +7520,9 @@ dependencies = [ [[package]] name = "tor-netdoc" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a497ce4c36f59e4c67c352e3b80cd4642f6c5e660bb003de1922be4c7ed03081" +checksum = "51598bfd24866de2c51e0de7a6e2418f86c6278cfeba2f85295ce45367fd8e06" dependencies = [ "amplify", "base64ct", @@ -7810,16 +7535,17 @@ dependencies = [ "enumset", "hex", "hostname-validator", - "humantime 2.3.0", + "humantime 2.4.0", + "ipnet", "itertools 0.14.0", "memchr", "paste", "phf 0.13.1", - "rand 0.10.1", + "rand 0.10.2", "saturating-time", "serde", "serde_with", - "signature 2.2.0", + "signature", "smallvec", "strum 0.28.0", "subtle", @@ -7844,9 +7570,9 @@ dependencies = [ [[package]] name = "tor-persist" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6da1a96a1f6418faac1cd1892e029fd265cf50e67e941a4ba2580d92dd32d47" +checksum = "c2ff75e20adb6a1a7ad07e16b55e56d5376706cc0090ab8831f008f1a89243f2" dependencies = [ "amplify", "derive-deftly", @@ -7873,15 +7599,15 @@ dependencies = [ [[package]] name = "tor-proto" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0a5fa0e1a365fc089a7f140f4142379dd74c91c15103c2f9d11ea711e16029e" +checksum = "666b602da8ba5a4189d6ff551f5dd9db949b503780140d175435658970a1ea54" dependencies = [ "amplify", "async-trait", "asynchronous-codec", "bitvec", - "bytes 1.11.1", + "bytes 1.12.0", "caret", "cfg-if 1.0.4", "cipher 0.4.4", @@ -7894,14 +7620,14 @@ dependencies = [ "enum_dispatch", "futures 0.3.32", "futures-util", - "hkdf 0.12.4", + "hkdf", "hmac 0.12.1", "itertools 0.14.0", "nonany", "oneshot-fused-workaround", "pin-project", "postage", - "rand 0.10.1", + "rand 0.10.2", "rand_core 0.10.1", "safelog", "slotmap-careful", @@ -7909,7 +7635,6 @@ dependencies = [ "static_assertions", "strum 0.28.0", "subtle", - "sync_wrapper", "thiserror 2.0.18", "tokio", "tokio-util", @@ -7940,9 +7665,9 @@ dependencies = [ [[package]] name = "tor-protover" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f7f4ee15c9bfa0b700ae06e85fa52abddf17a35531cd3d3833412900e8da5c" +checksum = "6ef84569d020c36eb322976f9a5dec1d3fa992db9739237ad1ae923b0ddeb298" dependencies = [ "caret", "paste", @@ -7954,9 +7679,9 @@ dependencies = [ [[package]] name = "tor-ptmgr" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4cc37ac22faff9e0233fa287b92819d8819f31cae85a50ff99c51dd549b31c0" +checksum = "66db88ee6c5ba60a077b592b7e566d465220de61ccfd473fba6567c577cad475" dependencies = [ "async-trait", "cfg-if 1.0.4", @@ -7984,11 +7709,11 @@ dependencies = [ [[package]] name = "tor-relay-selection" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b565b6dec2e3edb7b033203a3662edb7b586e486d53e02af4295e05e7562870" +checksum = "09778e3a45fdf49ca335fa16a0032abc5d4e1cacff9f46c3ed3e2a416d088aa6" dependencies = [ - "rand 0.10.1", + "rand 0.10.2", "serde", "tor-basic-utils", "tor-linkspec", @@ -7998,9 +7723,9 @@ dependencies = [ [[package]] name = "tor-rtcompat" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcd7a4ff4898044b3ec693c0bf098251accf13c58741c44ed9364ce5faa89287" +checksum = "981279291476ad7ec309c874fa99b8d31250432a48ff6eea3f7405edbbd254e1" dependencies = [ "amplify", "async-native-tls", @@ -8019,7 +7744,7 @@ dependencies = [ "native-tls", "paste", "pin-project", - "socket2 0.6.4", + "socket2", "thiserror 2.0.18", "tokio", "tokio-util", @@ -8033,9 +7758,9 @@ dependencies = [ [[package]] name = "tor-rtmock" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8331e7d57bf7cf157cf3610ff6dbb5a591de5c3b22fa65ea6be18b08ff81477a" +checksum = "6a3ee9695304cc44cc0de1dc673c9a71419318e214dc04ed7883a058d050654d" dependencies = [ "amplify", "assert_matches", @@ -8044,7 +7769,7 @@ dependencies = [ "derive_more", "educe", "futures 0.3.32", - "humantime 2.3.0", + "humantime 2.4.0", "itertools 0.14.0", "oneshot-fused-workaround", "pin-project", @@ -8063,9 +7788,9 @@ dependencies = [ [[package]] name = "tor-socksproto" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55f432eda94343bdadd73995f0b3082d96637dadb0e20c3f9a1bf2349f623d3c" +checksum = "bbf78ef55dbfccb5a95cd75eb433621947923653cb91c9941d5a0a5116e510ee" dependencies = [ "amplify", "caret", @@ -8080,9 +7805,9 @@ dependencies = [ [[package]] name = "tor-units" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cf033ee8b22b11abd8272272e19ccbbf58c7b3152f8d224aa8d21f358c43d0d" +checksum = "d0325a93f3b35c5a9bda74705ce89b753e1c8e183af6945826188cef16687d80" dependencies = [ "derive-deftly", "derive_more", @@ -8112,11 +7837,11 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.12.1", - "bytes 1.11.1", + "bitflags 2.13.0", + "bytes 1.12.0", "futures-util", - "http 1.4.2", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", "tower", "tower-layer", @@ -8154,8 +7879,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -8214,8 +7939,8 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad06847b7afb65c7866a36664b75c40b895e318cea4f71299f013fb22965329d" dependencies = [ - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -8230,7 +7955,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", ] [[package]] @@ -8350,12 +8075,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -8394,12 +8113,14 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "0.8.2" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ - "getrandom 0.2.17", - "serde", + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", ] [[package]] @@ -8433,8 +8154,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -8476,20 +8197,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] @@ -8503,9 +8215,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if 1.0.4", "once_cell", @@ -8516,9 +8228,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.72" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ "js-sys", "wasm-bindgen", @@ -8526,70 +8238,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ - "quote 1.0.45", + "quote 1.0.46", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.12.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver 1.0.28", -] - [[package]] name = "weak-table" version = "0.3.2" @@ -8598,9 +8276,9 @@ checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549" [[package]] name = "web-sys" -version = "0.3.99" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -8618,23 +8296,13 @@ dependencies = [ [[package]] name = "web-time-compat" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39819265f219f60a92312f2755262dba9fff180a4ec281556863d69fa36adc59" +checksum = "af46dad42aa37be3b4a116fe613365f991b8bdae6cd6ce82d84fa9f9e8f70ae4" dependencies = [ "web-time", ] -[[package]] -name = "webpki" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" -dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", -] - [[package]] name = "webpki-root-certs" version = "1.0.8" @@ -8727,8 +8395,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -8738,8 +8406,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -8787,6 +8455,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -8823,6 +8500,21 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -8865,6 +8557,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -8877,6 +8575,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -8889,6 +8593,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -8913,6 +8623,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -8925,6 +8641,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -8937,6 +8659,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -8949,6 +8677,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -8979,100 +8713,12 @@ dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - [[package]] name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap 2.14.0", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.12.1", - "indexmap 2.14.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log", - "semver 1.0.28", - "serde", - "serde_derive", - "serde_json", - "unicode-xid 0.2.6", - "wasmparser", -] - [[package]] name = "writeable" version = "0.6.3" @@ -9088,17 +8734,6 @@ dependencies = [ "tap", ] -[[package]] -name = "x25519-dalek" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" -dependencies = [ - "curve25519-dalek 2.1.3", - "rand_core 0.5.1", - "zeroize", -] - [[package]] name = "x25519-dalek" version = "1.1.1" @@ -9124,9 +8759,9 @@ dependencies = [ [[package]] name = "xxhash-rust" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" +checksum = "4d93c89cdc2d3a63c3ec48ffe926931bdc069eafa8e4402fe6d8f790c9d1e576" [[package]] name = "yaml-rust" @@ -9136,9 +8771,9 @@ checksum = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -9152,29 +8787,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.50" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" +checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.50" +version = "0.8.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" +checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -9193,29 +8828,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] @@ -9248,8 +8883,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2 1.0.106", - "quote 1.0.45", - "syn 2.0.117", + "quote 1.0.46", + "syn 2.0.118", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 27d93a6..18dfbf0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,13 +21,12 @@ exclude = ["integration"] [dependencies] clap = { version = "2.33", features = ["yaml"] } -rpassword = "4.0" +rpassword = "7.5.4" thiserror = "1" -prettytable-rs = "0.10" log = "0.4" linefeed = "0.6" -semver = "0.10" -rustyline = "6" +semver = "1.0.28" +rustyline = "9" lazy_static = "1" grin_wallet_api = { path = "./api", version = "5.4.1" } @@ -35,8 +34,6 @@ grin_wallet_impls = { path = "./impls", version = "5.4.1" } grin_wallet_libwallet = { path = "./libwallet", version = "5.4.1" } grin_wallet_controller = { path = "./controller", version = "5.4.1" } grin_wallet_config = { path = "./config", version = "5.4.1" } -grin_wallet_util = { path = "./util", version = "5.4.1" } - ##### Grin Imports @@ -53,7 +50,5 @@ built = { version = "0.8.0", features = ["git2"]} [dev-dependencies] url = "2.1" serde = "1" -serde_derive = "1" serde_json = "1" -remove_dir_all = "0.7" easy-jsonrpc-mw = "0.5.4" \ No newline at end of file diff --git a/api/Cargo.toml b/api/Cargo.toml index 3afb438..ee4a43c 100644 --- a/api/Cargo.toml +++ b/api/Cargo.toml @@ -11,16 +11,16 @@ edition = "2021" [dependencies] log = "0.4" -uuid = { version = "0.8", features = ["serde", "v4"] } +uuid = { version = "1.23.4", features = ["serde", "v4"] } serde = "1" rand = "0.6" serde_derive = "1" serde_json = "1" easy-jsonrpc-mw = "0.5.4" chrono = { version = "0.4.11", features = ["serde"] } -ring = "0.16" +ring = "0.17.14" base64 = "0.12" -ed25519-dalek = "1.0.0-pre.4" +ed25519-dalek = "2" grin_wallet_libwallet = { path = "../libwallet", version = "5.4.1" } grin_wallet_config = { path = "../config", version = "5.4.1" } diff --git a/api/src/owner.rs b/api/src/owner.rs index 9378781..d3e672a 100644 --- a/api/src/owner.rs +++ b/api/src/owner.rs @@ -15,7 +15,7 @@ //! Owner API External Definition use chrono::prelude::*; -use ed25519_dalek::SecretKey as DalekSecretKey; +use ed25519_dalek::SigningKey as DalekSecretKey; use grin_wallet_libwallet::mwixnet::{MixnetReqCreationParams, SwapReq}; use grin_wallet_libwallet::RetrieveTxQueryArgs; use uuid::Uuid; diff --git a/api/src/types.rs b/api/src/types.rs index 4ac88a3..797901a 100644 --- a/api/src/types.rs +++ b/api/src/types.rs @@ -16,7 +16,7 @@ use crate::libwallet::slate_versions::ser as dalek_ser; use crate::libwallet::Error; use crate::util::secp::key::{PublicKey, SecretKey}; use crate::util::{from_hex, ToHex}; -use ed25519_dalek::SecretKey as DalekSecretKey; +use ed25519_dalek::SigningKey as DalekSecretKey; use base64; use rand::{thread_rng, Rng}; diff --git a/config/Cargo.toml b/config/Cargo.toml index c7146f7..fa662cd 100644 --- a/config/Cargo.toml +++ b/config/Cargo.toml @@ -16,8 +16,6 @@ serde_derive = "1" toml = "0.5" dirs = "2.0" -grin_wallet_util = { path = "../util", version = "5.4.1" } - ##### Grin Imports grin_core = { path = "../grin/core"} @@ -25,6 +23,4 @@ grin_util = { path = "../grin/util"} ##### -[dev-dependencies] -pretty_assertions = "0.6" diff --git a/controller/Cargo.toml b/controller/Cargo.toml index 715e68c..32e03bc 100644 --- a/controller/Cargo.toml +++ b/controller/Cargo.toml @@ -7,24 +7,19 @@ license = "Apache-2.0" repository = "https://github.com/mimblewimble/grin-wallet" keywords = [ "crypto", "grin", "mimblewimble" ] exclude = ["**/*.grin", "**/*.grin2"] -#build = "src/build/build.rs" edition = "2021" [dependencies] -futures = "0.3" -hyper = "0.14" +tokio = { version = "1", features = ["sync"] } +hyper = { version = "1.10.1", features = ["full"] } +http-body-util = "0.1.3" rand = "0.7" serde = "1" -serde_derive = "1" serde_json = "1" log = "0.4" prettytable-rs = "0.10" -ring = "0.16" term = "0.6" -tokio = { version = "1.52.3", features = ["full"] } -uuid = { version = "0.8", features = ["serde", "v4"] } -url = "2.1" -chrono = { version = "0.4.11", features = ["serde"] } +uuid = { version = "1.23.4", features = ["serde", "v4"] } easy-jsonrpc-mw = "0.5.4" lazy_static = "1" thiserror = "1" @@ -47,5 +42,4 @@ grin_chain = { path = "../grin/chain"} ##### [dev-dependencies] -ed25519-dalek = "1.0.0-pre.4" -remove_dir_all = "0.7" +ed25519-dalek = "2" \ No newline at end of file diff --git a/controller/src/controller.rs b/controller/src/controller.rs index b70ab51..4a3264a 100644 --- a/controller/src/controller.rs +++ b/controller/src/controller.rs @@ -23,17 +23,16 @@ use crate::libwallet::{ }; use crate::util::secp::key::SecretKey; use crate::util::{from_hex, static_secp_instance, to_base64, Mutex}; -use futures::channel::oneshot; use grin_wallet_api::JsonId; use grin_wallet_util::OnionV3Address; -use hyper::body; use hyper::header::HeaderValue; -use hyper::{Body, Request, Response, StatusCode}; +use hyper::{Request, Response, StatusCode}; use qr_code::QrCode; use serde::{Deserialize, Serialize}; use serde_json; use std::collections::HashMap; use std::convert::TryFrom; +use std::io::Cursor; use std::net::SocketAddr; use std::sync::Arc; @@ -47,8 +46,12 @@ use crate::apiwallet::{ }; use easy_jsonrpc_mw; use easy_jsonrpc_mw::{Handler, MaybeReply}; +use grin_api::ApiBody; use grin_wallet_impls::tor::arti::start_tor_service; use grin_wallet_impls::tor::Tor; +use http_body_util::{BodyExt, Full}; +use hyper::body::Incoming; +use tokio::sync::mpsc; lazy_static! { pub static ref GRIN_OWNER_BASIC_REALM: HeaderValue = @@ -155,9 +158,9 @@ where let wallet = match wallet { Some(w) => w, None => { - return Err(Error::GenericError(format!( - "Instantiated wallet or Owner API context must be provided" - ))) + return Err(Error::GenericError( + "Instantiated wallet or Owner API context must be provided".to_string(), + )) } }; f(&mut Owner::new(wallet, None), keychain_mask)? @@ -244,8 +247,7 @@ where .map_err(|_| Error::GenericError("Router failed to add route".to_string()))?; } - let api_chan: &'static mut (oneshot::Sender<()>, oneshot::Receiver<()>) = - Box::leak(Box::new(oneshot::channel::<()>())); + let api_chan: (mpsc::Sender<()>, mpsc::Receiver<()>) = mpsc::channel::<()>(1); let mut apis = ApiServer::new(); warn!("Starting HTTP Owner API server at {}.", addr); @@ -303,8 +305,7 @@ where .add_route("/v2/foreign", Arc::new(api_handler_v2)) .map_err(|_| Error::GenericError("Router failed to add route".to_string()))?; - let api_chan: &'static mut (oneshot::Sender<()>, oneshot::Receiver<()>) = - Box::leak(Box::new(oneshot::channel::<()>())); + let api_chan: (mpsc::Sender<()>, mpsc::Receiver<()>) = mpsc::channel::<()>(1); let mut apis = ApiServer::new(); warn!("Starting HTTP Foreign listener API server at {}.", addr); @@ -552,19 +553,17 @@ impl OwnerV3Helpers { None }; match err_string { - Some(s) => { - return ( - true, - serde_json::json!({ - "jsonrpc": "2.0", - "id": val["id"], - "error": { - "message": s, - "code": -32099 - } - }), - ) - } + Some(s) => ( + true, + serde_json::json!({ + "jsonrpc": "2.0", + "id": val["id"], + "error": { + "message": s, + "code": -32099 + } + }), + ), None => (false, val.clone()), } } @@ -590,13 +589,13 @@ where wallet, owner_api, shared_key: Arc::new(Mutex::new(None)), - keychain_mask: keychain_mask, + keychain_mask, running_foreign, } } async fn call_api( - req: Request, + req: Request, key: Arc>>, mask: Arc>>, running_foreign: bool, @@ -662,12 +661,12 @@ where } async fn handle_post_request( - req: Request, + req: Request, key: Arc>>, mask: Arc>>, running_foreign: bool, api: Arc>, - ) -> Result, Error> { + ) -> Result, Error> { let res = Self::call_api(req, key, mask, running_foreign, api).await?; Ok(json_response_pretty(&res)) } @@ -679,7 +678,7 @@ where C: NodeClient + 'static, K: Keychain + 'static, { - fn post(&self, req: Request) -> ResponseFuture { + fn post(&self, req: Request) -> ResponseFuture { let key = self.shared_key.clone(); let mask = self.keychain_mask.clone(); let running_foreign = self.running_foreign; @@ -696,7 +695,7 @@ where }) } - fn options(&self, _req: Request) -> ResponseFuture { + fn options(&self, _req: Request) -> ResponseFuture { Box::pin(async { Ok(create_ok_response("{}")) }) } } @@ -739,7 +738,7 @@ where } async fn call_api( - req: Request, + req: Request, api: Foreign<'static, L, C, K>, ) -> Result { let val: serde_json::Value = parse_body(req).await?; @@ -754,12 +753,12 @@ where } async fn handle_post_request( - req: Request, + req: Request, mask: Option, wallet: Arc + 'static>>>, test_mode: bool, tor_config: Option, - ) -> Result, Error> { + ) -> Result, Error> { let api = Foreign::new(wallet, mask, Some(check_middleware), test_mode); api.set_tor_config(tor_config); let res = Self::call_api(req, api).await?; @@ -773,7 +772,7 @@ where C: NodeClient + 'static, K: Keychain + 'static, { - fn post(&self, req: Request) -> ResponseFuture { + fn post(&self, req: Request) -> ResponseFuture { let mask = self.keychain_mask.lock().clone(); let wallet = self.wallet.clone(); let test_mode = self.test_mode; @@ -790,35 +789,24 @@ where }) } - fn options(&self, _req: Request) -> ResponseFuture { + fn options(&self, _req: Request) -> ResponseFuture { Box::pin(async { Ok(create_ok_response("{}")) }) } } -// Utility to serialize a struct into JSON and produce a sensible Response -// out of it. -fn _json_response(s: &T) -> Response -where - T: Serialize, -{ - match serde_json::to_string(s) { - Ok(json) => response(StatusCode::OK, json), - Err(_) => response(StatusCode::INTERNAL_SERVER_ERROR, ""), - } -} - -// pretty-printed version of above -fn json_response_pretty(s: &T) -> Response +/// Utility to serialize a struct into JSON and produce a sensible Response +/// out of it. +fn json_response_pretty(s: &T) -> Response where T: Serialize, { match serde_json::to_string_pretty(s) { - Ok(json) => response(StatusCode::OK, json), - Err(_) => response(StatusCode::INTERNAL_SERVER_ERROR, ""), + Ok(json) => response(StatusCode::OK, Full::from(json).boxed()), + Err(_) => response(StatusCode::INTERNAL_SERVER_ERROR, Full::from("").boxed()), } } -fn create_error_response(e: Error) -> Response { +fn create_error_response(e: Error) -> Response { Response::builder() .status(StatusCode::INTERNAL_SERVER_ERROR) .header("access-control-allow-origin", "*") @@ -826,11 +814,11 @@ fn create_error_response(e: Error) -> Response { "access-control-allow-headers", "Content-Type, Authorization", ) - .body(format!("{}", e).into()) + .body(Full::from(format!("{}", e)).boxed()) .unwrap() } -fn create_ok_response(json: &str) -> Response { +fn create_ok_response(json: &str) -> Response { Response::builder() .status(StatusCode::OK) .header("access-control-allow-origin", "*") @@ -839,7 +827,7 @@ fn create_ok_response(json: &str) -> Response { "Content-Type, Authorization", ) .header(hyper::header::CONTENT_TYPE, "application/json") - .body(json.to_string().into()) + .body(Full::from(json.to_string()).boxed()) .unwrap() } @@ -847,7 +835,7 @@ fn create_ok_response(json: &str) -> Response { /// /// Whenever the status code is `StatusCode::OK` the text parameter should be /// valid JSON as the content type header will be set to `application/json' -fn response>(status: StatusCode, text: T) -> Response { +fn response>(status: StatusCode, text: T) -> Response { let mut builder = Response::builder() .status(status) .header("access-control-allow-origin", "*") @@ -863,14 +851,18 @@ fn response>(status: StatusCode, text: T) -> Response { builder.body(text.into()).unwrap() } -async fn parse_body(req: Request) -> Result +async fn parse_body(req: Request) -> Result where for<'de> T: Deserialize<'de> + Send + 'static, { - let body = body::to_bytes(req.into_body()) + let body_req = req + .into_body() + .collect() .await - .map_err(|_| Error::GenericError("Failed to read request".to_string()))?; + .map_err(|e| Error::GenericError(format!("Failed to read request: {}", e)))?; + let raw = body_req.to_bytes(); - serde_json::from_reader(&body[..]) + let cursor = Cursor::new(raw); + serde_json::from_reader(cursor) .map_err(|e| Error::GenericError(format!("Invalid request body: {}", e))) } diff --git a/controller/tests/common/mod.rs b/controller/tests/common/mod.rs index ff1066e..f0f11eb 100644 --- a/controller/tests/common/mod.rs +++ b/controller/tests/common/mod.rs @@ -76,7 +76,7 @@ macro_rules! open_wallet_and_add { pub fn clean_output_dir(test_dir: &str) { let path = std::path::Path::new(test_dir); if path.is_dir() { - remove_dir_all::remove_dir_all(test_dir).unwrap(); + std::fs::remove_dir_all(test_dir).unwrap(); } } diff --git a/controller/tests/slatepack.rs b/controller/tests/slatepack.rs index d65ec53..4626892 100644 --- a/controller/tests/slatepack.rs +++ b/controller/tests/slatepack.rs @@ -31,8 +31,8 @@ use grin_wallet_libwallet::{ SlatepackerArgs, }; -use ed25519_dalek::PublicKey as edDalekPublicKey; -use ed25519_dalek::SecretKey as edDalekSecretKey; +use ed25519_dalek::SigningKey as edDalekSecretKey; +use ed25519_dalek::VerifyingKey as edDalekPublicKey; #[macro_use] mod common; @@ -149,7 +149,7 @@ fn slatepack_exchange_test_impl( let (recipients_1, dec_key_1, sender_1) = match use_encryption { true => { let mut rec_address = SlatepackAddress::random(); - let mut sec_key = edDalekSecretKey::from_bytes(&[0u8; 32]).unwrap(); + let mut sec_key = edDalekSecretKey::from_bytes(&[0u8; 32]); wallet::controller::owner_single_use(Some(wallet1.clone()), mask1, None, |api, m| { sec_key = api.get_slatepack_secret_key(m, 0)?; let pub_key = edDalekPublicKey::from(&sec_key); @@ -168,7 +168,7 @@ fn slatepack_exchange_test_impl( let (recipients_2, dec_key_2, sender_2) = match use_encryption { true => { let mut rec_address = SlatepackAddress::random(); - let mut sec_key = edDalekSecretKey::from_bytes(&[0u8; 32]).unwrap(); + let mut sec_key = edDalekSecretKey::from_bytes(&[0u8; 32]); wallet::controller::owner_single_use(Some(wallet2.clone()), mask2, None, |api, m| { sec_key = api.get_slatepack_secret_key(m, 0)?; let pub_key = edDalekPublicKey::from(&sec_key); diff --git a/grin b/grin index 17a768c..bad44b4 160000 --- a/grin +++ b/grin @@ -1 +1 @@ -Subproject commit 17a768c77036b72f3a23153102f0ea70e22cefa6 +Subproject commit bad44b4e9bd7e37417d80cc469bcba316249bd93 diff --git a/impls/Cargo.toml b/impls/Cargo.toml index 163bb43..188c5de 100644 --- a/impls/Cargo.toml +++ b/impls/Cargo.toml @@ -18,32 +18,29 @@ serde = "1" serde_derive = "1" serde_json = "1" log = "0.4" -ring = "0.16" -uuid = { version = "0.8", features = ["serde", "v4"] } +ring = "0.17.14" chrono = { version = "0.4.11", features = ["serde"] } lazy_static = "1" tokio = { version = "1.52.3", features = ["full"] } reqwest = { version = "0.13.3", features = ["socks"] } #Socks/Tor/Bridge/Proxy -ed25519-dalek = "1.0.0-pre.4" -arti-ed25519-dalek = { version = "2.1.1", package = "ed25519-dalek" } +ed25519-dalek = "2" regex = "1.3" timer = "0.2" sysinfo = "0.29" base64 = "0.12.0" url = "2.1" -arti-client = { version = "0.43.0", features = ["static", "pt-client", "onion-service-service", "onion-service-client"] } -tor-rtcompat = { version = "0.43.0", features = ["static"] } -fs-mistrust = "0.14.2" -tor-hsservice = "0.43.0" -tor-hsrproxy = "0.43.0" -tor-keymgr = "0.43.0" -tor-llcrypto = "0.43.0" -tor-hscrypto = "0.43.0" +arti-client = { version = "0.44.0", features = ["static", "pt-client", "onion-service-service", "onion-service-client"] } +tor-rtcompat = { version = "0.44.0", features = ["static"] } +fs-mistrust = "0.15.0" +tor-hsservice = "0.44.0" +tor-hsrproxy = "0.44.0" +tor-keymgr = "0.44.0" +tor-llcrypto = "0.44.0" +tor-hscrypto = "0.44.0" sha2 = "0.10.8" -curve25519-dalek = "4.1.3" hyper = { version = "1.10.1", features = ["http1", "client"] } hyper-util = { version = "0.1.20", features = ["tokio"] } http-body-util = "0.1.3" @@ -60,9 +57,5 @@ grin_keychain = { path = "../grin/keychain"} grin_chain = { path = "../grin/chain"} grin_util = { path = "../grin/util"} grin_api = { path = "../grin/api"} -grin_store = { path = "../grin/store"} -##### - -[dev-dependencies] -"remove_dir_all" = "0.7" \ No newline at end of file +##### \ No newline at end of file diff --git a/impls/src/adapters/slatepack.rs b/impls/src/adapters/slatepack.rs index 850c3d5..2b04c23 100644 --- a/impls/src/adapters/slatepack.rs +++ b/impls/src/adapters/slatepack.rs @@ -104,7 +104,7 @@ mod tests { use grin_core::global; fn clean_output_dir(test_dir: &str) { - let _ = remove_dir_all::remove_dir_all(test_dir); + let _ = fs::remove_dir_all(test_dir); } fn setup(test_dir: &str) { diff --git a/impls/src/tor/arti.rs b/impls/src/tor/arti.rs index ff11e8c..1d4acd6 100644 --- a/impls/src/tor/arti.rs +++ b/impls/src/tor/arti.rs @@ -12,13 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +use crate::tor::config::exp_sec_key_bytes; use crate::tor::{ArtiRuntimeWrapper, Tor}; use arti_client::config::pt::TransportConfigBuilder; use arti_client::config::{BridgeConfigBuilder, TorClientConfigBuilder}; use arti_client::{TorClient, TorClientConfig}; -use arti_ed25519_dalek::hazmat::ExpandedSecretKey; use bytes::Bytes; -use curve25519_dalek::digest::Digest; +use ed25519_dalek::hazmat::ExpandedSecretKey; +use ed25519_dalek::Digest; use fs_mistrust::Mistrust; use grin_util::secp::SecretKey; use grin_wallet_config::TorConfig; @@ -402,10 +403,7 @@ fn add_service_key( let expanded_sk = ExpandedSecretKey::from_bytes(Sha512::default().chain_update(key).finalize().as_ref()); - - let mut sk_bytes = [0_u8; 64]; - sk_bytes[0..32].copy_from_slice(&expanded_sk.scalar.to_bytes()); - sk_bytes[32..64].copy_from_slice(&expanded_sk.hash_prefix); + let sk_bytes = exp_sec_key_bytes(expanded_sk); match ExpandedKeypair::from_secret_key_bytes(sk_bytes) { None => { return Err(Error::TorProcess( diff --git a/impls/src/tor/config.rs b/impls/src/tor/config.rs index d5e0374..422fae1 100644 --- a/impls/src/tor/config.rs +++ b/impls/src/tor/config.rs @@ -17,9 +17,9 @@ use crate::util::secp::key::SecretKey; use crate::Error; use grin_wallet_util::OnionV3Address; -use ed25519_dalek::ExpandedSecretKey; -use ed25519_dalek::PublicKey as DalekPublicKey; -use ed25519_dalek::SecretKey as DalekSecretKey; +use ed25519_dalek::hazmat::ExpandedSecretKey; +use ed25519_dalek::SigningKey as DalekSecretKey; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use std::collections::HashMap; use std::convert::TryFrom; use std::fs::{self, File}; @@ -92,6 +92,14 @@ impl TorRcConfig { } } +/// Convert expanded secret key to byte array (works for both external Tor process and Arti). +pub(crate) fn exp_sec_key_bytes(expanded_sk: ExpandedSecretKey) -> [u8; 64] { + let mut sk_bytes = [0_u8; 64]; + sk_bytes[0..32].copy_from_slice(&expanded_sk.scalar.to_bytes()); + sk_bytes[32..64].copy_from_slice(&expanded_sk.hash_prefix); + sk_bytes +} + pub fn create_onion_service_sec_key_file( os_directory: &str, sec_key: &DalekSecretKey, @@ -101,9 +109,9 @@ pub fn create_onion_service_sec_key_file( // Tag is always 32 bytes, so pad with null zeroes file.write(b"== ed25519v1-secret: type0 ==\0\0\0") .map_err(|_| Error::IO)?; - let expanded_skey: ExpandedSecretKey = ExpandedSecretKey::from(sec_key); - file.write_all(&expanded_skey.to_bytes()) - .map_err(|_| Error::IO)?; + let expanded_skey: ExpandedSecretKey = ExpandedSecretKey::from(sec_key.as_bytes()); + let sk_bytes = exp_sec_key_bytes(expanded_skey); + file.write_all(&sk_bytes).map_err(|_| Error::IO)?; Ok(()) } @@ -138,8 +146,7 @@ pub fn output_onion_service_config( tor_config_directory: &str, sec_key: &SecretKey, ) -> Result { - let d_sec_key = DalekSecretKey::from_bytes(&sec_key.0) - .map_err(|_| Error::ED25519Key("Unable to parse private key".into()))?; + let d_sec_key = DalekSecretKey::from_bytes(&sec_key.0); let address = OnionV3Address::from_private(&sec_key.0)?; let hs_dir_file_path = format!( "{}{}{}{}{}", @@ -291,7 +298,7 @@ mod tests { use crate::util::{self, secp, static_secp_instance}; pub fn clean_output_dir(test_dir: &str) { - let _ = remove_dir_all::remove_dir_all(test_dir); + let _ = fs::remove_dir_all(test_dir); } pub fn setup(test_dir: &str) { diff --git a/integration/tests/framework.rs b/integration/tests/framework.rs index 13202ba..2c8e503 100644 --- a/integration/tests/framework.rs +++ b/integration/tests/framework.rs @@ -37,7 +37,7 @@ use std::{fs, thread, time}; /// Just removes all results from previous runs pub fn clean_all_output(test_name_dir: &str) { let target_dir = format!("target/tmp/{}", test_name_dir); - if let Err(e) = remove_dir_all::remove_dir_all(target_dir) { + if let Err(e) = fs::remove_dir_all(target_dir) { println!("can't remove output from previous test :{}, may be ok", e); } } diff --git a/libwallet/Cargo.toml b/libwallet/Cargo.toml index 4d9bd64..421bd97 100644 --- a/libwallet/Cargo.toml +++ b/libwallet/Cargo.toml @@ -7,7 +7,6 @@ license = "Apache-2.0" repository = "https://github.com/mimblewimble/grin-wallet" keywords = [ "crypto", "grin", "mimblewimble" ] exclude = ["**/*.grin", "**/*.grin2"] -#build = "src/build/build.rs" edition = "2021" [dependencies] @@ -17,21 +16,20 @@ serde = "1" serde_derive = "1" serde_json = "1" log = "0.4" -uuid = { version = "0.8", features = ["serde", "v4"] } +uuid = { version = "1.23.4", features = ["serde", "v4"] } chrono = { version = "0.4.11", features = ["serde"] } lazy_static = "1" strum = "0.18" strum_macros = "0.18" thiserror = "1" -ed25519-dalek = "1.0.0-pre.4" -x25519-dalek = "0.6" +ed25519-dalek = "2" +x25519-dalek = { version = "2", features = ["static_secrets"] } base64 = "0.9" regex = "1.3" sha2 = "0.10.0" bs58 = "0.3" -age = "0.7" -curve25519-dalek = "2.1" -secrecy = "0.6" +age = "0.8" +curve25519-dalek = "5" bech32 = "0.7" byteorder = "1.3" num-bigint = "0.2" diff --git a/libwallet/src/api_impl/owner.rs b/libwallet/src/api_impl/owner.rs index 67f642e..504df14 100644 --- a/libwallet/src/api_impl/owner.rs +++ b/libwallet/src/api_impl/owner.rs @@ -25,7 +25,7 @@ use crate::grin_keychain::ViewKey; use crate::grin_util::secp::{key::SecretKey, pedersen::Commitment}; use crate::grin_util::Mutex; use crate::grin_util::ToHex; -use crate::util::{OnionV3Address, OnionV3AddressError}; +use crate::util::OnionV3Address; use crate::api_impl::owner_updater::StatusMessage; use crate::grin_keychain::{BlindingFactor, Identifier, Keychain, SwitchCommitmentType}; @@ -41,9 +41,9 @@ use crate::{ WalletInitStatus, WalletInst, WalletLCProvider, }; -use ed25519_dalek::PublicKey as DalekPublicKey; -use ed25519_dalek::SecretKey as DalekSecretKey; +use ed25519_dalek::SigningKey as DalekSecretKey; use ed25519_dalek::Verifier; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use x25519_dalek::{PublicKey as xPublicKey, StaticSecret}; use std::convert::{TryFrom, TryInto}; @@ -133,16 +133,7 @@ where let parent_key_id = w.parent_key_id(); let k = w.keychain(keychain_mask)?; let sec_addr_key = address::address_from_derivation_path(&k, &parent_key_id, index)?; - let d_skey = match DalekSecretKey::from_bytes(&sec_addr_key.0) { - Ok(k) => k, - Err(e) => { - return Err(OnionV3AddressError::InvalidPrivateKey(format!( - "Unable to create secret key: {}", - e - )) - .into()); - } - }; + let d_skey = DalekSecretKey::from_bytes(&sec_addr_key.0); Ok(d_skey) } @@ -1238,12 +1229,7 @@ where // for now, simple test whether one of the addresses belongs to this wallet let sec_key = address::address_from_derivation_path(&keychain, &parent_key_id, 0)?; - let d_skey = match DalekSecretKey::from_bytes(&sec_key.0) { - Ok(k) => k, - Err(e) => { - return Err(Error::ED25519Key(format!("{}", e))); - } - }; + let d_skey = DalekSecretKey::from_bytes(&sec_key.0); let my_address_pubkey: DalekPublicKey = (&d_skey).into(); let sender_mine = my_address_pubkey == sender_pubkey; diff --git a/libwallet/src/internal/tx.rs b/libwallet/src/internal/tx.rs index 57e2fec..128d9e6 100644 --- a/libwallet/src/internal/tx.rs +++ b/libwallet/src/internal/tx.rs @@ -30,10 +30,9 @@ use crate::types::{Context, NodeClient, StoredProofInfo, TxLogEntryType}; use crate::util::OnionV3Address; use crate::{address, Error}; use crate::{InitTxArgs, WalletBackend}; -use ed25519_dalek::Keypair as DalekKeypair; -use ed25519_dalek::PublicKey as DalekPublicKey; -use ed25519_dalek::SecretKey as DalekSecretKey; use ed25519_dalek::Signature as DalekSignature; +use ed25519_dalek::SigningKey as DalekSecretKey; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use ed25519_dalek::{Signer, Verifier}; use grin_core::core::FeeFields; @@ -480,18 +479,8 @@ pub fn create_payment_proof_signature( sec_key: SecretKey, ) -> Result { let msg = payment_proof_message(amount, kernel_commitment, sender_address)?; - let d_skey = match DalekSecretKey::from_bytes(&sec_key.0) { - Ok(k) => k, - Err(e) => { - return Err(Error::ED25519Key(format!("{}", e))); - } - }; - let pub_key: DalekPublicKey = (&d_skey).into(); - let keypair = DalekKeypair { - public: pub_key, - secret: d_skey, - }; - Ok(keypair.sign(&msg)) + let d_skey = DalekSecretKey::from_bytes(&sec_key.0); + Ok(d_skey.sign(&msg)) } /// Verify all aspects of a completed payment proof on the current slate @@ -630,7 +619,7 @@ mod test { let secp = secp_inst.lock(); let mut test_rng = StepRng::new(1_234_567_890_u64, 1); let sec_key = secp::key::SecretKey::new(&secp, &mut test_rng); - let d_skey = DalekSecretKey::from_bytes(&sec_key.0).unwrap(); + let d_skey = DalekSecretKey::from_bytes(&sec_key.0); let address: DalekPublicKey = (&d_skey).into(); diff --git a/libwallet/src/mwixnet/onion/crypto/comsig.rs b/libwallet/src/mwixnet/onion/crypto/comsig.rs index bf9e347..89eb8f8 100644 --- a/libwallet/src/mwixnet/onion/crypto/comsig.rs +++ b/libwallet/src/mwixnet/onion/crypto/comsig.rs @@ -204,7 +204,6 @@ mod tests { use super::{ComSigError, ComSignature, ContextFlag, Secp256k1, SecretKey}; use grin_util::secp::rand::{thread_rng, RngCore}; - use rand::Rng; /// Test signing and verification of ComSignatures #[test] @@ -213,13 +212,13 @@ mod tests { let amount = thread_rng().next_u64(); let blind = SecretKey::new(&secp, &mut thread_rng()); - let msg: [u8; 16] = rand::thread_rng().gen(); + let msg: [u8; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; let comsig = ComSignature::sign(amount, &blind, &msg.to_vec(), false)?; let commit = secp.commit(amount, blind.clone())?; assert!(comsig.verify(&commit, &msg.to_vec()).is_ok()); - let wrong_msg: [u8; 16] = rand::thread_rng().gen(); + let wrong_msg: [u8; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17]; assert!(comsig.verify(&commit, &wrong_msg.to_vec()).is_err()); let wrong_commit = secp.commit(amount, SecretKey::new(&secp, &mut thread_rng()))?; diff --git a/libwallet/src/mwixnet/onion/crypto/dalek.rs b/libwallet/src/mwixnet/onion/crypto/dalek.rs index 38fd408..62084dd 100644 --- a/libwallet/src/mwixnet/onion/crypto/dalek.rs +++ b/libwallet/src/mwixnet/onion/crypto/dalek.rs @@ -14,9 +14,10 @@ //! Dalek key wrapper for mwixnet primitives +use ed25519_dalek::Verifier; use grin_util::secp::key::SecretKey; -use ed25519_dalek::{PublicKey, Signature, Verifier}; +use ed25519_dalek::VerifyingKey; use grin_core::ser::{self, Readable, Reader, Writeable, Writer}; use grin_util::ToHex; use thiserror::Error; @@ -37,7 +38,7 @@ pub enum DalekError { /// Encapsulates an ed25519_dalek::PublicKey and provides (de-)serialization #[derive(Clone, Debug, PartialEq)] -pub struct DalekPublicKey(PublicKey); +pub struct DalekPublicKey(VerifyingKey); impl DalekPublicKey { /// Convert DalekPublicKey to hex string @@ -47,23 +48,23 @@ impl DalekPublicKey { /// Convert hex string to DalekPublicKey. pub fn from_hex(hex: &str) -> Result { - let bytes = grin_util::from_hex(hex) - .map_err(|_| DalekError::HexError(format!("failed to decode {}", hex)))?; - let pk = PublicKey::from_bytes(bytes.as_ref()) - .map_err(|_| DalekError::HexError(format!("failed to decode {}", hex)))?; + let err = DalekError::HexError(format!("failed to decode {}", hex)); + let bytes = grin_util::from_hex(hex).map_err(|_| err.clone())?; + let b = <&[u8; 32]>::try_from(bytes.as_slice()).map_err(|_| err.clone())?; + let pk = VerifyingKey::from_bytes(b).map_err(|_| err)?; Ok(DalekPublicKey(pk)) } /// Compute DalekPublicKey from a SecretKey pub fn from_secret(key: &SecretKey) -> Self { - let secret = ed25519_dalek::SecretKey::from_bytes(&key.0).unwrap(); - let pk: PublicKey = (&secret).into(); + let secret = ed25519_dalek::SigningKey::from_bytes(&key.0); + let pk: VerifyingKey = (&secret).into(); DalekPublicKey(pk) } } -impl AsRef for DalekPublicKey { - fn as_ref(&self) -> &PublicKey { +impl AsRef for DalekPublicKey { + fn as_ref(&self) -> &VerifyingKey { &self.0 } } @@ -103,8 +104,9 @@ pub mod option_dalek_pubkey_serde { impl Readable for DalekPublicKey { fn read(reader: &mut R) -> Result { - let pk = PublicKey::from_bytes(&reader.read_fixed_bytes(32)?) - .map_err(|_| ser::Error::CorruptedData)?; + let bytes = reader.read_fixed_bytes(32)?; + let b = <&[u8; 32]>::try_from(bytes.as_slice()).map_err(|_| ser::Error::CorruptedData)?; + let pk = VerifyingKey::from_bytes(b).map_err(|_| ser::Error::CorruptedData)?; Ok(DalekPublicKey(pk)) } } @@ -119,7 +121,7 @@ impl Writeable for DalekPublicKey { /// Encapsulates an ed25519_dalek::Signature and provides (de-)serialization #[allow(dead_code)] #[derive(Clone, Debug, PartialEq)] -pub struct DalekSignature(Signature); +pub struct DalekSignature(ed25519_dalek::Signature); impl DalekSignature { /// Convert hex string to DalekSignature. @@ -127,7 +129,9 @@ impl DalekSignature { pub fn from_hex(hex: &str) -> Result { let bytes = grin_util::from_hex(hex) .map_err(|_| DalekError::HexError(format!("failed to decode {}", hex)))?; - let sig = Signature::from_bytes(bytes.as_ref()) + let b = <[u8; 64]>::try_from(bytes.as_slice()) + .map_err(|_| DalekError::HexError(format!("failed to decode {}", hex)))?; + let sig = ed25519_dalek::Signature::try_from(b) .map_err(|_| DalekError::HexError(format!("failed to decode {}", hex)))?; Ok(DalekSignature(sig)) } @@ -141,8 +145,8 @@ impl DalekSignature { } } -impl AsRef for DalekSignature { - fn as_ref(&self) -> &Signature { +impl AsRef for DalekSignature { + fn as_ref(&self) -> &ed25519_dalek::Signature { &self.0 } } @@ -160,7 +164,7 @@ pub mod dalek_sig_serde { where S: Serializer, { - serializer.serialize_str(&sig.0.to_hex()) + serializer.serialize_str(&sig.0.to_bytes().to_hex()) } /// @@ -178,22 +182,19 @@ pub mod dalek_sig_serde { // TODO: This is likely duplicated throughout crate, check #[cfg(test)] pub fn sign(sk: &SecretKey, message: &[u8]) -> Result { - use ed25519_dalek::{Keypair, Signer}; - let secret = - ed25519_dalek::SecretKey::from_bytes(&sk.0).map_err(|_| DalekError::KeyParseError)?; - let public: PublicKey = (&secret).into(); - let keypair = Keypair { secret, public }; - let sig = keypair.sign(&message); + use ed25519_dalek::{Signer, SigningKey}; + let secret = SigningKey::from_bytes(&sk.0); + let sig = secret.sign(&message); Ok(DalekSignature(sig)) } #[cfg(test)] mod tests { use super::*; + use crate::mwixnet::onion::crypto::secp::Secp256k1; use crate::mwixnet::onion::test_util::rand_keypair; use grin_core::ser::{self, ProtocolVersion}; use grin_util::ToHex; - use rand::Rng; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -262,23 +263,27 @@ mod tests { #[test] fn sig_test() -> Result<(), Box> { // Sign a message - let (sk, pk) = rand_keypair(); - let msg: [u8; 16] = rand::thread_rng().gen(); + let s = Secp256k1::new(); + let sk = SecretKey::from_slice(&s, &[1; 32]).unwrap(); + let pk = DalekPublicKey::from_secret(&sk); + + let msg: [u8; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; let sig = sign(&sk, &msg).unwrap(); // Verify signature assert!(sig.verify(&pk, &msg).is_ok()); // Wrong message - let wrong_msg: [u8; 16] = rand::thread_rng().gen(); + let wrong_msg: [u8; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17]; assert!(sig.verify(&pk, &wrong_msg).is_err()); // Wrong pubkey - let wrong_pk = rand_keypair().1; + let wrong_sk = SecretKey::from_slice(&s, &[2; 32]).unwrap(); + let wrong_pk = DalekPublicKey::from_secret(&wrong_sk); assert!(sig.verify(&wrong_pk, &msg).is_err()); // Test from_hex - let sig_from_hex = DalekSignature::from_hex(sig.0.to_hex().as_str()).unwrap(); + let sig_from_hex = DalekSignature::from_hex(sig.0.to_bytes().to_hex().as_str()).unwrap(); assert_eq!(sig.0, sig_from_hex.0); // Test serde (de-)serialization @@ -286,7 +291,7 @@ mod tests { let val = serde_json::to_value(serde_test.clone()).unwrap(); if let Value::Object(o) = &val { if let Value::String(s) = o.get("sig").unwrap() { - assert_eq!(s, &sig.0.to_hex()); + assert_eq!(s, &sig.0.to_bytes().to_hex()); } else { panic!("Invalid type"); } diff --git a/libwallet/src/slate.rs b/libwallet/src/slate.rs index a29233c..9095d60 100644 --- a/libwallet/src/slate.rs +++ b/libwallet/src/slate.rs @@ -28,8 +28,8 @@ use crate::grin_util::secp::key::{PublicKey, SecretKey}; use crate::grin_util::secp::pedersen::Commitment; use crate::grin_util::secp::Signature; use crate::grin_util::{secp, static_secp_instance}; -use ed25519_dalek::PublicKey as DalekPublicKey; use ed25519_dalek::Signature as DalekSignature; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use serde::ser::{Serialize, Serializer}; use serde_json; use std::fmt; diff --git a/libwallet/src/slate_versions/ser.rs b/libwallet/src/slate_versions/ser.rs index 8e3510c..b9395c4 100644 --- a/libwallet/src/slate_versions/ser.rs +++ b/libwallet/src/slate_versions/ser.rs @@ -131,7 +131,7 @@ pub mod ov3_serde { /// Serializes an ed25519 PublicKey to and from hex pub mod dalek_seckey_serde { use crate::grin_util::{from_hex, ToHex}; - use ed25519_dalek::SecretKey as DalekSecretKey; + use ed25519_dalek::SigningKey as DalekSecretKey; use serde::{Deserialize, Deserializer, Serializer}; /// @@ -151,7 +151,9 @@ pub mod dalek_seckey_serde { String::deserialize(deserializer) .and_then(|string| from_hex(&string).map_err(|err| Error::custom(err.to_string()))) .and_then(|bytes: Vec| { - DalekSecretKey::from_bytes(&bytes).map_err(|err| Error::custom(err.to_string())) + let b = <&[u8; 32]>::try_from(bytes.as_slice()) + .map_err(|_| Error::custom("Error deserializing secret key"))?; + Ok(DalekSecretKey::from_bytes(b)) }) } } @@ -159,7 +161,7 @@ pub mod dalek_seckey_serde { /// Serializes an ed25519 PublicKey to and from hex pub mod dalek_pubkey_serde { use crate::grin_util::{from_hex, ToHex}; - use ed25519_dalek::PublicKey as DalekPublicKey; + use ed25519_dalek::VerifyingKey as DalekPublicKey; use serde::{Deserialize, Deserializer, Serializer}; /// @@ -179,12 +181,17 @@ pub mod dalek_pubkey_serde { String::deserialize(deserializer) .and_then(|string| from_hex(&string).map_err(|err| Error::custom(err.to_string()))) .and_then(|bytes: Vec| { - DalekPublicKey::from_bytes(&bytes).map_err(|err| Error::custom(err.to_string())) + let b = <&[u8; 32]>::try_from(bytes.as_slice()) + .map_err(|_| Error::custom("Error deserializing public key"))?; + Ok(match DalekPublicKey::from_bytes(b) { + Ok(pk) => pk, + Err(e) => return Err(Error::custom(format!("{:?}", e))), + }) }) } } -/// Serializes an x25519 PublicKey to and from hex +/// Serializes a x25519 PublicKey to and from hex pub mod dalek_xpubkey_serde { use crate::grin_util::{from_hex, ToHex}; use serde::{Deserialize, Deserializer, Serializer}; @@ -217,7 +224,7 @@ pub mod dalek_xpubkey_serde { /// Serializes an ed25519 PublicKey to and from base64 pub mod dalek_pubkey_base64 { use base64; - use ed25519_dalek::PublicKey as DalekPublicKey; + use ed25519_dalek::VerifyingKey as DalekPublicKey; use serde::{Deserialize, Deserializer, Serializer}; /// @@ -239,7 +246,12 @@ pub mod dalek_pubkey_base64 { base64::decode(&string).map_err(|err| Error::custom(err.to_string())) }) .and_then(|bytes: Vec| { - DalekPublicKey::from_bytes(&bytes).map_err(|err| Error::custom(err.to_string())) + let b = <&[u8; 32]>::try_from(bytes.as_slice()) + .map_err(|_| Error::custom("Error deserializing public key"))?; + Ok(match DalekPublicKey::from_bytes(b) { + Ok(pk) => pk, + Err(e) => return Err(Error::custom(format!("{:?}", e))), + }) }) } } @@ -247,7 +259,7 @@ pub mod dalek_pubkey_base64 { /// Serializes an Option to and from hex pub mod option_dalek_pubkey_base64 { use base64; - use ed25519_dalek::PublicKey as DalekPublicKey; + use ed25519_dalek::VerifyingKey as DalekPublicKey; use serde::de::Error; use serde::{Deserialize, Deserializer, Serializer}; @@ -287,7 +299,7 @@ pub mod option_dalek_pubkey_base64 { /// Serializes an Option to and from hex pub mod option_dalek_pubkey_serde { - use ed25519_dalek::PublicKey as DalekPublicKey; + use ed25519_dalek::VerifyingKey as DalekPublicKey; use serde::de::Error; use serde::{Deserialize, Deserializer, Serializer}; @@ -597,11 +609,10 @@ mod test { use rand::rngs::mock::StepRng; use crate::grin_util::{secp, static_secp_instance}; - use ed25519_dalek::Keypair; - use ed25519_dalek::PublicKey as DalekPublicKey; - use ed25519_dalek::SecretKey as DalekSecretKey; use ed25519_dalek::Signature as DalekSignature; use ed25519_dalek::Signer; + use ed25519_dalek::SigningKey as DalekSecretKey; + use ed25519_dalek::VerifyingKey as DalekPublicKey; use serde::Deserialize; use serde_json; @@ -624,15 +635,10 @@ mod test { let secp = secp_inst.lock(); let mut test_rng = StepRng::new(1234567890u64, 1); let sec_key = secp::key::SecretKey::new(&secp, &mut test_rng); - let d_skey = DalekSecretKey::from_bytes(&sec_key.0).unwrap(); + let d_skey = DalekSecretKey::from_bytes(&sec_key.0); let d_pub_key: DalekPublicKey = (&d_skey).into(); - let keypair = Keypair { - public: d_pub_key, - secret: d_skey, - }; - - let d_sig = keypair.sign("test sig".as_bytes()); + let d_sig = d_skey.sign("test sig".as_bytes()); println!("D sig: {:?}", d_sig); SerTest { diff --git a/libwallet/src/slate_versions/v4.rs b/libwallet/src/slate_versions/v4.rs index 26c59e0..a3ba1b1 100644 --- a/libwallet/src/slate_versions/v4.rs +++ b/libwallet/src/slate_versions/v4.rs @@ -62,8 +62,8 @@ use crate::grin_util::secp::key::PublicKey; use crate::grin_util::secp::pedersen::{Commitment, RangeProof}; use crate::grin_util::secp::Signature; use crate::{slate_versions::ser, CbData}; -use ed25519_dalek::PublicKey as DalekPublicKey; use ed25519_dalek::Signature as DalekSignature; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use uuid::Uuid; #[derive(Serialize, Deserialize, Debug, Clone)] diff --git a/libwallet/src/slate_versions/v4_bin.rs b/libwallet/src/slate_versions/v4_bin.rs index 455af3f..5a4ad38 100644 --- a/libwallet/src/slate_versions/v4_bin.rs +++ b/libwallet/src/slate_versions/v4_bin.rs @@ -21,8 +21,8 @@ use crate::grin_keychain::BlindingFactor; use crate::grin_util::secp::key::PublicKey; use crate::grin_util::secp::pedersen::{Commitment, RangeProof}; use crate::grin_util::secp::Signature; -use ed25519_dalek::PublicKey as DalekPublicKey; use ed25519_dalek::Signature as DalekSignature; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use std::convert::TryFrom; use uuid::Uuid; @@ -345,10 +345,18 @@ impl<'a> Writeable for ProofWrapRef<'a> { impl Readable for ProofWrap { fn read(reader: &mut R) -> Result { - let saddr = DalekPublicKey::from_bytes(&reader.read_fixed_bytes(32)?) + let saddr_bytes = reader.read_fixed_bytes(32)?; + let saddr_bytes = <&[u8; 32]>::try_from(saddr_bytes.as_slice()) .map_err(|_| grin_ser::Error::CorruptedData)?; - let raddr = DalekPublicKey::from_bytes(&reader.read_fixed_bytes(32)?) + let saddr = + DalekPublicKey::from_bytes(saddr_bytes).map_err(|_| grin_ser::Error::CorruptedData)?; + + let raddr_bytes = reader.read_fixed_bytes(32)?; + let raddr_bytes = <&[u8; 32]>::try_from(raddr_bytes.as_slice()) .map_err(|_| grin_ser::Error::CorruptedData)?; + let raddr = + DalekPublicKey::from_bytes(raddr_bytes).map_err(|_| grin_ser::Error::CorruptedData)?; + let rsig = match reader.read_u8()? { 0 => None, 1 | _ => Some( @@ -500,6 +508,7 @@ fn slate_v4_serialize_deserialize() { use crate::Slate; use grin_core::global::{set_local_chain_type, ChainTypes}; use grin_keychain::{ExtKeychain, Keychain, SwitchCommitmentType}; + set_local_chain_type(ChainTypes::Mainnet); let slate = Slate::blank(1, false); let mut v4 = SlateV4::from(slate); @@ -573,8 +582,9 @@ fn slate_v4_serialize_deserialize() { // Include Payment proof, remove coms to mix it up a bit let mut v4 = v4_1_copy; let raw_pubkey_str = "d03c09e9c19bb74aa9ea44e0fe5ae237a9bf40bddf0941064a80913a4459c8bb"; - let b = from_hex(raw_pubkey_str).unwrap(); - let d_pkey = DalekPublicKey::from_bytes(&b).unwrap(); + let bytes = from_hex(raw_pubkey_str).unwrap(); + let b = <&[u8; 32]>::try_from(bytes.as_slice()).unwrap(); + let d_pkey = DalekPublicKey::from_bytes(b.as_array().unwrap()).unwrap(); v4.proof = Some(PaymentInfoV4 { raddr: d_pkey.clone(), saddr: d_pkey.clone(), diff --git a/libwallet/src/slatepack/address.rs b/libwallet/src/slatepack/address.rs index 15c08b8..1e88541 100644 --- a/libwallet/src/slatepack/address.rs +++ b/libwallet/src/slatepack/address.rs @@ -13,9 +13,9 @@ // limitations under the License. use bech32::{self, FromBase32, ToBase32}; +use ed25519_dalek::SigningKey as edDalekSecretKey; /// Slatepack Address definition -use ed25519_dalek::PublicKey as edDalekPublicKey; -use ed25519_dalek::SecretKey as edDalekSecretKey; +use ed25519_dalek::VerifyingKey as edDalekPublicKey; use rand::{thread_rng, Rng}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use x25519_dalek::PublicKey as xDalekPublicKey; @@ -57,7 +57,7 @@ impl SlatepackAddress { /// new with a random key pub fn random() -> Self { let bytes: [u8; 32] = thread_rng().gen(); - let pub_key = edDalekPublicKey::from(&edDalekSecretKey::from_bytes(&bytes).unwrap()); + let pub_key = edDalekPublicKey::from(&edDalekSecretKey::from_bytes(&bytes)); SlatepackAddress::new(&pub_key) } @@ -88,7 +88,9 @@ impl TryFrom<&str> for SlatepackAddress { fn try_from(encoded: &str) -> Result { let (hrp, data) = bech32::decode(&encoded)?; let bytes = Vec::::from_base32(&data)?; - let pub_key = match edDalekPublicKey::from_bytes(&bytes) { + let b = <&[u8; 32]>::try_from(bytes.as_slice()) + .map_err(|_| Error::SlatepackAddress("Wrong encoded data".to_string()))?; + let pub_key = match edDalekPublicKey::from_bytes(&b) { Ok(k) => k, Err(e) => { return Err(Error::ED25519Key(format!("{}", e))); @@ -124,7 +126,10 @@ impl TryFrom<&SlatepackAddress> for xDalekPublicKey { fn try_from(addr: &SlatepackAddress) -> Result { let cep = curve25519_dalek::edwards::CompressedEdwardsY::from_slice(addr.pub_key.as_bytes()); - let ep = match cep.decompress() { + let ep = match cep + .map_err(|e| Error::ED25519Key(format!("{}", e)))? + .decompress() + { Some(p) => p, None => { return Err(Error::ED25519Key( @@ -140,15 +145,7 @@ impl TryFrom<&SlatepackAddress> for xDalekPublicKey { impl TryFrom<&SecretKey> for SlatepackAddress { type Error = Error; fn try_from(key: &SecretKey) -> Result { - let d_skey = match edDalekSecretKey::from_bytes(&key.0) { - Ok(k) => k, - Err(e) => { - return Err(Error::ED25519Key(format!( - "Can't create slatepack address from SecretKey: {}", - e - ))); - } - }; + let d_skey = edDalekSecretKey::from_bytes(&key.0); let d_pub_key: edDalekPublicKey = (&d_skey).into(); Ok(Self::new(&d_pub_key)) } @@ -251,7 +248,7 @@ fn slatepack_address() -> Result<(), Error> { global::set_local_chain_type(global::ChainTypes::AutomatedTesting); let sec_key_bytes: [u8; 32] = thread_rng().gen(); - let ed_sec_key = edDalekSecretKey::from_bytes(&sec_key_bytes).unwrap(); + let ed_sec_key = edDalekSecretKey::from_bytes(&sec_key_bytes); let ed_pub_key = edDalekPublicKey::from(&ed_sec_key); let addr = SlatepackAddress::new(&ed_pub_key); let x_pub_key = xDalekPublicKey::try_from(&addr)?; diff --git a/libwallet/src/slatepack/packer.rs b/libwallet/src/slatepack/packer.rs index f1c54e9..d2eda6d 100644 --- a/libwallet/src/slatepack/packer.rs +++ b/libwallet/src/slatepack/packer.rs @@ -24,7 +24,7 @@ use crate::{ use grin_wallet_util::byte_ser; -use ed25519_dalek::SecretKey as edSecretKey; +use ed25519_dalek::SigningKey as edSecretKey; #[derive(Clone)] /// Arguments, mostly for encrypting decrypting a slatepack diff --git a/libwallet/src/slatepack/types.rs b/libwallet/src/slatepack/types.rs index fc12f49..72867a9 100644 --- a/libwallet/src/slatepack/types.rs +++ b/libwallet/src/slatepack/types.rs @@ -15,7 +15,7 @@ use bech32::{self, ToBase32}; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; /// Slatepack Types + Serialization implementation -use ed25519_dalek::SecretKey as edSecretKey; +use ed25519_dalek::SigningKey as edSecretKey; use sha2::{Digest, Sha512}; use x25519_dalek::StaticSecret; @@ -768,15 +768,15 @@ fn slatepack_bin_future() -> Result<(), grin_wallet_util::byte_ser::Error> { fn slatepack_encrypted_meta() -> Result<(), Error> { use crate::grin_core::global; use crate::{Slate, SlateVersion, VersionedBinSlate, VersionedSlate}; - use ed25519_dalek::PublicKey as edDalekPublicKey; - use ed25519_dalek::SecretKey as edDalekSecretKey; + use ed25519_dalek::SigningKey as edDalekSecretKey; + use ed25519_dalek::VerifyingKey as edDalekPublicKey; use rand::{thread_rng, Rng}; use std::convert::TryFrom; global::set_local_chain_type(global::ChainTypes::AutomatedTesting); let sec_key_bytes: [u8; 32] = thread_rng().gen(); - let ed_sec_key = edDalekSecretKey::from_bytes(&sec_key_bytes).unwrap(); + let ed_sec_key = edDalekSecretKey::from_bytes(&sec_key_bytes); let ed_pub_key = edDalekPublicKey::from(&ed_sec_key); let addr = SlatepackAddress::new(&ed_pub_key); @@ -817,15 +817,15 @@ fn slatepack_encrypted_meta() -> Result<(), Error> { fn slatepack_encrypted_meta_future() -> Result<(), Error> { use crate::grin_core::global; use crate::{Slate, SlateVersion, VersionedBinSlate, VersionedSlate}; - use ed25519_dalek::PublicKey as edDalekPublicKey; - use ed25519_dalek::SecretKey as edDalekSecretKey; + use ed25519_dalek::SigningKey as edDalekSecretKey; + use ed25519_dalek::VerifyingKey as edDalekPublicKey; use rand::{thread_rng, Rng}; use std::convert::TryFrom; global::set_local_chain_type(global::ChainTypes::AutomatedTesting); let sec_key_bytes: [u8; 32] = thread_rng().gen(); - let ed_sec_key = edDalekSecretKey::from_bytes(&sec_key_bytes).unwrap(); + let ed_sec_key = edDalekSecretKey::from_bytes(&sec_key_bytes); let ed_pub_key = edDalekPublicKey::from(&ed_sec_key); let addr = SlatepackAddress::new(&ed_pub_key); @@ -864,11 +864,11 @@ fn slatepack_encrypted_meta_future() -> Result<(), Error> { #[cfg(test)] fn slatepack_test_decryption_key() -> (edSecretKey, SlatepackAddress) { - use ed25519_dalek::PublicKey as edDalekPublicKey; + use ed25519_dalek::VerifyingKey as edDalekPublicKey; use rand::{thread_rng, Rng}; let sec_key_bytes: [u8; 32] = thread_rng().gen(); - let ed_sec_key = edSecretKey::from_bytes(&sec_key_bytes).unwrap(); + let ed_sec_key = edSecretKey::from_bytes(&sec_key_bytes); let ed_pub_key = edDalekPublicKey::from(&ed_sec_key); let addr = SlatepackAddress::new(&ed_pub_key); diff --git a/libwallet/src/types.rs b/libwallet/src/types.rs index 41ca9a5..2f55124 100644 --- a/libwallet/src/types.rs +++ b/libwallet/src/types.rs @@ -30,8 +30,8 @@ use crate::grin_util::{ToHex, ZeroingString}; use crate::slate_versions::ser as dalek_ser; use crate::{InitTxArgs, SlateState, WalletBackend}; use chrono::prelude::*; -use ed25519_dalek::PublicKey as DalekPublicKey; use ed25519_dalek::Signature as DalekSignature; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use rand::rngs::mock::StepRng; use rand::thread_rng; use serde; diff --git a/src/bin/grin-wallet.rs b/src/bin/grin-wallet.rs index c6a342e..2ded32d 100644 --- a/src/bin/grin-wallet.rs +++ b/src/bin/grin-wallet.rs @@ -131,8 +131,6 @@ fn real_main() -> i32 { }, }; - //config.members.as_mut().unwrap().wallet.chain_type = Some(chain_type); - // Load logging config let mut l = config.members.as_mut().unwrap().logging.clone().unwrap(); // no logging to stdout if we're running cli diff --git a/src/cli/cli.rs b/src/cli/cli.rs index cf01dd7..816bfcb 100644 --- a/src/cli/cli.rs +++ b/src/cli/cli.rs @@ -189,7 +189,7 @@ where let lc = wallet_lock.lc_provider().unwrap(); let mask = match lc.open_wallet( None, - wallet_args::prompt_password(&global_wallet_args.password), + wallet_args::prompt_password(&global_wallet_args.password)?, false, false, ) { @@ -276,6 +276,8 @@ impl Completer for EditorHelper { } impl Hinter for EditorHelper { + type Hint = String; + fn hint(&self, line: &str, _pos: usize, _ctx: &Context<'_>) -> Option { let mut contents = STDIN_CONTENTS.lock(); *contents = line.into(); diff --git a/src/cmd/wallet.rs b/src/cmd/wallet.rs index 2a76b98..14cd244 100644 --- a/src/cmd/wallet.rs +++ b/src/cmd/wallet.rs @@ -42,11 +42,21 @@ where // This will also cache the node version info for calls to foreign API check middleware if let Some(v) = node_client.clone().get_version_info() { - if Version::parse(&v.node_version) < Version::parse(MIN_COMPAT_NODE_VERSION) { - println!("The Grin Node in use (version {}) is outdated and incompatible with this wallet version.", v.node_version); + let node_version = Version::parse(&v.node_version); + let min_version = Version::parse(MIN_COMPAT_NODE_VERSION).ok(); + if let Ok(v) = node_version { + if Some(v.clone()) < min_version { + println!("The Grin Node in use (version {}) is outdated and incompatible with this wallet version.", v); + println!( + "Please update the node to version {} or later and try again.", + MIN_COMPAT_NODE_VERSION + ); + return 1; + } + } else { println!( - "Please update the node to version {} or later and try again.", - MIN_COMPAT_NODE_VERSION + "Can not parse node version {}. Minimal compatible node version: {}", + v.node_version, MIN_COMPAT_NODE_VERSION ); return 1; } diff --git a/src/cmd/wallet_args.rs b/src/cmd/wallet_args.rs index d573695..be22dcd 100644 --- a/src/cmd/wallet_args.rs +++ b/src/cmd/wallet_args.rs @@ -12,13 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +/// Argument parsing and error handling for wallet commands use crate::api::TLSConfig; use crate::cli::command_loop; use crate::config::GRIN_WALLET_DIR; use crate::util::file::get_first_line; use crate::util::secp::key::SecretKey; use crate::util::{Mutex, ZeroingString}; -/// Argument parsing and error handling for wallet commands + use clap::ArgMatches; use grin_core as core; use grin_core::core::amount_to_hr_string; @@ -33,6 +34,7 @@ use linefeed::terminal::Signal; use linefeed::{Interface, ReadResult}; use rpassword; use std::convert::TryFrom; +use std::io::{IsTerminal, Write}; use std::path::{Path, PathBuf}; use std::sync::Arc; @@ -67,25 +69,39 @@ impl From for ParseError { } } -fn prompt_password_stdout(prompt: &str) -> ZeroingString { - ZeroingString::from(rpassword::prompt_password_stdout(prompt).unwrap()) +fn prompt_password_internal(prompt: &str) -> Result { + print!("{}", prompt); + std::io::stdout().flush().unwrap(); + let stdin = std::io::stdin(); + let password = if stdin.is_terminal() { + rpassword::read_password() + } else { + rpassword::read_password_with_config( + rpassword::ConfigBuilder::new() + .input_reader(stdin) + .output_discard() + .build(), + ) + } + .map_err(|e| Error::GenericError(format!("{}", e)))?; + Ok(ZeroingString::from(password)) } -pub fn prompt_password(password: &Option) -> ZeroingString { +pub fn prompt_password(password: &Option) -> Result { match password { - None => prompt_password_stdout("Password: "), - Some(p) => p.clone(), + None => Ok(prompt_password_internal("Password: ")?), + Some(p) => Ok(p.clone()), } } -fn prompt_password_confirm() -> ZeroingString { +fn prompt_password_confirm() -> Result { let mut first = ZeroingString::from("first"); let mut second = ZeroingString::from("second"); while first != second { - first = prompt_password_stdout("Password: "); - second = prompt_password_stdout("Confirm Password: "); + first = prompt_password_internal("Password: ")?; + second = prompt_password_internal("Confirm Password: ")?; } - first + Ok(first) } fn prompt_recovery_phrase( @@ -333,7 +349,7 @@ pub fn parse_init_args( g_args: &command::GlobalArgs, args: &ArgMatches, _test_mode: bool, -) -> Result +) -> Result where DefaultWalletImpl: WalletInst<'static, L, C, K>, L: WalletLCProvider<'static, C, K>, @@ -345,7 +361,9 @@ where true => 16, }; let recovery_phrase = match args.is_present("recover") { - true => Some(prompt_recovery_phrase(wallet)?), + true => { + Some(prompt_recovery_phrase(wallet).map_err(|e| Error::GenericError(e.to_string()))?) + } false => None, }; @@ -355,10 +373,11 @@ where println!("Please enter a password for your new wallet"); } - let password = g_args - .password - .clone() - .unwrap_or_else(|| prompt_password_confirm()); + let password = if let Some(p) = g_args.password.clone() { + p + } else { + prompt_password_confirm()? + }; Ok(command::InitArgs { list_length, @@ -369,12 +388,10 @@ where }) } -pub fn parse_recover_args( - g_args: &command::GlobalArgs, -) -> Result +pub fn parse_recover_args(g_args: &command::GlobalArgs) -> Result where { - let passphrase = prompt_password(&g_args.password); + let passphrase = prompt_password(&g_args.password)?; Ok(command::RecoverArgs { passphrase }) } @@ -1073,7 +1090,7 @@ where let lc = wallet_lock.lc_provider()?; let mask = lc.open_wallet( None, - prompt_password(&global_wallet_args.password), + prompt_password(&global_wallet_args.password)?, false, false, )?; diff --git a/tests/cmd_line_basic.rs b/tests/cmd_line_basic.rs index bce4a8d..2c66f83 100644 --- a/tests/cmd_line_basic.rs +++ b/tests/cmd_line_basic.rs @@ -637,7 +637,7 @@ fn command_line_test_impl(test_dir: &str) -> Result<(), grin_wallet_controller:: let (_, txs) = api.retrieve_txs(m, true, None, None, None)?; let some_tx_id = txs[0].tx_slate_id.clone(); assert!(some_tx_id.is_some()); - tx_id = some_tx_id.unwrap().to_hyphenated().to_string().clone(); + tx_id = some_tx_id.unwrap().to_string().clone(); Ok(()) }, )?; diff --git a/tests/common/mod.rs b/tests/common/mod.rs index ee01a40..7ecd502 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -124,7 +124,7 @@ macro_rules! setup_proxy { #[allow(dead_code)] pub fn clean_output_dir(test_dir: &str) { - let _ = remove_dir_all::remove_dir_all(test_dir); + let _ = fs::remove_dir_all(test_dir); } #[allow(dead_code)] diff --git a/util/Cargo.toml b/util/Cargo.toml index 36802e3..7552d89 100644 --- a/util/Cargo.toml +++ b/util/Cargo.toml @@ -10,21 +10,15 @@ workspace = ".." edition = "2021" [dependencies] -rand = "0.6" serde = "1" serde_derive = "1" -ed25519-dalek = "1.0.0-pre.4" +ed25519-dalek = "2" data-encoding = "2" sha3 = "0.8" thiserror = "1" ##### Grin Imports -# For Release - grin_util = { path = "../grin/util"} -##### - -[dev-dependencies] -pretty_assertions = "0.6" +###### diff --git a/util/src/ov3.rs b/util/src/ov3.rs index 8c16b3d..924523f 100644 --- a/util/src/ov3.rs +++ b/util/src/ov3.rs @@ -13,8 +13,8 @@ // limitations under the License. use data_encoding::BASE32; -use ed25519_dalek::PublicKey as DalekPublicKey; -use ed25519_dalek::SecretKey as DalekSecretKey; +use ed25519_dalek::SigningKey as DalekSecretKey; +use ed25519_dalek::VerifyingKey as DalekPublicKey; use grin_util::from_hex; use sha3::{Digest, Sha3_256}; use std::convert::TryFrom; @@ -49,15 +49,7 @@ impl OnionV3Address { /// populate from a private key pub fn from_private(key: &[u8; 32]) -> Result { - let d_skey = match DalekSecretKey::from_bytes(key) { - Ok(k) => k, - Err(e) => { - return Err(OnionV3Error::InvalidPrivateKey(format!( - "Unable to create public key: {}", - e - ))); - } - }; + let d_skey = DalekSecretKey::from_bytes(key); let d_pub_key: DalekPublicKey = (&d_skey).into(); Ok(OnionV3Address(*d_pub_key.as_bytes())) }