diff --git a/Cargo.lock b/Cargo.lock index 9fb0114..12ba76f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -163,17 +163,7 @@ dependencies = [ "futures-lite", "rustix 0.37.27", "signal-hook", - "windows-sys", -] - -[[package]] -name = "async-rustls" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd10f063fb367d26334e10c50c67ea31ac542b8c3402be2251db4cfc5d74ba66" -dependencies = [ - "futures-io", - "rustls", + "windows-sys 0.48.0", ] [[package]] @@ -218,7 +208,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -244,6 +234,32 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "aws-lc-rs" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df33e4a55b03f8780ba55041bc7be91a2a8ec8c03517b0379d2d6c96d2c30d95" +dependencies = [ + "aws-lc-sys", + "mirai-annotations", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ede3d6e360a48436fee127cb81710834407b1ec0c48a001cc29dec9005f73e" +dependencies = [ + "bindgen", + "cmake", + "dunce", + "fs_extra", + "libc", + "paste", +] + [[package]] name = "backtrace" version = "0.3.69" @@ -265,6 +281,29 @@ version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" +[[package]] +name = "bindgen" +version = "0.69.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +dependencies = [ + "bitflags 2.4.0", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.55", + "which", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -313,12 +352,41 @@ dependencies = [ "libc", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "clang-sys" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + [[package]] name = "concurrent-queue" version = "2.2.0" @@ -363,6 +431,18 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + [[package]] name = "equivalent" version = "1.0.1" @@ -371,23 +451,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -421,7 +490,6 @@ dependencies = [ "async-lock", "async-native-tls", "async-net", - "async-rustls", "async-std", "async-trait", "bytes", @@ -431,6 +499,7 @@ dependencies = [ "fluvio-wasm-timer", "flv-util", "futures-lite", + "futures-rustls", "futures-timer", "futures-util", "http", @@ -527,6 +596,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.28" @@ -598,7 +673,18 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", +] + +[[package]] +name = "futures-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" +dependencies = [ + "futures-io", + "rustls", + "rustls-pki-types", ] [[package]] @@ -654,6 +740,12 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "gloo-timers" version = "0.2.6" @@ -697,6 +789,15 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "http" version = "0.2.11" @@ -794,7 +895,16 @@ checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi", "libc", - "windows-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", ] [[package]] @@ -827,11 +937,27 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" -version = "0.2.147" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "libloading" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.48.5", +] [[package]] name = "linux-raw-sys" @@ -841,9 +967,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -897,6 +1023,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -906,6 +1038,12 @@ dependencies = [ "adler", ] +[[package]] +name = "mirai-annotations" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1" + [[package]] name = "native-tls" version = "0.2.11" @@ -937,6 +1075,16 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -995,7 +1143,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -1063,6 +1211,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + [[package]] name = "percent-encoding" version = "2.3.0" @@ -1096,7 +1250,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -1130,7 +1284,7 @@ dependencies = [ "libc", "log", "pin-project-lite", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1148,20 +1302,30 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +[[package]] +name = "prettyplease" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" +dependencies = [ + "proc-macro2", + "syn 2.0.55", +] + [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -1260,17 +1424,17 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "ring" -version = "0.16.20" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1279,6 +1443,12 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.4.0" @@ -1299,50 +1469,62 @@ dependencies = [ "io-lifetimes", "libc", "linux-raw-sys 0.3.8", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "rustix" -version = "0.38.9" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bfe0f2582b4931a45d1fa608f8a8722e8b3c7ac54dd6d5f3b3212791fedef49" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ "bitflags 2.4.0", "errno", "libc", - "linux-raw-sys 0.4.5", - "windows-sys", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.6" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb" +checksum = "8c4d6d8ad9f2492485e13453acbb291dd08f64441b6609c491f1c2cd2c6b4fe1" dependencies = [ + "aws-lc-rs", "log", - "ring", + "once_cell", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab" dependencies = [ "base64", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868e20fada228fefaf6b652e00cc73623d54f8171e7352c18bb281571f2d92da" + [[package]] name = "rustls-webpki" -version = "0.101.4" +version = "0.102.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" dependencies = [ + "aws-lc-rs", "ring", + "rustls-pki-types", "untrusted", ] @@ -1358,7 +1540,7 @@ version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1373,16 +1555,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "security-framework" version = "2.9.2" @@ -1435,7 +1607,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -1458,6 +1630,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook" version = "0.3.17" @@ -1509,14 +1687,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "subtle" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -1531,9 +1715,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.29" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote", @@ -1549,8 +1733,8 @@ dependencies = [ "cfg-if", "fastrand 2.0.0", "redox_syscall 0.3.5", - "rustix 0.38.9", - "windows-sys", + "rustix 0.38.32", + "windows-sys 0.48.0", ] [[package]] @@ -1570,7 +1754,7 @@ checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -1619,7 +1803,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -1663,7 +1847,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", ] [[package]] @@ -1745,9 +1929,9 @@ dependencies = [ [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" @@ -1820,7 +2004,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", "wasm-bindgen-shared", ] @@ -1854,7 +2038,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.55", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1905,6 +2089,18 @@ version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.32", +] + [[package]] name = "winapi" version = "0.3.9" @@ -1933,7 +2129,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", ] [[package]] @@ -1942,13 +2147,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] [[package]] @@ -1957,42 +2177,84 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + [[package]] name = "ws_stream_wasm" version = "0.7.4" @@ -2011,3 +2273,9 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", ] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/Cargo.toml b/Cargo.toml index e9fdc1c..6816ddb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ tls = ["rust_tls"] rust_tls = [ "net", "rustls-pemfile", - "async-rustls", + "futures-rustls", "pin-project", "futures-util/io", ] @@ -96,14 +96,14 @@ async-native-tls = { version = "0.4.0", optional = true } async-fs = { version = "1.3.0", optional = true } async-io = { version = "1.1.2", optional = true } async-net = { version = "1.6.0", optional = true } -async-rustls = { version = "0.4.1", features = ["dangerous_configuration"], optional = true } +futures-rustls = { version = "0.26.0", features = ["aws-lc-rs"], optional = true } async-std = { version = "1.12.0", default-features = false, optional = true } memmap2 = { version = "0.5", optional = true } native-tls = { version = "0.2.4", optional = true } openssl = { version = "0.10.35", optional = true } openssl-sys = { version = "0.9.65", optional = true, features = ["vendored"]} nix = { version = "0.26.0", optional = true } -rustls-pemfile = { version = "1.0.0", optional = true } +rustls-pemfile = { version = "2.1.1", optional = true } socket2 = { version = "0.5.3", default-features = false, features = ["all"], optional = true } diff --git a/src/http_client/async_std_compat.rs b/src/http_client/async_std_compat.rs index e92c0a1..032e05f 100644 --- a/src/http_client/async_std_compat.rs +++ b/src/http_client/async_std_compat.rs @@ -8,8 +8,8 @@ use std::{ }; use anyhow::{anyhow, Error}; -use async_rustls::rustls::ClientConfig; use async_std::io::{Read, Write}; +use futures_rustls::rustls::ClientConfig; use hyper::{ client::connect::{Connected, Connection}, rt, diff --git a/src/http_client/client.rs b/src/http_client/client.rs index 241c460..f6c2239 100644 --- a/src/http_client/client.rs +++ b/src/http_client/client.rs @@ -1,7 +1,7 @@ use std::{str::FromStr, sync::Arc}; use anyhow::{anyhow, Result}; -use async_rustls::rustls::{OwnedTrustAnchor, RootCertStore}; +use futures_rustls::rustls::{pki_types::TrustAnchor, RootCertStore}; use hyper::{Body, Uri}; use once_cell::sync::Lazy; @@ -22,18 +22,14 @@ pub struct Client { static ROOT_CERT_STORE: Lazy = Lazy::new(|| { let mut store = RootCertStore::empty(); store.add_trust_anchors(webpki_roots::TLS_SERVER_ROOTS.iter().map(|ta| { - OwnedTrustAnchor::from_subject_spki_name_constraints( - ta.subject, - ta.spki, - ta.name_constraints, - ) + TrustAnchor::from_subject_spki_name_constraints(ta.subject, ta.spki, ta.name_constraints) })); store }); impl Default for Client { fn default() -> Self { - let tls = async_rustls::rustls::ClientConfig::builder().with_safe_defaults(); + let tls = futures_rustls::rustls::ClientConfig::builder().with_safe_defaults(); #[cfg(not(feature = "__skip-http-client-cert-verification"))] let tls = tls.with_root_certificates(ROOT_CERT_STORE.to_owned()); @@ -88,26 +84,6 @@ impl Client { #[cfg(feature = "__skip-http-client-cert-verification")] mod no_verifier { - use std::time::SystemTime; - - use async_rustls::rustls::{ - client::{ServerCertVerified, ServerCertVerifier}, - Certificate, Error, ServerName, - }; - - pub struct NoCertificateVerification; - - impl ServerCertVerifier for NoCertificateVerification { - fn verify_server_cert( - &self, - _end_entity: &Certificate, - _intermediates: &[Certificate], - _server_name: &ServerName, - _scts: &mut dyn Iterator, - _ocsp_response: &[u8], - _now: SystemTime, - ) -> Result { - Ok(ServerCertVerified::assertion()) - } - } + + pub use crate::rust_tls::fake_verifier::NoCertificateVerification; } diff --git a/src/rust_tls.rs b/src/rust_tls.rs index 476b422..2cd1db1 100644 --- a/src/rust_tls.rs +++ b/src/rust_tls.rs @@ -1,9 +1,11 @@ +pub(crate) mod fake_verifier; + use crate::net::TcpStream; -pub use async_rustls::client::TlsStream as ClientTlsStream; -pub use async_rustls::server::TlsStream as ServerTlsStream; -pub use async_rustls::TlsAcceptor; -pub use async_rustls::TlsConnector; +pub use futures_rustls::client::TlsStream as ClientTlsStream; +pub use futures_rustls::server::TlsStream as ServerTlsStream; +pub use futures_rustls::TlsAcceptor; +pub use futures_rustls::TlsConnector; pub type DefaultServerTlsStream = ServerTlsStream; pub type DefaultClientTlsStream = ClientTlsStream; @@ -42,38 +44,50 @@ mod cert { use std::io::ErrorKind; use std::path::Path; - use async_rustls::rustls::Certificate; - use async_rustls::rustls::PrivateKey; - use async_rustls::rustls::RootCertStore; + use futures_rustls::rustls::pki_types::CertificateDer; + use futures_rustls::rustls::pki_types::PrivateKeyDer; + use futures_rustls::rustls::RootCertStore; use rustls_pemfile::certs; use rustls_pemfile::rsa_private_keys; - pub fn load_certs>(path: P) -> Result, IoError> { + pub fn load_certs>(path: P) -> Result>, IoError> { load_certs_from_reader(&mut BufReader::new(File::open(path)?)) } - pub fn load_certs_from_reader(rd: &mut dyn BufRead) -> Result, IoError> { + pub fn load_certs_from_reader( + rd: &mut dyn BufRead, + ) -> Result>, IoError> { certs(rd) - .map(|v| v.into_iter().map(Certificate).collect()) + .into_iter() + .collect::>>() + // .map(|v| v.into_iter().map(|a| CertificateDer) + // .collect() + // ) .map_err(|_| IoError::new(ErrorKind::InvalidInput, "invalid cert")) } /// Load the passed keys file - pub fn load_keys>(path: P) -> Result, IoError> { + pub fn load_keys>(path: P) -> Result>, IoError> { load_keys_from_reader(&mut BufReader::new(File::open(path)?)) } - pub fn load_keys_from_reader(rd: &mut dyn BufRead) -> Result, IoError> { + pub fn load_keys_from_reader( + rd: &mut dyn BufRead, + ) -> Result>, IoError> { rsa_private_keys(rd) - .map(|v| v.into_iter().map(PrivateKey).collect()) + .map(|v| v.into_iter().map(PrivateKeyDer).collect()) .map_err(|_| IoError::new(ErrorKind::InvalidInput, "invalid key")) } - pub(crate) fn load_first_key>(path: P) -> Result { + pub(crate) fn load_first_key>( + path: P, + ) -> Result, IoError> { load_first_key_from_reader(&mut BufReader::new(File::open(path)?)) } - pub(crate) fn load_first_key_from_reader(rd: &mut dyn BufRead) -> Result { + pub(crate) fn load_first_key_from_reader( + rd: &mut dyn BufRead, + ) -> Result, IoError> { let mut keys = load_keys_from_reader(rd)?; if keys.is_empty() { @@ -104,8 +118,8 @@ mod connector { use std::io::ErrorKind; - use async_rustls::rustls::ServerName; use async_trait::async_trait; + use futures_rustls::rustls::pki_types::ServerName; use log::debug; use crate::net::{ @@ -217,27 +231,25 @@ mod builder { use std::io::ErrorKind; use std::path::Path; use std::sync::Arc; - use std::time::SystemTime; - - use async_rustls::rustls::client::ServerCertVerified; - use async_rustls::rustls::server::WantsServerCert; - use async_rustls::rustls::Certificate; - use async_rustls::rustls::ClientConfig; - use async_rustls::rustls::PrivateKey; - use async_rustls::rustls::RootCertStore; - use async_rustls::rustls::ServerConfig; - use async_rustls::rustls::ServerName; - use async_rustls::rustls::{client::ServerCertVerifier, ConfigBuilder}; - use async_rustls::rustls::{client::WantsTransparencyPolicyOrClientCert, Error as TlsError}; - use async_rustls::rustls::{server::AllowAnyAuthenticatedClient, WantsVerifier}; - use async_rustls::TlsAcceptor; - use async_rustls::TlsConnector; + + use futures_rustls::rustls::client::WantsClientCert; + use futures_rustls::rustls::pki_types::CertificateDer; + use futures_rustls::rustls::pki_types::PrivateKeyDer; + use futures_rustls::rustls::server::WantsServerCert; + use futures_rustls::rustls::ClientConfig; + use futures_rustls::rustls::ConfigBuilder; + use futures_rustls::rustls::RootCertStore; + use futures_rustls::rustls::ServerConfig; + use futures_rustls::rustls::WantsVerifier; + use futures_rustls::TlsAcceptor; + use futures_rustls::TlsConnector; use super::load_root_ca; use super::{load_certs, load_first_key_from_reader}; use super::{load_certs_from_reader, load_first_key}; pub type ClientConfigBuilder = ConfigBuilder; + pub use crate::rust_tls::fake_verifier::NoCertificateVerification; pub struct ConnectorBuilder; @@ -253,7 +265,7 @@ mod builder { pub fn load_ca_cert>( self, path: P, - ) -> Result, IoError> { + ) -> Result, IoError> { let certs = load_certs(path)?; self.with_root_certificates(&certs) } @@ -261,7 +273,7 @@ mod builder { pub fn load_ca_cert_from_bytes( self, buffer: &[u8], - ) -> Result, IoError> { + ) -> Result, IoError> { let certs = load_certs_from_reader(&mut Cursor::new(buffer))?; self.with_root_certificates(&certs) } @@ -277,8 +289,8 @@ mod builder { fn with_root_certificates( self, - certs: &[Certificate], - ) -> Result, IoError> { + certs: &[CertificateDer], + ) -> Result, IoError> { let mut root_store = RootCertStore::empty(); for cert in certs { @@ -293,7 +305,7 @@ mod builder { } } - impl ConnectorBuilderStage { + impl ConnectorBuilderStage { pub fn load_client_certs>( self, cert_path: P, @@ -320,8 +332,8 @@ mod builder { fn with_single_cert( self, - certs: Vec, - key: PrivateKey, + certs: Vec, + key: PrivateKeyDer, ) -> Result { let config = self .0 @@ -356,6 +368,9 @@ mod builder { AcceptorBuilderStage(self.0.with_no_client_auth()) } + /* TODO: re-plumb this + https://docs.rs/rustls/0.21.6/rustls/server/struct.AllowAnyAuthenticatedClient.html + https://docs.rs/rustls/0.23.3/rustls/struct.ConfigBuilder.html#method.with_client_cert_verifier /// Require client authentication. Must pass CA root path. pub fn client_authenticate>( self, @@ -367,6 +382,7 @@ mod builder { Arc::new(AllowAnyAuthenticatedClient::new(root_store)), ))) } + */ } impl AcceptorBuilderStage { @@ -394,23 +410,6 @@ mod builder { TlsAcceptor::from(Arc::new(self.0)) } } - - struct NoCertificateVerification; - - impl ServerCertVerifier for NoCertificateVerification { - fn verify_server_cert( - &self, - _end_entity: &Certificate, - _intermediates: &[Certificate], - _server_name: &ServerName, - _scts: &mut dyn Iterator, - _ocsp_response: &[u8], - _now: SystemTime, - ) -> Result { - log::debug!("ignoring server cert"); - Ok(ServerCertVerified::assertion()) - } - } } #[cfg(test)] @@ -420,13 +419,13 @@ mod test { use std::net::SocketAddr; use std::time; - use async_rustls::TlsAcceptor; - use async_rustls::TlsConnector; use bytes::BufMut; use bytes::Bytes; use bytes::BytesMut; use futures_lite::future::zip; use futures_lite::stream::StreamExt; + use futures_rustls::TlsAcceptor; + use futures_rustls::TlsConnector; use futures_util::sink::SinkExt; use log::debug; use tokio_util::codec::BytesCodec; diff --git a/src/rust_tls/fake_verifier.rs b/src/rust_tls/fake_verifier.rs new file mode 100644 index 0000000..5ad81fe --- /dev/null +++ b/src/rust_tls/fake_verifier.rs @@ -0,0 +1,60 @@ +use futures_rustls::rustls::client::danger::HandshakeSignatureValid; +use futures_rustls::rustls::client::danger::ServerCertVerified; +use futures_rustls::rustls::client::danger::ServerCertVerifier; +use futures_rustls::rustls::pki_types::CertificateDer; +use futures_rustls::rustls::pki_types::ServerName; +use futures_rustls::rustls::pki_types::UnixTime; +use futures_rustls::rustls::DigitallySignedStruct; +use futures_rustls::rustls::Error as TlsError; +use futures_rustls::rustls::SignatureScheme; + +#[derive(Debug)] +pub struct NoCertificateVerification; + +impl ServerCertVerifier for NoCertificateVerification { + fn verify_server_cert( + &self, + _end_entity: &CertificateDer, + _intermediates: &[CertificateDer], + _server_name: &ServerName, + _ocsp_response: &[u8], + _now: UnixTime, + ) -> Result { + log::debug!("ignoring server cert"); + Ok(ServerCertVerified::assertion()) + } + fn verify_tls12_signature( + &self, + _message: &[u8], + _cert: &CertificateDer<'_>, + _dss: &DigitallySignedStruct, + ) -> Result { + Ok(HandshakeSignatureValid::assertion()) + } + fn verify_tls13_signature( + &self, + _message: &[u8], + _cert: &CertificateDer<'_>, + _dss: &DigitallySignedStruct, + ) -> Result { + Ok(HandshakeSignatureValid::assertion()) + } + fn supported_verify_schemes(&self) -> Vec { + vec![ + SignatureScheme::RSA_PKCS1_SHA1, + SignatureScheme::ECDSA_SHA1_Legacy, + SignatureScheme::RSA_PKCS1_SHA256, + SignatureScheme::ECDSA_NISTP256_SHA256, + SignatureScheme::RSA_PKCS1_SHA384, + SignatureScheme::ECDSA_NISTP384_SHA384, + SignatureScheme::RSA_PKCS1_SHA512, + SignatureScheme::ECDSA_NISTP521_SHA512, + SignatureScheme::RSA_PSS_SHA256, + SignatureScheme::RSA_PSS_SHA384, + SignatureScheme::RSA_PSS_SHA512, + SignatureScheme::ED25519, + SignatureScheme::ED448, + //SignatureScheme::Unknown(u16), + ] + } +}