- public static KeyPair generateKeypair() throws GeneralSecurityException {
- KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
- kpg.initialize(4096);
- KeyPair keyPair = null;
- File f = new File("testKeypair");
- if (f.exists()) {
- try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f))) {
- keyPair = (KeyPair) ois.readObject();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- } else {
- keyPair = kpg.generateKeyPair();
- try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f))) {
- oos.writeObject(keyPair);
- oos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return keyPair;
- }
-
- public static String generatePEMCSR(KeyPair kp, String dn) throws GeneralSecurityException, IOException {
- return generatePEMCSR(kp, dn, new PKCS10Attributes());
- }
-
- public static String generatePEMCSR(KeyPair kp, String dn, PKCS10Attributes atts) throws GeneralSecurityException, IOException {
- return generatePEMCSR(kp, dn, atts, "SHA256WithRSA");
- }
-
- public static String generatePEMCSR(KeyPair kp, String dn, PKCS10Attributes atts, String signature) throws GeneralSecurityException, IOException {
- PKCS10 p10 = new PKCS10(kp.getPublic(), atts);
- Signature s = Signature.getInstance(signature);
- s.initSign(kp.getPrivate());
- p10.encodeAndSign(new X500Name(dn), s);
- return PEM.encode("CERTIFICATE REQUEST", p10.getEncoded());
- }
-