Sample code for 30+ languages & platforms
PHP Extension

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 PHP Extension Downloads

PHP Extension
<?php

include("chilkat.php");

$success = false;

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

$pem = new CkPem();

// 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 == false) {
    print $pem->lastErrorText() . "\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 = new CkPrivateKey();
while ($i < $numPrivateKeys) {
    $pem->PrivateKeyAt($i,$privKey);
    print 'Private Key ' . $i . ' is ' . $privKey->get_BitLength() . ' in length' . "\n";
    $i = $i + 1;
}

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


?>