Added XorUpdate utility to help prepare auto-updates.

This commit is contained in:
catbref 2019-06-17 09:36:40 +01:00
parent 877c126ba3
commit 8727780b77
2 changed files with 59 additions and 1 deletions

View File

@ -0,0 +1,58 @@
package org.qora;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.qora.controller.AutoUpdate;
public class XorUpdate {
private static final byte XOR_VALUE = AutoUpdate.XOR_VALUE;
public static void main(String args[]) {
if (args.length != 2) {
System.err.println("usage: XorUpdate <input-file> <output-file>");
System.exit(1);
}
Path inPath = Paths.get(args[0]);
if (!Files.isReadable(inPath)) {
System.err.println(String.format("Cannot open '%s'", args[0]));
System.exit(2);
}
Path outPath = Paths.get(args[1]);
try (InputStream in = Files.newInputStream(inPath); OutputStream out = Files.newOutputStream(outPath)) {
byte[] buffer = new byte[1024 * 1024];
do {
int nread = in.read(buffer);
if (nread == -1)
break;
for (int i = 0; i < nread; ++i)
buffer[i] ^= XOR_VALUE;
out.write(buffer, 0, nread);
} while (true);
out.flush();
} catch (IOException e) {
System.err.println(e.getLocalizedMessage());
try {
Files.deleteIfExists(outPath);
} catch (IOException e1) {
System.err.println(e.getLocalizedMessage());
}
System.exit(2);
}
System.exit(0);
}
}

View File

@ -50,7 +50,7 @@ public class AutoUpdate extends Thread {
private static final int EXPECTED_DATA_LENGTH = Transformer.TIMESTAMP_LENGTH + GIT_COMMIT_HASH_LENGTH + Transformer.SHA256_LENGTH; private static final int EXPECTED_DATA_LENGTH = Transformer.TIMESTAMP_LENGTH + GIT_COMMIT_HASH_LENGTH + Transformer.SHA256_LENGTH;
/** This byte value used to hide contents from deep-inspection firewalls in case they block updates. */ /** This byte value used to hide contents from deep-inspection firewalls in case they block updates. */
private static final byte XOR_VALUE = (byte) 0x5a; public static final byte XOR_VALUE = (byte) 0x5a;
private static AutoUpdate instance; private static AutoUpdate instance;