Sample code for 30+ languages & platforms
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

Rust

// 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.