namespace StellaOps.AdvisoryAI.Attestation; /// /// Result of verifying an attestation. /// public sealed record AiAttestationVerificationResult { /// Whether verification succeeded. public required bool Valid { get; init; } /// Verification timestamp. public required DateTimeOffset VerifiedAt { get; init; } /// Signing key ID if signed. public string? SigningKeyId { get; init; } /// Key expiration if applicable. public DateTimeOffset? KeyExpiresAt { get; init; } /// Digest verification result. public bool DigestValid { get; init; } /// Signature verification result. public bool? SignatureValid { get; init; } /// Verification failure reason if invalid. public string? FailureReason { get; init; } /// /// Creates a successful verification result. /// public static AiAttestationVerificationResult Success( DateTimeOffset verifiedAt, string? signingKeyId = null, DateTimeOffset? keyExpiresAt = null) => new() { Valid = true, VerifiedAt = verifiedAt, SigningKeyId = signingKeyId, KeyExpiresAt = keyExpiresAt, DigestValid = true, SignatureValid = signingKeyId != null ? true : null }; /// /// Creates a failed verification result. /// public static AiAttestationVerificationResult Failure( DateTimeOffset verifiedAt, string reason, bool digestValid = false, bool? signatureValid = null) => new() { Valid = false, VerifiedAt = verifiedAt, DigestValid = digestValid, SignatureValid = signatureValid, FailureReason = reason }; }