### diff libtommath/bn_mp_expt_d.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_expt_d.c	Sat Jun 24 17:50:50 2017 +0800
+++ b/libtommath/bn_mp_expt_d.c	Sat Jun 24 22:37:14 2017 +0800
@@ -1,4 +1,4 @@
-#include <tommath.h>
+#include <tommath_private.h>
#ifdef BN_MP_EXPT_D_C
/* LibTomMath, multiple-precision integer library -- Tom St Denis
*
@@ -12,46 +12,17 @@
* 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
*/

-/* calculate c = a**b  using a square-multiply algorithm */
+/* wrapper function for mp_expt_d_ex() */
int mp_expt_d (mp_int * a, mp_digit b, mp_int * c)
{
-  int     res, x;
-  mp_int  g;
-
-  if ((res = mp_init_copy (&g, a)) != MP_OKAY) {
-    return res;
-  }
-
-  /* set initial result */
-  mp_set (c, 1);
+  return mp_expt_d_ex(a, b, c, 0);
+}

-  for (x = 0; x < (int) DIGIT_BIT; x++) {
-    /* square */
-    if ((res = mp_sqr (c, c)) != MP_OKAY) {
-      mp_clear (&g);
-      return res;
-    }
-
-    /* if the bit is set multiply */
-    if ((b & (mp_digit) (((mp_digit)1) << (DIGIT_BIT - 1))) != 0) {
-      if ((res = mp_mul (c, &g, c)) != MP_OKAY) {
-         mp_clear (&g);
-         return res;
-      }
-    }
-
-    /* shift to next bit */
-    b <<= 1;
-  }
-
-  mp_clear (&g);
-  return MP_OKAY;
-}
#endif

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