summaryrefslogtreecommitdiffstats
path: root/libtommath/bn_fast_mp_invmod.c
diff options
context:
space:
mode:
Diffstat (limited to 'libtommath/bn_fast_mp_invmod.c')
-rw-r--r--libtommath/bn_fast_mp_invmod.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/libtommath/bn_fast_mp_invmod.c b/libtommath/bn_fast_mp_invmod.c
index 6be44f8..be1a810 100644
--- a/libtommath/bn_fast_mp_invmod.c
+++ b/libtommath/bn_fast_mp_invmod.c
@@ -1,4 +1,4 @@
-#include <tommath_private.h>
+#include "tommath_private.h"
#ifdef BN_FAST_MP_INVMOD_C
/* LibTomMath, multiple-precision integer library -- Tom St Denis
*
@@ -11,8 +11,6 @@
*
* The library is free for all purposes without any express
* guarantee it works.
- *
- * Tom St Denis, tstdenis82@gmail.com, http://libtom.org
*/
/* computes the modular inverse via binary extended euclidean algorithm,
@@ -140,6 +138,14 @@ top:
goto LBL_ERR;
}
}
+
+ /* too big */
+ while (mp_cmp_mag(&D, b) != MP_LT) {
+ if ((res = mp_sub(&D, b, &D)) != MP_OKAY) {
+ goto LBL_ERR;
+ }
+ }
+
mp_exch(&D, c);
c->sign = neg;
res = MP_OKAY;