Skip to content

Commit 334e03c

Browse files
committed
new simple example for rcgen
split off from rustls#185
1 parent 0318d2f commit 334e03c

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

rcgen/examples/simple.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#![allow(clippy::complexity, clippy::style, clippy::pedantic)]
2+
3+
use rcgen::{date_time_ymd, Certificate, CertificateParams, DistinguishedName, DnType, SanType};
4+
use std::fs;
5+
6+
fn main() -> Result<(), Box<dyn std::error::Error>> {
7+
let mut params: CertificateParams = Default::default();
8+
params.not_before = date_time_ymd(1975, 01, 01);
9+
params.not_after = date_time_ymd(4096, 01, 01);
10+
params.distinguished_name = DistinguishedName::new();
11+
params
12+
.distinguished_name
13+
.push(DnType::OrganizationName, "Crab widgits SE");
14+
params
15+
.distinguished_name
16+
.push(DnType::CommonName, "Master Cert");
17+
params.subject_alt_names = vec![
18+
SanType::DnsName("crabs.crabs".to_string()),
19+
SanType::DnsName("localhost".to_string()),
20+
];
21+
22+
let cert = Certificate::from_params(params)?;
23+
24+
let pem_serialized = cert.serialize_pem()?;
25+
let pem = pem::parse(&pem_serialized)?;
26+
let der_serialized = pem.contents();
27+
println!("{pem_serialized}");
28+
println!("{}", cert.serialize_private_key_pem());
29+
std::fs::create_dir_all("certs/")?;
30+
fs::write("certs/cert.pem", &pem_serialized.as_bytes())?;
31+
fs::write("certs/cert.der", &der_serialized)?;
32+
fs::write(
33+
"certs/key.pem",
34+
&cert.serialize_private_key_pem().as_bytes(),
35+
)?;
36+
fs::write("certs/key.der", &cert.serialize_private_key_der())?;
37+
Ok(())
38+
}

0 commit comments

Comments
 (0)