Sample code for 30+ languages & platforms
PowerBuilder

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 PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Jks
string ls_JksPassword
oleobject loo_Fac
integer li_NumCerts
oleobject loo_Cert
string ls_Pem
integer i

li_Success = 0

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loo_Jks = create oleobject
li_rc = loo_Jks.ConnectToNewObject("Chilkat.JavaKeyStore")
if li_rc < 0 then
    destroy loo_Jks
    MessageBox("Error","Connecting to COM object failed")
    return
end if

ls_JksPassword = "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.
li_Success = loo_Jks.LoadFile(ls_JksPassword,"/someDir/keyStore.jks")
if li_Success = 0 then
    Write-Debug loo_Jks.LastErrorText
    destroy loo_Jks
    return
end if

// 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.
loo_Fac = create oleobject
li_rc = loo_Fac.ConnectToNewObject("Chilkat.FileAccess")

li_Success = loo_Fac.OpenForWrite("/pemFiles/caCerts.pem")
if li_Success = 0 then
    Write-Debug loo_Fac.LastErrorText
    destroy loo_Jks
    destroy loo_Fac
    return
end if

li_NumCerts = loo_Jks.NumTrustedCerts

loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")

// Iterate over the trusted certs, get the PEM for each,
// and append it to the output file.
i = 0
do while i < li_NumCerts
    loo_Jks.TrustedCertAt(i,loo_Cert)

    // Get the certificate in PEM format.  
    ls_Pem = loo_Cert.ExportCertPem()

    // Append the PEM string to the open file.
    li_Success = loo_Fac.AppendText(ls_Pem,"utf-8")
    if li_Success <> 1 then
        Write-Debug loo_Fac.LastErrorText
        destroy loo_Jks
        destroy loo_Fac
        destroy loo_Cert
        return
    end if

    i = i + 1
loop

// Close the output file.
loo_Fac.FileClose()

Write-Debug "Trusted certificates saved to PEM."


destroy loo_Jks
destroy loo_Fac
destroy loo_Cert