From 2d2ad77dbe4476a19616ec5a772bc563ca4e893c Mon Sep 17 00:00:00 2001 From: Sergio Correia Date: Wed, 17 Sep 2025 11:52:15 +0000 Subject: [PATCH] Enable different key sizes and curves for EK and AK Resolves: RHEL-1951 Signed-off-by: Sergio Correia --- .gitignore | 1 + ...ard-key-sizes-and-curves-for-EK-and-.patch | 3609 +++++++++++++++++ 0004-Clippy-fixes.patch | 557 +++ ...-auth-for-EK-to-activate-crendential.patch | 225 + ...nf-add-all-accepted-TPM-encryption-a.patch | 28 + keylime-agent-rust.spec | 19 +- sources | 2 +- 7 files changed, 4435 insertions(+), 6 deletions(-) create mode 100644 0003-Enable-non-standard-key-sizes-and-curves-for-EK-and-.patch create mode 100644 0004-Clippy-fixes.patch create mode 100644 0005-tpm-add-policy-auth-for-EK-to-activate-crendential.patch create mode 100644 0006-keylime-agent.conf-add-all-accepted-TPM-encryption-a.patch diff --git a/.gitignore b/.gitignore index 73e022f..be12d08 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ /v0.2.5.tar.gz /rust-keylime-0.2.7-vendor.tar.xz /v0.2.7.tar.gz +/rust-keylime-0.2.7-vendor.tar.zstd diff --git a/0003-Enable-non-standard-key-sizes-and-curves-for-EK-and-.patch b/0003-Enable-non-standard-key-sizes-and-curves-for-EK-and-.patch new file mode 100644 index 0000000..69c9e6a --- /dev/null +++ b/0003-Enable-non-standard-key-sizes-and-curves-for-EK-and-.patch @@ -0,0 +1,3609 @@ +From bc455a9b62ff79fba9b0cc89485f41aa28408830 Mon Sep 17 00:00:00 2001 +From: Sergio Correia +Date: Wed, 17 Sep 2025 11:23:08 +0000 +Subject: [PATCH 3/6] Enable non standard key sizes and curves for EK and AK + +Also update tss-esapi to 7.6.0. + +Backport of upstream commits (part of PR #846) +- https://github.com/keylime/rust-keylime/commit/dd8fc41 +- https://github.com/keylime/rust-keylime/commit/6fd02de + +Signed-off-by: Sergio Correia +--- + Cargo.lock | 1704 +++++++++++++++------------- + Cargo.toml | 2 +- + keylime-agent/src/agent_handler.rs | 2 +- + keylime-agent/src/common.rs | 1 + + keylime-agent/src/main.rs | 5 +- + keylime/src/algorithms.rs | 111 +- + keylime/src/tpm.rs | 53 +- + 7 files changed, 1037 insertions(+), 841 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index 51a9f72..21f970c 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -4,42 +4,42 @@ version = 4 + + [[package]] + name = "actix-codec" +-version = "0.5.0" ++version = "0.5.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "57a7559404a7f3573127aab53c08ce37a6c6a315c374a31070f3c91cd1b4a7fe" ++checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" + dependencies = [ +- "bitflags 1.3.2", ++ "bitflags", + "bytes", + "futures-core", + "futures-sink", +- "log", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", ++ "tracing", + ] + + [[package]] + name = "actix-http" +-version = "3.9.0" ++version = "3.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d48f96fc3003717aeb9856ca3d02a8c7de502667ad76eeacd830b48d2e91fac4" ++checksum = "44cceded2fb55f3c4b67068fa64962e2ca59614edc5b03167de9ff82ae803da0" + dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-tls", + "actix-utils", +- "ahash", + "base64 0.22.1", +- "bitflags 2.4.0", ++ "bitflags", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", ++ "foldhash", + "futures-core", +- "h2 0.3.26", +- "http 0.2.8", ++ "h2", ++ "http 0.2.12", + "httparse", + "httpdate", + "itoa", +@@ -58,12 +58,12 @@ dependencies = [ + + [[package]] + name = "actix-macros" +-version = "0.2.3" ++version = "0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" ++checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" + dependencies = [ + "quote", +- "syn 1.0.100", ++ "syn", + ] + + [[package]] +@@ -74,7 +74,7 @@ checksum = "13d324164c51f63867b57e73ba5936ea151b8a41a1d23d1031eeb9f70d0236f8" + dependencies = [ + "bytestring", + "cfg-if", +- "http 0.2.8", ++ "http 0.2.12", + "regex-lite", + "serde", + "tracing", +@@ -82,9 +82,9 @@ dependencies = [ + + [[package]] + name = "actix-rt" +-version = "2.10.0" ++version = "2.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" ++checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" + dependencies = [ + "actix-macros", + "futures-core", +@@ -93,30 +93,28 @@ dependencies = [ + + [[package]] + name = "actix-server" +-version = "2.1.1" ++version = "2.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0da34f8e659ea1b077bb4637948b815cd3768ad5a188fdcd74ff4d84240cd824" ++checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" + dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", +- "mio 0.8.11", +- "num_cpus", +- "socket2 0.4.9", ++ "mio", ++ "socket2 0.5.10", + "tokio", + "tracing", + ] + + [[package]] + name = "actix-service" +-version = "2.0.2" ++version = "2.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" ++checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" + dependencies = [ + "futures-core", +- "paste", + "pin-project-lite", + ] + +@@ -141,9 +139,9 @@ dependencies = [ + + [[package]] + name = "actix-utils" +-version = "3.0.0" ++version = "3.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e491cbaac2e7fc788dfff99ff48ef317e23b3cf63dbaf7aaab6418f40f92aa94" ++checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" + dependencies = [ + "local-waker", + "pin-project-lite", +@@ -151,9 +149,9 @@ dependencies = [ + + [[package]] + name = "actix-web" +-version = "4.9.0" ++version = "4.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9180d76e5cc7ccbc4d60a506f2c727730b154010262df5b910eb17dbe4b8cb38" ++checksum = "a597b77b5c6d6a1e1097fddde329a83665e25c5437c696a3a9a4aa514a614dea" + dependencies = [ + "actix-codec", + "actix-http", +@@ -165,12 +163,12 @@ dependencies = [ + "actix-tls", + "actix-utils", + "actix-web-codegen", +- "ahash", + "bytes", + "bytestring", + "cfg-if", + "derive_more", + "encoding_rs", ++ "foldhash", + "futures-core", + "futures-util", + "impl-more", +@@ -185,8 +183,9 @@ dependencies = [ + "serde_json", + "serde_urlencoded", + "smallvec", +- "socket2 0.5.8", ++ "socket2 0.5.10", + "time", ++ "tracing", + "url", + ] + +@@ -199,7 +198,7 @@ dependencies = [ + "actix-router", + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] +@@ -211,45 +210,26 @@ 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" ++version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +- +-[[package]] +-name = "ahash" +-version = "0.8.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +-dependencies = [ +- "cfg-if", +- "getrandom", +- "once_cell", +- "version_check", +- "zerocopy", +-] ++checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + + [[package]] + name = "aho-corasick" +-version = "0.7.19" ++version = "1.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" ++checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" + dependencies = [ + "memchr", + ] + + [[package]] + name = "anstream" +-version = "0.6.18" ++version = "0.6.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" ++checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" + dependencies = [ + "anstyle", + "anstyle-parse", +@@ -262,57 +242,48 @@ dependencies = [ + + [[package]] + name = "anstyle" +-version = "1.0.10" ++version = "1.0.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" ++checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" + + [[package]] + name = "anstyle-parse" +-version = "0.2.1" ++version = "0.2.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" ++checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" + dependencies = [ + "utf8parse", + ] + + [[package]] + name = "anstyle-query" +-version = "1.0.0" ++version = "1.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" ++checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" + dependencies = [ +- "windows-sys 0.48.0", ++ "windows-sys 0.60.2", + ] + + [[package]] + name = "anstyle-wincon" +-version = "3.0.6" ++version = "3.0.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" ++checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" + dependencies = [ + "anstyle", +- "windows-sys 0.59.0", +-] +- +-[[package]] +-name = "assert-json-diff" +-version = "2.0.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +-dependencies = [ +- "serde", +- "serde_json", ++ "once_cell_polyfill", ++ "windows-sys 0.60.2", + ] + + [[package]] + name = "async-trait" +-version = "0.1.57" ++version = "0.1.89" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" ++checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" + dependencies = [ + "proc-macro2", + "quote", +- "syn 1.0.100", ++ "syn", + ] + + [[package]] +@@ -323,20 +294,20 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + + [[package]] + name = "autocfg" +-version = "1.1.0" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" ++checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + + [[package]] + name = "backtrace" +-version = "0.3.74" ++version = "0.3.75" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" ++checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" + dependencies = [ + "addr2line", + "cfg-if", + "libc", +- "miniz_oxide 0.8.3", ++ "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +@@ -360,7 +331,7 @@ version = "0.66.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags", + "cexpr", + "clang-sys", + "lazy_static", +@@ -373,7 +344,7 @@ dependencies = [ + "regex", + "rustc-hash", + "shlex", +- "syn 2.0.90", ++ "syn", + "which", + ] + +@@ -385,30 +356,24 @@ checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" + + [[package]] + name = "bitflags" +-version = "1.3.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +- +-[[package]] +-name = "bitflags" +-version = "2.4.0" ++version = "2.9.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" ++checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" + + [[package]] + name = "block-buffer" +-version = "0.10.3" ++version = "0.10.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" ++checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" + dependencies = [ + "generic-array", + ] + + [[package]] + name = "bumpalo" +-version = "3.12.0" ++version = "3.19.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" ++checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + + [[package]] + name = "byteorder" +@@ -418,24 +383,28 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + + [[package]] + name = "bytes" +-version = "1.7.2" ++version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" ++checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + + [[package]] + name = "bytestring" +-version = "1.1.0" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "86b6a75fd3048808ef06af5cd79712be8111960adaf89d90250974b38fc3928a" ++checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" + dependencies = [ + "bytes", + ] + + [[package]] + name = "cc" +-version = "1.0.73" ++version = "1.2.37" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" ++checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" ++dependencies = [ ++ "find-msvc-tools", ++ "shlex", ++] + + [[package]] + name = "cexpr" +@@ -448,15 +417,15 @@ dependencies = [ + + [[package]] + name = "cfg-if" +-version = "1.0.0" ++version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" ++checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" + + [[package]] + name = "clang-sys" +-version = "1.4.0" ++version = "1.8.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" ++checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" + dependencies = [ + "glob", + "libc", +@@ -465,9 +434,9 @@ dependencies = [ + + [[package]] + name = "clap" +-version = "4.5.23" ++version = "4.5.47" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" ++checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" + dependencies = [ + "clap_builder", + "clap_derive", +@@ -475,9 +444,9 @@ dependencies = [ + + [[package]] + name = "clap_builder" +-version = "4.5.23" ++version = "4.5.47" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" ++checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" + dependencies = [ + "anstream", + "anstyle", +@@ -487,27 +456,27 @@ dependencies = [ + + [[package]] + name = "clap_derive" +-version = "4.5.18" ++version = "4.5.47" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" ++checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" + dependencies = [ + "heck", + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "clap_lex" +-version = "0.7.4" ++version = "0.7.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" ++checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + + [[package]] + name = "colorchoice" +-version = "1.0.0" ++version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" ++checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + + [[package]] + name = "config" +@@ -520,38 +489,32 @@ dependencies = [ + "nom", + "pathdiff", + "serde", +- "toml 0.5.9", ++ "toml", + ] + +-[[package]] +-name = "convert_case" +-version = "0.4.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +- + [[package]] + name = "cpufeatures" +-version = "0.2.5" ++version = "0.2.17" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" ++checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" + dependencies = [ + "libc", + ] + + [[package]] + name = "crc32fast" +-version = "1.3.2" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" ++checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "crossbeam-utils" +-version = "0.8.19" ++version = "0.8.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" ++checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + + [[package]] + name = "crypto-common" +@@ -564,79 +527,89 @@ dependencies = [ + ] + + [[package]] +-name = "deadpool" +-version = "0.10.0" ++name = "deranged" ++version = "0.5.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490" ++checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" + dependencies = [ +- "async-trait", +- "deadpool-runtime", +- "num_cpus", +- "tokio", ++ "powerfmt", + ] + + [[package]] +-name = "deadpool-runtime" +-version = "0.1.2" ++name = "derive_more" ++version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eaa37046cc0f6c3cc6090fbdbf73ef0b8ef4cfcc37f6befc0020f63e8cf121e1" ++checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" ++dependencies = [ ++ "derive_more-impl", ++] + + [[package]] +-name = "derive_more" +-version = "0.99.17" ++name = "derive_more-impl" ++version = "2.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" ++checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" + dependencies = [ +- "convert_case", + "proc-macro2", + "quote", +- "rustc_version 0.4.0", +- "syn 1.0.100", ++ "syn", ++ "unicode-xid", + ] + + [[package]] + name = "digest" +-version = "0.10.5" ++version = "0.10.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" ++checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" + dependencies = [ + "block-buffer", + "crypto-common", + ] + ++[[package]] ++name = "displaydoc" ++version = "0.2.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ + [[package]] + name = "either" +-version = "1.8.0" ++version = "1.15.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" ++checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + + [[package]] + name = "encoding_rs" +-version = "0.8.31" ++version = "0.8.35" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" ++checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" + dependencies = [ + "cfg-if", + ] + + [[package]] + name = "enumflags2" +-version = "0.7.7" ++version = "0.7.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" ++checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" + dependencies = [ + "enumflags2_derive", + ] + + [[package]] + name = "enumflags2_derive" +-version = "0.7.7" ++version = "0.7.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" ++checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] +@@ -654,40 +627,40 @@ dependencies = [ + + [[package]] + name = "equivalent" +-version = "1.0.1" ++version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" ++checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + [[package]] + name = "errno" +-version = "0.3.8" ++version = "0.3.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" ++checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" + dependencies = [ + "libc", +- "windows-sys 0.52.0", ++ "windows-sys 0.61.0", + ] + + [[package]] +-name = "error-chain" +-version = "0.10.0" ++name = "fastrand" ++version = "2.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" ++checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + + [[package]] +-name = "fastrand" +-version = "2.2.0" ++name = "find-msvc-tools" ++version = "0.1.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" ++checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" + + [[package]] + name = "flate2" +-version = "1.0.28" ++version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" ++checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" + dependencies = [ + "crc32fast", +- "miniz_oxide 0.7.1", ++ "miniz_oxide", + ] + + [[package]] +@@ -696,6 +669,12 @@ version = "1.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + ++[[package]] ++name = "foldhash" ++version = "0.1.5" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" ++ + [[package]] + name = "foreign-types" + version = "0.3.2" +@@ -713,9 +692,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + + [[package]] + name = "form_urlencoded" +-version = "1.2.1" ++version = "1.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" ++checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" + dependencies = [ + "percent-encoding", + ] +@@ -776,7 +755,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] +@@ -811,9 +790,9 @@ dependencies = [ + + [[package]] + name = "generic-array" +-version = "0.14.6" ++version = "0.14.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" ++checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" + dependencies = [ + "typenum", + "version_check", +@@ -821,13 +800,25 @@ dependencies = [ + + [[package]] + name = "getrandom" +-version = "0.2.7" ++version = "0.2.16" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" ++dependencies = [ ++ "cfg-if", ++ "libc", ++ "wasi 0.11.1+wasi-snapshot-preview1", ++] ++ ++[[package]] ++name = "getrandom" ++version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" ++checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" + dependencies = [ + "cfg-if", + "libc", +- "wasi", ++ "r-efi", ++ "wasi 0.14.7+wasi-0.2.4", + ] + + [[package]] +@@ -838,41 +829,22 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + + [[package]] + name = "glob" +-version = "0.3.2" ++version = "0.3.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" ++checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + + [[package]] + name = "h2" +-version = "0.3.26" ++version = "0.3.27" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" ++checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" + dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", +- "http 0.2.8", +- "indexmap", +- "slab", +- "tokio", +- "tokio-util", +- "tracing", +-] +- +-[[package]] +-name = "h2" +-version = "0.4.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +-dependencies = [ +- "atomic-waker", +- "bytes", +- "fnv", +- "futures-core", +- "futures-sink", +- "http 1.1.0", ++ "http 0.2.12", + "indexmap", + "slab", + "tokio", +@@ -882,9 +854,9 @@ dependencies = [ + + [[package]] + name = "hashbrown" +-version = "0.14.3" ++version = "0.15.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" ++checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" + + [[package]] + name = "heck" +@@ -894,18 +866,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + + [[package]] + name = "hermit-abi" +-version = "0.1.19" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +-dependencies = [ +- "libc", +-] +- +-[[package]] +-name = "hermit-abi" +-version = "0.4.0" ++version = "0.5.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" ++checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + + [[package]] + name = "hex" +@@ -913,6 +876,15 @@ version = "0.4.3" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + ++[[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 = "hostname-validator" + version = "1.1.1" +@@ -921,9 +893,9 @@ checksum = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2" + + [[package]] + name = "http" +-version = "0.2.8" ++version = "0.2.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" ++checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" + dependencies = [ + "bytes", + "fnv", +@@ -932,9 +904,9 @@ dependencies = [ + + [[package]] + name = "http" +-version = "1.1.0" ++version = "1.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" ++checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" + dependencies = [ + "bytes", + "fnv", +@@ -948,56 +920,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" + dependencies = [ + "bytes", +- "http 1.1.0", ++ "http 1.3.1", + ] + + [[package]] + name = "http-body-util" +-version = "0.1.2" ++version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" ++checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" + dependencies = [ + "bytes", +- "futures-util", +- "http 1.1.0", ++ "futures-core", ++ "http 1.3.1", + "http-body", + "pin-project-lite", + ] + + [[package]] + name = "httparse" +-version = "1.8.0" ++version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" ++checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + + [[package]] + name = "httpdate" +-version = "1.0.2" ++version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" ++checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + + [[package]] + name = "humantime" +-version = "2.1.0" ++version = "2.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" ++checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + + [[package]] + name = "hyper" +-version = "1.4.1" ++version = "1.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" ++checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" + dependencies = [ ++ "atomic-waker", + "bytes", + "futures-channel", +- "futures-util", +- "h2 0.4.7", +- "http 1.1.0", ++ "futures-core", ++ "http 1.3.1", + "http-body", + "httparse", +- "httpdate", + "itoa", + "pin-project-lite", ++ "pin-utils", + "smallvec", + "tokio", + "want", +@@ -1005,64 +977,187 @@ dependencies = [ + + [[package]] + name = "hyper-util" +-version = "0.1.10" ++version = "0.1.17" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" ++checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" + dependencies = [ ++ "base64 0.22.1", + "bytes", + "futures-channel", ++ "futures-core", + "futures-util", +- "http 1.1.0", ++ "http 1.3.1", + "http-body", + "hyper", ++ "ipnet", ++ "libc", ++ "percent-encoding", + "pin-project-lite", +- "socket2 0.5.8", ++ "socket2 0.6.0", + "tokio", + "tower-service", + "tracing", + ] + ++[[package]] ++name = "icu_collections" ++version = "2.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" ++dependencies = [ ++ "displaydoc", ++ "potential_utf", ++ "yoke", ++ "zerofrom", ++ "zerovec", ++] ++ ++[[package]] ++name = "icu_locale_core" ++version = "2.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" ++dependencies = [ ++ "displaydoc", ++ "litemap", ++ "tinystr", ++ "writeable", ++ "zerovec", ++] ++ ++[[package]] ++name = "icu_normalizer" ++version = "2.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" ++dependencies = [ ++ "displaydoc", ++ "icu_collections", ++ "icu_normalizer_data", ++ "icu_properties", ++ "icu_provider", ++ "smallvec", ++ "zerovec", ++] ++ ++[[package]] ++name = "icu_normalizer_data" ++version = "2.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" ++ ++[[package]] ++name = "icu_properties" ++version = "2.0.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" ++dependencies = [ ++ "displaydoc", ++ "icu_collections", ++ "icu_locale_core", ++ "icu_properties_data", ++ "icu_provider", ++ "potential_utf", ++ "zerotrie", ++ "zerovec", ++] ++ ++[[package]] ++name = "icu_properties_data" ++version = "2.0.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" ++ ++[[package]] ++name = "icu_provider" ++version = "2.0.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" ++dependencies = [ ++ "displaydoc", ++ "icu_locale_core", ++ "stable_deref_trait", ++ "tinystr", ++ "writeable", ++ "yoke", ++ "zerofrom", ++ "zerotrie", ++ "zerovec", ++] ++ + [[package]] + name = "idna" +-version = "0.5.0" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" ++dependencies = [ ++ "idna_adapter", ++ "smallvec", ++ "utf8_iter", ++] ++ ++[[package]] ++name = "idna_adapter" ++version = "1.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" ++checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" + dependencies = [ +- "unicode-bidi", +- "unicode-normalization", ++ "icu_normalizer", ++ "icu_properties", + ] + + [[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.1.0" ++version = "2.11.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" ++checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" + dependencies = [ + "equivalent", + "hashbrown", + ] + ++[[package]] ++name = "io-uring" ++version = "0.7.10" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" ++dependencies = [ ++ "bitflags", ++ "cfg-if", ++ "libc", ++] ++ + [[package]] + name = "ipnet" +-version = "2.5.0" ++version = "2.11.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" ++ ++[[package]] ++name = "iri-string" ++version = "0.7.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" ++checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" ++dependencies = [ ++ "memchr", ++ "serde", ++] + + [[package]] + name = "is-terminal" +-version = "0.4.13" ++version = "0.4.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" ++checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" + dependencies = [ +- "hermit-abi 0.4.0", ++ "hermit-abi", + "libc", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -1073,16 +1168,17 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + + [[package]] + name = "itoa" +-version = "1.0.3" ++version = "1.0.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" ++checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + + [[package]] + name = "js-sys" +-version = "0.3.60" ++version = "0.3.79" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" ++checksum = "6247da8b8658ad4e73a186e747fcc5fc2a29f979d6fe6269127fdb5fd08298d0" + dependencies = [ ++ "once_cell", + "wasm-bindgen", + ] + +@@ -1108,7 +1204,6 @@ dependencies = [ + "thiserror", + "tokio", + "tss-esapi", +- "wiremock", + ] + + [[package]] +@@ -1140,7 +1235,6 @@ dependencies = [ + "tss-esapi", + "uuid", + "zip", +- "zmq", + ] + + [[package]] +@@ -1165,9 +1259,9 @@ checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + + [[package]] + name = "lazy_static" +-version = "1.4.0" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" ++checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "lazycell" +@@ -1177,49 +1271,60 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + + [[package]] + name = "libc" +-version = "0.2.169" ++version = "0.2.175" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" ++checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" + + [[package]] + name = "libloading" +-version = "0.7.3" ++version = "0.8.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" ++checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" + dependencies = [ + "cfg-if", +- "winapi", ++ "windows-targets 0.53.3", + ] + + [[package]] + name = "linux-raw-sys" +-version = "0.4.14" ++version = "0.4.15" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" ++ ++[[package]] ++name = "linux-raw-sys" ++version = "0.11.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" ++ ++[[package]] ++name = "litemap" ++version = "0.8.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" ++checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + + [[package]] + name = "local-channel" +-version = "0.1.3" ++version = "0.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" ++checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" + dependencies = [ + "futures-core", + "futures-sink", +- "futures-util", + "local-waker", + ] + + [[package]] + name = "local-waker" +-version = "0.1.3" ++version = "0.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1" ++checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + + [[package]] + name = "lock_api" +-version = "0.4.9" ++version = "0.4.13" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" ++checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" + dependencies = [ + "autocfg", + "scopeguard", +@@ -1227,43 +1332,31 @@ dependencies = [ + + [[package]] + name = "log" +-version = "0.4.25" ++version = "0.4.28" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" ++checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + + [[package]] + name = "mbox" +-version = "0.6.0" ++version = "0.7.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0f88d5c34d63aad11aa4321ef55ccb064af58b3ad8091079ae22bf83e5eb75d6" ++checksum = "26d142aeadbc4e8c679fc6d93fbe7efe1c021fa7d80629e615915b519e3bc6de" + dependencies = [ + "libc", +- "rustc_version 0.3.3", + "stable_deref_trait", + ] + + [[package]] + name = "memchr" +-version = "2.5.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +- +-[[package]] +-name = "metadeps" +-version = "1.1.2" ++version = "2.7.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "73b122901b3a675fac8cecf68dcb2f0d3036193bc861d1ac0e1c337f7d5254c2" +-dependencies = [ +- "error-chain", +- "pkg-config", +- "toml 0.2.1", +-] ++checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" + + [[package]] + name = "mime" +-version = "0.3.16" ++version = "0.3.17" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" ++checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + + [[package]] + name = "minimal-lexical" +@@ -1273,94 +1366,61 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + + [[package]] + name = "miniz_oxide" +-version = "0.7.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +-dependencies = [ +- "adler", +-] +- +-[[package]] +-name = "miniz_oxide" +-version = "0.8.3" ++version = "0.8.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" ++checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" + dependencies = [ + "adler2", + ] + + [[package]] + name = "mio" +-version = "0.8.11" ++version = "1.0.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" ++checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" + dependencies = [ + "libc", + "log", +- "wasi", +- "windows-sys 0.48.0", +-] +- +-[[package]] +-name = "mio" +-version = "1.0.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +-dependencies = [ +- "libc", +- "wasi", +- "windows-sys 0.52.0", ++ "wasi 0.11.1+wasi-snapshot-preview1", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "nom" +-version = "7.1.1" ++version = "7.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" ++checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" + dependencies = [ + "memchr", + "minimal-lexical", + ] + + [[package]] +-name = "num-derive" +-version = "0.4.1" ++name = "num-conv" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" ++ ++[[package]] ++name = "num-derive" ++version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" ++checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "num-traits" +-version = "0.2.15" ++version = "0.2.19" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" ++checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + dependencies = [ + "autocfg", + ] + +-[[package]] +-name = "num_cpus" +-version = "1.13.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +-dependencies = [ +- "hermit-abi 0.1.19", +- "libc", +-] +- +-[[package]] +-name = "num_threads" +-version = "0.1.6" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +-dependencies = [ +- "libc", +-] +- + [[package]] + name = "object" + version = "0.36.7" +@@ -1381,17 +1441,23 @@ dependencies = [ + + [[package]] + name = "once_cell" +-version = "1.19.0" ++version = "1.21.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" ++ ++[[package]] ++name = "once_cell_polyfill" ++version = "1.70.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" ++checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + + [[package]] + name = "openssl" +-version = "0.10.70" ++version = "0.10.73" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" ++checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags", + "cfg-if", + "foreign-types", + "libc", +@@ -1408,14 +1474,14 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "openssl-sys" +-version = "0.9.105" ++version = "0.9.109" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" ++checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" + dependencies = [ + "cc", + "libc", +@@ -1425,9 +1491,9 @@ dependencies = [ + + [[package]] + name = "parking_lot" +-version = "0.12.1" ++version = "0.12.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" ++checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" + dependencies = [ + "lock_api", + "parking_lot_core", +@@ -1435,28 +1501,22 @@ dependencies = [ + + [[package]] + name = "parking_lot_core" +-version = "0.9.3" ++version = "0.9.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" ++checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" + dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", +- "windows-sys 0.36.1", ++ "windows-targets 0.52.6", + ] + +-[[package]] +-name = "paste" +-version = "1.0.9" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" +- + [[package]] + name = "pathdiff" +-version = "0.2.1" ++version = "0.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" ++checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + + [[package]] + name = "peeking_take_while" +@@ -1466,15 +1526,15 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + + [[package]] + name = "percent-encoding" +-version = "2.3.1" ++version = "2.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" ++checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + + [[package]] + name = "pest" +-version = "2.7.15" ++version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" ++checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" + dependencies = [ + "memchr", + "thiserror", +@@ -1483,9 +1543,9 @@ dependencies = [ + + [[package]] + name = "pest_derive" +-version = "2.7.15" ++version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" ++checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663" + dependencies = [ + "pest", + "pest_generator", +@@ -1493,24 +1553,23 @@ dependencies = [ + + [[package]] + name = "pest_generator" +-version = "2.7.15" ++version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" ++checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f" + dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "pest_meta" +-version = "2.7.15" ++version = "2.8.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" ++checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420" + dependencies = [ +- "once_cell", + "pest", + "sha2", + ] +@@ -1552,9 +1611,9 @@ dependencies = [ + + [[package]] + name = "pin-project-lite" +-version = "0.2.14" ++version = "0.2.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" ++checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + + [[package]] + name = "pin-utils" +@@ -1564,15 +1623,33 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + + [[package]] + name = "pkg-config" +-version = "0.3.25" ++version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" ++checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" ++ ++[[package]] ++name = "potential_utf" ++version = "0.1.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" ++dependencies = [ ++ "zerovec", ++] ++ ++[[package]] ++name = "powerfmt" ++version = "0.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + + [[package]] + name = "ppv-lite86" +-version = "0.2.16" ++version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" ++checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" ++dependencies = [ ++ "zerocopy", ++] + + [[package]] + name = "pretty_env_logger" +@@ -1586,48 +1663,53 @@ dependencies = [ + + [[package]] + name = "prettyplease" +-version = "0.2.16" ++version = "0.2.37" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" ++checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" + dependencies = [ + "proc-macro2", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "proc-macro2" +-version = "1.0.92" ++version = "1.0.101" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" ++checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "quote" +-version = "1.0.35" ++version = "1.0.40" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" ++checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" + dependencies = [ + "proc-macro2", + ] + ++[[package]] ++name = "r-efi" ++version = "5.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" ++ + [[package]] + name = "rand" +-version = "0.8.5" ++version = "0.9.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" ++checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" + dependencies = [ +- "libc", + "rand_chacha", + "rand_core", + ] + + [[package]] + name = "rand_chacha" +-version = "0.3.1" ++version = "0.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" ++checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" + dependencies = [ + "ppv-lite86", + "rand_core", +@@ -1635,27 +1717,39 @@ dependencies = [ + + [[package]] + name = "rand_core" +-version = "0.6.4" ++version = "0.9.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" ++checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" + dependencies = [ +- "getrandom", ++ "getrandom 0.3.3", + ] + + [[package]] + name = "redox_syscall" +-version = "0.2.16" ++version = "0.5.17" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" ++checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" + dependencies = [ +- "bitflags 1.3.2", ++ "bitflags", + ] + + [[package]] + name = "regex" +-version = "1.6.0" ++version = "1.11.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" ++checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" ++dependencies = [ ++ "aho-corasick", ++ "memchr", ++ "regex-automata", ++ "regex-syntax", ++] ++ ++[[package]] ++name = "regex-automata" ++version = "0.4.10" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" + dependencies = [ + "aho-corasick", + "memchr", +@@ -1664,36 +1758,32 @@ dependencies = [ + + [[package]] + name = "regex-lite" +-version = "0.1.6" ++version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" ++checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" + + [[package]] + name = "regex-syntax" +-version = "0.6.27" ++version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" ++checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" + + [[package]] + name = "reqwest" +-version = "0.12.12" ++version = "0.12.23" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" ++checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" + dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", +- "futures-util", +- "http 1.1.0", ++ "http 1.3.1", + "http-body", + "http-body-util", + "hyper", + "hyper-util", +- "ipnet", + "js-sys", + "log", +- "mime", +- "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", +@@ -1702,19 +1792,19 @@ dependencies = [ + "sync_wrapper", + "tokio", + "tower", ++ "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +- "windows-registry", + ] + + [[package]] + name = "rustc-demangle" +-version = "0.1.24" ++version = "0.1.26" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" ++checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + + [[package]] + name = "rustc-hash" +@@ -1723,111 +1813,100 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + + [[package]] +-name = "rustc_version" +-version = "0.3.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +-dependencies = [ +- "semver 0.11.0", +-] +- +-[[package]] +-name = "rustc_version" +-version = "0.4.0" ++name = "rustix" ++version = "0.38.44" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" ++checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" + dependencies = [ +- "semver 1.0.14", ++ "bitflags", ++ "errno", ++ "libc", ++ "linux-raw-sys 0.4.15", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "rustix" +-version = "0.38.41" ++version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" ++checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags", + "errno", + "libc", +- "linux-raw-sys", +- "windows-sys 0.52.0", ++ "linux-raw-sys 0.11.0", ++ "windows-sys 0.61.0", + ] + + [[package]] +-name = "ryu" +-version = "1.0.11" ++name = "rustversion" ++version = "1.0.22" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" ++checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + + [[package]] +-name = "scopeguard" +-version = "1.1.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +- +-[[package]] +-name = "semver" +-version = "0.11.0" ++name = "ryu" ++version = "1.0.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +-dependencies = [ +- "semver-parser", +-] ++checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + + [[package]] +-name = "semver" +-version = "1.0.14" ++name = "scopeguard" ++version = "1.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" ++checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + + [[package]] +-name = "semver-parser" +-version = "0.10.2" ++name = "serde" ++version = "1.0.225" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" ++checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" + dependencies = [ +- "pest", ++ "serde_core", ++ "serde_derive", + ] + + [[package]] +-name = "serde" +-version = "1.0.217" ++name = "serde_bytes" ++version = "0.11.19" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" ++checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" + dependencies = [ +- "serde_derive", ++ "serde", ++ "serde_core", + ] + + [[package]] +-name = "serde_bytes" +-version = "0.11.14" ++name = "serde_core" ++version = "1.0.225" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" ++checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" + dependencies = [ +- "serde", ++ "serde_derive", + ] + + [[package]] + name = "serde_derive" +-version = "1.0.217" ++version = "1.0.225" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" ++checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "serde_json" +-version = "1.0.135" ++version = "1.0.145" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" ++checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" + dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", ++ "serde_core", + ] + + [[package]] +@@ -1844,9 +1923,9 @@ dependencies = [ + + [[package]] + name = "sha1" +-version = "0.10.5" ++version = "0.10.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" ++checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" + dependencies = [ + "cfg-if", + "cpufeatures", +@@ -1855,9 +1934,9 @@ dependencies = [ + + [[package]] + name = "sha2" +-version = "0.10.6" ++version = "0.10.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" ++checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" + dependencies = [ + "cfg-if", + "cpufeatures", +@@ -1872,9 +1951,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + + [[package]] + name = "signal-hook" +-version = "0.3.17" ++version = "0.3.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" ++checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" + dependencies = [ + "libc", + "signal-hook-registry", +@@ -1882,46 +1961,43 @@ dependencies = [ + + [[package]] + name = "signal-hook-registry" +-version = "1.4.0" ++version = "1.4.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" ++checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" + dependencies = [ + "libc", + ] + + [[package]] + name = "slab" +-version = "0.4.7" ++version = "0.4.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +-dependencies = [ +- "autocfg", +-] ++checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + + [[package]] + name = "smallvec" +-version = "1.13.2" ++version = "1.15.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" ++checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + + [[package]] + name = "socket2" +-version = "0.4.9" ++version = "0.5.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" ++checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" + dependencies = [ + "libc", +- "winapi", ++ "windows-sys 0.52.0", + ] + + [[package]] + name = "socket2" +-version = "0.5.8" ++version = "0.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" ++checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" + dependencies = [ + "libc", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -1944,20 +2020,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + + [[package]] + name = "syn" +-version = "1.0.100" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +-dependencies = [ +- "proc-macro2", +- "quote", +- "unicode-ident", +-] +- +-[[package]] +-name = "syn" +-version = "2.0.90" ++version = "2.0.106" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" ++checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" + dependencies = [ + "proc-macro2", + "quote", +@@ -1966,135 +2031,149 @@ dependencies = [ + + [[package]] + name = "sync_wrapper" +-version = "1.0.1" ++version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" ++checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + dependencies = [ + "futures-core", + ] + + [[package]] + name = "synstructure" +-version = "0.12.6" ++version = "0.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" ++checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" + dependencies = [ + "proc-macro2", + "quote", +- "syn 1.0.100", +- "unicode-xid", ++ "syn", + ] + + [[package]] + name = "target-lexicon" +-version = "0.12.4" ++version = "0.12.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c02424087780c9b71cc96799eaeddff35af2bc513278cda5c99fc1f5d026d3c1" ++checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + + [[package]] + name = "tempfile" +-version = "3.14.0" ++version = "3.22.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" ++checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" + dependencies = [ +- "cfg-if", + "fastrand", ++ "getrandom 0.3.3", + "once_cell", +- "rustix", +- "windows-sys 0.59.0", ++ "rustix 1.1.2", ++ "windows-sys 0.61.0", + ] + + [[package]] + name = "termcolor" +-version = "1.1.3" ++version = "1.4.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" ++checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" + dependencies = [ + "winapi-util", + ] + + [[package]] + name = "thiserror" +-version = "2.0.9" ++version = "2.0.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" ++checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" + dependencies = [ + "thiserror-impl", + ] + + [[package]] + name = "thiserror-impl" +-version = "2.0.9" ++version = "2.0.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" ++checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "time" +-version = "0.3.14" ++version = "0.3.43" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3c3f9a28b618c3a6b9251b6908e9c99e04b9e5c02e6581ccbb67d59c34ef7f9b" ++checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" + dependencies = [ +- "itoa", +- "libc", +- "num_threads", ++ "deranged", ++ "num-conv", ++ "powerfmt", ++ "serde", ++ "time-core", ++ "time-macros", + ] + + [[package]] +-name = "tinyvec" +-version = "1.6.0" ++name = "time-core" ++version = "0.1.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" ++ ++[[package]] ++name = "time-macros" ++version = "0.2.24" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" ++checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" + dependencies = [ +- "tinyvec_macros", ++ "num-conv", ++ "time-core", + ] + + [[package]] +-name = "tinyvec_macros" +-version = "0.1.0" ++name = "tinystr" ++version = "0.8.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" ++checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" ++dependencies = [ ++ "displaydoc", ++ "zerovec", ++] + + [[package]] + name = "tokio" +-version = "1.42.0" ++version = "1.47.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" ++checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" + dependencies = [ + "backtrace", + "bytes", ++ "io-uring", + "libc", +- "mio 1.0.3", ++ "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", +- "socket2 0.5.8", ++ "slab", ++ "socket2 0.6.0", + "tokio-macros", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "tokio-macros" +-version = "2.4.0" ++version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" ++checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + ] + + [[package]] + name = "tokio-openssl" +-version = "0.6.3" ++version = "0.6.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c08f9ffb7809f1b20c1b398d92acf4cc719874b3b2b2d9ea2f09b4a80350878a" ++checksum = "59df6849caa43bb7567f9a36f863c447d95a11d5903c9cc334ba32576a27eadd" + dependencies = [ +- "futures-util", + "openssl", + "openssl-sys", + "tokio", +@@ -2102,29 +2181,22 @@ dependencies = [ + + [[package]] + name = "tokio-util" +-version = "0.7.4" ++version = "0.7.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" ++checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" + dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +- "tracing", + ] + + [[package]] + name = "toml" +-version = "0.2.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "736b60249cb25337bc196faa43ee12c705e426f3d55c214d73a4e7be06f92cb4" +- +-[[package]] +-name = "toml" +-version = "0.5.9" ++version = "0.5.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" + dependencies = [ + "serde", + ] +@@ -2144,6 +2216,24 @@ dependencies = [ + "tower-service", + ] + ++[[package]] ++name = "tower-http" ++version = "0.6.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" ++dependencies = [ ++ "bitflags", ++ "bytes", ++ "futures-util", ++ "http 1.3.1", ++ "http-body", ++ "iri-string", ++ "pin-project-lite", ++ "tower", ++ "tower-layer", ++ "tower-service", ++] ++ + [[package]] + name = "tower-layer" + version = "0.3.3" +@@ -2158,39 +2248,51 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + + [[package]] + name = "tracing" +-version = "0.1.36" ++version = "0.1.41" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" ++checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" + dependencies = [ +- "cfg-if", + "log", + "pin-project-lite", ++ "tracing-attributes", + "tracing-core", + ] + ++[[package]] ++name = "tracing-attributes" ++version = "0.1.30" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ + [[package]] + name = "tracing-core" +-version = "0.1.29" ++version = "0.1.34" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" ++checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" + dependencies = [ + "once_cell", + ] + + [[package]] + name = "try-lock" +-version = "0.2.3" ++version = "0.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" ++checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + + [[package]] + name = "tss-esapi" +-version = "7.4.0" ++version = "7.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "de234df360c349f78ecd33f0816ab3842db635732212b5cfad67f2638336864e" ++checksum = "78ea9ccde878b029392ac97b5be1f470173d06ea41d18ad0bb3c92794c16a0f2" + dependencies = [ + "bitfield", + "enumflags2", ++ "getrandom 0.2.16", + "hostname-validator", + "log", + "mbox", +@@ -2218,67 +2320,61 @@ dependencies = [ + + [[package]] + name = "typenum" +-version = "1.15.0" ++version = "1.18.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" ++checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + + [[package]] + name = "ucd-trie" +-version = "0.1.5" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +- +-[[package]] +-name = "unicode-bidi" +-version = "0.3.17" ++version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" ++checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + + [[package]] + name = "unicode-ident" +-version = "1.0.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +- +-[[package]] +-name = "unicode-normalization" +-version = "0.1.22" ++version = "1.0.19" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +-dependencies = [ +- "tinyvec", +-] ++checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" + + [[package]] + name = "unicode-xid" +-version = "0.2.4" ++version = "0.2.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" ++checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + + [[package]] + name = "url" +-version = "2.5.2" ++version = "2.5.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" ++checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" + dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", ++ "serde", + ] + ++[[package]] ++name = "utf8_iter" ++version = "1.0.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" ++ + [[package]] + name = "utf8parse" +-version = "0.2.1" ++version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" ++checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + + [[package]] + name = "uuid" +-version = "1.11.0" ++version = "1.18.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" ++checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" + dependencies = [ +- "getrandom", ++ "getrandom 0.3.3", ++ "js-sys", ++ "wasm-bindgen", + ] + + [[package]] +@@ -2289,69 +2385,88 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + + [[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 = "want" +-version = "0.3.0" ++version = "0.3.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" ++checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" + dependencies = [ +- "log", + "try-lock", + ] + + [[package]] + name = "wasi" +-version = "0.11.0+wasi-snapshot-preview1" ++version = "0.11.1+wasi-snapshot-preview1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" ++ ++[[package]] ++name = "wasi" ++version = "0.14.7+wasi-0.2.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" ++dependencies = [ ++ "wasip2", ++] ++ ++[[package]] ++name = "wasip2" ++version = "1.0.1+wasi-0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" ++checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" ++dependencies = [ ++ "wit-bindgen", ++] + + [[package]] + name = "wasm-bindgen" +-version = "0.2.94" ++version = "0.2.102" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ef073ced962d62984fb38a36e5fdc1a2b23c9e0e1fa0689bb97afa4202ef6887" ++checksum = "4ad224d2776649cfb4f4471124f8176e54c1cca67a88108e30a0cd98b90e7ad3" + dependencies = [ + "cfg-if", + "once_cell", ++ "rustversion", + "wasm-bindgen-macro", ++ "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-backend" +-version = "0.2.94" ++version = "0.2.102" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c4bfab14ef75323f4eb75fa52ee0a3fb59611977fd3240da19b2cf36ff85030e" ++checksum = "3a1364104bdcd3c03f22b16a3b1c9620891469f5e9f09bc38b2db121e593e732" + dependencies = [ + "bumpalo", + "log", +- "once_cell", + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-futures" +-version = "0.4.33" ++version = "0.4.52" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" ++checksum = "9c0a08ecf5d99d5604a6666a70b3cde6ab7cc6142f5e641a8ef48fc744ce8854" + dependencies = [ + "cfg-if", + "js-sys", ++ "once_cell", + "wasm-bindgen", + "web-sys", + ] + + [[package]] + name = "wasm-bindgen-macro" +-version = "0.2.94" ++version = "0.2.102" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a7bec9830f60924d9ceb3ef99d55c155be8afa76954edffbb5936ff4509474e7" ++checksum = "0d7ab4ca3e367bb1ed84ddbd83cc6e41e115f8337ed047239578210214e36c76" + dependencies = [ + "quote", + "wasm-bindgen-macro-support", +@@ -2359,28 +2474,31 @@ dependencies = [ + + [[package]] + name = "wasm-bindgen-macro-support" +-version = "0.2.94" ++version = "0.2.102" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4c74f6e152a76a2ad448e223b0fc0b6b5747649c3d769cc6bf45737bf97d0ed6" ++checksum = "4a518014843a19e2dbbd0ed5dfb6b99b23fb886b14e6192a00803a3e14c552b0" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-shared" +-version = "0.2.94" ++version = "0.2.102" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a42f6c679374623f295a8623adfe63d9284091245c3504bde47c17a3ce2777d9" ++checksum = "255eb0aa4cc2eea3662a00c2bbd66e93911b7361d5e0fcd62385acfd7e15dcee" ++dependencies = [ ++ "unicode-ident", ++] + + [[package]] + name = "web-sys" +-version = "0.3.60" ++version = "0.3.79" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" ++checksum = "50462a022f46851b81d5441d1a6f5bac0b21a1d72d64bd4906fbdd4bf7230ec7" + dependencies = [ + "js-sys", + "wasm-bindgen", +@@ -2388,129 +2506,71 @@ dependencies = [ + + [[package]] + name = "which" +-version = "4.3.0" ++version = "4.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" ++checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" + dependencies = [ + "either", +- "libc", ++ "home", + "once_cell", ++ "rustix 0.38.44", + ] + +-[[package]] +-name = "winapi" +-version = "0.3.9" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +-dependencies = [ +- "winapi-i686-pc-windows-gnu", +- "winapi-x86_64-pc-windows-gnu", +-] +- +-[[package]] +-name = "winapi-i686-pc-windows-gnu" +-version = "0.4.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +- + [[package]] + name = "winapi-util" +-version = "0.1.5" ++version = "0.1.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" ++checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" + dependencies = [ +- "winapi", ++ "windows-sys 0.61.0", + ] + + [[package]] +-name = "winapi-x86_64-pc-windows-gnu" +-version = "0.4.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +- +-[[package]] +-name = "windows-registry" +-version = "0.2.0" ++name = "windows-link" ++version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +-dependencies = [ +- "windows-result", +- "windows-strings", +- "windows-targets 0.52.6", +-] ++checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + + [[package]] +-name = "windows-result" ++name = "windows-link" + 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.36.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +-dependencies = [ +- "windows_aarch64_msvc 0.36.1", +- "windows_i686_gnu 0.36.1", +- "windows_i686_msvc 0.36.1", +- "windows_x86_64_gnu 0.36.1", +- "windows_x86_64_msvc 0.36.1", +-] ++checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + + [[package]] + name = "windows-sys" +-version = "0.48.0" ++version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" ++checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + dependencies = [ +- "windows-targets 0.48.0", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "windows-sys" +-version = "0.52.0" ++version = "0.59.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" ++checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" + dependencies = [ + "windows-targets 0.52.6", + ] + + [[package]] + name = "windows-sys" +-version = "0.59.0" ++version = "0.60.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" ++checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" + dependencies = [ +- "windows-targets 0.52.6", ++ "windows-targets 0.53.3", + ] + + [[package]] +-name = "windows-targets" +-version = "0.48.0" ++name = "windows-sys" ++version = "0.61.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" ++checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" + dependencies = [ +- "windows_aarch64_gnullvm 0.48.0", +- "windows_aarch64_msvc 0.48.0", +- "windows_i686_gnu 0.48.0", +- "windows_i686_msvc 0.48.0", +- "windows_x86_64_gnu 0.48.0", +- "windows_x86_64_gnullvm 0.48.0", +- "windows_x86_64_msvc 0.48.0", ++ "windows-link 0.2.0", + ] + + [[package]] +@@ -2522,7 +2582,7 @@ dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", +- "windows_i686_gnullvm", ++ "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", +@@ -2530,10 +2590,21 @@ dependencies = [ + ] + + [[package]] +-name = "windows_aarch64_gnullvm" +-version = "0.48.0" ++name = "windows-targets" ++version = "0.53.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" ++checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" ++dependencies = [ ++ "windows-link 0.1.3", ++ "windows_aarch64_gnullvm 0.53.0", ++ "windows_aarch64_msvc 0.53.0", ++ "windows_i686_gnu 0.53.0", ++ "windows_i686_gnullvm 0.53.0", ++ "windows_i686_msvc 0.53.0", ++ "windows_x86_64_gnu 0.53.0", ++ "windows_x86_64_gnullvm 0.53.0", ++ "windows_x86_64_msvc 0.53.0", ++] + + [[package]] + name = "windows_aarch64_gnullvm" +@@ -2542,16 +2613,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + + [[package]] +-name = "windows_aarch64_msvc" +-version = "0.36.1" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +- +-[[package]] +-name = "windows_aarch64_msvc" +-version = "0.48.0" ++name = "windows_aarch64_gnullvm" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" ++checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + + [[package]] + name = "windows_aarch64_msvc" +@@ -2560,22 +2625,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + + [[package]] +-name = "windows_i686_gnu" +-version = "0.36.1" ++name = "windows_aarch64_msvc" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" ++checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + + [[package]] + name = "windows_i686_gnu" +-version = "0.48.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" ++checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + + [[package]] + name = "windows_i686_gnu" +-version = "0.52.6" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" ++checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + + [[package]] + name = "windows_i686_gnullvm" +@@ -2584,166 +2649,197 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + + [[package]] +-name = "windows_i686_msvc" +-version = "0.36.1" ++name = "windows_i686_gnullvm" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" ++checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + + [[package]] + name = "windows_i686_msvc" +-version = "0.48.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" ++checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + + [[package]] + name = "windows_i686_msvc" +-version = "0.52.6" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" ++checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + + [[package]] + name = "windows_x86_64_gnu" +-version = "0.36.1" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" ++checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + + [[package]] + name = "windows_x86_64_gnu" +-version = "0.48.0" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" ++checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + + [[package]] +-name = "windows_x86_64_gnu" ++name = "windows_x86_64_gnullvm" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" ++checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + + [[package]] + name = "windows_x86_64_gnullvm" +-version = "0.48.0" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" ++checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + + [[package]] +-name = "windows_x86_64_gnullvm" ++name = "windows_x86_64_msvc" + version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" ++checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + + [[package]] + name = "windows_x86_64_msvc" +-version = "0.36.1" ++version = "0.53.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" ++checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + + [[package]] +-name = "windows_x86_64_msvc" +-version = "0.48.0" ++name = "wit-bindgen" ++version = "0.46.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" ++checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + + [[package]] +-name = "windows_x86_64_msvc" +-version = "0.52.6" ++name = "writeable" ++version = "0.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" ++checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + + [[package]] +-name = "wiremock" +-version = "0.6.2" ++name = "yoke" ++version = "0.8.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7fff469918e7ca034884c7fd8f93fe27bacb7fcb599fd879df6c7b429a29b646" ++checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" + dependencies = [ +- "assert-json-diff", +- "async-trait", +- "base64 0.22.1", +- "deadpool", +- "futures", +- "http 1.1.0", +- "http-body-util", +- "hyper", +- "hyper-util", +- "log", +- "once_cell", +- "regex", + "serde", +- "serde_json", +- "tokio", +- "url", ++ "stable_deref_trait", ++ "yoke-derive", ++ "zerofrom", ++] ++ ++[[package]] ++name = "yoke-derive" ++version = "0.8.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++ "synstructure", + ] + + [[package]] + name = "zerocopy" +-version = "0.7.32" ++version = "0.8.27" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" ++checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" + dependencies = [ + "zerocopy-derive", + ] + + [[package]] + name = "zerocopy-derive" +-version = "0.7.32" ++version = "0.8.27" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" ++checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.90", ++ "syn", ++] ++ ++[[package]] ++name = "zerofrom" ++version = "0.1.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" ++dependencies = [ ++ "zerofrom-derive", ++] ++ ++[[package]] ++name = "zerofrom-derive" ++version = "0.1.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn", ++ "synstructure", + ] + + [[package]] + name = "zeroize" +-version = "1.5.7" ++version = "1.8.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" ++checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + dependencies = [ + "zeroize_derive", + ] + + [[package]] + name = "zeroize_derive" +-version = "1.3.2" ++version = "1.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" ++checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" + dependencies = [ + "proc-macro2", + "quote", +- "syn 1.0.100", +- "synstructure", ++ "syn", + ] + + [[package]] +-name = "zip" +-version = "0.6.6" ++name = "zerotrie" ++version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" ++checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" + dependencies = [ +- "byteorder", +- "crc32fast", +- "crossbeam-utils", +- "flate2", ++ "displaydoc", ++ "yoke", ++ "zerofrom", + ] + + [[package]] +-name = "zmq" +-version = "0.9.2" ++name = "zerovec" ++version = "0.11.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "aad98a7a617d608cd9e1127147f630d24af07c7cd95ba1533246d96cbdd76c66" ++checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" + dependencies = [ +- "bitflags 1.3.2", +- "libc", +- "log", +- "zmq-sys", ++ "yoke", ++ "zerofrom", ++ "zerovec-derive", + ] + + [[package]] +-name = "zmq-sys" +-version = "0.11.0" ++name = "zerovec-derive" ++version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d33a2c51dde24d5b451a2ed4b488266df221a5eaee2ee519933dc46b9a9b3648" ++checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" + dependencies = [ +- "libc", +- "metadeps", ++ "proc-macro2", ++ "quote", ++ "syn", ++] ++ ++[[package]] ++name = "zip" ++version = "0.6.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" ++dependencies = [ ++ "byteorder", ++ "crc32fast", ++ "crossbeam-utils", ++ "flate2", + ] +diff --git a/Cargo.toml b/Cargo.toml +index 144b0b8..6f9c134 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -41,6 +41,6 @@ static_assertions = "1" + tempfile = "3.4.0" + thiserror = "2.0" + tokio = {version = "1", features = ["rt", "sync", "macros"]} +-tss-esapi = {version = "7.4.0", features = ["generate-bindings"]} ++tss-esapi = {version = "7.6.0", features = ["generate-bindings"]} + uuid = {version = "1.3", features = ["v4"]} + zip = {version = "0.6", default-features = false, features= ["deflate"]} +diff --git a/keylime-agent/src/agent_handler.rs b/keylime-agent/src/agent_handler.rs +index 44228c1..13bcc37 100644 +--- a/keylime-agent/src/agent_handler.rs ++++ b/keylime-agent/src/agent_handler.rs +@@ -88,7 +88,7 @@ mod tests { + async fn test_agent_info() { + let (mut quotedata, mutex) = QuoteData::fixture().await.unwrap(); //#[allow_ci] + quotedata.hash_alg = keylime::algorithms::HashAlgorithm::Sha256; +- quotedata.enc_alg = keylime::algorithms::EncryptionAlgorithm::Rsa; ++ quotedata.enc_alg = keylime::algorithms::EncryptionAlgorithm::Rsa2048; + quotedata.sign_alg = keylime::algorithms::SignAlgorithm::RsaSsa; + quotedata.agent_uuid = "DEADBEEF".to_string(); + let data = web::Data::new(quotedata); +diff --git a/keylime-agent/src/common.rs b/keylime-agent/src/common.rs +index 0f83022..af57734 100644 +--- a/keylime-agent/src/common.rs ++++ b/keylime-agent/src/common.rs +@@ -303,6 +303,7 @@ mod tests { + let ak = ctx.create_ak( + ek_result.key_handle, + tpm_hash_alg, ++ tpm_encryption_alg, + tpm_signing_alg, + )?; + +diff --git a/keylime-agent/src/main.rs b/keylime-agent/src/main.rs +index 179b01b..9e3d727 100644 +--- a/keylime-agent/src/main.rs ++++ b/keylime-agent/src/main.rs +@@ -421,6 +421,7 @@ async fn main() -> Result<()> { + let new_ak = ctx.create_ak( + ek_result.key_handle, + tpm_hash_alg, ++ tpm_encryption_alg, + tpm_signing_alg, + )?; + let ak_handle = ctx.load_ak(ek_result.key_handle, &new_ak)?; +@@ -1044,6 +1045,7 @@ mod testing { + .create_ak( + ek_result.key_handle, + tpm_hash_alg, ++ tpm_encryption_alg, + tpm_signing_alg, + ) + .unwrap(); //#[allow_ci] +@@ -1121,7 +1123,8 @@ mod testing { + payload_tx, + revocation_tx, + hash_alg: keylime::algorithms::HashAlgorithm::Sha256, +- enc_alg: keylime::algorithms::EncryptionAlgorithm::Rsa, ++ enc_alg: ++ keylime::algorithms::EncryptionAlgorithm::Rsa2048, + sign_alg: keylime::algorithms::SignAlgorithm::RsaSsa, + agent_uuid: test_config.agent.uuid, + allow_payload_revocation_actions: test_config +diff --git a/keylime/src/algorithms.rs b/keylime/src/algorithms.rs +index 9c46195..cda8966 100644 +--- a/keylime/src/algorithms.rs ++++ b/keylime/src/algorithms.rs +@@ -6,8 +6,13 @@ use std::convert::TryFrom; + use std::fmt; + use thiserror::Error; + use tss_esapi::{ +- interface_types::algorithm::{ +- AsymmetricAlgorithm, HashingAlgorithm, SignatureSchemeAlgorithm, ++ abstraction::AsymmetricAlgorithmSelection, ++ interface_types::{ ++ algorithm::{ ++ AsymmetricAlgorithm, HashingAlgorithm, SignatureSchemeAlgorithm, ++ }, ++ ecc::EccCurve, ++ key_bits::RsaKeyBits, + }, + structures::{HashScheme, SignatureScheme}, + }; +@@ -89,15 +94,68 @@ impl From for MessageDigest { + + #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] + pub enum EncryptionAlgorithm { +- Rsa, +- Ecc, ++ Rsa1024, ++ Rsa2048, ++ Rsa3072, ++ Rsa4096, ++ Ecc192, ++ Ecc224, ++ Ecc256, ++ Ecc384, ++ Ecc521, ++ EccSm2, + } + + impl From for AsymmetricAlgorithm { + fn from(enc_alg: EncryptionAlgorithm) -> Self { + match enc_alg { +- EncryptionAlgorithm::Rsa => AsymmetricAlgorithm::Rsa, +- EncryptionAlgorithm::Ecc => AsymmetricAlgorithm::Ecc, ++ EncryptionAlgorithm::Rsa1024 => AsymmetricAlgorithm::Rsa, ++ EncryptionAlgorithm::Rsa2048 => AsymmetricAlgorithm::Rsa, ++ EncryptionAlgorithm::Rsa3072 => AsymmetricAlgorithm::Rsa, ++ EncryptionAlgorithm::Rsa4096 => AsymmetricAlgorithm::Rsa, ++ EncryptionAlgorithm::Ecc192 => AsymmetricAlgorithm::Ecc, ++ EncryptionAlgorithm::Ecc224 => AsymmetricAlgorithm::Ecc, ++ EncryptionAlgorithm::Ecc256 => AsymmetricAlgorithm::Ecc, ++ EncryptionAlgorithm::Ecc384 => AsymmetricAlgorithm::Ecc, ++ EncryptionAlgorithm::Ecc521 => AsymmetricAlgorithm::Ecc, ++ EncryptionAlgorithm::EccSm2 => AsymmetricAlgorithm::Ecc, ++ } ++ } ++} ++ ++impl From for AsymmetricAlgorithmSelection { ++ fn from(enc_alg: EncryptionAlgorithm) -> Self { ++ match enc_alg { ++ EncryptionAlgorithm::Rsa1024 => { ++ AsymmetricAlgorithmSelection::Rsa(RsaKeyBits::Rsa1024) ++ } ++ EncryptionAlgorithm::Rsa2048 => { ++ AsymmetricAlgorithmSelection::Rsa(RsaKeyBits::Rsa2048) ++ } ++ EncryptionAlgorithm::Rsa3072 => { ++ AsymmetricAlgorithmSelection::Rsa(RsaKeyBits::Rsa3072) ++ } ++ EncryptionAlgorithm::Rsa4096 => { ++ AsymmetricAlgorithmSelection::Rsa(RsaKeyBits::Rsa4096) ++ } ++ EncryptionAlgorithm::Ecc192 => { ++ AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP192) ++ } ++ EncryptionAlgorithm::Ecc224 => { ++ AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP224) ++ } ++ EncryptionAlgorithm::Ecc256 => { ++ AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP256) ++ } ++ EncryptionAlgorithm::Ecc384 => { ++ AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP384) ++ } ++ EncryptionAlgorithm::Ecc521 => { ++ AsymmetricAlgorithmSelection::Ecc(EccCurve::NistP521) ++ } ++ EncryptionAlgorithm::EccSm2 => { ++ AsymmetricAlgorithmSelection::Ecc(EccCurve::Sm2P256) ++ } + } + } + } +@@ -107,8 +165,25 @@ impl TryFrom<&str> for EncryptionAlgorithm { + + fn try_from(value: &str) -> Result { + match value { +- "rsa" => Ok(EncryptionAlgorithm::Rsa), +- "ecc" => Ok(EncryptionAlgorithm::Ecc), ++ /* Use default key size and curve if not explicitly specified */ ++ "rsa" => Ok(EncryptionAlgorithm::Rsa2048), ++ "ecc" => Ok(EncryptionAlgorithm::Ecc256), ++ "rsa1024" => Ok(EncryptionAlgorithm::Rsa1024), ++ "rsa2048" => Ok(EncryptionAlgorithm::Rsa2048), ++ "rsa3072" => Ok(EncryptionAlgorithm::Rsa3072), ++ "rsa4096" => Ok(EncryptionAlgorithm::Rsa4096), ++ "ecc192" => Ok(EncryptionAlgorithm::Ecc192), ++ "ecc_nist_p192" => Ok(EncryptionAlgorithm::Ecc192), ++ "ecc224" => Ok(EncryptionAlgorithm::Ecc224), ++ "ecc_nist_p224" => Ok(EncryptionAlgorithm::Ecc224), ++ "ecc256" => Ok(EncryptionAlgorithm::Ecc256), ++ "ecc_nist_p256" => Ok(EncryptionAlgorithm::Ecc256), ++ "ecc384" => Ok(EncryptionAlgorithm::Ecc384), ++ "ecc_nist_p384" => Ok(EncryptionAlgorithm::Ecc384), ++ "ecc521" => Ok(EncryptionAlgorithm::Ecc521), ++ "ecc_nist_p521" => Ok(EncryptionAlgorithm::Ecc521), ++ "ecc_sm2" => Ok(EncryptionAlgorithm::EccSm2), ++ "ecc_sm2_p256" => Ok(EncryptionAlgorithm::EccSm2), + _ => Err(AlgorithmError::UnsupportedEncryptionAlgorithm( + value.into(), + )), +@@ -119,8 +194,16 @@ impl TryFrom<&str> for EncryptionAlgorithm { + impl fmt::Display for EncryptionAlgorithm { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let value = match self { +- EncryptionAlgorithm::Rsa => "rsa", +- EncryptionAlgorithm::Ecc => "ecc", ++ EncryptionAlgorithm::Rsa1024 => "rsa1024", ++ EncryptionAlgorithm::Rsa2048 => "rsa", /* for backwards compatibility */ ++ EncryptionAlgorithm::Rsa3072 => "rsa3072", ++ EncryptionAlgorithm::Rsa4096 => "rsa4096", ++ EncryptionAlgorithm::Ecc192 => "ecc192", ++ EncryptionAlgorithm::Ecc224 => "ecc224", ++ EncryptionAlgorithm::Ecc256 => "ecc", /* for backwards compatibility */ ++ EncryptionAlgorithm::Ecc384 => "ecc384", ++ EncryptionAlgorithm::Ecc521 => "ecc521", ++ EncryptionAlgorithm::EccSm2 => "ecc_sm2", + }; + write!(f, "{value}") + } +@@ -219,9 +302,13 @@ mod tests { + #[test] + fn test_encrypt_try_from() { + let result = EncryptionAlgorithm::try_from("rsa"); +- assert!(result.is_ok()); ++ assert!(result.is_ok_and(|r| r == EncryptionAlgorithm::Rsa2048)); + let result = EncryptionAlgorithm::try_from("ecc"); +- assert!(result.is_ok()); ++ assert!(result.is_ok_and(|r| r == EncryptionAlgorithm::Ecc256)); ++ let result = EncryptionAlgorithm::try_from("rsa4096"); ++ assert!(result.is_ok_and(|r| r == EncryptionAlgorithm::Rsa4096)); ++ let result = EncryptionAlgorithm::try_from("ecc256"); ++ assert!(result.is_ok_and(|r| r == EncryptionAlgorithm::Ecc256)); + } + #[test] + fn test_unsupported_encrypt_try_from() { +diff --git a/keylime/src/tpm.rs b/keylime/src/tpm.rs +index 997334d..8a8c85a 100644 +--- a/keylime/src/tpm.rs ++++ b/keylime/src/tpm.rs +@@ -562,7 +562,7 @@ impl Context<'_> { + let key_handle: KeyHandle = match handle { + Some(v) => { + if v.is_empty() { +- ek::create_ek_object(&mut ctx, alg.into(), DefaultKey) ++ ek::create_ek_object_2(&mut ctx, alg.into(), DefaultKey) + .map_err(|source| TpmError::TSSCreateEKError { + source, + })? +@@ -591,7 +591,7 @@ impl Context<'_> { + .into() + } + } +- None => ek::create_ek_object(&mut ctx, alg.into(), DefaultKey) ++ None => ek::create_ek_object_2(&mut ctx, alg.into(), DefaultKey) + .map_err(|source| TpmError::TSSCreateEKError { source })?, + }; + +@@ -625,6 +625,7 @@ impl Context<'_> { + /// + /// * `handle`: The associated EK handle + /// * `hash_alg`: The digest algorithm used for signing with the created AK ++ /// * `key_alg`: The key type used for signing with the created AK + /// * `sign_alg`: The created AK signing algorithm + /// + /// Returns an `AKResult` structure if successful and a `TPMError` otherwise +@@ -632,12 +633,14 @@ impl Context<'_> { + &mut self, + handle: KeyHandle, + hash_alg: HashAlgorithm, ++ key_alg: EncryptionAlgorithm, + sign_alg: SignAlgorithm, + ) -> Result { +- let ak = ak::create_ak( ++ let ak = ak::create_ak_2( + &mut self.inner.lock().unwrap(), //#[allow_ci] + handle, + hash_alg.into(), ++ key_alg.into(), + sign_alg.into(), + None, + DefaultKey, +@@ -1921,9 +1924,7 @@ pub fn get_idevid_template( + "H-4" => (AsymmetricAlgorithm::Ecc, HashingAlgorithm::Sha512), + "H-5" => (AsymmetricAlgorithm::Ecc, HashingAlgorithm::Sm3_256), + _ => ( +- AsymmetricAlgorithm::from(EncryptionAlgorithm::try_from( +- asym_alg_str, +- )?), ++ EncryptionAlgorithm::try_from(asym_alg_str)?.into(), + HashingAlgorithm::from(HashAlgorithm::try_from(name_alg_str)?), + ), + }; +@@ -2421,7 +2422,8 @@ pub mod tests { + async fn test_create_ek() { + let _mutex = testing::lock_tests().await; + let mut ctx = Context::new().unwrap(); //#[allow_ci] +- let algs = [EncryptionAlgorithm::Rsa, EncryptionAlgorithm::Ecc]; ++ let algs = ++ [EncryptionAlgorithm::Rsa2048, EncryptionAlgorithm::Ecc256]; + // TODO: create persistent handle and add to be tested: Some("0x81000000"), + let handles = [Some(""), None]; + +@@ -2444,12 +2446,15 @@ pub mod tests { + let _mutex = testing::lock_tests().await; + let mut ctx = Context::new().unwrap(); //#[allow_ci] + +- let r = ctx.create_ek(EncryptionAlgorithm::Rsa, None); ++ let r = ctx.create_ek(EncryptionAlgorithm::Rsa2048, None); + assert!(r.is_ok(), "Result: {r:?}"); + + let ek_result = r.unwrap(); //#[allow_ci] + let ek_handle = ek_result.key_handle; + ++ let eng_algs = ++ [EncryptionAlgorithm::Rsa1024, EncryptionAlgorithm::Rsa2048]; ++ + let hash_algs = [ + HashAlgorithm::Sha256, + HashAlgorithm::Sha384, +@@ -2470,18 +2475,20 @@ pub mod tests { + ]; + + for sign in sign_algs { +- for hash in hash_algs { +- let r = ctx.create_ak(ek_handle, hash, sign); +- assert!(r.is_ok(), "Result: {r:?}"); +- let ak = r.unwrap(); //#[allow_ci] +- +- let r = ctx.load_ak(ek_handle, &ak); +- assert!(r.is_ok(), "Result: {r:?}"); +- let handle = r.unwrap(); //#[allow_ci] +- +- // Flush context to free TPM memory +- let r = ctx.flush_context(handle.into()); +- assert!(r.is_ok(), "Result: {r:?}"); ++ for enc in eng_algs { ++ for hash in hash_algs { ++ let r = ctx.create_ak(ek_handle, hash, enc, sign); ++ assert!(r.is_ok(), "Result: {r:?}"); ++ let ak = r.unwrap(); //#[allow_ci] ++ ++ let r = ctx.load_ak(ek_handle, &ak); ++ assert!(r.is_ok(), "Result: {r:?}"); ++ let handle = r.unwrap(); //#[allow_ci] ++ ++ // Flush context to free TPM memory ++ let r = ctx.flush_context(handle.into()); ++ assert!(r.is_ok(), "Result: {r:?}"); ++ } + } + } + +@@ -2562,7 +2569,7 @@ pub mod tests { + + // Create EK + let ek_result = ctx +- .create_ek(EncryptionAlgorithm::Rsa, None) ++ .create_ek(EncryptionAlgorithm::Rsa2048, None) + .expect("failed to create EK"); + let ek_handle = ek_result.key_handle; + +@@ -2571,6 +2578,7 @@ pub mod tests { + .create_ak( + ek_handle, + HashAlgorithm::Sha256, ++ EncryptionAlgorithm::Rsa2048, + SignAlgorithm::RsaSsa, + ) + .expect("failed to create AK"); +@@ -2618,7 +2626,7 @@ pub mod tests { + + // Create EK + let ek_result = ctx +- .create_ek(EncryptionAlgorithm::Rsa, None) ++ .create_ek(EncryptionAlgorithm::Rsa2048, None) + .expect("failed to create EK"); + let ek_handle = ek_result.key_handle; + +@@ -2627,6 +2635,7 @@ pub mod tests { + .create_ak( + ek_handle, + HashAlgorithm::Sha256, ++ EncryptionAlgorithm::Rsa2048, + SignAlgorithm::RsaSsa, + ) + .expect("failed to create ak"); +-- +2.47.3 + diff --git a/0004-Clippy-fixes.patch b/0004-Clippy-fixes.patch new file mode 100644 index 0000000..b7eb9af --- /dev/null +++ b/0004-Clippy-fixes.patch @@ -0,0 +1,557 @@ +From dc36c72e75c9b3ab36693b59252e3246ef53d5fb Mon Sep 17 00:00:00 2001 +From: Sergio Correia +Date: Mon, 29 Sep 2025 22:45:55 +0000 +Subject: [PATCH 4/6] Clippy fixes + +Signed-off-by: Sergio Correia +--- + keylime-agent/src/config.rs | 13 ++++++------- + keylime-agent/src/keys_handler.rs | 4 ++-- + keylime-agent/src/main.rs | 10 +++++----- + keylime-agent/src/payloads.rs | 12 ++++++------ + keylime-agent/src/permissions.rs | 14 +++++++------- + keylime-agent/src/quotes_handler.rs | 16 ++++++++-------- + keylime-agent/src/revocation.rs | 15 +++++++-------- + keylime-agent/src/secure_mount.rs | 6 +++--- + keylime/src/crypto.rs | 12 ++++++------ + keylime/src/ima/entry.rs | 7 +++---- + keylime/src/registrar_client.rs | 2 +- + keylime/src/tpm.rs | 14 +++++--------- + 12 files changed, 59 insertions(+), 66 deletions(-) + +diff --git a/keylime-agent/src/config.rs b/keylime-agent/src/config.rs +index 21c0516..f1fe7d1 100644 +--- a/keylime-agent/src/config.rs ++++ b/keylime-agent/src/config.rs +@@ -614,8 +614,10 @@ fn config_translate_keywords( + .collect::>() + .join(", "), + "latest" => { +- if let Some(version) = +- SUPPORTED_API_VERSIONS.iter().map(|&s| s.to_string()).last() ++ if let Some(version) = SUPPORTED_API_VERSIONS ++ .iter() ++ .map(|&s| s.to_string()) ++ .next_back() + { + version + } else { +@@ -980,7 +982,7 @@ mod tests { + let expected = SUPPORTED_API_VERSIONS + .iter() + .map(|e| e.to_string()) +- .last() ++ .next_back() + .unwrap(); //#[allow_ci] + assert_eq!(version, expected); + } +@@ -1273,10 +1275,7 @@ mod tests { + let j = obtained.get(i).unwrap(); //#[allow_ci] + assert!( + e.to_string() == j.to_string(), +- "Option {} mismatch: expected == '{}', obtained == '{}'", +- i, +- e, +- j ++ "Option {i} mismatch: expected == '{e}', obtained == '{j}'" + ); + } + } +diff --git a/keylime-agent/src/keys_handler.rs b/keylime-agent/src/keys_handler.rs +index 447f0d1..a4c9f21 100644 +--- a/keylime-agent/src/keys_handler.rs ++++ b/keylime-agent/src/keys_handler.rs +@@ -327,7 +327,7 @@ async fn pubkey( + HttpResponse::Ok().json(response) + } + Err(e) => { +- debug!("Unable to retrieve public key: {:?}", e); ++ debug!("Unable to retrieve public key: {e:?}"); + HttpResponse::InternalServerError().json(JsonWrapper::error( + 500, + "Unable to retrieve public key".to_string(), +@@ -411,7 +411,7 @@ async fn verify( + HttpResponse::Ok().json(response) + } + Err(e) => { +- warn!("GET key challenge failed: {:?}", e); ++ warn!("GET key challenge failed: {e:?}"); + HttpResponse::InternalServerError().json(JsonWrapper::error( + 500, + "GET key challenge failed".to_string(), +diff --git a/keylime-agent/src/main.rs b/keylime-agent/src/main.rs +index 9e3d727..be51a21 100644 +--- a/keylime-agent/src/main.rs ++++ b/keylime-agent/src/main.rs +@@ -269,7 +269,7 @@ async fn main() -> Result<()> { + config::KeylimeConfigError::Generic(message), + )); + } +- info!("Running the service as {}...", user_group); ++ info!("Running the service as {user_group}..."); + } + + // Parse the configured API versions +@@ -403,7 +403,7 @@ async fn main() -> Result<()> { + } + } + Err(e) => { +- warn!("Could not load agent data: {}", e); ++ warn!("Could not load agent data: {e}"); + None + } + } +@@ -442,7 +442,7 @@ async fn main() -> Result<()> { + path => agent_data_new.store(Path::new(&path))?, + } + +- info!("Agent UUID: {}", agent_uuid); ++ info!("Agent UUID: {agent_uuid}"); + + // If using IAK/IDevID is enabled, obtain IAK/IDevID and respective certificates + let mut device_id = if config.agent.enable_iak_idevid { +@@ -595,7 +595,7 @@ async fn main() -> Result<()> { + ) { + Ok(t) => Ok(t), + Err(e) => { +- error!("Failed to load trusted CA certificates: {}", e); ++ error!("Failed to load trusted CA certificates: {e}"); + Err(e) + } + }?; +@@ -833,7 +833,7 @@ async fn main() -> Result<()> { + Ok(ip_addr) => { + // Add bracket if IPv6, otherwise use as it is + if ip_addr.is_ipv6() { +- format!("[{}]", ip_addr) ++ format!("[{ip_addr}]") + } else { + ip_addr.to_string() + } +diff --git a/keylime-agent/src/payloads.rs b/keylime-agent/src/payloads.rs +index 3b8873d..8996a5e 100644 +--- a/keylime-agent/src/payloads.rs ++++ b/keylime-agent/src/payloads.rs +@@ -109,14 +109,14 @@ fn write_out_key_and_payload( + if bytes != key.as_ref().len() { + return Err(Error::Other(format!("Error writing symm key to {:?}: key len is {}, but {bytes} bytes were written", key_path, key.as_ref().len()))); + } +- info!("Wrote payload decryption key to {:?}", key_path); ++ info!("Wrote payload decryption key to {key_path:?}"); + + let mut dec_payload_file = fs::File::create(dec_payload_path)?; + let bytes = dec_payload_file.write(dec_payload)?; + if bytes != dec_payload.len() { + return Err(Error::Other(format!("Error writing decrypted payload to {:?}: payload len is {}, but {bytes} bytes were written", dec_payload_path, dec_payload.len()))); + } +- info!("Wrote decrypted payload to {:?}", dec_payload_path); ++ info!("Wrote decrypted payload to {dec_payload_path:?}"); + + Ok(()) + } +@@ -124,7 +124,7 @@ fn write_out_key_and_payload( + // run a script (such as the init script, if any) and check the status + fn run(dir: &Path, script: &str) -> Result<()> { + let script_path = dir.join(script); +- info!("Running script: {:?}", script_path); ++ info!("Running script: {script_path:?}"); + + if !script_path.exists() { + info!("No payload script {script} found in {}", dir.display()); +@@ -176,7 +176,7 @@ fn optional_unzip_payload( + dec_file => { + let zipped_payload_path = unzipped.join(dec_file); + +- info!("Unzipping payload {} to {:?}", dec_file, unzipped); ++ info!("Unzipping payload {dec_file} to {unzipped:?}"); + + let mut source = fs::File::open(zipped_payload_path)?; + let mut zip = ZipArchive::new(source)?; +@@ -215,7 +215,7 @@ async fn run_encrypted_payload( + info!("No payload script specified, skipping"); + } + script => { +- info!("Payload init script indicated: {}", script); ++ info!("Payload init script indicated: {script}"); + run(&unzipped, script)?; + } + } +@@ -304,7 +304,7 @@ pub(crate) async fn worker( + info!("Successfully executed encrypted payload"); + } + Err(e) => { +- warn!("Failed to run encrypted payload: {}", e); ++ warn!("Failed to run encrypted payload: {e}"); + } + } + } +diff --git a/keylime-agent/src/permissions.rs b/keylime-agent/src/permissions.rs +index aa240d9..4b8ac9a 100644 +--- a/keylime-agent/src/permissions.rs ++++ b/keylime-agent/src/permissions.rs +@@ -38,7 +38,7 @@ impl TryFrom<&str> for UserIds { + + if parts.len() != 2 { + let e = format!("Invalid parameter format: {value} cannot be parsed as 'user:group'"); +- error!("{}", e); ++ error!("{e}"); + return Err(Error::Conversion(e)); + } + +@@ -50,7 +50,7 @@ impl TryFrom<&str> for UserIds { + let p = unsafe { libc::getgrnam(g_cstr.as_ptr()) }; + if p.is_null() { + let e = io::Error::last_os_error(); +- error!("Could not get group {}: {}", group, e); ++ error!("Could not get group {group}: {e}"); + return Err(Error::Conversion(e.to_string())); + } + unsafe { (*p) } +@@ -65,7 +65,7 @@ impl TryFrom<&str> for UserIds { + let p = unsafe { libc::getpwnam(u_cstr.as_ptr()) }; + if p.is_null() { + let e = io::Error::last_os_error(); +- error!("Could not get user {}: {}", user, e); ++ error!("Could not get user {user}: {e}"); + return Err(Error::Conversion(e.to_string())); + } + unsafe { (*p) } +@@ -91,7 +91,7 @@ pub(crate) fn run_as(user_group: &str) -> Result<()> { + // Set gid + if unsafe { libc::setgid(ids.group.gr_gid) } != 0 { + let e = io::Error::last_os_error(); +- error!("Could not set group id: {}", e); ++ error!("Could not set group id: {e}"); + return Err(Error::Permission); + } + +@@ -127,18 +127,18 @@ pub(crate) fn run_as(user_group: &str) -> Result<()> { + if unsafe { libc::setgroups(ngroups as usize, sup_groups.as_ptr()) } != 0 + { + let e = io::Error::last_os_error(); +- error!("Could not set supplementary groups: {}", e); ++ error!("Could not set supplementary groups: {e}"); + return Err(Error::Permission); + } + + // Set uid + if unsafe { libc::setuid(ids.passwd.pw_uid) } != 0 { + let e = io::Error::last_os_error(); +- error!("Could not set user id: {}", e); ++ error!("Could not set user id: {e}"); + return Err(Error::Permission); + } + +- info!("Dropped privileges to run as {}", user_group); ++ info!("Dropped privileges to run as {user_group}"); + + Ok(()) + } +diff --git a/keylime-agent/src/quotes_handler.rs b/keylime-agent/src/quotes_handler.rs +index a49dcc4..d61adf2 100644 +--- a/keylime-agent/src/quotes_handler.rs ++++ b/keylime-agent/src/quotes_handler.rs +@@ -95,7 +95,7 @@ async fn identity( + ) { + Ok(quote) => quote, + Err(e) => { +- debug!("Unable to retrieve quote: {:?}", e); ++ debug!("Unable to retrieve quote: {e:?}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +@@ -116,7 +116,7 @@ async fn identity( + match crypto::pkey_pub_to_pem(&data.pub_key) { + Ok(pubkey) => quote.pubkey = Some(pubkey), + Err(e) => { +- debug!("Unable to retrieve public key for quote: {:?}", e); ++ debug!("Unable to retrieve public key for quote: {e:?}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +@@ -193,7 +193,7 @@ async fn integrity( + let pubkey = match crypto::pkey_pub_to_pem(&data.pub_key) { + Ok(pubkey) => pubkey, + Err(e) => { +- debug!("Unable to retrieve public key: {:?}", e); ++ debug!("Unable to retrieve public key: {e:?}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +@@ -242,7 +242,7 @@ async fn integrity( + ) { + Ok(tpm_quote) => tpm_quote, + Err(e) => { +- debug!("Unable to retrieve quote: {:?}", e); ++ debug!("Unable to retrieve quote: {e:?}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +@@ -268,7 +268,7 @@ async fn integrity( + let mut ml = Vec::::new(); + let mut f = measuredboot_ml_file.lock().unwrap(); //#[allow_ci] + if let Err(e) = f.rewind() { +- debug!("Failed to rewind measured boot file: {}", e); ++ debug!("Failed to rewind measured boot file: {e}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +@@ -279,14 +279,14 @@ async fn integrity( + mb_measurement_list = match f.read_to_end(&mut ml) { + Ok(_) => Some(general_purpose::STANDARD.encode(ml)), + Err(e) => { +- warn!("Could not read TPM2 event log: {}", e); ++ warn!("Could not read TPM2 event log: {e}"); + None + } + }; + } + } + Err(e) => { +- debug!("Unable to check PCR mask: {:?}", e); ++ debug!("Unable to check PCR mask: {e:?}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +@@ -309,7 +309,7 @@ async fn integrity( + (Some(result.0), Some(result.1), Some(result.2)) + } + Err(e) => { +- debug!("Unable to read measurement list: {:?}", e); ++ debug!("Unable to read measurement list: {e:?}"); + return HttpResponse::InternalServerError().json( + JsonWrapper::error( + 500, +diff --git a/keylime-agent/src/revocation.rs b/keylime-agent/src/revocation.rs +index fae5a9c..738c12a 100644 +--- a/keylime-agent/src/revocation.rs ++++ b/keylime-agent/src/revocation.rs +@@ -124,7 +124,7 @@ pub(crate) fn run_action( + allow_payload_actions, + )?; + +- info!("Executing revocation action {}", action); ++ info!("Executing revocation action {action}"); + + // Write JSON argument to a temporary file + let raw_json = serde_json::value::to_raw_value(&json)?; +@@ -171,7 +171,7 @@ pub(crate) fn run_action( + return Err(output.try_into()?); + } + +- info!("INFO: revocation action {} successful", action); ++ info!("INFO: revocation action {action} successful"); + + Ok(output) + } +@@ -233,7 +233,7 @@ fn run_revocation_actions( + let msg = format!( + "error executing revocation script {action}: {e:?}" + ); +- error!("{}", msg); ++ error!("{msg}"); + return Err(Error::Script( + action.to_string(), + e.exe_code()?, +@@ -273,8 +273,7 @@ fn process_revocation( + let msg_payload: Value = serde_json::from_str(msg)?; + + debug!( +- "Revocation signature validated for revocation: {}", +- msg_payload ++ "Revocation signature validated for revocation: {msg_payload}" + ); + + let outputs = run_revocation_actions( +@@ -289,11 +288,11 @@ fn process_revocation( + for output in outputs { + if !output.stdout.is_empty() { + let out = String::from_utf8(output.stdout)?; +- info!("Action stdout: {}", out); ++ info!("Action stdout: {out}"); + } + if !output.stderr.is_empty() { + let out = String::from_utf8(output.stderr)?; +- warn!("Action stderr: {}", out); ++ warn!("Action stderr: {out}"); + } + } + Ok(()) +@@ -476,7 +475,7 @@ pub(crate) async fn worker( + info!("Revocation processed successfully"); + } + Err(e) => { +- error!("Failed to process revocation: {}", e); ++ error!("Failed to process revocation: {e}"); + } + } + } +diff --git a/keylime-agent/src/secure_mount.rs b/keylime-agent/src/secure_mount.rs +index 573d0c9..435fdfc 100644 +--- a/keylime-agent/src/secure_mount.rs ++++ b/keylime-agent/src/secure_mount.rs +@@ -47,7 +47,7 @@ fn check_mount(secure_dir: &Path) -> Result { + return Ok(true); + } else { + let message = format!("Secure storage location {} already mounted on wrong file system type: {}. Unmount to continue.", secure_dir.display(), fs_type); +- error!("Secure mount error: {}", message); ++ error!("Secure mount error: {message}"); + return Err(Error::SecureMount(message)); + } + } else { +@@ -65,7 +65,7 @@ fn check_mount(secure_dir: &Path) -> Result { + let message = + "Mount information parsing error: not enough elements" + .to_string(); +- error!("Secure mount error: {}", message); ++ error!("Secure mount error: {message}"); + return Err(Error::SecureMount(message)); + } + } +@@ -96,7 +96,7 @@ pub(crate) fn mount(work_dir: &Path, secure_size: &str) -> Result { + )) + })?; + +- info!("Directory {:?} created.", secure_dir_path); ++ info!("Directory {secure_dir_path:?} created."); + let metadata = fs::metadata(&secure_dir_path).map_err(|e| { + Error::SecureMount(format!( + "unable to get metadata for secure dir path: {e:?}" +diff --git a/keylime/src/crypto.rs b/keylime/src/crypto.rs +index 5c951b1..19e651f 100644 +--- a/keylime/src/crypto.rs ++++ b/keylime/src/crypto.rs +@@ -399,14 +399,14 @@ pub fn check_x509_key( + .map_err(CryptoError::RSAGetPublicKeyError)? + .n() + .to_vec(); +- let mut cert_n_str = format!("{:?}", cert_n); ++ let mut cert_n_str = format!("{cert_n:?}"); + _ = cert_n_str.pop(); + _ = cert_n_str.remove(0); + let key = SubjectPublicKeyInfo::try_from(tpm_key.clone()) + .map_err(CryptoError::SubjectPublicKeyInfoFromRSAError)?; + let key_der = picky_asn1_der::to_vec(&key) + .map_err(CryptoError::SubjectPublicKeyInfoToDERError)?; +- let key_der_str = format!("{:?}", key_der); ++ let key_der_str = format!("{key_der:?}"); + + Ok(key_der_str.contains(&cert_n_str)) + } +@@ -418,14 +418,14 @@ pub fn check_x509_key( + .map_err(CryptoError::RSAGetPublicKeyError)? + .n() + .to_vec(); +- let mut cert_n_str = format!("{:?}", cert_n); ++ let mut cert_n_str = format!("{cert_n:?}"); + _ = cert_n_str.pop(); + _ = cert_n_str.remove(0); + let key = SubjectPublicKeyInfo::try_from(tpm_key.clone()) + .map_err(CryptoError::SubjectPublicKeyInfoFromRSAError)?; + let key_der = picky_asn1_der::to_vec(&key) + .map_err(CryptoError::SubjectPublicKeyInfoToDERError)?; +- let key_der_str = format!("{:?}", key_der); ++ let key_der_str = format!("{key_der:?}"); + + Ok(key_der_str.contains(&cert_n_str)) + } +@@ -437,14 +437,14 @@ pub fn check_x509_key( + .map_err(CryptoError::PublicKeyGetECCError)? + .public_key_to_der() + .map_err(CryptoError::PublicKeyToDERError)?; +- let mut cert_n_str = format!("{:?}", cert_n); ++ let mut cert_n_str = format!("{cert_n:?}"); + _ = cert_n_str.pop(); + _ = cert_n_str.remove(0); + let key = SubjectPublicKeyInfo::try_from(tpm_key.clone()) + .map_err(CryptoError::SubjectPublicKeyInfoFromECCError)?; + let key_der = picky_asn1_der::to_vec(&key) + .map_err(CryptoError::SubjectPublicKeyInfoToDERError)?; +- let key_der_str = format!("{:?}", key_der); ++ let key_der_str = format!("{key_der:?}"); + + Ok(key_der_str.contains(&cert_n_str)) + } +diff --git a/keylime/src/ima/entry.rs b/keylime/src/ima/entry.rs +index 1168b3c..982afa7 100644 +--- a/keylime/src/ima/entry.rs ++++ b/keylime/src/ima/entry.rs +@@ -431,10 +431,9 @@ impl TryFrom<&str> for Entry { + template_hash, + event_data: Box::new(ImaBuf::try_from(event)?), + }), +- template => Err(Error::new( +- ErrorKind::Other, +- format!("unrecognized template \"{template}\"",), +- )), ++ template => Err(Error::other(format!( ++ "unrecognized template \"{template}\"", ++ ))), + } + } + } +diff --git a/keylime/src/registrar_client.rs b/keylime/src/registrar_client.rs +index dcfcd22..e036845 100644 +--- a/keylime/src/registrar_client.rs ++++ b/keylime/src/registrar_client.rs +@@ -320,7 +320,7 @@ impl<'a> RegistrarClientBuilder<'a> { + // Try to reach the registrar + let addr = format!("http://{registrar_ip}:{registrar_port}/version"); + +- info!("Requesting registrar API version to {}", addr); ++ info!("Requesting registrar API version to {addr}"); + + let resp = reqwest::Client::new() + .get(&addr) +diff --git a/keylime/src/tpm.rs b/keylime/src/tpm.rs +index 8a8c85a..ac23720 100644 +--- a/keylime/src/tpm.rs ++++ b/keylime/src/tpm.rs +@@ -1344,7 +1344,7 @@ impl Context<'_> { + let mut pcrs = read_mask(mask)?; + + // add pcr16 if it isn't in the vec already +- if !pcrs.iter().any(|&pcr| pcr == PcrSlot::Slot16) { ++ if !pcrs.contains(&PcrSlot::Slot16) { + let mut slot16 = vec![PcrSlot::Slot16]; + pcrs.append(&mut slot16); + } +@@ -1838,9 +1838,7 @@ fn check_if_pcr_data_and_attestation_match( + .map_err(|source| TpmError::OpenSSLHasherFinish { source })?; + + log::trace!( +- "Attested to PCR digest: {:?}, read PCR digest: {:?}", +- attested_pcr, +- pcr_digest, ++ "Attested to PCR digest: {attested_pcr:?}, read PCR digest: {pcr_digest:?}", + ); + + Ok(memcmp::eq(attested_pcr, &pcr_digest)) +@@ -1884,12 +1882,11 @@ fn perform_quote_and_pcr_read( + } + + log::info!( +- "PCR data and attestation data mismatched on attempt {}", +- attempt ++ "PCR data and attestation data mismatched on attempt {attempt}" + ); + } + +- log::error!("PCR data and attestation data mismatched on all {} attempts, giving up", NUM_ATTESTATION_ATTEMPTS); ++ log::error!("PCR data and attestation data mismatched on all {NUM_ATTESTATION_ATTEMPTS} attempts, giving up"); + Err(TpmError::TooManyAttestationMismatches { + attempts: NUM_ATTESTATION_ATTEMPTS, + }) +@@ -2128,8 +2125,7 @@ pub mod testing { + // Always 1 PCR digest should follow + if count != 1 { + return Err(TpmError::InvalidRequest(format!( +- "Expected 1 PCR digest, got {}", +- count ++ "Expected 1 PCR digest, got {count}" + ))); + } + +-- +2.47.3 + diff --git a/0005-tpm-add-policy-auth-for-EK-to-activate-crendential.patch b/0005-tpm-add-policy-auth-for-EK-to-activate-crendential.patch new file mode 100644 index 0000000..369e5e8 --- /dev/null +++ b/0005-tpm-add-policy-auth-for-EK-to-activate-crendential.patch @@ -0,0 +1,225 @@ +From d55b898c645d6beeda2952cd798ebfd7f14090a4 Mon Sep 17 00:00:00 2001 +From: Sergio Correia +Date: Wed, 17 Sep 2025 11:43:21 +0000 +Subject: [PATCH 5/6] tpm: add policy auth for EK to activate crendential + +Backport of upstream commit https://github.com/keylime/rust-keylime/commit/88884a5 + +Signed-off-by: Sergio Correia +--- + keylime/src/tpm.rs | 151 +++++++++++++++++++++++++++++++++++---------- + 1 file changed, 118 insertions(+), 33 deletions(-) + +diff --git a/keylime/src/tpm.rs b/keylime/src/tpm.rs +index ac23720..5e27f3a 100644 +--- a/keylime/src/tpm.rs ++++ b/keylime/src/tpm.rs +@@ -16,6 +16,9 @@ use std::{ + sync::{Arc, Mutex, OnceLock}, + }; + use thiserror::Error; ++use tss_esapi::handles::SessionHandle; ++use tss_esapi::interface_types::session_handles::PolicySession; ++use tss_esapi::structures::{DigestList, SymmetricDefinition}; + + use openssl::{ + hash::{Hasher, MessageDigest}, +@@ -26,9 +29,7 @@ use openssl::{ + + use tss_esapi::{ + abstraction::{ +- ak, +- cipher::Cipher, +- ek, ++ ak, ek, + pcr::{read_all, PcrData}, + DefaultKey, + }, +@@ -40,7 +41,7 @@ use tss_esapi::{ + }, + handles::{ + AuthHandle, KeyHandle, ObjectHandle, PcrHandle, PersistentTpmHandle, +- SessionHandle, TpmHandle, ++ TpmHandle, + }, + interface_types::{ + algorithm::{AsymmetricAlgorithm, HashingAlgorithm, PublicAlgorithm}, +@@ -116,6 +117,47 @@ const IAK_AUTH_POLICY_SHA256: [u8; 32] = [ + ]; + const UNIQUE_IAK: [u8; 3] = [0x49, 0x41, 0x4b]; + ++// Source: TCG EK Credential Profile for TPM Family 2.0; Level 0 Version 2.5 Revision 2 ++// Section B.6 ++const POLICY_A_SHA384: [u8; 48] = [ ++ 0x8b, 0xbf, 0x22, 0x66, 0x53, 0x7c, 0x17, 0x1c, 0xb5, 0x6e, 0x40, 0x3c, ++ 0x4d, 0xc1, 0xd4, 0xb6, 0x4f, 0x43, 0x26, 0x11, 0xdc, 0x38, 0x6e, 0x6f, ++ 0x53, 0x20, 0x50, 0xc3, 0x27, 0x8c, 0x93, 0x0e, 0x14, 0x3e, 0x8b, 0xb1, ++ 0x13, 0x38, 0x24, 0xcc, 0xb4, 0x31, 0x05, 0x38, 0x71, 0xc6, 0xdb, 0x53, ++]; ++const POLICY_A_SHA512: [u8; 64] = [ ++ 0x1e, 0x3b, 0x76, 0x50, 0x2c, 0x8a, 0x14, 0x25, 0xaa, 0x0b, 0x7b, 0x3f, ++ 0xc6, 0x46, 0xa1, 0xb0, 0xfa, 0xe0, 0x63, 0xb0, 0x3b, 0x53, 0x68, 0xf9, ++ 0xc4, 0xcd, 0xde, 0xca, 0xff, 0x08, 0x91, 0xdd, 0x68, 0x2b, 0xac, 0x1a, ++ 0x85, 0xd4, 0xd8, 0x32, 0xb7, 0x81, 0xea, 0x45, 0x19, 0x15, 0xde, 0x5f, ++ 0xc5, 0xbf, 0x0d, 0xc4, 0xa1, 0x91, 0x7c, 0xd4, 0x2f, 0xa0, 0x41, 0xe3, ++ 0xf9, 0x98, 0xe0, 0xee, ++]; ++const POLICY_A_SM3_256: [u8; 32] = [ ++ 0xc6, 0x7f, 0x7d, 0x35, 0xf6, 0x6f, 0x3b, 0xec, 0x13, 0xc8, 0x9f, 0xe8, ++ 0x98, 0x92, 0x1c, 0x65, 0x1b, 0x0c, 0xb5, 0xa3, 0x8a, 0x92, 0x69, 0x0a, ++ 0x62, 0xa4, 0x3c, 0x00, 0x12, 0xe4, 0xfb, 0x8b, ++]; ++const POLICY_C_SHA384: [u8; 48] = [ ++ 0xd6, 0x03, 0x2c, 0xe6, 0x1f, 0x2f, 0xb3, 0xc2, 0x40, 0xeb, 0x3c, 0xf6, ++ 0xa3, 0x32, 0x37, 0xef, 0x2b, 0x6a, 0x16, 0xf4, 0x29, 0x3c, 0x22, 0xb4, ++ 0x55, 0xe2, 0x61, 0xcf, 0xfd, 0x21, 0x7a, 0xd5, 0xb4, 0x94, 0x7c, 0x2d, ++ 0x73, 0xe6, 0x30, 0x05, 0xee, 0xd2, 0xdc, 0x2b, 0x35, 0x93, 0xd1, 0x65, ++]; ++const POLICY_C_SHA512: [u8; 64] = [ ++ 0x58, 0x9e, 0xe1, 0xe1, 0x46, 0x54, 0x47, 0x16, 0xe8, 0xde, 0xaf, 0xe6, ++ 0xdb, 0x24, 0x7b, 0x01, 0xb8, 0x1e, 0x9f, 0x9c, 0x7d, 0xd1, 0x6b, 0x81, ++ 0x4a, 0xa1, 0x59, 0x13, 0x87, 0x49, 0x10, 0x5f, 0xba, 0x53, 0x88, 0xdd, ++ 0x1d, 0xea, 0x70, 0x2f, 0x35, 0x24, 0x0c, 0x18, 0x49, 0x33, 0x12, 0x1e, ++ 0x2c, 0x61, 0xb8, 0xf5, 0x0d, 0x3e, 0xf9, 0x13, 0x93, 0xa4, 0x9a, 0x38, ++ 0xc3, 0xf7, 0x3f, 0xc8, ++]; ++const POLICY_C_SM3_256: [u8; 32] = [ ++ 0x2d, 0x4e, 0x81, 0x57, 0x8c, 0x35, 0x31, 0xd9, 0xbd, 0x1c, 0xdd, 0x7d, ++ 0x02, 0xba, 0x29, 0x8d, 0x56, 0x99, 0xa3, 0xe3, 0x9f, 0xc3, 0x55, 0x1b, ++ 0xfe, 0xff, 0xcf, 0x13, 0x2b, 0x49, 0xe1, 0x1d, ++]; ++ + /// TpmError wraps all possible errors raised in tpm.rs + #[derive(Error, Debug)] + pub enum TpmError { +@@ -1215,19 +1257,14 @@ impl Context<'_> { + /// Creates an empty authentication session + fn create_empty_session( + &mut self, ++ ctx: &mut tss_esapi::Context, + ses_type: SessionType, ++ symmetric: SymmetricDefinition, ++ hash_alg: HashingAlgorithm, + ) -> Result { +- let mut ctx = self.inner.lock().unwrap(); //#[allow_ci] + let Some(session) = ctx + .start_auth_session( +- None, +- None, +- None, +- ses_type, +- Cipher::aes_128_cfb().try_into().map_err(|source| { +- TpmError::TSSSymmetricDefinitionFromCipher { source } +- })?, +- HashingAlgorithm::Sha256, ++ None, None, None, ses_type, symmetric, hash_alg, + ) + .map_err(|source| { + TpmError::TSSStartAuthenticationSessionError { source } +@@ -1255,35 +1292,83 @@ impl Context<'_> { + ak: KeyHandle, + ek: KeyHandle, + ) -> Result { +- let (credential, secret) = parse_cred_and_secret(keyblob)?; +- +- let ek_auth = self.create_empty_session(SessionType::Policy)?; +- + let mut ctx = self.inner.lock().unwrap(); //#[allow_ci] + +- // We authorize ses2 with PolicySecret(ENDORSEMENT) as per PolicyA +- let _ = ctx.execute_with_nullauth_session(|context| { +- context.policy_secret( +- ek_auth.try_into()?, +- AuthHandle::Endorsement, +- Default::default(), +- Default::default(), +- Default::default(), +- None, +- ) +- })?; ++ let (credential, secret) = parse_cred_and_secret(keyblob)?; ++ let mut policy_digests = DigestList::new(); ++ let (parent_public, _, _) = ctx.read_public(ek)?; ++ let ek_hash_alg = parent_public.name_hashing_algorithm(); ++ let ek_symmetric = ++ parent_public.symmetric_algorithm().ok_or_else(|| { ++ TpmError::TSSReadPublicError { ++ source: tss_esapi::Error::WrapperError( ++ tss_esapi::WrapperErrorKind::InvalidParam, ++ ), ++ } ++ })?; ++ match ek_hash_alg { ++ HashingAlgorithm::Sha384 => { ++ policy_digests ++ .add(Digest::try_from(POLICY_A_SHA384.as_slice())?)?; ++ policy_digests ++ .add(Digest::try_from(POLICY_C_SHA384.as_slice())?)?; ++ } ++ HashingAlgorithm::Sha512 => { ++ policy_digests ++ .add(Digest::try_from(POLICY_A_SHA512.as_slice())?)?; ++ policy_digests ++ .add(Digest::try_from(POLICY_C_SHA512.as_slice())?)?; ++ } ++ HashingAlgorithm::Sm3_256 => { ++ policy_digests ++ .add(Digest::try_from(POLICY_A_SM3_256.as_slice())?)?; ++ policy_digests ++ .add(Digest::try_from(POLICY_C_SM3_256.as_slice())?)?; ++ } ++ _ => (), ++ }; ++ ++ let ek_auth = self.create_empty_session( ++ &mut ctx, ++ SessionType::Policy, ++ ek_symmetric.into(), ++ ek_hash_alg, ++ )?; + ++ // We authorize session according to the EK profile spec + let result = ctx +- .execute_with_sessions( +- (Some(AuthSession::Password), Some(ek_auth), None), +- |context| { +- context.activate_credential(ak, ek, credential, secret) ++ .execute_with_temporary_object( ++ SessionHandle::from(ek_auth).into(), ++ |ctx, _| { ++ let _ = ctx.execute_with_nullauth_session(|ctx| { ++ ctx.policy_secret( ++ PolicySession::try_from(ek_auth)?, ++ AuthHandle::Endorsement, ++ Default::default(), ++ Default::default(), ++ Default::default(), ++ None, ++ ) ++ })?; ++ if !policy_digests.is_empty() { ++ ctx.policy_or( ++ PolicySession::try_from(ek_auth)?, ++ policy_digests, ++ )? ++ } ++ ctx.execute_with_sessions( ++ (Some(AuthSession::Password), Some(ek_auth), None), ++ |ctx| { ++ ctx.activate_credential( ++ ak, ek, credential, secret, ++ ) ++ }, ++ ) + }, + ) + .map_err(TpmError::from); + + // Clear sessions after use +- ctx.flush_context(SessionHandle::from(ek_auth).into())?; + ctx.clear_sessions(); + + result +-- +2.47.3 + diff --git a/0006-keylime-agent.conf-add-all-accepted-TPM-encryption-a.patch b/0006-keylime-agent.conf-add-all-accepted-TPM-encryption-a.patch new file mode 100644 index 0000000..51f859b --- /dev/null +++ b/0006-keylime-agent.conf-add-all-accepted-TPM-encryption-a.patch @@ -0,0 +1,28 @@ +From 2542812cf92ef35c71734694599dfb3aab9fdabd Mon Sep 17 00:00:00 2001 +From: Sergio Correia +Date: Wed, 17 Sep 2025 12:45:54 +0100 +Subject: [PATCH 6/6] keylime-agent.conf: add all accepted TPM encryption algs + +Backported from upstream commit https://github.com/keylime/rust-keylime/commit/a99bb40 + +Signed-off-by: Sergio Correia +--- + keylime-agent.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/keylime-agent.conf b/keylime-agent.conf +index 71f6096..7669604 100644 +--- a/keylime-agent.conf ++++ b/keylime-agent.conf +@@ -217,7 +217,7 @@ allow_payload_revocation_actions = true + # + # Currently accepted values include: + # - hashing: sha512, sha384, sha256 or sha1 +-# - encryption: ecc or rsa ++# - encryption: rsa (alias for rsa2048), rsa1024, rsa2048, rsa3072, rsa4096, ecc (alias for ecc256), ecc192, ecc224, ecc256, ecc384, ecc521 or ecc_sm2. + # - signing: rsassa, rsapss, ecdsa, ecdaa or ecschnorr + # + # To override tpm_hash_alg, set KEYLIME_AGENT_TPM_HASH_ALG environment variable. +-- +2.47.3 + diff --git a/keylime-agent-rust.spec b/keylime-agent-rust.spec index bc2b6df..da7c3c2 100644 --- a/keylime-agent-rust.spec +++ b/keylime-agent-rust.spec @@ -43,16 +43,17 @@ URL: https://github.com/keylime/rust-keylime/ Source0: %{url}/archive/refs/tags/v%{version}.tar.gz # The vendor tarball is created using cargo-vendor-filterer to remove Windows # related files (https://github.com/cgwalters/cargo-vendor-filterer) -# tar xf rust-keylime-%%{version}.tar.gz +# tar xf rust-keylime-%%{version}.tar.zstd # cd rust-keylime-%%{version} # cargo vendor-filterer --platform x86_64-unknown-linux-gnu \ # --platform powerpc64le-unknown-linux-gnu \ # --platform aarch64-unknown-linux-gnu \ # --platform i686-unknown-linux-gnu \ # --platform s390x-unknown-linux-gnu \ -# --exclude-crate-path "libloading#tests" -# tar jcf rust-keylime-%%{version}-vendor.tar.xz vendor -Source1: rust-keylime-%{version}-vendor.tar.xz +# --exclude-crate-path "libloading#tests" \ +# --prefix=vendor --format=tar.zstd +# Rename the vendor.tar.zstd tarball to rust-keylime-%%{version}-vendor.tar.zstd +Source1: rust-keylime-%{version}-vendor.tar.zstd ## (0-99) General patches # Enable logging for the keylime library # Patch from https://github.com/keylime/rust-keylime/pull/922 @@ -62,6 +63,13 @@ Patch1: rust-keylime-metadata.patch # Update to openssl 0.10.70 to fix CVE-2025-24898 # Patch from https://github.com/keylime/rust-keylime/pull/926 Patch2: rust-keylime-openssl-0.10.70.patch +# Backport of https://github.com/keylime/rust-keylime/pull/846 +# to enable different key sizes and curves for EK and AK. +Patch3: 0003-Enable-non-standard-key-sizes-and-curves-for-EK-and-.patch +Patch4: 0004-Clippy-fixes.patch +Patch5: 0005-tpm-add-policy-auth-for-EK-to-activate-crendential.patch +Patch6: 0006-keylime-agent.conf-add-all-accepted-TPM-encryption-a.patch + ## (100-199) Patches for building from system Rust libraries (Fedora) ## (200+) Patches for building from vendored Rust libraries (RHEL) @@ -76,6 +84,7 @@ Requires: util-linux-core Requires: keylime-base %endif +BuildRequires: git-core BuildRequires: systemd BuildRequires: openssl-devel BuildRequires: libarchive-devel @@ -95,7 +104,7 @@ Conflicts: keylime-agent Rust agent for Keylime %prep -%autosetup -n rust-keylime-%{version} -N %{?bundled_rust_deps:-a1} +%autosetup -S git -n rust-keylime-%{version} -N %{?bundled_rust_deps:-a1} %autopatch -M 99 -p1 %if 0%{?bundled_rust_deps} # Source1 is vendored dependencies diff --git a/sources b/sources index 685f51a..ffed746 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (rust-keylime-0.2.7-vendor.tar.xz) = 1b014fdede3e945ab37e38de62737d90d1a4f7e95379e00d039bbfc68b73e1bcedccea37d81326bd02b18a43bff150f378d090639047bcea88f3689472942512 +SHA512 (rust-keylime-0.2.7-vendor.tar.zstd) = cac2cbe6b1831e5f8c1c7981df54b94dfab38e3784b672fe4a5ef85f22af7cb1accb3f726951579a10abb11205d50e58977e7146eba386195b1d6d126043e906 SHA512 (v0.2.7.tar.gz) = 6a9f4e581aa49c8be1599d235a54c6a65d0f45340ef37c3d08124b75c4c5ca2b8467dc00cac8dfae5402b5690bb90fe69a994770fe2715de6e9d4070dabebb7d