Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, SshKey;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
key: HCkSshKey;
exportEncrypted: Boolean;
exportedKey: PWideChar;

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 := CkSshKey_Create();

success := CkSshKey_GenerateEd25519Key(key);
if (success <> True) then
  begin
    Memo1.Lines.Add(CkSshKey__lastErrorText(key));
    Exit;
  end;

// We can optionally set a comment to be included in the exported key.
CkSshKey_putComment(key,'This is my new ed25519 key.');

// Export the ed25519 private key to unencrypted PuTTY format:
exportEncrypted := False;
exportedKey := CkSshKey__toPuttyPrivateKey(key,exportEncrypted);
success := CkSshKey_SaveText(key,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:
CkSshKey_putPassword(key,'secret');
exportEncrypted := True;
exportedKey := CkSshKey__toPuttyPrivateKey(key,exportEncrypted);
success := CkSshKey_SaveText(key,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

Memo1.Lines.Add('Success!');

CkSshKey_Dispose(key);

end;