aboutsummaryrefslogtreecommitdiff
path: root/common/src/test
diff options
context:
space:
mode:
authorJ08nY2025-01-30 15:03:46 +0100
committerJ08nY2025-01-30 15:03:46 +0100
commit2d1f792ddf7167329a86e33cd95d83665a46206b (patch)
tree62d962c688cd853a876d82ef44d44f0bec62a46a /common/src/test
parenta9e49b6a5bc84c7f72c30bd442a1b05dad75a21b (diff)
downloadECTester-2d1f792ddf7167329a86e33cd95d83665a46206b.tar.gz
ECTester-2d1f792ddf7167329a86e33cd95d83665a46206b.tar.zst
ECTester-2d1f792ddf7167329a86e33cd95d83665a46206b.zip
Diffstat (limited to 'common/src/test')
-rw-r--r--common/src/test/java/cz/crcs/ectester/common/CardIntegerPaddingTests.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/common/src/test/java/cz/crcs/ectester/common/CardIntegerPaddingTests.java b/common/src/test/java/cz/crcs/ectester/common/CardIntegerPaddingTests.java
new file mode 100644
index 0000000..560935f
--- /dev/null
+++ b/common/src/test/java/cz/crcs/ectester/common/CardIntegerPaddingTests.java
@@ -0,0 +1,114 @@
+package cz.crcs.ectester.common;
+
+import cz.crcs.ectester.common.ec.*;
+import cz.crcs.ectester.data.EC_Store;
+import org.junit.jupiter.api.Test;
+import org.opentest4j.AssertionFailedError;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class CardIntegerPaddingTests {
+
+ @Test
+ public void testKeys() {
+ EC_Store store = EC_Store.getInstance();
+ Map<String, EC_Category> categories = store.getCategories();
+ List<AssertionFailedError> errors = new ArrayList<>();
+
+ for (EC_Category category : categories.values()) {
+ Map<String, EC_Data> objects = category.getObjects();
+ List<EC_Key> keys = new ArrayList<>();
+ for (EC_Data object : objects.values()) {
+ if (object instanceof EC_Key) {
+ EC_Key key = (EC_Key) object;
+ keys.add(key);
+ }
+ }
+ Map<EC_Curve, List<EC_Key>> keyMap = EC_Store.mapKeyToCurve(keys);
+ for (EC_Curve curve : keyMap.keySet()) {
+ List<EC_Key> curveKeys = keyMap.get(curve);
+ int bits = curve.getBits();
+ int bytes = (bits + 7) / 8;
+ for (EC_Key key : curveKeys) {
+ if (key instanceof EC_Key.Private) {
+ continue;
+ }
+ byte[][] data = key.getData();
+ byte[] xCoord = data[0];
+ byte[] yCoord = data[1];
+ try {
+ assertEquals(bytes, xCoord.length, "Curve: " + curve.getId() + ", Key: " + category.getName() + "/" + key.getId() + " (x)");
+ } catch (AssertionFailedError e) {
+ errors.add(e);
+ }
+ try {
+ assertEquals(bytes, yCoord.length, "Curve: " + curve.getId() + ", Key: " + category.getName() + "/" + key.getId() + " (y)");
+ } catch (AssertionFailedError e) {
+ errors.add(e);
+ }
+ }
+ }
+ }
+
+ if (!errors.isEmpty()) {
+ StringBuilder sb = new StringBuilder("There were assertion errors:\n");
+ for (AssertionFailedError error : errors) {
+ sb.append(error.getMessage()).append("\n");
+ }
+ AssertionFailedError e = new AssertionFailedError(sb.toString());
+ for (AssertionFailedError error : errors) {
+ e.addSuppressed(error);
+ }
+ throw e;
+ }
+ }
+
+ @Test
+ public void testCurves() {
+ EC_Store store = EC_Store.getInstance();
+ Map<String, EC_Category> categories = store.getCategories();
+ List<AssertionFailedError> errors = new ArrayList<>();
+
+ for (EC_Category category : categories.values()) {
+ Map<String, EC_Data> objects = category.getObjects();
+ for (EC_Data object : objects.values()) {
+ if (object instanceof EC_Curve) {
+ EC_Curve curve = (EC_Curve) object;
+ if (curve.getField() == EC_Consts.ALG_EC_FP) {
+ int bits = curve.getBits();
+ int bytes = (bits + 7) / 8;
+ byte[][] generator = curve.getParam(EC_Consts.PARAMETER_G);
+ byte[] xCoord = generator[0];
+ byte[] yCoord = generator[1];
+ try {
+ assertEquals(bytes, xCoord.length, "Curve: " + category.getName() + "/" + curve.getId() + " (generator x)");
+ } catch (AssertionFailedError e) {
+ errors.add(e);
+ }
+ try {
+ assertEquals(bytes, yCoord.length, "Curve: " + category.getName() + "/" + curve.getId() + " (generator y)");
+ } catch (AssertionFailedError e) {
+ errors.add(e);
+ }
+ }
+ }
+ }
+ }
+
+ if (!errors.isEmpty()) {
+ StringBuilder sb = new StringBuilder("There were assertion errors:\n");
+ for (AssertionFailedError error : errors) {
+ sb.append(error.getMessage()).append("\n");
+ }
+ AssertionFailedError e = new AssertionFailedError(sb.toString());
+ for (AssertionFailedError error : errors) {
+ e.addSuppressed(error);
+ }
+ throw e;
+ }
+ }
+}