X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=userapps%2Fopensource%2Fsshd%2Flibtommath%2Fbn_mp_reduce_is_2k.c;fp=userapps%2Fopensource%2Fsshd%2Flibtommath%2Fbn_mp_reduce_is_2k.c;h=0fb8384e2b8aae5b5729cf8bed2360d087f5b766;hb=57a096f051259ceaefd5977f30d269884e1dd248;hp=3e4a757915f3a324bff5ad7fcc5d48c1173769be;hpb=9887430fc6b7c0f8eb8e81de2bfe3bba12d8d4a1;p=bcm963xx.git diff --git a/userapps/opensource/sshd/libtommath/bn_mp_reduce_is_2k.c b/userapps/opensource/sshd/libtommath/bn_mp_reduce_is_2k.c index 3e4a7579..0fb8384e 100755 --- a/userapps/opensource/sshd/libtommath/bn_mp_reduce_is_2k.c +++ b/userapps/opensource/sshd/libtommath/bn_mp_reduce_is_2k.c @@ -1,38 +1,48 @@ -/* LibTomMath, multiple-precision integer library -- Tom St Denis - * - * LibTomMath is library that provides for multiple-precision - * integer arithmetic as well as number theoretic functionality. - * - * The library is designed directly after the MPI library by - * Michael Fromberger but has been written from scratch with - * additional optimizations in place. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org - */ -#include - -/* determines if mp_reduce_2k can be used */ -int -mp_reduce_is_2k(mp_int *a) -{ - int ix, iy; - - if (a->used == 0) { - return 0; - } else if (a->used == 1) { - return 1; - } else if (a->used > 1) { - iy = mp_count_bits(a); - for (ix = DIGIT_BIT; ix < iy; ix++) { - if ((a->dp[ix/DIGIT_BIT] & - ((mp_digit)1 << (mp_digit)(ix % DIGIT_BIT))) == 0) { - return 0; - } - } - } - return 1; -} - +#include +#ifdef BN_MP_REDUCE_IS_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org + */ + +/* determines if mp_reduce_2k can be used */ +int mp_reduce_is_2k(mp_int *a) +{ + int ix, iy, iw; + mp_digit iz; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + iy = mp_count_bits(a); + iz = 1; + iw = 1; + + /* Test every bit from the second digit up, must be 1 */ + for (ix = DIGIT_BIT; ix < iy; ix++) { + if ((a->dp[iw] & iz) == 0) { + return MP_NO; + } + iz <<= 1; + if (iz > (mp_digit)MP_MASK) { + ++iw; + iz = 1; + } + } + } + return MP_YES; +} + +#endif