@@ -0,0 +1,3 @@
|
||||
/target
|
||||
/Cargo.lock
|
||||
/out
|
||||
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "ca-certificates"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
x509-parser = "0.18"
|
||||
pem = "3"
|
||||
+2919
File diff suppressed because it is too large
Load Diff
+32
@@ -0,0 +1,32 @@
|
||||
use pem::Pem;
|
||||
|
||||
static BUNDLE: &[u8] = include_bytes!("../data/mozilla.txt");
|
||||
|
||||
fn main() {
|
||||
_ = std::fs::remove_dir_all("./out");
|
||||
std::fs::create_dir("./out").unwrap();
|
||||
|
||||
for cert in x509_parser::pem::Pem::iter_from_buffer(BUNDLE) {
|
||||
let cert = cert.unwrap();
|
||||
let cert = cert.parse_x509().unwrap();
|
||||
let common_name = cert
|
||||
.subject()
|
||||
.iter_common_name()
|
||||
.next()
|
||||
.map(|x| x.as_str().ok())
|
||||
.flatten();
|
||||
let cert_name = match common_name {
|
||||
Some(common_name) => common_name.to_string(),
|
||||
None => cert.raw_serial_as_string(),
|
||||
};
|
||||
let file_name = cert_name
|
||||
.replace(":", "_")
|
||||
.replace(" ", "_")
|
||||
.replace(".", "_");
|
||||
std::fs::write(
|
||||
format!("./out/{file_name}.pem"),
|
||||
pem::encode(&Pem::new("CERTIFICATE", cert.as_raw())).as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user