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