Sample code for 30+ languages & platforms
PHP ActiveX

Get Public Key from CSR

See more CSR Examples

Demonstrates how to get the public key from a CSR.

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

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

$pem = new COM("Chilkat.Pem");

// No password is required.  Pass an empty password string..
$noPassword = '';
$success = $pem->LoadPemFile('qa_data/csr/csr2.pem',$noPassword);
if ($success != 1) {
    print $pem->LastErrorText . "\n";
    exit;
}

$strBase64 = $pem->getEncodedItem('csr','','base64',0);

$asn = new COM("Chilkat.Asn");
$success = $asn->LoadEncoded($strBase64,'base64');
if ($success != 1) {
    print $asn->LastErrorText . "\n";
    exit;
}

// Convert the ASN.1 to XML.
$xml = new COM("Chilkat.Xml");
$success = $xml->LoadXml($asn->asnToXml());
print $xml->getXml() . "\n";
print '----' . "\n";

$strModulusHex = $xml->getChildContent('bits');
print 'strModulusHex = ' . $strModulusHex . "\n";
print '----' . "\n";

// We need the modulus as base64.
$bd = new COM("Chilkat.BinData");
$bd->AppendEncoded($strModulusHex,'hex');
$modulus64 = $bd->getEncoded('base64');
print 'modulus64 = ' . $modulus64 . "\n";
print '----' . "\n";

// Build the XML for the public key.
$xmlPubKey = new COM("Chilkat.Xml");
$xmlPubKey->Tag = 'RSAPublicKey';
$xmlPubKey->UpdateChildContent('Modulus',$modulus64);
// The RSA exponent will always be decimal 65537 (base64 = AQAB)
$xmlPubKey->UpdateChildContent('Exponent','AQAB');

print 'RSA public key as XML:' . "\n";
print $xmlPubKey->getXml() . "\n";
print '----' . "\n";

// Load the XML into a Chilkat public key object.
$pubkey = new COM("Chilkat.PublicKey");
$success = $pubkey->LoadFromString($xmlPubKey->getXml());
if ($success != 1) {
    print $pubkey->LastErrorText . "\n";
    exit;
}

// Show the public key as PEM.
$preferPkcs1 = 1;
print $pubkey->getPem($preferPkcs1) . "\n";

?>