Sample code for 30+ languages & platforms
PowerBuilder

Convert CRL PEM to XML

See more PEM Examples

Loads a CRL (Certificate Revocation List) from the PEM file format and converts to XML to allow for visual examination and parsing.

Note: This example requires Chilkat v9.5.0.77 or greater.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Pem
integer li_NumCrls
integer i
oleobject loo_Asn
oleobject loo_Xml
string ls_CrlBase64

li_Success = 0

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

// This example requires Chilkat v9.5.0.77 or greater.
loo_Pem = create oleobject
li_rc = loo_Pem.ConnectToNewObject("Chilkat.Pem")
if li_rc < 0 then
    destroy loo_Pem
    MessageBox("Error","Connecting to COM object failed")
    return
end if

loo_Pem.VerboseLogging = 1
li_Success = loo_Pem.LoadPemFile("qa_data/crl/sampleCrl.pem","password_not_used")
if li_Success <> 1 then
    Write-Debug loo_Pem.LastErrorText
    destroy loo_Pem
    return
end if

li_NumCrls = loo_Pem.NumCrls
i = 0

loo_Asn = create oleobject
li_rc = loo_Asn.ConnectToNewObject("Chilkat.Asn")

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")

do while i < li_NumCrls

    // Get the CRL as base64 (multi-line)
    ls_CrlBase64 = loo_Pem.GetEncodedItem("crl","","base64_mime",i)
    if loo_Pem.LastMethodSuccess <> 1 then
        Write-Debug loo_Pem.LastErrorText
        destroy loo_Pem
        destroy loo_Asn
        destroy loo_Xml
        return
    end if

    Write-Debug ls_CrlBase64

    li_Success = loo_Asn.LoadEncoded(ls_CrlBase64,"base64")
    if li_Success <> 1 then
        Write-Debug loo_Asn.LastErrorText
        destroy loo_Pem
        destroy loo_Asn
        destroy loo_Xml
        return
    end if

    // Convert ASN.1 to XML and load into xml and re-emit for pretty printing..
    loo_Xml.LoadXml(loo_Asn.AsnToXml())
    Write-Debug loo_Xml.GetXml()

    // Use this online tool to generate parsing code from CRL XML: 
    // Generate Parsing Code from XML

    Write-Debug "-------------------------------------"
    i = i + 1
loop


destroy loo_Pem
destroy loo_Asn
destroy loo_Xml