Sample code for 30+ languages & platforms
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

PureBasic
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