aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/common/ec/EC_Data.java
diff options
context:
space:
mode:
authorJ08nY2018-04-26 01:16:51 +0200
committerJ08nY2018-04-26 01:16:51 +0200
commit3b0d002c7987297d90e450def097cd8cdb65444c (patch)
tree60d4d21cf966fea19a139bc9c480c4bc21e88b0d /src/cz/crcs/ectester/common/ec/EC_Data.java
parent80e68ffb16310bbabdf4cb9111616baf180a7c97 (diff)
downloadECTester-3b0d002c7987297d90e450def097cd8cdb65444c.tar.gz
ECTester-3b0d002c7987297d90e450def097cd8cdb65444c.tar.zst
ECTester-3b0d002c7987297d90e450def097cd8cdb65444c.zip
Better sort EC_Data, handle errors better in wrong curves suite.
Diffstat (limited to 'src/cz/crcs/ectester/common/ec/EC_Data.java')
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_Data.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/common/ec/EC_Data.java b/src/cz/crcs/ectester/common/ec/EC_Data.java
index d7eec4d..1b81eae 100644
--- a/src/cz/crcs/ectester/common/ec/EC_Data.java
+++ b/src/cz/crcs/ectester/common/ec/EC_Data.java
@@ -219,6 +219,19 @@ public abstract class EC_Data implements Comparable<EC_Data> {
public int compareTo(EC_Data o) {
if (o == this) return 0;
if (this.id != null && o.id != null) {
+ int minLength = Math.min(this.id.length(), o.id.length());
+ for (int i = 0; i < minLength; i++) {
+ if (this.id.charAt(i) != o.id.charAt(i)) {
+ String thisEnd = this.id.substring(i);
+ String oEnd = o.id.substring(i);
+ try {
+ int thisIndex = Integer.parseInt(thisEnd);
+ int oIndex = Integer.parseInt(oEnd);
+ return Integer.compare(thisIndex, oIndex);
+ } catch (NumberFormatException ignored) {
+ }
+ }
+ }
return this.id.compareTo(o.id);
} else if (this.id == null && o.id == null) {
if (Arrays.equals(this.data, o.data)) {