Sample code for 30+ languages & platforms
Tcl

Load a PuTTY Public Key

See more SSH Key Examples

Demonstrates how to load a PuTTY public key.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# Load a PuTTY public key.
set puttyKey [new_CkSshKey]

set pubKeyText [CkSshKey_loadText $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 ----

set success [CkSshKey_FromRfc4716PublicKey $puttyKey $pubKeyText]
if {$success != 1} then {
    puts [CkSshKey_lastErrorText $puttyKey]
    delete_CkSshKey $puttyKey
    exit
}

# If desired, convert to other public key formats:
set openSshPubKeyStr [CkSshKey_toOpenSshPublicKey $puttyKey]
puts "$openSshPubKeyStr"

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

# Convert to an XML format:
set xmlPubKeyStr [CkSshKey_toXml $puttyKey]
puts "$xmlPubKeyStr"

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

delete_CkSshKey $puttyKey