From 9b448bdc083bd1044518a15a15163daa7701fc7a Mon Sep 17 00:00:00 2001 From: czurnieden Date: Mon, 7 May 2018 23:11:04 +0200 Subject: [PATCH] exchanged direct call to Miller-Rabin in mp_prime_next_prime with mp_prime_is_prime --- bn_mp_prime_is_prime.c | 9 +++------ bn_mp_prime_next_prime.c | 17 ++--------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/bn_mp_prime_is_prime.c b/bn_mp_prime_is_prime.c index e309bae..6ed5d62 100644 --- a/bn_mp_prime_is_prime.c +++ b/bn_mp_prime_is_prime.c @@ -35,7 +35,6 @@ int mp_prime_is_prime(const mp_int *a, int t, int *result) /* valid value of t? */ if (t > PRIME_SIZE) { - puts("t > PRIME_SIZE"); return MP_VAL; } @@ -54,7 +53,6 @@ int mp_prime_is_prime(const mp_int *a, int t, int *result) /* N must be odd */ if (mp_iseven(a) == MP_YES) { - *result = 0; return MP_OKAY; } /* N is not a perfect square: floor(sqrt(N))^2 != N */ @@ -62,14 +60,13 @@ int mp_prime_is_prime(const mp_int *a, int t, int *result) return err; } if (res != 0) { - *result = 0; return MP_OKAY; } /* is the input equal to one of the primes in the table? */ for (ix = 0; ix < PRIME_SIZE; ix++) { if (mp_cmp_d(a, ltm_prime_tab[ix]) == MP_EQ) { - *result = 1; + *result = MP_YES; return MP_OKAY; } } @@ -126,14 +123,14 @@ int mp_prime_is_prime(const mp_int *a, int t, int *result) } //#endif // commented out for testing purposes -//#ifdef LTM_USE_FROBENIUS_UNDERWOOD_TEST +#ifdef LTM_USE_FROBENIUS_UNDERWOOD_TEST if ((err = mp_prime_frobenius_underwood(a, &res)) != MP_OKAY) { goto LBL_B; } if (res == MP_NO) { goto LBL_B; } -//#endif +#endif #endif /* diff --git a/bn_mp_prime_next_prime.c b/bn_mp_prime_next_prime.c index 89e2841..44ab116 100644 --- a/bn_mp_prime_next_prime.c +++ b/bn_mp_prime_next_prime.c @@ -24,11 +24,6 @@ int mp_prime_next_prime(mp_int *a, int t, int bbs_style) mp_digit res_tab[PRIME_SIZE], step, kstep; mp_int b; - /* ensure t is valid */ - if ((t <= 0) || (t > PRIME_SIZE)) { - return MP_VAL; - } - /* force positive */ a->sign = MP_ZPOS; @@ -141,17 +136,9 @@ int mp_prime_next_prime(mp_int *a, int t, int bbs_style) continue; } - /* is this prime? */ - for (x = 0; x < t; x++) { - mp_set(&b, ltm_prime_tab[x]); - if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) { - goto LBL_ERR; - } - if (res == MP_NO) { - break; - } + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { + goto LBL_ERR; } - if (res == MP_YES) { break; }