~ubuntu-branches/ubuntu/utopic/dropbear/utopic-proposed

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