Sample code for 30+ languages & platforms
Perl

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 Perl Downloads

Perl
use chilkat();

$success = 0;

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

$pem = chilkat::CkPem->new();

# 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 = $pem->LoadPemFile("../myPemFiles/myPem.pem",$password);
if ($success == 0) {
    print $pem->lastErrorText() . "\r\n";
    exit;
}

# 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 = $pem->LoadPem($pemContent,$password);
# Check for success as before..

# Iterate over the private keys.
$numPrivateKeys = $pem->get_NumPrivateKeys();
$i = 0;

$privKey = chilkat::CkPrivateKey->new();
while ($i < $numPrivateKeys) {
    $pem->PrivateKeyAt($i,$privKey);
    print "Private Key " . $i . " is " . $privKey->get_BitLength() . " in length" . "\r\n";
    $i = $i + 1;
}

# Iterate over the certificates.
$cert = chilkat::CkCert->new();
$numCerts = $pem->get_NumCerts();
$i = 0;
while ($i < $numCerts) {
    $pem->CertAt($i,$cert);
    print "Certificate " . $i . " : " . $cert->subjectDN() . "\r\n";
    $i = $i + 1;
}