Sample code for 30+ languages & platforms
PureBasic

Load a PuTTY Public Key

See more SSH Key Examples

Demonstrates how to load a PuTTY public key.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSshKey.pb"

Procedure ChilkatExample()

    success.i = 0

    ; Load a PuTTY public key.
    puttyKey.i = CkSshKey::ckCreate()
    If puttyKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    pubKeyText.s = CkSshKey::ckLoadText(puttyKey,"qa_data/ppk/putty_public.pem")

    ; The pubKeyText contains this content:

    ; 	---- BEGIN SSH2 PUBLIC KEY ----
    ; 	Comment: "rsa-key-20170126"
    ; 	AAAAB3NzaC1yc2EAAAABJQAAAQEAx+52s7vvaZ8rT2UdFZWlSUVDHDQ+5ZRFvgRW
    ; 	6nm2sO1c9WqNg7u2PQL4jeKSDX2XWcMnpleALz2x8Rr4rMy5E1iZzvWov8VtFd8l
    ; 	fa9HOkgEeJB3VFuYR3NlnD3eyCoYJYPVpHJHrIeui2WZs5vQ76HDe+th8+z5Ald4
    ; 	zPw3p2c6ZJpBrkSBM67hWokoBDi23c7NhszDHhJBrv+B98cQxnagI1PUKqN7E8Vg
    ; 	bNtBI8beIMHyI69up9G1AXSEi0cGIjYNx9RNUPau1mRk/SvfqxgWkAjM005lj7hc
    ; 	bOsjbdKK3T2NtrKTaYjEiXlEXcj1iGuApsD/m73pYaEJB3Nd7w==
    ; 	---- END SSH2 PUBLIC KEY ----

    success = CkSshKey::ckFromRfc4716PublicKey(puttyKey,pubKeyText)
    If success <> 1
        Debug CkSshKey::ckLastErrorText(puttyKey)
        CkSshKey::ckDispose(puttyKey)
        ProcedureReturn
    EndIf

    ; If desired, convert to other public key formats:
    openSshPubKeyStr.s = CkSshKey::ckToOpenSshPublicKey(puttyKey)
    Debug openSshPubKeyStr

    ; openSshPubKeyStr contains:
    ; ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAx+52s7vvaZ8rT2UdFZWlSUVDHDQ+5ZRFvgRW6nm2sO1c9WqNg7u2PQL4jeKSDX2XWcMnpleALz2x8Rr4rMy5E1iZzvWov8VtFd8lfa9HOkgEeJB3VFuYR3NlnD3eyCoYJYPVpHJHrIeui2WZs5vQ76HDe+th8+z5Ald4zPw3p2c6ZJpBrkSBM67hWokoBDi23c7NhszDHhJBrv+B98cQxnagI1PUKqN7E8VgbNtBI8beIMHyI69up9G1AXSEi0cGIjYNx9RNUPau1mRk/SvfqxgWkAjM005lj7hcbOsjbdKK3T2NtrKTaYjEiXlEXcj1iGuApsD/m73pYaEJB3Nd7w== rsa-key-20170126

    ; Convert to an XML format:
    xmlPubKeyStr.s = CkSshKey::ckToXml(puttyKey)
    Debug xmlPubKeyStr

    ; xmlPubKeyStr contains:
    ; <RSAPublicKey>
    ;     <Modulus>x+52s7vvaZ8rT2UdFZWlSUVDHDQ+5ZRFvgRW6nm2sO1c9WqNg7u2PQL4jeKSDX2XWcMnpleALz2x8Rr4rMy5E1iZzvWov8VtFd8lfa9HOkgEeJB3VFuYR3NlnD3eyCoYJYPVpHJHrIeui2WZs5vQ76HDe+th8+z5Ald4zPw3p2c6ZJpBrkSBM67hWokoBDi23c7NhszDHhJBrv+B98cQxnagI1PUKqN7E8VgbNtBI8beIMHyI69up9G1AXSEi0cGIjYNx9RNUPau1mRk/SvfqxgWkAjM005lj7hcbOsjbdKK3T2NtrKTaYjEiXlEXcj1iGuApsD/m73pYaEJB3Nd7w==</Modulus>
    ;     <Exponent>JQ==</Exponent>
    ; </RSAPublicKey>
    ; 
    ; 


    CkSshKey::ckDispose(puttyKey)


    ProcedureReturn
EndProcedure