aboutsummaryrefslogtreecommitdiff
path: root/src/math/gens.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/gens.c')
-rw-r--r--src/math/gens.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/math/gens.c b/src/math/gens.c
new file mode 100644
index 0000000..619eb25
--- /dev/null
+++ b/src/math/gens.c
@@ -0,0 +1,23 @@
+
+#include "gens.h"
+#include "point.h"
+
+
+int gens_init(curve_t *curve, config_t *config, arg_t *args) {
+ // TODO stack code!!!
+ GEN generators = ellff_get_gens(curve->curve);
+ long len = glength(generators);
+ 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;
+}
+