use std::collections::BTreeMap;
use pki_types::CertificateDer;
#[cfg_attr(docsrs, doc(cfg(feature = "sigstore-trust-root")))]
#[cfg(feature = "sigstore-trust-root")]
pub mod sigstore;
pub trait TrustRoot {
fn fulcio_certs(&self) -> crate::errors::Result<Vec<CertificateDer<'_>>>;
fn rekor_keys(&self) -> crate::errors::Result<BTreeMap<String, &[u8]>>;
fn ctfe_keys(&self) -> crate::errors::Result<BTreeMap<String, &[u8]>>;
}
#[derive(Debug, Default)]
pub struct ManualTrustRoot<'a> {
pub fulcio_certs: Vec<CertificateDer<'a>>,
pub rekor_keys: BTreeMap<String, Vec<u8>>,
pub ctfe_keys: BTreeMap<String, Vec<u8>>,
}
impl<'a> TrustRoot for ManualTrustRoot<'a> {
fn fulcio_certs(&self) -> crate::errors::Result<Vec<CertificateDer<'a>>> {
Ok(self.fulcio_certs.clone())
}
fn rekor_keys(&self) -> crate::errors::Result<BTreeMap<String, &[u8]>> {
Ok(self
.rekor_keys
.iter()
.map(|(k, v)| (k.clone(), v.as_slice()))
.collect())
}
fn ctfe_keys(&self) -> crate::errors::Result<BTreeMap<String, &[u8]>> {
Ok(self
.ctfe_keys
.iter()
.map(|(k, v)| (k.clone(), v.as_slice()))
.collect())
}
}