diff options
| author | J08nY | 2018-04-25 00:10:00 +0200 |
|---|---|---|
| committer | J08nY | 2018-04-25 00:10:00 +0200 |
| commit | 6979f115f9a2f64d18cee4497f0dc2189266a17a (patch) | |
| tree | 71a153365f93fe18c3cd4b91420d1f7dee8ab293 | |
| parent | 3f10cb4ba2fb9db1f1640ca68458a1283667930b (diff) | |
| download | ECTester-6979f115f9a2f64d18cee4497f0dc2189266a17a.tar.gz ECTester-6979f115f9a2f64d18cee4497f0dc2189266a17a.tar.zst ECTester-6979f115f9a2f64d18cee4497f0dc2189266a17a.zip | |
4 files changed, 22 insertions, 27 deletions
diff --git a/src/cz/crcs/ectester/data/EC_Store.java b/src/cz/crcs/ectester/data/EC_Store.java index e4ba40c..426dcd9 100644 --- a/src/cz/crcs/ectester/data/EC_Store.java +++ b/src/cz/crcs/ectester/data/EC_Store.java @@ -21,9 +21,7 @@ import javax.xml.validation.SchemaFactory; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Collections; -import java.util.Map; -import java.util.TreeMap; +import java.util.*; /** * @author Jan Jancar johny@neuromancer.sk @@ -319,6 +317,21 @@ public class EC_Store { return getObject(objClass, query.substring(0, split), query.substring(split + 1)); } + public static <T extends EC_Key> List<Map.Entry<EC_Curve, List<T>>> mapToCurve(Collection<T> keys) { + Map<EC_Curve, List<T>> curves = new TreeMap<>(); + for (T key : keys) { + EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, key.getCurve()); + List<T> curveKeys = curves.getOrDefault(curve, new LinkedList<>()); + curveKeys.add(key); + curves.putIfAbsent(curve, curveKeys); + } + List<Map.Entry<EC_Curve, List<T>>> curveList = new LinkedList<>(); + curveList.addAll(curves.entrySet()); + Comparator<Map.Entry<EC_Curve, List<T>>> c = Comparator.comparing(o -> o.getKey().getBits()); + curveList.sort(c.thenComparing(b -> b.getKey().getId())); + return curveList; + } + public static EC_Store getInstance() { if (instance == null) { instance = new EC_Store(); diff --git a/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java b/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java index de44d4e..cd7a85d 100644 --- a/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java @@ -27,14 +27,8 @@ public class CardCofactorTestSuite extends CardTestSuite { @Override protected void runTests() throws Exception { Map<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "cofactor"); - Map<EC_Curve, List<EC_Key.Public>> curves = new TreeMap<>(); - for (EC_Key.Public key : pubkeys.values()) { - EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, key.getCurve()); - List<EC_Key.Public> keys = curves.getOrDefault(curve, new LinkedList<>()); - keys.add(key); - curves.putIfAbsent(curve, keys); - } - for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curves.entrySet()) { + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> keys = e.getValue(); diff --git a/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java b/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java index 10e0cdf..8af7c77 100644 --- a/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java @@ -32,14 +32,8 @@ public class CardInvalidCurvesSuite extends CardTestSuite { * Try ECDH with invalid public keys of increasing order. */ Map<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "invalid"); - Map<EC_Curve, List<EC_Key.Public>> curves = new TreeMap<>(); - for (EC_Key.Public key : pubkeys.values()) { - EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, key.getCurve()); - List<EC_Key.Public> keys = curves.getOrDefault(curve, new LinkedList<>()); - keys.add(key); - curves.putIfAbsent(curve, keys); - } - for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curves.entrySet()) { + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> keys = e.getValue(); diff --git a/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java b/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java index 0f2ec91..4ddd74f 100644 --- a/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java @@ -26,14 +26,8 @@ public class CardTwistTestSuite extends CardTestSuite { @Override protected void runTests() throws Exception { Map<String, EC_Key.Public> pubkeys = EC_Store.getInstance().getObjects(EC_Key.Public.class, "twist"); - Map<EC_Curve, List<EC_Key.Public>> curves = new TreeMap<>(); - for (EC_Key.Public key : pubkeys.values()) { - EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, key.getCurve()); - List<EC_Key.Public> keys = curves.getOrDefault(curve, new LinkedList<>()); - keys.add(key); - curves.putIfAbsent(curve, keys); - } - for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curves.entrySet()) { + List<Map.Entry<EC_Curve, List<EC_Key.Public>>> curveList = EC_Store.mapToCurve(pubkeys.values()); + for (Map.Entry<EC_Curve, List<EC_Key.Public>> e : curveList) { EC_Curve curve = e.getKey(); List<EC_Key.Public> keys = e.getValue(); |
