use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
#[derive(utoipa::ToSchema)]
pub enum TeeType {
SevSnp,
Nitro,
Simulated,
}
impl std::fmt::Display for TeeType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
TeeType::SevSnp => write!(f, "sev_snp"),
TeeType::Nitro => write!(f, "nitro"),
TeeType::Simulated => write!(f, "simulated"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, utoipa::ToSchema)]
pub struct TeeStatus {
pub tee_type: TeeType,
pub detected: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub platform_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, utoipa::ToSchema)]
pub struct AttestationReport {
pub tee_type: TeeType,
pub evidence: String,
pub nonce: String,
pub generated_at: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub vta_did: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, utoipa::ToSchema)]
pub struct AttestationRequest {
pub nonce: String,
}