aboutsummaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/common/ec
diff options
context:
space:
mode:
authorJ08nY2019-03-04 14:47:08 +0100
committerJ08nY2019-03-04 14:47:08 +0100
commit49a2dff91b3b506345e31770f77534b40ac4e381 (patch)
tree31eb595ba4d6887c5d5fb8e45cab8a0272c1bc69 /src/cz/crcs/ectester/common/ec
parent08cdda311e3360db27819045f2336803588ebf38 (diff)
downloadECTester-49a2dff91b3b506345e31770f77534b40ac4e381.tar.gz
ECTester-49a2dff91b3b506345e31770f77534b40ac4e381.tar.zst
ECTester-49a2dff91b3b506345e31770f77534b40ac4e381.zip
Add better semi-random generation of inputs in tests.
Diffstat (limited to '')
-rw-r--r--src/cz/crcs/ectester/common/ec/EC_Curve.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/cz/crcs/ectester/common/ec/EC_Curve.java b/src/cz/crcs/ectester/common/ec/EC_Curve.java
index 6c0d060..2672b8a 100644
--- a/src/cz/crcs/ectester/common/ec/EC_Curve.java
+++ b/src/cz/crcs/ectester/common/ec/EC_Curve.java
@@ -3,6 +3,7 @@ package cz.crcs.ectester.common.ec;
import cz.crcs.ectester.applet.EC_Consts;
import cz.crcs.ectester.common.util.ByteUtil;
import javacard.security.KeyPair;
+import org.bouncycastle.math.ec.ECCurve;
import java.math.BigInteger;
import java.security.spec.*;
@@ -74,6 +75,28 @@ public class EC_Curve extends EC_Params {
return new EllipticCurve(field, a, b);
}
+ public ECCurve toBCCurve() {
+ if (this.field == KeyPair.ALG_EC_FP) {
+ BigInteger p = new BigInteger(1, getParam(EC_Consts.PARAMETER_FP)[0]);
+ BigInteger a = new BigInteger(1, getParam(EC_Consts.PARAMETER_A)[0]);
+ BigInteger b = new BigInteger(1, getParam(EC_Consts.PARAMETER_B)[0]);
+ BigInteger r = new BigInteger(1, getParam(EC_Consts.PARAMETER_R)[0]);
+ BigInteger k = new BigInteger(1, getParam(EC_Consts.PARAMETER_K)[0]);
+ return new ECCurve.Fp(p, a, b, r, k);
+ } else {
+ byte[][] fieldData = getParam(EC_Consts.PARAMETER_F2M);
+ int m = ByteUtil.getShort(fieldData[0], 0);
+ int e1 = ByteUtil.getShort(fieldData[1], 0);
+ int e2 = ByteUtil.getShort(fieldData[2], 0);
+ int e3 = ByteUtil.getShort(fieldData[3], 0);
+ BigInteger a = new BigInteger(1, getParam(EC_Consts.PARAMETER_A)[0]);
+ BigInteger b = new BigInteger(1, getParam(EC_Consts.PARAMETER_B)[0]);
+ BigInteger r = new BigInteger(1, getParam(EC_Consts.PARAMETER_R)[0]);
+ BigInteger k = new BigInteger(1, getParam(EC_Consts.PARAMETER_K)[0]);
+ return new ECCurve.F2m(m, e1, e2, e3, a, b, r, k);
+ }
+ }
+
public ECParameterSpec toSpec() {
EllipticCurve curve = toCurve();