use rcgen;
use std::fs;
use std::path::Path;
pub fn generate_dev_certs() -> Result<(), Box<dyn std::error::Error>> {
let certs_dir = Path::new("assets/certs");
fs::create_dir_all(certs_dir)?;
if certs_dir.join("cert.pem").exists() && certs_dir.join("private_key.der").exists() {
println!("cargo:warning=Development certificates already exist, skipping generation");
return Ok(());
}
println!("cargo:warning=Generating development certificates for embedding...");
let subject_alt_names = vec![
"localhost".to_string(),
"*.unison.svc.cluster.local".to_string(),
"dev.chronista.club".to_string(),
];
let cert_key = rcgen::generate_simple_self_signed(subject_alt_names)?;
let cert_pem = cert_key.cert.pem();
fs::write(certs_dir.join("cert.pem"), cert_pem)?;
let private_key_der = cert_key.key_pair.serialize_der();
fs::write(certs_dir.join("private_key.der"), private_key_der)?;
let private_key_pem = cert_key.key_pair.serialize_pem();
fs::write(certs_dir.join("private_key.pem"), private_key_pem)?;
let cert_der = cert_key.cert.der();
fs::write(certs_dir.join("cert.der"), cert_der)?;
println!("cargo:warning=Development certificates generated successfully");
println!("cargo:rerun-if-changed=build_certs.rs");
println!("cargo:rerun-if-changed=assets/certs/cert.pem");
println!("cargo:rerun-if-changed=assets/certs/private_key.der");
Ok(())
}