aboutsummaryrefslogtreecommitdiff
path: root/src/cz
diff options
context:
space:
mode:
Diffstat (limited to 'src/cz')
-rw-r--r--src/cz/crcs/ectester/reader/test/DefaultSuite.java7
-rw-r--r--src/cz/crcs/ectester/reader/test/TestSuite.java74
-rw-r--r--src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java5
3 files changed, 63 insertions, 23 deletions
diff --git a/src/cz/crcs/ectester/reader/test/DefaultSuite.java b/src/cz/crcs/ectester/reader/test/DefaultSuite.java
index 722f375..8fea661 100644
--- a/src/cz/crcs/ectester/reader/test/DefaultSuite.java
+++ b/src/cz/crcs/ectester/reader/test/DefaultSuite.java
@@ -23,11 +23,12 @@ public class DefaultSuite extends TestSuite {
public void setup(CardMngr cardManager) throws IOException {
tests.add(new Test.Simple(new Command.Support(cardManager), Result.Value.ANY));
if (cfg.namedCurve != null) {
+ String desc = "Default tests over the " + cfg.namedCurve + " curve category.";
if (cfg.primeField) {
- tests.addAll(defaultCategoryTests(cardManager, cfg.namedCurve, KeyPair.ALG_EC_FP, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS));
+ tests.addAll(defaultCategoryTests(cardManager, cfg.namedCurve, KeyPair.ALG_EC_FP, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.ANY, Result.Value.SUCCESS, desc));
}
if (cfg.binaryField) {
- tests.addAll(defaultCategoryTests(cardManager, cfg.namedCurve, KeyPair.ALG_EC_F2M, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS));
+ tests.addAll(defaultCategoryTests(cardManager, cfg.namedCurve, KeyPair.ALG_EC_F2M, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.ANY, Result.Value.SUCCESS, desc));
}
} else {
if (cfg.all) {
@@ -60,7 +61,7 @@ public class DefaultSuite extends TestSuite {
Command curve = Command.prepareCurve(cardManager, dataStore, cfg, ECTesterApplet.KEYPAIR_BOTH, keyLength, keyType);
if (curve != null)
tests.add(new Test.Simple(curve, Result.Value.SUCCESS));
- tests.addAll(defaultCurveTests(cardManager, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.SUCCESS));
+ tests.add(defaultCurveTests(cardManager, Result.Value.SUCCESS, Result.Value.SUCCESS, Result.Value.ANY, Result.Value.SUCCESS, "Default tests."));
tests.add(new Test.Simple(new Command.Cleanup(cardManager), Result.Value.ANY));
}
}
diff --git a/src/cz/crcs/ectester/reader/test/TestSuite.java b/src/cz/crcs/ectester/reader/test/TestSuite.java
index 3b8476f..c0e8e91 100644
--- a/src/cz/crcs/ectester/reader/test/TestSuite.java
+++ b/src/cz/crcs/ectester/reader/test/TestSuite.java
@@ -6,10 +6,14 @@ 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.ec.*;
+import cz.crcs.ectester.reader.ec.EC_Curve;
import java.io.IOException;
-import java.util.*;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
/**
* @author Jan Jancar johny@neuromancer.sk
@@ -43,13 +47,15 @@ public abstract class TestSuite {
}
/**
- * @param cardManager cardManager to send APDU through
- * @param generateExpected expected result of the Generate command
- * @param ecdhExpected expected result of the ordinary ECDH command
- * @param ecdsaExpected expected result of the ordinary ECDSA command
- * @return tests to run
+ * @param cardManager cardManager to send APDU through
+ * @param generateExpected expected result of the Generate command
+ * @param ecdhExpected expected result of the ordinary ECDH command
+ * @param ecdhCompressExpected expected result of ECDH with a compressed point
+ * @param ecdsaExpected expected result of the ordinary ECDSA command
+ * @param description compound test description
+ * @return test to run
*/
- List<Test> defaultCurveTests(CardMngr cardManager, Result.Value generateExpected, Result.Value ecdhExpected, Result.Value ecdsaExpected) {
+ Test defaultCurveTests(CardMngr cardManager, Result.Value generateExpected, Result.Value ecdhExpected, Result.Value ecdhCompressExpected, Result.Value ecdsaExpected, String description) {
List<Test> tests = new LinkedList<>();
tests.add(new Test.Simple(new Command.Generate(cardManager, ECTesterApplet.KEYPAIR_BOTH), generateExpected));
@@ -61,20 +67,52 @@ public abstract class TestSuite {
tests.add(new Test.Simple(new Command.ECDH(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.KEYPAIR_REMOTE, ECTesterApplet.EXPORT_FALSE, EC_Consts.CORRUPTION_FULLRANDOM, EC_Consts.KA_ECDH), Result.Value.FAILURE));
tests.add(new Test.Simple(new Command.ECDSA(cardManager, ECTesterApplet.KEYPAIR_LOCAL, ECTesterApplet.EXPORT_FALSE, null), ecdsaExpected));
- return tests;
+ return Test.Compound.function((testArray) -> {
+ Function<Result.Value, String> shouldHave = (expected) -> {
+ switch (expected) {
+ case SUCCESS:
+ return "been successful";
+ case FAILURE:
+ return "failed";
+ case ANY:
+ default:
+ return "";
+ }
+ };
+
+ for (int i = 0; i < testArray.length; ++i) {
+ Test t = testArray[i];
+ if (t.getResultValue() != Result.Value.SUCCESS) {
+ if (i == 0) { // generate
+ return new Result(Result.Value.FAILURE, "The generation of a key should have " + shouldHave.apply(generateExpected) + ", but it did not.");
+ } else if (i == 2) { // ecdh compress
+ return new Result(Result.Value.FAILURE, "The ECDH should have " + shouldHave.apply(ecdhExpected) + ", but it did not.");
+ } else if (i == 1) { // ecdh normal
+ return new Result(Result.Value.FAILURE, "The ECDH of a compressed point should have " + shouldHave.apply(ecdhCompressExpected) + ", but it did not.");
+ } else if (i <= 6) { // ecdh wrong, should fail
+ return new Result(Result.Value.FAILURE, "The ECDH of a corrupted point should have failed, but it dit not.");
+ } else { // ecdsa
+ return new Result(Result.Value.FAILURE, "The ECDSA should have " + shouldHave.apply(ecdsaExpected) + ", but it did not.");
+ }
+ }
+ }
+ return new Result(Result.Value.SUCCESS);
+ }, description, tests.toArray(new Test[0]));
}
/**
- * @param cardManager cardManager to send APDU through
- * @param category category to test
- * @param field field to test (KeyPair.ALG_EC_FP || KeyPair.ALG_EC_F2M)
- * @param setExpected expected result of the Set (curve) command
- * @param generateExpected expected result of the Generate command
- * @param ecdhExpected expected result of the ordinary ECDH command
- * @param ecdsaExpected expected result of the ordinary ECDSA command
+ * @param cardManager cardManager to send APDU through
+ * @param category category to test
+ * @param field field to test (KeyPair.ALG_EC_FP || KeyPair.ALG_EC_F2M)
+ * @param setExpected expected result of the Set (curve) command
+ * @param generateExpected expected result of the Generate command
+ * @param ecdhExpected expected result of the ordinary ECDH command
+ * @param ecdhCompressedExpected
+ * @param ecdsaExpected expected result of the ordinary ECDSA command
+ * @param description compound test description
* @return tests to run
*/
- List<Test> defaultCategoryTests(CardMngr cardManager, String category, byte field, Result.Value setExpected, Result.Value generateExpected, Result.Value ecdhExpected, Result.Value ecdsaExpected) {
+ List<Test> defaultCategoryTests(CardMngr cardManager, String category, byte field, Result.Value setExpected, Result.Value generateExpected, Result.Value ecdhExpected, Result.Value ecdhCompressedExpected, Result.Value ecdsaExpected, String description) {
List<Test> tests = new LinkedList<>();
Map<String, EC_Curve> curves = dataStore.getObjects(EC_Curve.class, category);
if (curves == null)
@@ -84,7 +122,7 @@ public abstract class TestSuite {
if (curve.getField() == field && (curve.getBits() == cfg.bits || cfg.all)) {
tests.add(new Test.Simple(new Command.Allocate(cardManager, ECTesterApplet.KEYPAIR_BOTH, curve.getBits(), field), Result.Value.SUCCESS));
tests.add(new Test.Simple(new Command.Set(cardManager, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), setExpected));
- tests.addAll(defaultCurveTests(cardManager, generateExpected, ecdhExpected, ecdsaExpected));
+ tests.add(defaultCurveTests(cardManager, generateExpected, ecdhExpected, ecdhCompressedExpected, ecdsaExpected, description));
tests.add(new Test.Simple(new Command.Cleanup(cardManager), Result.Value.ANY));
}
}
diff --git a/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java b/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java
index 76fc9d9..20cb405 100644
--- a/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java
+++ b/src/cz/crcs/ectester/reader/test/WrongCurvesSuite.java
@@ -21,11 +21,12 @@ public class WrongCurvesSuite extends TestSuite {
/* Just do the default tests on the wrong curves.
* These should generally fail, the curves aren't curves.
*/
+ String desc = "Default tests over wrong curve params.";
if (cfg.primeField) {
- tests.addAll(defaultCategoryTests(cardManager, cfg.testSuite, KeyPair.ALG_EC_FP, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE));
+ tests.addAll(defaultCategoryTests(cardManager, cfg.testSuite, KeyPair.ALG_EC_FP, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, desc));
}
if (cfg.binaryField) {
- tests.addAll(defaultCategoryTests(cardManager, cfg.testSuite, KeyPair.ALG_EC_F2M, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE));
+ tests.addAll(defaultCategoryTests(cardManager, cfg.testSuite, KeyPair.ALG_EC_F2M, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, Result.Value.FAILURE, desc));
}
}
}