diff --git a/Cargo.lock b/Cargo.lock index 5c82ffc..4a7ba32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "adler2" version = "2.0.1" @@ -30,6 +45,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "age" version = "0.11.1" @@ -282,7 +311,7 @@ dependencies = [ "cfg-if 1.0.4", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "educe", "fs-mistrust", "futures", @@ -447,6 +476,15 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "atomic-polyfill" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -545,6 +583,21 @@ dependencies = [ "tower-service", ] +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.4", + "libc", + "miniz_oxide 0.7.4", + "object", + "rustc-demangle", +] + [[package]] name = "base16ct" version = "0.2.0" @@ -743,6 +796,15 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "blake2b_simd" version = "1.0.3" @@ -1120,7 +1182,7 @@ version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.111", @@ -1234,6 +1296,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "const-crc32-nostd" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808ac43170e95b11dd23d78aa9eaac5bea45776a602955552c4e833f3f0f823d" + [[package]] name = "const-oid" version = "0.9.6" @@ -1438,6 +1506,12 @@ dependencies = [ "itertools 0.13.0", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -1490,7 +1564,7 @@ dependencies = [ "bitflags 2.10.0", "crossterm_winapi", "futures-core", - "mio", + "mio 1.1.0", "parking_lot", "rustix 0.38.44", "signal-hook", @@ -1532,6 +1606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -1564,6 +1639,7 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", + "rand_core 0.6.4", "rustc_version", "subtle", "zeroize", @@ -1700,6 +1776,12 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +[[package]] +name = "debugless-unwrap" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f400d0750c0c069e8493f2256cb4da6f604b6d2eeb69a0ca8863acde352f8400" + [[package]] name = "der" version = "0.7.10" @@ -1742,7 +1824,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d308ebe4b10924331bd079044b418da7b227d724d3e2408567a47ad7c3da2a0" dependencies = [ "derive-deftly-macros", - "heck", + "heck 0.5.0", ] [[package]] @@ -1751,7 +1833,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd5f2b7218a51c827a11d22d1439b598121fac94bf9b99452e4afffe512d78c9" dependencies = [ - "heck", + "heck 0.5.0", "indexmap 2.12.1", "itertools 0.14.0", "proc-macro-crate", @@ -1763,6 +1845,17 @@ dependencies = [ "void", ] +[[package]] +name = "derive-getters" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74ef43543e701c01ad77d3a5922755c6a1d71b22d942cb8042be4994b380caff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "derive_builder_core_fork_arti" version = "0.11.2" @@ -1794,6 +1887,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "derive_more" version = "2.0.1" @@ -1845,7 +1949,16 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ - "dirs-sys", + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", ] [[package]] @@ -1854,7 +1967,19 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys", + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.4.6", + "windows-sys 0.48.0", ] [[package]] @@ -1865,7 +1990,7 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.5.2", "windows-sys 0.61.2", ] @@ -2141,12 +2266,22 @@ dependencies = [ "bit_field", "half", "lebe", - "miniz_oxide", + "miniz_oxide 0.8.9", "rayon-core", "smallvec", "zune-inflate", ] +[[package]] +name = "eyre" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "f4jumble" version = "0.1.1" @@ -2272,7 +2407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -2364,6 +2499,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + [[package]] name = "fpe" version = "0.6.1" @@ -2378,6 +2522,90 @@ dependencies = [ "num-traits", ] +[[package]] +name = "frost-client" +version = "0.1.0" +source = "git+https://github.com/ZcashFoundation/frost-tools.git?rev=7ae6954e45d5bb5f2c28cf13aabeee3fbff37e21#7ae6954e45d5bb5f2c28cf13aabeee3fbff37e21" +dependencies = [ + "async-trait", + "bech32 0.11.0", + "clap", + "dirs 5.0.1", + "eyre", + "frost-core", + "frost-ed25519", + "frost-rerandomized", + "hex", + "itertools 0.14.0", + "message-io", + "postcard", + "rand 0.8.5", + "reddsa 0.5.1 (git+https://github.com/ZcashFoundation/reddsa.git?rev=ed49e9ca0699a6450f6d4a9fe62ff168f5ea1ead)", + "reqwest", + "rpassword", + "serde", + "serde_json", + "serdect 0.3.0", + "snow", + "stable-eyre", + "tempfile", + "thiserror 2.0.17", + "tokio", + "toml 0.8.23", + "uuid", + "xeddsa", + "zeroize", +] + +[[package]] +name = "frost-core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2619366c227233c0f817ae01156bd21b8cf74d2bd96cbe0889f4c2e266724e44" +dependencies = [ + "byteorder", + "const-crc32-nostd", + "debugless-unwrap", + "derive-getters", + "document-features", + "hex", + "itertools 0.14.0", + "postcard", + "rand_core 0.6.4", + "serde", + "serdect 0.2.0", + "thiserror 2.0.17", + "visibility", + "zeroize", +] + +[[package]] +name = "frost-ed25519" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73eb5fa9311d33450c2320199ad1663b5af7a50061d9627d2e0dc776f0acb27" +dependencies = [ + "curve25519-dalek", + "document-features", + "frost-core", + "frost-rerandomized", + "rand_core 0.6.4", + "sha2 0.10.9", +] + +[[package]] +name = "frost-rerandomized" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c5eb1ea58c0250b7ce834337f7b19e0417686d14ffc7f626137dea9149762d4" +dependencies = [ + "derive-getters", + "document-features", + "frost-core", + "hex", + "rand_core 0.6.4", +] + [[package]] name = "fs-mistrust" version = "0.12.0" @@ -2385,7 +2613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a157b06319bb4868718fd20177a0d3373d465e429d89cd0ee493d9f5918902" dependencies = [ "derive_builder_fork_arti", - "dirs", + "dirs 6.0.0", "libc", "pwd-grp", "serde", @@ -2587,6 +2815,16 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + [[package]] name = "gif" version = "0.14.0" @@ -2597,6 +2835,12 @@ dependencies = [ "weezl", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + [[package]] name = "glob" version = "0.3.3" @@ -2706,6 +2950,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hash32" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -2741,6 +2994,26 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "heapless" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" +dependencies = [ + "atomic-polyfill", + "hash32", + "rustc_version", + "serde", + "spin", + "stable_deref_trait", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -2894,6 +3167,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-timeout" version = "0.5.2" @@ -2913,6 +3203,7 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", "futures-core", @@ -2920,9 +3211,11 @@ dependencies = [ "http", "http-body", "hyper", + "ipnet", "libc", + "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -3018,12 +3311,114 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + [[package]] name = "image" version = "0.25.9" @@ -3086,6 +3481,12 @@ dependencies = [ "proptest", ] +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + [[package]] name = "indexmap" version = "1.9.3" @@ -3160,6 +3561,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "integer-encoding" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" + [[package]] name = "interpolate_name" version = "0.2.4" @@ -3205,6 +3612,22 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b3f7cef34251886990511df1c61443aa928499d598a9473929ab5a90a527304" +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.2" @@ -3435,6 +3858,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + [[package]] name = "litrs" version = "1.0.0" @@ -3474,6 +3903,12 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "malloc_buf" version = "0.0.6" @@ -3523,6 +3958,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "memuse" version = "0.2.2" @@ -3541,6 +3985,27 @@ dependencies = [ "zeroize", ] +[[package]] +name = "message-io" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de6e87adc85a703ec21ff551d5d5f2b7c99a4d90590584bb321e6f9ac1395230" +dependencies = [ + "crossbeam-channel", + "crossbeam-utils", + "integer-encoding", + "lazy_static", + "libc", + "log", + "mio 0.8.11", + "nix", + "serde", + "socket2 0.5.10", + "strum 0.24.1", + "tungstenite", + "url", +] + [[package]] name = "metal" version = "0.18.0" @@ -3588,6 +4053,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -3598,6 +4072,18 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + [[package]] name = "mio" version = "1.1.0" @@ -3676,6 +4162,18 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if 1.0.4", + "libc", + "memoffset", +] + [[package]] name = "nokhwa" version = "0.10.10" @@ -3790,7 +4288,7 @@ dependencies = [ "kqueue", "libc", "log", - "mio", + "mio 1.1.0", "notify-types", "walkdir", "windows-sys 0.60.2", @@ -3974,6 +4472,15 @@ dependencies = [ "cc", ] +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -4007,6 +4514,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + [[package]] name = "option-ext" version = "0.2.0" @@ -4038,7 +4551,7 @@ dependencies = [ "pasta_curves", "rand 0.8.5", "rand_core 0.6.4", - "reddsa", + "reddsa 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "sinsemilla", "subtle", @@ -4433,7 +4946,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.9", ] [[package]] @@ -4447,6 +4960,18 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if 1.0.4", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "postage" version = "0.5.0" @@ -4471,9 +4996,19 @@ dependencies = [ "cobs", "embedded-io 0.4.0", "embedded-io 0.6.1", + "heapless", "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -4614,7 +5149,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" dependencies = [ - "heck", + "heck 0.5.0", "itertools 0.14.0", "log", "multimap", @@ -4718,6 +5253,61 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls", + "socket2 0.6.1", + "thiserror 2.0.17", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash 2.1.1", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.17", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.1", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "1.0.42" @@ -4955,6 +5545,24 @@ dependencies = [ "zeroize", ] +[[package]] +name = "reddsa" +version = "0.5.1" +source = "git+https://github.com/ZcashFoundation/reddsa.git?rev=ed49e9ca0699a6450f6d4a9fe62ff168f5ea1ead#ed49e9ca0699a6450f6d4a9fe62ff168f5ea1ead" +dependencies = [ + "blake2b_simd", + "byteorder", + "frost-rerandomized", + "group", + "hex", + "jubjub", + "pasta_curves", + "rand_core 0.6.4", + "serde", + "thiserror 1.0.69", + "zeroize", +] + [[package]] name = "redjubjub" version = "0.8.0" @@ -4962,7 +5570,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89b0ac1bc6bb3696d2c6f52cff8fba57238b81da8c0214ee6cd146eb8fde364e" dependencies = [ "rand_core 0.6.4", - "reddsa", + "reddsa 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "thiserror 1.0.69", "zeroize", ] @@ -4976,6 +5584,17 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + [[package]] name = "redox_users" version = "0.5.2" @@ -5045,6 +5664,44 @@ dependencies = [ "bytecheck", ] +[[package]] +name = "reqwest" +version = "0.12.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b4c14b2d9afca6a60277086b0cc6a6ae0b568f6f7916c943a8cdc79f8be240f" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "retry-error" version = "0.8.0" @@ -5260,6 +5917,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "rustc-demangle" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -5331,12 +5994,25 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +dependencies = [ + "openssl-probe", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pki-types" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ + "web-time", "zeroize", ] @@ -5381,7 +6057,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e75b0880210c750d9189aa2d1ef94075a5500ccd9e7e98ad868e017c17c4a4bc" dependencies = [ - "derive_more", + "derive_more 2.0.1", "educe", "either", "fluid-let", @@ -5448,6 +6124,15 @@ dependencies = [ "zip32", ] +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "schemars" version = "0.9.0" @@ -5570,6 +6255,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "security-framework" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.10.1", + "core-foundation-sys 0.8.7", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys 0.8.7", + "libc", +] + [[package]] name = "self_cell" version = "0.10.3" @@ -5672,6 +6380,18 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "serde_with" version = "3.16.0" @@ -5703,6 +6423,26 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct", + "serde", +] + +[[package]] +name = "serdect" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f42f67da2385b51a5f9652db9c93d78aeaf7610bf5ec366080b6de810604af53" +dependencies = [ + "base16ct", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -5774,7 +6514,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b1fdf65dd6331831494dd616b30351c38e96e45921a27745cf98490458b90bb" dependencies = [ "bstr", - "dirs", + "dirs 6.0.0", "os_str_bytes", ] @@ -5801,7 +6541,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" dependencies = [ "libc", - "mio", + "mio 1.1.0", "signal-hook", ] @@ -5897,6 +6637,32 @@ version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "snow" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "850948bee068e713b8ab860fe1adc4d109676ab4c3b621fd8147f06b261f2f85" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek", + "rand_core 0.6.4", + "rustc_version", + "sha2 0.10.9", + "subtle", +] + +[[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", +] + [[package]] name = "socket2" version = "0.6.1" @@ -5968,6 +6734,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "stable-eyre" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556fec8c2da34c70b75f16d88df8a8cd7e652e567ff097b7e9df0022c8695cc4" +dependencies = [ + "backtrace", + "eyre", + "indenter", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -5992,6 +6769,15 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +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.3" @@ -6010,13 +6796,26 @@ dependencies = [ "strum_macros 0.27.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" version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -6029,7 +6828,7 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.111", @@ -6068,6 +6867,9 @@ name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -6251,10 +7053,11 @@ checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ "bytes", "libc", - "mio", + "mio 1.1.0", + "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.6.1", "tokio-macros", "windows-sys 0.61.2", ] @@ -6426,7 +7229,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "socket2", + "socket2 0.6.1", "sync_wrapper", "tokio", "tokio-rustls", @@ -6499,7 +7302,7 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30122645feee76f76ba1ad011b316a2b135d44a00c45ed9c14af58b32ad93b69" dependencies = [ - "derive_more", + "derive_more 2.0.1", "hex", "itertools 0.14.0", "libc", @@ -6541,7 +7344,7 @@ dependencies = [ "bytes", "caret", "derive-deftly", - "derive_more", + "derive_more 2.0.1", "educe", "itertools 0.14.0", "paste", @@ -6568,7 +7371,7 @@ checksum = "f5e63e2db09b6d6d3453f63d7d55796c9b10a7cd2bcc14e553666b1f3a84df66" dependencies = [ "caret", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "digest 0.10.7", "thiserror 2.0.17", "tor-bytes", @@ -6585,7 +7388,7 @@ dependencies = [ "async-trait", "caret", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "educe", "futures", "oneshot-fused-workaround", @@ -6635,7 +7438,7 @@ dependencies = [ "cfg-if 1.0.4", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "downcast-rs", "dyn-clone", "educe", @@ -6740,7 +7543,7 @@ checksum = "f5e730873fdc4b7f9545472c0d1cf0c43a7e89d6c996c234b6b548163010284c" dependencies = [ "async-compression", "base64ct", - "derive_more", + "derive_more 2.0.1", "futures", "hex", "http", @@ -6789,7 +7592,7 @@ dependencies = [ "async-trait", "base64ct", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "digest 0.10.7", "educe", "event-listener", @@ -6841,7 +7644,7 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63d766a5d11ddad7946cf8357ce7a1e948abdc3ad3ef06ed23f35af522dc089c" dependencies = [ - "derive_more", + "derive_more 2.0.1", "futures", "paste", "retry-error", @@ -6858,7 +7661,7 @@ version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c42cb5b5aec0584db2fba4a88c4e08fb09535ef61e4ef5674315a89e69ec31a2" dependencies = [ - "derive_more", + "derive_more 2.0.1", "thiserror 2.0.17", "void", ] @@ -6873,7 +7676,7 @@ dependencies = [ "base64ct", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "dyn-clone", "educe", "futures", @@ -6914,7 +7717,7 @@ checksum = "cf9ee6e0dbec9ba11c3d046181a42dd4759e108de38e2b5927689edbdc458a51" dependencies = [ "data-encoding", "derive-deftly", - "derive_more", + "derive_more 2.0.1", "digest 0.10.7", "hex", "humantime", @@ -6942,7 +7745,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa30066b80ade55a1b88a82b5320dfc50d1724918ad614ded8ecb4820c32062" dependencies = [ "derive-deftly", - "derive_more", + "derive_more 2.0.1", "downcast-rs", "paste", "rand 0.9.2", @@ -6968,7 +7771,7 @@ dependencies = [ "cfg-if 1.0.4", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "downcast-rs", "dyn-clone", "fs-mistrust", @@ -7008,7 +7811,7 @@ dependencies = [ "caret", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "hex", "itertools 0.14.0", "safelog", @@ -7036,7 +7839,7 @@ dependencies = [ "curve25519-dalek", "der-parser", "derive-deftly", - "derive_more", + "derive_more 2.0.1", "digest 0.10.7", "ed25519-dalek", "educe", @@ -7087,7 +7890,7 @@ checksum = "ef375c3442a4ea74f0b6bf91a3eed660d55301b2e2f59b366aba4849b2321a6f" dependencies = [ "cfg-if 1.0.4", "derive-deftly", - "derive_more", + "derive_more 2.0.1", "dyn-clone", "educe", "futures", @@ -7117,7 +7920,7 @@ checksum = "638b4e6507e3786488859d3c463fa73addbad4f788806c6972603727e527672e" dependencies = [ "async-trait", "bitflags 2.10.0", - "derive_more", + "derive_more 2.0.1", "futures", "humantime", "itertools 0.14.0", @@ -7149,7 +7952,7 @@ dependencies = [ "cipher", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "digest 0.10.7", "educe", "hex", @@ -7187,7 +7990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59e41aea027686b05f21e0ad75aa2c0c9681a87f2f3130b6d6f7a7a8c06edd7b" dependencies = [ "derive-deftly", - "derive_more", + "derive_more 2.0.1", "filetime", "fs-mistrust", "fslock", @@ -7224,7 +8027,7 @@ dependencies = [ "criterion-cycles-per-byte", "derive-deftly", "derive_builder_fork_arti", - "derive_more", + "derive_more 2.0.1", "digest 0.10.7", "educe", "enum_dispatch", @@ -7308,7 +8111,7 @@ dependencies = [ "async_executors", "asynchronous-codec", "coarsetime", - "derive_more", + "derive_more 2.0.1", "dyn-clone", "educe", "futures", @@ -7338,7 +8141,7 @@ dependencies = [ "assert_matches", "async-trait", "derive-deftly", - "derive_more", + "derive_more 2.0.1", "educe", "futures", "humantime", @@ -7381,7 +8184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48139f001dd6f409325b7c190ebcea1033b27f09042543946ab7aa4ad286257b" dependencies = [ "derive-deftly", - "derive_more", + "derive_more 2.0.1", "serde", "thiserror 2.0.17", "tor-memquota", @@ -7406,6 +8209,24 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.10.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -7534,6 +8355,25 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "tungstenite" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc55edf6afe467bfa92835ae73628d8a934818aa1591c6ebacc4379b7c0ad09" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", + "url", + "utf-8", +] + [[package]] name = "type-map" version = "0.5.1" @@ -7690,6 +8530,30 @@ dependencies = [ "rand_xoshiro", ] +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -7704,6 +8568,7 @@ checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ "getrandom 0.3.4", "js-sys", + "rand 0.9.2", "serde", "wasm-bindgen", ] @@ -7889,6 +8754,19 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +dependencies = [ + "cfg-if 1.0.4", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.105" @@ -7937,6 +8815,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "1.0.4" @@ -8187,6 +9075,15 @@ dependencies = [ "windows-link 0.2.1", ] +[[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" @@ -8223,6 +9120,21 @@ dependencies = [ "windows-link 0.2.1", ] +[[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" @@ -8274,6 +9186,12 @@ dependencies = [ "windows-link 0.2.1", ] +[[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" @@ -8286,6 +9204,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" @@ -8298,6 +9222,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" @@ -8322,6 +9252,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" @@ -8334,6 +9270,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" @@ -8346,6 +9288,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" @@ -8358,6 +9306,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" @@ -8391,6 +9345,12 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + [[package]] name = "wsl" version = "0.1.0" @@ -8424,12 +9384,51 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" +[[package]] +name = "xeddsa" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2460c9a9c9d1331ff6801e87badb517faa6b6758e5fb585eb27daf7622c6d5ad" +dependencies = [ + "curve25519-dalek", + "derive_more 0.99.20", + "ed25519", + "ed25519-dalek", + "rand 0.8.5", + "sha2 0.10.9", + "x25519-dalek", + "zeroize", +] + [[package]] name = "y4m" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure", +] + [[package]] name = "zcash-devtool" version = "0.1.0" @@ -8447,6 +9446,7 @@ dependencies = [ "crossterm", "ed25519-zebra", "equihash", + "frost-client", "futures-util", "group", "hex", @@ -8489,6 +9489,7 @@ dependencies = [ "tui-logger", "uint", "ur", + "url", "uuid", "zcash_address", "zcash_client_backend", @@ -8839,6 +9840,21 @@ name = "zerofrom" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", + "synstructure", +] [[package]] name = "zeroize" @@ -8846,6 +9862,7 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ + "serde", "zeroize_derive", ] @@ -8860,6 +9877,17 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" version = "0.11.5" @@ -8867,7 +9895,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "serde", + "yoke", "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 6af5fa1..636b9ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,6 +95,11 @@ roaring = { version = "0.11", optional = true } tokio-util = { version = "0.7", optional = true } tui-logger = { version = "0.17", optional = true, features = ["tracing-support"] } +# FROST +# Currently pointing to https://github.com/ZcashFoundation/frost-tools/pull/576 +frost-client = { git = "https://github.com/ZcashFoundation/frost-tools.git", rev = "7ae6954e45d5bb5f2c28cf13aabeee3fbff37e21" } +url = "2.5.7" + [features] default = ["transparent-inputs"] qr = ["dep:qrcode"] diff --git a/src/commands/pczt.rs b/src/commands/pczt.rs index e7a02cf..ea8d2af 100644 --- a/src/commands/pczt.rs +++ b/src/commands/pczt.rs @@ -3,6 +3,7 @@ use clap::Subcommand; pub(crate) mod combine; pub(crate) mod create; pub(crate) mod create_manual; +pub(crate) mod frost_sign; pub(crate) mod inspect; pub(crate) mod prove; pub(crate) mod redact; @@ -33,6 +34,8 @@ pub(crate) enum Command { Prove(prove::Command), /// Apply signatures to a PCZT Sign(sign::Command), + /// Apply FROST-generated signatures to a PCZT + FrostSign(frost_sign::Command), /// Combine two PCZTs Combine(combine::Command), /// Extract a finished transaction and send it diff --git a/src/commands/pczt/frost_sign.rs b/src/commands/pczt/frost_sign.rs new file mode 100644 index 0000000..cc4ec60 --- /dev/null +++ b/src/commands/pczt/frost_sign.rs @@ -0,0 +1,199 @@ +use std::collections::HashMap; + +use anyhow::anyhow; +use orchard::primitives::redpallas::{self, SpendAuth}; +use pczt::{roles::low_level_signer::Signer, Pczt}; +use tokio::io::{stdin, stdout, AsyncReadExt, AsyncWriteExt}; + +use group::ff::PrimeField; +use zcash_primitives::transaction::{sighash::SignableInput, txid::TxIdDigester}; +use zcash_primitives::transaction::{sighash_v5::v5_signature_hash, TxVersion}; + +use frost_client::api::PublicKey; + +// Options accepted for the `pczt frost-sign` command +#[derive(Debug, clap::Args)] +pub(crate) struct Command { + /// The path to the config file to manage. If not specified, it uses + /// $HOME/.local/frost/credentials.toml + #[arg(short, long)] + pub config: Option, + /// The server URL to use. If not specified, it will use the server URL + /// for the specified group, if any. + #[arg(short, long)] + pub server_url: Option, + /// The group to use, identified by the group public key (use `groups` + /// to list) + #[arg(short, long)] + pub group: String, + /// The comma-separated hex-encoded public keys of the signers to use. + #[arg(short = 'S', long, value_delimiter = ',')] + pub signers: Vec, +} + +impl Command { + pub(crate) async fn run(self) -> Result<(), anyhow::Error> { + let mut buf = vec![]; + stdin().read_to_end(&mut buf).await?; + + let pczt = Pczt::parse(&buf).map_err(|e| anyhow!("Failed to read PCZT: {:?}", e))?; + + let sighash = match pczt.clone().into_effects() { + None => Err(anyhow!( + "Not enough information to build the transaction's effects" + ))?, + Some(tx_data) => { + let txid_parts = tx_data.digest(TxIdDigester); + if matches!(tx_data.version(), TxVersion::V5) + && (tx_data.sapling_bundle().is_some() || tx_data.orchard_bundle().is_some()) + { + v5_signature_hash(&tx_data, &SignableInput::Shielded, &txid_parts) + } else { + Err(anyhow!( + "Only version 5 transactions with shielded components are supported" + ))? + } + } + }; + + let signer = Signer::new(pczt.clone()); + + let mut alphas = vec![]; + signer + .sign_orchard_with(|_pczt, bundle, _| { + alphas = bundle + .actions() + .iter() + .enumerate() + // TODO: remove unwrap + .filter_map(|(idx, a)| { + // TODO: improve dummy detection (check rk instead) + if a.spend().value().unwrap() != orchard::value::NoteValue::default() { + Some((idx, a.spend().alpha().unwrap())) + } else { + None + } + }) + .collect::>(); + Ok::<_, orchard::pczt::ParseError>(()) + }) + .unwrap(); + + let mut signatures = vec![]; + + let (pargs, args) = { + let Command { + config, + server_url, + group, + signers, + } = self; + + let config = frost_client::cli::config::Config::read(config) + .map_err(|e| anyhow!(e.to_string()))?; + + let group = config + .group + .get(&group) + .ok_or_else(|| anyhow!("Group not found"))?; + + let public_key_package = + frost_client::reddsa::frost::redpallas::keys::PublicKeyPackage::deserialize( + &group.public_key_package, + )?; + + let server_url = if let Some(server_url) = server_url { + server_url + } else { + group + .server_url + .clone() + .ok_or_else(|| anyhow!("server-url required"))? + }; + let server_url_parsed = url::Url::parse(&format!("https://{server_url}")) + .map_err(|_| anyhow!("error parsing server-url"))?; + + let signers = signers + .iter() + .map(|s| { + let pubkey = PublicKey(hex::decode(s)?.to_vec()); + let contact = group.participant_by_pubkey(&pubkey)?; + Ok((pubkey, contact.identifier()?)) + }) + .collect::, Box>>() + .map_err(|e| anyhow!(e.to_string()))?; + let num_signers = signers.len() as u16; + + let pargs = frost_client::coordinator::args::ProcessedArgs { + num_signers, + public_key_package, + messages: vec![sighash.as_bytes().to_vec()], + randomizers: alphas + .iter() + .map(|(_, alpha)| { + frost_client::reddsa::frost::redpallas::Randomizer::deserialize( + &alpha.to_repr(), + ) + .map_err(|e| anyhow!(e.to_string())) + }) + .collect::, _>>()?, + }; + let args = frost_client::coordinator::comms::http::Args { + signers, + ip: server_url_parsed + .host_str() + .ok_or_else(|| anyhow!("host missing in URL"))? + .to_owned(), + port: server_url_parsed + .port_or_known_default() + .expect("always works for https"), + + comm_privkey: Some( + config + .communication_key + .clone() + .ok_or_else(|| anyhow!("user not initialized"))? + .privkey + .clone(), + ), + comm_pubkey: Some( + config + .communication_key + .ok_or_else(|| anyhow!("user not initialized"))? + .pubkey + .clone(), + ), + }; + (pargs, args) + }; + + let mut comms = frost_client::coordinator::comms::http::HTTPComms::new(&pargs, &args) + .map_err(|e| anyhow!(e.to_string()))?; + let signature = frost_client::coordinator::cli::coordinator(&mut comms, pargs) + .await + .map_err(|e| anyhow!(e.to_string()))?; + + let signature: [u8; 64] = signature.serialize()?.try_into().unwrap(); + let signature = redpallas::Signature::::from(signature); + signatures.push((alphas[0].0, signature)); + + let signer = Signer::new(pczt.clone()); + let signer = signer + .sign_orchard_with(|_pczt, bundle, _| { + for (idx, signature) in signatures.into_iter() { + let action = &mut bundle.actions_mut()[idx]; + action + .apply_signature(sighash.as_bytes().try_into().unwrap(), signature) + .unwrap(); + } + Ok::<_, orchard::pczt::ParseError>(()) + }) + .map_err(|e| anyhow!("Error signing: {:?}", e))?; + + let pczt = signer.finish(); + + stdout().write_all(&pczt.serialize()).await?; + + Ok(()) + } +} diff --git a/src/main.rs b/src/main.rs index 7f017f7..7503b78 100644 --- a/src/main.rs +++ b/src/main.rs @@ -194,6 +194,7 @@ fn main() -> Result<(), anyhow::Error> { commands::pczt::Command::Redact(command) => command.run().await, commands::pczt::Command::Prove(command) => command.run(wallet_dir).await, commands::pczt::Command::Sign(command) => command.run(wallet_dir).await, + commands::pczt::Command::FrostSign(command) => command.run().await, commands::pczt::Command::Combine(command) => command.run().await, commands::pczt::Command::Send(command) => command.run(wallet_dir).await, commands::pczt::Command::SendWithoutStoring(command) => {