X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=shamirs;a=blobdiff_plain;f=shamirssecret.c;h=be6eed3f9d0c4247dc09a6a7d27fa0f775a32396;hp=617f959cd1f846ecd2b42934b2b7b9bb9fd8b1d2;hb=421e5acbd6f375ca9f2f16d260fe9c5505fb42f4;hpb=d8b780562722be8ba80eebdec4f7e693ccb14df6 diff --git a/shamirssecret.c b/shamirssecret.c index 617f959..be6eed3 100644 --- a/shamirssecret.c +++ b/shamirssecret.c @@ -102,6 +102,11 @@ static uint8_t field_pow_ret(uint8_t calc, uint8_t a, uint8_t e) { return ret; } static uint8_t field_pow(uint8_t a, uint8_t e) { +#ifndef TEST + // Although this function works for a==0, its not trivially obvious why, + // and since we never call with a==0, we just assert a != 0 (except when testing) + assert(a != 0); +#endif return field_pow_ret(exp[(log[a] * e) % 255], a, e); } @@ -125,7 +130,7 @@ static uint8_t field_mul_calc(uint8_t a, uint8_t b) { static uint8_t field_pow_calc(uint8_t a, uint8_t e) { uint8_t ret = 1; for (uint8_t i = 0; i < e; i++) - ret = field_mul(ret, a); + ret = field_mul_calc(ret, a); return ret; } int main() { @@ -134,7 +139,7 @@ int main() { assert(field_mul_calc(i, field_invert(i)) == 1); // Test multiplication with the logarithm tables - for (uint16_t i = 0; i < 2; i++) { + for (uint16_t i = 0; i < P; i++) { for (uint16_t j = 0; j < P; j++) assert(field_mul(i, j) == field_mul_calc(i, j)); } @@ -241,7 +246,7 @@ int main(int argc, char* argv[]) { ERROREXIT("getopt failed?\n") } if (!(split & 0x2)) - ERROREXIT("Must specify either -c or -s\n") + ERROREXIT("Must specify one of -c, -s or -?\n") split &= 0x1; if (argc != optind)