Rust
Rust
Load Particular CA Certs into a Java KeyStore
See more Java KeyStore (JKS) Examples
Opens a PEM file containing many CA root certificates, and creates a Java keystore containing a subset of the certificates.Chilkat Rust Downloads
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let jks = chilkat::JavaKeyStore::new();
let troots = chilkat::TrustedRoots::new();
// Load certificates from a file.
if troots.load_ca_certs_pem("qa_data/curl_cacert.pem").is_err() {
println!("{}", troots.last_error_text());
return;
}
let sb_dn = chilkat::StringBuilder::new();
let sb_alias = chilkat::StringBuilder::new();
let case_sensitive = false;
let mut i = 0;
let num_certs = troots.num_certs();
let mut num_added = 0;
while i < num_certs {
let cacert = troots.get_cert(i).unwrap();
sb_dn.clear();
let _ = sb_dn.append(&cacert.subject_dn());
if sb_dn.contains("Entrust.net", case_sensitive) {
println!("{}", cacert.subject_dn());
// The alias is an arbitrary unique string for each cert in the JKS.
sb_alias.clear();
let _ = sb_alias.append("cacert_");
let _ = sb_alias.append_int(i + 1);
let _ = jks.add_trusted_cert(&cacert, &sb_alias.get_as_string().unwrap_or_default());
num_added = num_added + 1;
}
i = i + 1;
}
// Verify the number of certs in the JKS equals the number we added.
let num_jks_certs = jks.num_trusted_certs();
println!("NumTrustedCerts = {}", num_jks_certs);
if num_jks_certs != num_added {
println!("Something is amiss!");
return;
}
// Save the JKS.
if jks.to_file("myPassword", "qa_data/jks/entrust_caCerts.jks").is_err() {
println!("{}", jks.last_error_text());
return;
}
println!("Success.");
// The output of this program when tested was:
// C=US, O=Entrust.net, OU=www.entrust.net/CPS incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Secure Server Certification Authority
// O=Entrust.net, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), OU=(c) 1999 Entrust.net Limited, CN=Entrust.net Certification Authority (2048)
// C=US, O="Entrust, Inc.", OU=www.entrust.net/CPS is incorporated by reference, OU="(c) 2006 Entrust, Inc.", CN=Entrust Root Certification Authority
// NumTrustedCerts = 3
// Success.