aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cz/crcs/ectester/common/output/TestableWriter.java35
-rw-r--r--src/cz/crcs/ectester/common/output/TextTestWriter.java (renamed from src/cz/crcs/ectester/reader/output/TextTestWriter.java)44
-rw-r--r--src/cz/crcs/ectester/common/output/XMLTestWriter.java (renamed from src/cz/crcs/ectester/reader/output/XMLTestWriter.java)65
-rw-r--r--src/cz/crcs/ectester/common/output/YAMLTestWriter.java (renamed from src/cz/crcs/ectester/reader/output/YAMLTestWriter.java)54
-rw-r--r--src/cz/crcs/ectester/common/test/TestRunner.java3
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java3
-rw-r--r--src/cz/crcs/ectester/reader/output/ResponseWriter.java8
-rw-r--r--src/cz/crcs/ectester/reader/test/CommandTestable.java4
8 files changed, 167 insertions, 49 deletions
diff --git a/src/cz/crcs/ectester/common/output/TestableWriter.java b/src/cz/crcs/ectester/common/output/TestableWriter.java
index a15193a..9876064 100644
--- a/src/cz/crcs/ectester/common/output/TestableWriter.java
+++ b/src/cz/crcs/ectester/common/output/TestableWriter.java
@@ -1,6 +1,12 @@
package cz.crcs.ectester.common.output;
import cz.crcs.ectester.common.test.BaseTestable;
+import cz.crcs.ectester.reader.output.ResponseWriter;
+import cz.crcs.ectester.reader.response.Response;
+import cz.crcs.ectester.reader.test.CommandTestable;
+import cz.crcs.ectester.standalone.test.KeyAgreementTestable;
+import cz.crcs.ectester.standalone.test.KeyGeneratorTestable;
+import cz.crcs.ectester.standalone.test.SignatureTestable;
import java.io.OutputStream;
import java.io.PrintStream;
@@ -10,29 +16,50 @@ import java.io.PrintStream;
*/
public class TestableWriter {
private PrintStream output;
+ private ResponseWriter respWriter;
public TestableWriter(PrintStream output) {
this.output = output;
+ this.respWriter = new ResponseWriter(output);
}
public TestableWriter(OutputStream output) {
this(new PrintStream(output));
}
+ public String outputTestableSuffix(BaseTestable t) {
+ if (t instanceof CommandTestable) {
+ Response r = ((CommandTestable) t).getResponse();
+ return respWriter.responseSuffix(r);
+ } else if (t instanceof KeyAgreementTestable) {
- public String outputTestableMeta(BaseTestable t) {
+ } else if (t instanceof KeyGeneratorTestable) {
+
+ } else if (t instanceof SignatureTestable) {
+
+ }
return null;
}
- public void writeTestableMeta(BaseTestable t) {
-
+ public void writeTestableSuffix(BaseTestable t) {
+ output.println(outputTestableSuffix(t));
}
public String outputTestable(BaseTestable t) {
+ if (t instanceof CommandTestable) {
+ CommandTestable testable = (CommandTestable) t;
+ return respWriter.responseString(testable.getResponse());
+ } else if (t instanceof KeyAgreementTestable) {
+
+ } else if (t instanceof KeyGeneratorTestable) {
+
+ } else if (t instanceof SignatureTestable) {
+
+ }
return null;
}
public void writeTestable(BaseTestable t) {
-
+ output.println(outputTestable(t));
}
}
diff --git a/src/cz/crcs/ectester/reader/output/TextTestWriter.java b/src/cz/crcs/ectester/common/output/TextTestWriter.java
index b6cd51c..2691ccb 100644
--- a/src/cz/crcs/ectester/reader/output/TextTestWriter.java
+++ b/src/cz/crcs/ectester/common/output/TextTestWriter.java
@@ -1,11 +1,9 @@
-package cz.crcs.ectester.reader.output;
+package cz.crcs.ectester.common.output;
-import cz.crcs.ectester.common.output.TestWriter;
import cz.crcs.ectester.common.test.CompoundTest;
+import cz.crcs.ectester.common.test.SimpleTest;
import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.common.test.TestSuite;
-import cz.crcs.ectester.reader.test.CommandTest;
-import cz.crcs.ectester.reader.test.CardTestSuite;
import java.io.PrintStream;
@@ -14,13 +12,13 @@ import java.io.PrintStream;
*/
public class TextTestWriter implements TestWriter {
private PrintStream output;
- private ResponseWriter respWriter;
+ private TestableWriter testableWriter;
public static int BASE_WIDTH = 76;
public TextTestWriter(PrintStream output) {
this.output = output;
- this.respWriter = new ResponseWriter(output);
+ this.testableWriter = new TestableWriter(output);
}
@Override
@@ -35,27 +33,17 @@ public class TextTestWriter implements TestWriter {
}
StringBuilder out = new StringBuilder();
- if (t instanceof CommandTest) {
- CommandTest test = (CommandTest) t;
- out.append(test.ok() ? "OK " : "NOK ");
- out.append("━ ");
- int width = BASE_WIDTH - (offset + out.length());
- String widthSpec = "%-" + String.valueOf(width) + "s";
- out.append(String.format(widthSpec, t.getDescription()));
- out.append(" ┃ ");
- out.append(String.format("%-9s", test.getResultValue().name()));
- out.append(" ┃ ");
- out.append(respWriter.responseSuffix(test.getResponse()));
- } else {
+ out.append(t.ok() ? "OK " : "NOK ");
+ out.append("━ ");
+ int width = BASE_WIDTH - (offset + out.length());
+ String widthSpec = "%-" + String.valueOf(width) + "s";
+ out.append(String.format(widthSpec, t.getDescription()));
+ out.append(" ┃ ");
+ out.append(String.format("%-9s", t.getResultValue().name()));
+ out.append(" ┃ ");
+
+ if (t instanceof CompoundTest) {
CompoundTest test = (CompoundTest) t;
- out.append(test.ok() ? "OK " : "NOK ");
- out.append("┳ ");
- int width = BASE_WIDTH - (offset + out.length());
- String widthSpec = "%-" + String.valueOf(width) + "s";
- out.append(String.format(widthSpec, t.getDescription()));
- out.append(" ┃ ");
- out.append(String.format("%-9s", test.getResultValue().name()));
- out.append(" ┃ ");
out.append(test.getResultCause());
out.append(System.lineSeparator());
Test[] tests = test.getTests();
@@ -70,8 +58,10 @@ public class TextTestWriter implements TestWriter {
out.append(System.lineSeparator());
}
}
+ } else {
+ SimpleTest test = (SimpleTest) t;
+ out.append(testableWriter.outputTestableSuffix(test.getTestable()));
}
-
return out.toString();
}
diff --git a/src/cz/crcs/ectester/reader/output/XMLTestWriter.java b/src/cz/crcs/ectester/common/output/XMLTestWriter.java
index 19c14f1..4139330 100644
--- a/src/cz/crcs/ectester/reader/output/XMLTestWriter.java
+++ b/src/cz/crcs/ectester/common/output/XMLTestWriter.java
@@ -1,14 +1,13 @@
-package cz.crcs.ectester.reader.output;
+package cz.crcs.ectester.common.output;
-import cz.crcs.ectester.common.output.TestWriter;
import cz.crcs.ectester.common.test.CompoundTest;
+import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.common.test.TestSuite;
import cz.crcs.ectester.common.util.ByteUtil;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.response.Response;
-import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.reader.test.CommandTest;
-import cz.crcs.ectester.reader.test.CardTestSuite;
+import cz.crcs.ectester.standalone.test.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -23,6 +22,8 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.OutputStream;
+import java.security.PrivateKey;
+import java.security.PublicKey;
/**
* @author Jan Jancar johny@neuromancer.sk
@@ -90,14 +91,68 @@ public class XMLTestWriter implements TestWriter {
return responseElem;
}
+ private Element kaElement(KeyAgreementTestable kat) {
+ Element katElem = doc.createElement("key-agreement");
+
+ Element secret = doc.createElement("secret");
+ secret.setTextContent(ByteUtil.bytesToHex(kat.getSecret()));
+ katElem.appendChild(secret);
+
+ return katElem;
+ }
+
+ private Element kgtElement(KeyGeneratorTestable kgt) {
+ Element kgtElem = doc.createElement("key-pair-generator");
+
+ Element keyPair = doc.createElement("key-pair");
+ Element pubkey = doc.createElement("pubkey");
+ PublicKey pkey = kgt.getKeyPair().getPublic();
+ pubkey.setAttribute("algorithm", pkey.getAlgorithm());
+ pubkey.setAttribute("format", pkey.getFormat());
+ pubkey.setTextContent(ByteUtil.bytesToHex(pkey.getEncoded()));
+ keyPair.appendChild(pubkey);
+
+ Element privkey = doc.createElement("privkey");
+ PrivateKey skey = kgt.getKeyPair().getPrivate();
+ privkey.setAttribute("algorithm", skey.getAlgorithm());
+ privkey.setAttribute("format", skey.getFormat());
+ privkey.setTextContent(ByteUtil.bytesToHex(skey.getEncoded()));
+ keyPair.appendChild(privkey);
+
+ return kgtElem;
+ }
+
+ private Element sigElement(SignatureTestable sig) {
+ Element sigElem = doc.createElement("signature");
+ sigElem.setAttribute("verified", sig.getVerified() ? "true" : "false");
+
+ Element raw = doc.createElement("raw");
+ raw.setTextContent(ByteUtil.bytesToHex(sig.getSignature()));
+ sigElem.appendChild(raw);
+
+ return sigElem;
+ }
+
private Element testElement(Test t) {
Element testElem = doc.createElement("test");
if (t instanceof CommandTest) {
CommandTest test = (CommandTest) t;
- testElem.setAttribute("type", "simple");
+ testElem.setAttribute("type", "command");
testElem.appendChild(commandElement(test.getCommand()));
testElem.appendChild(responseElement(test.getResponse()));
+ } else if (t instanceof KeyAgreementTest) {
+ KeyAgreementTest test = (KeyAgreementTest) t;
+ testElem.setAttribute("type", "key-agreement");
+ testElem.appendChild(kaElement(test.getTestable()));
+ } else if (t instanceof KeyGeneratorTest) {
+ KeyGeneratorTest test = (KeyGeneratorTest) t;
+ testElem.setAttribute("type", "key-pair-generator");
+ testElem.appendChild(kgtElement(test.getTestable()));
+ } else if (t instanceof SignatureTest) {
+ SignatureTest test = (SignatureTest) t;
+ testElem.setAttribute("type", "signature");
+ testElem.appendChild(sigElement(test.getTestable()));
} else if (t instanceof CompoundTest) {
CompoundTest test = (CompoundTest) t;
testElem.setAttribute("type", "compound");
diff --git a/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java b/src/cz/crcs/ectester/common/output/YAMLTestWriter.java
index 5107970..ba9fa43 100644
--- a/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java
+++ b/src/cz/crcs/ectester/common/output/YAMLTestWriter.java
@@ -1,18 +1,19 @@
-package cz.crcs.ectester.reader.output;
+package cz.crcs.ectester.common.output;
-import cz.crcs.ectester.common.output.TestWriter;
import cz.crcs.ectester.common.test.CompoundTest;
+import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.common.test.TestSuite;
import cz.crcs.ectester.common.util.ByteUtil;
import cz.crcs.ectester.reader.command.Command;
import cz.crcs.ectester.reader.response.Response;
-import cz.crcs.ectester.common.test.Test;
import cz.crcs.ectester.reader.test.CommandTest;
-import cz.crcs.ectester.reader.test.CardTestSuite;
+import cz.crcs.ectester.standalone.test.*;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import java.io.PrintStream;
+import java.security.PrivateKey;
+import java.security.PublicKey;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -65,14 +66,57 @@ public class YAMLTestWriter implements TestWriter {
return responseObj;
}
+ private Map<String, Object> kaObject(KeyAgreementTestable kat) {
+ Map<String, Object> katObject = new HashMap<>();
+ katObject.put("secret", ByteUtil.bytesToHex(kat.getSecret()));
+ return katObject;
+ }
+
+ private Map<String, Object> kgtObject(KeyGeneratorTestable kgt) {
+ Map<String, Object> kgtObject = new HashMap<>();
+ Map<String, Object> pubObject = new HashMap<>();
+ PublicKey pkey = kgt.getKeyPair().getPublic();
+ pubObject.put("algorithm", pkey.getAlgorithm());
+ pubObject.put("format", pkey.getFormat());
+ pubObject.put("raw", ByteUtil.bytesToHex(pkey.getEncoded()));
+ kgtObject.put("pubkey", pubObject);
+
+ Map<String, Object> privObject = new HashMap<>();
+ PrivateKey skey = kgt.getKeyPair().getPrivate();
+ privObject.put("algorithm", skey.getAlgorithm());
+ privObject.put("format", skey.getFormat());
+ privObject.put("raw", ByteUtil.bytesToHex(skey.getEncoded()));
+ kgtObject.put("privkey", privObject);
+ return kgtObject;
+ }
+
+ private Map<String, Object> sigObject(SignatureTestable sig) {
+ Map<String, Object> sigObject = new HashMap<>();
+ sigObject.put("verified", sig.getVerified());
+ sigObject.put("raw", ByteUtil.bytesToHex(sig.getSignature()));
+ return sigObject;
+ }
+
private Map<String, Object> testObject(Test t) {
Map<String, Object> testObj = new HashMap<>();
if (t instanceof CommandTest) {
CommandTest test = (CommandTest) t;
- testObj.put("type", "simple");
+ testObj.put("type", "command");
testObj.put("command", commandObject(test.getCommand()));
testObj.put("response", responseObject(test.getResponse()));
+ } else if (t instanceof KeyAgreementTest) {
+ KeyAgreementTest test = (KeyAgreementTest) t;
+ testObj.put("type", "key-agreement");
+ testObj.put("key-agreement", kaObject(test.getTestable()));
+ } else if (t instanceof KeyGeneratorTest) {
+ KeyGeneratorTest test = (KeyGeneratorTest) t;
+ testObj.put("type", "key-pair-generator");
+ testObj.put("key-pair-generator", kgtObject(test.getTestable()));
+ } else if (t instanceof SignatureTest) {
+ SignatureTest test = (SignatureTest) t;
+ testObj.put("type", "signature");
+ testObj.put("signature", sigObject(test.getTestable()));
} else if (t instanceof CompoundTest) {
CompoundTest test = (CompoundTest) t;
testObj.put("type", "compound");
diff --git a/src/cz/crcs/ectester/common/test/TestRunner.java b/src/cz/crcs/ectester/common/test/TestRunner.java
index 8564d2c..ef448c2 100644
--- a/src/cz/crcs/ectester/common/test/TestRunner.java
+++ b/src/cz/crcs/ectester/common/test/TestRunner.java
@@ -1,7 +1,6 @@
package cz.crcs.ectester.common.test;
import cz.crcs.ectester.common.output.TestWriter;
-import cz.crcs.ectester.reader.test.CardTestSuite;
/**
* @author Jan Jancar johny@neuromancer.sk
@@ -10,7 +9,7 @@ public class TestRunner {
private TestSuite suite;
private TestWriter writer;
- public TestRunner(CardTestSuite suite, TestWriter writer) {
+ public TestRunner(TestSuite suite, TestWriter writer) {
this.suite = suite;
this.writer = writer;
}
diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java
index be01129..6fa7068 100644
--- a/src/cz/crcs/ectester/reader/ECTesterReader.java
+++ b/src/cz/crcs/ectester/reader/ECTesterReader.java
@@ -25,8 +25,7 @@ import cz.crcs.ectester.applet.ECTesterApplet;
import cz.crcs.ectester.applet.EC_Consts;
import cz.crcs.ectester.common.cli.CLITools;
import cz.crcs.ectester.common.ec.EC_Params;
-import cz.crcs.ectester.common.output.OutputLogger;
-import cz.crcs.ectester.common.output.TestWriter;
+import cz.crcs.ectester.common.output.*;
import cz.crcs.ectester.common.test.TestException;
import cz.crcs.ectester.common.test.TestRunner;
import cz.crcs.ectester.common.util.ByteUtil;
diff --git a/src/cz/crcs/ectester/reader/output/ResponseWriter.java b/src/cz/crcs/ectester/reader/output/ResponseWriter.java
index 1dbfdfa..f8837f8 100644
--- a/src/cz/crcs/ectester/reader/output/ResponseWriter.java
+++ b/src/cz/crcs/ectester/reader/output/ResponseWriter.java
@@ -29,11 +29,15 @@ public class ResponseWriter {
return String.format("%4d ms ┃ %s", r.getDuration() / 1000000, suffix);
}
- public void outputResponse(Response r) {
+ public String responseString(Response r) {
String out = "";
out += String.format("%-70s", r.getDescription()) + " ┃ ";
out += responseSuffix(r);
- output.println(out);
+ return out;
+ }
+
+ public void outputResponse(Response r) {
+ output.println(responseString(r));
output.flush();
}
}
diff --git a/src/cz/crcs/ectester/reader/test/CommandTestable.java b/src/cz/crcs/ectester/reader/test/CommandTestable.java
index f09a736..4025c61 100644
--- a/src/cz/crcs/ectester/reader/test/CommandTestable.java
+++ b/src/cz/crcs/ectester/reader/test/CommandTestable.java
@@ -41,7 +41,7 @@ public class CommandTestable extends BaseTestable {
ok = true;
}
meta.clear();
- meta.put("Natural SW", response.getNaturalSW());
- meta.put("SWs", response.getSWs());
+ meta.put("natural-sw", response.getNaturalSW());
+ meta.put("sws", response.getSWs());
}
}