aboutsummaryrefslogtreecommitdiff
path: root/src/exhaustive
diff options
context:
space:
mode:
authorJ08nY2018-03-03 01:02:08 +0100
committerJ08nY2018-03-03 01:02:08 +0100
commitac60f78a253efde94cab36264b0555b0691fdd8a (patch)
tree12ce2bfdee1f13f0b6e56a017c3c29979475fe02 /src/exhaustive
parent40cbb213ac910ddcaf22a26a247d2a9eeddca1fc (diff)
downloadecgen-ac60f78a253efde94cab36264b0555b0691fdd8a.tar.gz
ecgen-ac60f78a253efde94cab36264b0555b0691fdd8a.tar.zst
ecgen-ac60f78a253efde94cab36264b0555b0691fdd8a.zip
Diffstat (limited to 'src/exhaustive')
-rw-r--r--src/exhaustive/brainpool.c10
-rw-r--r--src/exhaustive/exhaustive.c12
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;