comparison bn_mp_reduce_is_2k.c @ 142:d29b64170cf0 libtommath-orig

import of libtommath 0.32
author Matt Johnston <matt@ucc.asn.au>
date Sun, 19 Dec 2004 11:33:56 +0000
parents 86e0b50a9b58
children d8254fc979e9
comparison
equal deleted inserted replaced
19:e1037a1e12e7 142:d29b64170cf0
1 #include <tommath.h>
2 #ifdef BN_MP_REDUCE_IS_2K_C
1 /* LibTomMath, multiple-precision integer library -- Tom St Denis 3 /* LibTomMath, multiple-precision integer library -- Tom St Denis
2 * 4 *
3 * LibTomMath is a library that provides multiple-precision 5 * LibTomMath is a library that provides multiple-precision
4 * integer arithmetic as well as number theoretic functionality. 6 * integer arithmetic as well as number theoretic functionality.
5 * 7 *
10 * The library is free for all purposes without any express 12 * The library is free for all purposes without any express
11 * guarantee it works. 13 * guarantee it works.
12 * 14 *
13 * Tom St Denis, [email protected], http://math.libtomcrypt.org 15 * Tom St Denis, [email protected], http://math.libtomcrypt.org
14 */ 16 */
15 #include <tommath.h>
16 17
17 /* determines if mp_reduce_2k can be used */ 18 /* determines if mp_reduce_2k can be used */
18 int mp_reduce_is_2k(mp_int *a) 19 int mp_reduce_is_2k(mp_int *a)
19 { 20 {
20 int ix, iy, iz, iw; 21 int ix, iy, iw;
22 mp_digit iz;
21 23
22 if (a->used == 0) { 24 if (a->used == 0) {
23 return 0; 25 return 0;
24 } else if (a->used == 1) { 26 } else if (a->used == 1) {
25 return 1; 27 return 1;
32 for (ix = DIGIT_BIT; ix < iy; ix++) { 34 for (ix = DIGIT_BIT; ix < iy; ix++) {
33 if ((a->dp[iw] & iz) == 0) { 35 if ((a->dp[iw] & iz) == 0) {
34 return 0; 36 return 0;
35 } 37 }
36 iz <<= 1; 38 iz <<= 1;
37 if (iz > (int)MP_MASK) { 39 if (iz > (mp_digit)MP_MASK) {
38 ++iw; 40 ++iw;
39 iz = 1; 41 iz = 1;
40 } 42 }
41 } 43 }
42 } 44 }
43 return 1; 45 return 1;
44 } 46 }
45 47
48 #endif