part #2
This commit is contained in:
@@ -88,86 +88,3 @@ public interface IAiAttestationService
|
||||
int limit = 100,
|
||||
CancellationToken ct = default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Result of creating an attestation.
|
||||
/// </summary>
|
||||
public sealed record AiAttestationResult
|
||||
{
|
||||
/// <summary>Attestation ID.</summary>
|
||||
public required string AttestationId { get; init; }
|
||||
|
||||
/// <summary>Content digest.</summary>
|
||||
public required string Digest { get; init; }
|
||||
|
||||
/// <summary>Whether the attestation was signed.</summary>
|
||||
public bool Signed { get; init; }
|
||||
|
||||
/// <summary>DSSE envelope if signed.</summary>
|
||||
public string? DsseEnvelope { get; init; }
|
||||
|
||||
/// <summary>Storage URI.</summary>
|
||||
public string? StorageUri { get; init; }
|
||||
|
||||
/// <summary>Creation timestamp.</summary>
|
||||
public required DateTimeOffset CreatedAt { get; init; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Result of verifying an attestation.
|
||||
/// </summary>
|
||||
public sealed record AiAttestationVerificationResult
|
||||
{
|
||||
/// <summary>Whether verification succeeded.</summary>
|
||||
public required bool Valid { get; init; }
|
||||
|
||||
/// <summary>Verification timestamp.</summary>
|
||||
public required DateTimeOffset VerifiedAt { get; init; }
|
||||
|
||||
/// <summary>Signing key ID if signed.</summary>
|
||||
public string? SigningKeyId { get; init; }
|
||||
|
||||
/// <summary>Key expiration if applicable.</summary>
|
||||
public DateTimeOffset? KeyExpiresAt { get; init; }
|
||||
|
||||
/// <summary>Digest verification result.</summary>
|
||||
public bool DigestValid { get; init; }
|
||||
|
||||
/// <summary>Signature verification result.</summary>
|
||||
public bool? SignatureValid { get; init; }
|
||||
|
||||
/// <summary>Verification failure reason if invalid.</summary>
|
||||
public string? FailureReason { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates a successful verification result.
|
||||
/// </summary>
|
||||
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
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Creates a failed verification result.
|
||||
/// </summary>
|
||||
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
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user