Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loJks
LOCAL loTroots
LOCAL loSbDn
LOCAL loSbAlias
LOCAL lnCaseSensitive
LOCAL i
LOCAL lnNumCerts
LOCAL lnNumAdded
LOCAL loCacert
LOCAL lnNumJksCerts

lnSuccess = 0

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

loJks = CreateObject('Chilkat.JavaKeyStore')

loTroots = CreateObject('Chilkat.TrustedRoots')

* Load certificates from a file.
lnSuccess = loTroots.LoadCaCertsPem("qa_data/curl_cacert.pem")
IF (lnSuccess <> 1) THEN
    ? loTroots.LastErrorText
    RELEASE loJks
    RELEASE loTroots
    CANCEL
ENDIF

loSbDn = CreateObject('Chilkat.StringBuilder')
loSbAlias = CreateObject('Chilkat.StringBuilder')
lnCaseSensitive = 0

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",lnCaseSensitive) = 1) 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
    CANCEL
ENDIF

* Save the JKS.
lnSuccess = loJks.ToFile("myPassword","qa_data/jks/entrust_caCerts.jks")
IF (lnSuccess <> 1) THEN
    ? loJks.LastErrorText
    RELEASE loJks
    RELEASE loTroots
    RELEASE loSbDn
    RELEASE loSbAlias
    CANCEL
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