Unicode C
Unicode C
Get a Certificate's Key Size
See more Certificates Examples
Demonstrates how to get the RSA key size of a certificate (for example, 1024-bit, 2048-bit, etc.)Chilkat Unicode C Downloads
#include <C_CkStringBuilderW.h>
#include <C_CkCertW.h>
#include <C_CkPublicKeyW.h>
#include <C_CkXmlW.h>
#include <C_CkBinDataW.h>
void ChilkatSample(void)
{
BOOL success;
HCkStringBuilderW sbCertBase64;
HCkCertW cert;
HCkPublicKeyW pubKey;
int numBits;
HCkXmlW xml;
HCkBinDataW binDat;
success = FALSE;
// For this example, I have a certificate in raw base64 format (not PEM),
// that looks like this: "MIIGkDCCBHigAwIBAgIUMDA ... s/iqLsLA=="
sbCertBase64 = CkStringBuilderW_Create();
success = CkStringBuilderW_LoadFile(sbCertBase64,L"qa_data/certs/base64Cert.txt",L"utf-8");
cert = CkCertW_Create();
success = CkCertW_LoadFromBase64(cert,CkStringBuilderW_getAsString(sbCertBase64));
if (success == FALSE) {
wprintf(L"%s\n",CkCertW_lastErrorText(cert));
CkStringBuilderW_Dispose(sbCertBase64);
CkCertW_Dispose(cert);
return;
}
// Get the public key.
pubKey = CkPublicKeyW_Create();
CkCertW_GetPublicKey(cert,pubKey);
numBits = CkPublicKeyW_getKeySize(pubKey);
wprintf(L"Number of bits = %d\n",numBits);
// If using an older version of Chilkat, the key size can be obtained like this:
xml = CkXmlW_Create();
CkXmlW_LoadXml(xml,CkPublicKeyW_getXml(pubKey));
binDat = CkBinDataW_Create();
CkBinDataW_AppendEncoded(binDat,CkXmlW_getChildContent(xml,L"Modulus"),L"base64");
numBits = 8 * CkBinDataW_getNumBytes(binDat);
wprintf(L"Number of bits = %d\n",numBits);
CkStringBuilderW_Dispose(sbCertBase64);
CkCertW_Dispose(cert);
CkPublicKeyW_Dispose(pubKey);
CkXmlW_Dispose(xml);
CkBinDataW_Dispose(binDat);
}