Sample code for 30+ languages & platforms
Dart

Download and Trust the DigiCert Global Root CA

See more Certificates Examples

Demonstrates how to download a root certificate and trust it.

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.

  // In this example, the URLs for the DigiCert root CA certs are available at this web page:
  // https://www.digicert.com/digicert-root-certificates.htm

  // This example downloads the "DigiCert Global Root G3"
  // Valid until: 15/Jan/2038
  // Serial #: 05:55:56:BC:F2:5E:A4:35:35:C3:A4:0F:D5:AB:45:72
  // Thumbprint: 7E04DE896A3E666D00E687D33FFAD93BE83D349E

  final certUrl = 'https://dl.cacerts.digicert.com/DigiCertGlobalRootG3.crt';

  final http = CkHttp();
  final bdCert = CkBinData();
  try {
    http.downloadBd(certUrl, bdCert);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Load it into a Chilkat cert object.
  final cert = CkCert();
  try {
    cert.loadFromBd(bdCert);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Examine the common name,serial, and thumbprint:
  print('CN: ${cert.subjectCN}');
  print('Serial: ${cert.serialNumber}');
  print('Thumbprint: ${cert.sha1Thumbprint}');

  // Output from the above:
  // CN: DigiCert Global Root G3
  // Serial: 055556BCF25EA43535C3A40FD5AB4572
  // Thumbprint: 7E04DE896A3E666D00E687D33FFAD93BE83D349E

  // If desired, the certificate can be saved to a local file so it does not need
  // to be downloaded from the website every time.  
  final certPath = 'qa_data/certs/DigiCertGlobalRootG3.crt';
  bdCert.writeFile(certPath);

  // To load the cert from a file...
  cert.loadFromFile(certPath);

  // Do the following to add the cert to the collection of trusted roots
  // for this application.  (Note:  The trust is not persisted.  Each time the
  // application runs, it should load the cert (from whatever source, whether it is
  // a file, a database,etc.) and do the following:
  final troots = CkTrustedRoots();

  troots.addCert(cert);
  troots.activate();

  print('${cert.subjectCN} is now trusted for this run of this application.');
}