Sample code for 30+ languages & platforms
Unicode C

RSASSA-PSS Algorithm with SHA256 Hashing

See more RSA Examples

RSA encrypt a SHA256 hash with OAEP padding.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkPrivateKeyW.h>
#include <C_CkRsaW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkPrivateKeyW privkey;
    HCkRsaW rsa;
    const wchar_t *sigStr;

    success = FALSE;

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

    privkey = CkPrivateKeyW_Create();

    // Load the private key object from a PEM file.
    // (To load from a PEM string, call LoadPem instead.)
    success = CkPrivateKeyW_LoadPemFile(privkey,L"somePath/myPrivateKey.pem");
    if (success == FALSE) {
        wprintf(L"%s\n",CkPrivateKeyW_lastErrorText(privkey));
        CkPrivateKeyW_Dispose(privkey);
        return;
    }

    rsa = CkRsaW_Create();
    // Use RSA-PSS by setting PkcsPadding = FALSE
    CkRsaW_putPkcsPadding(rsa,FALSE);
    // Use SHA256
    CkRsaW_putOaepHash(rsa,L"SHA-256");

    CkRsaW_UsePrivateKey(rsa,privkey);

    // Generate a base64 signature.
    CkRsaW_putEncodingMode(rsa,L"base64");

    sigStr = CkRsaW_signStringENC(rsa,L"String to be signed",L"SHA-256");
    if (CkRsaW_getLastMethodSuccess(rsa) == FALSE) {
        wprintf(L"%s\n",CkRsaW_lastErrorText(rsa));
        CkPrivateKeyW_Dispose(privkey);
        CkRsaW_Dispose(rsa);
        return;
    }

    wprintf(L"Signature: %s\n",sigStr);


    CkPrivateKeyW_Dispose(privkey);
    CkRsaW_Dispose(rsa);

    }