Sample code for 30+ languages & platforms
Tcl

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

Tcl

load ./chilkat.dll

set success 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.

set key [new_CkSshKey]

set success [CkSshKey_GenerateEd25519Key $key]
if {$success != 1} then {
    puts [CkSshKey_lastErrorText $key]
    delete_CkSshKey $key
    exit
}

# We can optionally set a comment to be included in the exported key.
CkSshKey_put_Comment $key "This is my new ed25519 key."

# Export the ed25519 private key to unencrypted PuTTY format:
set exportEncrypted 0
set exportedKey [CkSshKey_toPuttyPrivateKey $key $exportEncrypted]
set 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_put_Password $key "secret"
set exportEncrypted 1
set exportedKey [CkSshKey_toPuttyPrivateKey $key $exportEncrypted]
set 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

puts "Success!"

delete_CkSshKey $key