diff options
| author | J08nY | 2017-05-04 20:48:43 +0200 |
|---|---|---|
| committer | J08nY | 2017-05-04 20:48:43 +0200 |
| commit | 8884b0f8d55fd9cb89597ddce6f74a5e9b538f7b (patch) | |
| tree | ec48fa86d60f12d52bdb5b218b35e57b3a659643 /src/cz/crcs/ectester/reader/TestSuite.java | |
| parent | ade2dffcd7723f4414e681cd80a374c6fe8001ef (diff) | |
| download | ECTester-8884b0f8d55fd9cb89597ddce6f74a5e9b538f7b.tar.gz ECTester-8884b0f8d55fd9cb89597ddce6f74a5e9b538f7b.tar.zst ECTester-8884b0f8d55fd9cb89597ddce6f74a5e9b538f7b.zip | |
Diffstat (limited to 'src/cz/crcs/ectester/reader/TestSuite.java')
| -rw-r--r-- | src/cz/crcs/ectester/reader/TestSuite.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/cz/crcs/ectester/reader/TestSuite.java b/src/cz/crcs/ectester/reader/TestSuite.java index 5e9511b..414c2a9 100644 --- a/src/cz/crcs/ectester/reader/TestSuite.java +++ b/src/cz/crcs/ectester/reader/TestSuite.java @@ -4,6 +4,7 @@ import cz.crcs.ectester.applet.ECTesterApplet; import cz.crcs.ectester.applet.EC_Consts; import cz.crcs.ectester.data.EC_Store; import cz.crcs.ectester.reader.ec.*; +import javacard.security.Key; import javacard.security.KeyPair; import javax.smartcardio.CardException; @@ -18,7 +19,6 @@ public abstract class TestSuite { EC_Store dataStore; ECTester.Config cfg; String name; - boolean hasRun = false; List<Test> tests = new LinkedList<>(); TestSuite(EC_Store dataStore, ECTester.Config cfg, String name) { @@ -29,10 +29,11 @@ public abstract class TestSuite { public List<Test> run(CardMngr cardManager) throws CardException, IOException { for (Test t : tests) { - t.run(); - System.out.println(t); + if (!t.hasRun()) { + t.run(); + System.out.println(t); + } } - hasRun = true; return tests; } @@ -40,10 +41,6 @@ public abstract class TestSuite { return Collections.unmodifiableList(tests); } - public boolean hasRun() { - return hasRun; - } - public String getName() { return name; } @@ -171,6 +168,9 @@ public abstract class TestSuite { if (curve.getBits() != cfg.bits && !cfg.all) { continue; } + if (curve.getField() == KeyPair.ALG_EC_FP && !cfg.primeField || curve.getField() == KeyPair.ALG_EC_F2M && !cfg.binaryField) { + continue; + } EC_Params onekey = dataStore.getObject(EC_Keypair.class, result.getOneKey()); if (onekey == null) { onekey = dataStore.getObject(EC_Key.Private.class, result.getOneKey()); @@ -206,7 +206,6 @@ public abstract class TestSuite { public static class NonPrime extends TestSuite { - public NonPrime(EC_Store dataStore, ECTester.Config cfg) { super(dataStore, cfg, "nonprime"); } @@ -222,6 +221,12 @@ public abstract class TestSuite { Map<String, EC_Key> keys = dataStore.getObjects(EC_Key.class, "nonprime"); for (EC_Key key : keys.values()) { EC_Curve curve = dataStore.getObject(EC_Curve.class, key.getCurve()); + if (cfg.namedCurve != null && !(key.getCurve().startsWith(cfg.namedCurve) || key.getCurve().equals(cfg.namedCurve))) { + continue; + } + if (curve.getField() == KeyPair.ALG_EC_FP && !cfg.primeField || curve.getField() == KeyPair.ALG_EC_F2M && !cfg.binaryField) { + continue; + } if ((curve.getBits() == cfg.bits || cfg.all)) { tests.add(new Test(new Command.Allocate(cardManager, ECTesterApplet.KEYPAIR_BOTH, curve.getBits(), curve.getField()), Test.Result.SUCCESS)); tests.add(new Test(new Command.Set(cardManager, ECTesterApplet.KEYPAIR_BOTH, EC_Consts.CURVE_external, curve.getParams(), curve.flatten()), Test.Result.ANY)); @@ -256,6 +261,9 @@ public abstract class TestSuite { if (curve.getBits() != cfg.bits && !cfg.all) { continue; } + if (curve.getField() == KeyPair.ALG_EC_FP && !cfg.primeField || curve.getField() == KeyPair.ALG_EC_F2M && !cfg.binaryField) { + continue; + } List<EC_Key.Public> keys = curves.getOrDefault(curve, new LinkedList<>()); keys.add(key); curves.putIfAbsent(curve, keys); |
