use of org.tomitribe.util.Pipe in project churchkey by tomitribe.
the class Asn1Dump method dump.
public static String dump(final byte[] bytes) throws IOException {
final File der = File.createTempFile("der", ".dump");
if (bytes[0] == '-' && bytes[1] == '-') {
final Pem pem = Pem.parse(bytes);
IO.copy(pem.getData(), der);
} else {
IO.copy(bytes, der);
}
final PrintString err = new PrintString();
final PrintString out = new PrintString();
final ProcessBuilder builder = new ProcessBuilder("openssl", "asn1parse", "-i", "-inform", "DER", "-in", der.getAbsolutePath(), "-dump");
final Process process = builder.start();
final Future<Pipe> o = Pipe.pipe(process.getInputStream(), out);
final Future<Pipe> e = Pipe.pipe(process.getErrorStream(), err);
try {
final int i = process.waitFor();
o.get();
e.get();
if (i != 0) {
throw new IllegalStateException("Exit code " + i + "\n" + err);
}
} catch (InterruptedException | ExecutionException exception) {
throw new IllegalStateException(exception);
} finally {
out.close();
err.close();
der.delete();
}
return out.toString();
}
Aggregations