diff options
Diffstat (limited to 'libtommath/bn_mp_radix_size.c')
-rw-r--r-- | libtommath/bn_mp_radix_size.c | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/libtommath/bn_mp_radix_size.c b/libtommath/bn_mp_radix_size.c index 40c4d04..d4a02e8 100644 --- a/libtommath/bn_mp_radix_size.c +++ b/libtommath/bn_mp_radix_size.c @@ -1,4 +1,4 @@ -#include <tommath.h> +#include <tommath_private.h> #ifdef BN_MP_RADIX_SIZE_C /* LibTomMath, multiple-precision integer library -- Tom St Denis * @@ -12,11 +12,11 @@ * The library is free for all purposes without any express * guarantee it works. * - * Tom St Denis, tomstdenis@gmail.com, http://math.libtomcrypt.com + * Tom St Denis, tstdenis82@gmail.com, http://libtom.org */ /* returns size of ASCII reprensentation */ -int mp_radix_size (mp_int * a, int radix, int *size) +int mp_radix_size (const mp_int * a, int radix, int *size) { int res, digs; mp_int t; @@ -24,14 +24,8 @@ int mp_radix_size (mp_int * a, int radix, int *size) *size = 0; - /* special case for binary */ - if (radix == 2) { - *size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1; - return MP_OKAY; - } - /* make sure the radix is in range */ - if (radix < 2 || radix > 64) { + if ((radix < 2) || (radix > 64)) { return MP_VAL; } @@ -40,6 +34,12 @@ int mp_radix_size (mp_int * a, int radix, int *size) return MP_OKAY; } + /* special case for binary */ + if (radix == 2) { + *size = mp_count_bits (a) + ((a->sign == MP_NEG) ? 1 : 0) + 1; + return MP_OKAY; + } + /* digs is the digit count */ digs = 0; @@ -66,18 +66,13 @@ int mp_radix_size (mp_int * a, int radix, int *size) } mp_clear (&t); - /* - * return digs + 1, the 1 is for the NULL byte that would be required. - * mp_toradix_n requires a minimum of 3 bytes, so never report less than - * that. - */ - - if ( digs >= 2 ) { - *size = digs + 1; - } else { - *size = 3; - } + /* return digs + 1, the 1 is for the NULL byte that would be required. */ + *size = digs + 1; return MP_OKAY; } #endif + +/* $Source$ */ +/* $Revision$ */ +/* $Date$ */ |