DataFlex
DataFlex
Load PEM ASN.1 and Convert to XML
See more ASN.1 Examples
Loads a CSR (Certificate Signing Request) from PEM and converts the ASN.1 to XML format. The purpose of this example is to compare the ASN.1 format with the corresponding XML. One means for accessing a particular piece of information within any ASN.1 document is to convert to XML, and then use any XML API to extract the required data.The PEM used in this example may be downloaded here: Sample CSR PEM
It contains ASN.1 with this format:
After converting, the XML looks like this:
<?xml version="1.0" encoding="utf-8" ?>
<sequence>
<sequence>
<int>00</int>
<sequence>
<set>
<sequence>
<oid>2.5.4.6</oid>
<printable>US</printable>
</sequence>
</set>
<set>
<sequence>
<oid>2.5.4.8</oid>
<utf8>Utah</utf8>
</sequence>
</set>
<set>
<sequence>
<oid>2.5.4.7</oid>
<utf8>Lindon</utf8>
</sequence>
</set>
<set>
<sequence>
<oid>2.5.4.10</oid>
<utf8>DigiCert Inc.</utf8>
</sequence>
</set>
<set>
<sequence>
<oid>2.5.4.11</oid>
<utf8>DigiCert</utf8>
</sequence>
</set>
<set>
<sequence>
<oid>2.5.4.3</oid>
<utf8>example.digicert.com</utf8>
</sequence>
</set>
</sequence>
<sequence>
<sequence>
<oid>1.2.840.113549.1.1.1</oid>
<null />
</sequence>
<bits n="2160">3082010A0282010... </bits>
</sequence>
<contextSpecific tag="0" constructed="1" />
</sequence>
<sequence>
<oid>1.2.840.113549.1.1.5</oid>
<null />
</sequence>
<bits n="2048">1D2472B15C7129850E6... </bits>
</sequence>
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoPem
String sPassword
String sItemType
String sItemSubType
String sEncoding
Integer iIndex
String sCsrBase64
Handle hoAsnRoot
String sAsnXml
Handle hoXmlObj
String sTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Move False To iSuccess
Get Create (RefClass(cComChilkatPem)) To hoPem
If (Not(IsComObjectCreated(hoPem))) Begin
Send CreateComObject of hoPem
End
// Load the PEM file. The password is ignored because it is not an encrypted PEM.
Move "notRequired" To sPassword
Get ComLoadPemFile Of hoPem "qa_data/asn/sampleCsr.pem" sPassword To iSuccess
// Get the CSR in base64 format:
Move "csr" To sItemType
Move "" To sItemSubType
Move "base64" To sEncoding
Move 0 To iIndex
Get ComGetEncodedItem Of hoPem sItemType sItemSubType sEncoding iIndex To sCsrBase64
// Load the CSR base64 string into the ASN object
Get Create (RefClass(cComChilkatAsn)) To hoAsnRoot
If (Not(IsComObjectCreated(hoAsnRoot))) Begin
Send CreateComObject of hoAsnRoot
End
Get ComLoadEncoded Of hoAsnRoot sCsrBase64 "base64" To iSuccess
If (iSuccess <> True) Begin
Get ComLastErrorText Of hoAsnRoot To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the ASN.1 in (Chilkat's) XML format:
Get ComAsnToXml Of hoAsnRoot To sAsnXml
// The XML returned by AsnToXml is one long difficult-to-read string
// with no linebreaks. It is meant to be compact.
// To get the XML in pretty, human-readable, indented form,
// load into the Chilkat XML object an then retrieve:
Get Create (RefClass(cComChilkatXml)) To hoXmlObj
If (Not(IsComObjectCreated(hoXmlObj))) Begin
Send CreateComObject of hoXmlObj
End
Get ComLoadXml Of hoXmlObj sAsnXml To iSuccess
Get ComGetXml Of hoXmlObj To sAsnXml
Showln sAsnXml
End_Procedure