Sample code for 30+ languages & platforms
Unicode C

Load a PuTTY Public Key

See more SSH Key Examples

Demonstrates how to load a PuTTY public key.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkSshKeyW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkSshKeyW puttyKey;
    const wchar_t *pubKeyText;
    const wchar_t *openSshPubKeyStr;
    const wchar_t *xmlPubKeyStr;

    success = FALSE;

    //  Load a PuTTY public key.
    puttyKey = CkSshKeyW_Create();
    pubKeyText = CkSshKeyW_loadText(puttyKey,L"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 = CkSshKeyW_FromRfc4716PublicKey(puttyKey,pubKeyText);
    if (success != TRUE) {
        wprintf(L"%s\n",CkSshKeyW_lastErrorText(puttyKey));
        CkSshKeyW_Dispose(puttyKey);
        return;
    }

    //  If desired, convert to other public key formats:
    openSshPubKeyStr = CkSshKeyW_toOpenSshPublicKey(puttyKey);
    wprintf(L"%s\n",openSshPubKeyStr);

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

    //  Convert to an XML format:
    xmlPubKeyStr = CkSshKeyW_toXml(puttyKey);
    wprintf(L"%s\n",xmlPubKeyStr);

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


    CkSshKeyW_Dispose(puttyKey);

    }