]> WPIA git - gigi.git/commitdiff
Certificate testCase fix error on mac.
authorFelix Dörre <felix@dogcraft.de>
Wed, 23 Jul 2014 07:54:45 +0000 (09:54 +0200)
committerFelix Dörre <felix@dogcraft.de>
Thu, 24 Jul 2014 23:44:32 +0000 (01:44 +0200)
 (... why does openssl on mac output other formats?)

tests/org/cacert/gigi/testUtils/PemKey.java

index 14d282fdce4e60c6566dea16a6ee908223589900..1bf2c2508eac84b5a9224c28e68ccb675a1dbac6 100644 (file)
@@ -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);