aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-12-03 20:59:41 +0100
committerJ08nY2017-12-03 20:59:41 +0100
commitda09715d9ec955b4b139b45a1b2c5270ca0ebf2d (patch)
tree2f4e711668e406f66d524e50ec4c59828e0d0d39
parentda2f36d4d313dc4cc736d8789700d78e052d1fc8 (diff)
downloadECTester-da09715d9ec955b4b139b45a1b2c5270ca0ebf2d.tar.gz
ECTester-da09715d9ec955b4b139b45a1b2c5270ca0ebf2d.tar.zst
ECTester-da09715d9ec955b4b139b45a1b2c5270ca0ebf2d.zip
-rw-r--r--src/cz/crcs/ectester/common/output/TestWriter.java (renamed from src/cz/crcs/ectester/reader/output/TestWriter.java)2
-rw-r--r--src/cz/crcs/ectester/common/output/TestableWriter.java39
-rw-r--r--src/cz/crcs/ectester/common/test/BaseTestable.java35
-rw-r--r--src/cz/crcs/ectester/common/test/Test.java18
-rw-r--r--src/cz/crcs/ectester/common/test/Testable.java23
-rw-r--r--src/cz/crcs/ectester/reader/ECTesterReader.java1
-rw-r--r--src/cz/crcs/ectester/reader/output/TextTestWriter.java1
-rw-r--r--src/cz/crcs/ectester/reader/output/XMLTestWriter.java1
-rw-r--r--src/cz/crcs/ectester/reader/output/YAMLTestWriter.java1
-rw-r--r--src/cz/crcs/ectester/reader/response/Response.java5
-rw-r--r--src/cz/crcs/ectester/reader/test/CommandTestable.java47
-rw-r--r--src/cz/crcs/ectester/reader/test/TestRunner.java2
-rw-r--r--src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java2
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyAgreementTestable.java21
-rw-r--r--src/cz/crcs/ectester/standalone/test/KeyGenerationTestable.java23
-rw-r--r--src/cz/crcs/ectester/standalone/test/SignatureTestable.java23
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;
- }
}