use der::DateTime;
use mc_attestation_verifier::{
Evidence, EvidenceValue, EvidenceVerifier, TrustedIdentity, VerificationOutput, Verifier,
};
use super::super::certificate_chain::TlsCertificateChainVerifier;
#[derive(Debug)]
pub struct DcapVerifier {
verifier: EvidenceVerifier<TlsCertificateChainVerifier>,
}
pub type DcapVerifierOutput = EvidenceValue;
impl DcapVerifier {
pub fn new<I, ID>(trusted_identities: I, time: impl Into<Option<DateTime>>) -> Self
where
I: IntoIterator<Item = ID>,
ID: Into<TrustedIdentity>,
{
let certificate_verifier = TlsCertificateChainVerifier;
let verifier = EvidenceVerifier::new(certificate_verifier, trusted_identities, time);
Self { verifier }
}
pub fn verify(&self, evidence: &Evidence<Vec<u8>>) -> VerificationOutput<DcapVerifierOutput> {
self.verifier.verify(evidence)
}
}