]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/DevelLauncher.java
Changing GigiConfig Exchange format to tar.
[gigi.git] / src / org / cacert / gigi / DevelLauncher.java
index d3368c0dd96bcf55dab9e9653a887d181419b508..74a4ae6a515ff95385e41a147c1c120a7fd27d1b 100644 (file)
@@ -7,10 +7,15 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.Properties;
 
+import org.kamranzafar.jtar.TarEntry;
+import org.kamranzafar.jtar.TarHeader;
+import org.kamranzafar.jtar.TarOutputStream;
+
 public class DevelLauncher {
        public static void main(String[] args) throws Exception {
                Properties mainProps = new Properties();
@@ -36,19 +41,29 @@ public class DevelLauncher {
                Launcher.main(args);
                System.setIn(oldin);
        }
-       public static void writeGigiConfig(DataOutputStream target,
-                       byte[] keystorepw, byte[] truststorepw, Properties mainprop,
-                       byte[] cacerts, byte[] keystore) throws IOException {
-               writeChunk(target, GigiConfig.GIGI_CONFIG_VERSION.getBytes());
-               writeChunk(target, keystorepw);
-               writeChunk(target, truststorepw);
-               ByteArrayOutputStream props = new ByteArrayOutputStream();
-               mainprop.store(props, "");
-               writeChunk(target, props.toByteArray());
-               writeChunk(target, cacerts);
-               writeChunk(target, keystore);
+       public static void writeGigiConfig(OutputStream target, byte[] keystorepw,
+                       byte[] truststorepw, Properties mainprop, byte[] cacerts,
+                       byte[] keystore) throws IOException {
+               TarOutputStream tos = new TarOutputStream(target);
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               mainprop.store(baos, "");
+
+               putTarEntry(baos.toByteArray(), tos, "gigi.properties");
+               putTarEntry(keystorepw, tos, "keystorepw");
+               putTarEntry(truststorepw, tos, "truststorepw");
+               putTarEntry(keystore, tos, "keystore.pkcs12");
+               putTarEntry(cacerts, tos, "cacerts.jks");
+               tos.close();
 
        }
+       private static void putTarEntry(byte[] data, TarOutputStream tos,
+                       String name) throws IOException {
+               TarHeader th = new TarHeader();
+               th.name = new StringBuffer(name);
+               th.size = data.length;
+               tos.putNextEntry(new TarEntry(th));
+               tos.write(data);
+       }
        public static void writeChunk(DataOutputStream dos, byte[] chunk)
                        throws IOException {
                dos.writeInt(chunk.length);