diff options
| author | J08nY | 2018-06-30 16:21:12 +0200 |
|---|---|---|
| committer | J08nY | 2018-06-30 16:21:12 +0200 |
| commit | 3e4c87f12d13cd0a2d139cf8a149874634972afa (patch) | |
| tree | 2f842fbea93e9aecfc539e40c1c1dea1aba228be /src/misc | |
| parent | e5066a307b62b7b64c91add8131d94aef3cfcf42 (diff) | |
| download | ecgen-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.h | 2 | ||||
| -rw-r--r-- | src/misc/types.c | 2 | ||||
| -rw-r--r-- | src/misc/types.h | 16 |
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; |
