PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkCertChain.pb"
IncludeFile "CkJavaKeyStore.pb"
IncludeFile "CkCrypt2.pb"
Procedure ChilkatExample()
success.i = 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.
jks.i = CkJavaKeyStore::ckCreate()
If jks.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
password.s = "secret"
success = CkJavaKeyStore::ckLoadFile(jks,password,"qa_data/jks/test_secret.jks")
If success = 0
Debug CkJavaKeyStore::ckLastErrorText(jks)
CkJavaKeyStore::ckDispose(jks)
ProcedureReturn
EndIf
; Make sure we have a private key.
If CkJavaKeyStore::ckNumPrivateKeys(jks) < 1
Debug "No private key available."
CkJavaKeyStore::ckDispose(jks)
ProcedureReturn
EndIf
; -------------------------------------------------------------------------
; Get the certificate chain associated with the 1st (and probably only) private key in the JKS.
chain.i = CkCertChain::ckCreate()
If chain.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJavaKeyStore::ckCertChainAt(jks,0,chain)
If success = 0
Debug CkJavaKeyStore::ckLastErrorText(jks)
CkJavaKeyStore::ckDispose(jks)
CkCertChain::ckDispose(chain)
ProcedureReturn
EndIf
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCertChain::ckCertAt(chain,0,cert)
If success = 0
Debug CkCertChain::ckLastErrorText(chain)
CkJavaKeyStore::ckDispose(jks)
CkCertChain::ckDispose(chain)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
; Verify again that this cert has a private key.
If CkCert::ckHasPrivateKey(cert) <> 1
Debug "Certificate has no associated private key."
CkJavaKeyStore::ckDispose(jks)
CkCertChain::ckDispose(chain)
CkCert::ckDispose(cert)
ProcedureReturn
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..
crypt.i = CkCrypt2::ckCreate()
If crypt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCrypt2::ckSetSigningCert(crypt,cert)
If success = 0
Debug CkCrypt2::ckLastErrorText(crypt)
CkJavaKeyStore::ckDispose(jks)
CkCertChain::ckDispose(chain)
CkCert::ckDispose(cert)
CkCrypt2::ckDispose(crypt)
ProcedureReturn
EndIf
; ...
; ...
CkJavaKeyStore::ckDispose(jks)
CkCertChain::ckDispose(chain)
CkCert::ckDispose(cert)
CkCrypt2::ckDispose(crypt)
ProcedureReturn
EndProcedure