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

Load Certificate (.cer) and Private Key (.pvk) generated from makecert

See more Certificates Examples

Demonstrates how to load a certificate (.cer) and private key (.pvk) from the files produced by makecert, such as in the following command:
makecert -sv mycertificate.pvk -n "CN=My Simple Certificate" mycertificate.cer -sky Exchange

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.PrivateKey,
  Chilkat.Pdf,
  Chilkat.Cert;

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

procedure RunDemo;
var
  success: Boolean;
  cert: TCert;
  privKey: TPrivateKey;
  pdf: TPdf;

begin
  success := False;

  //  First load the .cer file.
  //  The certificate file (.cer) contains only the certificate (does not include the private key)
  cert := TCert.Create;
  success := cert.LoadFromFile('qa_data/certs_and_keys/makecert/mycertificate.cer');
  if (success = False) then
    begin
      WriteLn(cert.LastErrorText);
      Exit;
    end;

  //  Next, load the .pvk file.
  //  Note: The password "secret" is what you entered when makecert displayed the dialog asking for a password..
  privKey := TPrivateKey.Create;
  success := privKey.LoadPvkFile('qa_data/certs_and_keys/makecert/mycertificate.pvk','secret');
  if (success = False) then
    begin
      WriteLn(privKey.LastErrorText);
      Exit;
    end;

  //  Finally, associate the private key with the certificate.
  success := cert.SetPrivateKey(privKey);
  if (success = False) then
    begin
      WriteLn(cert.LastErrorText);
      Exit;
    end;

  //  At this point, the certificate can be used for signing.  For example..
  pdf := TPdf.Create;

  //  ....
  //  ....

  success := pdf.SetSigningCert(cert);

  //  ...
  //  ....

  //  Some Chilkat classes also provide a method where the cert and private key can be passed separately.
  //  For example, if SetSigningCert2 is called, then we don't need to explicitly associate the private key with the cert.
  success := pdf.SetSigningCert2(cert,privKey);

  //  ...
  //  ....


  cert.Free;
  privKey.Free;
  pdf.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.