Sample code for 30+ languages & platforms
Lianja

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

Lianja
llSuccess = .F.

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loJks = createobject("CkJavaKeyStore")

loTroots = createobject("CkTrustedRoots")

// Load certificates from a file.
llSuccess = loTroots.LoadCaCertsPem("qa_data/curl_cacert.pem")
if (llSuccess <> .T.) then
    ? loTroots.LastErrorText
    release loJks
    release loTroots
    return
endif

loSbDn = createobject("CkStringBuilder")
loSbAlias = createobject("CkStringBuilder")
llCaseSensitive = .F.

i = 0
lnNumCerts = loTroots.NumCerts
lnNumAdded = 0
do while (i < lnNumCerts)
    loCacert = loTroots.GetCert(i)
    loSbDn.Clear()
    loSbDn.Append(loCacert.SubjectDN)
    if (loSbDn.Contains("Entrust.net",llCaseSensitive) = .T.) then
        ? loCacert.SubjectDN

        // The alias is an arbitrary unique string for each cert in the JKS.
        loSbAlias.Clear()
        loSbAlias.Append("cacert_")
        loSbAlias.AppendInt(i + 1)
        loJks.AddTrustedCert(loCacert,loSbAlias.GetAsString())
        lnNumAdded = lnNumAdded + 1
    endif

    release loCacert
    i = i + 1
enddo

// Verify the number of certs in the JKS equals the number we added.
lnNumJksCerts = loJks.NumTrustedCerts
? "NumTrustedCerts = " + str(lnNumJksCerts)
if (lnNumJksCerts <> lnNumAdded) then
    ? "Something is amiss!"
    release loJks
    release loTroots
    release loSbDn
    release loSbAlias
    return
endif

// Save the JKS.
llSuccess = loJks.ToFile("myPassword","qa_data/jks/entrust_caCerts.jks")
if (llSuccess <> .T.) then
    ? loJks.LastErrorText
    release loJks
    release loTroots
    release loSbDn
    release loSbAlias
    return
endif

? "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.


release loJks
release loTroots
release loSbDn
release loSbAlias