diff options
| author | J08nY | 2017-09-19 18:18:41 +0200 |
|---|---|---|
| committer | J08nY | 2017-09-19 18:18:41 +0200 |
| commit | 6b638ddf30cfc15a68c5421126a35ffe7f8f5854 (patch) | |
| tree | cc8f377407bb26b0d9942dd8c13fb7a198463dc6 | |
| parent | 8c9bd5cc09d812c52204e2eabc713540a4a07c53 (diff) | |
| download | ecgen-6b638ddf30cfc15a68c5421126a35ffe7f8f5854.tar.gz ecgen-6b638ddf30cfc15a68c5421126a35ffe7f8f5854.tar.zst ecgen-6b638ddf30cfc15a68c5421126a35ffe7f8f5854.zip | |
| -rw-r--r-- | src/exhaustive/ansi.c | 24 | ||||
| -rw-r--r-- | src/gen/seed.c | 6 | ||||
| -rw-r--r-- | src/misc/types.h | 14 |
3 files changed, 33 insertions, 11 deletions
diff --git a/src/exhaustive/ansi.c b/src/exhaustive/ansi.c index 24cdd66..444828e 100644 --- a/src/exhaustive/ansi.c +++ b/src/exhaustive/ansi.c @@ -2,6 +2,7 @@ * ecgen, tool for generating Elliptic curve domain parameters * Copyright (C) 2017 J08nY */ + #include "ansi.h" #include "gen/field.h" #include "gen/seed.h" @@ -9,6 +10,12 @@ #include "util/bits.h" #include "util/memory.h" +static seed_t *ansi_new() { + seed_t *result = seed_new(); + result->type = SEED_ANSI; + return result; +} + bool ansi_seed_valid(const char *hex_str) { size_t len = strlen(hex_str); if (len < 40) { @@ -41,13 +48,13 @@ static void seed_tsh(seed_t *seed, const config_t *cfg) { pari_sp ltop = avma; seed->ansi.t = utoi(cfg->bits); seed->ansi.s = - floorr(rdivii(subis(seed->ansi.t, 1), stoi(160), DEFAULTPREC)); + floorr(rdivii(subis(seed->ansi.t, 1), stoi(160), DEFAULTPREC)); seed->ansi.h = subii(seed->ansi.t, mulis(seed->ansi.s, 160)); gerepileall(ltop, 3, &seed->ansi.t, &seed->ansi.s, &seed->ansi.h); } GENERATOR(ansi_gen_seed_random) { - seed_t *seed = seed_new(); + seed_t *seed = ansi_new(); seed->seed = bits_from_i(random_int(160)); seed_hash(seed); seed_tsh(seed, cfg); @@ -56,7 +63,7 @@ GENERATOR(ansi_gen_seed_random) { } GENERATOR(ansi_gen_seed_argument) { - seed_t *seed = seed_new(); + seed_t *seed = ansi_new(); seed->seed = seed_stoi(cfg->seed); seed_hash(seed); seed_tsh(seed, cfg); @@ -75,7 +82,7 @@ GENERATOR(ansi_gen_seed_input) { return 0; } - seed_t *seed = seed_new(); + seed_t *seed = ansi_new(); seed->seed = seed_stoi(cstr); seed_hash(seed); seed_tsh(seed, cfg); @@ -180,12 +187,9 @@ static GENERATOR(ansi_gen_equation_f2m) { GENERATOR(ansi_gen_equation) { switch (cfg->field) { - case FIELD_PRIME: - return ansi_gen_equation_fp(curve, cfg, args); - case FIELD_BINARY: - return ansi_gen_equation_f2m(curve, cfg, args); - default: - pari_err_BUG("Field not prime or binary?"); + case FIELD_PRIME: return ansi_gen_equation_fp(curve, cfg, args); + case FIELD_BINARY: return ansi_gen_equation_f2m(curve, cfg, args); + default: pari_err_BUG("Field not prime or binary?"); return INT_MIN; /* NOT REACHABLE */ } } diff --git a/src/gen/seed.c b/src/gen/seed.c index 87f5109..f748049 100644 --- a/src/gen/seed.c +++ b/src/gen/seed.c @@ -41,6 +41,12 @@ void seed_free(seed_t **seed) { if ((*seed)->hash20) { try_free((*seed)->hash20); } + switch ((*seed)->type) { + case SEED_ANSI:break; + case SEED_BRAINPOOL:break; + case SEED_BRAINPOOL_RFC:break; + case SEED_FIPS:break; + } try_free(*seed); *seed = NULL; } diff --git a/src/misc/types.h b/src/misc/types.h index b599759..ff2caed 100644 --- a/src/misc/types.h +++ b/src/misc/types.h @@ -24,12 +24,24 @@ typedef struct { size_t allocated; } bits_t; +enum seed_e { + SEED_ANSI, + SEED_BRAINPOOL, + SEED_BRAINPOOL_RFC, + SEED_FIPS +}; /** * @brief + * @param seed + * @param hash20 + * @param type + * @param ansi + * @param brainpool */ -typedef struct seed_t { +typedef struct { bits_t *seed; unsigned char *hash20; + enum seed_e type; union { struct { GEN t; |
