1.2.1
by Gerrit Pape
Import upstream version 0.45 |
1 |
#include <tommath.h> |
2 |
#ifdef BN_MP_INVMOD_C
|
|
1
by Matt Johnston
Import upstream version 0.42 |
3 |
/* LibTomMath, multiple-precision integer library -- Tom St Denis
|
4 |
*
|
|
5 |
* LibTomMath is a library that provides multiple-precision
|
|
6 |
* integer arithmetic as well as number theoretic functionality.
|
|
7 |
*
|
|
8 |
* The library was designed directly after the MPI library by
|
|
9 |
* Michael Fromberger but has been written from scratch with
|
|
10 |
* additional optimizations in place.
|
|
11 |
*
|
|
12 |
* The library is free for all purposes without any express
|
|
13 |
* guarantee it works.
|
|
14 |
*
|
|
1.3.2
by Gerrit Pape
Import upstream version 0.49 |
15 |
* Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com
|
1
by Matt Johnston
Import upstream version 0.42 |
16 |
*/
|
17 |
||
18 |
/* hac 14.61, pp608 */
|
|
19 |
int mp_invmod (mp_int * a, mp_int * b, mp_int * c) |
|
20 |
{
|
|
21 |
/* b cannot be negative */
|
|
22 |
if (b->sign == MP_NEG || mp_iszero(b) == 1) { |
|
23 |
return MP_VAL; |
|
24 |
}
|
|
25 |
||
1.2.1
by Gerrit Pape
Import upstream version 0.45 |
26 |
#ifdef BN_FAST_MP_INVMOD_C
|
1
by Matt Johnston
Import upstream version 0.42 |
27 |
/* if the modulus is odd we can use a faster routine instead */
|
28 |
if (mp_isodd (b) == 1) { |
|
29 |
return fast_mp_invmod (a, b, c); |
|
30 |
}
|
|
1.2.1
by Gerrit Pape
Import upstream version 0.45 |
31 |
#endif
|
32 |
||
33 |
#ifdef BN_MP_INVMOD_SLOW_C
|
|
34 |
return mp_invmod_slow(a, b, c); |
|
35 |
#endif
|
|
36 |
||
37 |
return MP_VAL; |
|
1
by Matt Johnston
Import upstream version 0.42 |
38 |
}
|
1.2.1
by Gerrit Pape
Import upstream version 0.45 |
39 |
#endif
|
1.3.2
by Gerrit Pape
Import upstream version 0.49 |
40 |
|
41 |
/* $Source: /cvs/libtom/libtommath/bn_mp_invmod.c,v $ */
|
|
42 |
/* $Revision: 1.3 $ */
|
|
43 |
/* $Date: 2006/03/31 14:18:44 $ */
|