summaryrefslogtreecommitdiffhomepage
path: root/libtommath/bn_mp_copy.c
diff options
context:
space:
mode:
Diffstat (limited to 'libtommath/bn_mp_copy.c')
-rw-r--r--libtommath/bn_mp_copy.c55
1 files changed, 19 insertions, 36 deletions
diff --git a/libtommath/bn_mp_copy.c b/libtommath/bn_mp_copy.c
index e3463b6..e72fcf6 100644
--- a/libtommath/bn_mp_copy.c
+++ b/libtommath/bn_mp_copy.c
@@ -1,21 +1,14 @@
#include "tommath_private.h"
#ifdef BN_MP_COPY_C
-/* LibTomMath, multiple-precision integer library -- Tom St Denis
- *
- * LibTomMath is a library that provides multiple-precision
- * integer arithmetic as well as number theoretic functionality.
- *
- * The library was designed directly after the MPI library by
- * Michael Fromberger but has been written from scratch with
- * additional optimizations in place.
- *
- * SPDX-License-Identifier: Unlicense
- */
+/* LibTomMath, multiple-precision integer library -- Tom St Denis */
+/* SPDX-License-Identifier: Unlicense */
/* copy, b = a */
-int mp_copy(const mp_int *a, mp_int *b)
+mp_err mp_copy(const mp_int *a, mp_int *b)
{
- int res, n;
+ int n;
+ mp_digit *tmpa, *tmpb;
+ mp_err err;
/* if dst == src do nothing */
if (a == b) {
@@ -24,41 +17,31 @@ int mp_copy(const mp_int *a, mp_int *b)
/* grow dest */
if (b->alloc < a->used) {
- if ((res = mp_grow(b, a->used)) != MP_OKAY) {
- return res;
+ if ((err = mp_grow(b, a->used)) != MP_OKAY) {
+ return err;
}
}
/* zero b and copy the parameters over */
- {
- mp_digit *tmpa, *tmpb;
+ /* pointer aliases */
- /* pointer aliases */
+ /* source */
+ tmpa = a->dp;
- /* source */
- tmpa = a->dp;
+ /* destination */
+ tmpb = b->dp;
- /* destination */
- tmpb = b->dp;
-
- /* copy all the digits */
- for (n = 0; n < a->used; n++) {
- *tmpb++ = *tmpa++;
- }
-
- /* clear high digits */
- for (; n < b->used; n++) {
- *tmpb++ = 0;
- }
+ /* copy all the digits */
+ for (n = 0; n < a->used; n++) {
+ *tmpb++ = *tmpa++;
}
+ /* clear high digits */
+ MP_ZERO_DIGITS(tmpb, b->used - n);
+
/* copy used count and sign */
b->used = a->used;
b->sign = a->sign;
return MP_OKAY;
}
#endif
-
-/* ref: HEAD -> master, tag: v1.1.0 */
-/* git commit: 08549ad6bc8b0cede0b357a9c341c5c6473a9c55 */
-/* commit time: 2019-01-28 20:32:32 +0100 */