Sample code for 30+ languages & platforms
PureBasic

Load an SSH Key from a File (Many Formats Supported)

Demonstrates how to load an SSH public or private key object from a file. The file can be in any of the following formats:
  • OpenSSH private key
  • OpenSSH public key
  • PuTTY private key
  • RFC 4716 public key

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSshKey.pb"

Procedure ChilkatExample()

    success.i = 0

    sshkey.i = CkSshKey::ckCreate()
    If sshkey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; First, use the LoadText convenience method to load a text file (of any SSH key format)
    ; into a string:
    strKey.s = CkSshKey::ckLoadText(sshkey,"../mySshKeys/myKey.txt")

    ; Next, load the key into the SSH key object.

    ; If the key is an OpenSSH private key:
    ; (In actuality, the From* methods will automatically detect the format and load
    ; the key correctly.  For example, if a PuTTY private key is passed to FromOpenSshPrivateKey,
    ; it  will still load correctly.)
    success = CkSshKey::ckFromOpenSshPrivateKey(sshkey,strKey)
    If success <> 1
        Debug CkSshKey::ckLastErrorText(sshkey)
    Else
        Debug "Loaded OpenSSH private key."
        CkSshKey::ckDispose(sshkey)
        ProcedureReturn
    EndIf

    ; If the key is an OpenSSH public key:
    success = CkSshKey::ckFromOpenSshPublicKey(sshkey,strKey)
    If success <> 1
        Debug CkSshKey::ckLastErrorText(sshkey)
    Else
        Debug "Loaded OpenSSH public key."
        CkSshKey::ckDispose(sshkey)
        ProcedureReturn
    EndIf

    ; If the key is a PuTTY private key:
    success = CkSshKey::ckFromPuttyPrivateKey(sshkey,strKey)
    If success <> 1
        Debug CkSshKey::ckLastErrorText(sshkey)
    Else
        Debug "Loaded PuTTY private key."
        CkSshKey::ckDispose(sshkey)
        ProcedureReturn
    EndIf

    ; If the key is an RFC 4716 public key:
    success = CkSshKey::ckFromRfc4716PublicKey(sshkey,strKey)
    If success <> 1
        Debug CkSshKey::ckLastErrorText(sshkey)
    Else
        Debug "Loaded RFC 4716 public key."
    EndIf



    CkSshKey::ckDispose(sshkey)


    ProcedureReturn
EndProcedure