C
C
RSA Sign Using Private Key from .pfx/.p12 to Base64 Signature
See more RSA Examples
Demonstrates how to RSA sign something using a private key loaded from a .pfx/.p12. The RSA signature is returned in Base64 encoded format.Chilkat C Downloads
#include <C_CkRsa.h>
#include <C_CkPfx.h>
#include <C_CkPrivateKey.h>
void ChilkatSample(void)
{
BOOL success;
HCkRsa rsa;
HCkPfx pfx;
HCkPrivateKey privKey;
const char *strData;
const char *base64Sig;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
rsa = CkRsa_Create();
// Load the .pfx/.p12
pfx = CkPfx_Create();
success = CkPfx_LoadPfxFile(pfx,"qa_data/pfx/myKey.p12","myPassword");
if (success == FALSE) {
printf("%s\n",CkPfx_lastErrorText(pfx));
CkRsa_Dispose(rsa);
CkPfx_Dispose(pfx);
return;
}
// Get the default private key.
privKey = CkPrivateKey_Create();
success = CkPfx_PrivateKeyAt(pfx,0,privKey);
if (success == FALSE) {
printf("%s\n",CkPfx_lastErrorText(pfx));
CkRsa_Dispose(rsa);
CkPfx_Dispose(pfx);
CkPrivateKey_Dispose(privKey);
return;
}
// Import the private key into the RSA component:
success = CkRsa_UsePrivateKey(rsa,privKey);
if (success == FALSE) {
printf("%s\n",CkRsa_lastErrorText(rsa));
CkRsa_Dispose(rsa);
CkPfx_Dispose(pfx);
CkPrivateKey_Dispose(privKey);
return;
}
// Get the signature in base64
CkRsa_putEncodingMode(rsa,"base64");
strData = "This is the string to be signed.";
// Sign the string using the sha256 hash algorithm.
// Other valid choices are "sha384", "sha512", "sha-1", "md2" and "md5".
base64Sig = CkRsa_signStringENC(rsa,strData,"sha256");
printf("%s\n",base64Sig);
printf("Success!\n");
CkRsa_Dispose(rsa);
CkPfx_Dispose(pfx);
CkPrivateKey_Dispose(privKey);
}