From ab77de9b22988a2cedc35408769b9042073056f5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Tue, 19 Apr 2016 12:17:37 +0200 Subject: [PATCH] fix: Make certs optional --- src/org/cacert/gigi/GigiConfig.java | 3 +++ src/org/cacert/gigi/Launcher.java | 8 ++++++-- src/org/cacert/gigi/email/EmailProvider.java | 8 +++++++- util-testing/org/cacert/gigi/DevelLauncher.java | 12 +++++++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/org/cacert/gigi/GigiConfig.java b/src/org/cacert/gigi/GigiConfig.java index 3a1b9eed..8b7c2202 100644 --- a/src/org/cacert/gigi/GigiConfig.java +++ b/src/org/cacert/gigi/GigiConfig.java @@ -83,6 +83,9 @@ public class GigiConfig { } public KeyStore getPrivateStore() throws GeneralSecurityException, IOException { + if (keystore == null || keystorpw == null) { + return null; + } KeyStore ks1 = KeyStore.getInstance("pkcs12"); ks1.load(new ByteArrayInputStream(keystore), keystorpw); return ks1; diff --git a/src/org/cacert/gigi/Launcher.java b/src/org/cacert/gigi/Launcher.java index f5b65d73..775823dc 100644 --- a/src/org/cacert/gigi/Launcher.java +++ b/src/org/cacert/gigi/Launcher.java @@ -151,8 +151,12 @@ public class Launcher { private void initEmails(GigiConfig conf) throws GeneralSecurityException, IOException, KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException { KeyStore privateStore = conf.getPrivateStore(); - Certificate mail = privateStore.getCertificate("mail"); - Key k = privateStore.getKey("mail", conf.getPrivateStorePw().toCharArray()); + Certificate mail = null; + Key k = null; + if (privateStore != null && privateStore.containsAlias("mail")) { + mail = privateStore.getCertificate("mail"); + k = privateStore.getKey("mail", conf.getPrivateStorePw().toCharArray()); + } EmailProvider.initSystem(conf.getMainProps(), mail, k); } diff --git a/src/org/cacert/gigi/email/EmailProvider.java b/src/org/cacert/gigi/email/EmailProvider.java index e2c4d5d6..a3203118 100644 --- a/src/org/cacert/gigi/email/EmailProvider.java +++ b/src/org/cacert/gigi/email/EmailProvider.java @@ -39,7 +39,13 @@ public abstract class EmailProvider { } protected final void sendSigned(String contents, PrintWriter output) throws IOException, GeneralSecurityException { - SMIME.smime(contents, k, c, output); + if (k == null || c == null) { + output.println("Content-Transfer-Encoding: base64"); + output.println(); + output.print(contents); + } else { + SMIME.smime(contents, k, c, output); + } } public static EmailProvider getInstance() { diff --git a/util-testing/org/cacert/gigi/DevelLauncher.java b/util-testing/org/cacert/gigi/DevelLauncher.java index df5a790d..c32b6b30 100644 --- a/util-testing/org/cacert/gigi/DevelLauncher.java +++ b/util-testing/org/cacert/gigi/DevelLauncher.java @@ -16,6 +16,7 @@ import java.lang.reflect.Field; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; import java.util.HashMap; @@ -55,7 +56,13 @@ public class DevelLauncher { ByteArrayOutputStream chunkConfig = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(chunkConfig); byte[] cacerts = Files.readAllBytes(Paths.get("config/cacerts.jks")); - byte[] keystore = Files.readAllBytes(Paths.get("config/keystore.pkcs12")); + byte[] keystore = null; + Path p = Paths.get("config/keystore.pkcs12"); + if (p.toFile().exists()) { + keystore = Files.readAllBytes(p); + } else { + mainProps.setProperty("proxy", "true"); + } DevelLauncher.writeGigiConfig(dos, "changeit".getBytes("UTF-8"), "changeit".getBytes("UTF-8"), mainProps, cacerts, keystore); dos.flush(); @@ -229,6 +236,9 @@ public class DevelLauncher { } private static void putTarEntry(byte[] data, TarOutputStream tos, String name) throws IOException { + if (data == null) { + return; + } TarHeader th = new TarHeader(); th.name = new StringBuffer(name); th.size = data.length; -- 2.39.2