Home | History | Annotate | Download | only in libtommath
      1 #include <tommath.h>
      2 #ifdef BN_MP_COPY_C
      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  *
     15  * Tom St Denis, tomstdenis (at) gmail.com, http://math.libtomcrypt.com
     16  */
     17 
     18 /* copy, b = a */
     19 int
     20 mp_copy (mp_int * a, mp_int * b)
     21 {
     22   int     res, n;
     23 
     24   /* if dst == src do nothing */
     25   if (a == b) {
     26     return MP_OKAY;
     27   }
     28 
     29   /* grow dest */
     30   if (b->alloc < a->used) {
     31      if ((res = mp_grow (b, a->used)) != MP_OKAY) {
     32         return res;
     33      }
     34   }
     35 
     36   /* zero b and copy the parameters over */
     37   {
     38     register mp_digit *tmpa, *tmpb;
     39 
     40     /* pointer aliases */
     41 
     42     /* source */
     43     tmpa = a->dp;
     44 
     45     /* destination */
     46     tmpb = b->dp;
     47 
     48     /* copy all the digits */
     49     for (n = 0; n < a->used; n++) {
     50       *tmpb++ = *tmpa++;
     51     }
     52 
     53     /* clear high digits */
     54     for (; n < b->used; n++) {
     55       *tmpb++ = 0;
     56     }
     57   }
     58 
     59   /* copy used count and sign */
     60   b->used = a->used;
     61   b->sign = a->sign;
     62   return MP_OKAY;
     63 }
     64 #endif
     65 
     66 /* $Source: /cvs/libtom/libtommath/bn_mp_copy.c,v $ */
     67 /* $Revision: 1.3 $ */
     68 /* $Date: 2006/03/31 14:18:44 $ */
     69