- Fix arg processing again
   - Change static fields to avoid early context init
   - Reduce PRNG buffer size for faster signing
This commit is contained in:
zzz
2013-09-19 15:21:53 +00:00
parent 9f2fa6a8be
commit 89034e1f9d

View File

@@ -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;