Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Generate ed25519 Key and Save to PuTTY Format
See more SSH Key Examples
Generates an ED25519 key and saves to PuTTY format.Note: This example requires Chilkat v9.5.0.83 or greater.
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.SshKey;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
key: TSshKey;
exportEncrypted: Boolean;
exportedKey: string;
begin
success := False;
// Note: Requires Chilkat v9.5.0.83 or greater.
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
key := TSshKey.Create;
success := key.GenerateEd25519Key();
if (success <> True) then
begin
WriteLn(key.LastErrorText);
Exit;
end;
// We can optionally set a comment to be included in the exported key.
key.Comment := 'This is my new ed25519 key.';
// Export the ed25519 private key to unencrypted PuTTY format:
exportEncrypted := False;
exportedKey := key.ToPuttyPrivateKey(exportEncrypted);
success := key.SaveText(exportedKey,'qa_output/privkey_putty_unencrypted.ppk');
// The unencrypted PuTTY key looks like this:
// PuTTY-User-Key-File-2: ssh-ed25519
// Encryption: none
// Comment: This is my new ed25519 key.
// Public-Lines: 2
// AAAAC3NzaC1lZDI1NTE5AAAAIJn6m7yKzkAAHXzzjE1zv4RqtdE8r5eTegcpbNDF
// OPYs
// Private-Lines: 1
// AAAAIFgwbZ38AR9Oiw930wsCcCGymQRBa2Y7qBq6R3HCe9VL
// Private-MAC: 892573676dd13ef70b6ab7ef219decdfbd5b1857
// Export the ed25519 private key to encrypted PuTTY format:
key.Password := 'secret';
exportEncrypted := True;
exportedKey := key.ToPuttyPrivateKey(exportEncrypted);
success := key.SaveText(exportedKey,'qa_output/privkey_putty_encrypted.ppk');
// The encrypted PuTTY key looks like this:
// PuTTY-User-Key-File-2: ssh-ed25519
// Encryption: aes256-cbc
// Comment: This is my new ed25519 key.
// Public-Lines: 2
// AAAAC3NzaC1lZDI1NTE5AAAAIJn6m7yKzkAAHXzzjE1zv4RqtdE8r5eTegcpbNDF
// OPYs
// Private-Lines: 1
// aIa9mY22htPElPgWhtXesp97662JECxaSsnNqvhD06P+o18immv8ohn73vI/bhQB
// Private-MAC: 312221dc90660859fe68df300767f8f779046815
WriteLn('Success!');
key.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.