aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-05-24 01:12:26 +0200
committerJ08nY2017-05-24 01:12:26 +0200
commitd6d1f38f8c8cf5bf9f6b1acc714d191e04632d56 (patch)
tree89e557587dd68ee0efd7ecd7f3aa66408d9999e3
parent931d6b12b301eef7cfdd1dd54bd9aef4b63c746a (diff)
downloadECTester-d6d1f38f8c8cf5bf9f6b1acc714d191e04632d56.tar.gz
ECTester-d6d1f38f8c8cf5bf9f6b1acc714d191e04632d56.tar.zst
ECTester-d6d1f38f8c8cf5bf9f6b1acc714d191e04632d56.zip
-rw-r--r--!uploader/ectester.capbin14877 -> 14882 bytes
-rw-r--r--dist/ECTester.jarbin710757 -> 712232 bytes
-rw-r--r--src/cz/crcs/ectester/reader/ECTester.java37
-rw-r--r--src/cz/crcs/ectester/reader/TestSuite.java27
4 files changed, 39 insertions, 25 deletions
diff --git a/!uploader/ectester.cap b/!uploader/ectester.cap
index c0b0b0b..cf783e5 100644
--- a/!uploader/ectester.cap
+++ b/!uploader/ectester.cap
Binary files differ
diff --git a/dist/ECTester.jar b/dist/ECTester.jar
index 21b95f5..d672e37 100644
--- a/dist/ECTester.jar
+++ b/dist/ECTester.jar
Binary files differ
diff --git a/src/cz/crcs/ectester/reader/ECTester.java b/src/cz/crcs/ectester/reader/ECTester.java
index 4ba8e9a..b1bd1b5 100644
--- a/src/cz/crcs/ectester/reader/ECTester.java
+++ b/src/cz/crcs/ectester/reader/ECTester.java
@@ -150,8 +150,14 @@ public class ECTester {
System.err.println("Not a number. " + nfex.getMessage());
} catch (FileNotFoundException fnfe) {
System.err.println("File " + fnfe.getMessage() + " not found.");
- } catch (ParseException | IOException | CardException ex) {
+ } catch (ParseException | IOException ex) {
System.err.println(ex.getMessage());
+ } catch (CardException ex) {
+ if (systemOutLogger != null)
+ systemOutLogger.println(ex.getMessage());
+ } finally {
+ if (systemOutLogger != null)
+ systemOutLogger.flush();
}
}
@@ -201,6 +207,7 @@ public class ECTester {
*
* -f / --fresh
* -s / --simulate
+ * -y / --yes
*/
OptionGroup actions = new OptionGroup();
actions.setRequired(true);
@@ -250,6 +257,7 @@ public class ECTester {
opts.addOption(Option.builder("f").longOpt("fresh").desc("Generate fresh keys (set domain parameters before every generation).").build());
opts.addOption(Option.builder("s").longOpt("simulate").desc("Simulate a card with jcardsim instead of using a terminal.").build());
+ opts.addOption(Option.builder("y").longOpt("yes").desc("Accept all warnings and prompts.").build());
CommandLineParser parser = new DefaultParser();
return parser.parse(opts, args);
@@ -385,32 +393,35 @@ public class ECTester {
switch (cfg.testSuite) {
case "default":
- suite = new TestSuite.Default(dataStore, cfg);
+ suite = new TestSuite.Default(dataStore, cfg, systemOutLogger);
break;
case "test-vectors":
- suite = new TestSuite.TestVectors(dataStore, cfg);
+ suite = new TestSuite.TestVectors(dataStore, cfg, systemOutLogger);
break;
default:
// These tests are dangerous, prompt before them.
System.out.println("The test you selected (" + cfg.testSuite + ") is potentially dangerous.");
System.out.println("Some of these tests have caused temporary DoS of some cards.");
- System.out.print("Do you want to proceed? (y/n): ");
- Scanner in = new Scanner(System.in);
- String confirmation = in.nextLine();
- if (!Arrays.asList("yes", "YES", "y", "Y").contains(confirmation)) {
- return;
+ if (!cfg.yes) {
+ System.out.print("Do you want to proceed? (y/n): ");
+ Scanner in = new Scanner(System.in);
+ String confirmation = in.nextLine();
+ if (!Arrays.asList("yes", "YES", "y", "Y").contains(confirmation)) {
+ return;
+ }
+ in.close();
}
- in.close();
+
switch (cfg.testSuite) {
case "wrong":
- suite = new TestSuite.Wrong(dataStore, cfg);
+ suite = new TestSuite.Wrong(dataStore, cfg, systemOutLogger);
break;
case "nonprime":
- suite = new TestSuite.NonPrime(dataStore, cfg);
+ suite = new TestSuite.NonPrime(dataStore, cfg, systemOutLogger);
break;
case "invalid":
- suite = new TestSuite.Invalid(dataStore, cfg);
+ suite = new TestSuite.Invalid(dataStore, cfg, systemOutLogger);
break;
default:
System.err.println("Unknown test suite.");
@@ -595,6 +606,7 @@ public class ECTester {
public String output;
public boolean fresh = false;
public boolean simulate = false;
+ public boolean yes = false;
//Action-related ions
public String listNamed;
@@ -642,6 +654,7 @@ public class ECTester {
output = cli.getOptionValue("output");
fresh = cli.hasOption("fresh");
simulate = cli.hasOption("simulate");
+ yes = cli.hasOption("yes");
if (cli.hasOption("list-named")) {
listNamed = cli.getOptionValue("list-named");
diff --git a/src/cz/crcs/ectester/reader/TestSuite.java b/src/cz/crcs/ectester/reader/TestSuite.java
index 414c2a9..958c51d 100644
--- a/src/cz/crcs/ectester/reader/TestSuite.java
+++ b/src/cz/crcs/ectester/reader/TestSuite.java
@@ -4,7 +4,6 @@ import cz.crcs.ectester.applet.ECTesterApplet;
import cz.crcs.ectester.applet.EC_Consts;
import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.reader.ec.*;
-import javacard.security.Key;
import javacard.security.KeyPair;
import javax.smartcardio.CardException;
@@ -18,12 +17,14 @@ public abstract class TestSuite {
EC_Store dataStore;
ECTester.Config cfg;
+ DirtyLogger systemOut;
String name;
List<Test> tests = new LinkedList<>();
- TestSuite(EC_Store dataStore, ECTester.Config cfg, String name) {
+ TestSuite(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut, String name) {
this.dataStore = dataStore;
this.cfg = cfg;
+ this.systemOut = systemOut;
this.name = name;
}
@@ -31,7 +32,7 @@ public abstract class TestSuite {
for (Test t : tests) {
if (!t.hasRun()) {
t.run();
- System.out.println(t);
+ systemOut.println(t.toString());
}
}
return tests;
@@ -97,8 +98,8 @@ public abstract class TestSuite {
public static class Default extends TestSuite {
- public Default(EC_Store dataStore, ECTester.Config cfg) {
- super(dataStore, cfg, "default");
+ public Default(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) {
+ super(dataStore, cfg, systemOut, "default");
}
@Override
@@ -150,8 +151,8 @@ public abstract class TestSuite {
public static class TestVectors extends TestSuite {
- public TestVectors(EC_Store dataStore, ECTester.Config cfg) {
- super(dataStore, cfg, "test");
+ public TestVectors(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) {
+ super(dataStore, cfg, systemOut, "test");
}
@Override
@@ -206,8 +207,8 @@ public abstract class TestSuite {
public static class NonPrime extends TestSuite {
- public NonPrime(EC_Store dataStore, ECTester.Config cfg) {
- super(dataStore, cfg, "nonprime");
+ public NonPrime(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) {
+ super(dataStore, cfg, systemOut, "nonprime");
}
@Override
@@ -242,8 +243,8 @@ public abstract class TestSuite {
public static class Invalid extends TestSuite {
- public Invalid(EC_Store dataStore, ECTester.Config cfg) {
- super(dataStore, cfg, "invalid");
+ public Invalid(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) {
+ super(dataStore, cfg, systemOut, "invalid");
}
@Override
@@ -288,8 +289,8 @@ public abstract class TestSuite {
public static class Wrong extends TestSuite {
- public Wrong(EC_Store dataStore, ECTester.Config cfg) {
- super(dataStore, cfg, "wrong");
+ public Wrong(EC_Store dataStore, ECTester.Config cfg, DirtyLogger systemOut) {
+ super(dataStore, cfg, systemOut, "wrong");
}
@Override