diff options
| author | Ján Jančár | 2025-07-15 15:58:21 +0200 |
|---|---|---|
| committer | GitHub | 2025-07-15 15:58:21 +0200 |
| commit | 4c52961479eb3db5e24dbea567b0c28c1efcde31 (patch) | |
| tree | 739f8b3a85167518f092fb24dec83c6476cc8c82 /common/src/main/java | |
| parent | ba6657f54ed7865145c216ec13160ecf46e07633 (diff) | |
| parent | 3d5a6e492d94651a4c0379f846dcfe5089aa1a8c (diff) | |
| download | ECTester-4c52961479eb3db5e24dbea567b0c28c1efcde31.tar.gz ECTester-4c52961479eb3db5e24dbea567b0c28c1efcde31.tar.zst ECTester-4c52961479eb3db5e24dbea567b0c28c1efcde31.zip | |
Merge pull request #39 from crocs-muni/epare
Add epare artifact
Diffstat (limited to 'common/src/main/java')
| -rw-r--r-- | common/src/main/java/cz/crcs/ectester/common/ec/EC_Params.java | 24 | ||||
| -rw-r--r-- | common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java | 7 |
2 files changed, 31 insertions, 0 deletions
diff --git a/common/src/main/java/cz/crcs/ectester/common/ec/EC_Params.java b/common/src/main/java/cz/crcs/ectester/common/ec/EC_Params.java index 8d15437..24e9d56 100644 --- a/common/src/main/java/cz/crcs/ectester/common/ec/EC_Params.java +++ b/common/src/main/java/cz/crcs/ectester/common/ec/EC_Params.java @@ -5,6 +5,7 @@ import cz.crcs.ectester.common.util.CardUtil; import java.io.ByteArrayOutputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -265,6 +266,29 @@ public class EC_Params extends EC_Data { return p; } + public static EC_Params merge(EC_Params p1, EC_Params p2) { + if ((p1.params & p2.params) != 0) { + throw new IllegalArgumentException("Cannot merge EC_Params with overlapping parameters."); + } + short params = (short) (p1.params | p2.params); + List<byte[]> dataList = new ArrayList<>(); + short paramMask = EC_Consts.PARAMETER_FP; + while (paramMask <= EC_Consts.PARAMETER_S) { + byte[][] paramData; + if ((p1.params & paramMask) != 0) { + paramData = p1.getParam(paramMask); + } else if ((p2.params & paramMask) != 0) { + paramData = p2.getParam(paramMask); + } else { + throw new IllegalArgumentException("Cannot merge EC_Params with overlapping parameters."); + } + dataList.addAll(Arrays.asList(paramData)); + paramMask = (short) (paramMask << 1); + } + + return new EC_Params(params, dataList.toArray(new byte[dataList.size()][])); + } + @Override public String[] expand() { List<String> out = new ArrayList<>(); diff --git a/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java b/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java index 6eb0b1a..677075b 100644 --- a/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java +++ b/common/src/main/java/cz/crcs/ectester/common/util/ECUtil.java @@ -71,6 +71,13 @@ public class ECUtil { return toX962Compressed(point, spec.getCurve().getField().getFieldSize()); } + public static byte[] toX962Uncompressed(byte[][] point) { + if (point.length != 2) { + return null; + } + return ByteUtil.concatenate(new byte[]{(byte) (0x04)}, point[0], point[1]); + } + public static byte[] toX962Uncompressed(ECPoint point, int bits) { if (point.equals(ECPoint.POINT_INFINITY)) { return new byte[]{0}; |
