Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoKey
    Boolean iExportEncrypted
    String sExportedKey
    String sTemp1

    Move False To iSuccess

    // 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.

    Get Create (RefClass(cComChilkatSshKey)) To hoKey
    If (Not(IsComObjectCreated(hoKey))) Begin
        Send CreateComObject of hoKey
    End

    Get ComGenerateEd25519Key Of hoKey To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoKey To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // We can optionally set a comment to be included in the exported key.
    Set ComComment Of hoKey To "This is my new ed25519 key."

    // Export the ed25519 private key to unencrypted PuTTY format:
    Move False To iExportEncrypted
    Get ComToPuttyPrivateKey Of hoKey iExportEncrypted To sExportedKey
    Get ComSaveText Of hoKey sExportedKey "qa_output/privkey_putty_unencrypted.ppk" To iSuccess

    // 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:
    Set ComPassword Of hoKey To "secret"
    Move True To iExportEncrypted
    Get ComToPuttyPrivateKey Of hoKey iExportEncrypted To sExportedKey
    Get ComSaveText Of hoKey sExportedKey "qa_output/privkey_putty_encrypted.ppk" To iSuccess

    // 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

    Showln "Success!"


End_Procedure