1 /* $NetBSD: bn_mp_prime_is_divisible.c,v 1.1.1.2 2014/04/24 12:45:31 pettai Exp $ */
2
3 #include <tommath.h>
4 #ifdef BN_MP_PRIME_IS_DIVISIBLE_C
5 /* LibTomMath, multiple-precision integer library -- Tom St Denis
6 *
7 * LibTomMath is a library that provides multiple-precision
8 * integer arithmetic as well as number theoretic functionality.
9 *
10 * The library was designed directly after the MPI library by
11 * Michael Fromberger but has been written from scratch with
12 * additional optimizations in place.
13 *
14 * The library is free for all purposes without any express
15 * guarantee it works.
16 *
17 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
18 */
19
20 /* determines if an integers is divisible by one
21 * of the first PRIME_SIZE primes or not
22 *
23 * sets result to 0 if not, 1 if yes
24 */
mp_prime_is_divisible(mp_int * a,int * result)25 int mp_prime_is_divisible (mp_int * a, int *result)
26 {
27 int err, ix;
28 mp_digit res;
29
30 /* default to not */
31 *result = MP_NO;
32
33 for (ix = 0; ix < PRIME_SIZE; ix++) {
34 /* what is a mod LBL_prime_tab[ix] */
35 if ((err = mp_mod_d (a, ltm_prime_tab[ix], &res)) != MP_OKAY) {
36 return err;
37 }
38
39 /* is the residue zero? */
40 if (res == 0) {
41 *result = MP_YES;
42 return MP_OKAY;
43 }
44 }
45
46 return MP_OKAY;
47 }
48 #endif
49
50 /* Source: /cvs/libtom/libtommath/bn_mp_prime_is_divisible.c,v */
51 /* Revision: 1.4 */
52 /* Date: 2006/12/28 01:25:13 */
53