C
C
Iterate Keys and Certs in PEM
See more PEM Examples
Demonstrates how to access each of the private keys and certs contained within a PEM.Chilkat C Downloads
#include <C_CkPem.h>
#include <C_CkPrivateKey.h>
#include <C_CkCert.h>
void ChilkatSample(void)
{
BOOL success;
HCkPem pem;
const char *password;
const char *pemContent;
int numPrivateKeys;
int i;
HCkPrivateKey privKey;
HCkCert cert;
int numCerts;
success = FALSE;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
pem = CkPem_Create();
// Load the PEM from a file.
// If the PEM is encrypted, provide a password. Otherwise pass an empty string for the password.
password = "myPassword";
success = CkPem_LoadPemFile(pem,"../myPemFiles/myPem.pem",password);
if (success == FALSE) {
printf("%s\n",CkPem_lastErrorText(pem));
CkPem_Dispose(pem);
return;
}
// Note: If the app already has the PEM pre-loaded in a string variable, then load it
// by calling LoadPem instead.
pemContent = "... the PEM contents ...";
success = CkPem_LoadPem(pem,pemContent,password);
// Check for success as before..
// Iterate over the private keys.
numPrivateKeys = CkPem_getNumPrivateKeys(pem);
i = 0;
privKey = CkPrivateKey_Create();
while (i < numPrivateKeys) {
CkPem_PrivateKeyAt(pem,i,privKey);
printf("Private Key %d is %d in length\n",i,CkPrivateKey_getBitLength(privKey));
i = i + 1;
}
// Iterate over the certificates.
cert = CkCert_Create();
numCerts = CkPem_getNumCerts(pem);
i = 0;
while (i < numCerts) {
CkPem_CertAt(pem,i,cert);
printf("Certificate %d : %s\n",i,CkCert_subjectDN(cert));
i = i + 1;
}
CkPem_Dispose(pem);
CkPrivateKey_Dispose(privKey);
CkCert_Dispose(cert);
}