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
 |