xref: /netbsd-src/crypto/external/bsd/heimdal/dist/lib/hcrypto/libtommath/bn_mp_find_prime.c (revision d3273b5b76f5afaafe308cead5511dbb8df8c5e9)
1 /*	$NetBSD: bn_mp_find_prime.c,v 1.2 2017/01/28 21:31:47 christos Exp $	*/
2 
3 /* TomsFastMath, a fast ISO C bignum library.
4  *
5  * This project is public domain and free for all purposes.
6  *
7  * Love Hornquist Astrand <lha@h5l.org>
8  */
9 #include <tommath.h>
10 #ifdef BN_MP_FIND_PRIME_C
mp_find_prime(mp_int * a,int t)11 int mp_find_prime(mp_int *a, int t)
12 {
13   int res = MP_NO;
14 
15   /* valid value of t? */
16   if (t <= 0 || t > PRIME_SIZE) {
17     return MP_VAL;
18   }
19 
20   if (mp_iseven(a))
21     mp_add_d(a, 1, a);
22 
23   do {
24     if (mp_prime_is_prime(a, t, &res) != 0) {
25       res = MP_VAL;
26       break;
27     }
28 
29     if (res == MP_NO) {
30       mp_add_d(a, 2, a);
31       continue;
32     }
33 
34   } while (res != MP_YES);
35 
36   return res;
37 }
38 #endif
39