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

Load PuTTY Private Key

See more SSH Key Examples

Loads a PuTTY private key into an SSH key object.

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.SshKey,
  Chilkat.StringBuilder;

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

procedure RunDemo;
var
  success: Boolean;
  sb: TStringBuilder;
  bCrlf: Boolean;
  sshKey: TSshKey;

begin
  success := False;

  sb := TStringBuilder.Create;
  bCrlf := True;
  sb.AppendLine('PuTTY-User-Key-File-2: ssh-rsa',bCrlf);
  sb.AppendLine('Encryption: aes256-cbc',bCrlf);
  sb.AppendLine('Comment: rsa-key-20161121',bCrlf);
  sb.AppendLine('Public-Lines: 6',bCrlf);
  sb.AppendLine('AAAAB3NzaC1yc2EAAAABJQAAAQEArIVxZTGYjqqNegJeMqgZzXKuX3YtxmD4DPnQ',bCrlf);
  sb.AppendLine('K01SXoR9UA4wl6RJK5FGonI5spVnddr6HJny0eY5/RmV1dyL0fNdH2pfnHHoTd9B',bCrlf);
  sb.AppendLine('uXG0PcTn4BqJFlybC6NNaGaByqpNPaOgjJIMHXTaeCuDuzwP02f3UKSfLAFdvUNP',bCrlf);
  sb.AppendLine('fX3yrMRabjVcHJpgUn535Y9Y3ZphSFssiElLpp1vo6QLsdiAl0wgU4HLw9Dfg8sh',bCrlf);
  sb.AppendLine('p3zgAufYUUIx2HChITJ7OO/PH5GEbPvJFbYH4Wx33GEe56JCF9QxxDCqNxsPMrvu',bCrlf);
  sb.AppendLine('mqkSIPIELFl5zVYSFD9PiL8RZQcPJGq5zbF9+szsS/6DSH8biw==',bCrlf);
  sb.AppendLine('Private-Lines: 14',bCrlf);
  sb.AppendLine('SVqUm9zBUN6zaAaUY6TLnIXAhxqv4s1UhzukcN7Ns0Fs1EqdDP4nVMKgmiDxHaAj',bCrlf);
  sb.AppendLine('ucb1PLv7uj2eGt69E+HKH4AC2LtJZNH4qLw+p8QKqdN79oRAMHwtS4cU88eeQ91t',bCrlf);
  sb.AppendLine('2W3wzmTzvYFlE6VbUr3bNl3f68OCQHz+7YJuL8g0eclNuveHB/VmBqnek1LL/cRY',bCrlf);
  sb.AppendLine('wmk8wyzHRl7X8fyjGX0PiOPyVwXBDJFNjjKAdrRCRS0Cc4PWAb/18qrA9ApArQVk',bCrlf);
  sb.AppendLine('a5miOMfrXFF2Vg3JyNgfdDilNKkry9x5oTtfueZkFgu/6pofP5qrTstr+BmB16mu',bCrlf);
  sb.AppendLine('MxcDRF+jOm9XvU1OnrzQ9rBzuaHEfhSHqlKyMGTDuzRtNyxlDBgK4DaZ2z1FJQGF',bCrlf);
  sb.AppendLine('63p36KgVqx571PUJ8P/28VUb6s/OtXcjhxxvhC8Eo0wrTdjzDiX+IovdjOhWgn4v',bCrlf);
  sb.AppendLine('xugaYocotTbhqq+O1w9xYtmG8fP921+TIpHzCkE8QTJzLJ40pemKZ+TAOmhb0OUQ',bCrlf);
  sb.AppendLine('jemqmRohcxx7NEoZ0TsoAe6i+GQJ2cEE7LcNcSX3V66AkyTsTieqk1nSxyHyoF+l',bCrlf);
  sb.AppendLine('rTaVOhFM5H8Etzv94SP3c1if3Qa9cmZaEmfaqrS94bzX+OY/zRIFweT0BeMo3Uac',bCrlf);
  sb.AppendLine('fP6gBDBiLYZeRURcx0mYRdNYlssaKoYLA6c7F3ggo34VfgD6LP+ZYnG8yAXGXSPr',bCrlf);
  sb.AppendLine('lgrfdg/szqSsOKVdkoGTkVy+BgrhITnFIs8TLZsrtSEPmXjEa+QvdP6FPsyN5u6P',bCrlf);
  sb.AppendLine('8s0i8EC0KT0YA77Ps29DEU3fxsXVSc9Xd9qdiWfJ0ce2hOsTwxL1gxtXUKP4xCzm',bCrlf);
  sb.AppendLine('oXaWLFajiws2EjgBbwREj12v0I2N4xrpf/PeJq22EvWLYm9H94DdFrkm0b4p6Kmu',bCrlf);
  sb.AppendLine('Private-MAC: ef04289f158f498b8050e19f1630b4764fe64ab9',bCrlf);

  sshKey := TSshKey.Create;

  //  Must specify a password for this PuTTY private key because it is encrypted.
  sshKey.Password := 'secret';

  success := sshKey.FromPuttyPrivateKey(sb.GetAsString());
  if (success <> True) then
    begin
      WriteLn(sshKey.LastErrorText);
      WriteLn('Failed.');
    end;

  WriteLn('success = ' + success);


  sb.Free;
  sshKey.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.