Sample code for 30+ languages & platforms
Visual FoxPro

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

Visual FoxPro
LOCAL lnSuccess
LOCAL loJks
LOCAL lcPassword
LOCAL loChain
LOCAL loCert
LOCAL loCrypt

lnSuccess = 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.
loJks = CreateObject('Chilkat.JavaKeyStore')
lcPassword = "secret"
lnSuccess = loJks.LoadFile(lcPassword,"qa_data/jks/test_secret.jks")
IF (lnSuccess = 0) THEN
    ? loJks.LastErrorText
    RELEASE loJks
    CANCEL
ENDIF

* Make sure we have a private key.
IF (loJks.NumPrivateKeys < 1) THEN
    ? "No private key available."
    RELEASE loJks
    CANCEL
ENDIF

* -------------------------------------------------------------------------
* Get the certificate chain associated with the 1st (and probably only) private key in the JKS.

loChain = CreateObject('Chilkat.CertChain')
lnSuccess = loJks.CertChainAt(0,loChain)
IF (lnSuccess = 0) THEN
    ? loJks.LastErrorText
    RELEASE loJks
    RELEASE loChain
    CANCEL
ENDIF

loCert = CreateObject('Chilkat.Cert')
lnSuccess = loChain.CertAt(0,loCert)
IF (lnSuccess = 0) THEN
    ? loChain.LastErrorText
    RELEASE loJks
    RELEASE loChain
    RELEASE loCert
    CANCEL
ENDIF

* Verify again that this cert has a private key.
IF (loCert.HasPrivateKey() <> 1) THEN
    ? "Certificate has no associated private key."
    RELEASE loJks
    RELEASE loChain
    RELEASE loCert
    CANCEL
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..

loCrypt = CreateObject('Chilkat.Crypt2')
lnSuccess = loCrypt.SetSigningCert(loCert)
IF (lnSuccess = 0) THEN
    ? loCrypt.LastErrorText
    RELEASE loJks
    RELEASE loChain
    RELEASE loCert
    RELEASE loCrypt
    CANCEL
ENDIF

* ...
* ...

RELEASE loJks
RELEASE loChain
RELEASE loCert
RELEASE loCrypt