use crate::error::AppError;
use super::types::{AttestationReport, TeeStatus, TeeType};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StructuralCheckOutcome {
StructurallyValid,
Malformed,
}
pub trait TeeProvider: Send + Sync {
fn tee_type(&self) -> TeeType;
fn detect(&self) -> Result<TeeStatus, AppError>;
fn attest(&self, user_data: &[u8], nonce: &[u8]) -> Result<AttestationReport, AppError>;
fn smoke_check_structure(
&self,
report: &AttestationReport,
) -> Result<StructuralCheckOutcome, AppError>;
}