aboutsummaryrefslogtreecommitdiff
path: root/src/seed.c
diff options
context:
space:
mode:
authorJ08nY2017-02-09 04:07:37 +0100
committerJ08nY2017-02-09 04:07:37 +0100
commit79b29481b1c4d13063dd8b6ee6a1d0d70a54faab (patch)
tree007da84bc4133c656f2f66df541f74c6b55bfb11 /src/seed.c
parent0b5d1cca9c78869c6cffa2932297c1d70ba142e2 (diff)
downloadecgen-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.c86
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