aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/reader/ec/EC_Params.java
diff options
context:
space:
mode:
authorJ08nY2017-04-19 01:10:17 +0200
committerJ08nY2017-04-19 01:10:17 +0200
commita7eef06134bef0861e43261640d61153ebb2a6e5 (patch)
tree2ef308843b4e8b1770be6681c15b98dcd78d40ff /src/cz/crcs/ectester/reader/ec/EC_Params.java
parentf4a66768ed6dfcfd7156ad0c8c364cdbf6e45e9c (diff)
downloadECTester-a7eef06134bef0861e43261640d61153ebb2a6e5.tar.gz
ECTester-a7eef06134bef0861e43261640d61153ebb2a6e5.tar.zst
ECTester-a7eef06134bef0861e43261640d61153ebb2a6e5.zip
Refactor testing, add Config class, make EC_Data read bytes
- The ECTester.Config class now stores and reads all CLI options - Testing with the -t / --test option was partially refactored into: - Test: Encapsulates one Command and Response pair with expected result, a real result and a callback to dynamically assign result - TestSuite: Encapsulates a bunch of tests, represents a whole category of tests either that can be run on any curve or only on some.
Diffstat (limited to 'src/cz/crcs/ectester/reader/ec/EC_Params.java')
-rw-r--r--src/cz/crcs/ectester/reader/ec/EC_Params.java28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/cz/crcs/ectester/reader/ec/EC_Params.java b/src/cz/crcs/ectester/reader/ec/EC_Params.java
index 00747b1..cee9c16 100644
--- a/src/cz/crcs/ectester/reader/ec/EC_Params.java
+++ b/src/cz/crcs/ectester/reader/ec/EC_Params.java
@@ -4,6 +4,7 @@ import cz.crcs.ectester.applet.EC_Consts;
import cz.crcs.ectester.reader.Util;
import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@@ -25,6 +26,16 @@ public class EC_Params extends EC_Data {
this.data = data;
}
+ public EC_Params(String id, short params) {
+ this(params);
+ this.id = id;
+ }
+
+ public EC_Params(String id, short params, byte[][] data) {
+ this(params, data);
+ this.id = id;
+ }
+
public short getParams() {
return params;
}
@@ -67,8 +78,14 @@ public class EC_Params extends EC_Data {
byte[] param = data[i];
if (masked == EC_Consts.PARAMETER_F2M) {
//add m, e_1, e_2, e_3
- param = Util.concatenate(param, data[i + 1], data[i + 2], data[i + 3]);
- if (param.length != 8)
+ param = Util.concatenate(param, data[i + 1]);
+ if (!Util.allValue(data[i + 2], (byte) 0)) {
+ param = Util.concatenate(param, data[i + 2]);
+ }
+ if (!Util.allValue(data[i + 3], (byte) 0)) {
+ param = Util.concatenate(param, data[i + 3]);
+ }
+ if (!(param.length == 4 || param.length == 8))
throw new RuntimeException("PARAMETER_F2M length is not 8.(should be)");
}
if (masked == EC_Consts.PARAMETER_G || masked == EC_Consts.PARAMETER_W) {
@@ -112,9 +129,6 @@ public class EC_Params extends EC_Data {
if (masked == EC_Consts.PARAMETER_F2M) {
//split into m, e1, e2, e3
- if (param.length != 8) {
- throw new RuntimeException("PARAMETER_F2M length is not 8.(should be)");
- }
for (int i = 0; i < 4; ++i) {
out.add(String.format("%04x", Util.getShort(param, i * 2)));
}
@@ -136,4 +150,8 @@ public class EC_Params extends EC_Data {
return out.toArray(new String[out.size()]);
}
+ @Override
+ public String toString() {
+ return String.join(",", expand());
+ }
}