www.usr.com/support/gpl/USR9107_release.1.4.tar.gz
[bcm963xx.git] / userapps / opensource / sshd / libtommath / bn_mp_clamp.c
1 #include <tommath.h>
2 #ifdef BN_MP_CLAMP_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@iahu.ca, http://math.libtomcrypt.org
16  */
17
18 /* trim unused digits 
19  *
20  * This is used to ensure that leading zero digits are
21  * trimed and the leading "used" digit will be non-zero
22  * Typically very fast.  Also fixes the sign if there
23  * are no more leading digits
24  */
25 void
26 mp_clamp (mp_int * a)
27 {
28   /* decrease used while the most significant digit is
29    * zero.
30    */
31   while (a->used > 0 && a->dp[a->used - 1] == 0) {
32     --(a->used);
33   }
34
35   /* reset the sign flag if used == 0 */
36   if (a->used == 0) {
37     a->sign = MP_ZPOS;
38   }
39 }
40 #endif