aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2018-03-06 01:21:02 +0100
committerJ08nY2018-03-06 01:21:02 +0100
commit7c40e8f0f22e8bcfed34f64820cd90355822ca9f (patch)
treec30863aa76b56ba5cdc71414dc41e85d01d9de06
parentb91887bac1f20597a06e789360374a4731ece5da (diff)
downloadECTester-7c40e8f0f22e8bcfed34f64820cd90355822ca9f.tar.gz
ECTester-7c40e8f0f22e8bcfed34f64820cd90355822ca9f.tar.zst
ECTester-7c40e8f0f22e8bcfed34f64820cd90355822ca9f.zip
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_Data.java35
-rw-r--r--src/cz/crcs/ectester/reader/test/CardCofactorTestSuite.java4
-rw-r--r--src/cz/crcs/ectester/reader/test/CardInvalidCurvesSuite.java5
-rw-r--r--src/cz/crcs/ectester/reader/test/CardTwistTestSuite.java4
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<>());