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";
    }