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

Get the Certificate with Private Key from a Java KeyStore

See more Java KeyStore (JKS) Examples

Load a Chilkat certificate object from a Java KeyStore.

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.

  // Most of the time a .jks contains one certificate with it's associated private key.
  // (Similar to how a .pfx/.p12 usually contains a particular certificate with private key.)
  // This example demonstrates how to get the certificate with private key such that it can be used
  // by other Chilkat classes wherever a cert w/ private key is needed.
  final jks = CkJavaKeyStore();
  final password = 'secret';
  try {
    jks.loadFile(password, 'qa_data/jks/test_secret.jks');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Make sure we have a private key.
  if (jks.numPrivateKeys < 1) {
    print('No private key available.');
    return;
  }

  // -------------------------------------------------------------------------
  // Get the certificate chain associated with the 1st (and probably only) private key in the JKS.

  final chain = CkCertChain();
  try {
    jks.certChainAt(0, chain);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final cert = CkCert();
  try {
    chain.certAt(0, cert);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Verify again that this cert has a private key.
  if (!cert.hasPrivateKey()) {
    print('Certificate has no associated private key.');
    return;
  }

  // We now have the cert object with it's associated private key, and it can be used in other Chilkat classes where needed.
  // For example..

  final crypt = CkCrypt2();
  try {
    crypt.setSigningCert(cert);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // ...
  // ...
}