use std::time::Duration;
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ClockSource {
RealTimeClock,
FileMetadata,
LogRecord,
NetworkProtocol,
ApplicationEmbedded,
TransparencyLog,
TpmEventLog,
SequenceOnly,
Reconstructed,
Unknown,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum TrustGrade {
ExternallyAttested,
LocallyAttested,
CustodialThirdParty,
LocalSubsystem,
LocalApplication,
OrderingOnly,
Reconstructed,
Unknown,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum TamperResistance {
AppendOnlyAttested,
AppendOnlyLocal,
SignedImmutable,
AdminWritable,
UserWritable,
Trivial,
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum AuthMechanism {
Rfc3161,
Sigstore,
TpmPcr,
ApfsSecureEnclave,
JournaldFss,
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ClockProvenance {
pub source: ClockSource,
pub trust_grade: TrustGrade,
pub tamper_resistance: TamperResistance,
pub ordering_only: bool,
pub skew_known: Option<Duration>,
pub authenticated: Option<AuthMechanism>,
}