diff options
| author | J08nY | 2017-10-17 21:45:04 +0200 |
|---|---|---|
| committer | J08nY | 2017-10-17 21:45:04 +0200 |
| commit | b09586f3cca80ec3409c4e34a2fae22974c43d56 (patch) | |
| tree | d804f9884c4b2891d77c816af8c428c01a63ab43 /test/src | |
| parent | 3b573a6a432af1909224ff003cfcaadbc5d84308 (diff) | |
| download | ecgen-b09586f3cca80ec3409c4e34a2fae22974c43d56.tar.gz ecgen-b09586f3cca80ec3409c4e34a2fae22974c43d56.tar.zst ecgen-b09586f3cca80ec3409c4e34a2fae22974c43d56.zip | |
Diffstat (limited to 'test/src')
| -rw-r--r-- | test/src/exhaustive/test_ansi.c | 2 | ||||
| -rw-r--r-- | test/src/gen/test_hex.c | 138 |
2 files changed, 139 insertions, 1 deletions
diff --git a/test/src/exhaustive/test_ansi.c b/test/src/exhaustive/test_ansi.c index 9497c80..f1177c7 100644 --- a/test/src/exhaustive/test_ansi.c +++ b/test/src/exhaustive/test_ansi.c @@ -9,8 +9,8 @@ #include "gen/field.h" #include "gen/seed.h" #include "math/poly.h" -#include "test/memory.h" #include "test/io.h" +#include "test/memory.h" #include "util/bits.h" #include "util/memory.h" diff --git a/test/src/gen/test_hex.c b/test/src/gen/test_hex.c new file mode 100644 index 0000000..aa558ec --- /dev/null +++ b/test/src/gen/test_hex.c @@ -0,0 +1,138 @@ +/* + * ecgen, tool for generating Elliptic curve domain parameters + * Copyright (C) 2017 J08nY + */ +#include <criterion/criterion.h> +#include "gen/hex.h" +#include "test/default.h" +#include "util/bits.h" + +TestSuite(hex, .init = default_setup, .fini = default_teardown); + +Test(hex, test_hex_seed) { + cfg->field = FIELD_PRIME; + char *what = "ABCDE"; + seed_t seed = {.seed = bits_from_hex(what)}; + curve_t curve = {.seed = &seed}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_SEED); + cr_assert_eq(ret, 1, ); +} + +Test(hex, test_hex_field) { + cfg->field = FIELD_PRIME; + char *where = "0xF235ABCDE6F"; + char *what = "ABCDE"; + seed_t seed = {.seed = bits_from_hex("12345")}; + curve_t curve = {.seed = &seed, .field = strtoi(where)}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_FIELD); + cr_assert_eq(ret, 1, ); +} + +Test(hex, test_hex_a) { + cfg->field = FIELD_PRIME; + char *where = "0xF235ABCDE6F"; + char *field = "0xFFFFFFFFFFFF"; + char *what = "ABCDE"; + seed_t seed = {.seed = bits_from_hex("12345")}; + curve_t curve = {.seed = &seed, + .field = strtoi(field), + .a = mkintmod(strtoi(where), strtoi(field))}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_A); + cr_assert_eq(ret, 1, ); +} + +Test(hex, test_hex_b) { + cfg->field = FIELD_PRIME; + char *where = "0xF235ABCDE6F"; + char *field = "0xFFFFFFFFFFFF"; + char *what = "ABCDE"; + seed_t seed = {.seed = bits_from_hex("12345")}; + curve_t curve = {.seed = &seed, + .field = strtoi(field), + .a = mkintmod(stoi(15), strtoi(field)), + .b = mkintmod(strtoi(where), strtoi(field))}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_B); + cr_assert_eq(ret, 1, ); +} + +Test(hex, test_hex_order) { + cfg->field = FIELD_PRIME; + char *where = "0xF235ABCDE6F"; + char *what = "ABCDE"; + seed_t seed = {.seed = bits_from_hex("12345")}; + curve_t curve = {.seed = &seed, + .field = stoi(21), + .a = mkintmod(stoi(15), stoi(21)), + .b = mkintmod(stoi(20), stoi(21)), + .order = strtoi(where)}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); +} + +Test(hex, test_hex_generators) { + cfg->field = FIELD_PRIME; + char *where = "0xF235ABCDE6F"; + char *field = "0xFFFFFFFFFFFF"; + char *what = "ABCDE"; + point_t gen = {.point = mkvec2(mkintmod(strtoi(where), strtoi(field)), + mkintmod(stoi(52), strtoi(field)))}; + point_t *generators[1] = {&gen}; + + seed_t seed = {.seed = bits_from_hex("12345")}; + curve_t curve = {.seed = &seed, + .field = strtoi(field), + .a = mkintmod(stoi(15), strtoi(field)), + .b = mkintmod(stoi(20), strtoi(field)), + .order = stoi(22), + .generators = generators, + .ngens = 1}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_GENERATORS); + cr_assert_eq(ret, 1, ); +} + +Test(hex, test_hex_points) { + cfg->field = FIELD_PRIME; + char *where = "0xF235ABCDE6F"; + char *field = "0xFFFFFFFFFFFF"; + char *what = "ABCDE"; + point_t gen = {.point = mkvec2(mkintmod(stoi(23), strtoi(field)), + mkintmod(stoi(52), strtoi(field)))}; + point_t *generators[1] = {&gen}; + point_t point = {.point = mkvec2(mkintmod(strtoi(where), strtoi(field)), + mkintmod(stoi(31), strtoi(field)))}; + point_t *points[1] = {&point}; + + seed_t seed = {.seed = bits_from_hex("12345")}; + curve_t curve = {.seed = &seed, + .field = strtoi(field), + .a = mkintmod(stoi(15), strtoi(field)), + .b = mkintmod(stoi(20), strtoi(field)), + .order = stoi(22), + .generators = generators, + .ngens = 1, + .points = points, + .npoints = 1}; + + arg_t arg = {.args = what, .nargs = 1}; + + int ret = hex_check_param(&curve, &arg, OFFSET_POINTS); + cr_assert_eq(ret, 1, ); +}
\ No newline at end of file |
