diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cz/crcs/ectester/common/output/TestableWriter.java | 35 | ||||
| -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.java | 3 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/ECTesterReader.java | 3 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/output/ResponseWriter.java | 8 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/reader/test/CommandTestable.java | 4 |
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()); } } |
