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