Building a Robust SVID Module
use spiffe::{SpiffeId, X509Svid, X509Bundle};
pub struct SvidInfo {
pub spiffe_id: String,
pub trust_domain: String,
pub path: String,
pub not_before: i64,
pub not_after: i64,
pub cert_size_bytes: usize,
pub key_size_bytes: usize,
pub bundle_cert_count: usize,
}
pub fn inspect(svid: &X509Svid, bundle: &X509Bundle) -> SvidInfo {
let id = svid.spiffe_id();
SvidInfo {
spiffe_id: id.to_string(),
trust_domain: id.trust_domain().to_string(),
path: id.path().to_string(),
not_before: ,
not_after: ,
cert_size_bytes: svid.cert_chain().iter().map(|c| c.len()).sum(),
key_size_bytes: svid.private_key().as_ref().len(),
bundle_cert_count: bundle.authorities().count(),
}
}
pub fn is_authorized(svid: &X509Svid, allowed: &[SpiffeId]) -> bool {
allowed.contains(svid.spiffe_id())
}