### diff libtommath/bn_mp_reduce_2k.c @ 1436:60fc6476e044

Update to libtommath v1.0
author Matt Johnston Sat, 24 Jun 2017 22:37:14 +0800 5ff8218bcee9 8bba51a55704
line wrap: on
line diff
```--- a/libtommath/bn_mp_reduce_2k.c	Sat Jun 24 17:50:50 2017 +0800
+++ b/libtommath/bn_mp_reduce_2k.c	Sat Jun 24 22:37:14 2017 +0800
@@ -1,4 +1,4 @@
-#include <tommath.h>
+#include <tommath_private.h>
#ifdef BN_MP_REDUCE_2K_C
/* LibTomMath, multiple-precision integer library -- Tom St Denis
*
@@ -12,7 +12,7 @@
* The library is free for all purposes without any express
* guarantee it works.
*
- * Tom St Denis, [email protected], http://math.libtomcrypt.com
+ * Tom St Denis, [email protected], http://libtom.org
*/

/* reduces a modulo n where n is of the form 2**p - d */
@@ -20,35 +20,37 @@
{
mp_int q;
int    p, res;
-
+
if ((res = mp_init(&q)) != MP_OKAY) {
return res;
}
-
-   p = mp_count_bits(n);
+
+   p = mp_count_bits(n);
top:
/* q = a/2**p, a = a mod 2**p */
if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {
goto ERR;
}
-
+
if (d != 1) {
/* q = q * d */
-      if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) {
+      if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) {
goto ERR;
}
}
-
+
/* a = a + q */
if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
goto ERR;
}
-
+
if (mp_cmp_mag(a, n) != MP_LT) {
-      s_mp_sub(a, n, a);
+      if ((res = s_mp_sub(a, n, a)) != MP_OKAY) {
+         goto ERR;
+      }
goto top;
}
-
+
ERR:
mp_clear(&q);
return res;
@@ -56,6 +58,6 @@

#endif

-/* \$Source: /cvs/libtom/libtommath/bn_mp_reduce_2k.c,v \$ */
-/* \$Revision: 1.3 \$ */
-/* \$Date: 2006/03/31 14:18:44 \$ */
+/* \$Source\$ */
+/* \$Revision\$ */
+/* \$Date\$ */```