Home | History | Annotate | Download | only in libtommath
      1 #include <tommath.h>
      2 #ifdef BN_MP_TO_UNSIGNED_BIN_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 /* store in unsigned [big endian] format */
     19 int mp_to_unsigned_bin (mp_int * a, unsigned char *b)
     20 {
     21   int     x, res;
     22   mp_int  t;
     23 
     24   if ((res = mp_init_copy (&t, a)) != MP_OKAY) {
     25     return res;
     26   }
     27 
     28   x = 0;
     29   while (mp_iszero (&t) == 0) {
     30 #ifndef MP_8BIT
     31       b[x++] = (unsigned char) (t.dp[0] & 255);
     32 #else
     33       b[x++] = (unsigned char) (t.dp[0] | ((t.dp[1] & 0x01) << 7));
     34 #endif
     35     if ((res = mp_div_2d (&t, 8, &t, NULL)) != MP_OKAY) {
     36       mp_clear (&t);
     37       return res;
     38     }
     39   }
     40   bn_reverse (b, x);
     41   mp_clear (&t);
     42   return MP_OKAY;
     43 }
     44 #endif
     45 
     46 /* $Source: /cvs/libtom/libtommath/bn_mp_to_unsigned_bin.c,v $ */
     47 /* $Revision: 1.3 $ */
     48 /* $Date: 2006/03/31 14:18:44 $ */
     49