diff options
| author | J08nY | 2018-03-24 22:59:01 +0100 |
|---|---|---|
| committer | J08nY | 2018-03-24 22:59:01 +0100 |
| commit | 25ff36c600b10cab05c2c948ac6aa8d7e9677fd1 (patch) | |
| tree | 71c24c5dd00a764fe22fb78657e4ca4eeccb7965 /src/io/cli.c | |
| parent | 6f3809790583a1256b53a419f3fee400e11e155a (diff) | |
| download | ecgen-25ff36c600b10cab05c2c948ac6aa8d7e9677fd1.tar.gz ecgen-25ff36c600b10cab05c2c948ac6aa8d7e9677fd1.tar.zst ecgen-25ff36c600b10cab05c2c948ac6aa8d7e9677fd1.zip | |
Diffstat (limited to 'src/io/cli.c')
| -rw-r--r-- | src/io/cli.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/io/cli.c b/src/io/cli.c index ae11836..2cc6e0f 100644 --- a/src/io/cli.c +++ b/src/io/cli.c @@ -57,7 +57,7 @@ struct argp_option cli_options[] = { {"twist", OPT_TWIST, 0, 0, "Generate a twist of a given curve.", 2}, {0, 0, 0, 0, "Generation options:", 3}, - {"random", OPT_RANDOM, 0, 0, "Generate a random curve (using Random approach).", 3}, + {"random", OPT_RANDOM, "WHAT", OPTION_ARG_OPTIONAL, "Generate a random curve (using Random approach). Optionally, only generate random parameters WHAT (seed,field,a,b,equation).", 3}, {"prime", OPT_PRIME, 0, 0, "Generate a curve with prime order.", 3}, {"cofactor", OPT_COFACTOR, "VALUE", 0, "Generate a curve with cofactor of VALUE.", 3}, {"koblitz", OPT_KOBLITZ, "A", OPTION_ARG_OPTIONAL, "Generate a Koblitz curve (a in {0, 1}, b = 1).", 3}, @@ -263,7 +263,28 @@ error_t cli_parse(int key, char *arg, struct argp_state *state) { cfg->count = strtoul(arg, NULL, 10); break; case OPT_RANDOM: - cfg->random = true; + if (arg) { + char *token = strtok(arg, ","); + while (token) { + if (strcmp(token, "seed") == 0) { + cfg->random |= RANDOM_SEED; + } else if (strcmp(token, "field") == 0) { + cfg->random |= RANDOM_FIELD; + } else if (strcmp(token, "a") == 0) { + cfg->random |= RANDOM_A; + } else if (strcmp(token, "b") == 0) { + cfg->random |= RANDOM_B; + } else if (strcmp(token, "equation") == 0) { + cfg->random |= RANDOM_EQUATION; + } else { + argp_failure(state, 1, 0, "Wrong value for random = %s", + token); + } + token = strtok(NULL, ","); + } + } else { + cfg->random = RANDOM_ALL; + } break; case OPT_PRIME: cfg->prime = true; |
