PHP Extension
PHP Extension
Get Public Key from CSR
See more CSR Examples
Demonstrates how to get the public key from a CSR.Chilkat PHP Extension Downloads
<?php
include("chilkat.php");
$success = false;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
$pem = new CkPem();
// No password is required. Pass an empty password string..
$noPassword = '';
$success = $pem->LoadPemFile('qa_data/csr/csr2.pem',$noPassword);
if ($success != true) {
print $pem->lastErrorText() . "\n";
exit;
}
$strBase64 = $pem->getEncodedItem('csr','','base64',0);
$asn = new CkAsn();
$success = $asn->LoadEncoded($strBase64,'base64');
if ($success != true) {
print $asn->lastErrorText() . "\n";
exit;
}
// Convert the ASN.1 to XML.
$xml = new CkXml();
$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 CkBinData();
$bd->AppendEncoded($strModulusHex,'hex');
$modulus64 = $bd->getEncoded('base64');
print 'modulus64 = ' . $modulus64 . "\n";
print '----' . "\n";
// Build the XML for the public key.
$xmlPubKey = new CkXml();
$xmlPubKey->put_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 CkPublicKey();
$success = $pubkey->LoadFromString($xmlPubKey->getXml());
if ($success != true) {
print $pubkey->lastErrorText() . "\n";
exit;
}
// Show the public key as PEM.
$preferPkcs1 = true;
print $pubkey->getPem($preferPkcs1) . "\n";
?>