aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJ08nY2017-10-15 01:48:24 +0200
committerJ08nY2017-10-15 01:48:24 +0200
commit533542ee2b29f5f1ad490ffe00673a9ec50d375b (patch)
tree0ba29a8e7e0427266d8002015656f637699c193c /test
parenta6289893431c59bec9eec2493a955d8e05018dfc (diff)
downloadecgen-533542ee2b29f5f1ad490ffe00673a9ec50d375b.tar.gz
ecgen-533542ee2b29f5f1ad490ffe00673a9ec50d375b.tar.zst
ecgen-533542ee2b29f5f1ad490ffe00673a9ec50d375b.zip
Add tests for field.c.
Diffstat (limited to 'test')
-rw-r--r--test/src/gen/test_equation.c10
-rw-r--r--test/src/gen/test_field.c199
2 files changed, 205 insertions, 4 deletions
diff --git a/test/src/gen/test_equation.c b/test/src/gen/test_equation.c
index 8e0d659..c66d28b 100644
--- a/test/src/gen/test_equation.c
+++ b/test/src/gen/test_equation.c
@@ -24,6 +24,7 @@ Test(equation, test_a_gen_random) {
int ret = a_gen_random(&curve, NULL, OFFSET_A);
cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.a, );
}
Test(equation, test_a_gen_input) {
@@ -55,14 +56,14 @@ Test(equation, test_a_gen_once) {
}
Test(equation, test_a_gen_zero) {
- curve_t curve = {};
+ curve_t curve = {0};
int ret = a_gen_zero(&curve, NULL, OFFSET_A);
cr_assert_eq(ret, 1, );
cr_assert(gequal(gen_0, curve.a), );
}
Test(equation, test_a_gen_one) {
- curve_t curve = {};
+ curve_t curve = {0};
int ret = a_gen_one(&curve, NULL, OFFSET_A);
cr_assert_eq(ret, 1, );
cr_assert(gequal(gen_1, curve.a), );
@@ -73,6 +74,7 @@ Test(equation, test_b_gen_random) {
int ret = b_gen_random(&curve, NULL, OFFSET_B);
cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.b, );
}
Test(equation, test_b_gen_input) {
@@ -104,14 +106,14 @@ Test(equation, test_b_gen_once) {
}
Test(equation, test_b_gen_zero) {
- curve_t curve = {};
+ curve_t curve = {0};
int ret = b_gen_zero(&curve, NULL, OFFSET_B);
cr_assert_eq(ret, 1, );
cr_assert(gequal(gen_0, curve.b), );
}
Test(equation, test_b_gen_one) {
- curve_t curve = {};
+ curve_t curve = {0};
int ret = b_gen_one(&curve, NULL, OFFSET_B);
cr_assert_eq(ret, 1, );
cr_assert(gequal(gen_1, curve.b), );
diff --git a/test/src/gen/test_field.c b/test/src/gen/test_field.c
new file mode 100644
index 0000000..fb1f1e3
--- /dev/null
+++ b/test/src/gen/test_field.c
@@ -0,0 +1,199 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+#include <criterion/criterion.h>
+#include "gen/field.h"
+#include "math/poly.h"
+#include "misc/types.h"
+#include "test/default.h"
+#include "test/input.h"
+#include "test/output.h"
+
+void field_setup() {
+ default_setup();
+ input_setup();
+ output_setup();
+}
+
+void field_teardown() {
+ default_teardown();
+ input_teardown();
+ output_teardown();
+}
+
+TestSuite(field, .init = field_setup, .fini = field_teardown);
+
+Test(field, test_field_gen_random_fp) {
+ curve_t curve = {0};
+ cfg->bits = 10;
+ cfg->prime_field = true;
+ cfg->field = FIELD_PRIME;
+
+ int ret = field_gen_random(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ cr_assert(gle(curve.field, int2n(cfg->bits)), );
+}
+
+Test(field, test_field_gen_random_f2m) {
+ curve_t curve = {0};
+ cfg->bits = 10;
+ cfg->binary_field = true;
+ cfg->field = FIELD_BINARY;
+
+ int ret = field_gen_random(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ GEN coeffs = FF_to_FpXQ(curve.field);
+ GEN vec = gtovec(coeffs);
+ GEN n = fromdigits(vec, stoi(2));
+ cr_assert(gle(n, int2n(cfg->bits)), );
+}
+
+Test(field, test_field_gen_input_fp) {
+ curve_t curve = {0};
+ cfg->bits = 10;
+ cfg->prime_field = true;
+ cfg->field = FIELD_PRIME;
+
+ unsigned int p = 5;
+ fprintf(write_in, "%u\n", p);
+ int ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ cr_assert(gequal(stoi(p), curve.field), );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ p = 4;
+ fprintf(write_in, "%u\n", p);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ p = 2 << 11;
+ fprintf(write_in, "%u\n", p);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+};
+
+Test(field, test_field_gen_input_f2m) {
+ curve_t curve = {0};
+ cfg->bits = 10;
+ cfg->binary_field = true;
+ cfg->field = FIELD_BINARY;
+
+ unsigned int m = 9;
+ fprintf(write_in, "%u\n", m);
+ int ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ m = 10;
+ unsigned int e1 = 17;
+ fprintf(write_in, "%u\n%u\n", m, e1);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ e1 = 9;
+ unsigned int e2 = 17;
+ fprintf(write_in, "%u\n%u\n%u\n", m, e1, e2);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ e1 = 9;
+ e2 = 5;
+ unsigned int e3 = 17;
+ fprintf(write_in, "%u\n%u\n%u\n%u\n", m, e1, e2, e3);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ e1 = 0;
+ e2 = 0;
+ e3 = 0;
+ fprintf(write_in, "%u\n%u\n%u\n%u\n", m, e1, e2, e3);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ e1 = 4;
+ fprintf(write_in, "%u\n%u\n%u\n%u\n", m, e1, e2, e3);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 0, );
+ cr_assert_null(curve.field, );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ e1 = 3;
+ fprintf(write_in, "%u\n%u\n%u\n%u\n", m, e1, e2, e3);
+ ret = field_gen_input(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ GEN poly = poly_find_gen(m);
+ cr_assert(gequal(poly, curve.field), );
+}
+
+Test(field, test_field_gen_once_fp) {
+ curve_t curve = {0};
+ cfg->bits = 10;
+ cfg->prime_field = true;
+ cfg->field = FIELD_PRIME;
+
+ unsigned int p = 5;
+ fprintf(write_in, "%u\n", p);
+ int ret = field_gen_once(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ cr_assert(equalis(curve.field, p), );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ ret = field_gen_once(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ cr_assert(equalis(curve.field, p), );
+ field_quit();
+}
+
+Test(field, test_field_gen_once_f2m) {
+ curve_t curve = {0};
+ cfg->bits = 10;
+ cfg->binary_field = true;
+ cfg->field = FIELD_BINARY;
+
+ unsigned int m = 10;
+ unsigned int e1 = 3;
+ unsigned int e2 = 0;
+ unsigned int e3 = 0;
+ fprintf(write_in, "%u\n%u\n%u\n%u\n", m, e1, e2, e3);
+ int ret = field_gen_once(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ GEN poly = poly_find_gen(m);
+ cr_assert(gequal(poly, curve.field), );
+
+ memset(&curve, 0, sizeof(curve_t));
+
+ ret = field_gen_once(&curve, NULL, OFFSET_FIELD);
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.field, );
+ cr_assert(gequal(poly, curve.field), );
+ field_quit();
+} \ No newline at end of file