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@gmail.com, http://libtom.org 16 */ 17 18/* set a 32-bit const */ 19int 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.4 $ */ 48/* $Date: 2006/12/28 01:25:13 $ */ 49