Sample code for 30+ languages & platforms
Unicode C++

RSA Sign using Base64 Private Key

See more RSA Examples

Signs a string using a non-encrypted RSA private key in base64 encoding. Returns the RSA signature as a base64 string.

Chilkat Unicode C++ Downloads

Unicode C++
#include <CkPrivateKeyW.h>
#include <CkStringBuilderW.h>
#include <CkRsaW.h>
#include <CkBinDataW.h>

void ChilkatSample(void)
    {
    bool success = false;

    // This requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    CkPrivateKeyW privKey;

    CkStringBuilderW sbPem;
    sbPem.AppendLine(L"-----BEGIN RSA PRIVATE KEY-----",true);
    sbPem.AppendLine(L"MIIC .... j5A==",true);
    sbPem.AppendLine(L"-----END RSA PRIVATE KEY-----",true);

    success = privKey.LoadPem(sbPem.getAsString());
    if (success == false) {
        wprintf(L"%s\n",privKey.lastErrorText());
        return;
    }

    CkRsaW rsa;

    success = rsa.UsePrivateKey(privKey);
    if (success == false) {
        wprintf(L"%s\n",rsa.lastErrorText());
        return;
    }

    CkBinDataW bd;
    bd.AppendString(L"12345678",L"utf-8");

    success = rsa.SignRawBd(bd);
    if (success == false) {
        wprintf(L"%s\n",rsa.lastErrorText());
        return;
    }

    // Get the base64 RSA signature.
    wprintf(L"%s\n",bd.getEncoded(L"base64"));

    success = rsa.VerifyRawBd(bd);
    if (success == false) {
        wprintf(L"%s\n",rsa.lastErrorText());
        return;
    }

    const wchar_t *strOriginal = bd.getString(L"utf-8");
    wprintf(L"%s\n",strOriginal);
    }