diff --git a/Cargo.lock b/Cargo.lock index 73d59deda4..92e6f9930b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,9 +21,9 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.8.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae682f693a9cd7b058f2b0b5d9a6d7728a8555779bedbbc35dd88528611d020" +checksum = "d48f96fc3003717aeb9856ca3d02a8c7de502667ad76eeacd830b48d2e91fac4" dependencies = [ "actix-codec", "actix-rt", @@ -63,7 +63,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -93,16 +93,16 @@ dependencies = [ [[package]] name = "actix-server" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b02303ce8d4e8be5b855af6cf3c3a08f3eff26880faad82bab679c22d3650cb5" +checksum = "7ca2549781d8dd6d75c40cf6b6051260a2cc2f3c62343d761a969a0640646894" dependencies = [ "actix-rt", "actix-service", "actix-utils", "futures-core", "futures-util", - "mio 0.8.11", + "mio", "socket2", "tokio", "tracing", @@ -131,8 +131,10 @@ dependencies = [ "futures-core", "impl-more", "pin-project-lite", + "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", + "tokio-rustls 0.26.1", "tokio-util", "tracing", "webpki-roots", @@ -199,19 +201,13 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -275,9 +271,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -290,36 +286,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -339,15 +335,15 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-trait" @@ -357,7 +353,7 @@ checksum = "1b1244b10dcd56c92219da4e14caa97e312079e185f04ba3eea25061561dc0a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -379,23 +375,48 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "aws-lc-rs" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f409eb70b561706bf8abba8ca9c112729c481595893fd06a2dd9af8ed8441148" +dependencies = [ + "aws-lc-sys", + "paste", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923ded50f602b3007e5e63e3f094c479d9c8a9b42d7f4034e4afe456aa48bfd2" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", + "paste", +] [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -431,6 +452,29 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "lazy_static 1.5.0", + "lazycell", + "log 0.4.22", + "prettyplease", + "proc-macro2", + "quote", + "regex 1.11.1", + "rustc-hash", + "shlex", + "syn 2.0.95", + "which", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -513,9 +557,9 @@ checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "bytestring" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" +checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" dependencies = [ "bytes", ] @@ -527,7 +571,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -536,9 +580,20 @@ version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ + "jobserver", + "libc", "shlex", ] +[[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" @@ -566,6 +621,17 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "2.33.1" @@ -576,15 +642,15 @@ dependencies = [ "bitflags 1.3.2", "strsim 0.8.0", "textwrap", - "unicode-width 0.1.13", + "unicode-width 0.1.14", "vec_map", ] [[package]] name = "clap" -version = "4.5.9" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -592,9 +658,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -605,27 +671,36 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "cmake" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" +dependencies = [ + "cc", +] [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colosseum" @@ -660,9 +735,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "convert_case" @@ -682,9 +757,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpu-time" @@ -698,9 +773,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -716,18 +791,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-common" @@ -741,9 +816,9 @@ dependencies = [ [[package]] name = "crypto-mac" -version = "0.11.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" dependencies = [ "generic-array", "subtle", @@ -789,7 +864,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -867,7 +942,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -888,6 +963,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "ed25519" version = "1.5.3" @@ -905,18 +986,18 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" dependencies = [ "log 0.4.22", "regex 1.11.1", @@ -988,9 +1069,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "field-offset" @@ -1004,14 +1085,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -1020,12 +1101,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flate2" version = "1.0.35" @@ -1033,7 +1108,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1076,6 +1151,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "fsevent-sys" version = "4.1.0" @@ -1141,7 +1222,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -1184,7 +1265,7 @@ dependencies = [ "libc", "log 0.4.22", "rustversion", - "windows", + "windows 0.48.0", ] [[package]] @@ -1210,9 +1291,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -1241,16 +1322,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http 1.2.0", "indexmap", "slab", "tokio", @@ -1287,7 +1368,7 @@ dependencies = [ "rants", "reqwest", "retry", - "rustls", + "rustls 0.23.20", "rustls-webpki 0.102.8", "same-file", "serde", @@ -1298,7 +1379,7 @@ dependencies = [ "tar", "tempfile", "termcolor", - "thiserror", + "thiserror 2.0.9", "tokio", "toml 0.8.19", "url", @@ -1324,7 +1405,7 @@ dependencies = [ "nix", "prost", "semver", - "thiserror", + "thiserror 2.0.9", "winapi", ] @@ -1342,7 +1423,7 @@ dependencies = [ "log 0.4.22", "prost", "serde", - "thiserror", + "thiserror 2.0.9", ] [[package]] @@ -1359,7 +1440,7 @@ dependencies = [ name = "habitat-rst-reader" version = "0.0.0" dependencies = [ - "clap 4.5.9", + "clap 4.5.23", "env_logger", "habitat_butterfly", "log 0.4.22", @@ -1375,7 +1456,7 @@ dependencies = [ "habitat_core", "log 0.4.22", "prost", - "rustls", + "rustls 0.23.20", "termcolor", "tokio", "tokio-util", @@ -1459,7 +1540,7 @@ dependencies = [ "bimap", "bitflags 2.6.0", "clap 2.33.1", - "clap 4.5.9", + "clap 4.5.23", "dirs", "glob", "habitat_api_client", @@ -1472,11 +1553,11 @@ dependencies = [ "nix", "parking_lot", "pbr", - "petgraph 0.7.0", + "petgraph", "regex 1.11.1", "reqwest", "retry", - "rustls", + "rustls 0.23.20", "safer_owning_ref", "serde", "serde-transcode", @@ -1484,7 +1565,7 @@ dependencies = [ "serde_yaml", "tempfile", "termcolor", - "thiserror", + "thiserror 2.0.9", "tokio", "toml 0.8.19", "url", @@ -1523,7 +1604,7 @@ dependencies = [ "rcgen", "regex 1.11.1", "reqwest", - "rustls", + "rustls 0.23.20", "rustls-pemfile", "rustls-webpki 0.102.8", "serde", @@ -1533,9 +1614,9 @@ dependencies = [ "tabwriter", "tar", "tempfile", - "thiserror", + "thiserror 2.0.9", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.1", "toml 0.8.19", "url", "widestring 1.1.0", @@ -1569,7 +1650,7 @@ version = "0.0.0" dependencies = [ "anyhow", "base64 0.22.1", - "clap 4.5.9", + "clap 4.5.23", "env_logger", "hab", "habitat_common", @@ -1585,7 +1666,7 @@ dependencies = [ "serde_json", "tempfile", "termcolor", - "thiserror", + "thiserror 2.0.9", "tokio", "url", ] @@ -1595,7 +1676,7 @@ name = "habitat_pkg_export_tar" version = "0.0.0" dependencies = [ "anyhow", - "clap 4.5.9", + "clap 4.5.23", "env_logger", "flate2", "habitat_common", @@ -1611,6 +1692,7 @@ dependencies = [ name = "habitat_sup" version = "0.0.0" dependencies = [ + "actix-http", "actix-rt", "actix-web", "anyhow", @@ -1639,7 +1721,7 @@ dependencies = [ "libc", "log 0.4.22", "log4rs", - "mio 1.0.3", + "mio", "multimap", "nix", "notify", @@ -1654,7 +1736,7 @@ dependencies = [ "rants", "regex 1.11.1", "reqwest", - "rustls", + "rustls 0.23.20", "rustls-pemfile", "serde", "serde-transcode", @@ -1665,9 +1747,9 @@ dependencies = [ "structopt", "tempfile", "termcolor", - "thiserror", + "thiserror 2.0.9", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.1", "tokio-util", "toml 0.8.19", "url", @@ -1722,6 +1804,12 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + [[package]] name = "heck" version = "0.3.3" @@ -1768,6 +1856,15 @@ dependencies = [ "digest 0.9.0", ] +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "http" version = "0.2.12" @@ -1781,9 +1878,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", @@ -1803,12 +1900,12 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1819,8 +1916,8 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", - "http-body 1.0.0", + "http 1.2.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -1844,9 +1941,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -1875,9 +1972,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", - "http 1.1.0", - "http-body 1.0.0", + "h2 0.4.7", + "http 1.2.0", + "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", @@ -1886,6 +1983,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.2.0", + "hyper 1.5.2", + "hyper-util", + "rustls 0.23.20", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.1", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1893,7 +2007,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.30", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -1917,36 +2031,35 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.0", + "http 1.2.0", + "http-body 1.0.1", "hyper 1.5.2", "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -2073,7 +2186,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -2099,18 +2212,18 @@ dependencies = [ [[package]] name = "impl-more" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206ca75c9c03ba3d4ace2460e57b189f39f43de612c2f85836e65c929701bb2d" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" [[package]] name = "indexmap" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] @@ -2144,34 +2257,43 @@ dependencies = [ [[package]] name = "ipc-channel" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d038e61635aad6528b810a652e68efd09fc02551b6d108ae7c5c86285c6b40" +checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea" dependencies = [ "bincode", "crossbeam-channel", "fnv", "lazy_static 1.5.0", "libc", - "mio 0.8.11", + "mio", "rand", "serde", "tempfile", "uuid", - "windows", + "windows 0.58.0", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] [[package]] name = "itertools" @@ -2184,16 +2306,26 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jobserver" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2254,12 +2386,28 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[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.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + [[package]] name = "libredox" version = "0.1.3" @@ -2268,6 +2416,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", + "redox_syscall", ] [[package]] @@ -2296,9 +2445,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 = "local-channel" @@ -2373,7 +2522,7 @@ dependencies = [ "serde-value", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "thread-id", "typemap-ors", "winapi", @@ -2465,34 +2614,13 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log 0.4.22", - "wasi", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.3" @@ -2575,7 +2703,7 @@ dependencies = [ "kqueue", "libc", "log 0.4.22", - "mio 1.0.3", + "mio", "notify-types", "walkdir", "windows-sys 0.52.0", @@ -2583,9 +2711,9 @@ dependencies = [ [[package]] name = "notify-types" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7393c226621f817964ffb3dc5704f9509e107a8b024b489cc2c1b217378785df" +checksum = "585d3cb5e12e01aed9e8a1f70d5c6b5e86fe2a6e48fc8cd0b3e0b8df6f6eb174" dependencies = [ "instant", ] @@ -2627,18 +2755,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -2648,9 +2776,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -2669,7 +2797,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -2680,18 +2808,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.3.1+3.3.1" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -2751,8 +2879,8 @@ dependencies = [ "backtrace", "cfg-if", "libc", - "petgraph 0.6.5", - "redox_syscall 0.5.2", + "petgraph", + "redox_syscall", "smallvec", "thread-id", "windows-targets 0.52.6", @@ -2803,17 +2931,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset 0.4.2", - "indexmap", -] - -[[package]] -name = "petgraph" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b1374ec32450264534c67d1ccb5ca09818c4db8fd87cf97478d0df2fa44c65" -dependencies = [ - "fixedbitset 0.5.7", + "fixedbitset", "indexmap", ] @@ -2872,14 +2990,14 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2889,9 +3007,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "powerfmt" @@ -2901,18 +3019,21 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "483f8c21f64f3ea09fe0f30f5d48c3e8eefe5dac9129f0075f76593b4c1da705" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -2941,9 +3062,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -2971,7 +3092,7 @@ dependencies = [ "memchr", "parking_lot", "protobuf", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2991,16 +3112,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0f3e5beed80eb580c68e2c600937ac2c4eedabdfd5ef1e5b7ea4f3fba84497b" dependencies = [ "heck 0.5.0", - "itertools", + "itertools 0.13.0", "log 0.4.22", "multimap", "once_cell", - "petgraph 0.6.5", + "petgraph", "prettyplease", "prost", "prost-types", "regex 1.11.1", - "syn 2.0.87", + "syn 2.0.95", "tempfile", ] @@ -3011,10 +3132,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" dependencies = [ "anyhow", - "itertools", + "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -3034,9 +3155,9 @@ checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "psl" -version = "2.1.50" +version = "2.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20f2890e9f6f068d927643e8d547931b537f21fd298e197c4837f1265b11e560" +checksum = "a62360a10ed773da9a36aa1b5817c5f505b1f35728e5ea6e4e524a13fc10778c" dependencies = [ "psl-types", ] @@ -3055,9 +3176,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -3129,31 +3250,22 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3177,7 +3289,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick 1.1.3", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -3192,9 +3304,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 1.1.3", "memchr", @@ -3230,9 +3342,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -3240,11 +3352,12 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.5", - "http 1.1.0", - "http-body 1.0.0", + "h2 0.4.7", + "http 1.2.0", + "http-body 1.0.1", "http-body-util", "hyper 1.5.2", + "hyper-rustls", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -3264,13 +3377,14 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-util", + "tower", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg", + "windows-registry", ] [[package]] @@ -3309,7 +3423,7 @@ dependencies = [ "crc32fast", "futures", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.32", "hyper-tls 0.5.0", "lazy_static 1.5.0", "log 0.4.22", @@ -3332,7 +3446,7 @@ dependencies = [ "chrono", "dirs-next", "futures", - "hyper 0.14.30", + "hyper 0.14.32", "serde", "serde_json", "shlex", @@ -3368,7 +3482,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "hyper 0.14.30", + "hyper 0.14.32", "log 0.4.22", "md-5", "percent-encoding", @@ -3386,26 +3500,32 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[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" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.39" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3420,6 +3540,21 @@ dependencies = [ "sct", ] +[[package]] +name = "rustls" +version = "0.23.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +dependencies = [ + "aws-lc-rs", + "log 0.4.22", + "once_cell", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "2.2.0" @@ -3431,9 +3566,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] name = "rustls-webpki" @@ -3451,6 +3586,7 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -3458,9 +3594,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" @@ -3488,11 +3624,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3519,9 +3655,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", "core-foundation", @@ -3532,9 +3668,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" dependencies = [ "core-foundation-sys", "libc", @@ -3582,7 +3718,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -3600,9 +3736,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -3718,9 +3854,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[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", @@ -3795,9 +3931,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3812,9 +3948,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" dependencies = [ "proc-macro2", "quote", @@ -3823,9 +3959,12 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -3835,25 +3974,25 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -3910,12 +4049,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" dependencies = [ "rustix", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -3936,34 +4075,54 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width 0.1.13", + "unicode-width 0.1.14", ] [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +dependencies = [ + "thiserror-impl 2.0.9", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.95", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] name = "thread-id" -version = "4.2.1" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ec81c46e9eb50deaa257be2f148adf052d1fb7701cfd55ccfab2525280b70b" +checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" dependencies = [ "libc", "winapi", @@ -3999,9 +4158,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", @@ -4020,9 +4179,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", @@ -4047,7 +4206,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", + "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", @@ -4064,7 +4223,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] @@ -4083,15 +4242,25 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls 0.23.20", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -4110,7 +4279,7 @@ dependencies = [ "futures-io", "futures-sink", "futures-util", - "hashbrown", + "hashbrown 0.14.5", "pin-project-lite", "slab", "tokio", @@ -4144,7 +4313,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.20", + "toml_edit 0.22.22", ] [[package]] @@ -4171,27 +4340,27 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.18", + "winnow 0.6.22", ] [[package]] name = "tower" -version = "0.4.13" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "pin-project", "pin-project-lite", + "sync_wrapper", "tokio", "tower-layer", "tower-service", @@ -4199,21 +4368,21 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log 0.4.22", "pin-project-lite", @@ -4223,20 +4392,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -4255,9 +4424,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", @@ -4300,21 +4469,21 @@ checksum = "abd2fc5d32b590614af8b0a20d837f32eca055edd0bbead59a9cfe80858be003" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" @@ -4441,9 +4610,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -4472,46 +4641,47 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log 0.4.22", - "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4519,28 +4689,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -4551,9 +4721,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -4565,6 +4735,18 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[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", +] + [[package]] name = "widestring" version = "0.4.3" @@ -4595,11 +4777,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4617,6 +4799,16 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-acl" version = "0.3.0" @@ -4638,6 +4830,71 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -4797,9 +5054,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" dependencies = [ "memchr", ] @@ -4828,9 +5085,9 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xattr" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" dependencies = [ "libc", "linux-raw-sys", @@ -4839,9 +5096,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" [[package]] name = "xz2" @@ -4863,9 +5120,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", @@ -4875,13 +5132,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.95", "synstructure", ] @@ -4891,6 +5148,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -4902,27 +5160,27 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[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.95", "synstructure", ] @@ -4951,7 +5209,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.95", ] [[package]] diff --git a/components/common/src/cli_config.rs b/components/common/src/cli_config.rs index f2a1995f05..ed6091bed0 100644 --- a/components/common/src/cli_config.rs +++ b/components/common/src/cli_config.rs @@ -9,7 +9,8 @@ use habitat_core::{fs::{am_i_root, PrivateKeyCli, RootCertificateStoreCli}}; use log::debug; -use rustls::{ClientConfig as TlsClientConfig, +use rustls::{pki_types::PrivateKeyDer, + ClientConfig as TlsClientConfig, Error as TLSError}; use serde::{Deserialize, Serialize}; @@ -36,11 +37,11 @@ static ref CACHED_CLI_CONFIG: CliConfig = CliConfig::load().unwrap_or_default(); #[derive(Debug, thiserror::Error)] pub enum Error { - #[error("'{}' io failure, err: {0}", CLI_CONFIG_PATH.display())] + #[error("'{cfg_path}' io failure, err: {0}", cfg_path = CLI_CONFIG_PATH.display())] Io(#[from] io::Error), - #[error("deserializing '{}' failed, err: {0}", CLI_CONFIG_PATH.display())] + #[error("deserializing '{cfg_path}' failed, err: {0}", cfg_path = CLI_CONFIG_PATH.display())] Deserialize(#[from] toml::de::Error), - #[error("serializing '{}' failed, err: {0}", CLI_CONFIG_PATH.display())] + #[error("serializing '{cfg_path}' failed, err: {0}", cfg_path = CLI_CONFIG_PATH.display())] Serialize(#[from] toml::ser::Error), } @@ -87,19 +88,22 @@ impl CliConfig { } pub fn maybe_tls_client_config(self) -> Result, TLSError> { - let client_certificates = self.ctl_client_certificate - .map(CertificateChainCli::into_inner); - let client_key = self.ctl_client_key.map(PrivateKeyCli::into_inner); let server_ca_certificates = self.ctl_server_ca_certificate .map(RootCertificateStoreCli::into_inner); if let Some(server_certificates) = server_ca_certificates { - let tls_config = TlsClientConfig::builder().with_safe_defaults() - .with_root_certificates(server_certificates); - if let Some(client_key) = client_key { + let tls_config = TlsClientConfig::builder() //.with_safe_default_protocol_versions() + .with_root_certificates(server_certificates); + if let Some(client_key) = self.ctl_client_key { debug!("Configuring ctl-gateway TLS with client certificate"); - let config = - tls_config.with_client_auth_cert(client_certificates.unwrap_or_default(), - client_key)?; + let certs = if let Some(certs) = self.ctl_client_certificate.clone() { + certs.into_inner() + } else { + vec![] + }; + let config = tls_config.with_client_auth_cert( + certs, + PrivateKeyDer::Pkcs8(client_key.into_inner().clone_key()), + )?; Ok(Some(config)) } else { Ok(Some(tls_config.with_no_client_auth())) diff --git a/components/core/Cargo.toml b/components/core/Cargo.toml index 928867d376..a2ae31f113 100644 --- a/components/core/Cargo.toml +++ b/components/core/Cargo.toml @@ -30,7 +30,7 @@ pin-project = "*" rand = "*" regex = "*" rcgen = "*" -rustls = "*" +rustls = "0.23" rustls-pemfile = "*" serde = { version = "*", features = ["derive"] } serde_json = { version = "*", features = ["preserve_order"] } diff --git a/components/core/src/tls/ctl_gateway.rs b/components/core/src/tls/ctl_gateway.rs index 448d7c1723..bd9d19443d 100644 --- a/components/core/src/tls/ctl_gateway.rs +++ b/components/core/src/tls/ctl_gateway.rs @@ -10,8 +10,9 @@ use rcgen::{CertificateParams, Error as RcgenError, KeyPair, PKCS_ECDSA_P256_SHA256}; -use rustls::{Certificate, - PrivateKey, + +use rustls::{pki_types::{CertificateDer, + PrivatePkcs8KeyDer}, RootCertStore}; use std::{fs::{self, File}, @@ -41,9 +42,10 @@ pub enum Error { pub fn generate_self_signed_certificate_and_key(subject_alternate_name: &DnsName, path: impl AsRef) -> Result<(), Error> { - let mut params = - CertificateParams::new(vec![Into::<&str>::into(subject_alternate_name.as_ref()).to_string(), - "localhost".to_string(),])?; + let mut params = CertificateParams::new(vec![ + Into::<&str>::into(subject_alternate_name.as_ref()).to_string(), + "localhost".to_string(), + ])?; let mut distinguished_name = DistinguishedName::new(); distinguished_name.push(DnType::OrganizationName, "Habitat Supervisor Control Gateway"); @@ -81,12 +83,12 @@ fn get_last_path(search_directory: impl AsRef, file_pattern: &str) -> Resu .ok_or_else(|| Error::FailedToMatchPattern(pattern.to_string())) } -pub fn latest_certificates(path: impl AsRef) -> Result, Error> { +pub fn latest_certificates(path: impl AsRef) -> Result>, Error> { let path = get_last_path(path, &format!("{}-*.{}", NAME_PREFIX, CRT_EXTENSION))?; Ok(rustls_wrapper::certificates_from_file(path)?) } -pub fn latest_private_key(path: impl AsRef) -> Result { +pub fn latest_private_key(path: impl AsRef) -> Result, Error> { let path = get_last_path(path, &format!("{}-*.{}", NAME_PREFIX, KEY_EXTENSION))?; Ok(rustls_wrapper::private_key_from_file(path)?) } diff --git a/components/core/src/tls/rustls_wrapper/readers.rs b/components/core/src/tls/rustls_wrapper/readers.rs index d5c901d1f6..1e40a1e945 100644 --- a/components/core/src/tls/rustls_wrapper/readers.rs +++ b/components/core/src/tls/rustls_wrapper/readers.rs @@ -1,8 +1,8 @@ //! Utility functions to standardize reading certificates, private keys, and root certificate stores //! using `rustls` -use rustls::{Certificate, - PrivateKey, +use rustls::{pki_types::{CertificateDer, + PrivatePkcs8KeyDer}, RootCertStore}; use std::{fs::File, io::{self, @@ -36,37 +36,32 @@ fn buf_from_file(path: impl AsRef) -> Result, Error> { Ok(BufReader::new(file)) } -pub fn certificates_from_file(path: impl AsRef) -> Result, Error> { +pub fn certificates_from_file(path: impl AsRef) + -> Result>, Error> { let mut buf = buf_from_file(path.as_ref())?; rustls_pemfile::certs(&mut buf).map(|c| { c.map_err(|_| Error::FailedToReadCerts(path.as_ref().into())) - .map(|c| Certificate(c.as_ref().to_vec())) + .map(|x| x.into_owned()) }) .collect() } -fn private_keys_from_file(path: impl AsRef) -> Result, Error> { +fn private_keys_from_file(path: impl AsRef) + -> Result>, Error> { let mut buf = buf_from_file(path.as_ref())?; - rustls_pemfile::pkcs8_private_keys(&mut buf).map(|k| { - k.map_err(|_| Error::FailedToReadPrivateKeys(path.as_ref().into())) - .map(|k| PrivateKey(k.secret_pkcs8_der().to_vec())) - }) - .collect() + rustls_pemfile::pkcs8_private_keys(&mut buf) + .map(|k| k.map_err(|_| Error::FailedToReadPrivateKeys(path.as_ref().into()))) + .collect() } -pub fn private_key_from_file(path: impl AsRef) -> Result { +pub fn private_key_from_file(path: impl AsRef) -> Result, Error> { private_keys_from_file(path.as_ref())?.pop() .ok_or_else(|| Error::NoPrivateKey(path.as_ref().into())) } pub fn root_certificate_store_from_file(path: impl AsRef) -> Result { - let mut buf = buf_from_file(path.as_ref())?; let mut root_certificate_store = RootCertStore::empty(); - let certs = &rustls_pemfile::certs(&mut buf).map(|c| { - c.map_err(|_| Error::FailedToReadRootCertificateStore(path.as_ref().into())) - .map(|c| c.as_ref().to_vec()) - }) - .collect::, _>>()?; + let certs = certificates_from_file(path.as_ref())?; let (_, failed) = root_certificate_store.add_parsable_certificates(certs); if failed > 0 { Err(Error::FailedToReadCertificatesFromRootCertificateStore(failed, path.as_ref().into())) diff --git a/components/core/src/tls/rustls_wrapper/tcp_or_tls_stream.rs b/components/core/src/tls/rustls_wrapper/tcp_or_tls_stream.rs index a5e78a78a0..ab9b6fa310 100644 --- a/components/core/src/tls/rustls_wrapper/tcp_or_tls_stream.rs +++ b/components/core/src/tls/rustls_wrapper/tcp_or_tls_stream.rs @@ -1,7 +1,7 @@ use pin_project::pin_project; -use rustls::{ClientConfig as TlsClientConfig, - ServerConfig as TlsServerConfig, - ServerName}; +use rustls::{pki_types::ServerName, + ClientConfig as TlsClientConfig, + ServerConfig as TlsServerConfig}; use std::{convert::TryFrom, pin::Pin, sync::Arc, @@ -69,7 +69,7 @@ impl TcpOrTlsStream { let tls_client_stream = match self { Self::TcpStream(stream) => { let tls_connector = TlsConnector::from(tls_config); - let server_name = match ServerName::try_from(domain) { + let server_name = match ServerName::try_from(domain.to_string()) { Ok(name) => name, Err(_) => { let error = io::Error::new(io::ErrorKind::InvalidInput, diff --git a/components/core/src/tls/rustls_wrapper/types.rs b/components/core/src/tls/rustls_wrapper/types.rs index c4aea88e63..8758e8cd2f 100644 --- a/components/core/src/tls/rustls_wrapper/types.rs +++ b/components/core/src/tls/rustls_wrapper/types.rs @@ -9,8 +9,8 @@ use crate::{error::Error, tls::{ctl_gateway, rustls_wrapper}}; -use rustls::{Certificate, - PrivateKey as RustlsPrivateKey, +use rustls::{pki_types::{CertificateDer, + PrivatePkcs8KeyDer}, RootCertStore}; use serde::{Deserialize, Serialize}; @@ -21,11 +21,11 @@ use std::{path::PathBuf, #[serde(try_from = "String", into = "String")] pub struct CertificateChainCli { path: PathBuf, - certificates: Vec, + certificates: Vec>, } impl CertificateChainCli { - pub fn into_inner(self) -> Vec { self.certificates } + pub fn into_inner(self) -> Vec> { self.certificates } } impl FromStr for CertificateChainCli { @@ -48,15 +48,22 @@ impl std::fmt::Display for CertificateChainCli { } } -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Debug, Deserialize, Serialize)] #[serde(try_from = "String", into = "String")] pub struct PrivateKeyCli { path: PathBuf, - private_key: RustlsPrivateKey, + private_key: PrivatePkcs8KeyDer<'static>, } impl PrivateKeyCli { - pub fn into_inner(self) -> RustlsPrivateKey { self.private_key } + pub fn into_inner(self) -> PrivatePkcs8KeyDer<'static> { self.private_key } +} + +impl Clone for PrivateKeyCli { + fn clone(&self) -> Self { + Self { path: self.path.clone(), + private_key: self.private_key.clone_key(), } + } } impl FromStr for PrivateKeyCli { diff --git a/components/sup-client/src/lib.rs b/components/sup-client/src/lib.rs index ea45d90365..efa938301a 100644 --- a/components/sup-client/src/lib.rs +++ b/components/sup-client/src/lib.rs @@ -159,8 +159,8 @@ impl SrvClient { let config = CliConfig::load()?; let server_name_indication = config.ctl_server_name_indication.clone(); let tcp_stream = if let Some(tls_config) = config.maybe_tls_client_config()?.map(Arc::new) { - let domain = server_name_indication.as_deref() - .unwrap_or_else(|| addr.domain()); + let domain = server_name_indication.unwrap_or_else(|| addr.domain().to_string()); + let domain: &str = &*domain; debug!("Upgrading ctl-gateway to TLS with domain '{}'", domain); TcpOrTlsStream::new_tls_client(tcp_stream, tls_config, domain).await .map_err(|e| e.0)? diff --git a/components/sup/Cargo.toml b/components/sup/Cargo.toml index caaaa844f3..505fbe66e9 100644 --- a/components/sup/Cargo.toml +++ b/components/sup/Cargo.toml @@ -17,8 +17,9 @@ doc = false [dependencies] bytes = "*" actix-web = { version = "*", default-features = false, features = [ - "rustls-0_21", + "rustls-0_23", ] } +actix-http = { version = "3", features = [ "rustls-0_23" ]} actix-rt = "*" byteorder = "*" clap = { git = "https://github.com/habitat-sh/clap.git", branch = "v2-master", features = [ diff --git a/components/sup/src/ctl_gateway/server.rs b/components/sup/src/ctl_gateway/server.rs index 3491d1361b..a43e7d3e28 100644 --- a/components/sup/src/ctl_gateway/server.rs +++ b/components/sup/src/ctl_gateway/server.rs @@ -41,11 +41,12 @@ use prometheus::{register_histogram_vec, HistogramTimer, HistogramVec, IntCounterVec}; + use rustls::{self, - server::{AllowAnyAuthenticatedClient, - NoClientAuth}, - Certificate, - PrivateKey, + pki_types::{CertificateDer, + PrivateKeyDer, + PrivatePkcs8KeyDer}, + server::WebPkiClientVerifier, RootCertStore, ServerConfig as TlsServerConfig}; use std::{error, @@ -203,7 +204,9 @@ impl Client { } Err(err) => { warn!("Handshake error, {:?}", err); - return Err(HandlerError::from(io::Error::from(io::ErrorKind::ConnectionAborted))); + return Err(HandlerError::from(io::Error::from( + io::ErrorKind::ConnectionAborted, + ))); } } }; @@ -478,8 +481,8 @@ pub(crate) struct CtlGatewayServer { pub(crate) listen_addr: SocketAddr, pub(crate) secret_key: String, pub(crate) mgr_sender: MgrSender, - pub(crate) server_certificates: Option>, - pub(crate) server_key: Option, + pub(crate) server_certificates: Option>>, + pub(crate) server_key: Option>, pub(crate) client_certificates: Option, } @@ -520,26 +523,36 @@ impl CtlGatewayServer { // Upgrade to a TLS connection if necessary let tcp_stream = if let Some(tls_config) = &maybe_tls_config { - match TcpOrTlsStream::new_tls_server(tcp_stream, Arc::clone(tls_config)).await - { - Ok(tcp_stream) => tcp_stream, - Err((e, tcp_stream)) => { - error!("Failed to accept TLS client connection, err {}", e); - // If the client sent a corrupt TLS message it is a good indicator that - // they did not upgrade to TLS. In this case send back an error response. - // We do not always send back an error response because it can lead to - // confusing error messages on the client. - #[allow(clippy::redundant_closure_for_method_calls)] - if let Some(&rustls::Error::InvalidMessage(_)) = e.get_ref().and_then(|e| e.downcast_ref()) { - let mut srv_codec = SrvCodec::new().framed(tcp_stream); - let net_err = net::err(ErrCode::TlsHandshakeFailed, format!("TLS handshake failed, err: {}", e)); - if let Err(e) = srv_codec.send(SrvMessage::from(net_err)).await { - error!("Failed to send TLS failure message to client, err {}", e); + match TcpOrTlsStream::new_tls_server(tcp_stream, Arc::clone(tls_config)) + .await + { + Ok(tcp_stream) => tcp_stream, + Err((e, tcp_stream)) => { + error!("Failed to accept TLS client connection, err {}", e); + // If the client sent a corrupt TLS message it is a good indicator that + // they did not upgrade to TLS. In this case send back an error response. + // We do not always send back an error response because it can lead to + // confusing error messages on the client. + #[allow(clippy::redundant_closure_for_method_calls)] + if let Some(&rustls::Error::InvalidMessage(_)) = + e.get_ref().and_then(|e| e.downcast_ref()) + { + let mut srv_codec = SrvCodec::new().framed(tcp_stream); + let net_err = net::err( + ErrCode::TlsHandshakeFailed, + format!("TLS handshake failed, err: {}", e), + ); + if let Err(e) = srv_codec.send(SrvMessage::from(net_err)).await + { + error!( + "Failed to send TLS failure message to client, err {}", + e + ); + } } + continue; } - continue; } - } } else { TcpOrTlsStream::new(tcp_stream) }; @@ -556,23 +569,23 @@ impl CtlGatewayServer { } } - fn maybe_tls_config(server_certificates: Option>, - server_key: Option, + fn maybe_tls_config(server_certificates: Option>>, + server_key: Option>, client_certificates: Option) -> Option { if let Some(server_key) = server_key { let client_auth = if let Some(client_certificates) = client_certificates { debug!("Upgrading ctl-gateway to TLS with client authentication"); - AllowAnyAuthenticatedClient::new(client_certificates).boxed() + WebPkiClientVerifier::builder(client_certificates.into()).build() + .unwrap() } else { debug!("Upgrading ctl-gateway to TLS"); - NoClientAuth::boxed() + WebPkiClientVerifier::no_client_auth() }; let tls_config = - TlsServerConfig::builder().with_safe_defaults() - .with_client_cert_verifier(client_auth) + TlsServerConfig::builder().with_client_cert_verifier(client_auth) .with_single_cert(server_certificates.unwrap_or_default(), - server_key) + PrivateKeyDer::Pkcs8(server_key)) .expect("Could not set certificate for ctl gateway!"); Some(tls_config) diff --git a/components/sup/src/http_gateway.rs b/components/sup/src/http_gateway.rs index 86964a56ae..9e67303501 100644 --- a/components/sup/src/http_gateway.rs +++ b/components/sup/src/http_gateway.rs @@ -302,7 +302,7 @@ impl Server { debug!("http_gateway server configured"); let bind = match tls_config { - Some(c) => server.bind_rustls_021(listen_addr.to_string(), c), + Some(c) => server.bind_rustls_0_23(listen_addr.to_string(), c), None => server.bind(listen_addr.to_string()), }; debug!("http_gateway server port bound"); diff --git a/components/sup/src/main.rs b/components/sup/src/main.rs index 44fc33812b..3f6755f19b 100644 --- a/components/sup/src/main.rs +++ b/components/sup/src/main.rs @@ -30,7 +30,6 @@ use habitat_core::{self, RingKey}}, os::signals, tls::rustls_wrapper::{CertificateChainCli, - PrivateKeyCli, RootCertificateStoreCli}}; use habitat_launcher_client::{LauncherCli, ERR_NO_RETRY_EXCODE, @@ -310,7 +309,8 @@ async fn split_apart_sup_run(sup_run: SupRun, ctl_listen: sup_run.listen_ctl.into(), ctl_server_certificates: sup_run.ctl_server_certificate .map(CertificateChainCli::into_inner), - ctl_server_key: sup_run.ctl_server_key.map(PrivateKeyCli::into_inner), + ctl_server_key: sup_run.ctl_server_key + .map(|key| key.into_inner().into()), ctl_client_ca_certificates: sup_run.ctl_client_ca_certificate .map(RootCertificateStoreCli::into_inner), diff --git a/components/sup/src/manager.rs b/components/sup/src/manager.rs index b242cfb689..e6039d6344 100644 --- a/components/sup/src/manager.rs +++ b/components/sup/src/manager.rs @@ -77,6 +77,8 @@ use habitat_core::{crypto::keys::{KeyCache, PackageIdent, PackageInstall}, service::ServiceGroup, + tls::rustls_wrapper::{certificates_from_file, + private_key_from_file}, util::ToI64, ChannelIdent}; use habitat_launcher_client::{LauncherCli, @@ -94,10 +96,10 @@ use prometheus::{register_histogram_vec, register_int_gauge, HistogramVec, IntGauge}; -use rustls::{server::{AllowAnyAuthenticatedClient, - NoClientAuth}, - Certificate, - PrivateKey, +use rustls::{pki_types::{CertificateDer, + PrivateKeyDer, + PrivatePkcs8KeyDer}, + server::WebPkiClientVerifier, RootCertStore, ServerConfig}; use serde::{Deserialize, @@ -107,8 +109,7 @@ use std::{collections::{HashMap, ffi::OsStr, fs::{self, File}, - io::{BufReader, - Read, + io::{Read, Write}, iter::{FromIterator, IntoIterator}, @@ -292,6 +293,17 @@ impl Default for ServiceRestartConfig { } } +#[derive(Debug, PartialEq)] +pub struct CloneablePkcs8PrivKey(PrivatePkcs8KeyDer<'static>); + +impl From> for CloneablePkcs8PrivKey { + fn from(k: PrivatePkcs8KeyDer<'static>) -> Self { Self(k) } +} + +impl Clone for CloneablePkcs8PrivKey { + fn clone(&self) -> Self { Self(self.0.clone_key()) } +} + #[derive(Clone, Debug, Derivative)] #[derivative(PartialEq)] pub struct ManagerConfig { @@ -305,8 +317,8 @@ pub struct ManagerConfig { pub update_channel: ChannelIdent, pub gossip_listen: GossipListenAddr, pub ctl_listen: ListenCtlAddr, - pub ctl_server_certificates: Option>, - pub ctl_server_key: Option, + pub ctl_server_certificates: Option>>, + pub ctl_server_key: Option, #[derivative(PartialEq = "ignore")] pub ctl_client_ca_certificates: Option, pub http_listen: HttpListenAddr, @@ -1060,7 +1072,11 @@ impl Manager { .cfg .ctl_server_certificates .clone(), - server_key: self.state.cfg.ctl_server_key.clone(), + server_key: self.state + .cfg + .ctl_server_key + .as_ref() + .map(|key| key.0.clone_key()), client_certificates: self.state .cfg .ctl_client_ca_certificates @@ -1310,7 +1326,12 @@ impl Manager { #[allow(unused_variables)] let service_timer = service_hist.start_timer(); if service_state.tick(&self.census_ring.read(), &self.launcher) { - self.gossip_latest_service_rumor_rsw_mlw_rhw(service_state.service().expect("Service missing in PersistentServiceWrapper"), None); + self.gossip_latest_service_rumor_rsw_mlw_rhw( + service_state + .service() + .expect("Service missing in PersistentServiceWrapper"), + None, + ); } if service_state.is_ready_for_restart() { debug!("Service ready to restart, setting reconciliation flag"); @@ -1436,8 +1457,8 @@ impl Manager { // The supervisor always runs the latest package on disk. When we have an // update ensure that the lastest package on disk is // the package we updated to. - idents_to_restart_and_latest_desired_on_restart.push((ident.clone(), - Some(new_ident.ident))); + idents_to_restart_and_latest_desired_on_restart + .push((ident.clone(), Some(new_ident.ident))); } } else if service_state.should_shutdown_for_restart() { idents_to_restart_and_latest_desired_on_restart.push((ident.clone(), None)); @@ -2012,56 +2033,38 @@ fn tls_config(config: &TLSConfig) -> Result { let client_auth = match &config.ca_cert_path { Some(path) => { let mut root_store = RootCertStore::empty(); - let mut ca_file = &mut BufReader::new(File::open(path)?); - let certs = &rustls_pemfile::certs(&mut ca_file).map(|c| { - c.map_err(|_| Error::InvalidCertFile(path.clone())) - .map(|c| c.as_ref().to_vec()) - }) - .collect::>>()?; - let (added, _) = root_store.add_parsable_certificates(certs); - if added < 1 { + let certs = + certificates_from_file(path).map_err(|_| Error::InvalidCertFile(path.clone()))?; + + if certs.is_empty() { return Err(Error::InvalidCertFile(path.clone())); - } else { - AllowAnyAuthenticatedClient::new(root_store).boxed() } + + for cert in certs { + root_store.add(cert).unwrap(); + } + WebPkiClientVerifier::builder(root_store.into()).build() + .unwrap() } - None => NoClientAuth::boxed(), + None => WebPkiClientVerifier::no_client_auth(), }; - let tls_config = ServerConfig::builder().with_safe_defaults() - .with_client_cert_verifier(client_auth); - - let key_file = &mut BufReader::new(File::open(&config.key_path)?); - let cert_file = &mut BufReader::new(File::open(&config.cert_path)?); + let tls_config = ServerConfig::builder().with_client_cert_verifier(client_auth); // Note that we must explicitly map these errors because rustls returns () as the error from // both pemfile::certs() as well as pemfile::rsa_private_keys() and we want to return // different errors for each. - let certs = rustls_pemfile::certs(cert_file).map(|c| { - c.and_then(|cr| { - if cr.is_empty() { - Err(std::io::Error::new(std::io::ErrorKind::Other, - "error getting file contents")) - } else { - Ok(cr) - } - }).map_err(|_| Error::InvalidCertFile(config.cert_path.clone())) - .map(|c| Certificate(c.as_ref().to_vec())) - }) - .collect::>>()?; - - let mut keys = rustls_pemfile::rsa_private_keys(key_file).map(|k| { - k.map_err(|_| Error::InvalidKeyFile(config.key_path.clone())) - .map(|k| PrivateKey(k.secret_pkcs1_der().to_vec())) - }) - .collect::>>()?; - let key = keys.pop() - .ok_or_else(|| { - std::io::Error::new(std::io::ErrorKind::Other, "error getting file contents") - }) - .map_err(|_| Error::InvalidKeyFile(config.key_path.clone()))?; - let mut server_config = tls_config.with_single_cert(certs, key)?; + let certs = certificates_from_file(&config.cert_path).map_err(|_| { + Error::InvalidCertFile(config.cert_path + .clone()) + })?; + let key = private_key_from_file(&config.key_path).map_err(|_| { + Error::InvalidKeyFile(config.key_path + .clone()) + })?; + let mut server_config = tls_config.with_single_cert(certs, PrivateKeyDer::Pkcs8(key))?; server_config.ignore_client_order = true; + Ok(server_config) }