use crate::attestation::report::AttestationReport;
use crate::config::TeeProvider;
use crate::errors::TeeError;
#[derive(Debug, Clone)]
pub struct VerifiedAttestation {
report: AttestationReport,
verified_by: TeeProvider,
}
impl VerifiedAttestation {
#[allow(dead_code)]
pub(crate) fn new(report: AttestationReport, verified_by: TeeProvider) -> Self {
Self {
report,
verified_by,
}
}
pub fn report(&self) -> &AttestationReport {
&self.report
}
pub fn verified_by(&self) -> TeeProvider {
self.verified_by
}
pub fn into_report(self) -> AttestationReport {
self.report
}
}
impl VerifiedAttestation {
#[cfg(any(test, feature = "test-utils"))]
pub fn new_for_test(report: AttestationReport, verified_by: TeeProvider) -> Self {
Self::new(report, verified_by)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum VerificationLevel {
Structural,
Cryptographic,
}
pub trait AttestationVerifier: Send + Sync {
fn verify(&self, report: &AttestationReport) -> Result<VerifiedAttestation, TeeError>;
fn supported_provider(&self) -> TeeProvider;
fn verification_level(&self) -> VerificationLevel {
VerificationLevel::Structural
}
}