#[cfg(feature = "cert-gen")]
mod cert_gen {
use rcgen::{CertificateParams, KeyPair, PKCS_ECDSA_P384_SHA384};
use rustls::pki_types::{CertificateDer, PrivateKeyDer, PrivatePkcs8KeyDer};
#[derive(Debug)]
pub struct SelfSignedCert {
pub cert_pem: String,
pub key_pem: String,
pub cert_der: CertificateDer<'static>,
pub key_der: PrivateKeyDer<'static>,
}
pub fn generate_self_signed_cert(domains: Vec<String>) -> Result<SelfSignedCert, rcgen::Error> {
let params = CertificateParams::new(domains)?;
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P384_SHA384)?;
let cert = params.self_signed(&key_pair)?;
let cert_pem = cert.pem();
let key_pem = key_pair.serialize_pem();
let cert_der = CertificateDer::from(cert.der().to_vec());
let key_der = PrivateKeyDer::Pkcs8(PrivatePkcs8KeyDer::from(key_pair.serialize_der()));
Ok(SelfSignedCert {
cert_pem,
key_pem,
cert_der,
key_der,
})
}
}
#[cfg(feature = "cert-gen")]
pub use cert_gen::{SelfSignedCert, generate_self_signed_cert};
#[cfg(feature = "lets-encrypt")]
pub mod acme;
#[cfg(feature = "tls")]
mod policy;
#[cfg(feature = "tls")]
pub use policy::TlsPolicy;