From b986f3138510aaaf704b87f39e2815ad6e3fa5ac Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 23 Oct 2019 14:11:37 +0000 Subject: Deprecate mp_unsigned_bin_size, mp_init_set_int, mp_set_int, which are deprecated in libtommath 1.2.0. In stead, add new function mp_set_ul to the build (mp_ubin_size was already included in the build earlier) --- generic/tclStrToD.c | 2 +- generic/tclStubInit.c | 19 +++++-------------- generic/tclTomMath.decls | 9 +++------ generic/tclTomMathDecls.h | 34 +++++++++++++++++----------------- generic/tclTomMathInterface.c | 5 +++-- unix/Makefile.in | 5 ++++- win/Makefile.in | 1 + win/makefile.vc | 1 + 8 files changed, 35 insertions(+), 41 deletions(-) diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index 00ac3dc..cb55e14 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -4385,7 +4385,7 @@ TclInitDoubleConversion(void) for (i=0; i<8; ++i) { mp_sqr(pow5+i, pow5+i+1); } - mp_init_set_int(pow5_13, 1220703125); + mp_init_ul(pow5_13, 1220703125); for (i = 1; i < 5; ++i) { mp_init(pow5_13 + i); mp_sqr(pow5_13 + i - 1, pow5_13 + i); diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c index 7feb0b6..3d6439f 100644 --- a/generic/tclStubInit.c +++ b/generic/tclStubInit.c @@ -87,22 +87,13 @@ MP_GET_MAG(mp_get_mag_ull, Tcl_WideUInt) mp_err TclBN_mp_set_int(mp_int *a, unsigned long i) { - TclBN_mp_set_ul(a, i); + mp_set_ul(a, i); return MP_OKAY; } -mp_err TclBN_mp_init_set_int(mp_int *a, unsigned long i) -{ - mp_err result = mp_init(a); - if (result == MP_OKAY) { - TclBN_mp_set_ul(a, i); - } - return result; -} - static mp_err TclBN_mp_set_long(mp_int *a, unsigned long i) { - TclBN_mp_set_ul(a, i); + mp_set_ul(a, i); return MP_OKAY; } @@ -1010,8 +1001,8 @@ const TclTomMathStubs tclTomMathStubs = { TclBN_s_mp_mul_digs, /* 58 */ TclBN_s_mp_sqr, /* 59 */ TclBN_s_mp_sub, /* 60 */ - TclBN_mp_init_set_int, /* 61 */ - TclBN_mp_set_int, /* 62 */ + TclBN_mp_init_ul, /* 61 */ + TclBN_mp_set_ul, /* 62 */ TclBN_mp_cnt_lsb, /* 63 */ TclBNInitBignumFromLong, /* 64 */ TclBNInitBignumFromWideInt, /* 65 */ @@ -1019,7 +1010,7 @@ const TclTomMathStubs tclTomMathStubs = { TclBN_mp_expt_d_ex, /* 67 */ TclBN_mp_set_ull, /* 68 */ TclBN_mp_get_mag_ull, /* 69 */ - TclBN_mp_set_ul, /* 70 */ + 0, /* 70 */ TclBN_mp_get_mag_ul, /* 71 */ TclBN_mp_isodd, /* 72 */ TclBN_mp_tc_and, /* 73 */ diff --git a/generic/tclTomMath.decls b/generic/tclTomMath.decls index e6ba225..22393af 100644 --- a/generic/tclTomMath.decls +++ b/generic/tclTomMath.decls @@ -165,7 +165,7 @@ declare 45 {deprecated {Use mp_to_ubin}} { declare 46 {deprecated {Use mp_to_radix}} { mp_err TclBN_mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen) } -declare 47 { +declare 47 {deprecated {Use mp_ubin_size}} { int TclBN_mp_unsigned_bin_size(const mp_int *a) } declare 48 { @@ -212,10 +212,10 @@ declare 60 {deprecated {is private function in libtommath}} { mp_err TclBN_s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c) } declare 61 { - mp_err TclBN_mp_init_set_int(mp_int *a, unsigned long i) + mp_err TclBN_mp_init_ul(mp_int *a, unsigned long i) } declare 62 { - mp_err TclBN_mp_set_int(mp_int *a, unsigned long i) + void TclBN_mp_set_ul(mp_int *a, unsigned long i) } declare 63 { int TclBN_mp_cnt_lsb(const mp_int *a) @@ -244,9 +244,6 @@ declare 68 { declare 69 { Tcl_WideUInt TclBN_mp_get_mag_ull(const mp_int *a) } -declare 70 { - void TclBN_mp_set_ul(mp_int *a, unsigned long i) -} declare 71 { unsigned long TclBN_mp_get_mag_ul(const mp_int *a) } diff --git a/generic/tclTomMathDecls.h b/generic/tclTomMathDecls.h index 62be342..fb0f1b8 100644 --- a/generic/tclTomMathDecls.h +++ b/generic/tclTomMathDecls.h @@ -89,8 +89,9 @@ #define mp_init_copy TclBN_mp_init_copy #define mp_init_multi TclBN_mp_init_multi #define mp_init_set TclBN_mp_init_set -#define mp_init_set_int TclBN_mp_init_set_int +#define mp_init_set_int(a,i) TclBN_mp_init_ul(a,(unsigned int)(i)) #define mp_init_size TclBN_mp_init_size +#define mp_init_ul TclBN_mp_init_ul #define mp_karatsuba_mul TclBN_mp_karatsuba_mul #define s_mp_karatsuba_mul TclBN_mp_karatsuba_mul #define mp_karatsuba_sqr TclBN_mp_karatsuba_sqr @@ -109,7 +110,7 @@ #define mp_read_radix TclBN_mp_read_radix #define mp_rshd TclBN_mp_rshd #define mp_set TclBN_mp_set -#define mp_set_int TclBN_mp_set_int +#define mp_set_int(a,b) (TclBN_mp_set_ul((a),((unsigned int)(b))),MP_OKAY) #define mp_set_long(a,b) (TclBN_mp_set_ul((a),(b)),MP_OKAY) #define mp_set_long_long(a,b) (TclBN_mp_set_ull((a),(b)),MP_OKAY) #define mp_set_ul TclBN_mp_set_ul @@ -287,7 +288,8 @@ TCL_DEPRECATED("Use mp_to_radix") mp_err TclBN_mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen); /* 47 */ -EXTERN int TclBN_mp_unsigned_bin_size(const mp_int *a); +TCL_DEPRECATED("Use mp_ubin_size") +int TclBN_mp_unsigned_bin_size(const mp_int *a); /* 48 */ EXTERN mp_err TclBN_mp_xor(const mp_int *a, const mp_int *b, mp_int *c); @@ -333,9 +335,9 @@ TCL_DEPRECATED("is private function in libtommath") mp_err TclBN_s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c); /* 61 */ -EXTERN mp_err TclBN_mp_init_set_int(mp_int *a, unsigned long i); +EXTERN mp_err TclBN_mp_init_ul(mp_int *a, unsigned long i); /* 62 */ -EXTERN mp_err TclBN_mp_set_int(mp_int *a, unsigned long i); +EXTERN void TclBN_mp_set_ul(mp_int *a, unsigned long i); /* 63 */ EXTERN int TclBN_mp_cnt_lsb(const mp_int *a); /* 64 */ @@ -357,8 +359,7 @@ mp_err TclBN_mp_expt_d_ex(const mp_int *a, mp_digit b, EXTERN void TclBN_mp_set_ull(mp_int *a, Tcl_WideUInt i); /* 69 */ EXTERN Tcl_WideUInt TclBN_mp_get_mag_ull(const mp_int *a); -/* 70 */ -EXTERN void TclBN_mp_set_ul(mp_int *a, unsigned long i); +/* Slot 70 is reserved */ /* 71 */ EXTERN unsigned long TclBN_mp_get_mag_ul(const mp_int *a); /* 72 */ @@ -438,7 +439,7 @@ typedef struct TclTomMathStubs { TCL_DEPRECATED_API("Use mp_to_ubin") mp_err (*tclBN_mp_to_unsigned_bin) (const mp_int *a, unsigned char *b); /* 44 */ TCL_DEPRECATED_API("Use mp_to_ubin") mp_err (*tclBN_mp_to_unsigned_bin_n) (const mp_int *a, unsigned char *b, unsigned long *outlen); /* 45 */ TCL_DEPRECATED_API("Use mp_to_radix") mp_err (*tclBN_mp_toradix_n) (const mp_int *a, char *str, int radix, int maxlen); /* 46 */ - int (*tclBN_mp_unsigned_bin_size) (const mp_int *a); /* 47 */ + TCL_DEPRECATED_API("Use mp_ubin_size") int (*tclBN_mp_unsigned_bin_size) (const mp_int *a); /* 47 */ mp_err (*tclBN_mp_xor) (const mp_int *a, const mp_int *b, mp_int *c); /* 48 */ void (*tclBN_mp_zero) (mp_int *a); /* 49 */ TCL_DEPRECATED_API("is private function in libtommath") void (*tclBN_reverse) (unsigned char *s, int len); /* 50 */ @@ -452,8 +453,8 @@ typedef struct TclTomMathStubs { TCL_DEPRECATED_API("is private function in libtommath") mp_err (*tclBN_s_mp_mul_digs) (const mp_int *a, const mp_int *b, mp_int *c, int digs); /* 58 */ TCL_DEPRECATED_API("is private function in libtommath") mp_err (*tclBN_s_mp_sqr) (const mp_int *a, mp_int *b); /* 59 */ TCL_DEPRECATED_API("is private function in libtommath") mp_err (*tclBN_s_mp_sub) (const mp_int *a, const mp_int *b, mp_int *c); /* 60 */ - mp_err (*tclBN_mp_init_set_int) (mp_int *a, unsigned long i); /* 61 */ - mp_err (*tclBN_mp_set_int) (mp_int *a, unsigned long i); /* 62 */ + mp_err (*tclBN_mp_init_ul) (mp_int *a, unsigned long i); /* 61 */ + void (*tclBN_mp_set_ul) (mp_int *a, unsigned long i); /* 62 */ int (*tclBN_mp_cnt_lsb) (const mp_int *a); /* 63 */ TCL_DEPRECATED_API("Use mp_init() + mp_set_l()") void (*tclBNInitBignumFromLong) (mp_int *bignum, long initVal); /* 64 */ TCL_DEPRECATED_API("Use mp_init() + mp_set_ll()") void (*tclBNInitBignumFromWideInt) (mp_int *bignum, Tcl_WideInt initVal); /* 65 */ @@ -461,7 +462,7 @@ typedef struct TclTomMathStubs { TCL_DEPRECATED_API("Use mp_expt_u32") mp_err (*tclBN_mp_expt_d_ex) (const mp_int *a, mp_digit b, mp_int *c, int fast); /* 67 */ void (*tclBN_mp_set_ull) (mp_int *a, Tcl_WideUInt i); /* 68 */ Tcl_WideUInt (*tclBN_mp_get_mag_ull) (const mp_int *a); /* 69 */ - void (*tclBN_mp_set_ul) (mp_int *a, unsigned long i); /* 70 */ + void (*reserved70)(void); unsigned long (*tclBN_mp_get_mag_ul) (const mp_int *a); /* 71 */ mp_bool (*tclBN_mp_isodd) (const mp_int *a); /* 72 */ mp_err (*tclBN_mp_tc_and) (const mp_int *a, const mp_int *b, mp_int *c); /* 73 */ @@ -608,10 +609,10 @@ extern const TclTomMathStubs *tclTomMathStubsPtr; (tclTomMathStubsPtr->tclBN_s_mp_sqr) /* 59 */ #define TclBN_s_mp_sub \ (tclTomMathStubsPtr->tclBN_s_mp_sub) /* 60 */ -#define TclBN_mp_init_set_int \ - (tclTomMathStubsPtr->tclBN_mp_init_set_int) /* 61 */ -#define TclBN_mp_set_int \ - (tclTomMathStubsPtr->tclBN_mp_set_int) /* 62 */ +#define TclBN_mp_init_ul \ + (tclTomMathStubsPtr->tclBN_mp_init_ul) /* 61 */ +#define TclBN_mp_set_ul \ + (tclTomMathStubsPtr->tclBN_mp_set_ul) /* 62 */ #define TclBN_mp_cnt_lsb \ (tclTomMathStubsPtr->tclBN_mp_cnt_lsb) /* 63 */ #define TclBNInitBignumFromLong \ @@ -626,8 +627,7 @@ extern const TclTomMathStubs *tclTomMathStubsPtr; (tclTomMathStubsPtr->tclBN_mp_set_ull) /* 68 */ #define TclBN_mp_get_mag_ull \ (tclTomMathStubsPtr->tclBN_mp_get_mag_ull) /* 69 */ -#define TclBN_mp_set_ul \ - (tclTomMathStubsPtr->tclBN_mp_set_ul) /* 70 */ +/* Slot 70 is reserved */ #define TclBN_mp_get_mag_ul \ (tclTomMathStubsPtr->tclBN_mp_get_mag_ul) /* 71 */ #define TclBN_mp_isodd \ diff --git a/generic/tclTomMathInterface.c b/generic/tclTomMathInterface.c index 6eddf54..589599e 100644 --- a/generic/tclTomMathInterface.c +++ b/generic/tclTomMathInterface.c @@ -112,11 +112,12 @@ TclBNInitBignumFromWideInt( Tcl_WideInt v) /* Initial value */ { if (mp_init(a) != MP_OKAY) { - Tcl_Panic("initialization failure in TclBNInitBignumFromWideInt"); + wipanic: + Tcl_Panic("initialization failure in TclBNInitBignumFromWideInt"); } if (v < 0) { mp_set_ull(a, (Tcl_WideUInt)(-v)); - mp_neg(a, a); + if (mp_neg(a, a) != MP_OKAY) goto wipanic; } else { mp_set_ull(a, (Tcl_WideUInt)v); } diff --git a/unix/Makefile.in b/unix/Makefile.in index aec66be..fe41f0b 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -329,7 +329,7 @@ TOMMATH_OBJS = bn_s_mp_reverse.o bn_s_mp_mul_digs_fast.o \ bn_mp_div_2d.o bn_mp_div_3.o bn_mp_exch.o bn_mp_expt_u32.o \ bn_s_mp_get_bit.o bn_mp_get_mag_ul.o bn_mp_grow.o bn_mp_init.o \ bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o \ - bn_mp_init_size.o bn_s_mp_karatsuba_mul.o \ + bn_mp_init_size.o bn_mp_init_ul.o bn_s_mp_karatsuba_mul.o \ bn_s_mp_karatsuba_sqr.o bn_s_mp_balance_mul.o bn_mp_isodd.o \ bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mul.o bn_mp_mul_2.o \ bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_neg.o bn_mp_or.o \ @@ -1635,6 +1635,9 @@ bn_mp_init_set.o: $(TOMMATH_DIR)/bn_mp_init_set.c $(MATHHDRS) bn_mp_init_size.o:$(TOMMATH_DIR)/bn_mp_init_size.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_size.c +bn_mp_init_ul.o:$(TOMMATH_DIR)/bn_mp_init_ul.c $(MATHHDRS) + $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_mp_init_ul.c + bn_s_mp_karatsuba_mul.o: $(TOMMATH_DIR)/bn_s_mp_karatsuba_mul.c $(MATHHDRS) $(CC) -c $(CC_SWITCHES) $(TOMMATH_DIR)/bn_s_mp_karatsuba_mul.c diff --git a/win/Makefile.in b/win/Makefile.in index dafbb08..5e86be9 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -387,6 +387,7 @@ TOMMATH_OBJS = \ bn_mp_init_multi.${OBJEXT} \ bn_mp_init_set.${OBJEXT} \ bn_mp_init_size.${OBJEXT} \ + bn_mp_init_ul.${OBJEXT} \ bn_mp_isodd.${OBJEXT} \ bn_mp_lshd.${OBJEXT} \ bn_mp_mod.${OBJEXT} \ diff --git a/win/makefile.vc b/win/makefile.vc index ba83d1d..867610c 100644 --- a/win/makefile.vc +++ b/win/makefile.vc @@ -343,6 +343,7 @@ TOMMATHOBJS = \ $(TMP_DIR)\bn_mp_init_multi.obj \ $(TMP_DIR)\bn_mp_init_set.obj \ $(TMP_DIR)\bn_mp_init_size.obj \ + $(TMP_DIR)\bn_mp_init_ul.obj \ $(TMP_DIR)\bn_mp_isodd.obj \ $(TMP_DIR)\bn_mp_lshd.obj \ $(TMP_DIR)\bn_mp_mod.obj \ -- cgit v0.12