Use OpensslAuthority::new to create a certificate authority that issues TLS certificates for communicating with clients. This implementation uses the openssl crate for certificate generation and supports in-memory caching of generated ServerConfig objects to improve performance.
To initialize it, you need to provide a private key, a CA certificate, a hash algorithm (e.g., MessageDigest::sha256()), a maximum cache size, and a CryptoProvider (such as aws_lc_rs::default_provider()).
use hudsucker::;
use hudsucker::certificate_authority::OpensslAuthority;
use hudsucker::openssl::{hash::MessageDigest, pkey::PKey, x509::X509};
use hudsucker::rustls::crypto::aws_lc_rs;
let private_key_bytes: &[u8] = include_bytes!("../../examples/ca/hudsucker.key");
let ca_cert_bytes: &[u8] = include_bytes!("../../examples/ca/hudsucker.cer");
let private_key = PKey::private_key_from_pem(private_key_bytes).unwrap();
let ca_cert = X509::from_pem(ca_cert_bytes).unwrap();
let ca = OpensslAuthority::new(
private_key,
ca_cert,
MessageDigest::sha256(),
1_000, // cache_size
aws_lc_rs::default_provider(),
);