diff options
| author | J08nY | 2017-02-09 04:07:37 +0100 |
|---|---|---|
| committer | J08nY | 2017-02-09 04:07:37 +0100 |
| commit | 79b29481b1c4d13063dd8b6ee6a1d0d70a54faab (patch) | |
| tree | 007da84bc4133c656f2f66df541f74c6b55bfb11 /src/seed.c | |
| parent | 0b5d1cca9c78869c6cffa2932297c1d70ba142e2 (diff) | |
| download | ecgen-79b29481b1c4d13063dd8b6ee6a1d0d70a54faab.tar.gz ecgen-79b29481b1c4d13063dd8b6ee6a1d0d70a54faab.tar.zst ecgen-79b29481b1c4d13063dd8b6ee6a1d0d70a54faab.zip | |
Seperated different generation methods into modules.
- Added Koblitz curve generation.
Diffstat (limited to 'src/seed.c')
| -rw-r--r-- | src/seed.c | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/src/seed.c b/src/seed.c deleted file mode 100644 index 411195f..0000000 --- a/src/seed.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * ecgen, tool for generating Elliptic curve domain parameters - * Copyright (C) 2017 J08nY - */ -#include "seed.h" -#include "input.h" - -seed_t *seed_new() { - seed_t *seed = pari_malloc(sizeof(seed_t)); - if (!seed) { - perror("Couldn't malloc."); - exit(1); - } - memset(seed, 0, sizeof(seed_t)); - return seed; -} - -void seed_free(seed_t **seed) { - if (*seed) { - pari_free(*seed); - *seed = NULL; - } -} - -GEN seed_stoi(const char *cstr) { - pari_sp ltop = avma; - GEN seed = gen_0; - - size_t len = strlen(cstr); - for (size_t i = 0; i < len; ++i) { - pari_sp btop = avma; - GEN s = stoi(cstr[i]); - s = shifti(s, (len - i - 1) * 8); - seed = addii(seed, s); - if (gc_needed(btop, 1)) gerepileall(btop, 1, seed); - } - - return gerepilecopy(ltop, seed); -} - -int seed_random(curve_t *curve, config_t *config) { - curve->seed = seed_new(); - curve->seed->seed = random_int(160); - return 1; -} - -int seed_argument(curve_t *curve, config_t *config) { - curve->seed = seed_new(); - curve->seed->seed = seed_stoi(config->seed); - return 1; -} - -int seed_input(curve_t *curve, config_t *config) { - pari_sp ltop = avma; - - GEN str = fread_string(in, "seed:", '\n'); - const char *cstr = GSTR(str); - if (strlen(cstr) < 20) { - fprintf(stderr, "SEED must be at least 160 bits(20 characters).\n"); - avma = ltop; - return 0; - } - - GEN seed = seed_stoi(cstr); - gerepileall(ltop, 1, &seed); - - curve->seed = seed_new(); - curve->seed->seed = seed; - return 1; -} - -int seed_g(curve_t *curve, config_t *config) { - if (config->from_seed) { - if (config->seed) { - return seed_argument(curve, config); - } else { - if (config->random) { - return seed_random(curve, config); - } else { - return seed_input(curve, config); - } - } - } else { - return 1; // seed none.. skip - } -}
\ No newline at end of file |
