Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

Use a Custom Set of Trusted Root Certificates

See more Certificates Examples

Demonstrates how to build a set of trusted root certificates to be used globally by all Chilkat classes.

Chilkat Dart Downloads

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

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

  final trustedRoots = CkTrustedRoots();

  //  Indicate that we will NOT trust any pre-installed certificates on the system.
  trustedRoots.trustSystemCaRoots = false;

  // Thawte is a certificate authority that provides a .zip download of their
  // root CA certificates:  https://www.thawte.com/roots/index.html
  // The direct download link is: https://www.verisign.com/support/thawte-roots.zip
  // Note: The above URLs are valid at the time of writing this example (29-May-2015).

  // Assuming the .zip has already been downloaded, open it and load each .pem file into
  // our trusted roots object.
  final zip = CkZip();

  // Open a .zip containing PEM files, among other things..
  try {
    zip.openZip('qa_data/certs/thawte-roots.zip');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final entry = CkZipEntry();
  var pemStr = '';
  final cert = CkCert();

  final pattern = '*.pem';
  var bHasMoreEntries = true;
  try {
    zip.entryMatching(pattern, entry);
  } on ChilkatException {
    bHasMoreEntries = false;
  }
  while (bHasMoreEntries) {

    print('Entry: ${entry.fileName}');

    // Get the PEM of the CA cert:
    pemStr = entry.unzipToString(0, 'utf-8');

    // Load it into a certificate object:
    try {
      cert.loadPem(pemStr);
    } on ChilkatException catch (e) {
      print(e.lastErrorText);
    }

    // Add it to the trusted roots.
    trustedRoots.addCert(cert);

    bHasMoreEntries = true;
    try {
      entry.getNextMatch(pattern);
    } on ChilkatException {
      bHasMoreEntries = false;
    }
  }

  //  Activate the trusted roots globally for all Chilkat objects.
  //  This call really shouldn't fail, so we're not checking the return value.
  trustedRoots.activate();
}