summaryrefslogtreecommitdiffstats
path: root/libtommath/bn_mp_read_radix.c
diff options
context:
space:
mode:
authorgahr <gahr@gahr.ch>2016-03-11 17:13:38 (GMT)
committergahr <gahr@gahr.ch>2016-03-11 17:13:38 (GMT)
commit48a3d3e4dca22efb2981fd8eb9b505b19438a704 (patch)
treef0acc29307113ad908a79330d8b8c924c8ad79ae /libtommath/bn_mp_read_radix.c
parent5137357e74c887368ad68c3cb09998b154e68d4f (diff)
downloadtcl-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.c25
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$ */