From 47e215b6bf81be9a0ac0be7fcb247db480dc8d5f Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Fri, 15 Nov 2024 14:48:00 +0100 Subject: [PATCH 1/4] chore(deps): upgrade rcgen to 0.13 --- Cargo.lock | 639 +++++++++++++++++++++-------------------- iroh/src/test_utils.rs | 7 +- 2 files changed, 333 insertions(+), 313 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e61f825ff..0378ab7ffc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,9 +53,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.21" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -119,20 +119,19 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "once_cell", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arc-swap" @@ -152,7 +151,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 1.0.69", + "thiserror 1.0.68", "time", ] @@ -164,7 +163,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", "synstructure", ] @@ -176,7 +175,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -187,18 +186,18 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "async-trait" -version = "0.1.85" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -235,16 +234,16 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.9" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", "axum-macros", "bytes", "futures-util", - "http 1.2.0", + "http 1.1.0", "http-body", "http-body-util", "hyper", @@ -260,9 +259,9 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", - "tower 0.5.2", + "tower 0.5.1", "tower-layer", "tower-service", "tracing", @@ -277,13 +276,13 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.2.0", + "http 1.1.0", "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", "tracing", @@ -297,7 +296,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -309,7 +308,7 @@ dependencies = [ "arc-swap", "bytes", "futures-util", - "http 1.2.0", + "http 1.1.0", "http-body", "http-body-util", "hyper", @@ -382,18 +381,18 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bit-set" -version = "0.8.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.8.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" @@ -403,9 +402,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.7.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be3f42a67d6d345ecd59f675f3f012d6974981560836e938c22b424b85ce1be" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -436,9 +435,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "cast" @@ -448,9 +447,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.9" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8293772165d9345bdaaa39b45b2109591e63fe5e6fbc23c6ff930a048aa310b" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "shlex", ] @@ -486,9 +485,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -537,9 +536,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -547,9 +546,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -559,21 +558,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cobs" @@ -608,15 +607,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.10" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" dependencies = [ "encode_unicode", + "lazy_static", "libc", - "once_cell", "unicode-width", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -663,9 +662,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -738,9 +737,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -757,9 +756,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -836,7 +835,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -905,7 +904,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -934,7 +933,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", "unicode-xid", ] @@ -990,7 +989,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -1071,9 +1070,9 @@ checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] name = "encode_unicode" -version = "1.0.0" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "enum-as-inner" @@ -1084,7 +1083,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -1104,7 +1103,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -1130,12 +1129,12 @@ checksum = "a02a5d186d7bf1cb21f1f95e1a9cfa5c1f2dcd803a47aad454423ceec13525c5" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1146,9 +1145,9 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "2.3.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fiat-crypto" @@ -1176,9 +1175,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" [[package]] name = "form_urlencoded" @@ -1196,7 +1195,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9" dependencies = [ "nonempty", - "thiserror 1.0.69", + "thiserror 1.0.68", ] [[package]] @@ -1280,7 +1279,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -1377,9 +1376,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "governor" @@ -1424,16 +1423,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.2.0", + "http 1.1.0", "indexmap", "slab", "tokio", @@ -1468,9 +1467,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" dependencies = [ "allocator-api2", "equivalent", @@ -1507,6 +1506,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "hermit-abi" version = "0.4.0" @@ -1535,7 +1540,7 @@ dependencies = [ "futures-io", "futures-util", "h2", - "http 1.2.0", + "http 1.1.0", "idna", "ipnet", "once_cell", @@ -1589,7 +1594,7 @@ dependencies = [ "h2", "hickory-proto", "hickory-resolver", - "http 1.2.0", + "http 1.1.0", "ipnet", "prefix-trie", "rustls", @@ -1623,9 +1628,9 @@ dependencies = [ [[package]] name = "hmac-sha256" -version = "1.1.8" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a8575493d277c9092b988c780c94737fb9fd8651a1001e16bee3eccfc1baedb" +checksum = "3688e69b38018fec1557254f64c8dc2cc8ec502890182f395dbb0aa997aa5735" [[package]] name = "hostname" @@ -1657,9 +1662,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1673,7 +1678,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http 1.1.0", ] [[package]] @@ -1684,7 +1689,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.2.0", + "http 1.1.0", "http-body", "pin-project-lite", ] @@ -1719,15 +1724,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", "futures-util", "h2", - "http 1.2.0", + "http 1.1.0", "http-body", "httparse", "httpdate", @@ -1740,12 +1745,12 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.2.0", + "http 1.1.0", "hyper", "hyper-util", "rustls", @@ -1765,7 +1770,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", + "http 1.1.0", "http-body", "hyper", "pin-project-lite", @@ -1913,7 +1918,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -1947,7 +1952,7 @@ dependencies = [ "attohttpc", "bytes", "futures", - "http 1.2.0", + "http 1.1.0", "http-body-util", "hyper", "hyper-util", @@ -1960,26 +1965,26 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.1", ] [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", + "instant", "number_prefix", "portable-atomic", "tokio", "unicode-width", - "web-time", ] [[package]] @@ -2042,7 +2047,7 @@ dependencies = [ "futures-util", "governor 0.7.0", "hickory-resolver", - "http 1.2.0", + "http 1.1.0", "http-body-util", "hyper", "hyper-util", @@ -2147,7 +2152,7 @@ dependencies = [ "governor 0.6.3", "hickory-resolver", "hickory-server", - "http 1.2.0", + "http 1.1.0", "humantime-serde", "iroh", "iroh-metrics", @@ -2299,7 +2304,7 @@ dependencies = [ "governor 0.7.0", "hickory-proto", "hickory-resolver", - "http 1.2.0", + "http 1.1.0", "http-body-util", "hyper", "hyper-util", @@ -2349,7 +2354,7 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] @@ -2371,9 +2376,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni" @@ -2386,7 +2391,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror 1.0.69", + "thiserror 1.0.68", "walkdir", "windows-sys 0.45.0", ] @@ -2415,9 +2420,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libredox" @@ -2425,7 +2436,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", "libc", ] @@ -2437,15 +2448,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "litrs" @@ -2465,9 +2476,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "loom" @@ -2501,7 +2512,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.1", ] [[package]] @@ -2520,7 +2531,7 @@ dependencies = [ "serde_bencode", "serde_bytes", "sha1_smol", - "thiserror 1.0.69", + "thiserror 1.0.68", "tracing", ] @@ -2571,19 +2582,20 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", "windows-sys 0.52.0", @@ -2604,7 +2616,7 @@ dependencies = [ "rustc_version", "smallvec", "tagptr", - "thiserror 1.0.69", + "thiserror 1.0.68", "uuid", ] @@ -2703,7 +2715,7 @@ dependencies = [ "anyhow", "byteorder", "paste", - "thiserror 1.0.69", + "thiserror 1.0.68", ] [[package]] @@ -2717,15 +2729,15 @@ dependencies = [ "log", "netlink-packet-core", "netlink-sys", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", ] [[package]] name = "netlink-sys" -version = "0.8.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" +checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" dependencies = [ "bytes", "futures", @@ -2784,7 +2796,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", "cfg-if", "libc", ] @@ -2865,6 +2877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -2885,7 +2898,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -2905,9 +2918,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.7" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] @@ -3010,20 +3023,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.15" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror 2.0.11", + "thiserror 1.0.68", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.15" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -3031,22 +3044,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.15" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "pest_meta" -version = "2.7.15" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -3055,29 +3068,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -3168,7 +3181,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -3205,9 +3218,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "portmapper" @@ -3240,9 +3253,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.1.1" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -3343,9 +3356,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3370,18 +3383,18 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "proptest" -version = "1.6.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.7.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand", @@ -3395,9 +3408,9 @@ dependencies = [ [[package]] name = "quanta" -version = "0.12.5" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd1fe6824cea6538803de3ff1bc0cf3949024db3d43c9643024bfb33a807c0e" +checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" dependencies = [ "crossbeam-utils", "libc", @@ -3416,9 +3429,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", @@ -3427,36 +3440,33 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.11", + "thiserror 1.0.68", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", - "getrandom", "rand", "ring", "rustc-hash", "rustls", - "rustls-pki-types", "slab", - "thiserror 2.0.11", + "thiserror 1.0.68", "tinyvec", "tracing", - "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" dependencies = [ "cfg_aliases", "libc", @@ -3468,9 +3478,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -3526,11 +3536,11 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.3.0" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6928fa44c097620b706542d428957635951bade7143269085389d42c8a4927e" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", ] [[package]] @@ -3555,9 +3565,9 @@ dependencies = [ [[package]] name = "rcgen" -version = "0.13.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +checksum = "54077e1872c46788540de1ea3d7f4ccb1983d12f9aa909b234468676c1a36779" dependencies = [ "pem", "ring", @@ -3568,20 +3578,20 @@ dependencies = [ [[package]] name = "redb" -version = "2.4.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0a72cd7140de9fc3e318823b883abf819c20d478ec89ce880466dc2ef263c6" +checksum = "84b1de48a7cf7ba193e81e078d17ee2b786236eed1d3f7c60f8a09545efc4925" dependencies = [ "libc", ] [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", ] [[package]] @@ -3592,7 +3602,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.69", + "thiserror 1.0.68", ] [[package]] @@ -3603,7 +3613,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.8", "regex-syntax 0.8.5", ] @@ -3618,9 +3628,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -3664,15 +3674,15 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64", "bytes", "futures-core", "futures-util", - "http 1.2.0", + "http 1.1.0", "http-body", "http-body-util", "hyper", @@ -3692,10 +3702,9 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tokio-rustls", - "tower 0.5.2", "tower-service", "url", "wasm-bindgen", @@ -3744,7 +3753,7 @@ dependencies = [ "netlink-proto", "netlink-sys", "nix 0.26.4", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", ] @@ -3762,7 +3771,7 @@ dependencies = [ "netlink-proto", "netlink-sys", "nix 0.27.1", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", ] @@ -3774,9 +3783,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" @@ -3798,22 +3807,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.43" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.23.21" +version = "0.23.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" dependencies = [ "log", "once_cell", @@ -3882,9 +3891,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" dependencies = [ "web-time", ] @@ -3929,9 +3938,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rusty-fork" @@ -3971,9 +3980,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -3996,7 +4005,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", "core-foundation 0.10.0", "core-foundation-sys", "libc", @@ -4021,9 +4030,9 @@ checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" [[package]] name = "semver" -version = "1.0.24" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "send_wrapper" @@ -4033,9 +4042,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -4061,20 +4070,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -4195,11 +4204,11 @@ dependencies = [ [[package]] name = "simple-dns" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84330be8d9f218c15b4583c74d809643fb82bdcbbd48302a36469ea5b63a1d69" +checksum = "dee851d0e5e7af3721faea1843e8015e820a234f81fda3dea9247e15bac9a86a" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", ] [[package]] @@ -4225,9 +4234,9 @@ checksum = "fad6c857cbab2627dcf01ec85a623ca4e7dcb5691cbaa3d7fb7653671f0d09c9" [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4293,7 +4302,7 @@ dependencies = [ "proc-macro2", "quote", "struct_iterable_internal", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4321,7 +4330,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4365,7 +4374,7 @@ dependencies = [ "pnet_packet", "rand", "socket2", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", "tracing", ] @@ -4398,9 +4407,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.96" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -4409,9 +4418,15 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.2" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ "futures-core", ] @@ -4424,7 +4439,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4433,7 +4448,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -4456,13 +4471,12 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tempfile" -version = "3.15.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", - "getrandom", "once_cell", "rustix", "windows-sys 0.59.0", @@ -4476,11 +4490,11 @@ checksum = "614b328ff036a4ef882c61570f72918f7e9c5bee1da33f8e7f91e01daee7e56c" [[package]] name = "thiserror" -version = "1.0.69" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ - "thiserror-impl 1.0.69", + "thiserror-impl 1.0.68", ] [[package]] @@ -4494,13 +4508,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4511,7 +4525,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4526,9 +4540,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.37" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -4549,9 +4563,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", @@ -4579,9 +4593,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -4594,9 +4608,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", @@ -4612,22 +4626,23 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", + "rustls-pki-types", "tokio", ] @@ -4662,9 +4677,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -4691,10 +4706,10 @@ checksum = "e21a5c399399c3db9f08d8297ac12b500e86bca82e930253fdc62eaf9c0de6ae" dependencies = [ "futures-channel", "futures-util", - "http 1.2.0", + "http 1.1.0", "httparse", "js-sys", - "thiserror 1.0.69", + "thiserror 1.0.68", "tokio", "tokio-tungstenite", "wasm-bindgen", @@ -4703,9 +4718,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -4767,14 +4782,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper", + "sync_wrapper 0.1.2", "tokio", "tower-layer", "tower-service", @@ -4787,9 +4802,9 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ - "bitflags 2.7.0", + "bitflags 2.6.0", "bytes", - "http 1.2.0", + "http 1.1.0", "http-body", "pin-project-lite", "tower-layer", @@ -4818,10 +4833,10 @@ dependencies = [ "axum", "forwarded-header-value", "governor 0.6.3", - "http 1.2.0", + "http 1.1.0", "pin-project", - "thiserror 1.0.69", - "tower 0.5.2", + "thiserror 1.0.68", + "tower 0.5.1", "tracing", ] @@ -4845,7 +4860,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4871,9 +4886,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -4906,7 +4921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -4933,12 +4948,12 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.2.0", + "http 1.1.0", "httparse", "log", "rand", "sha1", - "thiserror 1.0.69", + "thiserror 1.0.68", "utf-8", ] @@ -4971,9 +4986,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" @@ -4986,9 +5001,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" @@ -5029,9 +5044,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.4" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", @@ -5065,9 +5080,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744018581f9a3454a9e15beb8a33b017183f1e7c0cd170232a2d1453b23a51c4" +checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ "getrandom", ] @@ -5140,7 +5155,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -5175,7 +5190,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5211,18 +5226,18 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd5da49bdf1f30054cfe0b8ce2958b8fbeb67c4d82c8967a598af481bef255c" +checksum = "09aed61f5e8d2c18344b3faa33a4c837855fe56642757754775548fee21386c4" dependencies = [ "rustls-pki-types", ] [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -5313,7 +5328,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -5324,7 +5339,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] @@ -5573,9 +5588,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.24" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] @@ -5592,9 +5607,9 @@ dependencies = [ [[package]] name = "wmi" -version = "0.14.3" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c960b3124cc00cefb350159cb43aba8984ed69c93d443df09f3299693171b37" +checksum = "dc47c0776cc6c00d2f7a874a0c846d94d45535936e5a1187693a24f23b4dd701" dependencies = [ "chrono", "futures", @@ -5630,15 +5645,15 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror 1.0.69", + "thiserror 1.0.68", "time", ] [[package]] name = "xml-rs" -version = "0.8.25" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" +checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" [[package]] name = "xmltree" @@ -5666,9 +5681,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" dependencies = [ "serde", "stable_deref_trait", @@ -5678,13 +5693,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", "synstructure", ] @@ -5712,27 +5727,27 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", "synstructure", ] @@ -5761,5 +5776,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.87", ] diff --git a/iroh/src/test_utils.rs b/iroh/src/test_utils.rs index 35edde8298..c0c295d111 100644 --- a/iroh/src/test_utils.rs +++ b/iroh/src/test_utils.rs @@ -68,8 +68,13 @@ pub async fn run_relay_server_with( quic: bool, ) -> Result<(RelayMap, RelayUrl, Server)> { let (certs, server_config) = iroh_relay::server::testing::self_signed_tls_certs_and_config(); + let rustls_cert = certs[0].cert.der(); + let private_key = + rustls::pki_types::PrivatePkcs8KeyDer::from(certs[0].key_pair.serialize_der()); + let private_key = rustls::pki_types::PrivateKeyDer::from(private_key); + let tls = TlsConfig { - cert: CertConfig::<(), ()>::Manual { certs }, + cert: CertConfig::<(), ()>::Manual { private_key, certs }, https_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(), quic_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(), server_config, From a0063376a6a7528f23f343056fc81694ef9ed919 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Fri, 15 Nov 2024 19:46:44 +0100 Subject: [PATCH 2/4] feat(iroh-net): implement support for raw public keys This is step 1 to land #2798 --- Cargo.lock | 420 +++++++++++++++++---------------- iroh-base/Cargo.toml | 2 +- iroh-base/src/key.rs | 21 +- iroh/bench/Cargo.toml | 1 + iroh/bench/src/quinn.rs | 18 +- iroh/src/endpoint.rs | 22 +- iroh/src/lib.rs | 2 + iroh/src/magicsock.rs | 105 ++++++--- iroh/src/magicsock/udp_conn.rs | 6 +- iroh/src/test_utils.rs | 6 +- iroh/src/tls.rs | 165 +++++++------ iroh/src/tls/certificate.rs | 41 ---- iroh/src/tls/resolver.rs | 87 +++++++ iroh/src/tls/verifier.rs | 231 +++++++++++++----- 14 files changed, 697 insertions(+), 430 deletions(-) create mode 100644 iroh/src/tls/resolver.rs diff --git a/Cargo.lock b/Cargo.lock index 0378ab7ffc..d8483fc494 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,9 +53,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -129,9 +129,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "arc-swap" @@ -151,7 +151,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 1.0.68", + "thiserror 1.0.69", "time", ] @@ -163,7 +163,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", "synstructure", ] @@ -175,7 +175,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -186,7 +186,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -197,7 +197,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -234,16 +234,16 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.7" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "axum-macros", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -259,7 +259,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tower 0.5.1", "tower-layer", @@ -276,13 +276,13 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -296,7 +296,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -308,7 +308,7 @@ dependencies = [ "arc-swap", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -435,9 +435,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cast" @@ -447,9 +447,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.1.31" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "shlex", ] @@ -536,9 +536,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -546,9 +546,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -565,14 +565,14 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cobs" @@ -614,7 +614,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -662,9 +662,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -835,7 +835,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -879,6 +879,7 @@ checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", "der_derive", + "pem-rfc7468", "zeroize", ] @@ -904,7 +905,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -933,7 +934,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", "unicode-xid", ] @@ -989,7 +990,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -1083,7 +1084,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -1103,7 +1104,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -1129,12 +1130,12 @@ checksum = "a02a5d186d7bf1cb21f1f95e1a9cfa5c1f2dcd803a47aad454423ceec13525c5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1145,9 +1146,9 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fiat-crypto" @@ -1195,7 +1196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8835f84f38484cc86f110a805655697908257fb9a7af005234060891557198e9" dependencies = [ "nonempty", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -1279,7 +1280,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -1423,16 +1424,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http 1.2.0", "indexmap", "slab", "tokio", @@ -1467,9 +1468,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", "equivalent", @@ -1506,12 +1507,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hermit-abi" version = "0.4.0" @@ -1540,7 +1535,7 @@ dependencies = [ "futures-io", "futures-util", "h2", - "http 1.1.0", + "http 1.2.0", "idna", "ipnet", "once_cell", @@ -1594,7 +1589,7 @@ dependencies = [ "h2", "hickory-proto", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "ipnet", "prefix-trie", "rustls", @@ -1662,9 +1657,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1678,7 +1673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1689,7 +1684,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "pin-project-lite", ] @@ -1724,15 +1719,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", "futures-util", "h2", - "http 1.1.0", + "http 1.2.0", "http-body", "httparse", "httpdate", @@ -1750,7 +1745,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", + "http 1.2.0", "hyper", "hyper-util", "rustls", @@ -1770,7 +1765,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "hyper", "pin-project-lite", @@ -1918,7 +1913,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -1952,7 +1947,7 @@ dependencies = [ "attohttpc", "bytes", "futures", - "http 1.1.0", + "http 1.2.0", "http-body-util", "hyper", "hyper-util", @@ -1965,26 +1960,26 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.1", + "hashbrown 0.15.2", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "tokio", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -2047,7 +2042,7 @@ dependencies = [ "futures-util", "governor 0.7.0", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body-util", "hyper", "hyper-util", @@ -2128,6 +2123,7 @@ dependencies = [ "iroh-metrics", "iroh-quinn", "n0-future", + "rand", "rcgen", "rustls", "tokio", @@ -2152,7 +2148,7 @@ dependencies = [ "governor 0.6.3", "hickory-resolver", "hickory-server", - "http 1.1.0", + "http 1.2.0", "humantime-serde", "iroh", "iroh-metrics", @@ -2304,7 +2300,7 @@ dependencies = [ "governor 0.7.0", "hickory-proto", "hickory-resolver", - "http 1.1.0", + "http 1.2.0", "http-body-util", "hyper", "hyper-util", @@ -2354,7 +2350,7 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.4.0", + "hermit-abi", "libc", "windows-sys 0.52.0", ] @@ -2376,9 +2372,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -2391,7 +2387,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror 1.0.68", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -2420,9 +2416,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" [[package]] name = "libm" @@ -2454,9 +2450,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litemap" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "litrs" @@ -2512,7 +2508,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.1", + "hashbrown 0.15.2", ] [[package]] @@ -2531,7 +2527,7 @@ dependencies = [ "serde_bencode", "serde_bytes", "sha1_smol", - "thiserror 1.0.68", + "thiserror 1.0.69", "tracing", ] @@ -2591,11 +2587,10 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "wasi", "windows-sys 0.52.0", @@ -2616,7 +2611,7 @@ dependencies = [ "rustc_version", "smallvec", "tagptr", - "thiserror 1.0.68", + "thiserror 1.0.69", "uuid", ] @@ -2715,7 +2710,7 @@ dependencies = [ "anyhow", "byteorder", "paste", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -2729,7 +2724,7 @@ dependencies = [ "log", "netlink-packet-core", "netlink-sys", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", ] @@ -2898,7 +2893,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -3015,6 +3010,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" @@ -3028,7 +3032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror 1.0.68", + "thiserror 1.0.69", "ucd-trie", ] @@ -3052,7 +3056,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -3083,7 +3087,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -3181,7 +3185,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -3218,9 +3222,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "portmapper" @@ -3253,9 +3257,9 @@ dependencies = [ [[package]] name = "postcard" -version = "1.0.10" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f7f0a8d620d71c457dd1d47df76bb18960378da56af4527aaa10f515eee732e" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" dependencies = [ "cobs", "embedded-io 0.4.0", @@ -3356,9 +3360,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -3383,7 +3387,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -3429,9 +3433,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", @@ -3440,26 +3444,29 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 1.0.68", + "thiserror 2.0.11", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom", "rand", "ring", "rustc-hash", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.68", + "thiserror 2.0.11", "tinyvec", "tracing", + "web-time", ] [[package]] @@ -3602,7 +3609,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.68", + "thiserror 1.0.69", ] [[package]] @@ -3613,7 +3620,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -3628,9 +3635,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -3682,7 +3689,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body", "http-body-util", "hyper", @@ -3702,7 +3709,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-rustls", "tower-service", @@ -3753,7 +3760,7 @@ dependencies = [ "netlink-proto", "netlink-sys", "nix 0.26.4", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", ] @@ -3771,7 +3778,7 @@ dependencies = [ "netlink-proto", "netlink-sys", "nix 0.27.1", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", ] @@ -3783,9 +3790,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustc_version" @@ -3807,9 +3814,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.39" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", @@ -3820,9 +3827,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.22" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -3980,9 +3987,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -4042,9 +4049,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] @@ -4070,20 +4077,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -4234,9 +4241,9 @@ checksum = "fad6c857cbab2627dcf01ec85a623ca4e7dcb5691cbaa3d7fb7653671f0d09c9" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4302,7 +4309,7 @@ dependencies = [ "proc-macro2", "quote", "struct_iterable_internal", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4330,7 +4337,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4374,7 +4381,7 @@ dependencies = [ "pnet_packet", "rand", "socket2", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -4407,9 +4414,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -4424,9 +4431,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -4439,7 +4446,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4471,9 +4478,9 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -4490,11 +4497,11 @@ checksum = "614b328ff036a4ef882c61570f72918f7e9c5bee1da33f8e7f91e01daee7e56c" [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.68", + "thiserror-impl 1.0.69", ] [[package]] @@ -4508,13 +4515,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4525,7 +4532,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4540,9 +4547,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -4563,9 +4570,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -4608,9 +4615,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -4632,17 +4639,16 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] @@ -4677,9 +4683,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -4706,10 +4712,10 @@ checksum = "e21a5c399399c3db9f08d8297ac12b500e86bca82e930253fdc62eaf9c0de6ae" dependencies = [ "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "httparse", "js-sys", - "thiserror 1.0.68", + "thiserror 1.0.69", "tokio", "tokio-tungstenite", "wasm-bindgen", @@ -4718,9 +4724,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -4804,7 +4810,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.6.0", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body", "pin-project-lite", "tower-layer", @@ -4833,9 +4839,9 @@ dependencies = [ "axum", "forwarded-header-value", "governor 0.6.3", - "http 1.1.0", + "http 1.2.0", "pin-project", - "thiserror 1.0.68", + "thiserror 1.0.69", "tower 0.5.1", "tracing", ] @@ -4860,7 +4866,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4886,9 +4892,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -4921,7 +4927,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -4948,12 +4954,12 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.1.0", + "http 1.2.0", "httparse", "log", "rand", "sha1", - "thiserror 1.0.68", + "thiserror 1.0.69", "utf-8", ] @@ -4986,9 +4992,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -5005,6 +5011,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -5044,9 +5056,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.3" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -5155,7 +5167,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", "wasm-bindgen-shared", ] @@ -5190,7 +5202,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5235,9 +5247,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -5328,7 +5340,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -5339,7 +5351,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] @@ -5645,15 +5657,15 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror 1.0.68", + "thiserror 1.0.69", "time", ] [[package]] name = "xml-rs" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" [[package]] name = "xmltree" @@ -5681,9 +5693,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", @@ -5693,13 +5705,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", "synstructure", ] @@ -5727,27 +5739,27 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", "synstructure", ] @@ -5776,5 +5788,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.90", ] diff --git a/iroh-base/Cargo.toml b/iroh-base/Cargo.toml index 9bf16bcfcf..b66b95ed17 100644 --- a/iroh-base/Cargo.toml +++ b/iroh-base/Cargo.toml @@ -17,7 +17,7 @@ workspace = true [dependencies] curve25519-dalek = { version = "4.1.3", features = ["serde", "rand_core", "zeroize"], optional = true } data-encoding = { version = "2.3.3", optional = true } -ed25519-dalek = { version = "2.0.0", features = ["serde", "rand_core", "zeroize"], optional = true } +ed25519-dalek = { version = "2.0.0", features = ["serde", "rand_core", "zeroize", "pkcs8", "pem"], optional = true } derive_more = { version = "1.0.0", features = ["display"], optional = true } url = { version = "2.5", features = ["serde"], optional = true } postcard = { version = "1", default-features = false, features = ["alloc", "use-std", "experimental-derive"], optional = true } diff --git a/iroh-base/src/key.rs b/iroh-base/src/key.rs index 5f4a6511b1..8ebe95d2ed 100644 --- a/iroh-base/src/key.rs +++ b/iroh-base/src/key.rs @@ -10,7 +10,10 @@ use std::{ use curve25519_dalek::edwards::CompressedEdwardsY; pub use ed25519_dalek::Signature; -use ed25519_dalek::{SignatureError, SigningKey, VerifyingKey}; +use ed25519_dalek::{ + pkcs8::{spki::der::zeroize::Zeroizing, EncodePrivateKey, EncodePublicKey}, + SignatureError, SigningKey, VerifyingKey, +}; use rand_core::CryptoRngCore; use serde::{Deserialize, Serialize}; @@ -99,6 +102,14 @@ impl PublicKey { VerifyingKey::from_bytes(self.0.as_bytes()).expect("already verified") } + /// Serializes the public key as PEM + pub fn serialize_public_pem(&self) -> String { + use ed25519_dalek::pkcs8::spki::der::pem::LineEnding; + let key = self.public(); + key.to_public_key_pem(LineEnding::default()) + .expect("key is valid") + } + /// Construct a `PublicKey` from a slice of bytes. /// /// # Warning @@ -263,6 +274,14 @@ impl SecretKey { self.secret.verifying_key().into() } + /// Serializes the secret key as PEM + pub fn serialize_secret_pem(&self) -> Zeroizing { + use ed25519_dalek::pkcs8::spki::der::pem::LineEnding; + self.secret + .to_pkcs8_pem(LineEnding::default()) + .expect("key is valid") + } + /// Generate a new [`SecretKey`] with a randomness generator. /// /// ```rust diff --git a/iroh/bench/Cargo.toml b/iroh/bench/Cargo.toml index 6be3f82c15..171359df9b 100644 --- a/iroh/bench/Cargo.toml +++ b/iroh/bench/Cargo.toml @@ -13,6 +13,7 @@ iroh = { path = ".." } iroh-metrics = "0.31" n0-future = "0.1.1" quinn = { package = "iroh-quinn", version = "0.13" } +rand = "0.8" rcgen = "0.13" rustls = { version = "0.23", default-features = false, features = ["ring"] } clap = { version = "4", features = ["derive"] } diff --git a/iroh/bench/src/quinn.rs b/iroh/bench/src/quinn.rs index 21028c44c8..2208f129c9 100644 --- a/iroh/bench/src/quinn.rs +++ b/iroh/bench/src/quinn.rs @@ -72,18 +72,20 @@ pub async fn connect_client( let endpoint = quinn::Endpoint::client(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0)).unwrap(); + let secret_key = iroh::SecretKey::generate(&mut rand::rngs::OsRng); + let mut roots = RootCertStore::empty(); roots.add(server_cert)?; - let provider = rustls::crypto::ring::default_provider(); - - let crypto = rustls::ClientConfig::builder_with_provider(provider.into()) - .with_protocol_versions(&[&rustls::version::TLS13]) - .unwrap() - .with_root_certificates(roots) - .with_no_client_auth(); + let client_config = iroh::TlsAuthentication::X509.make_client_config( + &secret_key, + None, + vec![ALPN.to_vec()], + false, + )?; - let mut client_config = quinn::ClientConfig::new(Arc::new(QuicClientConfig::try_from(crypto)?)); + let mut client_config = + quinn::ClientConfig::new(Arc::new(QuicClientConfig::try_from(client_config)?)); client_config.transport_config(Arc::new(transport_config(opt.max_streams, opt.initial_mtu))); let connection = endpoint diff --git a/iroh/src/endpoint.rs b/iroh/src/endpoint.rs index 9102ebb2a2..17e667d72a 100644 --- a/iroh/src/endpoint.rs +++ b/iroh/src/endpoint.rs @@ -109,6 +109,7 @@ pub struct Builder { addr_v6: Option, #[cfg(any(test, feature = "test-utils"))] path_selection: PathSelection, + tls_auth: tls::Authentication, } impl Default for Builder { @@ -131,6 +132,7 @@ impl Default for Builder { addr_v6: None, #[cfg(any(test, feature = "test-utils"))] path_selection: PathSelection::default(), + tls_auth: tls::Authentication::X509, } } } @@ -149,6 +151,7 @@ impl Builder { .unwrap_or_else(|| SecretKey::generate(rand::rngs::OsRng)); let static_config = StaticConfig { transport_config: Arc::new(self.transport_config), + tls_auth: self.tls_auth, keylog: self.keylog, secret_key: secret_key.clone(), }; @@ -328,6 +331,18 @@ impl Builder { self } + /// Use libp2p based self signed certificates for TLS. + pub fn tls_x509(mut self) -> Self { + self.tls_auth = tls::Authentication::X509; + self + } + + /// Use TLS Raw Public Keys + pub fn tls_raw_public_keys(mut self) -> Self { + self.tls_auth = tls::Authentication::RawPublicKey; + self + } + #[cfg(feature = "discovery-pkarr-dht")] /// Configures the endpoint to also use the mainline DHT with default settings. /// @@ -456,6 +471,7 @@ impl Builder { /// Configuration for a [`quinn::Endpoint`] that cannot be changed at runtime. #[derive(Debug)] struct StaticConfig { + tls_auth: tls::Authentication, secret_key: SecretKey, transport_config: Arc, keylog: bool, @@ -465,6 +481,7 @@ impl StaticConfig { /// Create a [`quinn::ServerConfig`] with the specified ALPN protocols. fn create_server_config(&self, alpn_protocols: Vec>) -> Result { let server_config = make_server_config( + self.tls_auth, &self.secret_key, alpn_protocols, self.transport_config.clone(), @@ -479,12 +496,13 @@ impl StaticConfig { // used by iroh::node::Node (or rather iroh::node::Builder) to create a plain Quinn // endpoint. pub fn make_server_config( + tls_auth: tls::Authentication, secret_key: &SecretKey, alpn_protocols: Vec>, transport_config: Arc, keylog: bool, ) -> Result { - let quic_server_config = tls::make_server_config(secret_key, alpn_protocols, keylog)?; + let quic_server_config = tls_auth.make_server_config(secret_key, alpn_protocols, keylog)?; let mut server_config = ServerConfig::with_crypto(Arc::new(quic_server_config)); server_config.transport_config(transport_config); @@ -665,7 +683,7 @@ impl Endpoint { debug!("Attempting connection..."); let client_config = { let alpn_protocols = vec![alpn.to_vec()]; - let quic_client_config = tls::make_client_config( + let quic_client_config = tls::Authentication::X509.make_client_config( &self.static_config.secret_key, Some(node_id), alpn_protocols, diff --git a/iroh/src/lib.rs b/iroh/src/lib.rs index b844020fc0..d8c3f21b6d 100644 --- a/iroh/src/lib.rs +++ b/iroh/src/lib.rs @@ -256,3 +256,5 @@ pub use iroh_relay::{RelayMap, RelayNode}; #[cfg(any(test, feature = "test-utils"))] pub mod test_utils; + +pub use self::tls::Authentication as TlsAuthentication; diff --git a/iroh/src/magicsock.rs b/iroh/src/magicsock.rs index 82ed12ddd2..32c7f1d0d4 100644 --- a/iroh/src/magicsock.rs +++ b/iroh/src/magicsock.rs @@ -143,7 +143,9 @@ pub(crate) struct Options { impl Default for Options { fn default() -> Self { let secret_key = SecretKey::generate(rand::rngs::OsRng); - let server_config = make_default_server_config(&secret_key); + // TODO: make configurable + let tls_auth = crate::tls::Authentication::X509; + let server_config = make_default_server_config(&secret_key, tls_auth); Options { addr_v4: None, addr_v6: None, @@ -163,8 +165,12 @@ impl Default for Options { } /// Generate a server config with no ALPNS and a default transport configuration -fn make_default_server_config(secret_key: &SecretKey) -> ServerConfig { - let quic_server_config = crate::tls::make_server_config(secret_key, vec![], false) +fn make_default_server_config( + secret_key: &SecretKey, + tls_auth: crate::tls::Authentication, +) -> ServerConfig { + let quic_server_config = tls_auth + .make_server_config(secret_key, vec![], false) .expect("should generate valid config"); let mut server_config = ServerConfig::with_crypto(Arc::new(quic_server_config)); server_config.transport_config(Arc::new(quinn::TransportConfig::default())); @@ -3629,12 +3635,25 @@ mod tests { #[tokio::test] #[traced_test] - async fn test_two_devices_roundtrip_quinn_raw() -> Result<()> { - let make_conn = |addr: SocketAddr| -> anyhow::Result { + async fn test_two_devices_roundtrip_quinn_raw_x509() -> Result<()> { + test_two_devices_roundtrip_quinn_raw(tls::Authentication::X509).await + } + + #[tokio::test] + #[traced_test] + async fn test_two_devices_roundtrip_quinn_raw_public_key() -> Result<()> { + test_two_devices_roundtrip_quinn_raw(tls::Authentication::RawPublicKey).await + } + + async fn test_two_devices_roundtrip_quinn_raw(tls_auth: tls::Authentication) -> Result<()> { + let make_conn = |addr: SocketAddr, + tls_auth: tls::Authentication| + -> anyhow::Result { let key = SecretKey::generate(rand::thread_rng()); let conn = std::net::UdpSocket::bind(addr)?; - let quic_server_config = tls::make_server_config(&key, vec![ALPN.to_vec()], false)?; + let quic_server_config = + tls_auth.make_server_config(&key, vec![ALPN.to_vec()], false)?; let mut server_config = quinn::ServerConfig::with_crypto(Arc::new(quic_server_config)); let mut transport_config = quinn::TransportConfig::default(); transport_config.keep_alive_interval(Some(Duration::from_secs(5))); @@ -3648,7 +3667,7 @@ mod tests { )?; let quic_client_config = - tls::make_client_config(&key, None, vec![ALPN.to_vec()], false)?; + tls_auth.make_client_config(&key, None, vec![ALPN.to_vec()], false)?; let mut client_config = quinn::ClientConfig::new(Arc::new(quic_client_config)); let mut transport_config = quinn::TransportConfig::default(); transport_config.max_idle_timeout(Some(Duration::from_secs(10).try_into().unwrap())); @@ -3658,8 +3677,8 @@ mod tests { Ok(quic_ep) }; - let m1 = make_conn("127.0.0.1:0".parse().unwrap())?; - let m2 = make_conn("127.0.0.1:0".parse().unwrap())?; + let m1 = make_conn("127.0.0.1:0".parse().unwrap(), tls_auth)?; + let m2 = make_conn("127.0.0.1:0".parse().unwrap(), tls_auth)?; // msg from a -> b macro_rules! roundtrip { @@ -3778,11 +3797,15 @@ mod tests { #[tokio::test] #[traced_test] async fn test_two_devices_roundtrip_quinn_rebinding_conn() -> Result<()> { - fn make_conn(addr: SocketAddr) -> anyhow::Result { + fn make_conn( + addr: SocketAddr, + tls_auth: tls::Authentication, + ) -> anyhow::Result { let key = SecretKey::generate(rand::thread_rng()); let conn = UdpConn::bind(addr)?; - let quic_server_config = tls::make_server_config(&key, vec![ALPN.to_vec()], false)?; + let quic_server_config = + tls_auth.make_server_config(&key, vec![ALPN.to_vec()], false)?; let mut server_config = quinn::ServerConfig::with_crypto(Arc::new(quic_server_config)); let mut transport_config = quinn::TransportConfig::default(); transport_config.keep_alive_interval(Some(Duration::from_secs(5))); @@ -3796,7 +3819,7 @@ mod tests { )?; let quic_client_config = - tls::make_client_config(&key, None, vec![ALPN.to_vec()], false)?; + tls_auth.make_client_config(&key, None, vec![ALPN.to_vec()], false)?; let mut client_config = quinn::ClientConfig::new(Arc::new(quic_client_config)); let mut transport_config = quinn::TransportConfig::default(); transport_config.max_idle_timeout(Some(Duration::from_secs(10).try_into().unwrap())); @@ -3806,8 +3829,9 @@ mod tests { Ok(quic_ep) } - let m1 = make_conn("127.0.0.1:7770".parse().unwrap())?; - let m2 = make_conn("127.0.0.1:7771".parse().unwrap())?; + let tls_auth = tls::Authentication::X509; + let m1 = make_conn("127.0.0.1:7770".parse().unwrap(), tls_auth)?; + let m2 = make_conn("127.0.0.1:7771".parse().unwrap(), tls_auth)?; // msg from a -> b macro_rules! roundtrip { @@ -4020,8 +4044,12 @@ mod tests { /// /// Use [`magicsock_connect`] to establish connections. #[instrument(name = "ep", skip_all, fields(me = secret_key.public().fmt_short()))] - async fn magicsock_ep(secret_key: SecretKey) -> anyhow::Result { + async fn magicsock_ep( + secret_key: SecretKey, + tls_auth: tls::Authentication, + ) -> anyhow::Result { let server_config = crate::endpoint::make_server_config( + tls_auth, &secret_key, vec![ALPN.to_vec()], Arc::new(quinn::TransportConfig::default()), @@ -4053,6 +4081,7 @@ mod tests { ep_secret_key: SecretKey, addr: NodeIdMappedAddr, node_id: NodeId, + tls_auth: tls::Authentication, ) -> Result { // Endpoint::connect sets this, do the same to have similar behaviour. let mut transport_config = quinn::TransportConfig::default(); @@ -4064,6 +4093,7 @@ mod tests { addr, node_id, Arc::new(transport_config), + tls_auth, ) .await } @@ -4080,10 +4110,11 @@ mod tests { mapped_addr: NodeIdMappedAddr, node_id: NodeId, transport_config: Arc, + tls_auth: tls::Authentication, ) -> Result { let alpns = vec![ALPN.to_vec()]; let quic_client_config = - tls::make_client_config(&ep_secret_key, Some(node_id), alpns, true)?; + tls_auth.make_client_config(&ep_secret_key, Some(node_id), alpns, true)?; let mut client_config = quinn::ClientConfig::new(Arc::new(quic_client_config)); client_config.transport_config(transport_config); let connect = ep.connect_with(client_config, mapped_addr.socket_addr(), "localhost")?; @@ -4096,13 +4127,16 @@ mod tests { async fn test_try_send_no_send_addr() { // Regression test: if there is no send_addr we should keep being able to use the // Endpoint. + + let tls_auth = tls::Authentication::X509; + let secret_key_1 = SecretKey::from_bytes(&[1u8; 32]); let secret_key_2 = SecretKey::from_bytes(&[2u8; 32]); let node_id_2 = secret_key_2.public(); let secret_key_missing_node = SecretKey::from_bytes(&[255u8; 32]); let node_id_missing_node = secret_key_missing_node.public(); - let msock_1 = magicsock_ep(secret_key_1.clone()).await.unwrap(); + let msock_1 = magicsock_ep(secret_key_1.clone(), tls_auth).await.unwrap(); // Generate an address not present in the NodeMap. let bad_addr = NodeIdMappedAddr::generate(); @@ -4118,14 +4152,15 @@ mod tests { secret_key_1.clone(), bad_addr, node_id_missing_node, + tls_auth, ), ) .await; assert!(res.is_err(), "expecting timeout"); // Now check we can still create another connection with this endpoint. - let msock_2 = magicsock_ep(secret_key_2.clone()).await.unwrap(); - let ep_2 = msock_2.endpoint().clone(); + let msock_2 = magicsock_ep(secret_key_2.clone(), tls_auth).await.unwrap(); + // This needs an accept task let accept_task = tokio::spawn({ async fn accept(ep: quinn::Endpoint) -> Result<()> { @@ -4137,8 +4172,9 @@ mod tests { info!("accept finished"); Ok(()) } + let ep = msock_2.endpoint().clone(); async move { - if let Err(err) = accept(ep_2).await { + if let Err(err) = accept(ep).await { error!("{err:#}"); } } @@ -4169,7 +4205,13 @@ mod tests { let addr = msock_1.get_mapping_addr(node_id_2).unwrap(); let res = tokio::time::timeout( Duration::from_secs(10), - magicsock_connect(msock_1.endpoint(), secret_key_1.clone(), addr, node_id_2), + magicsock_connect( + msock_1.endpoint(), + secret_key_1.clone(), + addr, + node_id_2, + tls_auth, + ), ) .await .expect("timeout while connecting"); @@ -4186,12 +4228,15 @@ mod tests { async fn test_try_send_no_udp_addr_or_relay_url() { // This specifically tests the `if udp_addr.is_none() && relay_url.is_none()` // behaviour of MagicSock::try_send. + + let tls_auth = tls::Authentication::X509; + let secret_key_1 = SecretKey::from_bytes(&[1u8; 32]); let secret_key_2 = SecretKey::from_bytes(&[2u8; 32]); let node_id_2 = secret_key_2.public(); - let msock_1 = magicsock_ep(secret_key_1.clone()).await.unwrap(); - let msock_2 = magicsock_ep(secret_key_2.clone()).await.unwrap(); + let msock_1 = magicsock_ep(secret_key_1.clone(), tls_auth).await.unwrap(); + let msock_2 = magicsock_ep(secret_key_2.clone(), tls_auth).await.unwrap(); let ep_2 = msock_2.endpoint().clone(); // We need a task to accept the connection. @@ -4244,6 +4289,7 @@ mod tests { addr_2, node_id_2, Arc::new(transport_config), + tls_auth, ) .await; assert!(res.is_err(), "expected timeout"); @@ -4271,10 +4317,15 @@ mod tests { // We can now connect tokio::time::timeout(Duration::from_secs(10), async move { info!("establishing new connection"); - let conn = - magicsock_connect(msock_1.endpoint(), secret_key_1.clone(), addr_2, node_id_2) - .await - .unwrap(); + let conn = magicsock_connect( + msock_1.endpoint(), + secret_key_1.clone(), + addr_2, + node_id_2, + tls_auth, + ) + .await + .unwrap(); info!("have connection"); let mut stream = conn.open_uni().await.unwrap(); stream.write_all(b"hello").await.unwrap(); diff --git a/iroh/src/magicsock/udp_conn.rs b/iroh/src/magicsock/udp_conn.rs index 50d6e1a273..1006d4b6af 100644 --- a/iroh/src/magicsock/udp_conn.rs +++ b/iroh/src/magicsock/udp_conn.rs @@ -145,7 +145,8 @@ mod tests { fn wrap_socket(conn: impl AsyncUdpSocket) -> Result<(quinn::Endpoint, SecretKey)> { let key = SecretKey::generate(rand::thread_rng()); - let quic_server_config = tls::make_server_config(&key, vec![ALPN.to_vec()], false)?; + let quic_server_config = + tls::Authentication::X509.make_server_config(&key, vec![ALPN.to_vec()], false)?; let server_config = quinn::ServerConfig::with_crypto(Arc::new(quic_server_config)); let mut quic_ep = quinn::Endpoint::new_with_abstract_socket( quinn::EndpointConfig::default(), @@ -154,7 +155,8 @@ mod tests { Arc::new(quinn::TokioRuntime), )?; - let quic_client_config = tls::make_client_config(&key, None, vec![ALPN.to_vec()], false)?; + let quic_client_config = + tls::Authentication::X509.make_client_config(&key, None, vec![ALPN.to_vec()], false)?; let client_config = quinn::ClientConfig::new(Arc::new(quic_client_config)); quic_ep.set_default_client_config(client_config); Ok((quic_ep, key)) diff --git a/iroh/src/test_utils.rs b/iroh/src/test_utils.rs index c0c295d111..00b241f8d3 100644 --- a/iroh/src/test_utils.rs +++ b/iroh/src/test_utils.rs @@ -68,13 +68,9 @@ pub async fn run_relay_server_with( quic: bool, ) -> Result<(RelayMap, RelayUrl, Server)> { let (certs, server_config) = iroh_relay::server::testing::self_signed_tls_certs_and_config(); - let rustls_cert = certs[0].cert.der(); - let private_key = - rustls::pki_types::PrivatePkcs8KeyDer::from(certs[0].key_pair.serialize_der()); - let private_key = rustls::pki_types::PrivateKeyDer::from(private_key); let tls = TlsConfig { - cert: CertConfig::<(), ()>::Manual { private_key, certs }, + cert: CertConfig::<(), ()>::Manual { certs }, https_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(), quic_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(), server_config, diff --git a/iroh/src/tls.rs b/iroh/src/tls.rs index ef22a33692..5bd51909f5 100644 --- a/iroh/src/tls.rs +++ b/iroh/src/tls.rs @@ -1,7 +1,10 @@ -//! TLS configuration based on libp2p TLS specs. +//! TLS configuration for iroh. //! -//! See . -//! Based on rust-libp2p/transports/tls +//! Currently there are two mechanisms available +//! - Raw Public Keys, using the TLS extension described in [RFC 7250] +//! - libp2p-tls, based on . +//! +//! [RFC 7250]: https://datatracker.ietf.org/doc/html/rfc7250 use std::sync::Arc; @@ -9,12 +12,91 @@ use iroh_base::{PublicKey, SecretKey}; use quinn::crypto::rustls::{NoInitialCipherSuite, QuicClientConfig, QuicServerConfig}; use tracing::warn; -use self::certificate::AlwaysResolvesCert; +use self::resolver::AlwaysResolvesCert; pub mod certificate; +mod resolver; mod verifier; -/// Error for generating iroh p2p TLS configs. +/// TLS Authentication mechanism +#[derive(Default, Debug, Copy, Clone, PartialEq, Eq)] +pub enum Authentication { + /// Self signed certificates, based on libp2p-tls + #[default] + X509, + /// RFC 7250 TLS extension: Raw Public Keys. + RawPublicKey, +} + +impl Authentication { + /// Create a TLS client configuration. + /// + /// If *keylog* is `true` this will enable logging of the pre-master key to the file in the + /// `SSLKEYLOGFILE` environment variable. This can be used to inspect the traffic for + /// debugging purposes. + pub fn make_client_config( + self, + secret_key: &SecretKey, + remote_peer_id: Option, + alpn_protocols: Vec>, + keylog: bool, + ) -> Result { + let cert_resolver = Arc::new( + AlwaysResolvesCert::new(self, secret_key).expect("Client cert key DER is valid; qed"), + ); + + let mut crypto = rustls::ClientConfig::builder_with_provider(Arc::new( + rustls::crypto::ring::default_provider(), + )) + .with_protocol_versions(verifier::PROTOCOL_VERSIONS) + .expect("version supported by ring") + .dangerous() + .with_custom_certificate_verifier(Arc::new( + verifier::CertificateVerifier::with_remote_peer_id(self, remote_peer_id), + )) + .with_client_cert_resolver(cert_resolver); + crypto.alpn_protocols = alpn_protocols; + if keylog { + warn!("enabling SSLKEYLOGFILE for TLS pre-master keys"); + crypto.key_log = Arc::new(rustls::KeyLogFile::new()); + } + let config = crypto.try_into()?; + Ok(config) + } + + /// Create a TLS server configuration. + /// + /// If *keylog* is `true` this will enable logging of the pre-master key to the file in the + /// `SSLKEYLOGFILE` environment variable. This can be used to inspect the traffic for + /// debugging purposes. + pub fn make_server_config( + self, + secret_key: &SecretKey, + alpn_protocols: Vec>, + keylog: bool, + ) -> Result { + let cert_resolver = Arc::new( + AlwaysResolvesCert::new(self, secret_key).expect("Server cert key DER is valid; qed"), + ); + + let mut crypto = rustls::ServerConfig::builder_with_provider(Arc::new( + rustls::crypto::ring::default_provider(), + )) + .with_protocol_versions(verifier::PROTOCOL_VERSIONS) + .expect("fixed config") + .with_client_cert_verifier(Arc::new(verifier::CertificateVerifier::new(self))) + .with_cert_resolver(cert_resolver); + crypto.alpn_protocols = alpn_protocols; + if keylog { + warn!("enabling SSLKEYLOGFILE for TLS pre-master keys"); + crypto.key_log = Arc::new(rustls::KeyLogFile::new()); + } + let config = crypto.try_into()?; + Ok(config) + } +} + +/// Error for generating TLS configs. #[derive(Debug, thiserror::Error)] pub enum CreateConfigError { /// Error generating the certificate. @@ -23,74 +105,7 @@ pub enum CreateConfigError { /// Error creating QUIC config. #[error("Error creating QUIC config")] ConfigError(#[from] NoInitialCipherSuite), -} - -/// Create a TLS client configuration. -/// -/// If *keylog* is `true` this will enable logging of the pre-master key to the file in the -/// `SSLKEYLOGFILE` environment variable. This can be used to inspect the traffic for -/// debugging purposes. -pub fn make_client_config( - secret_key: &SecretKey, - remote_peer_id: Option, - alpn_protocols: Vec>, - keylog: bool, -) -> Result { - let (certificate, secret_key) = certificate::generate(secret_key)?; - - let cert_resolver = Arc::new( - AlwaysResolvesCert::new(certificate, &secret_key) - .expect("Client cert key DER is valid; qed"), - ); - - let mut crypto = rustls::ClientConfig::builder_with_provider(Arc::new( - rustls::crypto::ring::default_provider(), - )) - .with_protocol_versions(verifier::PROTOCOL_VERSIONS) - .expect("version supported by ring") - .dangerous() - .with_custom_certificate_verifier(Arc::new( - verifier::Libp2pCertificateVerifier::with_remote_peer_id(remote_peer_id), - )) - .with_client_cert_resolver(cert_resolver); - crypto.alpn_protocols = alpn_protocols; - if keylog { - warn!("enabling SSLKEYLOGFILE for TLS pre-master keys"); - crypto.key_log = Arc::new(rustls::KeyLogFile::new()); - } - let config = crypto.try_into()?; - Ok(config) -} - -/// Create a TLS server configuration. -/// -/// If *keylog* is `true` this will enable logging of the pre-master key to the file in the -/// `SSLKEYLOGFILE` environment variable. This can be used to inspect the traffic for -/// debugging purposes. -pub fn make_server_config( - secret_key: &SecretKey, - alpn_protocols: Vec>, - keylog: bool, -) -> Result { - let (certificate, secret_key) = certificate::generate(secret_key)?; - - let cert_resolver = Arc::new( - AlwaysResolvesCert::new(certificate, &secret_key) - .expect("Server cert key DER is valid; qed"), - ); - - let mut crypto = rustls::ServerConfig::builder_with_provider(Arc::new( - rustls::crypto::ring::default_provider(), - )) - .with_protocol_versions(verifier::PROTOCOL_VERSIONS) - .expect("fixed config") - .with_client_cert_verifier(Arc::new(verifier::Libp2pCertificateVerifier::new())) - .with_cert_resolver(cert_resolver); - crypto.alpn_protocols = alpn_protocols; - if keylog { - warn!("enabling SSLKEYLOGFILE for TLS pre-master keys"); - crypto.key_log = Arc::new(rustls::KeyLogFile::new()); - } - let config = crypto.try_into()?; - Ok(config) + /// Rustls configuration error + #[error("rustls error")] + Rustls(#[from] rustls::Error), } diff --git a/iroh/src/tls/certificate.rs b/iroh/src/tls/certificate.rs index 9797d30750..aecf9b5677 100644 --- a/iroh/src/tls/certificate.rs +++ b/iroh/src/tls/certificate.rs @@ -5,8 +5,6 @@ //! Based on rust-libp2p/transports/tls/src/certificate.rs originally licensed under MIT by Parity //! Technologies (UK) Ltd. -use std::sync::Arc; - use der::{asn1::OctetStringRef, Decode, Encode, Sequence}; use iroh_base::{PublicKey, SecretKey, Signature}; use x509_parser::prelude::*; @@ -27,45 +25,6 @@ const P2P_SIGNING_PREFIX: [u8; 21] = *b"libp2p-tls-handshake:"; // Similarly, hash functions with an output length less than 256 bits MUST NOT be used. static P2P_SIGNATURE_ALGORITHM: &rcgen::SignatureAlgorithm = &rcgen::PKCS_ECDSA_P256_SHA256; -#[derive(Debug)] -pub(crate) struct AlwaysResolvesCert(Arc); - -impl AlwaysResolvesCert { - pub(crate) fn new( - cert: rustls::pki_types::CertificateDer<'static>, - key: &rustls::pki_types::PrivateKeyDer<'_>, - ) -> Result { - let certified_key = rustls::sign::CertifiedKey::new( - vec![cert], - rustls::crypto::ring::sign::any_ecdsa_type(key)?, - ); - Ok(Self(Arc::new(certified_key))) - } -} - -impl rustls::client::ResolvesClientCert for AlwaysResolvesCert { - fn resolve( - &self, - _root_hint_subjects: &[&[u8]], - _sigschemes: &[rustls::SignatureScheme], - ) -> Option> { - Some(Arc::clone(&self.0)) - } - - fn has_certs(&self) -> bool { - true - } -} - -impl rustls::server::ResolvesServerCert for AlwaysResolvesCert { - fn resolve( - &self, - _client_hello: rustls::server::ClientHello<'_>, - ) -> Option> { - Some(Arc::clone(&self.0)) - } -} - /// The public host key and the signature are ANS.1-encoded /// into the SignedKey data structure, which is carried in the libp2p Public Key Extension. #[derive(Clone, Debug, Eq, PartialEq, Sequence)] diff --git a/iroh/src/tls/resolver.rs b/iroh/src/tls/resolver.rs new file mode 100644 index 0000000000..5a61febabc --- /dev/null +++ b/iroh/src/tls/resolver.rs @@ -0,0 +1,87 @@ +use std::sync::Arc; + +use iroh_base::SecretKey; +use webpki::types::{pem::PemObject, CertificateDer, PrivatePkcs8KeyDer}; + +use super::{certificate, CreateConfigError}; +use crate::tls::Authentication; + +#[derive(Debug)] +pub(crate) struct AlwaysResolvesCert { + key: Arc, + auth: Authentication, +} + +impl AlwaysResolvesCert { + pub(crate) fn new( + auth: Authentication, + secret_key: &SecretKey, + ) -> Result { + let key = match auth { + Authentication::X509 => { + let (cert, key) = certificate::generate(secret_key)?; + let certified_key = rustls::sign::CertifiedKey::new( + vec![cert], + rustls::crypto::ring::sign::any_ecdsa_type(&key)?, + ); + Arc::new(certified_key) + } + Authentication::RawPublicKey => { + // Directly use the key + let client_private_key = secret_key.serialize_secret_pem(); + let client_private_key = + PrivatePkcs8KeyDer::from_pem_slice(client_private_key.as_bytes()) + .expect("cannot open private key file"); + let client_private_key = + rustls::crypto::ring::sign::any_eddsa_type(&client_private_key)?; + + let client_public_key = client_private_key + .public_key() + .ok_or(rustls::Error::InconsistentKeys( + rustls::InconsistentKeys::Unknown, + )) + .expect("cannot load public key"); + let client_public_key_as_cert = CertificateDer::from(client_public_key.to_vec()); + + let certified_key = rustls::sign::CertifiedKey::new( + vec![client_public_key_as_cert], + client_private_key, + ); + + Arc::new(certified_key) + } + }; + Ok(Self { key, auth }) + } +} + +impl rustls::client::ResolvesClientCert for AlwaysResolvesCert { + fn resolve( + &self, + _root_hint_subjects: &[&[u8]], + _sigschemes: &[rustls::SignatureScheme], + ) -> Option> { + Some(Arc::clone(&self.key)) + } + + fn only_raw_public_keys(&self) -> bool { + matches!(self.auth, Authentication::RawPublicKey) + } + + fn has_certs(&self) -> bool { + true + } +} + +impl rustls::server::ResolvesServerCert for AlwaysResolvesCert { + fn resolve( + &self, + _client_hello: rustls::server::ClientHello<'_>, + ) -> Option> { + Some(Arc::clone(&self.key)) + } + + fn only_raw_public_keys(&self) -> bool { + matches!(self.auth, Authentication::RawPublicKey) + } +} diff --git a/iroh/src/tls/verifier.rs b/iroh/src/tls/verifier.rs index 8841d778aa..3082d1bb57 100644 --- a/iroh/src/tls/verifier.rs +++ b/iroh/src/tls/verifier.rs @@ -1,73 +1,101 @@ -//! TLS 1.3 certificates and handshakes handling for libp2p +//! TLS 1.3 certificates and handshakes handling. //! //! This module handles a verification of a client/server certificate chain -//! and signatures allegedly by the given certificates. +//! and signatures allegedly by the given certificates, or using raw public keys. //! -//! Based on rust-libp2p/transports/tls/src/verifier.rs originally licensed under MIT by Parity -//! Technologies (UK) Ltd. +//! +//! libp2p-tls certificate part is based on rust-libp2p/transports/tls/src/verifier.rs originally +//! licensed under MIT by Parity Technologies (UK) Ltd. + use std::sync::Arc; use iroh_base::PublicKey; use rustls::{ client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier}, - pki_types::CertificateDer as Certificate, + crypto::{verify_tls13_signature_with_raw_key, WebPkiSupportedAlgorithms}, + pki_types::{pem::PemObject, CertificateDer as Certificate}, server::danger::{ClientCertVerified, ClientCertVerifier}, CertificateError, DigitallySignedStruct, DistinguishedName, OtherError, PeerMisbehaved, SignatureScheme, SupportedProtocolVersion, }; +use webpki::{ring as webpki_algs, types::SubjectPublicKeyInfoDer}; -use super::certificate; +use super::{certificate, Authentication}; -/// The protocol versions supported by this verifier. -/// -/// The spec says: -/// -/// > The libp2p handshake uses TLS 1.3 (and higher). -/// > Endpoints MUST NOT negotiate lower TLS versions. +/// The only TLS version we support is 1.3 pub static PROTOCOL_VERSIONS: &[&SupportedProtocolVersion] = &[&rustls::version::TLS13]; -/// Implementation of the `rustls` certificate verification traits for libp2p. +static SUPPORTED_SIG_ALGS: WebPkiSupportedAlgorithms = WebPkiSupportedAlgorithms { + all: &[ + webpki_algs::ECDSA_P256_SHA256, + webpki_algs::ECDSA_P256_SHA384, + webpki_algs::ECDSA_P384_SHA256, + webpki_algs::ECDSA_P384_SHA384, + webpki_algs::ED25519, + ], + mapping: &[ + // Note: for TLS1.2 the curve is not fixed by SignatureScheme. For TLS1.3 it is. + ( + SignatureScheme::ECDSA_NISTP384_SHA384, + &[ + webpki_algs::ECDSA_P384_SHA384, + webpki_algs::ECDSA_P256_SHA384, + ], + ), + ( + SignatureScheme::ECDSA_NISTP256_SHA256, + &[ + webpki_algs::ECDSA_P256_SHA256, + webpki_algs::ECDSA_P384_SHA256, + ], + ), + (SignatureScheme::ED25519, &[webpki_algs::ED25519]), + ], +}; + +/// Implementation of the `rustls` certificate verification traits. /// /// Only TLS 1.3 is supported. TLS 1.2 should be disabled in the configuration of `rustls`. #[derive(Debug)] -pub struct Libp2pCertificateVerifier { - /// The peer ID we intend to connect to +pub struct CertificateVerifier { + /// The peer we intend to connect to. remote_peer_id: Option, + /// Which TLS authentication mode to operate in. + auth: Authentication, + trusted_spki: Vec>, } -/// libp2p requires the following of X.509 server certificate chains: +/// We require the following +/// Either X.509 server certificate chains: /// /// - Exactly one certificate must be presented. /// - The certificate must be self-signed. -/// - The certificate must have a valid libp2p extension that includes a -/// signature of its public key. -impl Libp2pCertificateVerifier { - pub fn new() -> Self { - Self { - remote_peer_id: None, - } - } - pub fn with_remote_peer_id(remote_peer_id: Option) -> Self { - Self { remote_peer_id } +/// - The certificate must have a valid libp2p extension that includes a signature of its public key. +/// +/// or a raw public key. +impl CertificateVerifier { + pub fn new(auth: Authentication) -> Self { + Self::with_remote_peer_id(auth, None) } - /// Return the list of SignatureSchemes that this verifier will handle, - /// in `verify_tls12_signature` and `verify_tls13_signature` calls. - /// - /// This should be in priority order, with the most preferred first. - fn verification_schemes() -> Vec { - vec![ - // TODO SignatureScheme::ECDSA_NISTP521_SHA512 is not supported by `ring` yet - SignatureScheme::ECDSA_NISTP384_SHA384, - SignatureScheme::ECDSA_NISTP256_SHA256, - // TODO SignatureScheme::ED448 is not supported by `ring` yet - SignatureScheme::ED25519, - // In particular, RSA SHOULD NOT be used. - ] + pub fn with_remote_peer_id(auth: Authentication, remote_peer_id: Option) -> Self { + let mut trusted_spki = Vec::new(); + if let Some(key) = remote_peer_id { + let pem_key = key.serialize_public_pem(); + let remote_key = SubjectPublicKeyInfoDer::from_pem_slice(pem_key.as_bytes()) + .expect("cannot remote open pub key"); + trusted_spki.push(remote_key); + } + + Self { + remote_peer_id, + auth, + trusted_spki, + } } } -impl ServerCertVerifier for Libp2pCertificateVerifier { +impl ServerCertVerifier for CertificateVerifier { fn verify_server_cert( &self, end_entity: &Certificate, @@ -76,21 +104,42 @@ impl ServerCertVerifier for Libp2pCertificateVerifier { _ocsp_response: &[u8], _now: rustls::pki_types::UnixTime, ) -> Result { - let peer_id = verify_presented_certs(end_entity, intermediates)?; - - if let Some(ref remote_peer_id) = self.remote_peer_id { - // The public host key allows the peer to calculate the peer ID of the peer - // it is connecting to. Clients MUST verify that the peer ID derived from - // the certificate matches the peer ID they intended to connect to, - // and MUST abort the connection if there is a mismatch. - if remote_peer_id != &peer_id { - return Err(rustls::Error::PeerMisbehaved( - PeerMisbehaved::BadCertChainExtensions, - )); + match self.auth { + Authentication::X509 => { + let peer_id = verify_presented_certs(end_entity, intermediates)?; + + if let Some(ref remote_peer_id) = self.remote_peer_id { + // The public host key allows the peer to calculate the peer ID of the peer + // it is connecting to. Clients MUST verify that the peer ID derived from + // the certificate matches the peer ID they intended to connect to, + // and MUST abort the connection if there is a mismatch. + if remote_peer_id != &peer_id { + return Err(rustls::Error::PeerMisbehaved( + PeerMisbehaved::BadCertChainExtensions, + )); + } + } + Ok(ServerCertVerified::assertion()) } - } + Authentication::RawPublicKey => { + if !intermediates.is_empty() { + return Err(rustls::Error::InvalidCertificate( + CertificateError::UnknownIssuer, + )); + } + if self.trusted_spki.is_empty() { + return Ok(ServerCertVerified::assertion()); + } + let end_entity_as_spki = SubjectPublicKeyInfoDer::from(end_entity.as_ref()); - Ok(ServerCertVerified::assertion()) + match self.trusted_spki.contains(&end_entity_as_spki) { + false => Err(rustls::Error::InvalidCertificate( + CertificateError::UnknownIssuer, + )), + true => Ok(ServerCertVerified::assertion()), + } + } + } } fn verify_tls12_signature( @@ -99,7 +148,9 @@ impl ServerCertVerifier for Libp2pCertificateVerifier { _cert: &Certificate, _dss: &DigitallySignedStruct, ) -> Result { - unreachable!("`PROTOCOL_VERSIONS` only allows TLS 1.3") + Err(rustls::Error::PeerIncompatible( + rustls::PeerIncompatible::Tls12NotOffered, + )) } fn verify_tls13_signature( @@ -108,22 +159,38 @@ impl ServerCertVerifier for Libp2pCertificateVerifier { cert: &Certificate, dss: &DigitallySignedStruct, ) -> Result { - verify_tls13_signature(cert, dss.scheme, message, dss.signature()) + match self.auth { + Authentication::X509 => { + verify_tls13_signature(cert, dss.scheme, message, dss.signature()) + } + Authentication::RawPublicKey => verify_tls13_signature_with_raw_key( + message, + &SubjectPublicKeyInfoDer::from(cert.as_ref()), + dss, + &SUPPORTED_SIG_ALGS, + ), + } } fn supported_verify_schemes(&self) -> Vec { - Self::verification_schemes() + SUPPORTED_SIG_ALGS.supported_schemes() + } + + fn requires_raw_public_keys(&self) -> bool { + matches!(self.auth, Authentication::RawPublicKey) } } -/// libp2p requires the following of X.509 client certificate chains: +/// We requires either following of X.509 client certificate chains: /// /// - Exactly one certificate must be presented. In particular, client /// authentication is mandatory in libp2p. /// - The certificate must be self-signed. /// - The certificate must have a valid libp2p extension that includes a /// signature of its public key. -impl ClientCertVerifier for Libp2pCertificateVerifier { +/// +/// or a valid raw public key configuration +impl ClientCertVerifier for CertificateVerifier { fn offer_client_auth(&self) -> bool { true } @@ -134,9 +201,29 @@ impl ClientCertVerifier for Libp2pCertificateVerifier { intermediates: &[Certificate], _now: rustls::pki_types::UnixTime, ) -> Result { - verify_presented_certs(end_entity, intermediates)?; - - Ok(ClientCertVerified::assertion()) + match self.auth { + Authentication::X509 => { + verify_presented_certs(end_entity, intermediates)?; + Ok(ClientCertVerified::assertion()) + } + Authentication::RawPublicKey => { + if !intermediates.is_empty() { + return Err(rustls::Error::InvalidCertificate( + CertificateError::UnknownIssuer, + )); + } + if self.trusted_spki.is_empty() { + return Ok(ClientCertVerified::assertion()); + } + let end_entity_as_spki = SubjectPublicKeyInfoDer::from(end_entity.as_ref()); + match self.trusted_spki.contains(&end_entity_as_spki) { + false => Err(rustls::Error::InvalidCertificate( + CertificateError::UnknownIssuer, + )), + true => Ok(ClientCertVerified::assertion()), + } + } + } } fn verify_tls12_signature( @@ -145,7 +232,9 @@ impl ClientCertVerifier for Libp2pCertificateVerifier { _cert: &Certificate, _dss: &DigitallySignedStruct, ) -> Result { - unreachable!("`PROTOCOL_VERSIONS` only allows TLS 1.3") + Err(rustls::Error::PeerIncompatible( + rustls::PeerIncompatible::Tls12NotOffered, + )) } fn verify_tls13_signature( @@ -154,16 +243,30 @@ impl ClientCertVerifier for Libp2pCertificateVerifier { cert: &Certificate, dss: &DigitallySignedStruct, ) -> Result { - verify_tls13_signature(cert, dss.scheme, message, dss.signature()) + match self.auth { + Authentication::X509 => { + verify_tls13_signature(cert, dss.scheme, message, dss.signature()) + } + Authentication::RawPublicKey => verify_tls13_signature_with_raw_key( + message, + &SubjectPublicKeyInfoDer::from(cert.as_ref()), + dss, + &SUPPORTED_SIG_ALGS, + ), + } } fn supported_verify_schemes(&self) -> Vec { - Self::verification_schemes() + SUPPORTED_SIG_ALGS.supported_schemes() } fn root_hint_subjects(&self) -> &[DistinguishedName] { &[][..] } + + fn requires_raw_public_keys(&self) -> bool { + matches!(self.auth, Authentication::RawPublicKey) + } } /// When receiving the certificate chain, an endpoint From dfe0885edf8dd012a2b50e687cdda0bd902ef916 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 3 Feb 2025 18:12:40 +0100 Subject: [PATCH 3/4] fixup --- iroh/bench/src/quinn.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/iroh/bench/src/quinn.rs b/iroh/bench/src/quinn.rs index 2208f129c9..21028c44c8 100644 --- a/iroh/bench/src/quinn.rs +++ b/iroh/bench/src/quinn.rs @@ -72,20 +72,18 @@ pub async fn connect_client( let endpoint = quinn::Endpoint::client(SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0)).unwrap(); - let secret_key = iroh::SecretKey::generate(&mut rand::rngs::OsRng); - let mut roots = RootCertStore::empty(); roots.add(server_cert)?; - let client_config = iroh::TlsAuthentication::X509.make_client_config( - &secret_key, - None, - vec![ALPN.to_vec()], - false, - )?; + let provider = rustls::crypto::ring::default_provider(); + + let crypto = rustls::ClientConfig::builder_with_provider(provider.into()) + .with_protocol_versions(&[&rustls::version::TLS13]) + .unwrap() + .with_root_certificates(roots) + .with_no_client_auth(); - let mut client_config = - quinn::ClientConfig::new(Arc::new(QuicClientConfig::try_from(client_config)?)); + let mut client_config = quinn::ClientConfig::new(Arc::new(QuicClientConfig::try_from(crypto)?)); client_config.transport_config(Arc::new(transport_config(opt.max_streams, opt.initial_mtu))); let connection = endpoint From d21dffbd703146fac1f375cbbbc48fa3023da2b5 Mon Sep 17 00:00:00 2001 From: dignifiedquire Date: Mon, 3 Feb 2025 18:14:48 +0100 Subject: [PATCH 4/4] keep tls private --- iroh/src/lib.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/iroh/src/lib.rs b/iroh/src/lib.rs index d8c3f21b6d..b844020fc0 100644 --- a/iroh/src/lib.rs +++ b/iroh/src/lib.rs @@ -256,5 +256,3 @@ pub use iroh_relay::{RelayMap, RelayNode}; #[cfg(any(test, feature = "test-utils"))] pub mod test_utils; - -pub use self::tls::Authentication as TlsAuthentication;