comparison libtommath/bn_mp_prime_miller_rabin.c @ 1436:60fc6476e044

Update to libtommath v1.0
author Matt Johnston <matt@ucc.asn.au>
date Sat, 24 Jun 2017 22:37:14 +0800
parents 5ff8218bcee9
children 8bba51a55704
comparison
equal deleted inserted replaced
1435:f849a5ca2efc 1436:60fc6476e044
1 #include <tommath.h> 1 #include <tommath_private.h>
2 #ifdef BN_MP_PRIME_MILLER_RABIN_C 2 #ifdef BN_MP_PRIME_MILLER_RABIN_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis 3 /* LibTomMath, multiple-precision integer library -- Tom St Denis
4 * 4 *
5 * LibTomMath is a library that provides multiple-precision 5 * LibTomMath is a library that provides multiple-precision
6 * integer arithmetic as well as number theoretic functionality. 6 * integer arithmetic as well as number theoretic functionality.
10 * additional optimizations in place. 10 * additional optimizations in place.
11 * 11 *
12 * The library is free for all purposes without any express 12 * The library is free for all purposes without any express
13 * guarantee it works. 13 * guarantee it works.
14 * 14 *
15 * Tom St Denis, [email protected], http://math.libtomcrypt.com 15 * Tom St Denis, [email protected], http://libtom.org
16 */ 16 */
17 17
18 /* Miller-Rabin test of "a" to the base of "b" as described in 18 /* Miller-Rabin test of "a" to the base of "b" as described in
19 * HAC pp. 139 Algorithm 4.24 19 * HAC pp. 139 Algorithm 4.24
20 * 20 *
65 if ((err = mp_exptmod (b, &r, a, &y)) != MP_OKAY) { 65 if ((err = mp_exptmod (b, &r, a, &y)) != MP_OKAY) {
66 goto LBL_Y; 66 goto LBL_Y;
67 } 67 }
68 68
69 /* if y != 1 and y != n1 do */ 69 /* if y != 1 and y != n1 do */
70 if (mp_cmp_d (&y, 1) != MP_EQ && mp_cmp (&y, &n1) != MP_EQ) { 70 if ((mp_cmp_d (&y, 1) != MP_EQ) && (mp_cmp (&y, &n1) != MP_EQ)) {
71 j = 1; 71 j = 1;
72 /* while j <= s-1 and y != n1 */ 72 /* while j <= s-1 and y != n1 */
73 while ((j <= (s - 1)) && mp_cmp (&y, &n1) != MP_EQ) { 73 while ((j <= (s - 1)) && (mp_cmp (&y, &n1) != MP_EQ)) {
74 if ((err = mp_sqrmod (&y, a, &y)) != MP_OKAY) { 74 if ((err = mp_sqrmod (&y, a, &y)) != MP_OKAY) {
75 goto LBL_Y; 75 goto LBL_Y;
76 } 76 }
77 77
78 /* if y == 1 then composite */ 78 /* if y == 1 then composite */
96 LBL_N1:mp_clear (&n1); 96 LBL_N1:mp_clear (&n1);
97 return err; 97 return err;
98 } 98 }
99 #endif 99 #endif
100 100
101 /* $Source: /cvs/libtom/libtommath/bn_mp_prime_miller_rabin.c,v $ */ 101 /* $Source$ */
102 /* $Revision: 1.3 $ */ 102 /* $Revision$ */
103 /* $Date: 2006/03/31 14:18:44 $ */ 103 /* $Date$ */