Sample code for 30+ languages & platforms
Node.js

Get Public Key from CSR

See more CSR Examples

Demonstrates how to get the public key from a CSR.

Chilkat Node.js Downloads

Node.js
NODEJS_PRELUDE

function chilkatExample() {

    var success = false;

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

    var pem = new chilkat.Pem();

    // No password is required.  Pass an empty password string..
    var noPassword = "";
    success = pem.LoadPemFile("qa_data/csr/csr2.pem",noPassword);
    if (success !== true) {
        console.log(pem.LastErrorText);
        return;
    }

    var strBase64 = pem.GetEncodedItem("csr","","base64",0);

    var asn = new chilkat.Asn();
    success = asn.LoadEncoded(strBase64,"base64");
    if (success !== true) {
        console.log(asn.LastErrorText);
        return;
    }

    // Convert the ASN.1 to XML.
    var xml = new chilkat.Xml();
    success = xml.LoadXml(asn.AsnToXml());
    console.log(xml.GetXml());
    console.log("----");

    var strModulusHex = xml.GetChildContent("bits");
    console.log("strModulusHex = " + strModulusHex);
    console.log("----");

    // We need the modulus as base64.
    var bd = new chilkat.BinData();
    bd.AppendEncoded(strModulusHex,"hex");
    var modulus64 = bd.GetEncoded("base64");
    console.log("modulus64 = " + modulus64);
    console.log("----");

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

    console.log("RSA public key as XML:");
    console.log(xmlPubKey.GetXml());
    console.log("----");

    // Load the XML into a Chilkat public key object.
    var pubkey = new chilkat.PublicKey();
    success = pubkey.LoadFromString(xmlPubKey.GetXml());
    if (success !== true) {
        console.log(pubkey.LastErrorText);
        return;
    }

    // Show the public key as PEM.
    var preferPkcs1 = true;
    console.log(pubkey.GetPem(preferPkcs1));

}

chilkatExample();