Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Write PKCS1 or PKCS8 Public Key PEM

See more PEM Examples

Demonstrates how to write either PKCS1 or PKCS8 format PEM files. PKCS1 public keys have this PEM format:
-----BEGIN RSA PUBLIC KEY-----
BASE64 ENCODED DATA
-----END RSA PUBLIC KEY-----
PKCS8 public keys have this PEM format:
-----BEGIN PUBLIC KEY-----
BASE64 ENCODED DATA
-----END PUBLIC KEY-----

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Pem;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  pem: TPem;
  i: Integer;
  numPublicKeys: Integer;

begin
  success := False;

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

  success := False;

  pem := TPem.Create;

  //  Load a public key from a PEM file.
  //  (Assume the PEM contains at least one public key..)
  success := pem.LoadPemFile('/Users/chilkat/testData/pem/myPublicKey.pem');
  if (success <> True) then
    begin
      WriteLn(pem.LastErrorText);
      Exit;
    end;

  numPublicKeys := pem.NumPublicKeys;
  if (numPublicKeys = 0) then
    begin
      WriteLn(('Error: Expected the PEM to contain public keys.'));
      Exit;
    end;

  //  Get each public key as PEM, first in PKCS1 format, then in PKCS8.
  for i := 1 to numPublicKeys do
    begin

      //  First output to PKCS1 PEM format:
      WriteLn('This is PKCS1 format:');
      pem.PublicKeyFormat := 'pkcs1';
      WriteLn(pem.ToPem());

      //  Now PKCS8 PEM format:
      WriteLn('This is PKCS8 format:');
      pem.PublicKeyFormat := 'pkcs8';
      WriteLn(pem.ToPem());

    end;



  pem.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.