aboutsummaryrefslogtreecommitdiff
path: root/src/math
diff options
context:
space:
mode:
Diffstat (limited to 'src/math')
-rw-r--r--src/math/arg.c19
-rw-r--r--src/math/arg.h25
-rw-r--r--src/math/curve.c162
-rw-r--r--src/math/curve.h105
-rw-r--r--src/math/equation.c126
-rw-r--r--src/math/equation.h151
-rw-r--r--src/math/field.c174
-rw-r--r--src/math/field.h80
-rw-r--r--src/math/gens.c45
-rw-r--r--src/math/gens.h45
-rw-r--r--src/math/order.c114
-rw-r--r--src/math/order.h88
-rw-r--r--src/math/point.c261
-rw-r--r--src/math/point.h180
-rw-r--r--src/math/random.c64
-rw-r--r--src/math/random.h39
-rw-r--r--src/math/seed.c104
-rw-r--r--src/math/seed.h83
-rw-r--r--src/math/types.c11
-rw-r--r--src/math/types.h132
20 files changed, 0 insertions, 2008 deletions
diff --git a/src/math/arg.c b/src/math/arg.c
deleted file mode 100644
index 6b11777..0000000
--- a/src/math/arg.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "arg.h"
-#include "util/memory.h"
-
-arg_t *arg_new(void) { return try_calloc(sizeof(arg_t)); }
-
-void arg_free(arg_t **arg) {
- if (*arg) {
- if ((*arg)->allocd) {
- pari_free((*arg)->allocd);
- (*arg)->allocd = NULL;
- }
- pari_free(*arg);
- *arg = NULL;
- }
-}
diff --git a/src/math/arg.h b/src/math/arg.h
deleted file mode 100644
index c0f2f6f..0000000
--- a/src/math/arg.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file arg.h
- */
-#ifndef ECGEN_ARG_H
-#define ECGEN_ARG_H
-
-#include "types.h"
-
-/**
- * @brief
- * @return
- */
-arg_t *arg_new(void);
-
-/**
- * @brief
- * @param arg
- */
-void arg_free(arg_t **arg);
-
-#endif // ECGEN_ARG_H
diff --git a/src/math/curve.c b/src/math/curve.c
deleted file mode 100644
index bc382cd..0000000
--- a/src/math/curve.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "curve.h"
-#include "point.h"
-#include "seed.h"
-#include "util/memory.h"
-
-curve_t *curve_new(void) { return try_calloc(sizeof(curve_t)); }
-
-curve_t *curve_copy(const curve_t *src, curve_t *dest) {
- if (src->seed) dest->seed = seed_copy(src->seed, dest->seed);
- if (src->field) dest->field = gcopy(src->field);
- if (src->a) dest->a = gcopy(src->a);
- if (src->b) dest->b = gcopy(src->b);
- if (src->curve) dest->curve = gcopy(src->curve);
- if (src->order) dest->order = gcopy(src->order);
- if (src->generators) {
- dest->generators = points_new_copy(src->generators, src->ngens);
- dest->ngens = src->ngens;
- }
- if (src->points) {
- dest->points = points_new_copy(src->points, src->npoints);
- dest->npoints = src->npoints;
- }
- return dest;
-}
-
-curve_t *curve_new_copy(const curve_t *src) {
- curve_t *result = curve_new();
- return curve_copy(src, result);
-}
-
-curve_t *curve_clone(const curve_t *src, curve_t *dest) {
- if (src->seed) dest->seed = seed_clone(src->seed, dest->seed);
- if (src->field) dest->field = gclone(src->field);
- if (src->a) dest->a = gclone(src->a);
- if (src->b) dest->b = gclone(src->b);
- if (src->curve) dest->curve = gclone(src->curve);
- if (src->order) dest->order = gclone(src->order);
- if (src->generators) {
- dest->generators = points_new_clone(src->generators, src->ngens);
- dest->ngens = src->ngens;
- }
- if (src->points) {
- dest->points = points_new_clone(src->points, src->npoints);
- dest->npoints = src->npoints;
- }
- return dest;
-}
-
-curve_t *curve_new_clone(const curve_t *src) {
- curve_t *result = curve_new();
- return curve_clone(src, result);
-}
-
-void curve_free(curve_t **curve) {
- if (*curve) {
- seed_free(&(*curve)->seed);
- points_free_deep(&(*curve)->generators, (*curve)->ngens);
- points_free_deep(&(*curve)->points, (*curve)->npoints);
-
- if ((*curve)->curve) {
- // TODO, this is possibly dangerous...
- obj_free((*curve)->curve);
- if (isclone((*curve)->curve)) {
- gunclone((*curve)->curve);
- }
- }
-
- if ((*curve)->field && isclone((*curve)->field)) {
- gunclone((*curve)->field);
- }
- if ((*curve)->a && isclone((*curve)->a)) {
- gunclone((*curve)->a);
- }
- if ((*curve)->b && isclone((*curve)->b)) {
- gunclone((*curve)->b);
- }
- if ((*curve)->order && isclone((*curve)->order)) {
- gunclone((*curve)->order);
- }
-
- pari_free(*curve);
- *curve = NULL;
- }
-}
-
-GENERATOR(curve_gen_any) {
- pari_sp ltop = avma;
- GEN v = gen_0;
- switch (typ(curve->field)) {
- case t_INT:
- v = gtovec0(gen_0, 2);
- gel(v, 1) = curve->a;
- gel(v, 2) = curve->b;
- break;
- case t_FFELT:
- v = gtovec0(gen_0, 5);
- gel(v, 1) = gen_1;
- gel(v, 2) = curve->a;
- gel(v, 4) = curve->b;
- break;
- default:
- pari_err_TYPE("curve_gen_any", curve->field);
- }
- GEN crv = ellinit(v, curve->field, -1);
-
- if (glength(crv) == 0) {
- avma = ltop;
- return -3;
- } else {
- curve->curve = gerepilecopy(ltop, crv);
- return 1;
- }
-}
-
-GENERATOR(curve_gen_nonzero) {
- pari_sp ltop = avma;
- int any = curve_gen_any(curve, cfg, args);
- if (any <= 0) {
- return any;
- }
- if (gequal0(ell_get_disc(curve->curve))) {
- avma = ltop;
- return -3;
- } else {
- return 1;
- }
-}
-
-static int curve_gen_seed_fp(curve_t *curve, const config_t *cfg, arg_t *args) {
- // TODO implement
- return INT_MIN;
-}
-
-static int curve_gen_seed_f2m(curve_t *curve, const config_t *cfg,
- arg_t *args) {
- // TODO implement
- return INT_MIN;
-}
-
-GENERATOR(curve_gen_seed) {
- switch (typ(curve->field)) {
- case t_INT:
- return curve_gen_seed_fp(curve, cfg, args);
- case t_FFELT:
- return curve_gen_seed_f2m(curve, cfg, args);
- default:
- pari_err_TYPE("curve_gen_seed", curve->field);
- return INT_MIN; /* NOT REACHABLE */
- }
-}
-
-UNROLL(curve_unroll) {
- if (curve->curve) {
- obj_free(curve->curve);
- curve->curve = NULL;
- }
- return -1;
-}
diff --git a/src/math/curve.h b/src/math/curve.h
deleted file mode 100644
index 2e7651f..0000000
--- a/src/math/curve.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file curve.h
- */
-#ifndef ECGEN_CURVE_H
-#define ECGEN_CURVE_H
-
-#include <pari/pari.h>
-#include "types.h"
-
-/**
- * GENERATOR(gen_t)
- * Creates a curve GEN in curve_t curve from field, a and b.
- * Always succeeds.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(curve_gen_any);
-
-/**
- * GENERATOR(gen_t)
- * Creates a curve GEN in curve_t curve from field, a and b.
- * Succeeds if a curve exists(non-zero discriminant).
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(curve_gen_nonzero);
-
-/**
- * GENERATOR(gen_t)
- * Creates a curve GEN in curve_t curve from field, a and b. Using the ANSI
- * X9.62 verifiably random algorithm.
- * Succeeds if a curve exists(non-zero discriminant).
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(curve_gen_seed);
-
-/**
- *
- * @param curve
- * @param cfg
- * @param from
- * @param to
- * @return
- */
-UNROLL(curve_unroll);
-
-/**
- * Allocates and zeros out a new curve_t object.
- * @return new curve
- */
-curve_t *curve_new(void);
-
-/**
- * Copies parameters from src curve to dest curve, allocates space for points.
- * Otherwise expects everything to be allocated.
- *
- * @param src source curve
- * @param dest destination curve
- * @return destination curve
- */
-curve_t *curve_copy(const curve_t *src, curve_t *dest);
-
-/**
- *
- * @param src
- * @return
- */
-curve_t *curve_new_copy(const curve_t *src);
-
-/**
- *
- * @param src
- * @param dest
- * @return
- */
-curve_t *curve_clone(const curve_t *src, curve_t *dest);
-
-/**
- *
- * @param src
- * @return
- */
-curve_t *curve_new_clone(const curve_t *src);
-
-/**
- * Free a curve_t along with it's seed_t and point_ts.
- * @param curve to free
- */
-void curve_free(curve_t **curve);
-
-#endif // ECGEN_CURVE_H
diff --git a/src/math/equation.c b/src/math/equation.c
deleted file mode 100644
index 20313cb..0000000
--- a/src/math/equation.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "equation.h"
-#include "io/input.h"
-#include "math/field.h"
-
-GENERATOR(a_gen_random) {
- curve->a = genrand(curve->field);
- return 1;
-}
-
-GENERATOR(a_gen_input) {
- pari_sp ltop = avma;
- GEN inp = input_int("a:", cfg->bits);
- if (gequalm1(inp)) {
- avma = ltop;
- return 0;
- }
- GEN elem = field_ielement(curve->field, inp);
- if (!elem) {
- avma = ltop;
- return 0;
- }
- curve->a = elem;
- return 1;
-}
-
-static GEN a = NULL;
-static curve_t *curve_a = NULL;
-
-GENERATOR(a_gen_once) {
- if (a && curve_a == curve) {
- curve->a = gcopy(a);
- return 1;
- }
-
- int inp = a_gen_input(curve, cfg, args);
- if (inp > 0) {
- a = gclone(curve->a);
- curve_a = curve;
- return 1;
- } else {
- return 0;
- }
-}
-
-GENERATOR(a_gen_zero) {
- curve->a = gen_0;
- return 1;
-}
-
-GENERATOR(a_gen_one) {
- curve->a = gen_1;
- return 1;
-}
-
-GENERATOR(a_gen_seed) {
- // TODO implement
- return INT_MIN;
-}
-
-GENERATOR(b_gen_random) {
- curve->b = genrand(curve->field);
- return 1;
-}
-
-GENERATOR(b_gen_input) {
- pari_sp ltop = avma;
- GEN inp = input_int("b:", cfg->bits);
- if (gequalm1(inp)) {
- avma = ltop;
- return 0;
- }
- GEN elem = field_ielement(curve->field, inp);
- if (!elem) {
- avma = ltop;
- return 0;
- }
- curve->b = elem;
- return 1;
-}
-
-static GEN b = NULL;
-static curve_t *curve_b = NULL;
-
-GENERATOR(b_gen_once) {
- if (b && curve_b == curve) {
- curve->b = gcopy(b);
- return 1;
- }
-
- int inp = b_gen_input(curve, cfg, args);
- if (inp > 0) {
- b = gclone(curve->b);
- curve_b = curve;
- return 1;
- } else {
- return 0;
- }
-}
-
-GENERATOR(b_gen_zero) {
- curve->b = gen_0;
- return 1;
-}
-
-GENERATOR(g_gen_one) {
- curve->b = gen_1;
- return 1;
-}
-
-GENERATOR(b_gen_seed) {
- // TODO implement
- return INT_MIN;
-}
-
-void equation_quit(void) {
- if (a && isclone(a)) {
- gunclone(a);
- }
- if (b && isclone(b)) {
- gunclone(b);
- }
-}
diff --git a/src/math/equation.h b/src/math/equation.h
deleted file mode 100644
index 741517c..0000000
--- a/src/math/equation.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file equation.h
- */
-#ifndef ECGEN_EQUATION_H
-#define ECGEN_EQUATION_H
-
-#include "types.h"
-
-/**
- * GENERATOR(gen_t)
- * Creates a random a parameter by selecting a random field
- * element from the curve field.
- * Always succeeds.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(a_gen_random);
-
-/**
- * GENERATOR(gen_t)
- * Creates a parameter by reading from input.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(a_gen_input);
-
-/**
- * GENERATOR(gen_t)
- * Creates a parameter by reading once from input.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(a_gen_once);
-
-/**
- * GENERATOR(gen_t)
- * Creates a parameter set to zero.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(a_gen_zero);
-
-/**
- * GENERATOR(gen_t)
- * Creates a parameter set to one.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(a_gen_one);
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(a_gen_seed);
-
-/**
- * GENERATOR(gen_t)
- * Creates a random b parameter by selecting a random field
- * element from the curve field.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(b_gen_random);
-
-/**
- * GENERATOR(gen_t)
- * Creates b parameter by reading from input.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(b_gen_input);
-
-/**
- * GENERATOR(gen_t)
- * Creates b parameter by reading once from input.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(b_gen_once);
-
-/**
- * GENERATOR(gen_t)
- * Creates b parameter set to zero.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(b_gen_zero);
-
-/**
- * GENERATOR(gen_t)
- * Creates b parameter set to one.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(g_gen_one);
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(b_gen_seed);
-
-/**
- *
- */
-void equation_quit(void);
-
-#endif // ECGEN_EQUATION_H
diff --git a/src/math/field.c b/src/math/field.c
deleted file mode 100644
index 685036a..0000000
--- a/src/math/field.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "field.h"
-#include "io/input.h"
-#include "poly.h"
-
-static GEN field_primer(unsigned long bits) { return random_prime(bits); }
-
-static GEN field_binaryr(unsigned long bits) {
- if (poly_exists(bits)) {
- return poly_find_gen(bits);
- } else {
- fprintf(stderr,
- "Unable to find a suitable binary field. Use an explicit one.");
- exit(1);
- }
-}
-
-GENERATOR(field_gen_random) {
- switch (cfg->field) {
- case FIELD_PRIME:
- curve->field = field_primer(cfg->bits);
- return 1;
- case FIELD_BINARY:
- curve->field = field_binaryr(cfg->bits);
- return 1;
- default:
- return INT_MIN; /* NOT REACHABLE */
- }
-}
-
-GENERATOR(field_gen_input) {
- pari_sp ltop = avma;
- switch (cfg->field) {
- case FIELD_PRIME: {
- GEN p = input_prime("p:", cfg->bits);
- if (equalii(p, gen_m1)) {
- avma = ltop;
- return 0;
- }
- curve->field = p;
- return 1;
- }
- case FIELD_BINARY: {
- GEN m = input_short("m:");
- if (!equalis(m, cfg->bits)) {
- avma = ltop;
- return 0;
- }
-
- GEN e1 = input_short("e1:");
- if (equalii(e1, gen_m1)) {
- avma = ltop;
- return 0;
- }
- GEN e2 = input_short("e2:");
- if (equalii(e2, gen_m1)) {
- avma = ltop;
- return 0;
- }
- GEN e3 = input_short("e3:");
- if (equalii(e3, gen_m1)) {
- avma = ltop;
- return 0;
- }
-
- if (isintzero(e1) && isintzero(e2) && isintzero(e3)) {
- fprintf(stderr, "At least one exponent must be nonzero.\n");
- avma = ltop;
- return 0;
- }
-
- GEN v = gtovec0(gen_0, cfg->bits + 1);
- gel(v, itos(m) + 1) = gen_1;
- if (gsigne(e1) == 1) gel(v, itos(e1) + 1) = gen_1;
- if (gsigne(e2) == 1) gel(v, itos(e2) + 1) = gen_1;
- if (gsigne(e3) == 1) gel(v, itos(e3) + 1) = gen_1;
- gel(v, 1) = gen_1;
-
- GEN poly = gmul(gtopolyrev(v, -1), gmodulss(1, 2));
- if (!isirreducible(poly)) {
- fprintf(stderr, "Polynomial is reducible.\n");
- avma = ltop;
- return 0;
- }
-
- curve->field = gerepilecopy(ltop, ffgen(poly, -1));
- return 1;
- }
- default:
- return INT_MIN; /* NOT REACHABLE */
- }
-}
-
-static GEN field = NULL;
-static curve_t *curve_field = NULL;
-
-GENERATOR(field_gen_once) {
- if (field && curve_field == curve) {
- curve->field = gcopy(field);
- return 1;
- }
-
- int inp = field_gen_input(curve, cfg, args);
- if (inp > 0) {
- field = gclone(curve->field);
- curve_field = curve;
- return 1;
- } else {
- return 0;
- }
-}
-
-GEN field_params(GEN field) {
- pari_sp ltop = avma;
-
- if (typ(field) == t_INT) {
- return gtovec(field);
- }
-
- GEN out = gtovec0(gen_0, 4);
-
- long j = 1;
- long l2 = glength(member_mod(field)) - 1;
- {
- pari_sp btop = avma;
- for (long i = l2; i > 0; --i) {
- GEN c = polcoeff0(member_mod(field), i, -1);
- if (cmpis(c, 0) != 0) {
- gel(out, j) = stoi(i);
- j++;
- }
- gerepileall(btop, 2, &out, &c);
- }
- }
- return gerepilecopy(ltop, out);
-}
-
-GEN field_elementi(GEN element) {
- switch (typ(element)) {
- case t_INT:
- return element;
- case t_INTMOD:
- return lift(element);
- case t_FFELT: {
- pari_sp ltop = avma;
- GEN coeffs = FF_to_FpXQ(element);
- GEN vec = gtovec(coeffs);
- GEN n = fromdigits(vec, stoi(2));
- return gerepilecopy(ltop, n);
- }
- default:
- pari_err_TYPE("field_elementi", element);
- return NULL; /* NOT REACHABLE */
- }
-}
-
-GEN field_ielement(GEN field, GEN in) {
- switch (typ(field)) {
- case t_INT:
- return Fp_to_mod(in, field);
- case t_FFELT: {
- pari_sp ltop = avma;
- GEN coeffs = digits(in, gen_2);
- GEN poly = gtopoly(coeffs, -1);
- return gerepilecopy(ltop, Fq_to_FF(poly, field));
- }
- default:
- pari_err_TYPE("field_ielement, field is unknown type. ", field);
- return gen_m1; /* NOT REACHABLE */
- }
-}
diff --git a/src/math/field.h b/src/math/field.h
deleted file mode 100644
index 04af2c6..0000000
--- a/src/math/field.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file field.h
- */
-#ifndef ECGEN_FIELD_H
-#define ECGEN_FIELD_H
-
-#include "types.h"
-
-/**
- * GENERATOR(gen_t)
- * Creates a random field.
- * Always succeeds.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(field_gen_random);
-
-/**
- * GENERATOR(gen_t)
- * Creates a field by reading:
- * - a prime number in the prime field case
- * - three short exponents of the reduction polynomial in the binary case
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(field_gen_input);
-
-/**
- * GENERATOR(gen_t)
- * Creates the field by reading it once.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(field_gen_once);
-
-/**
- * Extract a field representation from a field.
- * - char(field) == 2:
- * returns the vector of powers of middle coefficients of the reduction
- * polynomial.
- * - char(field) != 2:
- * returns the vector of the field characteristic(p).
- *
- * @param field
- * @return field representation
- */
-GEN field_params(GEN field);
-
-/**
- * Transforms a field element to an integer.
- * Uses the polynomial basis of the underlying field in case of a binary field.
- *
- * @param element t_INTMOD, t_INT, t_FFELT to transform
- * @return t_INT
- */
-GEN field_elementi(GEN element);
-
-/**
- * Transforms an integer into a field element.
- *
- * @param field the field to work in
- * @param in the integer to transform
- * @return a field element, t_INTMOD or t_FFELT
- */
-GEN field_ielement(GEN field, GEN in);
-
-#endif // ECGEN_FIELD_H
diff --git a/src/math/gens.c b/src/math/gens.c
deleted file mode 100644
index f5f9fcb..0000000
--- a/src/math/gens.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "gens.h"
-#include "point.h"
-
-static int gens_put(curve_t *curve, GEN generators, long len) {
- curve->generators = points_new((size_t)len);
- curve->ngens = (size_t)len;
-
- for (long i = 1; i <= len; ++i) {
- point_t *p = point_new();
- p->point = gel(generators, i);
- p->order = ellorder(curve->curve, p->point, NULL);
- p->cofactor = divii(curve->order, p->order);
- curve->generators[i - 1] = p;
- }
-
- return 1;
-}
-
-GENERATOR(gens_gen_any) {
- GEN generators = ellff_get_gens(curve->curve);
- long len = glength(generators);
- return gens_put(curve, generators, len);
-}
-
-GENERATOR(gens_gen_one) {
- pari_sp ltop = avma;
- GEN generators = ellff_get_gens(curve->curve);
- long len = glength(generators);
- if (len == 2) {
- avma = ltop;
- return -5;
- }
- return gens_put(curve, generators, len);
-}
-
-UNROLL(gens_unroll) {
- if (curve->generators) {
- points_free_deep(&curve->generators, curve->ngens);
- }
- return -1;
-}
diff --git a/src/math/gens.h b/src/math/gens.h
deleted file mode 100644
index f46efbf..0000000
--- a/src/math/gens.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @brief
- * @file gens.h
- */
-#ifndef ECGEN_GENS_H
-#define ECGEN_GENS_H
-
-#include "types.h"
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(gens_gen_any);
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(gens_gen_one);
-
-/**
- * UNROLL(unroll_t)
- *
- * @param curve
- * @param cfg
- * @param from
- * @param to
- * @return
- */
-UNROLL(gens_unroll);
-
-#endif // ECGEN_GENS_H
diff --git a/src/math/order.c b/src/math/order.c
deleted file mode 100644
index 2c963f6..0000000
--- a/src/math/order.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "order.h"
-#include "io/input.h"
-
-GEN order_factors(curve_t *curve, const config_t *cfg) {
- if (cfg->prime) {
- return gtovec(curve->order);
- } else {
- GEN factors = Z_factor(curve->order);
- return gel(factors, 1);
- }
-}
-
-GEN order_groups(curve_t *curve, const config_t *cfg, GEN factors) {
- long nprimes = glength(factors);
- if (cfg->prime) {
- return gtovec(curve->order);
- } else {
- GEN amount = int2n(nprimes);
- GEN groups = gtovec0(gen_0, itos(amount) - 1);
-
- for (size_t count = 1; count < (size_t)(1 << nprimes); ++count) {
- GEN result = gen_1;
- for (long bit = 0; bit < nprimes; ++bit) {
- size_t mask = (size_t)(1 << bit);
- if (count & mask) {
- result = mulii(result, gel(factors, bit + 1));
- }
- }
- gel(groups, count) = result;
- }
- // TODO: sort this, as it is not necessarily sorted, in fact most likely
- // not
- return groups;
- }
-}
-
-GENERATOR(order_gen_input) {
- pari_sp ltop = avma;
- GEN ord = input_int("order", cfg->bits);
- if (gequalm1(ord)) {
- avma = ltop;
- return -4;
- } else {
- curve->order = ord;
- obj_insert_shallow(curve->curve, 1, ord);
- return 1;
- }
-}
-
-GENERATOR(order_gen_any) {
- GEN ord = ellff_get_card(curve->curve);
- if (isclone(ord)) {
- curve->order = gcopy(ord);
- } else {
- curve->order = ord;
- }
- return 1;
-}
-
-GENERATOR(order_gen_sea) {
- pari_sp ltop = avma;
- GEN order = ellsea(curve->curve, 0);
- if (gequal0(order)) {
- avma = ltop;
- return -4;
- } else {
- curve->order = order;
- obj_insert_shallow(curve->curve, 1, order);
- return 1;
- }
-}
-
-GENERATOR(order_gen_smallfact) {
- if (!args) {
- fprintf(stderr, "No args to an arged function. order_gen_smallfact\n");
- return INT_MIN;
- }
-
- pari_ulong smallfact = *(pari_ulong *)args->args;
- pari_sp ltop = avma;
- GEN fact = mpfact(smallfact);
- if (lgefint(fact) > 3) {
- smallfact = 0;
- } else {
- smallfact = itou(fact);
- }
-
- GEN order = ellsea(curve->curve, smallfact);
- if (gequal0(order) || gequal1(gcdii(order, fact))) {
- avma = ltop;
- return -4;
- } else {
- curve->order = order;
- obj_insert_shallow(curve->curve, 1, curve->order);
- return 1;
- }
-}
-
-GENERATOR(order_gen_prime) {
- pari_sp ltop = avma;
- GEN order = ellsea(curve->curve, 1);
- if (gequal0(order) || !(isprime(order))) {
- avma = ltop;
- return -4;
- } else {
- curve->order = order;
- obj_insert_shallow(curve->curve, 1, curve->order);
- return 1;
- }
-}
diff --git a/src/math/order.h b/src/math/order.h
deleted file mode 100644
index bdb6ec0..0000000
--- a/src/math/order.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file order.h
- */
-#ifndef ECGEN_ORDER_H
-#define ECGEN_ORDER_H
-
-#include "types.h"
-
-/**
- * @brief Factors curve order.
- * @param curve
- * @param cfg
- * @return
- */
-GEN order_factors(curve_t *curve, const config_t *cfg);
-
-/**
- * @brief Enumerates all subgroup orders of a curve given prime order factors.
- * @param curve
- * @param cfg
- * @param factors
- * @return
- */
-GEN order_groups(curve_t *curve, const config_t *cfg, GEN factors);
-
-/**
- * GENERATOR(gen_t)
- * Reads the curve order from input, does not verify it.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args Current optional generator argument
- * @return state diff
- * @return state diff
- */
-GENERATOR(order_gen_input);
-
-/**
- * GENERATOR(gen_t)
- * Calculates the curve order, using a general algorithm.
- * Always succeeds.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args Current optional generator argument
- * @return state diff
- */
-GENERATOR(order_gen_any);
-
-/**
- * GENERATOR(gen_t)
- * Calculates the curve order, using the SEA algorithm.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(order_gen_sea);
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args pari_ulong passed to ellsea(curve, smallfact)
- * @return state diff
- */
-GENERATOR(order_gen_smallfact);
-
-/**
- * GENERATOR(gen_t)
- * Calculates the curve order, always using the SEA algorithm,
- * gives up early in case the order is divisible by "something".
- * Succeeds if the curve has a prime order.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(order_gen_prime);
-
-#endif // ECGEN_ORDER_H
diff --git a/src/math/point.c b/src/math/point.c
deleted file mode 100644
index 4251913..0000000
--- a/src/math/point.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "point.h"
-#include "order.h"
-#include "util/memory.h"
-
-point_t *point_new(void) { return try_calloc(sizeof(point_t)); }
-
-point_t *point_copy(const point_t *src, point_t *dest) {
- if (src->point) dest->point = gcopy(src->point);
- if (src->order) dest->order = gcopy(src->order);
- if (src->cofactor) dest->cofactor = gcopy(src->cofactor);
- return dest;
-}
-
-point_t *point_new_copy(const point_t *src) {
- point_t *result = point_new();
- return point_copy(src, result);
-}
-
-point_t *point_clone(const point_t *src, point_t *dest) {
- if (src->point) dest->point = gclone(src->point);
- if (src->order) dest->order = gclone(src->order);
- if (src->cofactor) dest->cofactor = gclone(src->cofactor);
- return dest;
-}
-
-point_t *point_new_clone(const point_t *src) {
- point_t *result = point_new();
- return point_clone(src, result);
-}
-
-void point_free(point_t **point) {
- if (*point) {
- if ((*point)->point && isclone((*point)->point)) {
- gunclone((*point)->point);
- }
- if ((*point)->order && isclone((*point)->order)) {
- gunclone((*point)->order);
- }
- if ((*point)->cofactor && isclone((*point)->cofactor)) {
- gunclone((*point)->cofactor);
- }
- pari_free(*point);
- *point = NULL;
- }
-}
-
-point_t **points_new(size_t num) { return try_calloc(num * sizeof(point_t *)); }
-
-point_t **points_copy(point_t **const src, point_t **dest, size_t num) {
- for (size_t i = 0; i < num; ++i) {
- dest[i] = point_new_copy(src[i]);
- }
- return dest;
-}
-
-point_t **points_new_copy(point_t **const src, size_t num) {
- point_t **result = points_new(num);
- return points_copy(src, result, num);
-}
-
-point_t **points_clone(point_t **const src, point_t **dest, size_t num) {
- for (size_t i = 0; i < num; ++i) {
- dest[i] = point_new_clone(src[i]);
- }
- return dest;
-}
-
-point_t **points_new_clone(point_t **const src, size_t num) {
- point_t **result = points_new(num);
- return points_clone(src, result, num);
-}
-
-void points_free(point_t ***points) {
- if (*points) {
- pari_free(*points);
- *points = NULL;
- }
-}
-
-void points_free_deep(point_t ***points, size_t npoints) {
- if (*points) {
- for (size_t i = 0; i < npoints; ++i) {
- point_free(&(*points)[i]);
- }
- points_free(points);
- }
-}
-
-GENERATOR(point_gen_random) {
- point_t *p = point_new();
- p->point = genrand(curve->curve);
- p->order = ellorder(curve->curve, p->point, NULL);
-
- curve->points = points_new(1);
- curve->points[0] = p;
- curve->npoints = 1;
- return 1;
-}
-
-GENERATOR(points_gen_random) {
- if (!args) {
- fprintf(stderr, "No args to an arged function. points_gen_random\n");
- return INT_MIN;
- }
-
- size_t npoints = *(size_t *)args->args;
-
- curve->points = points_new(npoints);
- curve->npoints = npoints;
- for (size_t i = 0; i < npoints; ++i) {
- point_t *p = point_new();
- p->point = genrand(curve->curve);
- p->order = ellorder(curve->curve, p->point, NULL);
- curve->points[i] = p;
- }
- return 1;
-}
-
-/*
- GEN o = utoi(dprimes[i]);
- GEN mul = ellmul(curve->curve, rand, o);
-
- if (gequal0(mul)) {
- printf("Success! %lu\n", npoints);
- curve->points[i] = point_new();
-
- gerepileall(btop, 2, &rand, &o);
- curve->points[i]->point = rand;
- curve->points[i]->order = o;
- npoints++;
- break;
- }
- */
-
-GENERATOR(points_gen_trial) {
- // TODO stack code!!!
- if (!args) {
- fprintf(stderr, "No args to an arged function. points_gen_trial\n");
- return INT_MIN;
- }
-
- pari_ulong *primes = (pari_ulong *)args->args;
- size_t nprimes = args->nargs;
-
- curve->points = points_new(nprimes);
- curve->npoints = nprimes;
-
- size_t npoints = 0;
- while (npoints < nprimes) {
- GEN rand = genrand(curve->curve);
- GEN ord = ellorder(curve->curve, rand, NULL);
-
- for (long i = 0; i < nprimes; ++i) {
- if (curve->points[i] == NULL && dvdis(ord, primes[i])) {
- pari_sp ftop = avma;
-
- GEN p = stoi(primes[i]);
- GEN mul = divii(ord, p);
- GEN point = ellmul(curve->curve, rand, mul);
-
- curve->points[i] = point_new();
- gerepileall(ftop, 2, &point, &p);
- curve->points[i]->point = point;
- curve->points[i]->order = p;
- npoints++;
- }
- }
- }
-
- return 1;
-}
-
-GENERATOR(points_gen_prime) {
- // TODO stack code!!!
-
- GEN primes = order_factors(curve, cfg);
- long nprimes = glength(primes);
-
- curve->points = points_new((size_t)nprimes);
- curve->npoints = (size_t)nprimes;
-
- long npoints = 0;
- while (npoints < nprimes) {
- GEN rand = genrand(curve->curve);
- GEN ord = ellorder(curve->curve, rand, NULL);
- // ord(rand) = ord
-
- for (long i = 1; i <= nprimes; ++i) {
- if (curve->points[i - 1] == NULL && dvdii(ord, gel(primes, i))) {
- pari_sp ftop = avma;
-
- // primes[i] divides ord
- // mul = ord/primes[i]
- GEN mul = divii(ord, gel(primes, i));
- GEN point = ellmul(curve->curve, rand, mul);
-
- curve->points[i - 1] = point_new();
- gerepileall(ftop, 1, &point);
- curve->points[i - 1]->point = point;
- curve->points[i - 1]->order = gcopy(gel(primes, i));
- npoints++;
- }
- }
- }
-
- return 1;
-}
-
-GENERATOR(points_gen_allgroups) {
- // TODO stack code!!!
-
- GEN primes = order_factors(curve, cfg);
-
- GEN groups = order_groups(curve, cfg, primes);
- long ngroups = glength(groups);
-
- curve->points = points_new((size_t)ngroups);
- curve->npoints = (size_t)ngroups;
-
- long npoints = 0;
- while (npoints < ngroups) {
- GEN rand = genrand(curve->curve);
- GEN ord = ellorder(curve->curve, rand, NULL);
-
- for (long i = 1; i <= ngroups; ++i) {
- pari_sp ftop = avma;
- GEN num = gel(groups, i);
-
- if (curve->points[i - 1] == NULL) {
- GEN point = NULL;
- if (equalii(ord, num)) {
- point = gcopy(rand);
- } else if (dvdii(ord, num)) {
- GEN mul = divii(ord, num);
- point = ellmul(curve->curve, rand, mul);
- }
-
- if (point) {
- curve->points[i - 1] = point_new();
- gerepileall(ftop, 1, &point);
- curve->points[i - 1]->point = point;
- curve->points[i - 1]->order = gcopy(num);
- ++npoints;
- }
- }
- }
- }
-
- return 1;
-}
-
-UNROLL(points_unroll) {
- if (curve->points) {
- points_free_deep(&curve->points, curve->npoints);
- }
- return -1;
-}
diff --git a/src/math/point.h b/src/math/point.h
deleted file mode 100644
index 1a0b348..0000000
--- a/src/math/point.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file point.h
- */
-#ifndef ECGEN_POINT_H
-#define ECGEN_POINT_H
-
-#include "types.h"
-
-/**
- *
- * @return
- */
-point_t *point_new(void);
-
-/**
- *
- * @param src
- * @param dest
- * @return
- */
-point_t *point_copy(const point_t *src, point_t *dest);
-
-/**
- *
- * @param src
- * @return
- */
-point_t *point_new_copy(const point_t *src);
-
-/**
- *
- * @param src
- * @param dest
- * @return
- */
-point_t *point_clone(const point_t *src, point_t *dest);
-
-/**
- *
- * @param src
- * @return
- */
-point_t *point_new_clone(const point_t *src);
-
-/**
- *
- * @param point
- */
-void point_free(point_t **point);
-
-/**
- *
- * @param num
- * @return
- */
-point_t **points_new(size_t num);
-
-/**
- *
- * @param src
- * @param dest
- * @param num
- * @return
- */
-point_t **points_copy(point_t **const src, point_t **dest, size_t num);
-
-/**
- *
- * @param src
- * @param num
- * @return
- */
-point_t **points_new_copy(point_t **const src, size_t num);
-
-/**
- *
- * @param src
- * @param dest
- * @param num
- * @return
- */
-point_t **points_clone(point_t **const src, point_t **dest, size_t num);
-
-/**
- *
- * @param src
- * @param num
- * @return
- */
-point_t **points_new_clone(point_t **const src, size_t num);
-
-/**
- *
- * @param point
- */
-void points_free(point_t ***point);
-
-/**
- *
- * @param points
- * @param npoints
- */
-void points_free_deep(point_t ***points, size_t npoints);
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(point_gen_random);
-
-/**
- * GENERATOR(gen_t)
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args size_t number of points to generate
- * @return state diff
- */
-GENERATOR(points_gen_random);
-
-/**
- * GENERATOR(gen_t)
- * Generates prime order points using trial division.
- *
- * Assumes the primes divide curve order, thus that points with all
- * prime orders specified exist.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args pari_ulong array of primes length nargs
- * @return state diff
- */
-GENERATOR(points_gen_trial);
-
-/**
- * GENERATOR(gen_t)
- *
- * Cauchy:
- * Let G be a finite group and p be a prime. If p divides the order of G, then
- * G has an element of order p.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(points_gen_prime);
-
-/**
- * GENERATOR(gen_t)
- *
- * Generates points on all subgroups of the curve. Prime and non-prime order.
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-GENERATOR(points_gen_allgroups);
-
-/**
- * UNROLL(unroll_t)
- *
- * @param curve
- * @param cfg
- * @param from
- * @param to
- * @return
- */
-UNROLL(points_unroll);
-
-#endif // ECGEN_POINT_H
diff --git a/src/math/random.c b/src/math/random.c
deleted file mode 100644
index 519ce6b..0000000
--- a/src/math/random.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#define _POSIX_C_SOURCE 200809L
-
-#include "random.h"
-#include <time.h>
-
-bool random_init(void) {
- pari_ulong seed = 0;
- // Try urandom first
- FILE *rand = fopen("/dev/urandom", "rb");
- if (rand) {
- size_t read = 0;
- while (read < sizeof(pari_ulong)) {
- read += fread(&seed + read, 1, sizeof(pari_ulong) - read, rand);
- }
-
- fclose(rand);
- }
- // Try worse methods later
- if (seed == 0) {
- struct timespec t;
- if (!clock_gettime(CLOCK_REALTIME, &t)) {
- seed = (pari_ulong)t.tv_nsec;
- } else {
- seed = (pari_ulong)time(NULL);
- }
- }
-
- pari_sp ltop = avma;
- setrand(utoi(seed));
- avma = ltop;
-
- return true;
-}
-
-GEN random_prime(unsigned long bits) {
- pari_sp ltop = avma;
-
- GEN range = gtovec0(gen_0, 2);
- gel(range, 1) = powis(gen_2, bits - 1);
- gel(range, 2) = powis(gen_2, bits);
-
- GEN p;
- pari_sp btop = avma;
- do {
- p = randomprime(range);
- p = gerepileupto(btop, p);
- } while (!isprime(p));
-
- return gerepilecopy(ltop, p);
-}
-
-GEN random_int(unsigned long bits) {
- pari_sp ltop = avma;
-
- GEN range = gtovec0(gen_0, 2);
- gel(range, 1) = powis(gen_2, bits - 1);
- gel(range, 2) = powis(gen_2, bits);
-
- return gerepilecopy(ltop, genrand(range));
-}
diff --git a/src/math/random.h b/src/math/random.h
deleted file mode 100644
index 96eb210..0000000
--- a/src/math/random.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file random.h
- */
-#ifndef ECGEN_RANDOM_H
-#define ECGEN_RANDOM_H
-
-#include <pari/pari.h>
-#include <stdbool.h>
-
-/**
- * @brief Init the PARI-GP random generator.
- *
- * Initializes the PARI-GP random generator, tries to do so from
- * cryptographically strong sources(/dev/urandom) at first but falls back on
- * clock_gettime and time(NULL).
- *
- * @return whether the initialization was successful
- */
-bool random_init(void);
-
-/**
- * @brief Generate random <code>bits</code> sized prime.
- * @param bits the size of the prime to generate
- * @return a random prime in range [2^(bits - 1), 2^bits]
- */
-GEN random_prime(unsigned long bits);
-
-/**
- * @brief Generate random <code>bits</code> sized integer.
- * @param bits the size of the integer to generate
- * @return a random integer in range [2^(bits - 1), 2^bits]
- */
-GEN random_int(unsigned long bits);
-
-#endif // ECGEN_RANDOM_H
diff --git a/src/math/seed.c b/src/math/seed.c
deleted file mode 100644
index 44663c8..0000000
--- a/src/math/seed.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-
-#include "seed.h"
-#include "util/memory.h"
-
-seed_t *seed_new(void) { return try_calloc(sizeof(seed_t)); }
-
-seed_t *seed_copy(const seed_t *src, seed_t *dest) {
- if (src->seed) dest->seed = gcopy(src->seed);
- return dest;
-}
-
-seed_t *seed_new_copy(const seed_t *src) {
- seed_t *result = seed_new();
- return seed_copy(src, result);
-}
-
-seed_t *seed_clone(const seed_t *src, seed_t *dest) {
- if (src->seed) dest->seed = gclone(src->seed);
- return dest;
-}
-
-seed_t *seed_new_clone(const seed_t *src) {
- seed_t *result = seed_new();
- return seed_clone(src, result);
-}
-
-void seed_free(seed_t **seed) {
- if (*seed) {
- if ((*seed)->seed && isclone((*seed)->seed)) {
- gunclone((*seed)->seed);
- }
- pari_free(*seed);
- *seed = NULL;
- }
-}
-
-static GEN seed_stoi(const char *cstr) {
- pari_sp ltop = avma;
- GEN seed = gen_0;
-
- size_t len = strlen(cstr);
- for (size_t i = 0; i < len; ++i) {
- pari_sp btop = avma;
- GEN s = stoi(cstr[i]);
- s = shifti(s, (len - i - 1) * 8);
- seed = addii(seed, s);
- gerepileall(btop, 1, &seed);
- }
-
- return gerepilecopy(ltop, seed);
-}
-
-char *seed_itos(GEN seed) {
- pari_sp ltop = avma;
- GEN bits = binary_zv(seed);
-
- long len = glength(bits);
- long bytes = (len / 8) + (len % 8 == 0 ? 0 : 1);
- char *result = try_malloc((size_t)bytes);
-
- for (long i = 0; i < len; ++i) {
- // TODO
- }
- avma = ltop;
- return result;
-}
-
-int seed_random(curve_t *curve, const config_t *cfg, arg_t *args) {
- curve->seed = seed_new();
- curve->seed->seed = random_int(160);
- curve->seed->raw = seed_itos(curve->seed->seed);
- curve->seed->raw_len = strlen(curve->seed->raw);
- return 1;
-}
-
-int seed_argument(curve_t *curve, const config_t *cfg, arg_t *args) {
- curve->seed = seed_new();
- curve->seed->seed = seed_stoi(cfg->seed);
- curve->seed->raw = cfg->seed;
- curve->seed->raw_len = strlen(cfg->seed);
- return 1;
-}
-
-int seed_input(curve_t *curve, const config_t *cfg, arg_t *args) {
- pari_sp ltop = avma;
-
- GEN str = input_string("seed:");
- const char *cstr = GSTR(str);
- if (strlen(cstr) < 20) {
- fprintf(stderr, "SEED must be at least 160 bits(20 characters).\n");
- avma = ltop;
- return 0;
- }
-
- GEN seed = seed_stoi(cstr);
-
- curve->seed = seed_new();
- curve->seed->seed = gerepilecopy(ltop, seed);
- return 1;
-}
diff --git a/src/math/seed.h b/src/math/seed.h
deleted file mode 100644
index 89c7e07..0000000
--- a/src/math/seed.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file seed.h
- */
-#ifndef ECGEN_SEED_H
-#define ECGEN_SEED_H
-
-#include "io/input.h"
-#include "math/types.h"
-
-/**
- *
- * @return
- */
-seed_t *seed_new(void);
-
-/**
- *
- * @param src
- * @param dest
- * @return
- */
-seed_t *seed_copy(const seed_t *src, seed_t *dest);
-
-/**
- *
- * @param src
- * @return
- */
-seed_t *seed_new_copy(const seed_t *src);
-
-/**
- *
- * @param src
- * @param dest
- * @return
- */
-seed_t *seed_clone(const seed_t *src, seed_t *dest);
-
-/**
- *
- * @param src
- * @return
- */
-seed_t *seed_new_clone(const seed_t *src);
-
-/**
- *
- * @param seed
- */
-void seed_free(seed_t **seed);
-
-/**
- *
- * @param curve
- * @param config
- * @param args
- * @return
- */
-int seed_random(curve_t *curve, const config_t *cfg, arg_t *args);
-
-/**
- *
- * @param curve
- * @param config
- * @param args
- * @return
- */
-int seed_argument(curve_t *curve, const config_t *cfg, arg_t *args);
-
-/**
- *
- * @param curve
- * @param config
- * @param args
- * @return
- */
-int seed_input(curve_t *curve, const config_t *cfg, arg_t *args);
-
-#endif // ECGEN_SEED_H
diff --git a/src/math/types.c b/src/math/types.c
deleted file mode 100644
index afd6542..0000000
--- a/src/math/types.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-#include "types.h"
-
-int gen_skip(curve_t *curve, const config_t *cfg, arg_t *args) { return 1; }
-
-int unroll_skip(curve_t *curve, const config_t *cfg, pari_sp from, pari_sp to) {
- return -1;
-}
diff --git a/src/math/types.h b/src/math/types.h
deleted file mode 100644
index a6494cf..0000000
--- a/src/math/types.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * ecgen, tool for generating Elliptic curve domain parameters
- * Copyright (C) 2017 J08nY
- */
-/**
- * @file types.h
- */
-#ifndef ECGEN_TYPES_H
-#define ECGEN_TYPES_H
-
-#include <limits.h>
-#include <pari/pari.h>
-#include "io/config.h"
-
-/**
- * @brief
- */
-typedef struct seed_t {
- char *raw;
- size_t raw_len;
- GEN seed;
-} seed_t;
-
-/**
- * @brief A point type.
- * @param point a t_VEC with t_INTMOD or t_FFELT components [x,y]
- * @param order a t_INT
- * @param cofactor a t_INT
- */
-typedef struct {
- GEN point;
- GEN order;
- GEN cofactor;
-} point_t;
-
-/**
- * @brief A curve type.
- * @param seed a seed_t
- * @param field a t_INT or t_FFELT
- * @param a a t_INTMOD or t_FFELT a parameter
- * @param b a t_INTMOD or t_FFELT b parameter
- * @param curve a t_ELL, curve object
- * @param order a t_INT, curve order
- * @param generators generators saved
- * @param ngens numver of generators saved in the curve type
- * @param points points saved
- * @param npoints number of points saved in the curve type
- */
-typedef struct {
- seed_t *seed;
- GEN field;
- GEN a;
- GEN b;
- GEN curve;
- GEN order;
- point_t **generators;
- size_t ngens;
- point_t **points;
- size_t npoints;
-} curve_t;
-
-/**
- * @brief
- */
-typedef enum {
- OFFSET_SEED = 0,
- OFFSET_FIELD,
- OFFSET_A,
- OFFSET_B,
- OFFSET_CURVE,
- OFFSET_ORDER,
- OFFSET_GENERATORS,
- OFFSET_POINTS,
- OFFSET_END
-} offset_e;
-
-/**
- * @brief
- */
-typedef struct {
- const void *args;
- size_t nargs;
- void *allocd;
-} arg_t;
-
-/**
- * @brief A generator function type.
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args Current optional generator argument
- * @return state diff
- */
-#define GENERATOR(gen_name) \
- int gen_name(curve_t *curve, const config_t *cfg, arg_t *args)
-typedef GENERATOR((*gen_t));
-
-/**
- * @brief An unroll function type
- * @param curve
- * @param cfg
- * @param from
- * @param to
- * @return
- */
-#define UNROLL(unroll_name) \
- int unroll_name(curve_t *curve, const config_t *cfg, pari_sp from, \
- pari_sp to)
-typedef UNROLL((*unroll_t));
-
-/**
- * GENERATOR(gen_t)
- *
- *
- * @param curve A curve_t being generated
- * @param cfg An application config
- * @param args unused
- * @return state diff
- */
-int gen_skip(curve_t *curve, const config_t *cfg, arg_t *args);
-
-/**
- * UNROLL(unroll_t)
- *
- * @param curve
- * @param cfg
- * @param from
- * @param to
- * @return
- */
-int unroll_skip(curve_t *curve, const config_t *cfg, pari_sp from, pari_sp to);
-
-#endif // ECGEN_TYPES_H