X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FDevelLauncher.java;h=e8df9f5bdf2d048ff54569471f12bf4ccb425167;hb=e9336bb2781a287a5542179208a869acd17c9a5a;hp=d3368c0dd96bcf55dab9e9653a887d181419b508;hpb=634b7f75c8fc2ed8799bad74731278fb59198c48;p=gigi.git diff --git a/src/org/cacert/gigi/DevelLauncher.java b/src/org/cacert/gigi/DevelLauncher.java index d3368c0d..e8df9f5b 100644 --- a/src/org/cacert/gigi/DevelLauncher.java +++ b/src/org/cacert/gigi/DevelLauncher.java @@ -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(); @@ -28,27 +33,37 @@ public class DevelLauncher { byte[] keystore = Files.readAllBytes(Paths .get("config/keystore.pkcs12")); - DevelLauncher.writeGigiConfig(dos, new byte[]{}, "changeit".getBytes(), - mainProps, cacerts, keystore); + DevelLauncher.writeGigiConfig(dos, "changeit".getBytes(), + "changeit".getBytes(), mainProps, cacerts, keystore); dos.flush(); InputStream oldin = System.in; System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray())); 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);