diff --git a/Cargo.lock b/Cargo.lock index f3f33b5a..5adb518a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -162,7 +162,7 @@ dependencies = [ "time", "tokio", "tracing", - "url 2.5.8", + "url", "zeroize", ] @@ -180,9 +180,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.15.4" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b7b6141e96a8c160799cc2d5adecd5cbbe5054cb8c7c4af53da0f83bb7ad256" +checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad" dependencies = [ "aws-lc-sys", "zeroize", @@ -190,14 +190,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.37.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c34dda4df7017c8db52132f0f8a2e0f8161649d15723ed63fc00c82d0f2081a" +checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -218,7 +219,7 @@ dependencies = [ "fastrand", "http 0.2.12", "http-body 0.4.6", - "percent-encoding 2.3.2", + "percent-encoding", "pin-project-lite", "tracing", "uuid", @@ -353,11 +354,11 @@ dependencies = [ "bytes", "form_urlencoded", "hex", - "hmac", + "hmac 0.12.1", "http 0.2.12", "http 1.4.0", - "percent-encoding 2.3.2", - "sha2", + "percent-encoding", + "sha2 0.10.9", "time", "tracing", ] @@ -388,7 +389,7 @@ dependencies = [ "http 0.2.12", "http 1.4.0", "http-body 0.4.6", - "percent-encoding 2.3.2", + "percent-encoding", "pin-project-lite", "pin-utils", "tracing", @@ -404,19 +405,19 @@ dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "h2 0.3.27", - "h2 0.4.13", + "h2 0.4.15", "http 0.2.12", "http 1.4.0", "http-body 0.4.6", "hyper 0.14.32", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-rustls 0.24.2", "hyper-rustls 0.27.7", "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.36", - "rustls-native-certs 0.8.3", + "rustls 0.23.41", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -558,7 +559,7 @@ dependencies = [ "matchit", "memchr", "mime", - "percent-encoding 2.3.2", + "percent-encoding", "pin-project-lite", "serde_core", "sync_wrapper", @@ -591,12 +592,6 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -634,6 +629,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + [[package]] name = "bollard" version = "0.13.0" @@ -658,7 +662,7 @@ dependencies = [ "thiserror 1.0.69", "tokio", "tokio-util", - "url 2.5.8", + "url", "winapi", ] @@ -718,6 +722,9 @@ name = "bytes" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +dependencies = [ + "serde", +] [[package]] name = "bytes-utils" @@ -753,11 +760,22 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "num-traits", @@ -860,12 +878,28 @@ dependencies = [ "cc", ] +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + [[package]] name = "colorchoice" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "comfy-table" version = "7.2.2" @@ -918,7 +952,7 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" dependencies = [ - "percent-encoding 2.3.2", + "percent-encoding", "time", "version_check", ] @@ -931,14 +965,14 @@ checksum = "3fc4bff745c9b4c7fb1e97b25d13153da2bc7796260141df62378998d070207f" dependencies = [ "cookie", "document-features", - "idna 1.1.0", + "idna", "indexmap 2.13.0", "log", "serde", "serde_derive", "serde_json", "time", - "url 2.5.8", + "url", ] [[package]] @@ -977,12 +1011,12 @@ dependencies = [ ] [[package]] -name = "crc32c" -version = "0.6.8" +name = "cpufeatures" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a47af21622d091a8f0fb295b88bc886ac74efcc613efc19f5d0b21de5c89e47" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" dependencies = [ - "rustc_version", + "libc", ] [[package]] @@ -1052,6 +1086,15 @@ dependencies = [ "typenum", ] +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + [[package]] name = "csv" version = "1.4.0" @@ -1073,6 +1116,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + [[package]] name = "darling" version = "0.13.4" @@ -1286,11 +1338,22 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "crypto-common", + "block-buffer 0.10.4", + "crypto-common 0.1.7", "subtle", ] +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "crypto-common 0.2.2", + "ctutils", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1553,7 +1616,7 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ - "percent-encoding 2.3.2", + "percent-encoding", ] [[package]] @@ -1692,11 +1755,23 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.1", +] + [[package]] name = "glob" version = "0.3.3" @@ -1728,45 +1803,176 @@ dependencies = [ ] [[package]] -name = "google-apis-common" -version = "6.0.4" +name = "google-cloud-auth" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efe58cc89d6670229d0ab84bfc4bbe35d2572571accaf2201526360b358414f" +checksum = "a300d4011cb53573eafe2419630d303ced54aab6c194a6d9e4156de375800372" dependencies = [ + "async-trait", "base64 0.22.1", + "bytes", "chrono", - "http 0.2.12", - "hyper 0.14.32", - "itertools 0.12.1", - "mime", - "percent-encoding 2.3.2", + "google-cloud-gax", + "hex", + "hmac 0.13.0", + "http 1.4.0", + "reqwest 0.13.4", + "rustc_version", + "rustls 0.23.41", + "rustls-pki-types", "serde", "serde_json", - "serde_with 3.16.1", + "sha2 0.11.0", + "thiserror 2.0.18", + "time", "tokio", - "tower-service", - "url 2.5.8", - "yup-oauth2", + "url", ] [[package]] -name = "google-secretmanager1" -version = "5.0.5+20240621" +name = "google-cloud-gax" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8812808370b953438ded6651b3e9a2e6175b4ddf3c0632a51c0e5149c56c82fe" +checksum = "4f60f45dd97ff91cedfcb6b2b9f860d3d84739386c3557027687c52cc0e698fd" dependencies = [ - "anyhow", - "google-apis-common", - "http 0.2.12", - "hyper 0.14.32", - "hyper-rustls 0.25.0", - "itertools 0.13.0", - "mime", + "bytes", + "futures", + "google-cloud-rpc", + "google-cloud-wkt", + "http 1.4.0", + "pin-project", + "rand 0.10.2", "serde", "serde_json", + "thiserror 2.0.18", "tokio", - "tower-service", - "url 1.7.2", +] + +[[package]] +name = "google-cloud-gax-internal" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78e0d5b25e5714321efc3ea48a1457bcd943ba85fe7a0e80e97d989f3c9aea17" +dependencies = [ + "bytes", + "futures", + "google-cloud-auth", + "google-cloud-gax", + "google-cloud-rpc", + "http 1.4.0", + "http-body-util", + "hyper 1.10.1", + "lazy_static", + "opentelemetry", + "opentelemetry-semantic-conventions", + "opentelemetry_sdk", + "percent-encoding", + "pin-project", + "reqwest 0.13.4", + "rustc_version", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tonic", + "tracing", + "tracing-opentelemetry", +] + +[[package]] +name = "google-cloud-iam-v1" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a245c548c002e22d1644e88d9b7d6c32183b335e63510a1bb8580045c3282d" +dependencies = [ + "async-trait", + "bytes", + "google-cloud-gax", + "google-cloud-gax-internal", + "google-cloud-type", + "google-cloud-wkt", + "serde", + "serde_json", + "serde_with 3.16.1", + "tracing", +] + +[[package]] +name = "google-cloud-location" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20a6d8ac73bb9d78fff74be261bf5b17dba4a49a12b41cd3b5abbc173c0771e4" +dependencies = [ + "async-trait", + "bytes", + "google-cloud-gax", + "google-cloud-gax-internal", + "google-cloud-wkt", + "serde", + "serde_json", + "serde_with 3.16.1", + "tracing", +] + +[[package]] +name = "google-cloud-rpc" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b177796075b7bfc02bf2e405db665ee850a924fa44cedfc5282b473c5ab203" +dependencies = [ + "bytes", + "google-cloud-wkt", + "serde", + "serde_json", + "serde_with 3.16.1", +] + +[[package]] +name = "google-cloud-secretmanager-v1" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d92326f99f56001667b63a773583c85c0fe50b53d6891805630085c1f611770" +dependencies = [ + "async-trait", + "bytes", + "google-cloud-gax", + "google-cloud-gax-internal", + "google-cloud-iam-v1", + "google-cloud-location", + "google-cloud-wkt", + "serde", + "serde_json", + "serde_with 3.16.1", + "tracing", +] + +[[package]] +name = "google-cloud-type" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3658f2192252ba301a9d0a26e298bd56b55f0edb32de499a2f41ff244c09cf8" +dependencies = [ + "bytes", + "google-cloud-wkt", + "serde", + "serde_json", + "serde_with 3.16.1", +] + +[[package]] +name = "google-cloud-wkt" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88e0186e2221bf82c5296500251b4650b111172c324984159a0de9f6bcaa18a5" +dependencies = [ + "base64 0.22.1", + "bytes", + "serde", + "serde_json", + "serde_with 3.16.1", + "thiserror 2.0.18", + "time", + "url", ] [[package]] @@ -1790,9 +1996,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", @@ -1855,7 +2061,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "hmac" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" +dependencies = [ + "digest 0.11.3", ] [[package]] @@ -1959,6 +2174,15 @@ dependencies = [ "serde", ] +[[package]] +name = "hybrid-array" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "0.14.32" @@ -1985,22 +2209,21 @@ dependencies = [ [[package]] name = "hyper" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", - "h2 0.4.13", + "h2 0.4.15", "http 1.4.0", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -2021,23 +2244,6 @@ dependencies = [ "tokio-rustls 0.24.1", ] -[[package]] -name = "hyper-rustls" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c78f9338483cb7e630c8474b07268983c6bd5acee012e4211f9f7bb21b070" -dependencies = [ - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "log", - "rustls 0.22.4", - "rustls-native-certs 0.7.3", - "rustls-pki-types", - "tokio", - "tokio-rustls 0.25.0", -] - [[package]] name = "hyper-rustls" version = "0.27.7" @@ -2045,10 +2251,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http 1.4.0", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", - "rustls 0.23.36", - "rustls-native-certs 0.8.3", + "rustls 0.23.41", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -2062,7 +2268,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "pin-project-lite", "tokio", @@ -2077,7 +2283,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "native-tls", "tokio", @@ -2098,12 +2304,12 @@ dependencies = [ "futures-util", "http 1.4.0", "http-body 1.0.1", - "hyper 1.8.1", + "hyper 1.10.1", "ipnet", "libc", - "percent-encoding 2.3.2", + "percent-encoding", "pin-project-lite", - "socket2 0.6.2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -2233,17 +2439,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.1.0" @@ -2350,36 +2545,67 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" -version = "0.12.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] [[package]] -name = "itertools" -version = "0.13.0" +name = "itoa" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "either", + "cfg-if", + "combine", + "jni-macros", + "jni-sys", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link", ] [[package]] -name = "itertools" -version = "0.14.0" +name = "jni-macros" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" dependencies = [ - "either", + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.114", ] [[package]] -name = "itoa" -version = "1.0.17" +name = "jni-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.114", +] [[package]] name = "jobserver" @@ -2409,9 +2635,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libm" @@ -2478,12 +2704,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "matchit" version = "0.8.4" @@ -2514,9 +2734,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ "libc", "wasi", @@ -2585,15 +2805,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -2656,6 +2867,42 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0142c63252a9e054e68a4c61a5778f7b14f576274d593f8ce883d191a099682" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.18", + "tracing", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c913ac17a6c451661ee255f4625d143e51647ae78ebd969b75e41c4442f4fe47" + +[[package]] +name = "opentelemetry_sdk" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b59f80e1ac4d5ff7a2db8fb6c80badb7f0f3f858211fba08dd9aaec750894f9" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry", + "percent-encoding", + "portable-atomic", + "rand 0.9.2", + "thiserror 2.0.18", +] + [[package]] name = "os_pipe" version = "1.2.3" @@ -2710,12 +2957,6 @@ dependencies = [ "regex", ] -[[package]] -name = "percent-encoding" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" - [[package]] name = "percent-encoding" version = "2.3.2" @@ -2762,7 +3003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" dependencies = [ "pest", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -2816,18 +3057,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", @@ -2852,6 +3093,12 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + [[package]] name = "potential_utf" version = "0.1.4" @@ -2912,7 +3159,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" dependencies = [ "heck", - "itertools 0.14.0", + "itertools", "log", "multimap", "petgraph", @@ -2933,7 +3180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools", "proc-macro2", "quote", "syn 2.0.114", @@ -2980,8 +3227,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.36", - "socket2 0.6.2", + "rustls 0.23.41", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -2994,13 +3241,14 @@ version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.36", + "rustls 0.23.41", "rustls-pki-types", "slab", "thiserror 2.0.18", @@ -3018,7 +3266,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.2", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] @@ -3038,6 +3286,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rand" version = "0.8.5" @@ -3059,6 +3313,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -3097,6 +3362,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rayon" version = "1.11.0" @@ -3202,17 +3473,17 @@ dependencies = [ "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-rustls 0.27.7", "hyper-tls", "hyper-util", "js-sys", "log", "native-tls", - "percent-encoding 2.3.2", + "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.36", + "rustls 0.23.41", "rustls-pki-types", "serde", "serde_json", @@ -3224,13 +3495,51 @@ dependencies = [ "tower", "tower-http", "tower-service", - "url 2.5.8", + "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "webpki-roots", ] +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.10.1", + "hyper-rustls 0.27.7", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.41", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls 0.26.4", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "ring" version = "0.17.14" @@ -3255,7 +3564,7 @@ dependencies = [ "bon", "http 1.4.0", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-rustls 0.27.7", "hyper-util", "serde", @@ -3292,14 +3601,14 @@ dependencies = [ "async-trait", "bytes", "http 1.4.0", - "reqwest", + "reqwest 0.12.28", "rustify_derive", "serde", "serde_json", "serde_urlencoded", "thiserror 1.0.69", "tracing", - "url 2.5.8", + "url", ] [[package]] @@ -3343,23 +3652,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" -dependencies = [ - "log", - "ring", - "rustls-pki-types", - "rustls-webpki 0.102.8", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls" -version = "0.23.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f" dependencies = [ "aws-lc-rs", "log", @@ -3371,19 +3666,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe 0.1.6", - "rustls-pemfile 2.2.0", - "rustls-pki-types", - "schannel", - "security-framework 2.11.1", -] - [[package]] name = "rustls-native-certs" version = "0.8.3" @@ -3396,24 +3678,6 @@ dependencies = [ "security-framework 3.5.1", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "rustls-pki-types" version = "1.14.0" @@ -3425,23 +3689,39 @@ dependencies = [ ] [[package]] -name = "rustls-webpki" -version = "0.101.7" +name = "rustls-platform-verifier" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ - "ring", - "untrusted", + "core-foundation 0.10.1", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.41", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki 0.103.9", + "security-framework 3.5.1", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", ] +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", - "rustls-pki-types", "untrusted", ] @@ -3527,12 +3807,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "secrecy" version = "0.8.0" @@ -3616,9 +3890,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -3730,8 +4004,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", ] [[package]] @@ -3809,6 +4094,22 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "similar" version = "2.7.0" @@ -3920,12 +4221,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4095,21 +4396,21 @@ dependencies = [ "aws-config", "aws-sdk-secretsmanager", "aws-sdk-ssm", - "crc32c", "dockertest", "dockertest-server", "dotenvy", "etcd-client", "fs-err", - "google-secretmanager1", + "google-cloud-gax", + "google-cloud-secretmanager-v1", "home", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-util", "insta", "lazy_static", "rs-consul", "rustify", - "rustls 0.23.36", + "rustls 0.23.41", "rustls-pki-types", "serde", "serde_derive", @@ -4147,7 +4448,7 @@ dependencies = [ "globwalk", "humansize", "lazy_static", - "percent-encoding 2.3.2", + "percent-encoding", "pest", "pest_derive", "rand 0.8.5", @@ -4252,9 +4553,7 @@ checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde_core", "time-core", @@ -4304,9 +4603,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.49.0" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -4314,16 +4613,16 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.2", + "socket2 0.6.4", "tokio-macros", "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -4350,24 +4649,13 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" -dependencies = [ - "rustls 0.22.4", - "rustls-pki-types", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.36", + "rustls 0.23.41", "tokio", ] @@ -4436,26 +4724,28 @@ checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tonic" -version = "0.14.2" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +checksum = "ac2a5518c70fa84342385732db33fb3f44bc4cc748936eb5833d2df34d6445ef" dependencies = [ "async-trait", "axum", "base64 0.22.1", "bytes", - "h2 0.4.13", + "h2 0.4.15", "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.8.1", + "hyper 1.10.1", "hyper-timeout", "hyper-util", - "percent-encoding 2.3.2", + "percent-encoding", "pin-project", - "socket2 0.6.2", + "rustls-native-certs", + "socket2 0.6.4", "sync_wrapper", "tokio", + "tokio-rustls 0.26.4", "tokio-stream", "tower", "tower-layer", @@ -4595,6 +4885,20 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adbc64cba7137545b8044cb1fe9814f7aacf3c6b5f9b45be8bb5db538befdb26" +dependencies = [ + "js-sys", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", + "web-time", +] + [[package]] name = "tracing-subscriber" version = "0.3.22" @@ -4660,9 +4964,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "ucd-trie" @@ -4676,27 +4980,12 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" -[[package]] -name = "unicode-bidi" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" - [[package]] name = "unicode-ident" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" -[[package]] -name = "unicode-normalization" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.12.0" @@ -4737,8 +5026,8 @@ dependencies = [ "cookie_store", "flate2", "log", - "percent-encoding 2.3.2", - "rustls 0.23.36", + "percent-encoding", + "rustls 0.23.41", "rustls-pki-types", "serde", "serde_json", @@ -4759,17 +5048,6 @@ dependencies = [ "log", ] -[[package]] -name = "url" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -dependencies = [ - "idna 0.1.5", - "matches", - "percent-encoding 1.0.1", -] - [[package]] name = "url" version = "2.5.8" @@ -4777,8 +5055,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", - "idna 1.1.0", - "percent-encoding 2.3.2", + "idna", + "percent-encoding", "serde", ] @@ -4832,14 +5110,14 @@ dependencies = [ "bytes", "derive_builder 0.12.0", "http 1.4.0", - "reqwest", + "reqwest 0.12.28", "rustify", "rustify_derive", "serde", "serde_json", "thiserror 1.0.69", "tracing", - "url 2.5.8", + "url", ] [[package]] @@ -4982,6 +5260,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-root-certs" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "1.0.5" @@ -5320,33 +5607,6 @@ dependencies = [ "synstructure 0.13.2", ] -[[package]] -name = "yup-oauth2" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75463c432f5d4ca9c75047514df3d768f8ac3276ac22c9a6531af6d0a3da7ee" -dependencies = [ - "anyhow", - "async-trait", - "base64 0.21.7", - "futures", - "http 0.2.12", - "hyper 0.14.32", - "hyper-rustls 0.25.0", - "itertools 0.12.1", - "log", - "percent-encoding 2.3.2", - "rustls 0.22.4", - "rustls-pemfile 1.0.4", - "seahash", - "serde", - "serde_json", - "time", - "tokio", - "tower-service", - "url 2.5.8", -] - [[package]] name = "zerocopy" version = "0.8.34" diff --git a/teller-providers/Cargo.toml b/teller-providers/Cargo.toml index 6704dc56..550db750 100644 --- a/teller-providers/Cargo.toml +++ b/teller-providers/Cargo.toml @@ -25,7 +25,7 @@ default = [ ssm = ["aws", "dep:aws-sdk-ssm"] aws_secretsmanager = ["aws", "dep:aws-sdk-secretsmanager"] -google_secretmanager = ["dep:google-secretmanager1", "dep:crc32c"] +google_secretmanager = ["dep:google-cloud-secretmanager-v1", "dep:google-cloud-gax"] hashicorp_vault = ["dep:vaultrs", "dep:rustify"] dotenv = ["dep:dotenvy"] hashicorp_consul = ["dep:rs-consul"] @@ -50,8 +50,8 @@ home = "0.5" hyper = "1.8.1" tokio = "1" # gcp -google-secretmanager1 = { version = "5.0", optional = true } -crc32c = { version = "0.6", optional = true } +google-cloud-secretmanager-v1 = { version = "1.10.0", optional = true } +google-cloud-gax = { version = "1.11.0", optional = true } # aws aws-config = { version = "1.6.3", optional = true } # aws-ssm diff --git a/teller-providers/src/providers/google_secretmanager.rs b/teller-providers/src/providers/google_secretmanager.rs index 2fbb00cc..fb1bdcd7 100644 --- a/teller-providers/src/providers/google_secretmanager.rs +++ b/teller-providers/src/providers/google_secretmanager.rs @@ -11,24 +11,23 @@ //! ``` //! ## Options //! -//! Uses default GSM options location strategy (by order): +//! Authentication uses Application Default Credentials (ADC) via the official +//! Google Cloud SDK (`google-cloud-auth`). ADC is resolved automatically and +//! supports, out of the box: //! -//! * Use `GOOGLE_APPLICATION_CREDENTIALS` -//! * Try `$HOME/.config/gcloud/application_default_credentials.json` +//! * `GOOGLE_APPLICATION_CREDENTIALS` (service-account key or user creds) +//! * `$HOME/.config/gcloud/application_default_credentials.json` — i.e. the +//! `authorized_user` credentials written by `gcloud auth application-default login` +//! * GCE/GKE/Cloud Run metadata server +//! * impersonated / external accounts //! //! If you need specific configuration options for this provider, please request via opening an issue. //! use async_trait::async_trait; -use google_secretmanager1::{ - api::{AddSecretVersionRequest, Automatic, Replication, Secret, SecretPayload}, - hyper::{self, client::HttpConnector}, - hyper_rustls::{self, HttpsConnector}, - oauth2::{ - self, - authenticator::{ApplicationDefaultCredentialsTypes, Authenticator}, - ApplicationDefaultCredentialsAuthenticator, ApplicationDefaultCredentialsFlowOpts, - }, - SecretManager, +use google_cloud_gax::paginator::ItemPaginator as _; +use google_cloud_secretmanager_v1::{ + client::SecretManagerService, + model::{replication::Automatic, Replication, Secret, SecretPayload}, }; use super::ProviderKind; @@ -39,7 +38,6 @@ use crate::{ #[async_trait] pub trait GSM { - fn get_hub(&self) -> Option<&SecretManager>>; async fn list(&self, name: &str) -> Result>; async fn get(&self, name: &str) -> Result>; async fn put(&self, name: &str, value: &str) -> Result<()>; @@ -47,7 +45,7 @@ pub trait GSM { } pub struct GSMClient { - hub: SecretManager>, + client: SecretManagerService, } impl GSMClient { @@ -56,113 +54,85 @@ impl GSMClient { /// # Errors /// Fails if cannot create the client pub async fn new() -> Result { - let authenticator = resolve_auth().await.map_err(Box::from)?; - - let hub = SecretManager::new( - hyper::Client::builder().build( - hyper_rustls::HttpsConnectorBuilder::new() - .with_native_roots()? - .https_or_http() - .enable_http1() - .enable_http2() - .build(), - ), - authenticator, - ); - Ok(Self { hub }) + let client = SecretManagerService::builder() + .build() + .await + .map_err(Box::from)?; + Ok(Self { client }) } } #[async_trait] impl GSM for GSMClient { - fn get_hub(&self) -> Option<&SecretManager>> { - Some(&self.hub) - } - async fn list(&self, name: &str) -> Result> { - let hub = self.get_hub().expect("hub"); - - let (_, secret) = hub - .projects() - .secrets_list(name) - .doit() + let mut out = Vec::new(); + let mut items = self + .client + .list_secrets() + .set_parent(name.to_string()) + .by_item(); + + while let Some(secret) = items + .next() .await + .transpose() .map_err(|e| Error::ListError { path: name.to_string(), msg: e.to_string(), - })?; - - let mut out = Vec::new(); - if let Some(secrets) = secret.secrets { - for secret in &secrets { - let secret_name = secret - .name - .as_ref() - .expect("secretmanager API should output a secret resource name"); - - if let Some(value) = self.get(secret_name).await? { - out.push((secret_name.clone(), value)); - } + })? + { + let secret_name = secret.name; + if let Some(value) = self.get(&secret_name).await? { + out.push((secret_name, value)); } } Ok(out) } async fn get(&self, name: &str) -> Result> { - let hub = self.get_hub().expect("hub"); let resource = if name.contains("/versions") { name.to_string() } else { format!("{name}/versions/latest") }; - let maybe_secret = hub - .projects() - .secrets_versions_access(&resource) - .doit() + // A failed access (missing secret or no permission) yields `None` + // rather than an error, so callers can skip it. + match self + .client + .access_secret_version() + .set_name(resource) + .send() .await - .ok(); - - if let Some((_, secret)) = maybe_secret { - let payload = secret + { + Ok(resp) => Ok(resp .payload - .ok_or_else(|| Error::Message(format!("no secret payload found in {resource}")))?; - - Ok(payload - .data - .map(|d| String::from_utf8_lossy(&d).to_string())) - } else { - Ok(None) + .map(|p| String::from_utf8_lossy(p.data.as_ref()).to_string())), + Err(_) => Ok(None), } } async fn put(&self, name: &str, value: &str) -> Result<()> { - let hub = self.get_hub().expect("hub"); - - let res = hub.projects().secrets_get(name).doit().await; - - // attempt adding a secret if missing - if let Err(err) = res { - let repr = err.to_string(); - - // F-you google cloud. resorting to checking a - // string representation of the error instead of navigating - // the horrible error story you give us. - if repr.contains("\"NOT_FOUND\"") { + // Create the secret first if it does not exist yet (HTTP 404). + if let Err(err) = self + .client + .get_secret() + .set_name(name.to_string()) + .send() + .await + { + if err.http_status_code() == Some(404) { if let Some((project, secret_id)) = name.split_once("/secrets/") { - hub.projects() - .secrets_create( - Secret { - replication: Some(Replication { - automatic: Some(Automatic::default()), - user_managed: None, - }), - ..Secret::default() - }, - project, + self.client + .create_secret() + .set_parent(project.to_string()) + .set_secret_id(secret_id.to_string()) + .set_secret( + Secret::new().set_replication( + Replication::new().set_automatic(Automatic::new()), + ), ) - .secret_id(secret_id) - .doit() + .send() .await .map_err(|e| Error::PutError { path: name.to_string(), @@ -172,18 +142,12 @@ impl GSM for GSMClient { } } - // add value under a secret version - hub.projects() - .secrets_add_version( - AddSecretVersionRequest { - payload: Some(SecretPayload { - data: Some(value.as_bytes().to_vec()), - data_crc32c: Some(i64::from(crc32c::crc32c(value.as_bytes()))), - }), - }, - name, - ) - .doit() + // Add the value as a new secret version. + self.client + .add_secret_version() + .set_parent(name.to_string()) + .set_payload(SecretPayload::new().set_data(value.as_bytes().to_vec())) + .send() .await .map_err(|e| Error::PutError { path: name.to_string(), @@ -194,13 +158,12 @@ impl GSM for GSMClient { } async fn del(&self, name: &str) -> Result<()> { - let hub = self.get_hub().expect("hub"); - // only delete if exists if let Ok(Some(_)) = self.get(name).await { - hub.projects() - .secrets_delete(name) - .doit() + self.client + .delete_secret() + .set_name(name.to_string()) + .send() .await .map_err(|e| Error::DeleteError { path: name.to_string(), @@ -212,44 +175,6 @@ impl GSM for GSMClient { } } -async fn resolve_auth() -> Result>> -{ - // - // try SA creds (via env, GOOGLE_APPLICATION_CREDENTIALS) - // - let service_auth = match ApplicationDefaultCredentialsAuthenticator::builder( - ApplicationDefaultCredentialsFlowOpts::default(), - ) - .await - { - ApplicationDefaultCredentialsTypes::ServiceAccount(auth) => { - Ok(auth.build().await.map_err(Box::from)?) - } - ApplicationDefaultCredentialsTypes::InstanceMetadata(_) => Err(Error::Message( - "expected sa detail, found instance metadata".to_string(), - )), - }; - if service_auth.is_ok() { - return service_auth; - } - - // - // try user creds - // - let creds = home::home_dir() - .ok_or_else(|| Error::Message("cannot find home dir".to_string()))? - .join(".config/gcloud/application_default_credentials.json"); - - let user_secret = oauth2::read_authorized_user_secret(creds) - .await - .map_err(Box::from)?; - - Ok(oauth2::AuthorizedUserAuthenticator::builder(user_secret) - .build() - .await - .map_err(Box::from)?) -} - pub struct GoogleSecretManager { client: Box, pub name: String, @@ -344,9 +269,6 @@ mod tests { }; use async_trait::async_trait; - use google_secretmanager1::hyper::client::HttpConnector; - use google_secretmanager1::hyper_rustls::HttpsConnector; - use google_secretmanager1::SecretManager; use crate::{ providers::{google_secretmanager::GSM, test_utils}, @@ -371,10 +293,6 @@ mod tests { #[async_trait] impl GSM for MockClient { - fn get_hub(&self) -> Option<&SecretManager>> { - None - } - async fn list(&self, name: &str) -> Result> { Ok(self .data