Sample code for 30+ languages & platforms
Lazarus Pascal

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 Lazarus Pascal Downloads

Lazarus Pascal
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.