aboutsummaryrefslogtreecommitdiff
path: root/src/invalid/invalid.c
diff options
context:
space:
mode:
authorJ08nY2017-02-14 21:20:08 +0100
committerJ08nY2017-02-14 21:20:08 +0100
commit39c6155e0193ff69dcdf765e936487bfcf4f1b17 (patch)
tree93230b214c64951ded6451f439f304ccca02b7e0 /src/invalid/invalid.c
parent0c5ff628d52678bb44b9c595daf1289833d0e532 (diff)
downloadecgen-39c6155e0193ff69dcdf765e936487bfcf4f1b17.tar.gz
ecgen-39c6155e0193ff69dcdf765e936487bfcf4f1b17.tar.zst
ecgen-39c6155e0193ff69dcdf765e936487bfcf4f1b17.zip
Added point generation:
- Prime order points for all prime divisors of curve order (all prime subgroups) - Random points - Minimal set of generators of the whole group (one or two points)
Diffstat (limited to 'src/invalid/invalid.c')
-rw-r--r--src/invalid/invalid.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/invalid/invalid.c b/src/invalid/invalid.c
index 7fe2dd4..54aa7c1 100644
--- a/src/invalid/invalid.c
+++ b/src/invalid/invalid.c
@@ -9,6 +9,7 @@
#include "math/equation.h"
#include "math/field.h"
#include "math/order.h"
+#include "math/point.h"
void invalid_init(gen_t generators[], config_t *cfg) {
generators[OFFSET_SEED] = &gen_skip;
@@ -74,6 +75,7 @@ size_t invalid_curves(curve_t *curve, config_t *cfg, pari_ulong *primes,
invalid_gen[OFFSET_B] = &b_random;
invalid_gen[OFFSET_CURVE] = &curve_nonzero;
invalid_gen[OFFSET_ORDER] = &order_init;
+ invalid_gen[OFFSET_POINTS] = &points_prime;
// We will have nprimes curves in the end
*curves = pari_malloc(nprimes * sizeof(curve_t *));
@@ -94,7 +96,7 @@ size_t invalid_curves(curve_t *curve, config_t *cfg, pari_ulong *primes,
while (ncurves < nprimes) {
pari_sp btop = avma;
// generate a curve with random b
- exhaustive_gen(invalid, cfg, invalid_gen, OFFSET_B, OFFSET_POINTS);
+ exhaustive_gen(invalid, cfg, invalid_gen, OFFSET_B, OFFSET_END);
// does some small prime from our array divide the curve order?
size_t count = 0;
@@ -104,13 +106,9 @@ size_t invalid_curves(curve_t *curve, config_t *cfg, pari_ulong *primes,
(*curves)[i] = invalid;
} else {
(*curves)[i] = curve_new();
- (*curves)[i]->field = gcopy(invalid->field);
- (*curves)[i]->a = gcopy(invalid->a);
- (*curves)[i]->b = gcopy(invalid->b);
- (*curves)[i]->curve = gcopy(invalid->curve);
- (*curves)[i]->order = gcopy(invalid->order);
+ (*curves)[i] = curve_copy(invalid, (*curves)[i]);
}
- output_csv(out, "%P#x", ';', curve_params((*curves)[i]));
+ output_csv(out, "%P#x", ',', curve_params((*curves)[i]));
ncurves++;
count++;
}