C
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
#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);
}