diff options
| author | J08nY | 2017-12-03 20:59:41 +0100 |
|---|---|---|
| committer | J08nY | 2017-12-03 20:59:41 +0100 |
| commit | da09715d9ec955b4b139b45a1b2c5270ca0ebf2d (patch) | |
| tree | 2f4e711668e406f66d524e50ec4c59828e0d0d39 | |
| parent | da2f36d4d313dc4cc736d8789700d78e052d1fc8 (diff) | |
| download | ECTester-da09715d9ec955b4b139b45a1b2c5270ca0ebf2d.tar.gz ECTester-da09715d9ec955b4b139b45a1b2c5270ca0ebf2d.tar.zst ECTester-da09715d9ec955b4b139b45a1b2c5270ca0ebf2d.zip | |
16 files changed, 177 insertions, 67 deletions
diff --git a/src/cz/crcs/ectester/reader/output/TestWriter.java b/src/cz/crcs/ectester/common/output/TestWriter.java index d79252d..0f3c4e6 100644 --- a/src/cz/crcs/ectester/reader/output/TestWriter.java +++ b/src/cz/crcs/ectester/common/output/TestWriter.java @@ -1,4 +1,4 @@ -package cz.crcs.ectester.reader.output; +package cz.crcs.ectester.common.output; import cz.crcs.ectester.common.test.Test; import cz.crcs.ectester.reader.test.TestSuite; diff --git a/src/cz/crcs/ectester/common/output/TestableWriter.java b/src/cz/crcs/ectester/common/output/TestableWriter.java new file mode 100644 index 0000000..2097254 --- /dev/null +++ b/src/cz/crcs/ectester/common/output/TestableWriter.java @@ -0,0 +1,39 @@ +package cz.crcs.ectester.common.output; + +import cz.crcs.ectester.common.test.BaseTestable; +import cz.crcs.ectester.common.test.Testable; + +import java.io.OutputStream; +import java.io.PrintStream; + +/** + * @author Jan Jancar johny@neuromancer.sk + */ +public class TestableWriter { + private PrintStream output; + + public TestableWriter(PrintStream output) { + this.output = output; + } + + public TestableWriter(OutputStream output) { + this(new PrintStream(output)); + } + + + public String outputTestableMeta(BaseTestable t) { + return null; + } + + public void writeTestableMeta(BaseTestable t) { + + } + + public String outputTestable(BaseTestable t) { + return null; + } + + public void writeTestable(BaseTestable t) { + + } +} diff --git a/src/cz/crcs/ectester/common/test/BaseTestable.java b/src/cz/crcs/ectester/common/test/BaseTestable.java new file mode 100644 index 0000000..6a63b13 --- /dev/null +++ b/src/cz/crcs/ectester/common/test/BaseTestable.java @@ -0,0 +1,35 @@ +package cz.crcs.ectester.common.test; + +import java.util.Collections; +import java.util.Map; + +/** + * @author Jan Jancar johny@neuromancer.sk + */ +public abstract class BaseTestable implements Testable { + protected boolean hasRun; + protected boolean ok; + protected boolean error; + + protected Map<String, Object> meta; + + @Override + public boolean hasRun() { + return hasRun; + } + + @Override + public boolean ok() { + return ok; + } + + @Override + public boolean error() { + return error; + } + + @Override + public Map<String, Object> meta() { + return Collections.unmodifiableMap(meta); + } +} diff --git a/src/cz/crcs/ectester/common/test/Test.java b/src/cz/crcs/ectester/common/test/Test.java index 750a410..5f55337 100644 --- a/src/cz/crcs/ectester/common/test/Test.java +++ b/src/cz/crcs/ectester/common/test/Test.java @@ -1,5 +1,8 @@ package cz.crcs.ectester.common.test; +import java.util.Collections; +import java.util.Map; + import static cz.crcs.ectester.common.test.Result.Value; /** @@ -8,8 +11,9 @@ import static cz.crcs.ectester.common.test.Result.Value; * @author Jan Jancar johny@neuromancer.sk */ public abstract class Test implements Testable { - protected boolean hasRun = false; + protected boolean hasRun; protected Result result; + protected Map<String, Object> meta; public Result getResult() { if (!hasRun) { @@ -39,6 +43,7 @@ public abstract class Test implements Testable { return result.ok(); } + @Override public boolean error() { if (!hasRun) { return false; @@ -46,12 +51,19 @@ public abstract class Test implements Testable { return result.compareTo(Value.ERROR); } - public abstract String getDescription(); - + @Override public boolean hasRun() { return hasRun; } + @Override + public Map<String, Object> meta() { + return Collections.unmodifiableMap(meta); + } + + public abstract String getDescription(); + + @Override public abstract void run() throws TestException; } diff --git a/src/cz/crcs/ectester/common/test/Testable.java b/src/cz/crcs/ectester/common/test/Testable.java index d05d31e..e8eb321 100644 --- a/src/cz/crcs/ectester/common/test/Testable.java +++ b/src/cz/crcs/ectester/common/test/Testable.java @@ -1,15 +1,38 @@ package cz.crcs.ectester.common.test; +import java.util.Map; + /** * @author Jan Jancar johny@neuromancer.sk */ public interface Testable { + /** + * @return Whether this testable was run. + */ boolean hasRun(); + /** + * Run this Testable. + * + * @throws TestException + */ void run() throws TestException; + /** + * @return Whether this Testable was OK. + */ boolean ok(); + /** + * @return Whether an error happened. + */ boolean error(); + + /** + * Get the metadata of this Testable. + * + * @return The metadata of the testable. + */ + Map<String, Object> meta(); } diff --git a/src/cz/crcs/ectester/reader/ECTesterReader.java b/src/cz/crcs/ectester/reader/ECTesterReader.java index d32d9d8..e627099 100644 --- a/src/cz/crcs/ectester/reader/ECTesterReader.java +++ b/src/cz/crcs/ectester/reader/ECTesterReader.java @@ -26,6 +26,7 @@ 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.test.TestException; import cz.crcs.ectester.common.util.ByteUtil; import cz.crcs.ectester.data.EC_Store; diff --git a/src/cz/crcs/ectester/reader/output/TextTestWriter.java b/src/cz/crcs/ectester/reader/output/TextTestWriter.java index dc285b5..a4bb33e 100644 --- a/src/cz/crcs/ectester/reader/output/TextTestWriter.java +++ b/src/cz/crcs/ectester/reader/output/TextTestWriter.java @@ -1,5 +1,6 @@ package cz.crcs.ectester.reader.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.reader.test.CommandTest; diff --git a/src/cz/crcs/ectester/reader/output/XMLTestWriter.java b/src/cz/crcs/ectester/reader/output/XMLTestWriter.java index ebc93ac..1a94984 100644 --- a/src/cz/crcs/ectester/reader/output/XMLTestWriter.java +++ b/src/cz/crcs/ectester/reader/output/XMLTestWriter.java @@ -1,5 +1,6 @@ package cz.crcs.ectester.reader.output; +import cz.crcs.ectester.common.output.TestWriter; import cz.crcs.ectester.common.test.CompoundTest; import cz.crcs.ectester.common.util.ByteUtil; import cz.crcs.ectester.reader.command.Command; diff --git a/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java b/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java index d8350ac..e0038fd 100644 --- a/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java +++ b/src/cz/crcs/ectester/reader/output/YAMLTestWriter.java @@ -1,5 +1,6 @@ package cz.crcs.ectester.reader.output; +import cz.crcs.ectester.common.output.TestWriter; import cz.crcs.ectester.common.test.CompoundTest; import cz.crcs.ectester.common.util.ByteUtil; import cz.crcs.ectester.reader.command.Command; diff --git a/src/cz/crcs/ectester/reader/response/Response.java b/src/cz/crcs/ectester/reader/response/Response.java index d8edf9e..3b5d98b 100644 --- a/src/cz/crcs/ectester/reader/response/Response.java +++ b/src/cz/crcs/ectester/reader/response/Response.java @@ -13,7 +13,6 @@ import javax.smartcardio.ResponseAPDU; * @author Jan Jancar johny@neuromancer.sk */ public abstract class Response { - private ResponseAPDU resp; private long time; private short[] sws; @@ -88,6 +87,10 @@ public abstract class Response { return (short) resp.getSW(); } + public short[] getSWs() { + return sws; + } + public short getSW(int index) { return sws[index]; } diff --git a/src/cz/crcs/ectester/reader/test/CommandTestable.java b/src/cz/crcs/ectester/reader/test/CommandTestable.java new file mode 100644 index 0000000..f09a736 --- /dev/null +++ b/src/cz/crcs/ectester/reader/test/CommandTestable.java @@ -0,0 +1,47 @@ +package cz.crcs.ectester.reader.test; + +import cz.crcs.ectester.common.test.BaseTestable; +import cz.crcs.ectester.common.test.TestException; +import cz.crcs.ectester.reader.command.Command; +import cz.crcs.ectester.reader.response.Response; + +import javax.smartcardio.CardException; + +/** + * @author Jan Jancar johny@neuromancer.sk + */ +public class CommandTestable extends BaseTestable { + private Command command; + private Response response; + + public CommandTestable(Command command) { + this.command = command; + } + + public Command getCommand() { + return command; + } + + public Response getResponse() { + return response; + } + + @Override + public void run() throws TestException { + try { + response = command.send(); + } catch (CardException e) { + throw new TestException(e); + } + + hasRun = true; + if (response.error()) { + error = true; + } else if (response.successful()) { + ok = true; + } + meta.clear(); + meta.put("Natural SW", response.getNaturalSW()); + meta.put("SWs", response.getSWs()); + } +} diff --git a/src/cz/crcs/ectester/reader/test/TestRunner.java b/src/cz/crcs/ectester/reader/test/TestRunner.java index dcc78db..e581aaa 100644 --- a/src/cz/crcs/ectester/reader/test/TestRunner.java +++ b/src/cz/crcs/ectester/reader/test/TestRunner.java @@ -2,7 +2,7 @@ package cz.crcs.ectester.reader.test; import cz.crcs.ectester.common.test.Test; import cz.crcs.ectester.common.test.TestException; -import cz.crcs.ectester.reader.output.TestWriter; +import cz.crcs.ectester.common.output.TestWriter; /** * @author Jan Jancar johny@neuromancer.sk diff --git a/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java b/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java index a9ec8a6..76f01f0 100644 --- a/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java +++ b/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java @@ -61,11 +61,13 @@ public abstract class NativeSignatureSpi extends SignatureSpi { } @Override + @Deprecated protected void engineSetParameter(String param, Object value) throws InvalidParameterException { throw new UnsupportedOperationException("setParameter() not supported"); } @Override + @Deprecated protected Object engineGetParameter(String param) throws InvalidParameterException { throw new UnsupportedOperationException("getParameter() not supported"); } diff --git a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java b/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java index ef363c3..fedf519 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java +++ b/src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java @@ -1,5 +1,6 @@ package cz.crcs.ectester.standalone.test; +import cz.crcs.ectester.common.test.BaseTestable; import cz.crcs.ectester.common.test.TestException; import cz.crcs.ectester.common.test.Testable; @@ -11,14 +12,11 @@ import java.security.interfaces.ECPublicKey; /** * @author Jan Jancar johny@neuromancer.sk */ -public class KeyAgreementTestable implements Testable { +public class KeyAgreementTestable extends BaseTestable { private KeyAgreement ka; private ECPrivateKey privateKey; private ECPublicKey publicKey; private byte[] secret; - private boolean hasRun; - private boolean error = false; - private boolean ok; public KeyAgreementTestable(KeyAgreement ka, ECPrivateKey privateKey, ECPublicKey publicKey) { this.ka = ka; @@ -34,11 +32,6 @@ public class KeyAgreementTestable implements Testable { } @Override - public boolean hasRun() { - return hasRun; - } - - @Override public void run() throws TestException { try { ka.init(privateKey); @@ -66,14 +59,4 @@ public class KeyAgreementTestable implements Testable { ok = true; hasRun = true; } - - @Override - public boolean ok() { - return ok; - } - - @Override - public boolean error() { - return error; - } } diff --git a/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java b/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java index 381ce70..5a891b7 100644 --- a/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java +++ b/src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java @@ -1,22 +1,18 @@ package cz.crcs.ectester.standalone.test; +import cz.crcs.ectester.common.test.BaseTestable; import cz.crcs.ectester.common.test.TestException; -import cz.crcs.ectester.common.test.Testable; import java.security.InvalidAlgorithmParameterException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.spec.ECParameterSpec; -public class KeyGenerationTestable implements Testable { - +public class KeyGenerationTestable extends BaseTestable { private KeyPair kp; private KeyPairGenerator kpg; private int keysize = 0; private ECParameterSpec spec = null; - private boolean hasRun; - private boolean error = false; - private boolean ok; public KeyGenerationTestable(KeyPairGenerator kpg) { this.kpg = kpg; @@ -37,11 +33,6 @@ public class KeyGenerationTestable implements Testable { } @Override - public boolean hasRun() { - return hasRun; - } - - @Override public void run() throws TestException { try { if (spec != null) { @@ -58,14 +49,4 @@ public class KeyGenerationTestable implements Testable { hasRun = true; ok = true; } - - @Override - public boolean ok() { - return ok; - } - - @Override - public boolean error() { - return error; - } } diff --git a/src/cz/crcs/ectester/standalone/test/SignatureTestable.java b/src/cz/crcs/ectester/standalone/test/SignatureTestable.java index 5f58b4a..8b6815b 100644 --- a/src/cz/crcs/ectester/standalone/test/SignatureTestable.java +++ b/src/cz/crcs/ectester/standalone/test/SignatureTestable.java @@ -1,5 +1,6 @@ package cz.crcs.ectester.standalone.test; +import cz.crcs.ectester.common.test.BaseTestable; import cz.crcs.ectester.common.test.TestException; import cz.crcs.ectester.common.test.Testable; @@ -9,8 +10,7 @@ import java.security.SignatureException; import java.security.interfaces.ECPrivateKey; import java.security.interfaces.ECPublicKey; -public class SignatureTestable implements Testable { - +public class SignatureTestable extends BaseTestable { private Signature sig; private ECPrivateKey signKey; private ECPublicKey verifyKey; @@ -18,10 +18,6 @@ public class SignatureTestable implements Testable { private byte[] signature; private boolean verified; - private boolean hasRun; - private boolean error; - private boolean ok; - public SignatureTestable(Signature sig, ECPrivateKey signKey, ECPublicKey verifyKey, byte[] data) { this.sig = sig; this.signKey = signKey; @@ -38,11 +34,6 @@ public class SignatureTestable implements Testable { } @Override - public boolean hasRun() { - return hasRun; - } - - @Override public void run() throws TestException { try { sig.initSign(signKey); @@ -89,14 +80,4 @@ public class SignatureTestable implements Testable { ok = true; hasRun = true; } - - @Override - public boolean ok() { - return ok; - } - - @Override - public boolean error() { - return error; - } } |
