Mercurial > dropbear
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$ */ |