Sample code for 30+ languages & platforms
DataFlex

Convert ASN.1 to/from Binary DER, XML, and Base64

Demonstrates how to convert ASN.1 from and to any of the following formats: binary DER, Base64, and XML.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoAsn
    String sStrXml
    Handle hoXml
    String sStrBase64
2    Handle hoAsn2
3    Handle hoAsn3
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatAsn)) To hoAsn
    If (Not(IsComObjectCreated(hoAsn))) Begin
        Send CreateComObject of hoAsn
    End

    // Begin with loading ASN.1 from a binary DER/BER format file.
    Get ComLoadBinaryFile Of hoAsn "/Users/chilkat/testData/p7b/test.p7b" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoAsn To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Convert ASN.1 to XML:
    Get ComAsnToXml Of hoAsn To sStrXml
    Get ComLastMethodSuccess Of hoAsn To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoAsn To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The XML returned by AsnToXml will be compact and not pretty-formatted.
    // Use Chilkat XML to format the XML better:
    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End
    Get ComLoadXml Of hoXml sStrXml To iSuccess
    // Assuming success for this example..
    // This is formatted better for human viewing:
    Get ComGetXml Of hoXml To sTemp1
    Showln sTemp1

    // Now get the ASN.1 in base64 format.  Any encoding supported
    // by Chilkat can be passed, such as "hex", "uu", "quoted-printable", "base32", "modbase64", etc.
    Get ComGetEncodedDer Of hoAsn "base64" To sStrBase64

    // Load the ASN.1 from XML:
    Get Create (RefClass(cComChilkatAsn)) To hoAsn2
    If (Not(IsComObjectCreated(hoAsn2))) Begin
        Send CreateComObject of hoAsn2
    End
    Get ComGetXml Of hoXml To sTemp1
    Get ComLoadAsnXml Of hoAsn2 sTemp1 To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoAsn2 To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Load the ASN.1 from an encoded string, such as base64:
    Get Create (RefClass(cComChilkatAsn)) To hoAsn3
    If (Not(IsComObjectCreated(hoAsn3))) Begin
        Send CreateComObject of hoAsn3
    End
    Get ComLoadEncoded Of hoAsn3 sStrBase64 "base64" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoAsn3 To sTemp1
        Showln sTemp1
        Procedure_Return
    End



End_Procedure