Sample code for 30+ languages & platforms
C++

RSA Hash Binary Data and Sign (and Verify)

See more RSA Examples

Demonstrates how to sign the hash of binary data. Also demonstrates how to verify the RSA signature.

Chilkat C++ Downloads

C++
#include <CkPrivateKey.h>
#include <CkRsa.h>
#include <CkBinData.h>
#include <CkPublicKey.h>

void ChilkatSample(void)
    {
    bool success = false;

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

    //  Load an RSA private key for signing.
    CkPrivateKey privKey;
    success = privKey.LoadEncryptedPemFile("qa_data/pem/rsa_passwd.pem","passwd");
    if (success == false) {
        std::cout << privKey.lastErrorText() << "\r\n";
        return;
    }

    CkRsa rsa;
    rsa.UsePrivateKey(privKey);

    //  We have some binary data (in hex) to sign
    const char *originalData = "0102030405060708090A";
    CkBinData bdData;
    bdData.AppendEncoded(originalData,"hex");

    //  Hash (SHA-256) and sign the hash:
    CkBinData bdSignature;
    success = rsa.SignBd(bdData,"sha256",bdSignature);
    if (success == false) {
        std::cout << rsa.lastErrorText() << "\r\n";
        return;
    }

    //  Show the RSA signature in base64
    std::cout << bdSignature.getEncoded("base64") << "\r\n";

    //  ------------------------------------------
    //  Get the public key from the private key
    CkPublicKey pubKey;
    privKey.ToPublicKey(pubKey);

    //  Verify the signature..
    CkRsa rsa2;
    rsa2.UsePublicKey(pubKey);

    bool bVerified = rsa2.VerifyBd(bdData,"sha256",bdSignature);
    std::cout << "signature verified: " << bVerified << "\r\n";
    }