
Modify the signature of mp_find_prime() to permit the number of Miller-Rabin rounds to be specified. In addition, valid responses now include MP_NO, MP_YES, and MP_VAL which is returned when mp_prime_is_prime() fails. Change-Id: I0195129a4dd75875e6dddb6d49a5ceb30afb1a17
37 lines
605 B
C
37 lines
605 B
C
/* TomsFastMath, a fast ISO C bignum library.
|
|
*
|
|
* This project is public domain and free for all purposes.
|
|
*
|
|
* Love Hornquist Astrand <lha@h5l.org>
|
|
*/
|
|
#include <tommath.h>
|
|
#ifdef BN_MP_FIND_PRIME_C
|
|
int mp_find_prime(mp_int *a, int t)
|
|
{
|
|
int res = MP_NO;
|
|
|
|
/* valid value of t? */
|
|
if (t <= 0 || t > PRIME_SIZE) {
|
|
return MP_VAL;
|
|
}
|
|
|
|
if (mp_iseven(a))
|
|
mp_add_d(a, 1, a);
|
|
|
|
do {
|
|
if (mp_prime_is_prime(a, t, &res) != 0) {
|
|
res = MP_VAL;
|
|
break;
|
|
}
|
|
|
|
if (res == MP_NO) {
|
|
mp_add_d(a, 2, a);
|
|
continue;
|
|
}
|
|
|
|
} while (res != MP_YES);
|
|
|
|
return res;
|
|
}
|
|
#endif
|