PureBasic
PureBasic
Convert PuTTY Private Key (ppk) to OpenSSH (pem)
See more SSH Key Examples
Convert a PuTTY format private key file (.ppk) to OpenSSH (.pem).Chilkat PureBasic Downloads
IncludeFile "CkSshKey.pb"
Procedure ChilkatExample()
success.i = 0
key.i = CkSshKey::ckCreate()
If key.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Load an unencrypted or encrypted PuTTY private key.
; If your PuTTY private key is encrypted, set the Password
; property before calling FromPuttyPrivateKey.
; If your PuTTY private key is not encrypted, it makes no diffference
; if Password is set or not set.
CkSshKey::setCkPassword(key, "secret")
; First load the .ppk file into a string:
keyStr.s
keyStr = CkSshKey::ckLoadText(key,"putty_private_key.ppk")
; Import into the SSH key object:
success = CkSshKey::ckFromPuttyPrivateKey(key,keyStr)
If success <> 1
Debug CkSshKey::ckLastErrorText(key)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
; Convert to an encrypted or unencrypted OpenSSH key.
; First demonstrate converting to an unencrypted OpenSSH key
unencryptedKeyStr.s
bEncrypt.i = 0
unencryptedKeyStr = CkSshKey::ckToOpenSshPrivateKey(key,bEncrypt)
success = CkSshKey::ckSaveText(key,unencryptedKeyStr,"unencrypted_openssh.pem")
If success <> 1
Debug CkSshKey::ckLastErrorText(key)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
; Save to an encrypted OpenSSH PEM file:
encryptedKeyStr.s
bEncrypt = 1
CkSshKey::setCkPassword(key, "myPassword")
encryptedKeyStr = CkSshKey::ckToOpenSshPrivateKey(key,bEncrypt)
success = CkSshKey::ckSaveText(key,encryptedKeyStr,"encrypted_openssh.pem")
If success <> 1
Debug CkSshKey::ckLastErrorText(key)
CkSshKey::ckDispose(key)
ProcedureReturn
EndIf
Debug "Done!"
CkSshKey::ckDispose(key)
ProcedureReturn
EndProcedure