From 98b0a9f22e27177b810f6977e44dfa803cd0c4f0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Wed, 23 Jul 2014 09:54:45 +0200 Subject: [PATCH] Certificate testCase fix error on mac. (... why does openssl on mac output other formats?) --- tests/org/cacert/gigi/testUtils/PemKey.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tests/org/cacert/gigi/testUtils/PemKey.java b/tests/org/cacert/gigi/testUtils/PemKey.java index 14d282fd..1bf2c250 100644 --- a/tests/org/cacert/gigi/testUtils/PemKey.java +++ b/tests/org/cacert/gigi/testUtils/PemKey.java @@ -1,5 +1,7 @@ package org.cacert.gigi.testUtils; +import java.io.IOException; +import java.io.InputStreamReader; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; @@ -10,10 +12,21 @@ import java.util.Base64; public class PemKey { public static PrivateKey parsePEMPrivateKey(String privKeyPEM) throws NoSuchAlgorithmException, InvalidKeySpecException { - privKeyPEM = privKeyPEM.replaceAll("-----BEGIN (RSA )?PRIVATE KEY-----", "").replace("\n", ""); + if (privKeyPEM.startsWith("-----BEGIN RSA PRIVATE KEY-----")) { + // key is pkcs1 convert to p8 + try { + Process p = Runtime.getRuntime().exec(new String[] { "openssl", "pkcs8", "-topk8", "-nocrypt" }); + p.getOutputStream().write(privKeyPEM.getBytes()); + p.getOutputStream().close(); + privKeyPEM = IOUtils.readURL(new InputStreamReader(p.getInputStream())); + } catch (IOException e) { + e.printStackTrace(); + } + } + privKeyPEM = privKeyPEM.replaceAll("-----BEGIN PRIVATE KEY-----", "").replace("\n", ""); // Remove the first and last lines - privKeyPEM = privKeyPEM.replaceAll("-----END (RSA )?PRIVATE KEY-----", ""); - + privKeyPEM = privKeyPEM.replaceAll("-----END PRIVATE KEY-----", ""); + System.out.println(privKeyPEM); // Base64 decode the data byte[] encoded = Base64.getDecoder().decode(privKeyPEM); -- 2.39.2