From 88169f8be3030a65cbc7bf90726a3cfca62cdbf6 Mon Sep 17 00:00:00 2001 From: Ruediger Klaehn Date: Tue, 17 Mar 2026 13:25:56 +0200 Subject: [PATCH] update custom-router to iroh 0.97 --- custom-router/Cargo.lock | 405 +++++++++++++++++++++----------------- custom-router/Cargo.toml | 2 +- custom-router/src/main.rs | 18 +- 3 files changed, 227 insertions(+), 198 deletions(-) diff --git a/custom-router/Cargo.lock b/custom-router/Cargo.lock index cffe44f3..1e32f500 100644 --- a/custom-router/Cargo.lock +++ b/custom-router/Cargo.lock @@ -2,6 +2,41 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common 0.1.7", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[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 = "aho-corasick" version = "1.1.4" @@ -44,19 +79,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "async-compat" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ba85bc55464dcbf728b56d97e119d673f4cf9062be330a9a26f3acf504a590" -dependencies = [ - "futures-core", - "futures-io", - "once_cell", - "pin-project-lite", - "tokio", -] - [[package]] name = "async-trait" version = "0.1.89" @@ -231,6 +253,16 @@ dependencies = [ "windows-link", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common 0.1.7", + "inout", +] + [[package]] name = "cobs" version = "0.3.0" @@ -318,13 +350,32 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" -version = "0.2.0-rc.13" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-common" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7722afd27468475c9b6063dc03a57ef2ca833816981619f8ebe64d38d207eef" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" dependencies = [ "hybrid-array", ] +[[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 = "5.0.0-pre.1" @@ -492,12 +543,13 @@ checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" [[package]] name = "digest" -version = "0.11.0-rc.9" +version = "0.11.0-rc.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff8de092798697546237a3a701e4174fe021579faec9b854379af9bf1e31962" +checksum = "afa94b64bfc6549e6e4b5a3216f22593224174083da7a90db47e951c4fb31725" dependencies = [ "block-buffer", - "crypto-common", + "const-oid", + "crypto-common 0.2.1", ] [[package]] @@ -543,12 +595,6 @@ dependencies = [ "litrs", ] -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - [[package]] name = "ed25519" version = "3.0.0-rc.3" @@ -808,6 +854,16 @@ dependencies = [ "windows-result", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -835,6 +891,16 @@ dependencies = [ "wasm-bindgen", ] +[[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 = "gloo-timers" version = "0.3.0" @@ -1006,9 +1072,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hybrid-array" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41fb3dc24fe72c2e3a4685eed55917c2fb228851257f4a8f2d985da9443c3e5" +checksum = "8655f91cd07f2b9d0c24137bd650fe69617773435ee5ec83022377777ce65ef1" dependencies = [ "typenum", ] @@ -1246,6 +1312,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + [[package]] name = "ipconfig" version = "0.3.2" @@ -1276,9 +1351,9 @@ dependencies = [ [[package]] name = "iroh" -version = "0.96.0" +version = "0.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3790cc3a5ef6a89a1e30b64de54de31e692958e2dc8a37cf2831d52c76805de9" +checksum = "feb56e7e4b0ec7fba7efa6a236b016a52b5d927d50244aceb9e20566159b1a32" dependencies = [ "backon", "bytes", @@ -1290,22 +1365,22 @@ dependencies = [ "getrandom 0.3.4", "hickory-resolver", "http", - "igd-next", + "ipnet", "iroh-base", "iroh-metrics", - "iroh-quinn", - "iroh-quinn-proto", - "iroh-quinn-udp 0.8.0", "iroh-relay", "n0-error", "n0-future", "n0-watcher", - "netdev", - "netwatch 0.14.0", + "netwatch", + "noq", + "noq-proto", + "noq-udp", "papaya", "pin-project", "pkarr", "pkcs8", + "portable-atomic", "portmapper", "rand", "reqwest", @@ -1329,17 +1404,19 @@ dependencies = [ [[package]] name = "iroh-base" -version = "0.96.0" +version = "0.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c3fc0440c8775bf2677a58550fcef7e544346add01bf1b163f9fc0cedd436e" +checksum = "55a354e3396b62c14717ee807dfee9a7f43f6dad47e4ac0fd1d49f1ffad14ef0" dependencies = [ "curve25519-dalek", "data-encoding", "derive_more", + "digest", "ed25519-dalek", "n0-error", "rand_core", "serde", + "sha2", "url", "zeroize", "zeroize_derive", @@ -1372,84 +1449,11 @@ dependencies = [ "syn", ] -[[package]] -name = "iroh-quinn" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a207ea77da14b683e8d454088795b6ac38e5d5cf26ded6868b9d80392cf8c1" -dependencies = [ - "bytes", - "cfg_aliases", - "iroh-quinn-proto", - "iroh-quinn-udp 0.8.0", - "pin-project-lite", - "rustc-hash", - "rustls", - "socket2 0.6.2", - "thiserror", - "tokio", - "tokio-stream", - "tracing", - "web-time", -] - -[[package]] -name = "iroh-quinn-proto" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f66e567aa8b052c5632b8fc902fbb503891eda705553494ccddf3505257be40" -dependencies = [ - "bytes", - "derive_more", - "enum-assoc", - "fastbloom", - "getrandom 0.3.4", - "identity-hash", - "lru-slab", - "rand", - "ring", - "rustc-hash", - "rustls", - "rustls-pki-types", - "slab", - "sorted-index-buffer", - "thiserror", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "iroh-quinn-udp" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a91fe9ec3db6615d7ab1b303717f3b98fc40b96955a4ea25b113b1b879f7481f" -dependencies = [ - "cfg_aliases", - "libc", - "socket2 0.6.2", - "tracing", - "windows-sys 0.61.2", -] - -[[package]] -name = "iroh-quinn-udp" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f981dadd5a072a9e0efcd24bdcc388e570073f7e51b33505ceb1ef4668c80c86" -dependencies = [ - "cfg_aliases", - "libc", - "socket2 0.6.2", - "tracing", - "windows-sys 0.61.2", -] - [[package]] name = "iroh-relay" -version = "0.96.0" +version = "0.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236c6f131ce774f7cc7548f467890c313b09f7849b8d703360d6602bc8c5184c" +checksum = "d786b260cadfe82ae0b6a9e372e8c78949096a06c857d1c3521355cefced0f55" dependencies = [ "blake3", "bytes", @@ -1464,11 +1468,11 @@ dependencies = [ "hyper-util", "iroh-base", "iroh-metrics", - "iroh-quinn", - "iroh-quinn-proto", "lru", "n0-error", "n0-future", + "noq", + "noq-proto", "num_enum", "pin-project", "pkarr", @@ -1685,9 +1689,9 @@ dependencies = [ [[package]] name = "netdev" -version = "0.40.0" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc9815643a243856e7bd84524e1ff739e901e846cfb06ad9627cd2b6d59bd737" +checksum = "1b0a0096d9613ee878dba89bbe595f079d373e3f1960d882e4f2f78ff9c30a0a" dependencies = [ "block2", "dispatch2", @@ -1696,7 +1700,7 @@ dependencies = [ "libc", "mac-addr", "netlink-packet-core", - "netlink-packet-route 0.25.1", + "netlink-packet-route", "netlink-sys", "objc2-core-foundation", "objc2-system-configuration", @@ -1716,21 +1720,9 @@ dependencies = [ [[package]] name = "netlink-packet-route" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec2f5b6839be2a19d7fa5aab5bc444380f6311c2b693551cb80f45caaa7b5ef" -dependencies = [ - "bitflags", - "libc", - "log", - "netlink-packet-core", -] - -[[package]] -name = "netlink-packet-route" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ce3636fa715e988114552619582b530481fd5ef176a1e5c1bf024077c2c9445" +checksum = "df9854ea6ad14e3f4698a7f03b65bce0833dd2d81d594a0e4a984170537146b6" dependencies = [ "bitflags", "libc", @@ -1767,15 +1759,14 @@ dependencies = [ [[package]] name = "netwatch" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970729c08dbe7987d698f996c6b4945cbfdcdd6ee627df6de51d5469cec13b99" +checksum = "3b1b27babe89ef9f2237bc6c028bea24fa84163a1b6f8f17ff93573ebd7d861f" dependencies = [ "atomic-waker", "bytes", "cfg_aliases", "derive_more", - "iroh-quinn-udp 0.7.0", "js-sys", "libc", "n0-error", @@ -1783,9 +1774,10 @@ dependencies = [ "n0-watcher", "netdev", "netlink-packet-core", - "netlink-packet-route 0.28.0", + "netlink-packet-route", "netlink-proto", "netlink-sys", + "noq-udp", "objc2-core-foundation", "objc2-system-configuration", "pin-project-lite", @@ -1802,39 +1794,64 @@ dependencies = [ ] [[package]] -name = "netwatch" -version = "0.14.0" +name = "noq" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "454b8c0759b2097581f25ed5180b4a1d14c324fde6d0734932a288e044d06232" +checksum = "8df966fb44ac763bc86da97fa6c811c54ae82ef656575949f93c6dae0c9f09bf" dependencies = [ - "atomic-waker", "bytes", "cfg_aliases", - "derive_more", - "iroh-quinn-udp 0.8.0", - "js-sys", - "libc", - "n0-error", - "n0-future", - "n0-watcher", - "netdev", - "netlink-packet-core", - "netlink-packet-route 0.28.0", - "netlink-proto", - "netlink-sys", - "objc2-core-foundation", - "objc2-system-configuration", + "noq-proto", + "noq-udp", "pin-project-lite", - "serde", + "rustc-hash", + "rustls", "socket2 0.6.2", - "time", + "thiserror", "tokio", - "tokio-util", + "tokio-stream", "tracing", - "web-sys", - "windows", - "windows-result", - "wmi", + "web-time", +] + +[[package]] +name = "noq-proto" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c61b72abd670eebc05b5cf720e077b04a3ef3354bc7bc19f1c3524cb424db7b" +dependencies = [ + "aes-gcm", + "bytes", + "derive_more", + "enum-assoc", + "fastbloom", + "getrandom 0.3.4", + "identity-hash", + "lru-slab", + "rand", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "sorted-index-buffer", + "thiserror", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "noq-udp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb9be4fedd6b98f3ba82ccd3506f4d0219fb723c3f97c67e12fe1494aa020e44" +dependencies = [ + "cfg_aliases", + "libc", + "socket2 0.6.2", + "tracing", + "windows-sys 0.61.2", ] [[package]] @@ -1970,6 +1987,12 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "papaya" version = "0.2.3" @@ -2078,29 +2101,17 @@ version = "5.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d346b545765a0ef58b6a7e160e17ddaa7427f439b7b9a287df6c88c9e04bf2" dependencies = [ - "async-compat", "base32", "bytes", "cfg_aliases", "document-features", - "dyn-clone", "ed25519-dalek", - "futures-buffered", - "futures-lite", "getrandom 0.3.4", - "log", - "lru", "ntimestamp", - "reqwest", "self_cell", "serde", - "sha1_smol", "simple-dns", "thiserror", - "tokio", - "tracing", - "url", - "wasm-bindgen-futures", ] [[package]] @@ -2126,6 +2137,18 @@ dependencies = [ "time", ] +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" version = "1.13.0" @@ -2134,9 +2157,9 @@ checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "portmapper" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29fb522a166045a35b507dea30e3eb69bca1c5a53669d252744d5a0d8474ffa" +checksum = "74748bc706fa6b6aebac6bbe0bbe0de806b384cb5c557ea974f771360a4e3858" dependencies = [ "base64", "bytes", @@ -2148,7 +2171,7 @@ dependencies = [ "iroh-metrics", "libc", "n0-error", - "netwatch 0.13.0", + "netwatch", "num_enum", "rand", "serde", @@ -2592,17 +2615,11 @@ dependencies = [ "serde", ] -[[package]] -name = "sha1_smol" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" - [[package]] name = "sha2" -version = "0.11.0-rc.4" +version = "0.11.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7535f94fa3339fe9e5e9be6260a909e62af97f6e14b32345ccf79b92b8b81233" +checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924" dependencies = [ "cfg-if", "cpufeatures", @@ -2770,18 +2787,18 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck", "proc-macro2", @@ -3173,6 +3190,16 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common 0.1.7", + "subtle", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -3263,6 +3290,12 @@ dependencies = [ "rustversion", ] +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "want" version = "0.3.1" diff --git a/custom-router/Cargo.toml b/custom-router/Cargo.toml index 781b5286..7a65c76e 100644 --- a/custom-router/Cargo.toml +++ b/custom-router/Cargo.toml @@ -5,7 +5,7 @@ edition = "2024" [dependencies] anyhow = "1" -iroh = "0.96" +iroh = "0.97" n0-future = "0.3" rustls = { version = "0.23.32", default-features = false } snafu = "0.8.9" diff --git a/custom-router/src/main.rs b/custom-router/src/main.rs index 36f8ced5..68a1c344 100644 --- a/custom-router/src/main.rs +++ b/custom-router/src/main.rs @@ -3,8 +3,10 @@ //! We will create a router that allows adding or removing protocols at runtime. use iroh::{ - Endpoint, EndpointAddr, RelayMode, - endpoint::{ApplicationClose, ConnectError, Connection, ConnectionError, TransportErrorCode}, + Endpoint, EndpointAddr, + endpoint::{ + ApplicationClose, ConnectError, Connection, ConnectionError, TransportErrorCode, presets, + }, protocol::{AcceptError, ProtocolHandler}, }; @@ -17,10 +19,7 @@ const ALPN_2: &[u8] = b"/iroh/test/2"; async fn main() -> anyhow::Result<()> { tracing_subscriber::fmt::init(); // Create our server endpoint. - let server = Endpoint::builder() - .relay_mode(RelayMode::Disabled) - .bind() - .await?; + let server = Endpoint::builder(presets::N0DisableRelay).bind().await?; // Create our custom router, and accept a protocol at `ALPN_1`. // Our protocol closes all connections immediately with the passed-in error code. @@ -31,10 +30,7 @@ async fn main() -> anyhow::Result<()> { let addr = router.endpoint().addr(); // Create our client endpoint. - let client = Endpoint::builder() - .relay_mode(RelayMode::Disabled) - .bind() - .await?; + let client = Endpoint::builder(presets::N0DisableRelay).bind().await?; // Assert that we can connect on ALPN_1, but not on ALPN_2. connect_assert_ok(&client, &addr, ALPN_1, 1).await; @@ -177,7 +173,7 @@ pub mod router { /// # use iroh::{endpoint::Connecting, protocol::{ProtocolHandler, Router}, Endpoint, EndpointAddr}; /// # /// # async fn test_compile() -> n0_snafu::Result<()> { - /// let endpoint = Endpoint::builder().bind().await?; + /// let endpoint = Endpoint::bind(presets::N0).await?; /// /// let router = Router::builder(endpoint) /// // .accept(&ALPN, )