aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2017-08-29 14:53:36 +0200
committerJ08nY2017-08-29 14:53:36 +0200
commit3da8316ca3edf81cb17e19551d9499855d52905c (patch)
tree72ad3145c782e76486817a9340166259d5bf1f49
parentd6304dd608a1ad6da025446e06dcb657e1465fad (diff)
downloadecgen-3da8316ca3edf81cb17e19551d9499855d52905c.tar.gz
ecgen-3da8316ca3edf81cb17e19551d9499855d52905c.tar.zst
ecgen-3da8316ca3edf81cb17e19551d9499855d52905c.zip
-rw-r--r--Makefile1
-rw-r--r--src/math/subgroups.c2
-rw-r--r--test/Makefile8
-rw-r--r--test/src/Makefile8
-rw-r--r--test/src/math/test_subgroups.c31
5 files changed, 47 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index a4a5238..33c5765 100644
--- a/Makefile
+++ b/Makefile
@@ -15,6 +15,7 @@ clean:
clean-all:
+$(MAKE) -C lib clean
+$(MAKE) -C src clean-all
+ +$(MAKE) -C test clean-all
rm -rf *.gcov
rm -rf doc/*
diff --git a/src/math/subgroups.c b/src/math/subgroups.c
index 903401e..3b84d5c 100644
--- a/src/math/subgroups.c
+++ b/src/math/subgroups.c
@@ -61,7 +61,7 @@ static GEN subgroups_exponents(GEN order) {
GEN subgroups_prime(const curve_t *curve, const config_t *cfg) {
if (cfg->prime || isprime(curve->order)) {
- return gtovec(curve->order);
+ return gtocol(curve->order);
} else {
return subgroups_factors(curve->order);
}
diff --git a/test/Makefile b/test/Makefile
index 8c5fd8b..c39baac 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -11,10 +11,14 @@ unittest: unit ecgen econvert
unit:
cd lib/criterion && mkdir -p build && cd build && cmake .. && cmake --build .
- $(MAKE) -C src all
+ +$(MAKE) -C src all
ecgen:
./ecgen.sh
econvert:
- ./econvert.sh \ No newline at end of file
+ ./econvert.sh
+
+clean-all:
+ cd lib/criterion && rm -r build
+ +$(MAKE) -C src clean-all \ No newline at end of file
diff --git a/test/src/Makefile b/test/src/Makefile
index e9d3d8e..04279be 100644
--- a/test/src/Makefile
+++ b/test/src/Makefile
@@ -28,3 +28,11 @@ test_ecgen: $(TEST_OBJ) $(ECGEN_OBJ)
%.o: %.c
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
+clean-all: clean
+ rm -f ./test_ecgen
+
+clean:
+ find . -type f -name '*.o' -exec rm {} +
+ find . -type f -name '*.gcda' -exec rm {} +
+ find . -type f -name '*.gcno' -exec rm {} +
+ find . -type f -name '*.gcov' -exec rm {} +
diff --git a/test/src/math/test_subgroups.c b/test/src/math/test_subgroups.c
new file mode 100644
index 0000000..fa81788
--- /dev/null
+++ b/test/src/math/test_subgroups.c
@@ -0,0 +1,31 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+#include "gen/types.h"
+#include "math/subgroups.h"
+#include <criterion/criterion.h>
+
+void setup(void) {
+ pari_init(1000000000, 1000000);
+}
+
+TestSuite(subgroups, .init=setup);
+
+Test(subgroups, test_prime_factors) {
+ curve_t curve = {.order = stoi(12)};
+ config_t cfg = {.prime = false};
+ GEN divs = subgroups_prime(&curve, &cfg);
+ GEN vec = gtocol0(gen_0, 2);
+ gel(vec, 1) = stoi(2);
+ gel(vec, 2) = stoi(3);
+ cr_assert(gequal(divs, vec), "Factors not equal!");
+}
+
+Test(subgroups, test_prime_prime) {
+ curve_t curve = {.order = stoi(5)};
+ config_t cfg = {.prime = true};
+ GEN divs = subgroups_prime(&curve, &cfg);
+ GEN vec = gtocol(stoi(5));
+ cr_assert(gequal(divs, vec), "Factors not equal!");
+} \ No newline at end of file