Sample code for 30+ languages & platforms
Lianja

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

Lianja
llSuccess = .F.

// 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.
loJks = createobject("CkJavaKeyStore")
lcPassword = "secret"
llSuccess = loJks.LoadFile(lcPassword,"qa_data/jks/test_secret.jks")
if (llSuccess = .F.) then
    ? loJks.LastErrorText
    release loJks
    return
endif

// Make sure we have a private key.
if (loJks.NumPrivateKeys < 1) then
    ? "No private key available."
    release loJks
    return
endif

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

loChain = createobject("CkCertChain")
llSuccess = loJks.CertChainAt(0,loChain)
if (llSuccess = .F.) then
    ? loJks.LastErrorText
    release loJks
    release loChain
    return
endif

loCert = createobject("CkCert")
llSuccess = loChain.CertAt(0,loCert)
if (llSuccess = .F.) then
    ? loChain.LastErrorText
    release loJks
    release loChain
    release loCert
    return
endif

// Verify again that this cert has a private key.
if (loCert.HasPrivateKey() <> .T.) then
    ? "Certificate has no associated private key."
    release loJks
    release loChain
    release loCert
    return
endif

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

loCrypt = createobject("CkCrypt2")
llSuccess = loCrypt.SetSigningCert(loCert)
if (llSuccess = .F.) then
    ? loCrypt.LastErrorText
    release loJks
    release loChain
    release loCert
    release loCrypt
    return
endif

// ...
// ...


release loJks
release loChain
release loCert
release loCrypt