Sample code for 30+ languages & platforms
C

Load RSA Public Key from Hex Modulus and Exponent

See more RSA Examples

Load an RSA public key from a hex modulus and exponent.

Chilkat C Downloads

C
#include <C_CkBinData.h>
#include <C_CkXml.h>
#include <C_CkPublicKey.h>

void ChilkatSample(void)
    {
    BOOL success;
    const char *modulus;
    const char *exponent;
    HCkBinData bdModulus;
    HCkBinData bdExponent;
    HCkXml xml;
    HCkPublicKey pubkey;

    success = FALSE;

    // Load a 128-byte (1024-bit) modulus + exponent into a Chilkat public key object..
    modulus = "BF5F4AF9A018B5F324A0C10448C0D3248D9BE78967FDC551A27876AC5789ADCBA8245D3D942AE3799563D895DA801E765D225A54FA15DAB2C4731DD817DCF94A9AD62197074C2349442093A206234BF3747F0E88AA6F538355684CC1FB26FCE029C9050A1DAF9F507C2BABF6EFC9FB16320C8036721BE0279FBB76122C41E429";

    exponent = "00000003";

    // We'll need to re-encode from hex to base64..
    bdModulus = CkBinData_Create();
    CkBinData_AppendEncoded(bdModulus,modulus,"hex");
    bdExponent = CkBinData_Create();
    CkBinData_AppendEncoded(bdExponent,exponent,"hex");

    xml = CkXml_Create();
    CkXml_putTag(xml,"RsaKeyValue");
    CkXml_NewChild2(xml,"Modulus",CkBinData_getEncoded(bdModulus,"base64"));
    CkXml_NewChild2(xml,"Exponent",CkBinData_getEncoded(bdExponent,"base64"));

    // Now load into the pubkey object..
    pubkey = CkPublicKey_Create();
    success = CkPublicKey_LoadFromString(pubkey,CkXml_getXml(xml));
    if (success == FALSE) {
        printf("%s\n",CkPublicKey_lastErrorText(pubkey));
        CkBinData_Dispose(bdModulus);
        CkBinData_Dispose(bdExponent);
        CkXml_Dispose(xml);
        CkPublicKey_Dispose(pubkey);
        return;
    }

    printf("Success.\n");


    CkBinData_Dispose(bdModulus);
    CkBinData_Dispose(bdExponent);
    CkXml_Dispose(xml);
    CkPublicKey_Dispose(pubkey);

    }