forked from I2P_Developers/i2p.i2p
SU3File:
- Fix arg processing again - Change static fields to avoid early context init - Reduce PRNG buffer size for faster signing
This commit is contained in:
@@ -24,6 +24,7 @@ import java.util.List;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
import net.i2p.I2PAppContext;
|
import net.i2p.I2PAppContext;
|
||||||
import net.i2p.data.DataFormatException;
|
import net.i2p.data.DataFormatException;
|
||||||
@@ -59,7 +60,7 @@ public class SU3File {
|
|||||||
private static final byte[] MAGIC = DataHelper.getUTF8("I2Psu3");
|
private static final byte[] MAGIC = DataHelper.getUTF8("I2Psu3");
|
||||||
private static final int FILE_VERSION = 0;
|
private static final int FILE_VERSION = 0;
|
||||||
private static final int MIN_VERSION_BYTES = 16;
|
private static final int MIN_VERSION_BYTES = 16;
|
||||||
private static final int VERSION_OFFSET = Signature.SIGNATURE_BYTES;
|
private static final int VERSION_OFFSET = 40; // Signature.SIGNATURE_BYTES; avoid early ctx init
|
||||||
|
|
||||||
private static final int TYPE_ZIP = 0;
|
private static final int TYPE_ZIP = 0;
|
||||||
|
|
||||||
@@ -95,7 +96,9 @@ public class SU3File {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final ContentType DEFAULT_CONTENT_TYPE = ContentType.UNKNOWN;
|
private static final ContentType DEFAULT_CONTENT_TYPE = ContentType.UNKNOWN;
|
||||||
private static final SigType DEFAULT_SIG_TYPE = SigType.DSA_SHA1;
|
// avoid early ctx init
|
||||||
|
//private static final SigType DEFAULT_SIG_TYPE = SigType.DSA_SHA1;
|
||||||
|
private static final int DEFAULT_SIG_CODE = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -438,6 +441,10 @@ public class SU3File {
|
|||||||
if ("showversion".equals(cmd)) {
|
if ("showversion".equals(cmd)) {
|
||||||
ok = showVersionCLI(a.get(0));
|
ok = showVersionCLI(a.get(0));
|
||||||
} else if ("sign".equals(cmd)) {
|
} else if ("sign".equals(cmd)) {
|
||||||
|
// speed things up by specifying a small PRNG buffer size
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.setProperty("prng.bufferSize", "16384");
|
||||||
|
new I2PAppContext(props);
|
||||||
ok = signCLI(stype, ctype, a.get(0), a.get(1), a.get(2), a.get(3), a.get(4));
|
ok = signCLI(stype, ctype, a.get(0), a.get(1), a.get(2), a.get(3), a.get(4));
|
||||||
} else if ("verifysig".equals(cmd)) {
|
} else if ("verifysig".equals(cmd)) {
|
||||||
ok = verifySigCLI(a.get(0));
|
ok = verifySigCLI(a.get(0));
|
||||||
@@ -472,7 +479,7 @@ public class SU3File {
|
|||||||
buf.append("Available signature types:\n");
|
buf.append("Available signature types:\n");
|
||||||
for (SigType t : EnumSet.allOf(SigType.class)) {
|
for (SigType t : EnumSet.allOf(SigType.class)) {
|
||||||
buf.append(" ").append(t).append("\t(code: ").append(t.getCode()).append(')');
|
buf.append(" ").append(t).append("\t(code: ").append(t.getCode()).append(')');
|
||||||
if (t == DEFAULT_SIG_TYPE)
|
if (t.getCode() == DEFAULT_SIG_CODE)
|
||||||
buf.append(" DEFAULT");
|
buf.append(" DEFAULT");
|
||||||
buf.append('\n');
|
buf.append('\n');
|
||||||
}
|
}
|
||||||
@@ -550,12 +557,12 @@ public class SU3File {
|
|||||||
*/
|
*/
|
||||||
private static final boolean signCLI(String stype, String ctype, String inputFile, String signedFile,
|
private static final boolean signCLI(String stype, String ctype, String inputFile, String signedFile,
|
||||||
String privateKeyFile, String version, String signerName) {
|
String privateKeyFile, String version, String signerName) {
|
||||||
SigType type = stype == null ? DEFAULT_SIG_TYPE : parseSigType(stype);
|
SigType type = stype == null ? SigType.getByCode(Integer.valueOf(DEFAULT_SIG_CODE)) : parseSigType(stype);
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
System.out.println("Signature type " + stype + " is not supported");
|
System.out.println("Signature type " + stype + " is not supported");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ContentType ct = ctype == null ? DEFAULT_CONTENT_TYPE : parseContentType(stype);
|
ContentType ct = ctype == null ? DEFAULT_CONTENT_TYPE : parseContentType(ctype);
|
||||||
if (ct == null) {
|
if (ct == null) {
|
||||||
System.out.println("Content type " + ctype + " is not supported");
|
System.out.println("Content type " + ctype + " is not supported");
|
||||||
return false;
|
return false;
|
||||||
@@ -643,7 +650,7 @@ public class SU3File {
|
|||||||
* @since 0.9.9
|
* @since 0.9.9
|
||||||
*/
|
*/
|
||||||
private static final boolean genKeysCLI(String stype, String publicKeyFile, String privateKeyFile, String alias) {
|
private static final boolean genKeysCLI(String stype, String publicKeyFile, String privateKeyFile, String alias) {
|
||||||
SigType type = stype == null ? DEFAULT_SIG_TYPE : parseSigType(stype);
|
SigType type = stype == null ? SigType.getByCode(Integer.valueOf(DEFAULT_SIG_CODE)) : parseSigType(stype);
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
System.out.println("Signature type " + stype + " is not supported");
|
System.out.println("Signature type " + stype + " is not supported");
|
||||||
return false;
|
return false;
|
||||||
|
Reference in New Issue
Block a user