Xbase++ Requires Chilkat v11.0.0+
Xbase++
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 Xbase++ Downloads
LOCAL nSuccess
LOCAL oJks
LOCAL cPassword
LOCAL oChain
LOCAL oCert
LOCAL oCrypt
nSuccess := 0
// 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.
oJks := CreateObject("Chilkat.JavaKeyStore")
cPassword := "secret"
nSuccess := oJks:LoadFile(cPassword, "qa_data/jks/test_secret.jks")
IF (nSuccess == 0)
? oJks:LastErrorText
oJks:destroy()
RETURN
ENDIF
// Make sure we have a private key.
IF (oJks:NumPrivateKeys < 1)
? "No private key available."
oJks:destroy()
RETURN
ENDIF
// -------------------------------------------------------------------------
// Get the certificate chain associated with the 1st (and probably only) private key in the JKS.
oChain := CreateObject("Chilkat.CertChain")
nSuccess := oJks:CertChainAt(0, oChain)
IF (nSuccess == 0)
? oJks:LastErrorText
oJks:destroy()
oChain:destroy()
RETURN
ENDIF
oCert := CreateObject("Chilkat.Cert")
nSuccess := oChain:CertAt(0, oCert)
IF (nSuccess == 0)
? oChain:LastErrorText
oJks:destroy()
oChain:destroy()
oCert:destroy()
RETURN
ENDIF
// Verify again that this cert has a private key.
IF (oCert:HasPrivateKey() != 1)
? "Certificate has no associated private key."
oJks:destroy()
oChain:destroy()
oCert:destroy()
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..
oCrypt := CreateObject("Chilkat.Crypt2")
nSuccess := oCrypt:SetSigningCert(oCert)
IF (nSuccess == 0)
? oCrypt:LastErrorText
oJks:destroy()
oChain:destroy()
oCert:destroy()
oCrypt:destroy()
RETURN
ENDIF
// ...
// ...
oJks:destroy()
oChain:destroy()
oCert:destroy()
oCrypt:destroy()