1 #include <tommath.h> 2 #ifdef BN_MP_SET_INT_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 /* set a 32-bit const */ 19 int mp_set_int (mp_int * a, unsigned long b) 20 { 21 int x, res; 22 23 mp_zero (a); 24 25 /* set four bits at a time */ 26 for (x = 0; x < 8; x++) { 27 /* shift the number up four bits */ 28 if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) { 29 return res; 30 } 31 32 /* OR in the top four bits of the source */ 33 a->dp[0] |= (b >> 28) & 15; 34 35 /* shift the source up to the next four bits */ 36 b <<= 4; 37 38 /* ensure that digits are not clamped off */ 39 a->used += 1; 40 } 41 mp_clamp (a); 42 return MP_OKAY; 43 } 44 #endif 45 46 /* $Source: /cvs/libtom/libtommath/bn_mp_set_int.c,v $ */ 47 /* $Revision: 1.3 $ */ 48 /* $Date: 2006/03/31 14:18:44 $ */ 49