pub mod cosign;
pub mod github;
pub mod slsa;
use crate::Result;
use crate::bundle::ParsedBundle;
use async_trait::async_trait;
use std::path::Path;
#[derive(Debug, Clone, Default)]
pub struct Policy {
pub slsa_level: Option<u8>,
pub certificate_identity: Option<String>,
pub certificate_oidc_issuer: Option<String>,
pub signer_workflow: Option<String>,
pub allow_self_hosted: bool,
pub custom_policies: Vec<String>,
}
#[derive(Debug)]
pub struct VerificationResult {
pub success: bool,
pub slsa_level: Option<u8>,
pub certificate_identity: Option<String>,
pub builder_identity: Option<String>,
pub messages: Vec<String>,
}
#[async_trait]
pub trait Verifier: Send + Sync {
async fn verify(
&self,
bundle: &ParsedBundle,
artifact_path: &Path,
policy: &Policy,
) -> Result<VerificationResult>;
fn verifier_type(&self) -> &'static str;
}