diff options
author | Niels Möller <nisse@lysator.liu.se> | 2018-03-10 16:44:43 +0100 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2018-03-10 16:44:43 +0100 |
commit | 162d599a1bfc70baa5c05beb4ef001bb95a25d2f (patch) | |
tree | 69856307b26a33284e302c34bb39df28b4a13e28 | |
parent | 98efe78d809d4fb09ffd278d36ef73d987f432d9 (diff) | |
download | nettle-162d599a1bfc70baa5c05beb4ef001bb95a25d2f.tar.gz |
Make eccdata warn about poor parameters.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | eccdata.c | 18 |
2 files changed, 18 insertions, 3 deletions
@@ -1,5 +1,8 @@ 2018-03-10 Niels Möller <nisse@lysator.liu.se> + * eccdata.c (ecc_table_size): New helper function. + (ecc_pippenger_precompute): Display warning for poor parameters. + * eccparams.c (main): New program, to list parameter alternatives for Pippenger's algorithm. @@ -611,18 +611,30 @@ ecc_curve_init (struct ecc_curve *ecc, unsigned bit_size) ecc->bit_size = bit_size; } +static unsigned +ecc_table_size(unsigned bits, unsigned k, unsigned c) +{ + unsigned p = (bits + k-1) / k; + unsigned M = (p + c-1)/c; + return M; +} + static void ecc_pippenger_precompute (struct ecc_curve *ecc, unsigned k, unsigned c) { - unsigned p = (ecc->bit_size + k-1) / k; - unsigned M = (p + c-1)/c; + unsigned M = ecc_table_size (ecc->bit_size, k, c); unsigned i, j; + if (M == ecc_table_size (ecc->bit_size, k-1, c)) + fprintf(stderr, + "warn: Parameters k = %u, c = %d are suboptimal, could use smaller k\n", + k, c); + ecc->pippenger_k = k; ecc->pippenger_c = c; ecc->table_size = M << c; ecc->table = ecc_alloc (ecc->table_size); - + /* Compute the first 2^c entries */ ecc_set_zero (&ecc->table[0]); ecc_set (&ecc->table[1], &ecc->g); |