Sample code for 30+ languages & platforms
Unicode C++

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 Unicode C++ Downloads

Unicode C++
#include <CkSshKeyW.h>

void ChilkatSample(void)
    {
    bool 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.

    CkSshKeyW key;

    success = key.GenerateEd25519Key();
    if (success != true) {
        wprintf(L"%s\n",key.lastErrorText());
        return;
    }

    //  We can optionally set a comment to be included in the exported key.
    key.put_Comment(L"This is my new ed25519 key.");

    //  Export the ed25519 private key to unencrypted PuTTY format:
    bool exportEncrypted = false;
    const wchar_t *exportedKey = key.toPuttyPrivateKey(exportEncrypted);
    success = key.SaveText(exportedKey,L"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.put_Password(L"secret");
    exportEncrypted = true;
    exportedKey = key.toPuttyPrivateKey(exportEncrypted);
    success = key.SaveText(exportedKey,L"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

    wprintf(L"Success!\n");
    }