Sample code for 30+ languages & platforms
C

RSA Signature using Private Key from .snk File

See more RSA Examples

A .snk file (Strong Name Key file) is a file format used in the .NET ecosystem to store an RSA public/private key pair. This key pair is typically used for strong-naming assemblies, which is a process of signing .NET assemblies to ensure their integrity and to uniquely identify them.

This example loads a private key from a .snk file and creates an RSA signature.

Chilkat C Downloads

C
#include <C_CkRsa.h>
#include <C_CkPrivateKey.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkRsa rsa;
    const char *xmlStr;
    HCkPrivateKey privKey;
    const char *sigBase64;

    success = FALSE;

    rsa = CkRsa_Create();

    //  Load the .snk and return the private key as XML.
    xmlStr = CkRsa_snkToXml(rsa,"./test.snk");
    if (CkRsa_getLastMethodSuccess(rsa) == FALSE) {
        printf("%s\n",CkRsa_lastErrorText(rsa));
        CkRsa_Dispose(rsa);
        return;
    }

    privKey = CkPrivateKey_Create();
    success = CkPrivateKey_LoadXml(privKey,xmlStr);
    if (success == FALSE) {
        printf("%s\n",CkPrivateKey_lastErrorText(privKey));
        CkRsa_Dispose(rsa);
        CkPrivateKey_Dispose(privKey);
        return;
    }

    success = CkRsa_UsePrivateKey(rsa,privKey);
    if (success == FALSE) {
        printf("%s\n",CkRsa_lastErrorText(rsa));
        CkRsa_Dispose(rsa);
        CkPrivateKey_Dispose(privKey);
        return;
    }

    //  Sign the SHA-256 hash of the utf-8 byte representation of the contents of sb
    //  Return the signature in base64 format.
    CkRsa_putEncodingMode(rsa,"base64");
    CkRsa_putCharset(rsa,"utf-8");
    sigBase64 = CkRsa_signStringENC(rsa,"This is the text to be hashed and signed.","sha256");
    if (CkRsa_getLastMethodSuccess(rsa) == FALSE) {
        printf("%s\n",CkRsa_lastErrorText(rsa));
        CkRsa_Dispose(rsa);
        CkPrivateKey_Dispose(privKey);
        return;
    }

    printf("RSA signature as base64: %s\n",sigBase64);


    CkRsa_Dispose(rsa);
    CkPrivateKey_Dispose(privKey);

    }