Sample code for 30+ languages & platforms
PureBasic

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

PureBasic
IncludeFile "CkSshKey.pb"

Procedure ChilkatExample()

    success.i = 0

    ; 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.i = CkSshKey::ckCreate()
    If key.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkSshKey::ckGenerateEd25519Key(key)
    If success <> 1
        Debug CkSshKey::ckLastErrorText(key)
        CkSshKey::ckDispose(key)
        ProcedureReturn
    EndIf

    ; We can optionally set a comment to be included in the exported key.
    CkSshKey::setCkComment(key, "This is my new ed25519 key.")

    ; Export the ed25519 private key to unencrypted PuTTY format:
    exportEncrypted.i = 0
    exportedKey.s = CkSshKey::ckToPuttyPrivateKey(key,exportEncrypted)
    success = CkSshKey::ckSaveText(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::setCkPassword(key, "secret")
    exportEncrypted = 1
    exportedKey = CkSshKey::ckToPuttyPrivateKey(key,exportEncrypted)
    success = CkSshKey::ckSaveText(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

    Debug "Success!"


    CkSshKey::ckDispose(key)


    ProcedureReturn
EndProcedure