PureBasic
PureBasic
Convert Java KeyStore to PEM
See more Java KeyStore (JKS) Examples
Loads a Java keystore file and saves the trusted certificate entries to a PEM file.Chilkat PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkJavaKeyStore.pb"
IncludeFile "CkFileAccess.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
jks.i = CkJavaKeyStore::ckCreate()
If jks.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
jksPassword.s = "myJksPassword"
; Load the Java keystore from a file. The JKS file password is used
; to verify the keyed digest that is found at the very end of the keystore.
; It verifies that the keystore has not been modified.
success = CkJavaKeyStore::ckLoadFile(jks,jksPassword,"/someDir/keyStore.jks")
If success = 0
Debug CkJavaKeyStore::ckLastErrorText(jks)
CkJavaKeyStore::ckDispose(jks)
ProcedureReturn
EndIf
; Open/create the output PEM file.
; This example uses Chilkat's file access class for writing the output file.
; You may replace the file I/O lines of code with whatever is most convenient for you.
fac.i = CkFileAccess::ckCreate()
If fac.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkFileAccess::ckOpenForWrite(fac,"/pemFiles/caCerts.pem")
If success = 0
Debug CkFileAccess::ckLastErrorText(fac)
CkJavaKeyStore::ckDispose(jks)
CkFileAccess::ckDispose(fac)
ProcedureReturn
EndIf
numCerts.i = CkJavaKeyStore::ckNumTrustedCerts(jks)
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
pem.s
; Iterate over the trusted certs, get the PEM for each,
; and append it to the output file.
i.i = 0
While i < numCerts
CkJavaKeyStore::ckTrustedCertAt(jks,i,cert)
; Get the certificate in PEM format.
pem = CkCert::ckExportCertPem(cert)
; Append the PEM string to the open file.
success = CkFileAccess::ckAppendText(fac,pem,"utf-8")
If success <> 1
Debug CkFileAccess::ckLastErrorText(fac)
CkJavaKeyStore::ckDispose(jks)
CkFileAccess::ckDispose(fac)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
i = i + 1
Wend
; Close the output file.
CkFileAccess::ckFileClose(fac)
Debug "Trusted certificates saved to PEM."
CkJavaKeyStore::ckDispose(jks)
CkFileAccess::ckDispose(fac)
CkCert::ckDispose(cert)
ProcedureReturn
EndProcedure