Sample code for 30+ languages & platforms
Delphi ActiveX

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 Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
asn: TChilkatAsn;
strXml: WideString;
xml: TChilkatXml;
strBase64: WideString;
asn2: TChilkatAsn;
asn3: TChilkatAsn;

begin
success := 0;

asn := TChilkatAsn.Create(Self);

// Begin with loading ASN.1 from a binary DER/BER format file.
success := asn.LoadBinaryFile('/Users/chilkat/testData/p7b/test.p7b');
if (success <> 1) then
  begin
    Memo1.Lines.Add(asn.LastErrorText);
    Exit;
  end;

// Convert ASN.1 to XML:
strXml := asn.AsnToXml();
if (asn.LastMethodSuccess <> 1) then
  begin
    Memo1.Lines.Add(asn.LastErrorText);
    Exit;
  end;

// The XML returned by AsnToXml will be compact and not pretty-formatted.
// Use Chilkat XML to format the XML better:
xml := TChilkatXml.Create(Self);
success := xml.LoadXml(strXml);
// Assuming success for this example..
// This is formatted better for human viewing:
Memo1.Lines.Add(xml.GetXml());

// 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.
strBase64 := asn.GetEncodedDer('base64');

// Load the ASN.1 from XML:
asn2 := TChilkatAsn.Create(Self);
success := asn2.LoadAsnXml(xml.GetXml());
if (success <> 1) then
  begin
    Memo1.Lines.Add(asn2.LastErrorText);
    Exit;
  end;

// Load the ASN.1 from an encoded string, such as base64:
asn3 := TChilkatAsn.Create(Self);
success := asn3.LoadEncoded(strBase64,'base64');
if (success <> 1) then
  begin
    Memo1.Lines.Add(asn3.LastErrorText);
    Exit;
  end;
end;