pub mod error;
pub mod policy;
pub mod store;
pub mod utils;
pub use x509_cert::{attr, ext, name, serial_number, time, Certificate, TbsCertificate, Version};
#[cfg(feature = "builder")]
pub use x509_cert::builder;
#[cfg(not(feature = "std"))]
use alloc::{boxed::Box, vec::Vec};
use crate::der::{Decode, DecodePem};
use crate::TightBeamError;
#[derive(Debug, Clone)]
pub enum CertificateSpec {
Pem(&'static str),
Der(&'static [u8]),
Built(Box<Certificate>),
}
impl TryFrom<CertificateSpec> for Certificate {
type Error = TightBeamError;
fn try_from(spec: CertificateSpec) -> Result<Self, Self::Error> {
match spec {
CertificateSpec::Pem(pem_str) => {
let cleaned = pem_str.lines().map(|l| l.trim()).collect::<Vec<_>>().join("\n");
Ok(Certificate::from_pem(cleaned.as_bytes())?)
}
CertificateSpec::Der(der_bytes) => Ok(Certificate::from_der(der_bytes)?),
CertificateSpec::Built(cert) => Ok(*cert),
}
}
}