Commit Graph

117 Commits

Author SHA1 Message Date
Daniel Mendler
1af0de1f91
deprecate mp_tc_(and|or|xor) in favor of mp_(and|or|xor)
* same behavior for positive numbers
* generalisation for negative numbers, treating them as two complement
* improve algorithm, iterate once over the digits, manually perform two complement
* simplify mp_add_d, mp_sub_d
* functions are safe in case of a==c or b==c
* renamed mp_tc_div_2d to mp_signed_rsh (signed right shift)
2019-05-21 18:28:11 +02:00
Daniel Mendler
0dfa9da5a6
make tommath_class.h and tommath_superclass.h private
These headers are used for configuration during build time.
Therefore they shouldn't be exposed as part of the public API.
2019-05-21 18:01:17 +02:00
Daniel Mendler
0b840b78a3
make mp_word private
mp_word is an internal type and it is problematic if it is exposed
in the public api. See for example #216 - MSVC does not support 128 bit
mp_words. But it is perfectly ok to use those internally in the library,
as long as the library is compiled with GCC.
2019-05-21 15:34:04 +02:00
Daniel Mendler
a8239c2465
deprecate mp_get_bit
The return type of mp_get_bit was imprecise (either mp_err or mp_bool),
therefore this function is deprecated in favor of s_mp_get_bit for now.

If we need s_mp_get_bit to be public, we should add it under a different
name. However since mp_set_bit is not available, I don't think there any
downstream users (ab)using mp_int as bitsets.
2019-05-18 10:03:47 +02:00
Daniel Mendler
56e7a40123
deprecate mp_jacobi 2019-05-18 10:03:46 +02:00
Daniel Mendler
89bac3a7a0
deprecate MP_RANGE 2019-05-13 19:15:14 +02:00
Daniel Mendler
4534056c28
use enums mp_err, mp_ord, mp_bool, mp_sign
* MP_USE_ENUMS enables enums
* Wc++-compat catches some implicit conversions if MP_USE_ENUMS is defined
* 100% backwards compatible API/ABI if MP_USE_ENUMS is not defined
2019-05-13 19:15:14 +02:00
Francois Perrad
38116079e4 literal suffix 2019-05-13 17:53:10 +02:00
Francois Perrad
2d508723aa const parameter 2019-05-13 17:53:00 +02:00
Daniel Mendler
7365442ace
No grow necessary in mp_set_int* functions
* mp_set_int* always return MP_OKAY
* remove return checks for mp_set_int*
* introduce MP_MIN_PREC
2019-05-12 13:04:45 +02:00
Daniel Mendler
adf9605d6c
add warn_unused_result, found one missing check! 2019-05-11 19:26:58 +02:00
Francois Perrad
cc703a849b add missing parameter name in prototype 2019-05-11 16:57:04 +02:00
Daniel Mendler
0669e92e78
deprecate mp_prime_random_ex in favor of mp_prime_rand
We can use the internal mp_rand generator now, since it generates
numbers which are safe for crypto purposes.
2019-05-11 00:48:48 +02:00
Daniel Mendler
e05215a894
deprecate old macros, deprecate mp_rand_digit 2019-05-09 15:05:47 +02:00
Daniel Mendler
9ddf1e5838
support custom random data source via mp_rand_source
* deprecate MP_PRNG_ENABLE_LTM_RNG
* custom mp_rand_source is used always if set, which should be more aligned with user expectations
* use custom source in tune.c
* don't call random number generator once per digit, which is slow
2019-05-08 11:21:10 +02:00
Daniel Mendler
290c28c10e
deprecate PRIME_SIZE in favor of MP_PRIME_SIZE 2019-05-07 09:49:26 +02:00
Daniel Mendler
44d03a6f8b
deprecate LTM_PRIME_* macros in favor of MP_PRIME_* 2019-05-07 09:45:38 +02:00
Daniel Mendler
e2ee39b536
deprecate ltm_prime_callback 2019-05-07 09:36:24 +02:00
Daniel Mendler
80f5fac53b
rename LTM_NO_FILE to MP_NO_FILE 2019-05-07 09:33:56 +02:00
Daniel Mendler
0337d48b67
add MP_NULL_TERMINATED 2019-05-07 09:33:46 +02:00
Daniel Mendler
250751be46
tommath.h: do not expose stdlib.h 2019-05-07 09:32:59 +02:00
Daniel Mendler
818d8fb7f5
Rework handling of tunable cutoffs
* In the default settings, a cutoff X can be modified at runtime
   by adjusting the corresponding X_CUTOFF variable.

 * Tunability of the library can be disabled at compile time
   by defining the MP_FIXED_CUTOFFS macro.

 * There is an additional file tommath_cutoffs.h, which defines
   the default cutoffs. These can be adjusted manually or by the
   autotuner.
2019-05-04 13:08:37 +02:00
Daniel Mendler
90eccd5768
prefix private macros by PRIVATE_ 2019-04-25 15:36:35 +02:00
Daniel Mendler
632601f405
MP_WARRAY is an internal macro 2019-04-25 13:39:50 +02:00
Daniel Mendler
e45f75fddb
deprecate DIGIT_BIT, use MP_DIGIT_BIT 2019-04-25 13:39:50 +02:00
Daniel Mendler
a8c76138f9
deprecate macros in tommath.h
* move MP_DEPRECATED to tommath.h since we need it later
* add MP_DEPRECATED_PRAGMA
2019-04-25 13:39:50 +02:00
Daniel Mendler
87292ed10a
move mp_balance_mul to tommath_private.h 2019-04-12 14:55:09 +02:00
czurnieden
35311aea49 added function mp_ilogb 2019-04-09 21:59:59 +02:00
czurnieden
27ca25cb82 added multiplcation balancing for the Toom-Cook algorithms 2019-04-07 22:15:09 +02:00
Daniel Mendler
ff56140462
shorter headers 2019-04-07 17:26:31 +02:00
Daniel Mendler
70a30ae7a7
remove footers 2019-04-07 17:26:31 +02:00
Daniel Mendler
5da4e0ac01
remove unnecessary size_t casts, fix Wconversion/Wsign-conversion issues
Wconversion and Wsign-conversion is still not activated by default,
since there are many issues in demo.c.
2019-04-05 10:52:39 +02:00
czurnieden
769218ccc7 additional functions mp_incr and mp_decr 2019-04-04 07:58:19 +02:00
nijtmans
a3076677be previous commit removed a little bit too much 2019-03-28 16:18:41 +01:00
nijtmans
ef07da5b8c mp_min_u32 is not used anywhere anymore, so it can be removed 2019-03-28 16:13:37 +01:00
Daniel Mendler
8eb3bb282e do not include stdio.h if LTM_NO_FILE is defined
stdio.h might not be available on constraint environments
2019-03-26 17:47:16 +01:00
Francois Perrad
6ce271c4db mp_iseven & mp_isodd becomes C functions 2019-02-02 07:39:23 +01:00
Steffen Jaeckel
1c8c534885 Merge pull request #147 from czurnieden/moarvm_workarounds
workaround for the MoarVM problem with MP_GEN_RAND et al.
(cherry picked from commit 11d6e03914)
2019-01-15 18:22:23 +01:00
Steffen Jaeckel
7ac11218ca clarify comment of ltm_rng() 2018-12-31 11:54:02 +01:00
Steffen Jaeckel
18355de625 Update file headers
[skip ci]
2018-12-29 17:56:20 +01:00
czurnieden
f4449362c0 fixes for MP_8BIT and mx32, prefinal design 2018-12-25 15:17:12 +01:00
czurnieden
08cee4325d Moved mp_mul_si() into bn_mp_prime_strong_lucas_selfridge.c as a local function 2018-12-25 15:17:03 +01:00
czurnieden
a218ddce9b Added Fips 186.4 compliance, an additional strong Lucas-Selfridge (for BPSW) and a Frobenius (Paul UNderwood) test, both optional. With documentation. 2018-12-25 15:17:03 +01:00
Mikhail Novosyolov
adbadc70f4 Fix includes
Header files which are located in the same directory that the file from where it is included must be included using `" "`, not `< >`.
Otherwise the compiler (gcc 5) cannot understand `#include <tommath_class.h>` in `/usr/include/tommath/tommath.h`.
2018-12-01 15:27:40 +01:00
Daniel Mendler
2ab527b7e0
add mp_get_double, mp_set_double 2018-11-22 12:05:16 +01:00
Steffen Jaeckel
8b9f98baa1 auto-format
by executing `make astyle`
2018-09-23 21:37:58 +02:00
Daniel Mendler
eebbcf0644
add mp_complement, mp_tc_div_2d, mp_tc_and, mp_tc_or, mp_tc_xor 2018-09-10 18:48:58 +02:00
Karel Miko
92e8719b80 improved detection of MP_64BIT 2018-05-28 22:02:13 +02:00
Steffen Jaeckel
ef6d85a1a6 don't use rand() in mp_rand()
This fixes #103
2018-04-23 22:31:59 +02:00
Michael Shigorin
0bc755139c add e2k/lcc support 2018-02-27 23:30:43 +01:00