diff options
author | gahr <gahr@gahr.ch> | 2016-03-11 17:13:38 (GMT) |
---|---|---|
committer | gahr <gahr@gahr.ch> | 2016-03-11 17:13:38 (GMT) |
commit | 48a3d3e4dca22efb2981fd8eb9b505b19438a704 (patch) | |
tree | f0acc29307113ad908a79330d8b8c924c8ad79ae /libtommath/bn_mp_read_radix.c | |
parent | 5137357e74c887368ad68c3cb09998b154e68d4f (diff) | |
download | tcl-48a3d3e4dca22efb2981fd8eb9b505b19438a704.zip tcl-48a3d3e4dca22efb2981fd8eb9b505b19438a704.tar.gz tcl-48a3d3e4dca22efb2981fd8eb9b505b19438a704.tar.bz2 |
[e6f27aa56f] Initial import of libtommath-1.0
This commit brings in libtommath-1.0, as of tag v1.0 of the upstream repository
at https://github.com/libtom/libtommath.
Only the top-level directory has been imported: the demo, etc, logs, mtest,
pics, pre_gen, and tombc directories have been removed from our repo.
The stubs tables have been regenerated to accomodate for the new function:
mp_expt_d_ex(mp_int *a, mp_digit b, mp_int *c, int fast);
See https://github.com/libtom/libtommath/commit/e9b1837 for details.
Only the unix build system has been modified for now. Windows and Mac OSX will
come later.
Diffstat (limited to 'libtommath/bn_mp_read_radix.c')
-rw-r--r-- | libtommath/bn_mp_read_radix.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/libtommath/bn_mp_read_radix.c b/libtommath/bn_mp_read_radix.c index 4b92589..5c9eb5e 100644 --- a/libtommath/bn_mp_read_radix.c +++ b/libtommath/bn_mp_read_radix.c @@ -1,4 +1,4 @@ -#include <tommath.h> +#include <tommath_private.h> #ifdef BN_MP_READ_RADIX_C /* LibTomMath, multiple-precision integer library -- Tom St Denis * @@ -12,7 +12,7 @@ * 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 */ /* read a string [ASCII] in a given radix */ @@ -25,7 +25,7 @@ int mp_read_radix (mp_int * a, const char *str, int radix) mp_zero(a); /* make sure the radix is ok */ - if (radix < 2 || radix > 64) { + if ((radix < 2) || (radix > 64)) { return MP_VAL; } @@ -43,12 +43,12 @@ int mp_read_radix (mp_int * a, const char *str, int radix) mp_zero (a); /* process each digit of the string */ - while (*str) { - /* if the radix < 36 the conversion is case insensitive + while (*str != '\0') { + /* if the radix <= 36 the conversion is case insensitive * this allows numbers like 1AB and 1ab to represent the same value * [e.g. in hex] */ - ch = (char) ((radix < 36) ? toupper ((unsigned char) *str) : *str); + ch = (radix <= 36) ? (char)toupper((int)*str) : *str; for (y = 0; y < 64; y++) { if (ch == mp_s_rmap[y]) { break; @@ -72,17 +72,14 @@ int mp_read_radix (mp_int * a, const char *str, int radix) ++str; } - /* if an illegal character was found, fail. */ - - if ( *str != '\0' ) { - mp_zero( a ); - return MP_VAL; - } - /* set the sign only if a != 0 */ - if (mp_iszero(a) != 1) { + if (mp_iszero(a) != MP_YES) { a->sign = neg; } return MP_OKAY; } #endif + +/* $Source$ */ +/* $Revision$ */ +/* $Date$ */ |