Sample code for 30+ languages & platforms
PureBasic Requires Chilkat v11.0.0+

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