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

Java
import com.chilkatsoft.*;

public class ChilkatExample {

  static {
    try {
        System.loadLibrary("chilkat");
    } catch (UnsatisfiedLinkError e) {
      System.err.println("Native code library failed to load.\n" + e);
      System.exit(1);
    }
  }

  public static void main(String argv[])
  {
    boolean success = false;

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

    CkPem pem = new CkPem();

    // No password is required.  Pass an empty password string..
    String noPassword = "";
    success = pem.LoadPemFile("qa_data/csr/csr2.pem",noPassword);
    if (success != true) {
        System.out.println(pem.lastErrorText());
        return;
        }

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

    CkAsn asn = new CkAsn();
    success = asn.LoadEncoded(strBase64,"base64");
    if (success != true) {
        System.out.println(asn.lastErrorText());
        return;
        }

    // Convert the ASN.1 to XML.
    CkXml xml = new CkXml();
    success = 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.
    CkBinData bd = new CkBinData();
    bd.AppendEncoded(strModulusHex,"hex");
    String modulus64 = bd.getEncoded("base64");
    System.out.println("modulus64 = " + modulus64);
    System.out.println("----");

    // Build the XML for the public key.
    CkXml 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");

    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.
    CkPublicKey pubkey = new CkPublicKey();
    success = pubkey.LoadFromString(xmlPubKey.getXml());
    if (success != true) {
        System.out.println(pubkey.lastErrorText());
        return;
        }

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