From ef8206eef9eaf740f12e37ed19c6980848a151f6 Mon Sep 17 00:00:00 2001 From: Leonardo Lima Date: Thu, 18 Apr 2024 13:09:02 -0300 Subject: [PATCH] feat: add initial mvp tor support --- Cargo.lock | 2489 ++++++++++++++++++++++++++++++-- fedimint-api-client/Cargo.toml | 8 +- fedimint-api-client/src/api.rs | 216 ++- misc/git-hooks/pre-commit | 13 +- 4 files changed, 2617 insertions(+), 109 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f9adc03599..f7b707b972a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,6 +26,7 @@ dependencies = [ "cfg-if", "cipher", "cpufeatures", + "zeroize", ] [[package]] @@ -101,6 +102,65 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +[[package]] +name = "amplify" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e711289a6cb28171b4f0e6c8019c69ff9476050508dc082167575d458ff74d0" +dependencies = [ + "amplify_derive", + "amplify_num", + "ascii", + "wasm-bindgen", +] + +[[package]] +name = "amplify_derive" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759dcbfaf94d838367a86d493ec34ccc8aa6fe365cb7880d6bf89006de24d9c1" +dependencies = [ + "amplify_syn", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "amplify_num" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c009c5c4de814911b177e2ea59e4930bb918978ed3cce4900d846a6ceb0838" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "amplify_syn" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7736fb8d473c0d83098b5bac44df6a561e20470375cd8bcae30516dc889fd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anes" version = "0.1.6" @@ -210,6 +270,55 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "arti-client" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4020944e05f8a92bf8772d76cc067495c7d040febd20286faa91fd33dc79ac7" +dependencies = [ + "cfg-if", + "derive_builder_fork_arti", + "derive_more", + "directories", + "educe", + "fs-mistrust", + "futures", + "hostname-validator", + "humantime-serde", + "libc", + "pin-project", + "postage", + "safelog", + "serde", + "thiserror", + "tor-async-utils", + "tor-basic-utils", + "tor-cell", + "tor-chanmgr", + "tor-checkable", + "tor-circmgr", + "tor-config", + "tor-dirmgr", + "tor-error", + "tor-guardmgr", + "tor-keymgr", + "tor-linkspec", + "tor-llcrypto", + "tor-netdir", + "tor-netdoc", + "tor-persist", + "tor-proto", + "tor-rtcompat", + "tracing", + "void", +] + +[[package]] +name = "ascii" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" + [[package]] name = "assert_matches" version = "1.5.0" @@ -229,6 +338,22 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-compression" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07dbbf24db18d609b1462965249abdf49129ccad073ec257da372adc83259c60" +dependencies = [ + "flate2", + "futures-core", + "futures-io", + "memchr", + "pin-project-lite", + "xz2", + "zstd", + "zstd-safe", +] + [[package]] name = "async-lock" version = "3.3.0" @@ -240,6 +365,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-native-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9343dc5acf07e79ff82d0c37899f079db3534d99f189a1837c8e549c99405bec" +dependencies = [ + "futures-util", + "native-tls", + "thiserror", + "url", +] + [[package]] name = "async-recursion" version = "1.0.5" @@ -284,6 +421,40 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "async_executors" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a982d2f86de6137cc05c9db9a915a19886c97911f9790d04f174cede74be01a5" +dependencies = [ + "blanket", + "futures-core", + "futures-task", + "futures-util", + "pin-project", + "rustc_version", + "tokio", +] + +[[package]] +name = "asynchronous-codec" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a860072022177f903e59730004fb5dc13db9275b79bb2aef7ba8ce831956c233" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "atomic" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" + [[package]] name = "autocfg" version = "1.1.0" @@ -648,6 +819,17 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blanket" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0b121a9fe0df916e362fb3271088d071159cdf11db0e4182d02152850756eff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -681,20 +863,32 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941" dependencies = [ - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "pairing", "rand_core", "subtle", "zeroize", ] +[[package]] +name = "bounded-vec-deque" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2225b558afc76c596898f5f1b3fc35cfce0eb1b13635cbd7d1b2a7177dc10ccd" + [[package]] name = "bumpalo" version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +[[package]] +name = "by_address" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" + [[package]] name = "byte-slice-cast" version = "1.2.2" @@ -724,6 +918,12 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "caret" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d55bb9904b8ef817fd66664cba4ecacac936781105c1016b0d2e13b900218db" + [[package]] name = "cast" version = "0.3.0" @@ -770,6 +970,19 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.4", +] + [[package]] name = "ciborium" version = "0.2.2" @@ -805,6 +1018,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -885,6 +1099,17 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "coarsetime" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b3839cf01bb7960114be3ccf2340f541b6d0c81f8690b007b2b39f750f7e5d" +dependencies = [ + "libc", + "wasix", + "wasm-bindgen", +] + [[package]] name = "colorchoice" version = "1.0.0" @@ -900,6 +1125,19 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "config" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7328b20597b53c2454f0b1919720c25c7339051c02b72b7e05409e00b14132be" +dependencies = [ + "lazy_static", + "nom", + "pathdiff", + "serde", + "toml", +] + [[package]] name = "console-api" version = "0.6.0" @@ -947,6 +1185,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "convert_case" version = "0.4.0" @@ -1060,6 +1304,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.19" @@ -1072,6 +1325,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1082,14 +1347,75 @@ dependencies = [ "typenum", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + [[package]] name = "darling" version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.8", + "darling_macro 0.20.8", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", ] [[package]] @@ -1106,17 +1432,45 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core 0.14.4", + "quote", + "syn 1.0.109", +] + [[package]] name = "darling_macro" version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core", + "darling_core 0.20.8", "quote", "syn 2.0.52", ] +[[package]] +name = "data-encoding" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.11" @@ -1124,6 +1478,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -1138,31 +1493,116 @@ dependencies = [ ] [[package]] -name = "derive_more" -version = "0.99.17" +name = "derive-adhoc" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5283ac2881753c76c0892406705553f0d9ab30649f81e18964d3408f4501edb8" dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", + "derive-adhoc-macros 0.7.3", + "heck 0.4.1", ] [[package]] -name = "devimint" -version = "0.4.0-alpha" +name = "derive-adhoc" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c768757217a40364c3af0b732d10bf9ed8af1e4f80b32fd5eeed94f375304b8" dependencies = [ - "anyhow", - "axum 0.7.4", - "bitcoincore-rpc", - "clap", - "fedimint-aead", - "fedimint-api-client", - "fedimint-bitcoind", - "fedimint-build", - "fedimint-cli", + "derive-adhoc-macros 0.8.4", + "heck 0.4.1", +] + +[[package]] +name = "derive-adhoc-macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c21b673a9b8c78c34908e6fcb42b922e11c4df2de5237f1c3f58d3285904a84b" +dependencies = [ + "heck 0.4.1", + "itertools 0.11.0", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "sha3", + "strum 0.24.1", + "syn 1.0.109", + "void", +] + +[[package]] +name = "derive-adhoc-macros" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b41d3d974cda1ce7e9b40f7ec5160a099f20345bc3137447e526e3ba9d63245" +dependencies = [ + "heck 0.4.1", + "itertools 0.12.1", + "proc-macro-crate 2.0.0", + "proc-macro2", + "quote", + "sha3", + "strum 0.24.1", + "syn 2.0.52", + "void", +] + +[[package]] +name = "derive_builder_core_fork_arti" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24c1b715c79be6328caa9a5e1a387a196ea503740f0722ec3dd8f67a9e72314d" +dependencies = [ + "darling 0.14.4", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_fork_arti" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3eae24d595f4d0ecc90a9a5a6d11c2bd8dafe2375ec4a1ec63250e5ade7d228" +dependencies = [ + "derive_builder_macro_fork_arti", +] + +[[package]] +name = "derive_builder_macro_fork_arti" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69887769a2489cd946bf782eb2b1bb2cb7bc88551440c94a765d4f040c08ebf3" +dependencies = [ + "derive_builder_core_fork_arti", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "devimint" +version = "0.4.0-alpha" +dependencies = [ + "anyhow", + "axum 0.7.4", + "bitcoincore-rpc", + "clap", + "fedimint-aead", + "fedimint-api-client", + "fedimint-bitcoind", + "fedimint-build", + "fedimint-cli", "fedimint-client", "fedimint-cln-rpc", "fedimint-core", @@ -1211,10 +1651,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", + "const-oid", "crypto-common", "subtle", ] +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs" version = "5.0.1" @@ -1236,6 +1686,81 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "merlin", + "rand_core", + "serde", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "either" version = "1.10.0" @@ -1261,6 +1786,25 @@ dependencies = [ "winapi", ] +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff 0.13.0", + "generic-array", + "group 0.13.0", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "email_address" version = "0.2.4" @@ -1279,6 +1823,19 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "env_logger" version = "0.10.2" @@ -1371,6 +1928,18 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + [[package]] name = "fastrand" version = "2.0.1" @@ -1414,6 +1983,7 @@ name = "fedimint-api-client" version = "0.4.0-alpha" dependencies = [ "anyhow", + "arti-client", "async-lock", "async-recursion", "async-trait", @@ -1438,6 +2008,7 @@ dependencies = [ "imbl", "itertools 0.12.1", "js-sys", + "jsonrpsee-client-transport", "jsonrpsee-core", "jsonrpsee-types", "jsonrpsee-wasm-client", @@ -1450,21 +2021,24 @@ dependencies = [ "once_cell", "parity-scale-codec", "rand", + "rustls-native-certs", + "rustls-pki-types", "secp256k1 0.27.0", "secp256k1-zkp", "serde", "serde_json", "serdect", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", - "tokio-rustls 0.23.4", + "tokio-rustls 0.25.0", "tokio-test", "tracing", "tracing-subscriber", "url", "wasm-bindgen-futures", + "webpki-roots 0.26.1", ] [[package]] @@ -1574,7 +2148,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tokio-stream", @@ -1645,7 +2219,7 @@ dependencies = [ "serde_json", "serdect", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "test-log", "thiserror", "tokio", @@ -1684,7 +2258,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "tokio", "tracing", ] @@ -1732,7 +2306,7 @@ dependencies = [ "secp256k1 0.24.3", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -1752,7 +2326,7 @@ dependencies = [ "secp256k1 0.24.3", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -1772,7 +2346,7 @@ dependencies = [ "secp256k1 0.24.3", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -1796,7 +2370,7 @@ dependencies = [ "rand", "secp256k1 0.24.3", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "tokio", "tracing", ] @@ -1815,7 +2389,7 @@ dependencies = [ "futures", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -1831,7 +2405,7 @@ dependencies = [ "futures", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -1848,7 +2422,7 @@ dependencies = [ "futures", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -1917,7 +2491,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -1948,7 +2522,7 @@ dependencies = [ "serde-big-array", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2008,7 +2582,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tokio-stream", @@ -2044,7 +2618,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "test-log", "thiserror", "tokio", @@ -2079,7 +2653,7 @@ dependencies = [ "secp256k1 0.24.3", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "tokio", "tracing", ] @@ -2112,7 +2686,7 @@ dependencies = [ "serde", "serde_json", "strum 0.24.1", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2136,9 +2710,9 @@ dependencies = [ "fedimint-core", "fedimint-threshold-crypto", "fedimint-tpe", - "ff", + "ff 0.12.1", "futures", - "group", + "group 0.12.1", "itertools 0.12.1", "lightning-invoice", "rand", @@ -2147,7 +2721,7 @@ dependencies = [ "serde", "serde_json", "strum 0.24.1", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2172,7 +2746,7 @@ dependencies = [ "fedimint-threshold-crypto", "fedimint-tpe", "futures", - "group", + "group 0.12.1", "itertools 0.12.1", "lightning-invoice", "rand", @@ -2180,7 +2754,7 @@ dependencies = [ "serde", "serde_json", "strum 0.24.1", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2278,7 +2852,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -2300,7 +2874,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", ] @@ -2321,7 +2895,7 @@ dependencies = [ "secp256k1 0.24.3", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2384,7 +2958,7 @@ dependencies = [ "serde-big-array", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "test-log", "thiserror", "tokio", @@ -2410,7 +2984,7 @@ dependencies = [ "secp256k1-zkp", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tracing", "tracing-subscriber", @@ -2439,7 +3013,7 @@ dependencies = [ "secp256k1-zkp", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "test-log", "thiserror", "tokio", @@ -2467,14 +3041,14 @@ dependencies = [ "fedimint-tbs", "fedimint-testing", "fedimint-threshold-crypto", - "ff", + "ff 0.12.1", "futures", "rand", "secp256k1 0.24.3", "secp256k1 0.27.0", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "tokio", "tracing", ] @@ -2578,7 +3152,7 @@ dependencies = [ "serde_json", "sha3", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "tar", "tempfile", "test-log", @@ -2600,8 +3174,8 @@ dependencies = [ "bls12_381", "criterion", "fedimint-core", - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "hex", "rand", "rand_chacha", @@ -2654,8 +3228,8 @@ checksum = "dd2930eda59c029045497a7ef03799d01eaba6091a03713bef5366bd79aab423" dependencies = [ "bls12_381", "byteorder", - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "hex_fmt", "log", "pairing", @@ -2695,8 +3269,8 @@ dependencies = [ "bitcoin_hashes 0.11.0", "bls12_381", "fedimint-core", - "ff", - "group", + "ff 0.12.1", + "group 0.12.1", "rand", "rand_chacha", "serde", @@ -2732,7 +3306,7 @@ dependencies = [ "rand", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2761,7 +3335,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2788,7 +3362,7 @@ dependencies = [ "secp256k1 0.24.3", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "test-log", "thiserror", "tokio", @@ -2821,7 +3395,7 @@ dependencies = [ "secp256k1 0.24.3", "serde", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "thiserror", "tokio", "tracing", @@ -2857,7 +3431,7 @@ dependencies = [ "rand", "secp256k1 0.24.3", "strum 0.26.2", - "strum_macros", + "strum_macros 0.26.2", "tokio", "tracing", ] @@ -2947,6 +3521,22 @@ dependencies = [ "subtle", ] +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" + [[package]] name = "filetime" version = "0.2.23" @@ -2975,12 +3565,33 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fluid-let" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "749cff877dc1af878a0b31a41dd221a753634401ea0ef2f87b62d3171522485a" + [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -2999,6 +3610,23 @@ dependencies = [ "fs4", ] +[[package]] +name = "fs-mistrust" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5764b75624acb3ec878488145198a8fed761ca18fe26759d4ac4c7543fd2373a" +dependencies = [ + "derive_builder_fork_arti", + "dirs", + "educe", + "libc", + "once_cell", + "pwd-grp", + "serde", + "thiserror", + "walkdir", +] + [[package]] name = "fs2" version = "0.4.3" @@ -3019,6 +3647,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "funty" version = "2.0.0" @@ -3132,6 +3770,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -3159,6 +3798,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "glob-match" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985c9503b412198aa4197559e9a318524ebc4519c229bfa05a535828c950b9d" + [[package]] name = "gloo-net" version = "0.2.6" @@ -3256,7 +3901,18 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ - "ff", + "ff 0.12.1", + "rand_core", + "subtle", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.0", "rand_core", "subtle", ] @@ -3335,6 +3991,15 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashlink" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692eaaf7f7607518dd3cef090f1474b61edc5301d8012f09579920df68b725ee" +dependencies = [ + "hashbrown 0.14.3", +] + [[package]] name = "hdrhistogram" version = "7.5.4" @@ -3387,6 +4052,24 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "home" version = "0.5.9" @@ -3403,10 +4086,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "848e9c511092e0daa0a35a63e8e6e475a3e8f870741448b9f6028d69b142f18e" dependencies = [ "lazy_static", - "memmap2", + "memmap2 0.5.10", "rustc_version", ] +[[package]] +name = "hostname-validator" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2" + [[package]] name = "http" version = "0.2.12" @@ -3481,6 +4170,16 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "humantime-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +dependencies = [ + "humantime", + "serde", +] + [[package]] name = "hyper" version = "0.14.28" @@ -3590,14 +4289,37 @@ dependencies = [ ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "iana-time-zone" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] [[package]] -name = "idna" -version = "0.5.0" +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ @@ -3689,6 +4411,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -3699,6 +4422,7 @@ checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", "hashbrown 0.14.3", + "serde", ] [[package]] @@ -3717,6 +4441,12 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" +[[package]] +name = "inventory" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" + [[package]] name = "ipnet" version = "2.9.0" @@ -3933,6 +4663,9 @@ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] [[package]] name = "lazycell" @@ -3956,6 +4689,12 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + [[package]] name = "libredox" version = "0.0.1" @@ -3983,6 +4722,16 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "libsqlite3-sys" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f" +dependencies = [ + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.15" @@ -4080,6 +4829,17 @@ dependencies = [ "libc", ] +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "macro_rules_attribute" version = "0.2.0" @@ -4126,6 +4886,27 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + [[package]] name = "mime" version = "0.3.17" @@ -4184,6 +4965,24 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "nix" version = "0.28.0" @@ -4216,12 +5015,60 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.18" @@ -4229,6 +5076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -4241,6 +5089,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "object" version = "0.32.2" @@ -4268,6 +5137,50 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "openssl" +version = "0.10.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +dependencies = [ + "bitflags 2.4.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "opentelemetry" version = "0.22.0" @@ -4354,13 +5267,51 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p384" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p521" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" +dependencies = [ + "base16ct", + "ecdsa", + "elliptic-curve", + "primeorder", + "rand_core", + "sha2", +] + [[package]] name = "pairing" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" dependencies = [ - "group", + "group 0.12.1", ] [[package]] @@ -4383,7 +5334,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -4435,6 +5386,12 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + [[package]] name = "pem" version = "3.0.3" @@ -4445,6 +5402,15 @@ dependencies = [ "serde", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -4461,6 +5427,48 @@ dependencies = [ "indexmap 2.2.5", ] +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" version = "1.1.5" @@ -4493,12 +5501,39 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + [[package]] name = "plotters" version = "0.3.5" @@ -4527,6 +5562,21 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "postage" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af3fb618632874fb76937c2361a7f22afd393c982a2165595407edc75b06d3c1" +dependencies = [ + "atomic", + "crossbeam-queue", + "futures", + "parking_lot", + "pin-project", + "static_assertions", + "thiserror", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -4549,14 +5599,51 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "priority-queue" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bda9164fe05bc9225752d54aae413343c36f684380005398a6a8fde95fe785" +dependencies = [ + "autocfg", + "indexmap 1.9.3", +] + [[package]] name = "proc-macro-crate" -version = "2.0.2" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "toml_datetime", - "toml_edit", + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", ] [[package]] @@ -4668,7 +5755,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] -name = "quote" +name = "pwd-grp" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6955c41fd7e4283bdf6ff3e7218b7e3f8ef24c4236b31d22be050f4cfd5e2a2c" +dependencies = [ + "derive-adhoc 0.7.3", + "libc", + "paste", + "thiserror", +] + +[[package]] +name = "quote" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" @@ -4900,6 +5999,22 @@ dependencies = [ "winreg", ] +[[package]] +name = "retry-error" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7dea0c97723329951a3ed41ce0de8b8e389de3de4b815fb86ff57f6ab868f04" + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "ring" version = "0.16.20" @@ -4946,6 +6061,42 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" +[[package]] +name = "rsa" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +dependencies = [ + "const-oid", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "sha2", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rusqlite" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae" +dependencies = [ + "bitflags 2.4.2", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", + "time", +] + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -5018,6 +6169,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +dependencies = [ + "openssl-probe", + "rustls-pemfile 2.1.1", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -5076,6 +6240,19 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +[[package]] +name = "safelog" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea892f8598a3682b6ed10ed9d8522b50366a792953eda37e1d9ddf01e183e3f" +dependencies = [ + "derive_more", + "educe", + "either", + "fluid-let", + "thiserror", +] + [[package]] name = "same-file" version = "1.0.6" @@ -5085,6 +6262,25 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "sanitize-filename" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ed72fbaf78e6f2d41744923916966c4fbe3d7c74e3037a8ee482f1115572603" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "schannel" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -5107,6 +6303,20 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "secp256k1" version = "0.24.3" @@ -5171,6 +6381,29 @@ dependencies = [ "secp256k1-sys 0.6.1", ] +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "1.0.22" @@ -5201,6 +6434,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float 2.10.1", + "serde", +] + [[package]] name = "serde_derive" version = "1.0.197" @@ -5212,6 +6455,15 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "serde_ignored" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" +dependencies = [ + "serde", +] + [[package]] name = "serde_json" version = "1.0.116" @@ -5234,6 +6486,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -5246,6 +6507,36 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +dependencies = [ + "base64 0.21.7", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.5", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +dependencies = [ + "darling 0.20.8", + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "serdect" version = "0.2.0" @@ -5269,6 +6560,28 @@ dependencies = [ "opaque-debug", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sha3" version = "0.10.8" @@ -5288,6 +6601,15 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shellexpand" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" +dependencies = [ + "dirs", +] + [[package]] name = "shlex" version = "1.3.0" @@ -5303,6 +6625,34 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "slab" version = "0.4.9" @@ -5312,6 +6662,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.13.1" @@ -5356,6 +6715,63 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ssh-cipher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +dependencies = [ + "cipher", + "ssh-encoding", +] + +[[package]] +name = "ssh-encoding" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" +dependencies = [ + "base64ct", + "pem-rfc7468", + "sha2", +] + +[[package]] +name = "ssh-key" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca9b366a80cf18bb6406f4cf4d10aebfb46140a8c0c33f666a144c5c76ecbafc" +dependencies = [ + "p256", + "p384", + "p521", + "rand_core", + "rsa", + "sec1", + "sha2", + "signature", + "ssh-cipher", + "ssh-encoding", + "subtle", + "zeroize", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "strsim" version = "0.10.0" @@ -5373,12 +6789,31 @@ name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] [[package]] name = "strum" version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +dependencies = [ + "strum_macros 0.26.2", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] [[package]] name = "strum_macros" @@ -5599,6 +7034,15 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece" +dependencies = [ + "displaydoc", +] + [[package]] name = "tinytemplate" version = "1.2.1" @@ -5749,21 +7193,71 @@ dependencies = [ "tracing", ] +[[package]] +name = "toml" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.9", +] + [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.2.5", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.2.5", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.5", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +dependencies = [ + "indexmap 2.2.5", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.6", ] [[package]] @@ -5852,6 +7346,725 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "tor-async-utils" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd81ab26694008630c7be8e14faf5bd1d78b177dd41be694d132d695a315556b" +dependencies = [ + "futures", + "pin-project", + "postage", + "thiserror", + "void", +] + +[[package]] +name = "tor-basic-utils" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2bfdcdf0279b4ba2ef744406cb4496403677c8854c306ccbf758eb378defd3" +dependencies = [ + "hex", + "libc", + "paste", + "rand", + "rand_chacha", + "slab", + "thiserror", +] + +[[package]] +name = "tor-bytes" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7538b9751dfe24c67977378dfd79ab21e4cc99641549fd12d9a8ba98a5752ee2" +dependencies = [ + "bytes", + "digest 0.10.7", + "educe", + "getrandom", + "thiserror", + "tor-error", + "tor-llcrypto", + "zeroize", +] + +[[package]] +name = "tor-cell" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b60d58a4f742830cf2e94b83f157e7c1ee3895bd55f912eede58c25835b5fb9" +dependencies = [ + "bitflags 2.4.2", + "bytes", + "caret", + "derive_more", + "educe", + "paste", + "rand", + "smallvec", + "thiserror", + "tor-basic-utils", + "tor-bytes", + "tor-cert", + "tor-error", + "tor-linkspec", + "tor-llcrypto", + "tor-units", +] + +[[package]] +name = "tor-cert" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87bb9b74a5f5402768cee442147641d39ca2d0cba459f52fcca03cd8d978bd0d" +dependencies = [ + "caret", + "derive_more", + "digest 0.10.7", + "thiserror", + "tor-bytes", + "tor-checkable", + "tor-llcrypto", +] + +[[package]] +name = "tor-chanmgr" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30317ba968577ef37743d0b65c49816464de3f8642b81dea62206b7a86f4fc2" +dependencies = [ + "async-trait", + "derive_builder_fork_arti", + "derive_more", + "educe", + "futures", + "postage", + "rand", + "safelog", + "serde", + "thiserror", + "tor-async-utils", + "tor-basic-utils", + "tor-cell", + "tor-config", + "tor-error", + "tor-linkspec", + "tor-llcrypto", + "tor-netdir", + "tor-proto", + "tor-rtcompat", + "tor-socksproto", + "tor-units", + "tracing", + "void", +] + +[[package]] +name = "tor-checkable" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecb84b29d9a9500580cee42625a7ced01f7a7c45933c8ee81cd49ba10de2947" +dependencies = [ + "humantime", + "signature", + "thiserror", + "tor-llcrypto", +] + +[[package]] +name = "tor-circmgr" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "281cf6ef32c8800425aa219747c73a8c939a40038a4f4dbaefa9559892528093" +dependencies = [ + "amplify", + "async-trait", + "bounded-vec-deque", + "cfg-if", + "derive_builder_fork_arti", + "derive_more", + "downcast-rs", + "dyn-clone", + "educe", + "futures", + "humantime-serde", + "itertools 0.12.1", + "once_cell", + "pin-project", + "rand", + "retry-error", + "safelog", + "serde", + "static_assertions", + "thiserror", + "tor-async-utils", + "tor-basic-utils", + "tor-chanmgr", + "tor-config", + "tor-error", + "tor-guardmgr", + "tor-linkspec", + "tor-netdir", + "tor-netdoc", + "tor-persist", + "tor-proto", + "tor-protover", + "tor-relay-selection", + "tor-rtcompat", + "tracing", + "void", + "weak-table", +] + +[[package]] +name = "tor-config" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df4e50e84389aeb81acf672f7dac9389a76d21505089db5cd3ae8e7d59374b2f" +dependencies = [ + "config", + "derive-adhoc 0.8.4", + "derive_builder_fork_arti", + "directories", + "educe", + "either", + "fs-mistrust", + "itertools 0.12.1", + "once_cell", + "paste", + "regex", + "serde", + "serde-value", + "serde_ignored", + "shellexpand", + "strum 0.26.2", + "thiserror", + "toml", + "tor-basic-utils", + "tor-error", + "tracing", + "void", +] + +[[package]] +name = "tor-consdiff" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91726266349ba3f10456c0bf0fb07fd0e6c3a344178d869eae93219ff78b54bb" +dependencies = [ + "digest 0.10.7", + "hex", + "thiserror", + "tor-llcrypto", +] + +[[package]] +name = "tor-dirclient" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e102c3747d09963122edd07458c68c56e18034869102c63a6a37a0620c7e6f" +dependencies = [ + "async-compression", + "base64ct", + "derive_more", + "futures", + "hex", + "http 1.1.0", + "httparse", + "httpdate", + "itertools 0.12.1", + "memchr", + "thiserror", + "tor-circmgr", + "tor-error", + "tor-linkspec", + "tor-llcrypto", + "tor-netdoc", + "tor-proto", + "tor-rtcompat", + "tracing", +] + +[[package]] +name = "tor-dirmgr" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90293b08ace33a5a49992eab54fa425c59d0fca7784865d9613ebaccdcaf630d" +dependencies = [ + "async-trait", + "base64ct", + "derive_builder_fork_arti", + "derive_more", + "digest 0.10.7", + "educe", + "event-listener 5.2.0", + "fs-mistrust", + "fslock", + "futures", + "hex", + "humantime", + "humantime-serde", + "itertools 0.12.1", + "memmap2 0.9.4", + "once_cell", + "paste", + "postage", + "rand", + "retry-error", + "rusqlite", + "safelog", + "scopeguard", + "serde", + "signature", + "strum 0.26.2", + "thiserror", + "time", + "tor-async-utils", + "tor-basic-utils", + "tor-checkable", + "tor-circmgr", + "tor-config", + "tor-consdiff", + "tor-dirclient", + "tor-error", + "tor-guardmgr", + "tor-llcrypto", + "tor-netdir", + "tor-netdoc", + "tor-persist", + "tor-proto", + "tor-rtcompat", + "tracing", +] + +[[package]] +name = "tor-error" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad73603da0675c5f16c8ee9f6e3349ad46c6645bd1653d59cc43fe2e5656234" +dependencies = [ + "backtrace", + "derive_more", + "futures", + "once_cell", + "paste", + "retry-error", + "static_assertions", + "strum 0.26.2", + "thiserror", + "tracing", +] + +[[package]] +name = "tor-guardmgr" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6821b8054aff8d0bf8d6f9004fc98487d5122237715704e448f03306ffbebf62" +dependencies = [ + "amplify", + "base64ct", + "derive_builder_fork_arti", + "derive_more", + "dyn-clone", + "educe", + "futures", + "humantime", + "humantime-serde", + "itertools 0.12.1", + "num_enum", + "pin-project", + "postage", + "rand", + "safelog", + "serde", + "strum 0.26.2", + "thiserror", + "tor-async-utils", + "tor-basic-utils", + "tor-config", + "tor-error", + "tor-linkspec", + "tor-llcrypto", + "tor-netdir", + "tor-netdoc", + "tor-persist", + "tor-proto", + "tor-relay-selection", + "tor-rtcompat", + "tor-units", + "tracing", +] + +[[package]] +name = "tor-hscrypto" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b0c899ce91d6fe6461f646d1e3c8d421dd5c8b570c0799540c4d4a2de80013" +dependencies = [ + "data-encoding", + "derive_more", + "digest 0.10.7", + "itertools 0.12.1", + "paste", + "rand", + "rand_core", + "safelog", + "serde", + "signature", + "subtle", + "thiserror", + "tor-basic-utils", + "tor-bytes", + "tor-error", + "tor-llcrypto", + "tor-units", +] + +[[package]] +name = "tor-keymgr" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "907f80483a71d956f1654efbe994acea1082bf9517092af13a69f8d9f6423574" +dependencies = [ + "amplify", + "arrayvec", + "derive-adhoc 0.8.4", + "derive_builder_fork_arti", + "derive_more", + "downcast-rs", + "dyn-clone", + "fs-mistrust", + "glob-match", + "humantime", + "inventory", + "itertools 0.12.1", + "paste", + "rand", + "serde", + "ssh-key", + "thiserror", + "tor-basic-utils", + "tor-config", + "tor-error", + "tor-hscrypto", + "tor-llcrypto", + "tor-persist", + "walkdir", + "zeroize", +] + +[[package]] +name = "tor-linkspec" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7cb1a138572c49d4c7f3d5810801b35f3ade7450b9679161e8336c5deb04f2" +dependencies = [ + "base64ct", + "by_address", + "caret", + "cfg-if", + "derive_builder_fork_arti", + "derive_more", + "educe", + "hex", + "itertools 0.12.1", + "safelog", + "serde", + "serde_with", + "strum 0.26.2", + "thiserror", + "tor-basic-utils", + "tor-bytes", + "tor-config", + "tor-llcrypto", + "tor-protover", +] + +[[package]] +name = "tor-llcrypto" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca144066d80aabf43ff5d5ad2796de70d6eac26339fcfc4af38a0de8b27a1990" +dependencies = [ + "aes", + "base64ct", + "ctr", + "curve25519-dalek", + "derive_more", + "digest 0.10.7", + "ed25519-dalek", + "educe", + "getrandom", + "hex", + "rand_core", + "rsa", + "safelog", + "serde", + "sha1", + "sha2", + "sha3", + "signature", + "simple_asn1", + "subtle", + "thiserror", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "tor-log-ratelim" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab79604449b22d8dd9ff16a1a78a4ef98e606a1e5aa899c242528dffe42c1321" +dependencies = [ + "futures", + "humantime", + "once_cell", + "thiserror", + "tor-error", + "tor-rtcompat", + "tracing", + "weak-table", +] + +[[package]] +name = "tor-netdir" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be3dbedfe6e5d983ca3dc39ef699c0da7a3192f51da7ed466a2d7566389259b7" +dependencies = [ + "bitflags 2.4.2", + "derive_builder_fork_arti", + "derive_more", + "futures", + "humantime", + "itertools 0.12.1", + "num_enum", + "rand", + "serde", + "static_assertions", + "strum 0.26.2", + "thiserror", + "tor-basic-utils", + "tor-checkable", + "tor-config", + "tor-error", + "tor-linkspec", + "tor-llcrypto", + "tor-netdoc", + "tor-protover", + "tor-units", + "tracing", + "typed-index-collections", +] + +[[package]] +name = "tor-netdoc" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20047c9f3104723d8966552ec4bd4c38057b5a0857705a6bbecedafb4cc0aef" +dependencies = [ + "amplify", + "base64ct", + "bitflags 2.4.2", + "cipher", + "derive_builder_fork_arti", + "derive_more", + "digest 0.10.7", + "educe", + "hex", + "humantime", + "itertools 0.12.1", + "once_cell", + "phf", + "serde", + "serde_with", + "signature", + "smallvec", + "subtle", + "thiserror", + "time", + "tinystr", + "tor-basic-utils", + "tor-bytes", + "tor-cell", + "tor-cert", + "tor-checkable", + "tor-error", + "tor-llcrypto", + "tor-protover", + "weak-table", + "zeroize", +] + +[[package]] +name = "tor-persist" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7401ddb8c6a9ed71adeab421a20b786196409f02f389b415bb56041a5b0c80d4" +dependencies = [ + "derive-adhoc 0.8.4", + "derive_more", + "filetime", + "fs-mistrust", + "fslock", + "itertools 0.12.1", + "paste", + "sanitize-filename", + "serde", + "serde_json", + "thiserror", + "tor-basic-utils", + "tor-error", + "tracing", +] + +[[package]] +name = "tor-proto" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81e852aac27c0b8822ff6a1c5a32b24c7f05f1199e20c84caf34fdd4207139b2" +dependencies = [ + "asynchronous-codec", + "bitvec", + "bytes", + "cipher", + "coarsetime", + "derive_builder_fork_arti", + "derive_more", + "digest 0.10.7", + "educe", + "futures", + "hkdf", + "hmac", + "pin-project", + "rand", + "rand_core", + "safelog", + "subtle", + "thiserror", + "tokio", + "tokio-util", + "tor-async-utils", + "tor-basic-utils", + "tor-bytes", + "tor-cell", + "tor-cert", + "tor-checkable", + "tor-config", + "tor-error", + "tor-linkspec", + "tor-llcrypto", + "tor-log-ratelim", + "tor-protover", + "tor-rtcompat", + "tor-rtmock", + "tor-units", + "tracing", + "typenum", + "void", + "zeroize", +] + +[[package]] +name = "tor-protover" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c21ab6d4dd884741bf51373b7146cf9dee0be69172ef5bf20ff2dc0561bae9" +dependencies = [ + "caret", + "thiserror", +] + +[[package]] +name = "tor-relay-selection" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd9d5ca40722685f05598b8f67c7033923493d0e38e83f04e1e69d3b21935dd" +dependencies = [ + "derive_more", + "rand", + "serde", + "tor-basic-utils", + "tor-linkspec", + "tor-netdir", + "tor-netdoc", +] + +[[package]] +name = "tor-rtcompat" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9974851ee6b7ba68a955cb67b56ac2164b4c7b520feb81533745f7ca119ed898" +dependencies = [ + "async-native-tls", + "async-trait", + "async_executors", + "coarsetime", + "derive_more", + "educe", + "futures", + "native-tls", + "paste", + "pin-project", + "thiserror", + "tokio", + "tokio-util", +] + +[[package]] +name = "tor-rtmock" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "576fe55ddf37e640ed2a020d81e3a4bc847551b6142640078b4a887415be2c6d" +dependencies = [ + "amplify", + "async-trait", + "backtrace", + "derive-adhoc 0.8.4", + "derive_more", + "educe", + "futures", + "humantime", + "itertools 0.12.1", + "pin-project", + "priority-queue", + "slotmap", + "strum 0.26.2", + "thiserror", + "tor-async-utils", + "tor-error", + "tor-rtcompat", + "tracing", + "tracing-test", + "void", +] + +[[package]] +name = "tor-socksproto" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3135cd3c23683a64cec756d960b72dae12ada350b0e825bfe5fcda811880ae76" +dependencies = [ + "caret", + "subtle", + "thiserror", + "tor-bytes", + "tor-error", +] + +[[package]] +name = "tor-units" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab81d120789c8639ceb374d23d180cbd4856e68458061400ecd9b6159bb6ca31" +dependencies = [ + "derive_more", + "thiserror", +] + [[package]] name = "tower" version = "0.4.13" @@ -6022,6 +8235,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typed-index-collections" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183496e014253d15abbe6235677b1392dba2d40524c88938991226baa38ac7c4" + [[package]] name = "typenum" version = "1.17.0" @@ -6107,7 +8326,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55591299b7007f551ed1eb79a684af7672c19c3193fb9e0a31936987bb2438ec" dependencies = [ - "darling", + "darling 0.20.8", "once_cell", "proc-macro-error", "proc-macro2", @@ -6133,6 +8352,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "walkdir" version = "2.5.0" @@ -6158,6 +8383,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasix" +version = "0.12.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fbb4ef9bbca0c1170e0b00dd28abc9e3b68669821600cad1caaed606583c6d" +dependencies = [ + "wasi", +] + [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -6249,6 +8483,12 @@ dependencies = [ "syn 2.0.52", ] +[[package]] +name = "weak-table" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549" + [[package]] name = "web-sys" version = "0.3.66" @@ -6346,6 +8586,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.4", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -6487,6 +8736,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -6506,6 +8764,18 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + [[package]] name = "xattr" version = "1.3.1" @@ -6517,6 +8787,15 @@ dependencies = [ "rustix", ] +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + [[package]] name = "yasna" version = "0.5.2" @@ -6551,12 +8830,44 @@ name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + +[[package]] +name = "zstd" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" +dependencies = [ + "zstd-sys", +] [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", "pkg-config", diff --git a/fedimint-api-client/Cargo.toml b/fedimint-api-client/Cargo.toml index 6a6a76e88e8..45bf56735f0 100644 --- a/fedimint-api-client/Cargo.toml +++ b/fedimint-api-client/Cargo.toml @@ -56,11 +56,17 @@ bitvec = "1.0.1" parity-scale-codec = { version = "3.6.9", features = ["derive"] } imbl = "2.0.3" backon = "=0.4.3" # don't upgrade unless really needed +arti-client = "0.17.0" +jsonrpsee-client-transport = { version = "0.22.4" } +rustls-native-certs = { version = "0.7" } +webpki-roots = { version = "0.26" } +tokio-rustls = { version = "0.25" } +rustls-pki-types = { version = "1" } [target.'cfg(not(target_family = "wasm"))'.dependencies] jsonrpsee-ws-client = { version = "0.22.4", features = ["webpki-tls"], default-features = false } tokio = { version = "1.36.0", features = ["full", "tracing"] } -tokio-rustls = { workspace = true } +# tokio-rustls = { workspace = true } [target.'cfg(target_family = "wasm")'.dependencies] jsonrpsee-wasm-client = { version = "0.22.2", default-features = false } diff --git a/fedimint-api-client/src/api.rs b/fedimint-api-client/src/api.rs index c2cc56dd9a8..0ac0377f0ba 100644 --- a/fedimint-api-client/src/api.rs +++ b/fedimint-api-client/src/api.rs @@ -1,13 +1,15 @@ use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::fmt::{self, Debug, Display}; +use std::net::SocketAddr; use std::num::NonZeroUsize; use std::ops::Add; use std::pin::Pin; use std::sync::Arc; use std::time::{Duration, SystemTime}; -use std::{cmp, result}; +use std::{cmp, io, result}; use anyhow::anyhow; +use arti_client::{TorClient, TorClientConfig}; use bitcoin::hashes::sha256; use bitcoin::secp256k1; use fedimint_core::admin_client::{ @@ -50,7 +52,8 @@ use fedimint_core::{ use fedimint_logging::LOG_CLIENT_NET_API; use futures::stream::FuturesUnordered; use futures::{Future, StreamExt}; -use jsonrpsee_core::client::{ClientT, Error as JsonRpcClientError}; +use jsonrpsee_client_transport::ws::{Mode, WsHandshakeError}; +use jsonrpsee_core::client::{CertificateStore, ClientT, Error as JsonRpcClientError}; #[cfg(target_family = "wasm")] use jsonrpsee_wasm_client::{Client as WsClient, WasmClientBuilder as WsClientBuilder}; #[cfg(not(target_family = "wasm"))] @@ -60,6 +63,7 @@ use serde_json::Value; use thiserror::Error; use tokio::sync::{Mutex, OnceCell, RwLock}; use tracing::{debug, error, instrument, trace, warn}; +use url::Url; use crate::query::{ DiscoverApiVersionSet, QueryStep, QueryStrategy, ThresholdConsensus, UnionResponsesSingle, @@ -1300,24 +1304,106 @@ impl IRawFederationApi for WsFederationApi result::Result; + async fn connect_anonymized(url: &SafeUrl) -> result::Result; fn is_connected(&self) -> bool; } #[apply(async_trait_maybe_send!)] impl JsonRpcClient for WsClient { async fn connect(url: &SafeUrl) -> result::Result { - #[cfg(not(target_family = "wasm"))] - return WsClientBuilder::default() - .use_webpki_rustls() - .max_concurrent_requests(u16::MAX as usize) - .build(url.as_str()) - .await; + // #[cfg(not(target_family = "wasm"))] + // return WsClientBuilder::default() + // .use_webpki_rustls() + // .max_concurrent_requests(u16::MAX as usize) + // .build(url.as_str()) + // .await; + + // #[cfg(target_family = "wasm")] + // WsClientBuilder::default() + // .max_concurrent_requests(u16::MAX as usize) + // .build(url.as_str()) + // .await + + // NOTE: currently short-circuito to use Tor + Self::connect_anonymized(url).await + } + + async fn connect_anonymized(url: &SafeUrl) -> result::Result { + // TODO: (@leonardo) should extract this to an external function + let tor_config = TorClientConfig::default(); // TODO: (@leonardo) should we use the default one ? + let tor_client = TorClient::create_bootstrapped(tor_config).await.unwrap(); // TODO: (@leonardo) how to handle the arti_client::Error + + // TODO: (@leonardo) should we parse to jsonrpsee's Target ? + // TODO: (@leonardo) how to handle the arti_client::Error ? + let anonymized_stream = tor_client.connect(url.as_str()).await.unwrap(); + + // TODO: (@leonardo) do we have any other way to the Url instead of using the + // `.to_unsafe()` ? + let mut unsafe_url = url.clone().to_unsafe(); + let mut target: Target = unsafe_url + .try_into() + .map_err(|e: WsHandshakeError| JsonRpcClientError::Transport(e.into()))?; + + // TODO: (@leonardo) should extract to an external function + let mut connector = match target._mode { + Mode::Tls => { + #[cfg(not(target_family = "wasm"))] + let certificate_store = CertificateStore::WebPki; + + #[cfg(target_family = "wasm")] + let certificate_store = CertificateStore::Native; + + let connector = build_tls_config(&certificate_store) + .map_err(|e| JsonRpcClientError::Transport(e.into()))?; + + Some(connector) + } + Mode::Plain => None, + }; - #[cfg(target_family = "wasm")] - WsClientBuilder::default() - .max_concurrent_requests(u16::MAX as usize) - .build(url.as_str()) - .await + match connector { + Some(connector) => { + let host = target.host.as_str(); + let server_name: rustls_pki_types::ServerName = host + .try_into() + .map_err(|err1| { + WsHandshakeError::Url(format!("Invalid host: {host} {err1:?}").into()) + }) + .map_err(|err2| JsonRpcClientError::Transport(err2.into()))?; + let anonymized_tls_stream = connector + .connect(server_name.to_owned(), anonymized_stream) + .await + .map_err(|e| JsonRpcClientError::Transport(e.into()))?; + + #[cfg(not(target_family = "wasm"))] + return WsClientBuilder::default() + .use_webpki_rustls() + .max_concurrent_requests(u16::MAX as usize) + .build_with_stream(url.as_str(), anonymized_tls_stream) + .await; + + #[cfg(target_family = "wasm")] + return WsClientBuilder::default() + .max_concurrent_requests(u16::MAX as usize) + .build_with_stream(url.as_str(), anonymized_tls_stream) + .await; + } + None => { + let ws_client_builder = WsClientBuilder::default(); + #[cfg(not(target_family = "wasm"))] + return WsClientBuilder::default() + .use_webpki_rustls() + .max_concurrent_requests(u16::MAX as usize) + .build_with_stream(url.as_str(), anonymized_stream) + .await; + + #[cfg(target_family = "wasm")] + return WsClientBuilder::default() + .max_concurrent_requests(u16::MAX as usize) + .build_with_stream(url.as_str(), anonymized_stream) + .await; + } + }; } fn is_connected(&self) -> bool { @@ -1325,6 +1411,105 @@ impl JsonRpcClient for WsClient { } } +/// Represents a verified remote WebSocket address. +#[derive(Debug, Clone)] +pub struct Target { + /// Socket addresses resolved the host name. + sockaddrs: Vec, + /// The host name (domain or IP address). + host: String, + /// The Host request header specifies the host and port number of the server + /// to which the request is being sent. + host_header: String, + /// WebSocket stream mode, see [`Mode`] for further documentation. + _mode: Mode, + /// The path and query parts from an URL. + path_and_query: String, +} + +impl TryFrom for Target { + type Error = WsHandshakeError; + + fn try_from(url: Url) -> Result { + let _mode = match url.scheme() { + "ws" => Mode::Plain, + "wss" => Mode::Tls, + invalid_scheme => { + let err = format!("`{invalid_scheme}` not supported, expects 'ws' or 'wss'"); + let err = format!("`{invalid_scheme}` not supported, expects 'ws' ('wss' requires the tls feature)"); + return Err(WsHandshakeError::Url(err.into())); + } + }; + let host = url + .host_str() + .map(ToOwned::to_owned) + .ok_or_else(|| WsHandshakeError::Url("Invalid host".into()))?; + + let mut path_and_query = url.path().to_owned(); + if let Some(query) = url.query() { + path_and_query.push('?'); + path_and_query.push_str(query); + } + + let sockaddrs = url + .socket_addrs(|| None) + .map_err(WsHandshakeError::ResolutionFailed)?; + Ok(Self { + sockaddrs, + host, + host_header: url.authority().to_string(), + _mode, + path_and_query: path_and_query.to_string(), + }) + } +} + +// TODO: (@leonardo) should this be refactored to use tokio-rusttls ? +// NOTE: this function has been extracted from jsonrpsee-ws-client-transport for +// now +fn build_tls_config( + cert_store: &CertificateStore, +) -> Result { + use tokio_rustls::rustls; + + let mut roots = rustls::RootCertStore::empty(); + + match cert_store { + #[cfg(target_family = "wasm")] + CertificateStore::Native => { + let mut first_error = None; + let certs: Vec> = rustls_native_certs::load_native_certs() + .map_err(WsHandshakeError::CertificateStore)?; + for cert in certs { + if let Err(err) = roots.add(cert) { + first_error = first_error + .or_else(|| Some(io::Error::new(io::ErrorKind::InvalidData, err))); + } + } + if roots.is_empty() { + let err = first_error.unwrap_or_else(|| { + io::Error::new(io::ErrorKind::NotFound, "No valid certificate found") + }); + return Err(WsHandshakeError::CertificateStore(err)); + } + } + #[cfg(not(target_family = "wasm"))] + CertificateStore::WebPki => { + roots.extend(webpki_roots::TLS_SERVER_ROOTS.iter().cloned()); + } + _ => { + let err = io::Error::new(io::ErrorKind::NotFound, "Invalid certificate store"); + return Err(WsHandshakeError::CertificateStore(err)); + } + }; + + let config = rustls::ClientConfig::builder() + .with_root_certificates(roots) + .with_no_client_auth(); + + Ok(std::sync::Arc::new(config).into()) +} + impl WsFederationApi { /// Creates a new API client pub fn new(peers: Vec<(PeerId, SafeUrl)>) -> Self { @@ -1533,6 +1718,11 @@ mod tests { async fn connect(_url: &SafeUrl) -> Result { Ok(Self(C::connect().await?)) } + + // TODO: (@leonardo) fix the implementation for anonymized connections + async fn connect_anonymized(_url: &SafeUrl) -> Result { + Ok(Self(C::connect().await?)) + } } #[apply(async_trait_maybe_send!)] diff --git a/misc/git-hooks/pre-commit b/misc/git-hooks/pre-commit index 29aef59312b..338a12108bf 100755 --- a/misc/git-hooks/pre-commit +++ b/misc/git-hooks/pre-commit @@ -75,12 +75,13 @@ function check_check_forbidden_dependencies() { return 1 fi done - find ./ -name Cargo.lock | while read -r cargo_lock ; do - if grep -E "openssl" "$cargo_lock" >&2 ; then - >&2 echo "$cargo_lock must not depend on openssl" - return 1 - fi - done + # TODO: (@leonardo) how to remove the dependency on openssl + # find ./ -name Cargo.lock | while read -r cargo_lock ; do + # if grep -E "openssl" "$cargo_lock" >&2 ; then + # >&2 echo "$cargo_lock must not depend on openssl" + # return 1 + # fi + # done } export -f check_check_forbidden_dependencies