Perl
Perl
Get Public Key from CSR
See more CSR Examples
Demonstrates how to get the public key from a CSR.Chilkat Perl Downloads
use chilkat();
$success = 0;
# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$pem = chilkat::CkPem->new();
# 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() . "\r\n";
exit;
}
$strBase64 = $pem->getEncodedItem("csr","","base64",0);
$asn = chilkat::CkAsn->new();
$success = $asn->LoadEncoded($strBase64,"base64");
if ($success != 1) {
print $asn->lastErrorText() . "\r\n";
exit;
}
# Convert the ASN.1 to XML.
$xml = chilkat::CkXml->new();
$success = $xml->LoadXml($asn->asnToXml());
print $xml->getXml() . "\r\n";
print "----" . "\r\n";
$strModulusHex = $xml->getChildContent("bits");
print "strModulusHex = " . $strModulusHex . "\r\n";
print "----" . "\r\n";
# We need the modulus as base64.
$bd = chilkat::CkBinData->new();
$bd->AppendEncoded($strModulusHex,"hex");
$modulus64 = $bd->getEncoded("base64");
print "modulus64 = " . $modulus64 . "\r\n";
print "----" . "\r\n";
# Build the XML for the public key.
$xmlPubKey = chilkat::CkXml->new();
$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:" . "\r\n";
print $xmlPubKey->getXml() . "\r\n";
print "----" . "\r\n";
# Load the XML into a Chilkat public key object.
$pubkey = chilkat::CkPublicKey->new();
$success = $pubkey->LoadFromString($xmlPubKey->getXml());
if ($success != 1) {
print $pubkey->lastErrorText() . "\r\n";
exit;
}
# Show the public key as PEM.
$preferPkcs1 = 1;
print $pubkey->getPem($preferPkcs1) . "\r\n";