From fd77a6388a1de49cba698d8b678757e5cee48811 Mon Sep 17 00:00:00 2001 From: Tobin Feldman-Fitzthum Date: Wed, 5 Feb 2025 16:00:00 -0600 Subject: [PATCH 1/7] rvps-tool: separate rvps-tool into client lib and binary In order to set reference values from the integration tests, we need access to the rvps-tool as a crate, rather than a binary. This will also be useful if we want to add rvps functionality to the kbs-client or to the proposed trustee-ctl. To keep things simple, I just added the client as a new module in the existing crate rather than creating a new package like we do for kbs-client. Signed-off-by: Tobin Feldman-Fitzthum --- rvps/src/bin/rvps-tool.rs | 23 +++-------------------- rvps/src/client/mod.rs | 34 ++++++++++++++++++++++++++++++++++ rvps/src/lib.rs | 5 +++++ 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 rvps/src/client/mod.rs diff --git a/rvps/src/bin/rvps-tool.rs b/rvps/src/bin/rvps-tool.rs index 709a8d4fa..2d2e8ad0b 100644 --- a/rvps/src/bin/rvps-tool.rs +++ b/rvps/src/bin/rvps-tool.rs @@ -5,14 +5,7 @@ use clap::{Args, Parser}; use log::info; use shadow_rs::shadow; -pub mod rvps_api { - tonic::include_proto!("reference"); -} - -use crate::rvps_api::{ - reference_value_provider_service_client::ReferenceValueProviderServiceClient, - ReferenceValueQueryRequest, ReferenceValueRegisterRequest, -}; +use reference_value_provider_service::client; shadow!(build); @@ -21,25 +14,15 @@ const DEFAULT_ADDR: &str = "http://127.0.0.1:50003"; async fn register(addr: &str, provenance_path: &str) -> Result<()> { let message = std::fs::read_to_string(provenance_path).context("read provenance")?; - let mut client = ReferenceValueProviderServiceClient::connect(addr.to_string()).await?; - let req = tonic::Request::new(ReferenceValueRegisterRequest { message }); - - client.register_reference_value(req).await?; + client::register(addr.to_string(), message).await?; info!("Register provenance succeeded."); Ok(()) } async fn query(addr: &str) -> Result<()> { - let mut client = ReferenceValueProviderServiceClient::connect(addr.to_string()).await?; - let req = tonic::Request::new(ReferenceValueQueryRequest {}); - - let rvs = client - .query_reference_value(req) - .await? - .into_inner() - .reference_value_results; + let rvs = client::query(addr.to_string()).await?; info!("Get reference values succeeded:\n {rvs}"); Ok(()) } diff --git a/rvps/src/client/mod.rs b/rvps/src/client/mod.rs new file mode 100644 index 000000000..cc56e5da0 --- /dev/null +++ b/rvps/src/client/mod.rs @@ -0,0 +1,34 @@ +// Copyright (c) 2025 IBM +// +// SPDX-License-Identifier: Apache-2.0 +// +// Helpers for building a client for the RVPS + +use anyhow::*; + +use crate::rvps_api::{ + reference_value_provider_service_client::ReferenceValueProviderServiceClient, + ReferenceValueQueryRequest, ReferenceValueRegisterRequest, +}; + +pub async fn register(address: String, message: String) -> Result<()> { + let mut client = ReferenceValueProviderServiceClient::connect(address).await?; + let req = tonic::Request::new(ReferenceValueRegisterRequest { message }); + + client.register_reference_value(req).await?; + + Ok(()) +} + +pub async fn query(address: String) -> Result { + let mut client = ReferenceValueProviderServiceClient::connect(address).await?; + let req = tonic::Request::new(ReferenceValueQueryRequest {}); + + let rvs = client + .query_reference_value(req) + .await? + .into_inner() + .reference_value_results; + + Ok(rvs) +} diff --git a/rvps/src/lib.rs b/rvps/src/lib.rs index 5c150375e..7b0cfd598 100644 --- a/rvps/src/lib.rs +++ b/rvps/src/lib.rs @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 // +pub mod client; pub mod config; pub mod extractors; pub mod pre_processor; @@ -21,6 +22,10 @@ use log::{info, warn}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; +pub mod rvps_api { + tonic::include_proto!("reference"); +} + /// Default version of Message static MESSAGE_VERSION: &str = "0.1.0"; From 34e5593ec963923b52c4809916eaccbed64621ee Mon Sep 17 00:00:00 2001 From: Tobin Feldman-Fitzthum Date: Thu, 6 Feb 2025 10:20:38 -0600 Subject: [PATCH 2/7] sample: extend sample evidence Our default policy expects the sample evidence to include a launch digest. We could remove this from the policy, but I'd like to keep it because it helps illustrate how the policy works. Ideally we would add this field to the evidence in the attester, but it doesn't seem worth it to make the extra changes for the sample evidence. Signed-off-by: Tobin Feldman-Fitzthum --- deps/verifier/src/sample/mod.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deps/verifier/src/sample/mod.rs b/deps/verifier/src/sample/mod.rs index 575d4d6de..30f3ef5f1 100644 --- a/deps/verifier/src/sample/mod.rs +++ b/deps/verifier/src/sample/mod.rs @@ -80,6 +80,9 @@ fn parse_tee_evidence(quote: &SampleTeeEvidence) -> Result Date: Thu, 6 Feb 2025 14:20:45 -0600 Subject: [PATCH 3/7] rvps: move server to the RVPS crate We had already separated the RVPS server implementation from the RVPS server binary, but we put this server implementation in the bin directory. This is no good for using the server without the binary, which is exactly what we need to do for the integration tests. So, let's move the server implementation into the crate itself. Signed-off-by: Tobin Feldman-Fitzthum --- rvps/src/bin/rvps.rs | 3 +-- rvps/src/lib.rs | 1 + rvps/src/{bin => }/server/mod.rs | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) rename rvps/src/{bin => }/server/mod.rs (97%) diff --git a/rvps/src/bin/rvps.rs b/rvps/src/bin/rvps.rs index b701193f3..0a9bb2606 100644 --- a/rvps/src/bin/rvps.rs +++ b/rvps/src/bin/rvps.rs @@ -8,11 +8,10 @@ pub mod rvps_api { } use reference_value_provider_service::config::Config; +use reference_value_provider_service::server; shadow!(build); -mod server; - const DEFAULT_CONFIG_PATH: &str = "/etc/rvps.json"; const DEFAULT_ADDRESS: &str = "127.0.0.1:50003"; diff --git a/rvps/src/lib.rs b/rvps/src/lib.rs index 7b0cfd598..d9d9160b5 100644 --- a/rvps/src/lib.rs +++ b/rvps/src/lib.rs @@ -8,6 +8,7 @@ pub mod config; pub mod extractors; pub mod pre_processor; pub mod reference_value; +pub mod server; pub mod storage; pub use config::Config; diff --git a/rvps/src/bin/server/mod.rs b/rvps/src/server/mod.rs similarity index 97% rename from rvps/src/bin/server/mod.rs rename to rvps/src/server/mod.rs index 4ce5a2dad..98d9a2181 100644 --- a/rvps/src/bin/server/mod.rs +++ b/rvps/src/server/mod.rs @@ -1,12 +1,13 @@ use anyhow::{Context, Result}; use log::{debug, info}; -use reference_value_provider_service::{Config, Rvps}; use std::net::SocketAddr; use std::sync::Arc; use tokio::sync::RwLock; use tonic::transport::Server; use tonic::{Request, Response, Status}; +use crate::{Config, Rvps}; + use crate::rvps_api::reference_value_provider_service_server::{ ReferenceValueProviderService, ReferenceValueProviderServiceServer, }; From 73609db1c7fb1c8558f5982d5d79ad920927529a Mon Sep 17 00:00:00 2001 From: Tobin Feldman-Fitzthum Date: Thu, 6 Feb 2025 14:56:44 -0600 Subject: [PATCH 4/7] rvps: change capitlization of RVPSServer It seems a bit more idiomatic to call this RvpsServer Signed-off-by: Tobin Feldman-Fitzthum --- rvps/src/server/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rvps/src/server/mod.rs b/rvps/src/server/mod.rs index 98d9a2181..9c1181e78 100644 --- a/rvps/src/server/mod.rs +++ b/rvps/src/server/mod.rs @@ -16,18 +16,18 @@ use crate::rvps_api::{ ReferenceValueRegisterResponse, }; -pub struct RVPSServer { +pub struct RvpsServer { rvps: Arc>, } -impl RVPSServer { +impl RvpsServer { pub fn new(rvps: Arc>) -> Self { Self { rvps } } } #[tonic::async_trait] -impl ReferenceValueProviderService for RVPSServer { +impl ReferenceValueProviderService for RvpsServer { async fn query_reference_value( &self, _request: Request, @@ -73,7 +73,7 @@ impl ReferenceValueProviderService for RVPSServer { pub async fn start(socket: SocketAddr, config: Config) -> Result<()> { let service = Rvps::new(config)?; let inner = Arc::new(RwLock::new(service)); - let rvps_server = RVPSServer::new(inner.clone()); + let rvps_server = RvpsServer::new(inner.clone()); Server::builder() .add_service(ReferenceValueProviderServiceServer::new(rvps_server)) From 49eaf46d58fc5a9ed737c3ddf111edc5f726b1e2 Mon Sep 17 00:00:00 2001 From: Tobin Feldman-Fitzthum Date: Thu, 6 Feb 2025 21:34:42 -0600 Subject: [PATCH 5/7] policy: add warning if the default policy file already exists This won't be an issue for people running the AS in a container, but if you run the AS as a process, it's very easy to be confused when the policy doesn't update. Add a warning in case there is already a policy there. Signed-off-by: Tobin Feldman-Fitzthum --- attestation-service/src/policy_engine/opa/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/attestation-service/src/policy_engine/opa/mod.rs b/attestation-service/src/policy_engine/opa/mod.rs index 149b5a290..bc701ff1c 100644 --- a/attestation-service/src/policy_engine/opa/mod.rs +++ b/attestation-service/src/policy_engine/opa/mod.rs @@ -5,7 +5,7 @@ use anyhow::{Context, Result}; use async_trait::async_trait; use base64::Engine; -use log::debug; +use log::{debug, warn}; use sha2::{Digest, Sha384}; use std::collections::HashMap; use std::fs; @@ -36,6 +36,8 @@ impl OPA { if !default_policy_path.as_path().exists() { fs::write(&default_policy_path, default_policy) .map_err(PolicyError::WriteDefaultPolicyFailed)?; + } else { + warn!("Default policy file is already populated. Existing policy file will be used."); } Ok(Self { policy_dir_path }) From f8ca47924fe6662c215ff72031399dfc5cad89c1 Mon Sep 17 00:00:00 2001 From: Tobin Feldman-Fitzthum Date: Thu, 6 Feb 2025 23:44:28 -0600 Subject: [PATCH 6/7] rvps: fix LocalJson storage initialization The LocalJson storage backend expects there to be json file (with an array in it) at a given location. In case it isn't there, let's write our own file with an empty array in it. Signed-off-by: Tobin Feldman-Fitzthum --- rvps/src/storage/local_json/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rvps/src/storage/local_json/mod.rs b/rvps/src/storage/local_json/mod.rs index e0cb828fd..9fd686b01 100644 --- a/rvps/src/storage/local_json/mod.rs +++ b/rvps/src/storage/local_json/mod.rs @@ -43,6 +43,12 @@ impl LocalJson { })?; debug!("create path for LocalJson: {:?}", parent_dir); fs::create_dir_all(parent_dir)?; + + if !path.exists() { + debug!("Creating empty file for LocalJson reference values."); + std::fs::write(config.file_path.clone(), "[]")?; + } + Ok(Self { file_path: config.file_path, lock: RwLock::new(0), From 14ee77ab22fc5c921c462a19d95668521d818a93 Mon Sep 17 00:00:00 2001 From: Tobin Feldman-Fitzthum Date: Fri, 7 Feb 2025 18:16:01 -0600 Subject: [PATCH 7/7] tests: add test for more complex policy with reference values Let's test a more complex policy where we need to set reference values. This means introducing the RVPS to the testing framework along with the RVPS tool. To handle this more complex test, let's make the test setup more robust. Right now we only have one test that uses the remote RVPS. When we introduce more tests that use the remote RVPS we'll need to double-check the robustness of the current framework. Signed-off-by: Tobin Feldman-Fitzthum --- Cargo.lock | 817 ++++++++++++------------ integration-tests/Cargo.toml | 3 + integration-tests/src/common.rs | 130 +++- integration-tests/tests/get_resource.rs | 108 +++- 4 files changed, 623 insertions(+), 435 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe47adf88..89df461ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -91,7 +91,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -229,7 +229,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -255,7 +255,7 @@ checksum = "b6ac1e58cded18cb28ddc17143c4dea5345b3ad575e14f32f66e4054a56eb271" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -314,7 +314,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -326,7 +326,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -421,11 +421,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -471,7 +472,7 @@ checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", "synstructure", ] @@ -483,7 +484,7 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -515,18 +516,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -554,9 +555,9 @@ dependencies = [ "sha2", "strum", "tempfile", - "thiserror 2.0.3", + "thiserror 2.0.11", "tokio", - "toml 0.8.19", + "toml 0.8.20", ] [[package]] @@ -569,7 +570,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "cfg-if", - "clap 4.5.21", + "clap 4.5.28", "ear 0.3.0", "env_logger 0.10.2", "futures", @@ -594,7 +595,7 @@ dependencies = [ "strum", "tempfile", "testing_logger", - "thiserror 2.0.3", + "thiserror 2.0.11", "time", "tokio", "tonic", @@ -616,7 +617,7 @@ dependencies = [ "codicon", "csv-rs", "hex", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-tls 0.5.0", "kbs-types", "log", @@ -631,7 +632,7 @@ dependencies = [ "strum", "tdx-attest-rs", "tempfile", - "thiserror 2.0.3", + "thiserror 2.0.11", "tokio", ] @@ -662,7 +663,7 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "itoa", @@ -674,7 +675,7 @@ dependencies = [ "rustversion", "serde", "sync_wrapper 1.0.2", - "tower 0.5.1", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -688,7 +689,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -714,7 +715,7 @@ dependencies = [ "serde_json", "sev 4.0.0", "sha2", - "thiserror 2.0.3", + "thiserror 2.0.11", "tss-esapi", "zerocopy", ] @@ -727,11 +728,11 @@ checksum = "7c16506502dc64f7111f7241ca400f3ee0f54e69dfd1f4be5cef29b96332f22e" dependencies = [ "az-cvm-vtpm", "bincode", - "clap 4.5.21", + "clap 4.5.28", "openssl", "serde", "sev 4.0.0", - "thiserror 2.0.3", + "thiserror 2.0.11", "ureq", ] @@ -746,7 +747,7 @@ dependencies = [ "bincode", "serde", "serde_json", - "thiserror 2.0.3", + "thiserror 2.0.11", "ureq", "zerocopy", ] @@ -856,15 +857,15 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.87", + "syn 2.0.98", "which", ] [[package]] name = "binstring" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0d60973d9320722cb1206f412740e162a33b8547ea8d6be75d7cff237c7a85" +checksum = "ed79c2a8151273c70956b5e3cdfdc1ff6c1a8b9779ba59c6807d281b32ee2f86" [[package]] name = "bitfield" @@ -938,9 +939,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -948,9 +949,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -960,15 +961,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "bytestring" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" +checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" dependencies = [ "bytes", ] @@ -994,9 +995,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.7" +version = "1.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" +checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2" dependencies = [ "jobserver", "libc", @@ -1026,9 +1027,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1041,9 +1042,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" +checksum = "9c6ac4f2c0bf0f44e9161aec9675e1050aa4a530663c4a9e37e108fa948bca9f" dependencies = [ "chrono", "chrono-tz-build", @@ -1105,7 +1106,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.5", + "libloading 0.8.6", ] [[package]] @@ -1125,9 +1126,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.21" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" dependencies = [ "clap_builder", "clap_derive", @@ -1135,9 +1136,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ "anstream", "anstyle", @@ -1147,14 +1148,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -1219,18 +1220,18 @@ checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" [[package]] name = "const_format" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", @@ -1318,9 +1319,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1354,15 +1355,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto" @@ -1438,7 +1439,7 @@ dependencies = [ "bitflags 1.3.2", "codicon", "dirs", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-tls 0.5.0", "iocuddle", "libc", @@ -1453,9 +1454,9 @@ dependencies = [ [[package]] name = "ct-codecs" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "026ac6ceace6298d2c557ef5ed798894962296469ec7842288ea64674201a2d1" +checksum = "b916ba8ce9e4182696896f015e8a5ae6081b305f74690baa8465e35f5a142ea4" [[package]] name = "ctr" @@ -1584,15 +1585,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.18" +version = "0.99.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -1645,7 +1646,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -1720,7 +1721,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9b3460f44bea8cd47f45a0c70892f1eff856d97cd55358b2f73f663789f6190" dependencies = [ "ct-codecs", - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -1761,22 +1762,22 @@ dependencies = [ [[package]] name = "enumflags2" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" dependencies = [ "enumflags2_derive", ] [[package]] name = "enumflags2_derive" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -1826,9 +1827,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1836,9 +1837,9 @@ dependencies = [ [[package]] name = "eventlog-rs" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f63e89ae20606137075d874615efe9b6c1beb82c5b86d438e0bf2bb11b60519" +checksum = "606e113813a3db3f1f42b273d4fb89ca8ef1e2bd5b97befd08b260ae5708be8d" dependencies = [ "anyhow", "byteorder", @@ -1977,7 +1978,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -2045,10 +2046,22 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "ghash" version = "0.5.1" @@ -2080,9 +2093,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "group" @@ -2107,7 +2120,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -2125,8 +2138,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.6.0", + "http 1.2.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -2154,9 +2167,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -2173,12 +2186,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hermit-abi" version = "0.4.0" @@ -2217,29 +2224,29 @@ checksum = "18492c9f6f9a560e0d346369b665ad2bdbc89fa9bceca75796584e79042694c3" [[package]] name = "hmac-sha256" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3688e69b38018fec1557254f64c8dc2cc8ec502890182f395dbb0aa997aa5735" +checksum = "4a8575493d277c9092b988c780c94737fb9fd8651a1001e16bee3eccfc1baedb" dependencies = [ "digest", ] [[package]] name = "hmac-sha512" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ce1f4656bae589a3fab938f9f09bf58645b7ed01a2c5f8a3c238e01a4ef78a" +checksum = "b0b3a0f572aa8389d325f5852b9e0a333a15b0f86ecccbb3fdb6e97cd86dc67c" dependencies = [ "digest", ] [[package]] name = "home" -version = "0.5.9" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -2261,9 +2268,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -2288,7 +2295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -2299,16 +2306,16 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -2324,9 +2331,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -2348,15 +2355,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -2375,7 +2382,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http 0.2.12", - "hyper 0.14.31", + "hyper 0.14.32", "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", @@ -2383,20 +2390,20 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.1", + "http 1.2.0", + "hyper 1.6.0", "hyper-util", - "rustls 0.23.17", + "rustls 0.23.22", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", "tower-service", - "webpki-roots 0.26.6", + "webpki-roots 0.26.8", ] [[package]] @@ -2405,7 +2412,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.5.1", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -2419,7 +2426,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.31", + "hyper 0.14.32", "native-tls", "tokio", "tokio-native-tls", @@ -2433,7 +2440,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.1", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -2450,9 +2457,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -2598,7 +2605,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -2630,9 +2637,9 @@ dependencies = [ [[package]] name = "impl-more" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae21c3177a27788957044151cc2800043d127acaa460a47ebb9b84dfa2c6aa0" +checksum = "e8a5a9a0ff0086c7a148acb942baaabeadf9504d10400b5a05645853729b9cd2" [[package]] name = "indexmap" @@ -2646,12 +2653,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown 0.15.1", + "hashbrown 0.15.2", ] [[package]] @@ -2681,16 +2688,19 @@ dependencies = [ "actix-web", "anyhow", "attestation-service", + "base64 0.22.1", "env_logger 0.10.2", "kbs", "kbs-client", "log", "openssl", + "reference-value-provider-service", "rstest", "serde_json", "serial_test", "tempfile", "tokio", + "tonic", ] [[package]] @@ -2718,15 +2728,15 @@ checksum = "d8972d5be69940353d5347a1344cb375d9b457d6809b428b05bb1ca2fb9ce007" [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" dependencies = [ "hermit-abi 0.4.0", "libc", @@ -2735,9 +2745,9 @@ dependencies = [ [[package]] name = "is_debug" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06d198e9919d9822d5f7083ba8530e04de87841eaf21ead9af8f2304efd57c89" +checksum = "e8ea828c9d6638a5bd3d8b14e37502b4d56cae910ccf8a5b7f51c7a0eb1d0508" [[package]] name = "is_terminal_polyfill" @@ -2747,18 +2757,18 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jobserver" @@ -2771,10 +2781,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2808,11 +2819,11 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "9.3.0" +version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "js-sys", "pem", "ring", @@ -2823,9 +2834,9 @@ dependencies = [ [[package]] name = "jwt-simple" -version = "0.12.10" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ae7e0018905a795d6f2a60ac32a547490abdd8df509906a8c6171e6d861711" +checksum = "b00e03c08ce71da10a3ad9267b963c03fc4234a56713d87648547b3fdda872a6" dependencies = [ "anyhow", "binstring", @@ -2843,7 +2854,7 @@ dependencies = [ "serde", "serde_json", "superboring", - "thiserror 1.0.69", + "thiserror 2.0.11", "zeroize", ] @@ -2875,7 +2886,7 @@ dependencies = [ "az-cvm-vtpm", "base64 0.22.1", "cfg-if", - "clap 4.5.21", + "clap 4.5.28", "config", "cryptoki", "derivative", @@ -2893,7 +2904,7 @@ dependencies = [ "reference-value-provider-service", "regex", "regorus", - "reqwest 0.12.9", + "reqwest 0.12.12", "rsa", "rstest", "scc", @@ -2902,7 +2913,7 @@ dependencies = [ "serde_json", "strum", "tempfile", - "thiserror 2.0.3", + "thiserror 2.0.11", "time", "tokio", "tonic", @@ -2916,12 +2927,12 @@ version = "0.1.0" dependencies = [ "anyhow", "base64 0.22.1", - "clap 4.5.21", + "clap 4.5.28", "env_logger 0.10.2", "jwt-simple", "kbs_protocol", "log", - "reqwest 0.12.9", + "reqwest 0.12.12", "serde", "serde_json", "tokio", @@ -2950,12 +2961,12 @@ dependencies = [ "jwt-simple", "kbs-types", "log", - "reqwest 0.12.9", + "reqwest 0.12.12", "resource_uri", "serde", "serde_json", "sha2", - "thiserror 2.0.3", + "thiserror 2.0.11", "tokio", "url", "zeroize", @@ -2978,16 +2989,16 @@ dependencies = [ "p12", "prost", "rand", - "reqwest 0.12.9", + "reqwest 0.12.12", "resource_uri", "ring", "serde", "serde_json", "sha2", "strum", - "thiserror 2.0.3", + "thiserror 2.0.11", "tokio", - "toml 0.8.19", + "toml 0.8.20", "tonic", "tonic-build", "url", @@ -3017,9 +3028,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.168" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libgit2-sys" @@ -3045,12 +3056,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -3071,9 +3082,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.20" +version = "1.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" dependencies = [ "cc", "libc", @@ -3089,15 +3100,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "litemap" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "litrs" @@ -3134,9 +3145,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "matchit" @@ -3193,23 +3204,22 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi 0.3.9", "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -3240,9 +3250,9 @@ checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -3316,7 +3326,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -3360,9 +3370,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -3397,9 +3407,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "opaque-debug" @@ -3409,9 +3419,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ "bitflags 2.8.0", "cfg-if", @@ -3430,14 +3440,14 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" @@ -3450,9 +3460,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", @@ -3492,7 +3502,7 @@ dependencies = [ "cbc", "cipher", "des", - "getrandom", + "getrandom 0.2.15", "hmac", "lazy_static", "rc2", @@ -3514,9 +3524,9 @@ dependencies = [ [[package]] name = "p384" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" dependencies = [ "ecdsa", "elliptic-curve", @@ -3567,7 +3577,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", "smallvec", "windows-targets 0.52.6", ] @@ -3632,20 +3642,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 1.0.69", + "thiserror 2.0.11", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" dependencies = [ "pest", "pest_generator", @@ -3653,22 +3663,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "pest_meta" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" dependencies = [ "once_cell", "pest", @@ -3682,14 +3692,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.7.1", ] [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", "phf_shared", @@ -3698,9 +3708,9 @@ dependencies = [ [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ "phf_generator", "phf_shared", @@ -3708,9 +3718,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand", @@ -3718,22 +3728,22 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", "phf_shared", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] @@ -3775,29 +3785,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.7" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -3846,9 +3856,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -3867,12 +3877,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -3905,11 +3915,10 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +checksum = "d0f3e5beed80eb580c68e2c600937ac2c4eedabdfd5ef1e5b7ea4f3fba84497b" dependencies = [ - "bytes", "heck", "itertools", "log", @@ -3920,7 +3929,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.87", + "syn 2.0.98", "tempfile", ] @@ -3934,14 +3943,14 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "prost-types" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" dependencies = [ "prost", ] @@ -3972,10 +3981,10 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", - "rustls 0.23.17", + "rustc-hash 2.1.1", + "rustls 0.23.22", "socket2", - "thiserror 2.0.3", + "thiserror 2.0.11", "tokio", "tracing", ] @@ -3987,14 +3996,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", - "getrandom", + "getrandom 0.2.15", "rand", "ring", - "rustc-hash 2.0.0", - "rustls 0.23.17", + "rustc-hash 2.1.1", + "rustls 0.23.22", "rustls-pki-types", "slab", - "thiserror 2.0.3", + "thiserror 2.0.11", "tinyvec", "tracing", "web-time", @@ -4002,16 +4011,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52cd4b1eff68bf27940dd39811292c49e007f4d0b4c357358dc9b0197be6b527" +checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -4050,7 +4059,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -4082,9 +4091,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.8.0", ] @@ -4095,7 +4104,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror 1.0.69", ] @@ -4110,7 +4119,7 @@ dependencies = [ "base64 0.22.1", "cfg-if", "chrono", - "clap 4.5.21", + "clap 4.5.28", "config", "env_logger 0.10.2", "log", @@ -4204,7 +4213,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-rustls 0.24.2", "hyper-tls 0.5.0", "ipnet", @@ -4236,9 +4245,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -4246,11 +4255,11 @@ dependencies = [ "cookie_store", "futures-core", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", - "hyper-rustls 0.27.3", + "hyper 1.6.0", + "hyper-rustls 0.27.5", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -4262,7 +4271,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.17", + "rustls 0.23.22", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -4271,13 +4280,14 @@ dependencies = [ "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.0", + "tokio-rustls 0.26.1", + "tower 0.5.2", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.6", + "webpki-roots 0.26.8", "windows-registry", ] @@ -4310,7 +4320,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -4330,9 +4340,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" dependencies = [ "const-oid", "digest", @@ -4374,7 +4384,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.87", + "syn 2.0.98", "unicode-ident", ] @@ -4402,9 +4412,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -4426,9 +4436,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ "bitflags 2.8.0", "errno", @@ -4451,9 +4461,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.17" +version = "0.23.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" dependencies = [ "log", "once_cell", @@ -4484,9 +4494,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" dependencies = [ "web-time", ] @@ -4520,9 +4530,9 @@ checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "s390_pv" @@ -4567,9 +4577,9 @@ dependencies = [ [[package]] name = "scc" -version = "2.2.6" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b13f8ea6177672c49d12ed964cca44836f59621981b04a3e26b87e675181de" +checksum = "ea091f6cac2595aa38993f04f4ee692ed43757035c36e67c180b6828356385b1" dependencies = [ "sdd", ] @@ -4600,7 +4610,7 @@ checksum = "d2ee4885492bb655bfa05d039cd9163eb8fe9f79ddebf00ca23a1637510c2fd2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -4635,7 +4645,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -4646,7 +4656,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -4661,9 +4671,9 @@ dependencies = [ [[package]] name = "sdd" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49c1eeaf4b6a87c7479688c6d52b9f1153cedd3c489300564f932b065c6eab95" +checksum = "b07779b9b918cc05650cb30f404d4d7835d26df37c235eded8a6832e2fb82cca" [[package]] name = "sec1" @@ -4703,9 +4713,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -4713,15 +4723,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -4746,20 +4756,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -4844,7 +4854,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -4973,21 +4983,21 @@ dependencies = [ [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 1.0.69", + "thiserror 2.0.11", "time", ] [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" @@ -5022,9 +5032,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5095,7 +5105,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -5106,11 +5116,11 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "superboring" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee25cd9d145d2c1ef92a52720376eeb510c8870dfa0f84edb371901ec6a12ca" +checksum = "515cce34a781d7250b8a65706e0f2a5b99236ea605cb235d4baed6685820478f" dependencies = [ - "getrandom", + "getrandom 0.2.15", "hmac-sha256", "hmac-sha512", "rand", @@ -5130,9 +5140,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -5162,7 +5172,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -5210,15 +5220,16 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -5259,11 +5270,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.3" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.3", + "thiserror-impl 2.0.11", ] [[package]] @@ -5274,18 +5285,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -5343,9 +5354,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -5358,9 +5369,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -5376,13 +5387,13 @@ dependencies = [ [[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.87", + "syn 2.0.98", ] [[package]] @@ -5418,20 +5429,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.17", - "rustls-pki-types", + "rustls 0.23.22", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -5462,9 +5472,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -5483,11 +5493,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", @@ -5506,10 +5516,10 @@ dependencies = [ "base64 0.22.1", "bytes", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.6.0", "hyper-timeout", "hyper-util", "percent-encoding", @@ -5535,7 +5545,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -5560,14 +5570,15 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", + "tokio", "tower-layer", "tower-service", ] @@ -5586,9 +5597,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -5604,14 +5615,14 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -5650,13 +5661,13 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tss-esapi" -version = "7.5.1" +version = "7.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ba6594ded739cb539f8ffcd3713f6c21d4525c47314bbc6de15c0cd251aedf" +checksum = "78ea9ccde878b029392ac97b5be1f470173d06ea41d18ad0bb3c92794c16a0f2" dependencies = [ "bitfield 0.14.0", "enumflags2", - "getrandom", + "getrandom 0.2.15", "hostname-validator", "log", "mbox", @@ -5720,9 +5731,9 @@ dependencies = [ [[package]] name = "tzdb_data" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654c1ec546942ce0594e8d220e6b8e3899e0a0a8fe70ddd54d32a376dfefe3f8" +checksum = "d4471adcfcbd3052e8c5b5890a04a559837444b3be26b9cbbd622063171cec9d" dependencies = [ "tz-rs", ] @@ -5769,19 +5780,19 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" dependencies = [ "base64 0.22.1", "log", "once_cell", - "rustls 0.23.17", + "rustls 0.23.22", "rustls-pki-types", "serde", "serde_json", "url", - "webpki-roots 0.26.6", + "webpki-roots 0.26.8", ] [[package]] @@ -5816,19 +5827,19 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" dependencies = [ - "getrandom", + "getrandom 0.3.1", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -5883,7 +5894,7 @@ dependencies = [ "kbs-types", "log", "openssl", - "reqwest 0.12.9", + "reqwest 0.12.12", "rstest", "s390_pv", "scroll 0.11.0", @@ -5895,7 +5906,7 @@ dependencies = [ "sha2", "shadow-rs", "strum", - "thiserror 2.0.3", + "thiserror 2.0.11", "tokio", "tonic-build", "veraison-apiclient", @@ -5933,58 +5944,68 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasix" version = "0.12.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1fbb4ef9bbca0c1170e0b00dd28abc9e3b68669821600cad1caaed606583c6d" dependencies = [ - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5992,28 +6013,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -6037,9 +6061,9 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -6078,7 +6102,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -6276,9 +6300,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" dependencies = [ "memchr", ] @@ -6293,6 +6317,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -6366,7 +6399,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", "synstructure", ] @@ -6388,14 +6421,14 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" dependencies = [ "zerofrom-derive", ] @@ -6408,7 +6441,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", "synstructure", ] @@ -6429,7 +6462,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] @@ -6451,7 +6484,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.98", ] [[package]] diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index adb7ac2a2..973a4059a 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -10,10 +10,12 @@ edition.workspace = true kbs = { path = "../kbs" } attestation-service = { path = "../attestation-service" } kbs-client = { path = "../tools/kbs-client" } +reference-value-provider-service = { path = "../rvps" } actix-web.workspace = true actix-rt = "2.10.0" anyhow.workspace = true +base64.workspace = true env_logger.workspace = true log.workspace = true openssl.workspace = true @@ -22,3 +24,4 @@ serde_json.workspace = true serial_test.workspace = true tempfile.workspace = true tokio.workspace = true +tonic.workspace = true diff --git a/integration-tests/src/common.rs b/integration-tests/src/common.rs index 2a7c14a53..7adf39cec 100644 --- a/integration-tests/src/common.rs +++ b/integration-tests/src/common.rs @@ -8,6 +8,7 @@ use kbs::config::HttpServerConfig; use kbs::config::KbsConfig; use kbs::policy_engine::PolicyEngineConfig; use kbs::token::AttestationTokenVerifierConfig; +use kbs::ApiServer; use kbs::plugins::{ implementations::{resource::local_fs::LocalFsRepoDesc, RepositoryConfig}, @@ -16,17 +17,28 @@ use kbs::plugins::{ use attestation_service::{ config::Config, - rvps::{RvpsConfig, RvpsCrateConfig}, + rvps::{grpc::RvpsRemoteConfig, RvpsConfig, RvpsCrateConfig}, token::{ear_broker, simple, AttestationTokenConfig}, }; +use reference_value_provider_service::client as rvps_client; +use reference_value_provider_service::config::Config as RVPSConfig; +use reference_value_provider_service::rvps_api::reference_value_provider_service_server::ReferenceValueProviderServiceServer; +use reference_value_provider_service::storage::{local_json, ReferenceValueStorageConfig}; +use reference_value_provider_service::{server::RvpsServer, Rvps}; + use anyhow::{bail, Result}; +use base64::{engine::general_purpose::STANDARD, Engine}; use log::info; use openssl::pkey::PKey; -use std::io::Write; -use tempfile::{NamedTempFile, TempDir}; +use serde_json::json; +use std::sync::Arc; +use tempfile::TempDir; +use tokio::sync::RwLock; +use tonic::transport::Server; const KBS_URL: &str = "http://127.0.0.1:8080"; +const RVPS_URL: &str = "http://127.0.0.1:50003"; const WAIT_TIME: u64 = 3000; const ALLOW_ALL_POLICY: &str = " @@ -42,45 +54,105 @@ const DENY_ALL_POLICY: &str = " pub enum PolicyType { AllowAll, DenyAll, - //Custom(String), + Custom(String), +} + +pub enum RvpsType { + Builtin, + Remote, } // Parameters that define test behavior (coming from rstest) pub struct TestParameters { pub attestation_token_type: String, + pub rvps_type: RvpsType, } // Internal state of tests pub struct TestHarness { pub kbs_config: KbsConfig, auth_privkey: String, + kbs_server_handle: actix_web::dev::ServerHandle, + _work_dir: TempDir, // Future tests will use some parameters at runtime _test_parameters: TestParameters, } impl TestHarness { - pub fn new(test_parameters: TestParameters) -> Result { + pub async fn new(test_parameters: TestParameters) -> Result { let auth_keypair = PKey::generate_ed25519()?; let auth_pubkey = String::from_utf8(auth_keypair.public_key_to_pem()?)?; let auth_privkey = String::from_utf8(auth_keypair.private_key_to_pem_pkcs8()?)?; let work_dir = TempDir::new()?; - let resource_dir = TempDir::new()?; - let policy_path = NamedTempFile::new()?; + let resource_dir = work_dir + .path() + .join("resources") + .into_os_string() + .into_string() + .unwrap(); + let as_policy_dir = work_dir + .path() + .join("as_policy") + .into_os_string() + .into_string() + .unwrap(); + let kbs_policy_path = work_dir.path().join("kbs_policy"); + let rv_path = work_dir + .path() + .join("reference_values") + .into_os_string() + .into_string() + .unwrap(); + let auth_pubkey_path = work_dir.path().join("auth_pubkey"); - let mut auth_pubkey_path = NamedTempFile::new()?; - auth_pubkey_path.write(auth_pubkey.as_bytes())?; + tokio::fs::write(auth_pubkey_path, auth_pubkey.as_bytes()).await?; let attestation_token_config = match &test_parameters.attestation_token_type[..] { "Ear" => AttestationTokenConfig::Ear(ear_broker::Configuration { duration_min: 5, + policy_dir: as_policy_dir, + ..Default::default() + }), + "Simple" => AttestationTokenConfig::Simple(simple::Configuration { + policy_dir: as_policy_dir, ..Default::default() }), - "Simple" => AttestationTokenConfig::Simple(simple::Configuration::default()), _ => bail!("Unknown attestation token type. Must be Simple or Ear"), }; + // Setup RVPS either remotely or builtin + let rvps_config = match &test_parameters.rvps_type { + RvpsType::Builtin => RvpsConfig::BuiltIn(RvpsCrateConfig { + storage: ReferenceValueStorageConfig::LocalJson(local_json::Config { + file_path: rv_path, + }), + ..Default::default() + }), + RvpsType::Remote => { + info!("Starting Remote RVPS"); + let service = Rvps::new(RVPSConfig { + storage: ReferenceValueStorageConfig::LocalJson(local_json::Config { + file_path: rv_path, + }), + ..Default::default() + })?; + let inner = Arc::new(RwLock::new(service)); + let rvps_server = RvpsServer::new(inner.clone()); + + let rvps_future = Server::builder() + .add_service(ReferenceValueProviderServiceServer::new(rvps_server)) + .serve("127.0.0.1:50003".parse()?); + + tokio::spawn(rvps_future); + + RvpsConfig::GrpcRemote(RvpsRemoteConfig { + address: RVPS_URL.to_string(), + }) + } + }; + let kbs_config = KbsConfig { attestation_token: AttestationTokenVerifierConfig { trusted_certs_paths: vec![], @@ -91,7 +163,7 @@ impl TestHarness { attestation_service: AttestationConfig { attestation_service: AttestationServiceConfig::CoCoASBuiltIn(Config { work_dir: work_dir.path().to_path_buf(), - rvps_config: RvpsConfig::BuiltIn(RvpsCrateConfig::default()), + rvps_config, attestation_token_broker: attestation_token_config, }), timeout: 5, @@ -107,29 +179,44 @@ impl TestHarness { insecure_api: true, }, policy_engine: PolicyEngineConfig { - policy_path: policy_path.path().to_path_buf(), + policy_path: kbs_policy_path, }, plugins: vec![PluginsConfig::ResourceStorage(RepositoryConfig::LocalFs( LocalFsRepoDesc { - dir_path: resource_dir.path().to_str().unwrap().to_string(), + dir_path: resource_dir, }, ))], }; + // Spawn the KBS Server + let api_server = ApiServer::new(kbs_config.clone()).await?; + + let kbs_server = api_server.server()?; + let kbs_handle = kbs_server.handle(); + + tokio::spawn(kbs_server); Ok(TestHarness { kbs_config, auth_privkey, + kbs_server_handle: kbs_handle, + _work_dir: work_dir, _test_parameters: test_parameters, }) } + pub async fn cleanup(&self) -> Result<()> { + self.kbs_server_handle.stop(true).await; + + Ok(()) + } + pub async fn set_policy(&self, policy: PolicyType) -> Result<()> { info!("TEST: Setting Resource Policy"); let policy_bytes = match policy { PolicyType::AllowAll => ALLOW_ALL_POLICY.as_bytes().to_vec(), PolicyType::DenyAll => DENY_ALL_POLICY.as_bytes().to_vec(), - //PolicyType::Custom(p) => p.into_bytes(), + PolicyType::Custom(p) => p.into_bytes(), }; kbs_client::set_resource_policy( @@ -171,4 +258,19 @@ impl TestHarness { let duration = tokio::time::Duration::from_millis(WAIT_TIME); tokio::time::sleep(duration).await; } + + pub async fn set_reference_value(&self, key: String, value: String) -> Result<()> { + let provenance = json!({key: [value]}).to_string(); + let provenance = STANDARD.encode(provenance); + + let message = json!({ + "version": "0.1.0", + "type": "sample", + "payload": provenance + }); + + rvps_client::register("http://127.0.0.1:50003".to_string(), message.to_string()).await?; + + Ok(()) + } } diff --git a/integration-tests/tests/get_resource.rs b/integration-tests/tests/get_resource.rs index c4974e929..7b8ae8219 100644 --- a/integration-tests/tests/get_resource.rs +++ b/integration-tests/tests/get_resource.rs @@ -2,35 +2,47 @@ // Licensed under the Apache License, Version 2.0, see LICENSE for details. // SPDX-License-Identifier: Apache-2.0 -use kbs::ApiServer; - -use anyhow::Result; +use anyhow::{bail, Result}; use log::info; use rstest::rstest; use serial_test::serial; extern crate integration_tests; -use crate::integration_tests::common::{PolicyType, TestHarness, TestParameters}; +use crate::integration_tests::common::{PolicyType, RvpsType, TestHarness, TestParameters}; const SECRET_BYTES: &[u8; 8] = b"shhhhhhh"; const SECRET_PATH: &str = "default/test/secret"; #[rstest] -#[case::ear_allow_all(TestParameters{attestation_token_type: "Ear".to_string() })] -#[case::simple_allow_all(TestParameters{attestation_token_type: "Simple".to_string() })] +#[case::ear_allow_all(TestParameters{attestation_token_type: "Ear".to_string(), rvps_type: RvpsType::Builtin }, "allow_all".to_string())] +#[case::simple_allow_all(TestParameters{attestation_token_type: "Simple".to_string(), rvps_type: RvpsType::Builtin }, "allow_all".to_string())] +#[case::ear_deny_all(TestParameters{attestation_token_type: "Ear".to_string(), rvps_type: RvpsType::Builtin }, "deny_all".to_string())] +#[case::simple_deny_all(TestParameters{attestation_token_type: "Simple".to_string(), rvps_type: RvpsType::Builtin }, "deny_all".to_string())] +#[case::contraindicated(TestParameters{attestation_token_type: "Ear".to_string(), rvps_type: RvpsType::Builtin }, "contraindicated".to_string())] +#[case::not_contraindicated(TestParameters{attestation_token_type: "Ear".to_string(), rvps_type: RvpsType::Remote }, "not_contraindicated".to_string())] #[serial] -#[actix_rt::test] -async fn get_secret_allow_all(#[case] test_parameters: TestParameters) -> Result<()> { +#[tokio::test(flavor = "multi_thread", worker_threads = 4)] +async fn run_test( + #[case] test_parameters: TestParameters, + #[case] test_type: String, +) -> Result<()> { let _ = env_logger::try_init_from_env(env_logger::Env::new().default_filter_or("debug")); - let harness = TestHarness::new(test_parameters)?; - let api_server = ApiServer::new(harness.kbs_config.clone()).await?; + let harness = TestHarness::new(test_parameters).await?; - let kbs_server = api_server.server()?; - let kbs_handle = kbs_server.handle(); + let test_result = match test_type.as_str() { + "allow_all" => get_secret_allow_all(&harness).await, + "deny_all" => get_secret_deny_all(&harness).await, + "contraindicated" => get_secret_contraindicated(&harness).await, + "not_contraindicated" => get_secret_not_contraindicated(&harness).await, + _ => bail!("unkown test case"), + }; - actix_web::rt::spawn(kbs_server); + harness.cleanup().await?; + test_result +} +async fn get_secret_allow_all(harness: &TestHarness) -> Result<()> { harness.wait().await; harness .set_secret(SECRET_PATH.to_string(), SECRET_BYTES.as_ref().to_vec()) @@ -42,32 +54,47 @@ async fn get_secret_allow_all(#[case] test_parameters: TestParameters) -> Result assert_eq!(secret, SECRET_BYTES); info!("TEST: test completed succesfully"); - kbs_handle.stop(true).await; - Ok(()) } -#[rstest] -#[case::ear_deny_all(TestParameters{attestation_token_type: "Ear".to_string() })] -#[case::simple_deny_all(TestParameters{attestation_token_type: "Simple".to_string() })] -#[serial] -#[actix_rt::test] -async fn get_secret_deny_all(#[case] test_parameters: TestParameters) -> Result<()> { - let _ = env_logger::try_init_from_env(env_logger::Env::new().default_filter_or("debug")); - let harness = TestHarness::new(test_parameters)?; +async fn get_secret_deny_all(harness: &TestHarness) -> Result<()> { + harness.wait().await; + harness + .set_secret(SECRET_PATH.to_string(), SECRET_BYTES.as_ref().to_vec()) + .await?; + harness.set_policy(PolicyType::DenyAll).await?; + + let secret = harness.get_secret(SECRET_PATH.to_string()).await; + + assert!(secret.is_err()); + assert_eq!( + secret.unwrap_err().to_string(), + "request unauthorized".to_string() + ); + info!("TEST: test completed succesfully"); + + Ok(()) +} - let api_server = ApiServer::new(harness.kbs_config.clone()).await?; +const CHECK_CONTRAINDICATED_POLICY: &str = " +package policy +import rego.v1 - let kbs_server = api_server.server()?; - let kbs_handle = kbs_server.handle(); +default allow = false - actix_web::rt::spawn(kbs_server); +allow if { + input[\"submods\"][\"cpu\"][\"ear.status\"] != \"contraindicated\" +} +"; +async fn get_secret_contraindicated(harness: &TestHarness) -> Result<()> { harness.wait().await; harness .set_secret(SECRET_PATH.to_string(), SECRET_BYTES.as_ref().to_vec()) .await?; - harness.set_policy(PolicyType::DenyAll).await?; + harness + .set_policy(PolicyType::Custom(CHECK_CONTRAINDICATED_POLICY.to_string())) + .await?; let secret = harness.get_secret(SECRET_PATH.to_string()).await; @@ -78,7 +105,30 @@ async fn get_secret_deny_all(#[case] test_parameters: TestParameters) -> Result< ); info!("TEST: test completed succesfully"); - kbs_handle.stop(true).await; + Ok(()) +} + +async fn get_secret_not_contraindicated(harness: &TestHarness) -> Result<()> { + harness.wait().await; + harness + .set_secret(SECRET_PATH.to_string(), SECRET_BYTES.as_ref().to_vec()) + .await?; + harness + .set_policy(PolicyType::Custom(CHECK_CONTRAINDICATED_POLICY.to_string())) + .await?; + + // so this test will fail if run in an enclave. + harness + .set_reference_value("svn".to_string(), "1".to_string()) + .await?; + harness + .set_reference_value("launch_digest".to_string(), "abcde".to_string()) + .await?; + + let secret = harness.get_secret(SECRET_PATH.to_string()).await?; + + assert_eq!(secret, SECRET_BYTES); + info!("TEST: test completed succesfully"); Ok(()) }