Sample code for 30+ languages & platforms
Java

Get Public Key from CSR

See more CSR Examples

Demonstrates how to get the public key from a CSR.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Asn;
import com.chilkatsoft.chilkat2.BinData;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Pem;
import com.chilkatsoft.chilkat2.PublicKey;
import com.chilkatsoft.chilkat2.Xml;

public class ChilkatExample {

    public static void main(String[] args) {
        // This requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Pem pem = new Pem();

        // No password is required.  Pass an empty password string..
        String noPassword = "";
        try {
            pem.loadPemFile("qa_data/csr/csr2.pem", noPassword);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        String strBase64 = pem.getEncodedItem("csr", "", "base64", 0);

        Asn asn = new Asn();
        try {
            asn.loadEncoded(strBase64, "base64");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Convert the ASN.1 to XML.
        Xml xml = new Xml();
        xml.loadXml(asn.asnToXml());
        System.out.println(xml.getXml());
        System.out.println("----");

        String strModulusHex = xml.getChildContent("bits");
        System.out.println("strModulusHex = " + strModulusHex);
        System.out.println("----");

        // We need the modulus as base64.
        BinData bd = new BinData();
        bd.appendEncoded(strModulusHex, "hex");
        String modulus64 = bd.getEncoded("base64");
        System.out.println("modulus64 = " + modulus64);
        System.out.println("----");

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

        System.out.println("RSA public key as XML:");
        System.out.println(xmlPubKey.getXml());
        System.out.println("----");

        // Load the XML into a Chilkat public key object.
        PublicKey pubkey = new PublicKey();
        try {
            pubkey.loadFromString(xmlPubKey.getXml());
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Show the public key as PEM.
        boolean preferPkcs1 = true;
        System.out.println(pubkey.getPem(preferPkcs1));
    }
}