aboutsummaryrefslogtreecommitdiff
path: root/src/misc
diff options
context:
space:
mode:
authorJ08nY2018-06-30 16:21:12 +0200
committerJ08nY2018-06-30 16:21:12 +0200
commit3e4c87f12d13cd0a2d139cf8a149874634972afa (patch)
tree2f842fbea93e9aecfc539e40c1c1dea1aba228be /src/misc
parente5066a307b62b7b64c91add8131d94aef3cfcf42 (diff)
downloadecgen-3e4c87f12d13cd0a2d139cf8a149874634972afa.tar.gz
ecgen-3e4c87f12d13cd0a2d139cf8a149874634972afa.tar.zst
ecgen-3e4c87f12d13cd0a2d139cf8a149874634972afa.zip
Implement computation of curve metadata(j-invariant, disc, frobenius, cm disc).
Diffstat (limited to 'src/misc')
-rw-r--r--src/misc/config.h2
-rw-r--r--src/misc/types.c2
-rw-r--r--src/misc/types.h16
3 files changed, 19 insertions, 1 deletions
diff --git a/src/misc/config.h b/src/misc/config.h
index 7832e88..55a3cdd 100644
--- a/src/misc/config.h
+++ b/src/misc/config.h
@@ -99,6 +99,8 @@ typedef struct {
char *hex_check;
/** @brief What points to generate on the curves. */
struct points_s points;
+ /** @brief Compute curve metadata. */
+ bool metadata;
/** @brief The datadir to use, if any. */
char *datadir;
diff --git a/src/misc/types.c b/src/misc/types.c
index 1554684..ca287a0 100644
--- a/src/misc/types.c
+++ b/src/misc/types.c
@@ -5,7 +5,7 @@
#include "types.h"
const char* offset_s[OFFSET_END] = {"SEED", "FIELD", "A", "B",
- "CURVE", "ORDER", "GENERATORS", "POINTS"};
+ "CURVE", "ORDER", "GENERATORS", "POINTS", "METADATA"};
GENERATOR(gen_skip) { return 1; }
diff --git a/src/misc/types.h b/src/misc/types.h
index 4b6d8f9..89544f4 100644
--- a/src/misc/types.h
+++ b/src/misc/types.h
@@ -79,6 +79,17 @@ typedef struct {
} subgroup_t;
/**
+ * @brief Curve metadata.
+ */
+typedef struct {
+ GEN j_invariant;
+ GEN discriminant;
+ GEN cm_discriminant;
+ GEN frobenius_trace;
+ GEN embedding_degree;
+} metadata_t;
+
+/**
* @brief A curve type.
* @param seed a seed_t
* @param field a t_INT or t_FFELT
@@ -87,6 +98,7 @@ typedef struct {
* @param curve a t_ELL, curve object
* @param order a t_INT, curve order
* @param generators generators saved
+ * @param meta
* @param ngens number of generators saved in the curve type
*/
typedef struct {
@@ -98,8 +110,11 @@ typedef struct {
GEN order;
subgroup_t **generators;
size_t ngens;
+ metadata_t meta;
} curve_t;
+
+
/**
* @brief
*/
@@ -112,6 +127,7 @@ typedef enum {
OFFSET_ORDER,
OFFSET_GENERATORS,
OFFSET_POINTS,
+ OFFSET_METADATA,
OFFSET_END
} offset_e;