Sample code for 30+ languages & platforms
Dart

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 Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final jks = CkJavaKeyStore();

  final troots = CkTrustedRoots();

  // Load certificates from a file.
  try {
    troots.loadCaCertsPem('qa_data/curl_cacert.pem');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final sbDn = CkStringBuilder();
  final sbAlias = CkStringBuilder();
  final caseSensitive = false;

  var i = 0;
  final numCerts = troots.numCerts;
  var numAdded = 0;
  while (i < numCerts) {
    final cacert = troots.getCert(i);
    sbDn.clear();
    sbDn.append(cacert.subjectDN);
    if (sbDn.contains('Entrust.net', caseSensitive)) {
      print(cacert.subjectDN);

      // The alias is an arbitrary unique string for each cert in the JKS.
      sbAlias.clear();
      sbAlias.append('cacert_');
      sbAlias.appendInt(i + 1);
      jks.addTrustedCert(cacert, sbAlias.getAsString());
      numAdded++;
    }

    i++;
  }

  // Verify the number of certs in the JKS equals the number we added.
  final numJksCerts = jks.numTrustedCerts;
  print('NumTrustedCerts = $numJksCerts');
  if (numJksCerts != numAdded) {
    print('Something is amiss!');
    return;
  }

  // Save the JKS.
  try {
    jks.toFile('myPassword', 'qa_data/jks/entrust_caCerts.jks');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('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.
}