Sample code for 30+ languages & platforms
Objective-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 Objective-C Downloads

Objective-C
#import <CkoPem.h>
#import <NSString.h>
#import <CkoPrivateKey.h>
#import <CkoCert.h>

BOOL success = NO;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

CkoPem *pem = [[CkoPem alloc] init];

// Load the PEM from a file.
// If the PEM is encrypted, provide a password.  Otherwise pass an empty string for the password.
NSString *password = @"myPassword";
success = [pem LoadPemFile: @"../myPemFiles/myPem.pem" password: password];
if (success == NO) {
    NSLog(@"%@",pem.LastErrorText);
    return;
}

// Note: If the app already has the PEM pre-loaded in a string variable, then load it 
// by calling LoadPem instead.  
NSString *pemContent = @"... the PEM contents ...";
success = [pem LoadPem: pemContent password: password];
// Check for success as before..

// Iterate over the private keys.
int numPrivateKeys = [pem.NumPrivateKeys intValue];
int i = 0;

CkoPrivateKey *privKey = [[CkoPrivateKey alloc] init];
while (i < numPrivateKeys) {
    [pem PrivateKeyAt: [NSNumber numberWithInt: i] privKey: privKey];
    NSLog(@"%@%d%@%d%@",@"Private Key ",i,@" is ",[privKey.BitLength intValue],@" in length");
    i = i + 1;
}

// Iterate over the certificates.
CkoCert *cert = [[CkoCert alloc] init];
int numCerts = [pem.NumCerts intValue];
i = 0;
while (i < numCerts) {
    [pem CertAt: [NSNumber numberWithInt: i] cert: cert];
    NSLog(@"%@%d%@%@",@"Certificate ",i,@" : ",cert.SubjectDN);
    i = i + 1;
}