diff options
| author | J08nY | 2018-03-03 01:02:08 +0100 |
|---|---|---|
| committer | J08nY | 2018-03-03 01:02:08 +0100 |
| commit | ac60f78a253efde94cab36264b0555b0691fdd8a (patch) | |
| tree | 12ce2bfdee1f13f0b6e56a017c3c29979475fe02 /src/exhaustive | |
| parent | 40cbb213ac910ddcaf22a26a247d2a9eeddca1fc (diff) | |
| download | ecgen-ac60f78a253efde94cab36264b0555b0691fdd8a.tar.gz ecgen-ac60f78a253efde94cab36264b0555b0691fdd8a.tar.zst ecgen-ac60f78a253efde94cab36264b0555b0691fdd8a.zip | |
Diffstat (limited to 'src/exhaustive')
| -rw-r--r-- | src/exhaustive/brainpool.c | 10 | ||||
| -rw-r--r-- | src/exhaustive/exhaustive.c | 12 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/exhaustive/brainpool.c b/src/exhaustive/brainpool.c index 17c2c65..62a3352 100644 --- a/src/exhaustive/brainpool.c +++ b/src/exhaustive/brainpool.c @@ -3,11 +3,13 @@ * Copyright (C) 2017-2018 J08nY */ +#include <misc/types.h> #include "brainpool.h" #include "gen/gens.h" #include "gen/point.h" #include "gen/seed.h" #include "io/output.h" +#include "math/subgroup.h" #include "util/bits.h" #include "util/str.h" @@ -237,10 +239,12 @@ GENERATOR(brainpool_gen_gens) { return INT_MIN; } - curve->generators = points_new(1); + curve->generators = subgroups_new(1); curve->ngens = 1; + subgroup_t *sub = subgroup_new(); + curve->generators[0] = sub; point_t *G = point_new(); - curve->generators[0] = G; + sub->generator = G; G->point = ellmul(curve->curve, P, k); G->order = ellorder(curve->curve, G->point, NULL); G->cofactor = divii(curve->order, G->order); @@ -252,7 +256,7 @@ GENERATOR(brainpool_gen_gens) { CHECK(brainpool_check_gens) { pari_sp ltop = avma; - point_t *G = curve->generators[0]; + point_t *G = curve->generators[0]->generator; GEN min_degree = divis(subii(G->order, gen_1), 100); if (mpcmp(min_degree, gens_get_embedding(curve->field, G->order)) >= 0) { avma = ltop; diff --git a/src/exhaustive/exhaustive.c b/src/exhaustive/exhaustive.c index e7d6350..7ad4705 100644 --- a/src/exhaustive/exhaustive.c +++ b/src/exhaustive/exhaustive.c @@ -43,13 +43,15 @@ static void exhaustive_ginit(gen_f *generators) { if (cfg->prime) { generators[OFFSET_ORDER] = &order_gen_prime; } else if (cfg->cofactor) { - generators[OFFSET_ORDER] = &order_gen_smallfact; + generators[OFFSET_ORDER] = &order_gen_cofactor; } else { generators[OFFSET_ORDER] = &order_gen_any; } if (cfg->unique) { generators[OFFSET_GENERATORS] = &gens_gen_one; + } else if (cfg->cofactor) { + generators[OFFSET_GENERATORS] = &gens_gen_cofactor; } else { generators[OFFSET_GENERATORS] = &gens_gen_any; } @@ -144,7 +146,7 @@ static void exhaustive_ginit(gen_f *generators) { if (cfg->prime) { generators[OFFSET_ORDER] = &order_gen_prime; } else if (cfg->cofactor) { - generators[OFFSET_ORDER] = &order_gen_smallfact; + generators[OFFSET_ORDER] = &order_gen_cofactor; } else if (cfg->method == METHOD_ANOMALOUS) { generators[OFFSET_ORDER] = &anomalous_gen_order; } else { @@ -161,6 +163,8 @@ static void exhaustive_ginit(gen_f *generators) { if (cfg->unique) { generators[OFFSET_GENERATORS] = &gens_gen_one; + } else if (cfg->cofactor) { + generators[OFFSET_GENERATORS] = &gens_gen_cofactor; } else { generators[OFFSET_GENERATORS] = &gens_gen_any; } @@ -249,9 +253,9 @@ static void exhaustive_ainit(arg_t **gen_argss, arg_t **check_argss) { if (cfg->cofactor) { arg_t *order_arg = arg_new(); arg_t *gens_arg = arg_new(); - order_arg->args = &cfg->cofactor_bound; + order_arg->args = &cfg->cofactor_value; order_arg->nargs = 1; - gens_arg->args = &cfg->cofactor_bound; + gens_arg->args = &cfg->cofactor_value; gens_arg->nargs = 1; gen_argss[OFFSET_ORDER] = order_arg; gen_argss[OFFSET_GENERATORS] = gens_arg; |
