Pascal (Lazarus/Delphi)
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
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.