diff options
| author | J08nY | 2018-03-06 01:21:02 +0100 |
|---|---|---|
| committer | J08nY | 2018-03-06 01:21:02 +0100 |
| commit | 7c40e8f0f22e8bcfed34f64820cd90355822ca9f (patch) | |
| tree | c30863aa76b56ba5cdc71414dc41e85d01d9de06 | |
| parent | b91887bac1f20597a06e789360374a4731ece5da (diff) | |
| download | ECTester-7c40e8f0f22e8bcfed34f64820cd90355822ca9f.tar.gz ECTester-7c40e8f0f22e8bcfed34f64820cd90355822ca9f.tar.zst ECTester-7c40e8f0f22e8bcfed34f64820cd90355822ca9f.zip | |
4 files changed, 40 insertions, 8 deletions
diff --git a/src/cz/crcs/ectester/common/ec/EC_Data.java b/src/cz/crcs/ectester/common/ec/EC_Data.java index c048ef7..5fd2f11 100644 --- a/src/cz/crcs/ectester/common/ec/EC_Data.java +++ b/src/cz/crcs/ectester/common/ec/EC_Data.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; * * @author Jan Jancar johny@neuromancer.sk */ -public abstract class EC_Data { +public abstract class EC_Data implements Comparable<EC_Data> { String id; int count; byte[][] data; @@ -214,4 +214,37 @@ public abstract class EC_Data { } return Arrays.deepHashCode(this.data); } + + @Override + public int compareTo(EC_Data o) { + if (o == this) return 0; + if (this.id != null && o.id != null) { + return this.id.compareTo(o.id); + } else if (this.id == null && o.id == null) { + if (Arrays.equals(this.data, o.data)) { + return 0; + } else { + int minCount = (this.count < o.count) ? this.count : o.count; + for (int i = 0; i < minCount; ++i) { + byte[] thisData = this.data[i]; + byte[] oData = o.data[i]; + int innerMinCount = (thisData.length < oData.length) ? thisData.length : oData.length; + for (int j = 0; j < innerMinCount; ++j) { + if (thisData[j] < oData[j]) { + return -1; + } else if (thisData[j] > oData[j]) { + return 1; + } + } + } + } + } else { + if (this.id == null) { + return -1; + } else { + return 1; + } + } + return 0; + } } diff --git a/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java b/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java index d3aef3a..c17a7d9 100644 --- a/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java @@ -13,10 +13,10 @@ import cz.crcs.ectester.reader.CardMngr; import cz.crcs.ectester.reader.ECTesterReader; import cz.crcs.ectester.reader.command.Command; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.TreeMap; /** * @author Jan Jancar johny@neuromancer.sk @@ -29,7 +29,7 @@ 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 HashMap<>(); + 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<>()); diff --git a/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java b/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java index a4c0ee9..190a20c 100644 --- a/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java @@ -11,12 +11,11 @@ import cz.crcs.ectester.data.EC_Store; import cz.crcs.ectester.reader.CardMngr; import cz.crcs.ectester.reader.ECTesterReader; import cz.crcs.ectester.reader.command.Command; -import javacard.security.KeyPair; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.TreeMap; import static cz.crcs.ectester.common.test.Result.ExpectedValue; @@ -35,7 +34,7 @@ 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 HashMap<>(); + 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<>()); diff --git a/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java b/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java index f686a00..c301e1e 100644 --- a/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java +++ b/src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java @@ -13,10 +13,10 @@ import cz.crcs.ectester.reader.CardMngr; import cz.crcs.ectester.reader.ECTesterReader; import cz.crcs.ectester.reader.command.Command; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.TreeMap; /** * @author Jan Jancar johny@neuromancer.sk @@ -29,7 +29,7 @@ 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 HashMap<>(); + 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<>()); |
