diff --git a/bin/verify-attestation/src/main.rs b/bin/verify-attestation/src/main.rs index c7ae611..3eee26f 100644 --- a/bin/verify-attestation/src/main.rs +++ b/bin/verify-attestation/src/main.rs @@ -7,9 +7,9 @@ use anyhow::{bail, Context, Result}; use clap::Parser; use std::{fs, io::Read, path::PathBuf, str::FromStr, time::UNIX_EPOCH}; -use teepot::{ - quote::{error, tee_qv_get_collateral, verify_quote_with_collateral, QuoteVerificationResult}, - sgx::TcbLevel, +use teepot::quote::{ + error, tcblevel::TcbLevel, tee_qv_get_collateral, verify_quote_with_collateral, + QuoteVerificationResult, }; #[derive(Parser, Debug)] diff --git a/crates/teepot-vault/bin/tee-stress-client/src/main.rs b/crates/teepot-vault/bin/tee-stress-client/src/main.rs index 87dddae..a937869 100644 --- a/crates/teepot-vault/bin/tee-stress-client/src/main.rs +++ b/crates/teepot-vault/bin/tee-stress-client/src/main.rs @@ -11,7 +11,7 @@ use anyhow::{Context, Result}; use clap::Parser; use serde::{Deserialize, Serialize}; use std::time::Duration; -use teepot::sgx::{parse_tcb_levels, EnumSet, TcbLevel}; +use teepot::quote::tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}; use teepot_vault::{ client::vault::VaultConnection, server::{ diff --git a/crates/teepot-vault/bin/tee-vault-admin/src/main.rs b/crates/teepot-vault/bin/tee-vault-admin/src/main.rs index 782a3c2..08ef10e 100644 --- a/crates/teepot-vault/bin/tee-vault-admin/src/main.rs +++ b/crates/teepot-vault/bin/tee-vault-admin/src/main.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (c) 2023-2024 Matter Labs +// Copyright (c) 2023-2025 Matter Labs //! Server to handle requests to the Vault TEE @@ -17,7 +17,7 @@ use digest::get_digest; use rustls::ServerConfig; use sign::post_sign; use std::{net::Ipv6Addr, sync::Arc}; -use teepot::sgx::{parse_tcb_levels, EnumSet, TcbLevel}; +use teepot::quote::tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}; use teepot_vault::{ json::http::{SignRequest, VaultCommandRequest, DIGEST_URL}, server::{ diff --git a/crates/teepot-vault/bin/tee-vault-unseal/src/main.rs b/crates/teepot-vault/bin/tee-vault-unseal/src/main.rs index eac2869..9498699 100644 --- a/crates/teepot-vault/bin/tee-vault-unseal/src/main.rs +++ b/crates/teepot-vault/bin/tee-vault-unseal/src/main.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (c) 2023-2024 Matter Labs +// Copyright (c) 2023-2025 Matter Labs //! Server to initialize and unseal the Vault TEE. @@ -22,7 +22,7 @@ use std::path::PathBuf; use std::sync::{Arc, RwLock}; use std::time::Duration; use teepot::pki::make_self_signed_cert; -use teepot::sgx::{parse_tcb_levels, EnumSet, TcbLevel}; +use teepot::quote::tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}; use teepot_vault::client::{AttestationArgs, TeeConnection}; use teepot_vault::json::http::{Init, Unseal}; use teepot_vault::json::secrets::AdminConfig; diff --git a/crates/teepot-vault/src/client/mod.rs b/crates/teepot-vault/src/client/mod.rs index bf8dfa2..8235f8e 100644 --- a/crates/teepot-vault/src/client/mod.rs +++ b/crates/teepot-vault/src/client/mod.rs @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (c) 2023-2024 Matter Labs +// Copyright (c) 2023-2025 Matter Labs //! Helper functions for CLI clients to verify Intel SGX enclaves and other TEEs. @@ -25,11 +25,12 @@ use rustls::{ }; use sha2::{Digest, Sha256}; use std::{sync::Arc, time, time::Duration}; -use teepot::{quote::Report, sgx::Quote}; pub use teepot::{ + quote::tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}, quote::{verify_quote_with_collateral, QuoteVerificationResult}, - sgx::{parse_tcb_levels, sgx_ql_qv_result_t, EnumSet, TcbLevel}, + sgx::sgx_ql_qv_result_t, }; +use teepot::{quote::Report, sgx::Quote}; use tracing::{debug, error, info, trace, warn}; use x509_cert::{ der::{Decode as _, Encode as _}, diff --git a/crates/teepot-vault/src/client/vault.rs b/crates/teepot-vault/src/client/vault.rs index f6dc225..462d47d 100644 --- a/crates/teepot-vault/src/client/vault.rs +++ b/crates/teepot-vault/src/client/vault.rs @@ -30,10 +30,11 @@ use std::{ }; use teepot::quote::error::QuoteContext; pub use teepot::{ - quote::{verify_quote_with_collateral, QuoteVerificationResult}, - sgx::{ - parse_tcb_levels, sgx_gramine_get_quote, sgx_ql_qv_result_t, Collateral, EnumSet, TcbLevel, + quote::{ + tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}, + verify_quote_with_collateral, QuoteVerificationResult, }, + sgx::{sgx_gramine_get_quote, sgx_ql_qv_result_t, Collateral}, }; use tracing::{debug, error, info, trace}; diff --git a/crates/teepot-vault/src/server/attestation.rs b/crates/teepot-vault/src/server/attestation.rs index 8688e03..c710f96 100644 --- a/crates/teepot-vault/src/server/attestation.rs +++ b/crates/teepot-vault/src/server/attestation.rs @@ -9,10 +9,13 @@ use serde::{Deserialize, Serialize}; pub use teepot::{ quote::{ - attestation::get_quote_and_collateral, error::QuoteContext, get_quote, + attestation::get_quote_and_collateral, + error::QuoteContext, + get_quote, + tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}, verify_quote_with_collateral, QuoteVerificationResult, }, - sgx::{parse_tcb_levels, Collateral, EnumSet, TcbLevel}, + sgx::Collateral, }; /// Options and arguments needed to attest a TEE diff --git a/crates/teepot/src/pki/mod.rs b/crates/teepot/src/pki/mod.rs index b7e28d0..bed0cf6 100644 --- a/crates/teepot/src/pki/mod.rs +++ b/crates/teepot/src/pki/mod.rs @@ -2,9 +2,7 @@ // Copyright (c) 2023-2025 Matter Labs //! Create a private key and a signed and self-signed certificates - use crate::quote::{error::QuoteContext, get_quote}; -pub use crate::sgx::{parse_tcb_levels, sgx_ql_qv_result_t, EnumSet, TcbLevel}; use anyhow::{Context, Result}; use const_oid::{ db::rfc5280::{ID_KP_CLIENT_AUTH, ID_KP_SERVER_AUTH}, diff --git a/crates/teepot/src/quote/attestation.rs b/crates/teepot/src/quote/attestation.rs index f340e7b..a41c8de 100644 --- a/crates/teepot/src/quote/attestation.rs +++ b/crates/teepot/src/quote/attestation.rs @@ -3,11 +3,11 @@ //! Common attestation API for all TEEs -use crate::{ - quote::{ - error::QuoteContext, get_quote, verify_quote_with_collateral, QuoteVerificationResult, - }, - sgx::{Collateral, EnumSet, TcbLevel}, +use crate::quote::{ + error::QuoteContext, + get_quote, + tcblevel::{EnumSet, TcbLevel}, + verify_quote_with_collateral, Collateral, QuoteVerificationResult, }; use anyhow::{bail, Context, Result}; use intel_tee_quote_verification_rs::tee_qv_get_collateral; diff --git a/crates/teepot/src/quote/mod.rs b/crates/teepot/src/quote/mod.rs index 1542282..321aa08 100644 --- a/crates/teepot/src/quote/mod.rs +++ b/crates/teepot/src/quote/mod.rs @@ -8,6 +8,7 @@ pub mod attestation; pub mod error; +pub mod tcblevel; use crate::{ quote::error::{QuoteContext as _, QuoteError}, diff --git a/crates/teepot/src/sgx/tcblevel.rs b/crates/teepot/src/quote/tcblevel.rs similarity index 96% rename from crates/teepot/src/sgx/tcblevel.rs rename to crates/teepot/src/quote/tcblevel.rs index 2e05c92..f7b7990 100644 --- a/crates/teepot/src/sgx/tcblevel.rs +++ b/crates/teepot/src/quote/tcblevel.rs @@ -1,12 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (c) 2023-2024 Matter Labs +// Copyright (c) 2023-2025 Matter Labs //! Intel SGX Enclave TCB level wrapper use enumset::EnumSetType; use intel_tee_quote_verification_rs::sgx_ql_qv_result_t; -use std::fmt::{Display, Formatter}; -use std::str::FromStr; +use serde::{Deserialize, Serialize}; +use std::{ + fmt::{Display, Formatter}, + str::FromStr, +}; pub use enumset::EnumSet; diff --git a/crates/teepot/src/sgx/mod.rs b/crates/teepot/src/sgx/mod.rs index 9ae67c6..d5dba44 100644 --- a/crates/teepot/src/sgx/mod.rs +++ b/crates/teepot/src/sgx/mod.rs @@ -1,12 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (c) 2023-2024 Matter Labs +// Copyright (c) 2023-2025 Matter Labs // Copyright (c) The Enarx Project Developers https://github.com/enarx/sgx //! Intel SGX Enclave report structures. pub mod sign; -pub mod tcblevel; use crate::quote::error::QuoteContext; pub use crate::quote::error::QuoteError; @@ -17,7 +16,6 @@ use std::{ io::{Read, Write}, mem, }; -pub use tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}; /// Structure of a quote #[derive(Copy, Clone, Debug, AnyBitPattern)] diff --git a/crates/teepot/src/tdx/mod.rs b/crates/teepot/src/tdx/mod.rs index 09d6e4c..321c2d7 100644 --- a/crates/teepot/src/tdx/mod.rs +++ b/crates/teepot/src/tdx/mod.rs @@ -1,11 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 -// Copyright (c) 2023-2024 Matter Labs +// Copyright (c) 2023-2025 Matter Labs //! Intel TDX helper functions. pub mod rtmr; -pub use crate::sgx::tcblevel::{parse_tcb_levels, EnumSet, TcbLevel}; use crate::sgx::QuoteError; pub use intel_tee_quote_verification_rs::Collateral; use tdx_attest_rs::{tdx_att_get_quote, tdx_attest_error_t, tdx_report_data_t};