diff options
| author | J08nY | 2018-07-09 21:46:09 +0200 |
|---|---|---|
| committer | J08nY | 2018-07-10 00:05:44 +0200 |
| commit | e73dbb321629b845d37cae1b8376a8ac5a7542be (patch) | |
| tree | 51e376403e451a01ea659e4f0885630dd6b49f4a | |
| parent | 57888634921b61a828f9b98632b8a450bd6445f2 (diff) | |
| download | ecgen-e73dbb321629b845d37cae1b8376a8ac5a7542be.tar.gz ecgen-e73dbb321629b845d37cae1b8376a8ac5a7542be.tar.zst ecgen-e73dbb321629b845d37cae1b8376a8ac5a7542be.zip | |
| -rw-r--r-- | .travis.yml | 15 | ||||
| -rw-r--r-- | src/cm/cm_any.c | 20 | ||||
| -rw-r--r-- | src/cm/cm_any.h | 10 | ||||
| -rw-r--r-- | src/cm/cm_prime.c | 33 | ||||
| -rw-r--r-- | src/cm/cm_prime.h | 7 | ||||
| -rw-r--r-- | src/gen/point.c | 1 | ||||
| -rw-r--r-- | src/invalid/invalid.c | 1 | ||||
| -rw-r--r-- | test/src/cm/test_cm.c | 52 | ||||
| -rw-r--r-- | test/src/exhaustive/test_brainpool_rfc.c | 1 | ||||
| -rw-r--r-- | test/src/gen/test_order.c | 1 | ||||
| -rw-r--r-- | test/src/util/test_bits.c | 1 |
11 files changed, 12 insertions, 130 deletions
diff --git a/.travis.yml b/.travis.yml index 102bb2b..8f668f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,15 +20,16 @@ matrix: - clang-5.0 before_install: - - wget mirrors.kernel.org/ubuntu/pool/universe/p/pari/libpari-gmp-tls5_2.9.3-1_amd64.deb - - wget mirrors.kernel.org/ubuntu/pool/universe/p/pari/libpari-dev_2.9.3-1_amd64.deb - - wget mirrors.kernel.org/ubuntu/pool/universe/p/pari/pari-gp_2.9.3-1_amd64.deb - - wget mirrors.kernel.org/ubuntu/pool/main/r/readline/libreadline7_7.0-0ubuntu2_amd64.deb - - wget mirrors.kernel.org/ubuntu/pool/main/n/ncurses/libtinfo5_6.0%2B20160625-1ubuntu1_amd64.deb + - sudo apt-get update + - sudo apt-get install -y dpkg apt + - wget https://mirrors.kernel.org/ubuntu/pool/universe/p/pari/libpari-gmp-tls5_2.9.5-1_amd64.deb + - wget https://mirrors.kernel.org/ubuntu/pool/universe/p/pari/libpari-dev_2.9.5-1_amd64.deb + - wget https://mirrors.kernel.org/ubuntu/pool/universe/p/pari/pari-gp_2.9.5-1_amd64.deb + - wget https://mirrors.kernel.org/ubuntu/pool/main/r/readline/libreadline7_7.0-0ubuntu2_amd64.deb + - wget https://mirrors.kernel.org/ubuntu/pool/main/n/ncurses/libtinfo5_6.0%2B20160625-1ubuntu1_amd64.deb - wget http://pari.math.u-bordeaux.fr/pub/pari/packages/seadata.tgz - - sudo dpkg --force-all -i libtinfo5_6.0+20160625-1ubuntu1_amd64.deb libreadline7_7.0-0ubuntu2_amd64.deb libpari-gmp-tls5_2.9.3-1_amd64.deb libpari-dev_2.9.3-1_amd64.deb pari-gp_2.9.3-1_amd64.deb + - sudo dpkg --force-all -i libtinfo5_6.0+20160625-1ubuntu1_amd64.deb libreadline7_7.0-0ubuntu2_amd64.deb libpari-gmp-tls5_2.9.5-1_amd64.deb libpari-dev_2.9.5-1_amd64.deb pari-gp_2.9.5-1_amd64.deb - DATADIR=$(echo "default(datadir)" | gp -q | cut -d\" -f2) - - echo $DATADIR - sudo tar --strip-components=1 -C ${DATADIR} -xzvf seadata.tgz data/ script: # Test, clean, build for release diff --git a/src/cm/cm_any.c b/src/cm/cm_any.c index f993fa3..2cab060 100644 --- a/src/cm/cm_any.c +++ b/src/cm/cm_any.c @@ -3,8 +3,6 @@ * Copyright (C) 2017-2018 J08nY */ #include "cm_any.h" -#include <misc/config.h> -#include <obj/obj.h> #include "io/output.h" #include "obj/curve.h" #include "util/memory.h" @@ -205,24 +203,6 @@ GEN cm_construct_curve(GEN order, GEN d, GEN p, bool ord_prime) { return NULL; } -curve_t *cm_any_curve(GEN order) { - cm_any_qdisc_t min_disc = {0}; - good_qdisc_minimal(&min_disc, order); - debug_log("Got min D = %Pi", min_disc.d); - GEN e = cm_construct_curve(order, min_disc.d, min_disc.p, false); - if (e == NULL) { - fprintf(err, "Could not construct curve."); - return NULL; - } - curve_t *curve = curve_new(); - curve->field = min_disc.p; - curve->curve = e; - curve->a = ell_get_a4(e); - curve->b = ell_get_a6(e); - curve->order = gcopy(order); - return curve; -} - GENERATOR(cm_gen_curve_any) { pari_sp ltop = avma; GEN order = strtoi(cfg->cm_order); diff --git a/src/cm/cm_any.h b/src/cm/cm_any.h index 48dee1c..42fc68e 100644 --- a/src/cm/cm_any.h +++ b/src/cm/cm_any.h @@ -13,7 +13,8 @@ typedef struct { } cm_any_qdisc_t; /** - * @brief + * @brief Construct an elliptic curve given its order, CM discriminant and field + * order. * @param order * @param d * @param p @@ -24,13 +25,6 @@ GEN cm_construct_curve(GEN order, GEN d, GEN p, bool ord_prime); /** * @brief - * @param order - * @return - */ -curve_t *cm_any_curve(GEN order); - -/** - * @brief * @param curve * @param args * @param state diff --git a/src/cm/cm_prime.c b/src/cm/cm_prime.c index e3a6882..383229b 100644 --- a/src/cm/cm_prime.c +++ b/src/cm/cm_prime.c @@ -96,8 +96,8 @@ static void qdisc_next(cm_prime_qdisc_t *qdisc) { if (cmpii(absp, rlog2) < 0 && equalii(modis(pprod, 8), stoi(5)) && m4 != 1 && m4 != 2) { debug_log("candidate D = %Pi", pprod); - GEN x; - GEN y; + GEN x = NULL; + GEN y = NULL; if (!cornacchia2(absp, qdisc->order, &x, &y)) { qdisc->i = gerepileupto(btop, addis(qdisc->i, 1)); // debug_log("Cornacchia fail"); @@ -137,35 +137,6 @@ static void qdisc_next(cm_prime_qdisc_t *qdisc) { static void qdisc_free(cm_prime_qdisc_t *qdisc) { try_free(qdisc->Sp); } -curve_t *cm_prime_curve(GEN order) { - GEN e = NULL; - - cm_prime_qdisc_t qdisc = {0}; - qdisc_init(&qdisc, order); - do { - qdisc_next(&qdisc); - e = cm_construct_curve(order, qdisc.D, qdisc.p, true); - } while (e == NULL); - qdisc_free(&qdisc); - - curve_t *result = curve_new(); - result->field = qdisc.p; - result->a = ell_get_a4(e); - result->b = ell_get_a6(e); - result->curve = e; - result->order = order; - result->generators = subgroups_new(1); - result->generators[0] = subgroup_new(); - result->generators[0]->generator = point_new(); - result->generators[0]->generator->point = genrand(e); - result->generators[0]->generator->order = order; - result->generators[0]->generator->cofactor = stoi(1); - result->generators[0]->npoints = 0; - result->ngens = 1; - - return result; -} - GENERATOR(cm_gen_curve_prime) { GEN order = strtoi(cfg->cm_order); GEN e = NULL; diff --git a/src/cm/cm_prime.h b/src/cm/cm_prime.h index 9b25100..739da84 100644 --- a/src/cm/cm_prime.h +++ b/src/cm/cm_prime.h @@ -26,13 +26,6 @@ typedef struct { * Algorithm mostly from: * Constructing elliptic curves of prime order * by Reinier Broker and Peter Stevenhagen - * @param order the requested order, must be prime - * @return - */ -curve_t* cm_prime_curve(GEN order); - -/** - * @brief * @param curve * @param args * @param state diff --git a/src/gen/point.c b/src/gen/point.c index 7d3ba90..d98edac 100644 --- a/src/gen/point.c +++ b/src/gen/point.c @@ -3,7 +3,6 @@ * Copyright (C) 2017-2018 J08nY */ #include "point.h" -#include <obj/obj.h> #include "exhaustive/arg.h" #include "math/subgroup.h" #include "obj/point.h" diff --git a/src/invalid/invalid.c b/src/invalid/invalid.c index 9b4dcb2..686bf23 100644 --- a/src/invalid/invalid.c +++ b/src/invalid/invalid.c @@ -3,7 +3,6 @@ * Copyright (C) 2017-2018 J08nY */ #include "invalid.h" -#include <misc/config.h> #include "exhaustive/arg.h" #include "exhaustive/check.h" #include "exhaustive/exhaustive.h" diff --git a/test/src/cm/test_cm.c b/test/src/cm/test_cm.c deleted file mode 100644 index d3f8257..0000000 --- a/test/src/cm/test_cm.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * ecgen, tool for generating Elliptic curve domain parameters - * Copyright (C) 2017-2018 J08nY - */ - -#include <criterion/criterion.h> -#include "cm/cm_any.h" -#include "cm/cm_prime.h" -#include "obj/curve.h" -#include "test/default.h" -#include "test/input.h" -#include "test/output.h" -#include "util/random.h" - -void cm_setup() { - default_setup(); - input_setup(); - output_setup(); - random_init(); -} - -void cm_teardown() { - default_teardown(); - input_teardown(); - output_teardown(); -} - -TestSuite(cm, .init = cm_setup, .fini = cm_teardown); - -Test(cm, test_curve_prime) { - cfg->bits = 128; - cfg->cm_order = "263473633827487324648193013259296339349"; - GEN order = strtoi(cfg->cm_order); - - curve_t *curve = cm_prime_curve(order); - cr_assert_not_null(curve, ); - cr_assert(equalii(curve->order, order), ); - cr_assert(equalii(ellcard(curve->curve, NULL), order), ); - curve_free(&curve); -} - -Test(cm, test_curve_composite) { - cfg->bits = 64; - cfg->cm_order = "13282407956253574712"; - GEN order = strtoi(cfg->cm_order); - - curve_t *curve = cm_any_curve(order); - cr_assert_not_null(curve, ); - cr_assert(equalii(curve->order, order), ); - cr_assert(equalii(ellcard(curve->curve, NULL), order), ); - curve_free(&curve); -}
\ No newline at end of file diff --git a/test/src/exhaustive/test_brainpool_rfc.c b/test/src/exhaustive/test_brainpool_rfc.c index 72eb75f..02398d7 100644 --- a/test/src/exhaustive/test_brainpool_rfc.c +++ b/test/src/exhaustive/test_brainpool_rfc.c @@ -5,7 +5,6 @@ #include <criterion/criterion.h> #include <criterion/parameterized.h> -#include <misc/types.h> #include "exhaustive/brainpool.h" #include "exhaustive/brainpool_rfc.h" #include "exhaustive/check.h" diff --git a/test/src/gen/test_order.c b/test/src/gen/test_order.c index 02668f9..2ec4109 100644 --- a/test/src/gen/test_order.c +++ b/test/src/gen/test_order.c @@ -3,7 +3,6 @@ * Copyright (C) 2017-2018 J08nY */ #include <criterion/criterion.h> -#include <obj/obj.h> #include "gen/order.h" #include "test/io.h" diff --git a/test/src/util/test_bits.c b/test/src/util/test_bits.c index e2e7648..c1dfd6a 100644 --- a/test/src/util/test_bits.c +++ b/test/src/util/test_bits.c @@ -5,7 +5,6 @@ #include <criterion/criterion.h> #include <criterion/parameterized.h> -#include <misc/types.h> #include "test/default.h" #include "test/memory.h" #include "util/bits.h" |
