tommath.h

Branch


Log

Author Commit Date CI Message
Dilshod Urazov f12c2ab5 2021-03-26T10:47:25 Add FNV-1a hash function This allows to compute non-cryptographic hash of mp_int which can be used as a key in a hash table.
Daniel Mendler ca6924b7 2019-12-23T11:12:42 add error code MP_OVF for integer overflow (too many digits)
czurnieden 1e65c0bf 2019-10-11T00:06:45 Introduction of a fast but slightly over-estimating radix_size
Daniel Mendler b800b761 2019-11-22T16:04:48 remove *_ll* setters/getters * they are non standard * they are incompatible with older compilers * u64/i64 functions should be used instead * these functions should be deprecated again in 1.x
Daniel Mendler f6a7bedb 2019-10-29T20:52:29 suffix _u32 -> _n of mp_(expt|log|root) functions, use int for now
Daniel Mendler 4f00e75b 2019-11-06T16:51:51 make mp_div_3 private
Daniel Mendler 0fa802f2 2019-11-06T16:49:59 make mp_sqr private (optimization of mp_mul)
Francois Perrad 146becbd 2019-10-31T19:26:55 literal suffix
Daniel Mendler 5c335f84 2019-10-30T17:26:27 rename mul/sqr functions for consistency, comba instead of fast suffix
Daniel Mendler e60149de 2019-10-29T20:26:25 simplifications: replace mp_mod_d by macro
Daniel Mendler b9977adf 2019-10-29T08:44:51 use uint8_t instead of unsigned char
Steffen Jaeckel 8456782c 2019-10-29T15:40:47 don't allow disabling of WUR checks
Steffen Jaeckel e95dd24e 2019-10-27T21:34:23 introduce MP_NO_DEPRECATED_PRAGMA
Steffen Jaeckel b250ec44 2019-10-29T13:24:34 clean-up test.c * no more `MP_WUR` in test.c * clean-up console output
Daniel Mendler cf004265 2019-10-27T08:54:09 define mp_isodd in terms of mp_iseven
Daniel Mendler 17a846f2 2019-10-26T19:33:36 add "make c99" to convert back
Daniel Mendler bf9507a9 2019-10-24T22:02:29 replace mp_bool by stdbool * This gives the advantage that static analysis **understands** bool, but complains about using an enum type instead of bool. * If stdbool.h is not desired, true/false/bool can be replaced using sed as in the no-stdint-h branch. * We already include stdint.h and stdbool.h is not more harmful than this header
Daniel Mendler 27e142bc 2019-10-24T17:52:03 remove unnecessary == MP_YES/MP_NO comparisons
Daniel Mendler eb70378b 2019-10-23T20:06:33 mp_iseven/mp_isodd should be inline
Daniel Mendler f21ea6ce 2019-10-23T20:06:08 add fast path to mp_add_d and mp_sub_d
Daniel Mendler 14642642 2019-10-22T18:01:08 add prefix to cutoff variables
Daniel Mendler 00b263f3 2019-10-22T17:52:26 remove private_mp_word
Daniel Mendler 31e64aa6 2019-10-22T15:04:36 mp_prime_next_prime: use mp_bool for bbs_style
Daniel Mendler a29aa59b 2019-10-21T19:12:22 use size_t for mp_radix_size
Steffen Jaeckel f8e9bd27 2019-10-20T15:38:32 Merge pull request #387 from fperrad/20191019_lint some linting (cherry picked from commit 8095b3b61240628f052153d6c37539955632564e)
Daniel Mendler 5c6391dd 2019-10-19T18:35:57 remove some MP_8BIT remnants
Francois Perrad b34aac09 2019-10-19T16:24:55 remove extraneous comma
Steffen Jaeckel 7a68f128 2019-10-19T16:24:39 Execute move.sh - Rename files from bn_* to match the function names. * git blame <renamed-file> is not affected * git log --follow <renamed-file> can be used to show log across renames
czurnieden 36fca2f9 2019-09-09T02:58:18 remove support for 8-bit (MP_8BIT)
Daniel Mendler 45a3bf76 2019-10-16T09:21:19 remove deprecated functions
Daniel Mendler fce429d0 2019-07-24T15:54:01 tommath.h: do not expose limits.h
Daniel Mendler 55431084 2019-10-16T09:26:04 tommath.h: use enums
Daniel Mendler cb1b2dc8 2019-10-15T14:04:32 mp_log_u32: return uint32_t
Steffen Jaeckel c9d41fba 2019-10-15T10:40:40 rename mp_ilogb() to mp_log_u32()
Francois Perrad e3eb13e4 2019-10-10T20:25:56 use same parameter name as in the prototype
Daniel Mendler fe2f91a1 2019-10-09T20:22:11 to_sbin/to_ubin/pack: don't write anything in case of buffer overflow
Daniel Mendler 6e3dae56 2019-10-08T21:47:57 add MP_BUF error
czurnieden b6813a41 2019-09-27T03:40:08 replace mp_export/import by mp_pack/unpack
czurnieden 71d1b7b9 2019-09-08T23:29:44 make mp_to_radix return the count of characters of the converted number
czurnieden abdb0334 2019-09-25T00:29:19 Refactored functions to read and write binaries and added "maxlen"
czurnieden 6b0caef4 2019-09-09T15:55:45 add message that MP-8BIT is deprecated
nijtmans bbe268eb 2019-09-03T10:53:40 Fix deprecation messages and unnecessary includes
Steffen Jaeckel 684426b6 2019-09-02T14:40:10 add new conversion macros
Steffen Jaeckel f0e6ae59 2019-09-02T14:36:06 add `mp_to_radix()` ...a 100% copy&paste of `mp_toradix_n()` besides the changed API signature
Daniel Mendler 625defdc 2019-05-31T11:31:53 fix gcc version check for deprecations
Daniel Mendler ca89e9c0 2019-07-03T13:10:05 rename mp_root/mp_expt to mp_*_u32
Daniel Mendler 71696549 2019-05-29T20:36:18 deprecate mp_expt_d and mp_n_root in favor of mp_expt and mp_root
Joachim Breitner 6c35dd7e 2019-07-15T12:15:10 Import stddef in tommath.h At least here (compiling for WebAssembly (`wasm32-unknown-unknown-wasm`), I need this, otherwise `size_t` is not available.
nijtmans 0db64fc8 2019-07-03T14:45:14 Rename bn_get_magxx -> bn_get_mag_uxx. Documentation updated too
nijtmans fde85249 2019-06-13T16:58:06 @minad 's suggestions
nijtmans db4afb3d 2019-06-12T13:11:58 Provide explicit symbols for bn_xxx_l and bn_xxx_ll functions.
nijtmans a911999d 2019-05-28T14:26:41 Better interoperability between MSVC and mingw-w64, 3
nijtmans ab309de0 2019-06-05T14:50:12 Fix MSVC warning: bn_mp_rand.c(9): warning C4028: formal parameter 1 different from declaration
H.Merijn Brand - Tux f5b6cd07 2019-04-26T14:38:54 Fix building on HP-UX 11.11 / PA-RISC $ perl -v This is perl 5, version 28, subversion 2 (v5.28.2) built for PA-RISC2.0-thread-multi-LP64 $ perl Makefile.PL Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for CryptX Writing MYMETA.yml and MYMETA.json $ make : : gcc64 -Iltm -Iltc/headers -DLTC_SOURCE -DLTC_NO_TEST -DLTC_NO_PROTOTYPES -DLTM_DESC -D_POSIX_C_SOURCE=199506L -D_REENTRANT -mpa-risc-2-0 -fPIC -D_HPUX_SOURCE -fwrapv -fno-strict-aliasing -pipe -I/usr/local/pa20_64/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -fPIC -g -O -DARGTYPE=4 -c ltc/math/ltm_desc.c -o ltc/math/ltm_desc.o In file included from ltc/math/ltm_desc.c:15:0: ltm/tommath.h:74:1: error: unable to emulate 'TI' make[1]: *** [ltc/math/ltm_desc.o] Error 1 make[1]: Leaving directory `/data/cpan-build/CryptX-0.063-0/src' make: *** [src/liballinone.a] Error 2 $ gcc64 --version gcc64 (GCC) 4.6.1 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ perl -V:cppsymbols cppsymbols='_FILE_OFFSET_BITS=64 _HPUX_SOURCE=1 _LARGEFILE_SOURCE=1 _LFS64_LARGEFILE=1 _LFS_LARGEFILE=1 _LP64=1 _PA_RISC2_0=1 _POSIX_C_SOURCE=199506L _PROTOTYPES= _REENTRANT=1 _XOPEN_SOURCE_EXTENDED=1 _XPG4= _XPG4_EXTENDED= __BYTE_ORDER__=4321 __ELF__=1 __GNUC_MINOR__=6 __GNUC__=4 __LP64__=1 __PIC__=2 __STDC_EXT__=1 __STDC__=1 __hp9000s700=1 __hp9000s700__=1 __hp9000s800=1 __hp9000s800__=1 __hppa=1 __hppa__=1 __hpux=1 __hpux__=1 __pic__=2 __unix=1 __unix__=1';
Steffen Jaeckel 0ebc4f92 2019-06-05T09:20:25 fix MP_DEPRECATED for non-gcc, -clang or -msvc
Francois Perrad 25ff85d2 2019-05-23T18:00:21 move cast inside macro
Daniel Mendler c7314fa4 2019-05-25T06:42:01 deprecate mp_n_root_ex and mp_expt_d_ex These functions were introduced to give some timing guarantees. However the guarantees are too weak to be useful. The functions seem to be unused essentially by downstream users.
Daniel Mendler 4b475aca 2019-05-26T09:29:58 fixes for msvc
Daniel Mendler bcec605a 2019-05-22T15:34:49 deprecate mp_prime_is_divisible and ltm_prime_tab * it is an implementation detail used for prime testing * there is upcoming work by @czurnieden regarding a generalised prime sieve * furthermore remove jacobi test (replaced by kronecker)
Daniel Mendler c7a7bd47 2019-05-23T16:37:34 MP_PREC is an internal macro, it should be defined in tommath_private.h
Daniel Mendler b0938d70 2019-05-24T11:48:27 remove obsolete comment
Daniel Mendler 9f607dd5 2019-05-23T17:00:47 disallow defining MP_DIGIT_BIT, only allow MP_8/16/31/32/64BIT
Daniel Mendler 0a9f5e9b 2019-05-24T10:21:54 use u32 i64 suffix
Daniel Mendler d7e1cb4a 2019-05-24T00:15:11 another proposal: use _ul and _l for the long macros
Daniel Mendler b58c9966 2019-05-23T23:39:47 use int32 and uint32 instead of sint and uint
Daniel Mendler d7959854 2019-05-23T11:12:30 improve comment in tommath.h, extend .gitignore
Daniel Mendler 3289c959 2019-05-20T10:41:06 introduce various mp_set_sint/mp_set_uint functions with precise types
Daniel Mendler 1af0de1f 2019-05-20T19:11:25 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)
Daniel Mendler 0dfa9da5 2019-05-19T12:53:49 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.
Daniel Mendler 0b840b78 2019-05-17T20:53:24 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.
Daniel Mendler a8239c24 2019-05-13T11:32:42 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.
Daniel Mendler 56e7a401 2019-05-13T02:46:11 deprecate mp_jacobi
Daniel Mendler 89bac3a7 2019-05-13T15:06:54 deprecate MP_RANGE
Daniel Mendler 4534056c 2019-05-13T00:22:18 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
Francois Perrad 38116079 2019-05-13T17:51:07 literal suffix
Francois Perrad 2d508723 2019-05-13T17:36:12 const parameter
Daniel Mendler 7365442a 2019-05-10T23:59:46 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
Daniel Mendler adf9605d 2019-05-09T03:28:49 add warn_unused_result, found one missing check!
Francois Perrad cc703a84 2019-05-11T12:09:59 add missing parameter name in prototype
Daniel Mendler 0669e92e 2019-05-08T20:18:53 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.
Daniel Mendler e05215a8 2019-05-09T04:06:12 deprecate old macros, deprecate mp_rand_digit
Daniel Mendler 9ddf1e58 2019-05-07T12:26:46 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
Daniel Mendler 290c28c1 2019-05-07T09:49:26 deprecate PRIME_SIZE in favor of MP_PRIME_SIZE
Daniel Mendler 44d03a6f 2019-05-07T09:45:38 deprecate LTM_PRIME_* macros in favor of MP_PRIME_*
Daniel Mendler e2ee39b5 2019-04-26T12:39:26 deprecate ltm_prime_callback
Daniel Mendler 80f5fac5 2019-04-26T12:35:39 rename LTM_NO_FILE to MP_NO_FILE
Daniel Mendler 0337d48b 2019-04-25T19:35:19 add MP_NULL_TERMINATED
Daniel Mendler 250751be 2019-05-07T09:32:59 tommath.h: do not expose stdlib.h
Daniel Mendler 818d8fb7 2019-05-03T17:39:10 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.
Daniel Mendler 90eccd57 2019-04-25T15:36:35 prefix private macros by PRIVATE_
Daniel Mendler 632601f4 2019-04-13T17:34:11 MP_WARRAY is an internal macro
Daniel Mendler e45f75fd 2019-04-13T08:46:57 deprecate DIGIT_BIT, use MP_DIGIT_BIT
Daniel Mendler a8c76138 2019-04-12T21:15:56 deprecate macros in tommath.h * move MP_DEPRECATED to tommath.h since we need it later * add MP_DEPRECATED_PRAGMA
Daniel Mendler 87292ed1 2019-04-09T12:19:40 move mp_balance_mul to tommath_private.h
czurnieden 35311aea 2019-04-03T23:50:57 added function mp_ilogb
czurnieden 27ca25cb 2019-04-06T18:55:43 added multiplcation balancing for the Toom-Cook algorithms
Daniel Mendler ff561404 2019-04-07T15:29:11 shorter headers
Daniel Mendler 70a30ae7 2019-04-07T02:29:28 remove footers
Daniel Mendler 5da4e0ac 2019-04-04T23:06:00 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.
czurnieden 769218cc 2019-04-03T18:59:09 additional functions mp_incr and mp_decr