diff options
| author | J08nY | 2017-02-14 21:20:08 +0100 |
|---|---|---|
| committer | J08nY | 2017-02-14 21:20:08 +0100 |
| commit | 39c6155e0193ff69dcdf765e936487bfcf4f1b17 (patch) | |
| tree | 93230b214c64951ded6451f439f304ccca02b7e0 /src/invalid/invalid.c | |
| parent | 0c5ff628d52678bb44b9c595daf1289833d0e532 (diff) | |
| download | ecgen-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.c | 12 |
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++; } |
