aboutsummaryrefslogtreecommitdiff
path: root/src/curve.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/curve.h')
-rw-r--r--src/curve.h109
1 files changed, 106 insertions, 3 deletions
diff --git a/src/curve.h b/src/curve.h
index 106bf5e..5002f45 100644
--- a/src/curve.h
+++ b/src/curve.h
@@ -5,8 +5,111 @@
#ifndef ECGEN_CURVE_H
#define ECGEN_CURVE_H
-#include "gp.h"
+#include <pari/pari.h>
+#include "field.h"
+#include "point.h"
-GEN curve_random(GEN field);
+typedef struct curve_t {
+ GEN seed;
+ GEN field;
+ GEN a;
+ GEN b;
+ GEN curve;
+ GEN order;
+ point_t **points;
+ size_t npoints;
+} curve_t;
-#endif //ECGEN_CURVE_H
+/**
+ *
+ * @param field
+ * @return
+ */
+curve_t *curve_random(GEN field);
+
+/**
+ *
+ * @param t
+ * @param bits
+ * @return
+ */
+curve_t *curve_randomf(enum field_e t, long bits);
+
+/**
+ *
+ * @param field
+ * @return
+ */
+curve_t *curve_nonzero(GEN field);
+
+/**
+ *
+ * @param t
+ * @param bits
+ * @return
+ */
+curve_t *curve_nonzerof(enum field_e t, long bits);
+
+/**
+ *
+ * @param field
+ * @return
+ */
+curve_t *curve_prime(GEN field);
+
+/**
+ *
+ * @param t
+ * @param bits
+ * @return
+ */
+curve_t *curve_primef(enum field_e t, long bits);
+
+/**
+ * ANSI X9.62 Verifiable random curve over field with seed.
+ *
+ * @param field
+ * @param seed
+ * @return
+ */
+curve_t *curve_seed(GEN field, GEN seed);
+
+/**
+ *
+ * @param field
+ * @return
+ */
+curve_t *curve_seedr(GEN field);
+
+/**
+ *
+ * @param seed
+ * @param t
+ * @param bits
+ * @return
+ */
+curve_t *curve_seedf(GEN seed, enum field_e t, long bits);
+
+/**
+ *
+ * @param t
+ * @param bits
+ * @return
+ */
+curve_t *curve_seedrf(enum field_e t, long bits);
+
+/**
+ *
+ * @param curve
+ * @return
+ */
+GEN curve_params(curve_t *curve);
+
+/**
+ *
+ * @param curve
+ */
+void free_curve(curve_t **curve);
+
+
+#endif // ECGEN_CURVE_H