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