// ----------------------------------------------------------------------------- // PolicyDecisionAttestationOptions.cs // Sprint: SPRINT_3801_0001_0001_policy_decision_attestation // Description: Configuration options for policy decision attestation service. // ----------------------------------------------------------------------------- using System; using System.ComponentModel.DataAnnotations; namespace StellaOps.Policy.Engine.Attestation; /// /// Configuration options for . /// public sealed class PolicyDecisionAttestationOptions { /// /// Configuration section name. /// public const string SectionName = "PolicyDecisionAttestation"; /// /// Whether attestation creation is enabled. /// public bool Enabled { get; set; } = true; /// /// Whether to use the Signer service for signing. /// If false, attestations will be created unsigned (for dev/test only). /// public bool UseSignerService { get; set; } = true; /// /// Default key ID to use for signing (null = use signer default). /// public string? DefaultKeyId { get; set; } /// /// Whether to submit attestations to Rekor by default. /// public bool SubmitToRekorByDefault { get; set; } = false; /// /// Rekor server URL (null = use default Sigstore Rekor). /// public string? RekorUrl { get; set; } /// /// Default TTL for attestation validity (hours). /// [Range(1, 8760)] // 1 hour to 1 year public int DefaultTtlHours { get; set; } = 24; /// /// Whether to include evidence references by default. /// public bool IncludeEvidenceRefs { get; set; } = true; /// /// Whether to include gate details in attestations. /// public bool IncludeGateDetails { get; set; } = true; /// /// Whether to include violation details in attestations. /// public bool IncludeViolationDetails { get; set; } = true; /// /// Maximum number of violations to include in an attestation. /// [Range(1, 1000)] public int MaxViolationsToInclude { get; set; } = 100; /// /// Whether to log attestation creation events. /// public bool EnableAuditLogging { get; set; } = true; /// /// Timeout for signer service calls (seconds). /// [Range(1, 300)] public int SignerTimeoutSeconds { get; set; } = 30; /// /// Timeout for Rekor submissions (seconds). /// [Range(1, 300)] public int RekorTimeoutSeconds { get; set; } = 60; }