Sample code for 30+ languages & platforms
Rust

Load a PuTTY Public Key

See more SSH Key Examples

Demonstrates how to load a PuTTY public key.

Chilkat Rust Downloads

Rust

// Load a PuTTY public key.
let putty_key = chilkat::SshKey::new();
let pub_key_text = putty_key.load_text("qa_data/ppk/putty_public.pem").unwrap_or_default();

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

if putty_key.from_rfc4716_public_key(&pub_key_text).is_err() {
    println!("{}", putty_key.last_error_text());
    return;
}

// If desired, convert to other public key formats:
let open_ssh_pub_key_str = putty_key.to_open_ssh_public_key().unwrap_or_default();
println!("{}", open_ssh_pub_key_str);

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

// Convert to an XML format:
let xml_pub_key_str = putty_key.to_xml().unwrap_or_default();
println!("{}", xml_pub_key_str);

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