From 3e4c87f12d13cd0a2d139cf8a149874634972afa Mon Sep 17 00:00:00 2001 From: J08nY Date: Sat, 30 Jun 2018 16:21:12 +0200 Subject: Implement computation of curve metadata(j-invariant, disc, frobenius, cm disc). --- src/misc/config.h | 2 ++ src/misc/types.c | 2 +- src/misc/types.h | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/misc') 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 @@ -78,6 +78,17 @@ typedef struct { point_t **points; } 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 @@ -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; -- cgit v1.3.1