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