summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-10-25 20:17:07 +0200
committerJ08nY2017-10-25 20:17:07 +0200
commit2c6c2a2d35292368b7263fedb6db508da7ded4c4 (patch)
treee5c3c549c0ee58af6f50b1c73dc11d93f6498da3
parent69a4116df7b54ddfdaba2f8aa80ecb9e9a2ed9a7 (diff)
downloadECTester-2c6c2a2d35292368b7263fedb6db508da7ded4c4.tar.gz
ECTester-2c6c2a2d35292368b7263fedb6db508da7ded4c4.tar.zst
ECTester-2c6c2a2d35292368b7263fedb6db508da7ded4c4.zip
-rw-r--r--src/cz/crcs/ectester/reader/ECTester.java43
-rw-r--r--src/cz/crcs/ectester/reader/output/OutputWriter.java18
-rw-r--r--src/cz/crcs/ectester/reader/output/ResponseWriter.java39
-rw-r--r--src/cz/crcs/ectester/reader/output/TeeOutputStream.java4
-rw-r--r--src/cz/crcs/ectester/reader/output/TestWriter.java15
-rw-r--r--src/cz/crcs/ectester/reader/output/TextTestWriter.java (renamed from src/cz/crcs/ectester/reader/output/TextOutputWriter.java)38
-rw-r--r--src/cz/crcs/ectester/reader/output/XMLTestWriter.java (renamed from src/cz/crcs/ectester/reader/output/XMLOutputWriter.java)17
-rw-r--r--src/cz/crcs/ectester/reader/output/YAMLTestWriter.java (renamed from src/cz/crcs/ectester/reader/output/YAMLOutputWriter.java)15
-rw-r--r--src/cz/crcs/ectester/reader/test/CompositeCurvesSuite.java9
-rw-r--r--src/cz/crcs/ectester/reader/test/DefaultSuite.java11
-rw-r--r--src/cz/crcs/ectester/reader/test/InvalidCurvesSuite.java11
-rw-r--r--src/cz/crcs/ectester/reader/test/TestRunner.java29
-rw-r--r--src/cz/crcs/ectester/reader/test/TestSuite.java22
-rw-r--r--src/cz/crcs/ectester/reader/test/TestVectorSuite.java10
-rw-r--r--src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java9
15 files changed, 154 insertions, 136 deletions
diff --git a/src/cz/crcs/ectester/reader/ECTester.java b/src/cz/crcs/ectester/reader/ECTester.java
index 5a2274d..271a8e4 100644
--- a/src/cz/crcs/ectester/reader/ECTester.java
+++ b/src/cz/crcs/ectester/reader/ECTester.java
@@ -52,7 +52,8 @@ public class ECTester {
private CardMngr cardManager;
private OutputLogger logger;
- private OutputWriter writer;
+ private TestWriter testWriter;
+ private ResponseWriter respWriter;
private EC_Store dataStore;
private Config cfg;
@@ -105,22 +106,25 @@ public class ECTester {
cardManager.send(SELECT_ECTESTERAPPLET);
}
+ // Setup logger, testWriter and respWriter
logger = new OutputLogger(true, cfg.log);
if (cfg.format == null) {
- writer = new TextOutputWriter(logger.getPrintStream());
+ testWriter = new TextTestWriter(logger.getPrintStream());
} else {
switch (cfg.format) {
case "text":
- writer = new TextOutputWriter(logger.getPrintStream());
+ testWriter = new TextTestWriter(logger.getPrintStream());
break;
case "xml":
- writer = new XMLOutputWriter(logger.getOutputStream());
+ testWriter = new XMLTestWriter(logger.getOutputStream());
break;
case "yaml":
- writer = new YAMLOutputWriter(logger.getPrintStream());
+ case "yml":
+ testWriter = new YAMLTestWriter(logger.getPrintStream());
break;
}
}
+ respWriter = new ResponseWriter(logger.getPrintStream());
//do action
if (cli.hasOption("export")) {
@@ -351,7 +355,7 @@ public class ECTester {
sent.add(export);
for (Response r : sent) {
- writer.outputResponse(r);
+ respWriter.outputResponse(r);
}
EC_Params exported = new EC_Params(domain, export.getParams());
@@ -425,10 +429,10 @@ public class ECTester {
switch (cfg.testSuite) {
case "default":
- suite = new DefaultSuite(dataStore, cfg, writer);
+ suite = new DefaultSuite(dataStore, cfg);
break;
case "test-vectors":
- suite = new TestVectorSuite(dataStore, cfg, writer);
+ suite = new TestVectorSuite(dataStore, cfg);
break;
default:
// These tests are dangerous, prompt before them.
@@ -438,7 +442,7 @@ public class ECTester {
System.out.print("Do you want to proceed? (y/n): ");
Scanner in = new Scanner(System.in);
String confirmation = in.nextLine().toLowerCase();
- if (!Arrays.asList("yes","y").contains(confirmation)) {
+ if (!Arrays.asList("yes", "y").contains(confirmation)) {
return;
}
in.close();
@@ -447,13 +451,13 @@ public class ECTester {
switch (cfg.testSuite) {
case "wrong":
- suite = new WrongCurvesSuite(dataStore, cfg, writer);
+ suite = new WrongCurvesSuite(dataStore, cfg);
break;
case "composite":
- suite = new CompositeCurvesSuite(dataStore, cfg, writer);
+ suite = new CompositeCurvesSuite(dataStore, cfg);
break;
case "invalid":
- suite = new InvalidCurvesSuite(dataStore, cfg, writer);
+ suite = new InvalidCurvesSuite(dataStore, cfg);
break;
default:
System.err.println("Unknown test suite.");
@@ -461,7 +465,10 @@ public class ECTester {
}
break;
}
- suite.run(cardManager);
+
+ TestRunner runner = new TestRunner(suite, testWriter);
+ suite.setup(cardManager);
+ runner.run();
}
/**
@@ -480,7 +487,7 @@ public class ECTester {
prepare.add(curve.send());
for (Response r : prepare) {
- writer.outputResponse(r);
+ respWriter.outputResponse(r);
}
byte pubkey = (cfg.anyPublicKey || cfg.anyKey) ? ECTesterApplet.KEYPAIR_REMOTE : ECTesterApplet.KEYPAIR_LOCAL;
@@ -506,7 +513,7 @@ public class ECTester {
Response.ECDH perform = new Command.ECDH(cardManager, pubkey, privkey, ECTesterApplet.EXPORT_TRUE, EC_Consts.CORRUPTION_NONE, cfg.ECDHKA).send();
ecdh.add(perform);
for (Response r : ecdh) {
- writer.outputResponse(r);
+ respWriter.outputResponse(r);
}
if (!perform.successful() || !perform.hasSecret()) {
@@ -565,7 +572,7 @@ public class ECTester {
prepare.add(curve.send());
for (Response r : prepare) {
- writer.outputResponse(r);
+ respWriter.outputResponse(r);
}
FileWriter out = null;
@@ -583,7 +590,7 @@ public class ECTester {
Response.ECDSA perform = new Command.ECDSA(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.EXPORT_TRUE, data).send();
ecdsa.add(perform);
for (Response r : ecdsa) {
- writer.outputResponse(r);
+ respWriter.outputResponse(r);
}
if (!perform.successful() || !perform.hasSignature()) {
@@ -706,7 +713,7 @@ public class ECTester {
}
format = cli.getOptionValue("format", "text");
- if (!Arrays.asList("text", "xml", "yaml").contains(format)) {
+ if (!Arrays.asList("text", "xml", "yaml", "yml").contains(format)) {
System.err.println("Wrong output format " + format + ".");
return false;
}
diff --git a/src/cz/crcs/ectester/reader/output/OutputWriter.java b/src/cz/crcs/ectester/reader/output/OutputWriter.java
deleted file mode 100644
index 09185b1..0000000
--- a/src/cz/crcs/ectester/reader/output/OutputWriter.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cz.crcs.ectester.reader.output;
-
-import cz.crcs.ectester.reader.response.Response;
-import cz.crcs.ectester.reader.test.Test;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-
-/**
- * @author Jan Jancar johny@neuromancer.sk
- */
-public interface OutputWriter {
- void begin();
- void outputResponse(Response r);
- void outputTest(Test t);
- void end();
-}
diff --git a/src/cz/crcs/ectester/reader/output/ResponseWriter.java b/src/cz/crcs/ectester/reader/output/ResponseWriter.java
new file mode 100644
index 0000000..120fdba
--- /dev/null
+++ b/src/cz/crcs/ectester/reader/output/ResponseWriter.java
@@ -0,0 +1,39 @@
+package cz.crcs.ectester.reader.output;
+
+import cz.crcs.ectester.reader.Util;
+import cz.crcs.ectester.reader.response.Response;
+
+import java.io.PrintStream;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class ResponseWriter {
+ private PrintStream output;
+
+ public ResponseWriter(PrintStream output) {
+ this.output = output;
+ }
+
+ public String responseSuffix(Response r) {
+ StringBuilder suffix = new StringBuilder();
+ for (int j = 0; j < r.getNumSW(); ++j) {
+ short sw = r.getSW(j);
+ if (sw != 0) {
+ suffix.append(" ").append(Util.getSWString(sw));
+ }
+ }
+ if (suffix.length() == 0) {
+ suffix.append(" [").append(Util.getSW(r.getNaturalSW())).append("]");
+ }
+ return String.format("%4d ms : %s", r.getDuration() / 1000000, suffix);
+ }
+
+ public void outputResponse(Response r) {
+ String out = "";
+ out += String.format("%-70s:", r.getDescription()) + " : ";
+ out += responseSuffix(r);
+ output.println(out);
+ output.flush();
+ }
+}
diff --git a/src/cz/crcs/ectester/reader/output/TeeOutputStream.java b/src/cz/crcs/ectester/reader/output/TeeOutputStream.java
index e18d32b..2a1af99 100644
--- a/src/cz/crcs/ectester/reader/output/TeeOutputStream.java
+++ b/src/cz/crcs/ectester/reader/output/TeeOutputStream.java
@@ -22,14 +22,14 @@ public class TeeOutputStream extends OutputStream {
@Override
public void flush() throws IOException {
- for (OutputStream out :outputs) {
+ for (OutputStream out : outputs) {
out.flush();
}
}
@Override
public void close() throws IOException {
- for (OutputStream out :outputs) {
+ for (OutputStream out : outputs) {
out.close();
}
}
diff --git a/src/cz/crcs/ectester/reader/output/TestWriter.java b/src/cz/crcs/ectester/reader/output/TestWriter.java
new file mode 100644
index 0000000..74c76fb
--- /dev/null
+++ b/src/cz/crcs/ectester/reader/output/TestWriter.java
@@ -0,0 +1,15 @@
+package cz.crcs.ectester.reader.output;
+
+import cz.crcs.ectester.reader.test.Test;
+import cz.crcs.ectester.reader.test.TestSuite;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public interface TestWriter {
+ void begin(TestSuite suite);
+
+ void outputTest(Test t);
+
+ void end();
+}
diff --git a/src/cz/crcs/ectester/reader/output/TextOutputWriter.java b/src/cz/crcs/ectester/reader/output/TextTestWriter.java
index 7f9cdae..80c7204 100644
--- a/src/cz/crcs/ectester/reader/output/TextOutputWriter.java
+++ b/src/cz/crcs/ectester/reader/output/TextTestWriter.java
@@ -1,52 +1,30 @@
package cz.crcs.ectester.reader.output;
-import cz.crcs.ectester.reader.Util;
-import cz.crcs.ectester.reader.response.Response;
import cz.crcs.ectester.reader.test.Test;
+import cz.crcs.ectester.reader.test.TestSuite;
import java.io.PrintStream;
/**
* @author Jan Jancar johny@neuromancer.sk
*/
-public class TextOutputWriter implements OutputWriter {
+public class TextTestWriter implements TestWriter {
private PrintStream output;
+ private ResponseWriter respWriter;
- public TextOutputWriter(PrintStream output) {
+ public TextTestWriter(PrintStream output) {
this.output = output;
+ this.respWriter = new ResponseWriter(output);
}
@Override
- public void begin() {
+ public void begin(TestSuite suite) {
}
private String testPrefix(Test t) {
return String.format("%-4s", t.getResult() == Test.Result.SUCCESS ? "OK" : "NOK");
}
- private String responseSuffix(Response r) {
- StringBuilder suffix = new StringBuilder();
- for (int j = 0; j < r.getNumSW(); ++j) {
- short sw = r.getSW(j);
- if (sw != 0) {
- suffix.append(" ").append(Util.getSWString(sw));
- }
- }
- if (suffix.length() == 0) {
- suffix.append(" [").append(Util.getSW(r.getNaturalSW())).append("]");
- }
- return String.format("%4d ms : %s", r.getDuration() / 1000000, suffix);
- }
-
- @Override
- public void outputResponse(Response r) {
- String out = "";
- out += String.format("%-70s:", r.getDescription()) + " : ";
- out += responseSuffix(r);
- output.println(out);
- output.flush();
- }
-
private String testString(Test t) {
if (!t.hasRun())
return null;
@@ -55,7 +33,7 @@ public class TextOutputWriter implements OutputWriter {
if (t instanceof Test.Simple) {
Test.Simple test = (Test.Simple) t;
out.append(String.format("%-70s:", testPrefix(t) + " : " + test.getDescription())).append(" : ");
- out.append(responseSuffix(test.getResponse()));
+ out.append(respWriter.responseSuffix(test.getResponse()));
} else if (t instanceof Test.Compound) {
Test.Compound test = (Test.Compound) t;
Test[] tests = test.getTests();
@@ -76,6 +54,8 @@ public class TextOutputWriter implements OutputWriter {
@Override
public void outputTest(Test t) {
+ if (!t.hasRun())
+ return;
output.println(testString(t));
output.flush();
}
diff --git a/src/cz/crcs/ectester/reader/output/XMLOutputWriter.java b/src/cz/crcs/ectester/reader/output/XMLTestWriter.java
index b9f8c8f..29a97db 100644
--- a/src/cz/crcs/ectester/reader/output/XMLOutputWriter.java
+++ b/src/cz/crcs/ectester/reader/output/XMLTestWriter.java
@@ -3,13 +3,17 @@ package cz.crcs.ectester.reader.output;
import cz.crcs.ectester.reader.Util;
import cz.crcs.ectester.reader.response.Response;
import cz.crcs.ectester.reader.test.Test;
+import cz.crcs.ectester.reader.test.TestSuite;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.*;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.OutputStream;
@@ -17,18 +21,18 @@ import java.io.OutputStream;
/**
* @author Jan Jancar johny@neuromancer.sk
*/
-public class XMLOutputWriter implements OutputWriter {
+public class XMLTestWriter implements TestWriter {
private OutputStream output;
private Document doc;
private Node root;
- public XMLOutputWriter(OutputStream output) throws ParserConfigurationException {
+ public XMLTestWriter(OutputStream output) throws ParserConfigurationException {
this.output = output;
this.doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
}
@Override
- public void begin() {
+ public void begin(TestSuite suite) {
root = doc.createElement("testRun");
doc.appendChild(root);
}
@@ -64,11 +68,6 @@ public class XMLOutputWriter implements OutputWriter {
return responseElem;
}
- @Override
- public void outputResponse(Response r) {
- root.appendChild(responseElement(r));
- }
-
private Element testElement(Test t) {
Element testElem = doc.createElement("test");
diff --git a/src/cz/crcs/ectester/reader/output/YAMLOutputWriter.java b/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
index 211bd47..10d9bb9 100644
--- a/src/cz/crcs/ectester/reader/output/YAMLOutputWriter.java
+++ b/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
@@ -3,6 +3,7 @@ package cz.crcs.ectester.reader.output;
import cz.crcs.ectester.reader.Util;
import cz.crcs.ectester.reader.response.Response;
import cz.crcs.ectester.reader.test.Test;
+import cz.crcs.ectester.reader.test.TestSuite;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
@@ -15,16 +16,16 @@ import java.util.Map;
/**
* @author Jan Jancar johny@neuromancer.sk
*/
-public class YAMLOutputWriter implements OutputWriter {
+public class YAMLTestWriter implements TestWriter {
private PrintStream output;
private List<Object> testRun;
- public YAMLOutputWriter(PrintStream output) {
+ public YAMLTestWriter(PrintStream output) {
this.output = output;
}
@Override
- public void begin() {
+ public void begin(TestSuite suite) {
output.println("---");
testRun = new LinkedList<>();
}
@@ -44,11 +45,6 @@ public class YAMLOutputWriter implements OutputWriter {
return responseObj;
}
- @Override
- public void outputResponse(Response r) {
- testRun.add(responseObject(r));
- }
-
private Map<String, Object> testObject(Test t) {
Map<String, Object> testObj = new HashMap<>();
@@ -74,6 +70,8 @@ public class YAMLOutputWriter implements OutputWriter {
@Override
public void outputTest(Test t) {
+ if (!t.hasRun())
+ return;
testRun.add(testObject(t));
}
@@ -81,6 +79,7 @@ public class YAMLOutputWriter implements OutputWriter {
public void end() {
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
+ options.setPrettyFlow(true);
Yaml yaml = new Yaml(options);
Map<String, List<Object>> result = new HashMap<>();
diff --git a/src/cz/crcs/ectester/reader/test/CompositeCurvesSuite.java b/src/cz/crcs/ectester/reader/test/CompositeCurvesSuite.java
index 75c6371..76b79de 100644
--- a/src/cz/crcs/ectester/reader/test/CompositeCurvesSuite.java
+++ b/src/cz/crcs/ectester/reader/test/CompositeCurvesSuite.java
@@ -8,7 +8,7 @@ import cz.crcs.ectester.reader.ECTester;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.ec.EC_Curve;
import cz.crcs.ectester.reader.ec.EC_Key;
-import cz.crcs.ectester.reader.output.OutputWriter;
+import cz.crcs.ectester.reader.output.TestWriter;
import javacard.security.KeyPair;
import javax.smartcardio.CardException;
@@ -22,12 +22,12 @@ import java.util.Map;
*/
public class CompositeCurvesSuite extends TestSuite {
- public CompositeCurvesSuite(EC_Store dataStore, ECTester.Config cfg, OutputWriter writer) {
- super(dataStore, cfg, writer, "composite");
+ public CompositeCurvesSuite(EC_Store dataStore, ECTester.Config cfg) {
+ super(dataStore, cfg, "composite");
}
@Override
- public List<Test> run(CardMngr cardManager) throws IOException, CardException {
+ public void setup(CardMngr cardManager) {
/* Do the default tests with the public keys set to provided smallorder keys
* over composite order curves. Essentially small subgroup attacks.
* These should fail, the curves aren't safe so that if the computation with
@@ -55,6 +55,5 @@ public class CompositeCurvesSuite extends TestSuite {
tests.add(new Test.Simple(new Command.Cleanup(cardManager), Test.Result.ANY));
}
}
- return super.run(cardManager);
}
}
diff --git a/src/cz/crcs/ectester/reader/test/DefaultSuite.java b/src/cz/crcs/ectester/reader/test/DefaultSuite.java
index 2024578..de069f9 100644
--- a/src/cz/crcs/ectester/reader/test/DefaultSuite.java
+++ b/src/cz/crcs/ectester/reader/test/DefaultSuite.java
@@ -6,25 +6,21 @@ import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTester;
import cz.crcs.ectester.reader.command.Command;
-import cz.crcs.ectester.reader.output.OutputWriter;
import javacard.security.KeyPair;
-import javax.smartcardio.CardException;
import java.io.IOException;
-import java.util.List;
/**
- *
* @author Jan Jancar johny@neuromancer.sk
*/
public class DefaultSuite extends TestSuite {
- public DefaultSuite(EC_Store dataStore, ECTester.Config cfg, OutputWriter writer) {
- super(dataStore, cfg, writer, "default");
+ public DefaultSuite(EC_Store dataStore, ECTester.Config cfg) {
+ super(dataStore, cfg, "default");
}
@Override
- public List<Test> run(CardMngr cardManager) throws IOException, CardException {
+ public void setup(CardMngr cardManager) throws IOException {
tests.add(new Test.Simple(new Command.Support(cardManager), Test.Result.ANY));
if (cfg.namedCurve != null) {
if (cfg.primeField) {
@@ -57,7 +53,6 @@ public class DefaultSuite extends TestSuite {
}
}
}
- return super.run(cardManager);
}
private void defaultTests(CardMngr cardManager, short keyLength, byte keyType) throws IOException {
diff --git a/src/cz/crcs/ectester/reader/test/InvalidCurvesSuite.java b/src/cz/crcs/ectester/reader/test/InvalidCurvesSuite.java
index 20882b6..3b6cb2f 100644
--- a/src/cz/crcs/ectester/reader/test/InvalidCurvesSuite.java
+++ b/src/cz/crcs/ectester/reader/test/InvalidCurvesSuite.java
@@ -8,10 +8,8 @@ import cz.crcs.ectester.reader.ECTester;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.ec.EC_Curve;
import cz.crcs.ectester.reader.ec.EC_Key;
-import cz.crcs.ectester.reader.output.OutputWriter;
import javacard.security.KeyPair;
-import javax.smartcardio.CardException;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
@@ -19,17 +17,16 @@ import java.util.List;
import java.util.Map;
/**
- *
* @author Jan Jancar johny@neuromancer.sk
*/
public class InvalidCurvesSuite extends TestSuite {
- public InvalidCurvesSuite(EC_Store dataStore, ECTester.Config cfg, OutputWriter writer) {
- super(dataStore, cfg, writer, "invalid");
+ public InvalidCurvesSuite(EC_Store dataStore, ECTester.Config cfg) {
+ super(dataStore, cfg, "invalid");
}
@Override
- public List<Test> run(CardMngr cardManager) throws CardException, IOException {
+ public void setup(CardMngr cardManager) throws IOException {
/* Set original curves (secg/nist/brainpool). Generate local.
* Try ECDH with invalid public keys of increasing (or decreasing) order.
*/
@@ -64,7 +61,5 @@ public class InvalidCurvesSuite extends TestSuite {
}
tests.add(new Test.Simple(new Command.Cleanup(cardManager), Test.Result.ANY));
}
-
- return super.run(cardManager);
}
}
diff --git a/src/cz/crcs/ectester/reader/test/TestRunner.java b/src/cz/crcs/ectester/reader/test/TestRunner.java
new file mode 100644
index 0000000..baab6a8
--- /dev/null
+++ b/src/cz/crcs/ectester/reader/test/TestRunner.java
@@ -0,0 +1,29 @@
+package cz.crcs.ectester.reader.test;
+
+import cz.crcs.ectester.reader.output.TestWriter;
+
+import javax.smartcardio.CardException;
+
+/**
+ * @author Jan Jancar johny@neuromancer.sk
+ */
+public class TestRunner {
+ private TestSuite suite;
+ private TestWriter writer;
+
+ public TestRunner(TestSuite suite, TestWriter writer) {
+ this.suite = suite;
+ this.writer = writer;
+ }
+
+ public void run() throws CardException {
+ writer.begin(suite);
+ for (Test t : suite.getTests()) {
+ if (!t.hasRun()) {
+ t.run();
+ writer.outputTest(t);
+ }
+ }
+ writer.end();
+ }
+}
diff --git a/src/cz/crcs/ectester/reader/test/TestSuite.java b/src/cz/crcs/ectester/reader/test/TestSuite.java
index fde2266..6123a39 100644
--- a/src/cz/crcs/ectester/reader/test/TestSuite.java
+++ b/src/cz/crcs/ectester/reader/test/TestSuite.java
@@ -1,17 +1,13 @@
package cz.crcs.ectester.reader.test;
-import static cz.crcs.ectester.reader.test.Test.Result;
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.CardMngr;
import cz.crcs.ectester.reader.ECTester;
-import cz.crcs.ectester.reader.Util;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.ec.*;
-import cz.crcs.ectester.reader.output.OutputWriter;
-import cz.crcs.ectester.reader.response.Response;
-import javacard.security.KeyPair;
+import cz.crcs.ectester.reader.output.TestWriter;
import javax.smartcardio.CardException;
import java.io.IOException;
@@ -24,28 +20,16 @@ public abstract class TestSuite {
EC_Store dataStore;
ECTester.Config cfg;
- OutputWriter writer;
String name;
List<Test> tests = new LinkedList<>();
- TestSuite(EC_Store dataStore, ECTester.Config cfg, OutputWriter writer, String name) {
+ TestSuite(EC_Store dataStore, ECTester.Config cfg, String name) {
this.dataStore = dataStore;
this.cfg = cfg;
- this.writer = writer;
this.name = name;
}
- public List<Test> run(CardMngr cardManager) throws CardException, IOException {
- writer.begin();
- for (Test t : tests) {
- if (!t.hasRun()) {
- t.run();
- writer.outputTest(t);
- }
- }
- writer.end();
- return tests;
- }
+ public abstract void setup(CardMngr cardManager) throws IOException;
public List<Test> getTests() {
return Collections.unmodifiableList(tests);
diff --git a/src/cz/crcs/ectester/reader/test/TestVectorSuite.java b/src/cz/crcs/ectester/reader/test/TestVectorSuite.java
index 2098ae3..2a74d41 100644
--- a/src/cz/crcs/ectester/reader/test/TestVectorSuite.java
+++ b/src/cz/crcs/ectester/reader/test/TestVectorSuite.java
@@ -8,28 +8,25 @@ import cz.crcs.ectester.reader.ECTester;
import cz.crcs.ectester.reader.Util;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.ec.*;
-import cz.crcs.ectester.reader.output.OutputWriter;
import cz.crcs.ectester.reader.response.Response;
import javacard.security.KeyPair;
-import javax.smartcardio.CardException;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
- *
* @author Jan Jancar johny@neuromancer.sk
*/
public class TestVectorSuite extends TestSuite {
- public TestVectorSuite(EC_Store dataStore, ECTester.Config cfg, OutputWriter writer) {
- super(dataStore, cfg, writer, "test");
+ public TestVectorSuite(EC_Store dataStore, ECTester.Config cfg) {
+ super(dataStore, cfg, "test");
}
@Override
- public List<Test> run(CardMngr cardManager) throws IOException, CardException {
+ public void setup(CardMngr cardManager) throws IOException {
/* Set original curves (secg/nist/brainpool). Set keypairs from test vectors.
* Do ECDH both ways, export and verify that the result is correct.
*/
@@ -76,6 +73,5 @@ public class TestVectorSuite extends TestSuite {
tests.add(new Test.Simple(new Command.Cleanup(cardManager), Test.Result.ANY));
}
- return super.run(cardManager);
}
}
diff --git a/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java b/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java
index 3346b9f..95bbe1e 100644
--- a/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java
+++ b/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java
@@ -3,7 +3,7 @@ package cz.crcs.ectester.reader.test;
import cz.crcs.ectester.data.EC_Store;
import cz.crcs.ectester.reader.CardMngr;
import cz.crcs.ectester.reader.ECTester;
-import cz.crcs.ectester.reader.output.OutputWriter;
+import cz.crcs.ectester.reader.output.TestWriter;
import javacard.security.KeyPair;
import javax.smartcardio.CardException;
@@ -16,12 +16,12 @@ import java.util.List;
*/
public class WrongCurvesSuite extends TestSuite {
- public WrongCurvesSuite(EC_Store dataStore, ECTester.Config cfg, OutputWriter writer) {
- super(dataStore, cfg, writer, "wrong");
+ public WrongCurvesSuite(EC_Store dataStore, ECTester.Config cfg) {
+ super(dataStore, cfg, "wrong");
}
@Override
- public List<Test> run(CardMngr cardManager) throws CardException, IOException {
+ public void setup(CardMngr cardManager) throws IOException {
/* Just do the default tests on the wrong curves.
* These should generally fail, the curves aren't curves.
*/
@@ -31,6 +31,5 @@ public class WrongCurvesSuite extends TestSuite {
if (cfg.binaryField) {
tests.addAll(defaultCategoryTests(cardManager, cfg.testSuite, KeyPair.ALG_EC_F2M, Test.Result.FAILURE, Test.Result.FAILURE, Test.Result.FAILURE, Test.Result.FAILURE));
}
- return super.run(cardManager);
}
}