hcrypto: import libtommath v1.2.0
[metze/heimdal/wip.git] / lib / hcrypto / libtommath / changes.txt
index b0da4da4f915819a9dbd349695582a6421dc7edd..ebf7382a0837e3afa309c4fb125a7bf08a5f354c 100644 (file)
@@ -1,5 +1,105 @@
+XXX XXth, 2019
+v1.2.0
+       -- A huge refactoring of the library happened - renaming,
+          deprecating and replacing existing functions by improved API's.
+
+          All deprecated functions, macros and symbols are only marked as such
+          so this version is still API and ABI compatible to v1.x.
+
+       -- Daniel Mendler was pushing for those changes and contributing a load of patches,
+          refactorings, code reviews and whatnotelse.
+       -- Christoph Zurnieden re-worked internals of the library, improved the performance,
+          did code reviews and wrote documentation.
+       -- Francois Perrad did some refactoring and took again care of linting the sources and
+          provided all fixes.
+       -- Jan Nijtmans, Karel Miko and Joachim Breitner contributed various patches.
+
+       -- Private symbols can now be hidden for the shared library builds, disabled by default.
+       -- All API's follow a single code style, are prefixed the same etc.
+       -- Unified, safer and improved API's
+       -- Less magic numbers - return values (where appropriate) and most flags are now enums,
+          this was implemented in a backwards compatible way where return values were int.
+       -- API's with return values are now by default marked as "warn on unsused result", this
+          can be disabled if required (which will most likely hide bugs), c.f. MP_WUR in tommath.h
+       -- Provide a whole set of setters&getters for different primitive types (long, uint32_t, etc.)
+       -- All those primitive setters are now optimized.
+       -- It's possible to automatically tune the cutoff values for Karatsuba&Toom-Cook
+       -- The custom allocators which were formerly known as XMALLOC(), XFREE() etc. are now available
+          as MP_MALLOC(), MP_REALLOC(), MP_CALLOC() and MP_FREE(). MP_REALLOC() and MP_FREE() now also
+          provide the allocated size to ease the usage of simple allocators without tracking.
+       -- Building is now also possible with MSVC 2015, 2017 and 2019 (use makefile.msvc)
+       -- Added mp_decr() and mp_incr()
+       -- Added mp_log_u32()
+       -- Improved prime-checking
+       -- Improved Toom-Cook multiplication
+       -- Removed the LTM book (`make docs` now builds the user manual)
+
+
+Jan 28th, 2019
+v1.1.0
+       -- Christoph Zurnieden contributed FIPS 186.4 compliant
+          prime-checking (PR #113), several other fixes and a load of documentation
+       -- Daniel Mendler provided two's-complement functions (PR #124)
+          and mp_{set,get}_double() (PR #123)
+       -- Francois Perrad took care of linting the sources, provided all fixes and
+          a astylerc to auto-format the sources.
+       -- A bunch of patches by Kevin B Kenny have been back-ported from TCL
+       -- Jan Nijtmans provided the patches to `const`ify all API
+          function arguments (also from TCL)
+       -- mp_rand() has now several native random provider implementations
+          and doesn't rely on `rand()` anymore
+       -- Karel Miko provided fixes when building for MS Windows
+          and re-worked the makefile generating process
+       -- The entire environment and build logic has been extended and improved
+          regarding auto-detection of platforms, libtool and a lot more
+       -- Prevent some potential BOF cases
+       -- Improved/fixed mp_lshd() and mp_invmod()
+       -- A load more bugs were fixed by various contributors
+
+
+Aug 29th, 2017
+v1.0.1
+       -- Dmitry Kovalenko provided fixes to mp_add_d() and mp_init_copy()
+       -- Matt Johnston contributed some improvements to mp_div_2d(),
+          mp_exptmod_fast(), mp_mod() and mp_mulmod()
+       -- Julien Nabet provided a fix to the error handling in mp_init_multi()
+       -- Ben Gardner provided a fix regarding usage of reserved keywords
+       -- Fixed mp_rand() to fill the correct number of bits
+       -- Fixed mp_invmod()
+       -- Use the same 64-bit detection code as in libtomcrypt
+       -- Correct usage of DESTDIR, PREFIX, etc. when installing the library
+       -- Francois Perrad updated all the perl scripts to an actual perl version
+
+
+Feb 5th, 2016
+v1.0
+       -- Bump to 1.0
+       -- Dirkjan Bussink provided a faster version of mp_expt_d()
+       -- Moritz Lenz contributed a fix to mp_mod()
+          and provided mp_get_long() and mp_set_long()
+       -- Fixed bugs in mp_read_radix(), mp_radix_size
+          Thanks to shameister, Gerhard R,
+       -- Christopher Brown provided mp_export() and mp_import()
+       -- Improvements in the code of mp_init_copy()
+          Thanks to ramkumarkoppu,
+       -- lomereiter provided mp_balance_mul()
+       -- Alexander Boström from the heimdal project contributed patches to
+          mp_prime_next_prime() and mp_invmod() and added a mp_isneg() macro
+       -- Fix build issues for Linux x32 ABI
+       -- Added mp_get_long_long() and mp_set_long_long()
+       -- Carlin provided a patch to use arc4random() instead of rand()
+          on platforms where it is supported
+       -- Karel Miko provided mp_sqrtmod_prime()
+
+
+July 23rd, 2010
+v0.42.0
+       -- Fix for mp_prime_next_prime() bug when checking generated prime
+       -- allow mp_shrink to shrink initialized, but empty MPI's
+       -- Added project and solution files for Visual Studio 2005 and Visual Studio 2008.
+
 March 10th, 2007
-v0.41  -- Wolfgang Ehrhardt suggested a quick fix to mp_div_d() which makes the detection of powers of two quicker. 
+v0.41  -- Wolfgang Ehrhardt suggested a quick fix to mp_div_d() which makes the detection of powers of two quicker.
        -- [CRI] Added libtommath.dsp for Visual C++ users.
 
 December 24th, 2006
@@ -16,11 +116,11 @@ v0.39  -- Jim Wigginton pointed out my Montgomery examples in figures 6.4 and 6.
 Jan 26th, 2006
 v0.38  -- broken makefile.shared fixed
        -- removed some carry stores that were not required [updated text]
-       
+
 November 18th, 2005
 v0.37  -- [Don Porter] reported on a TCL list [HEY SEND ME BUGREPORTS ALREADY!!!] that mp_add_d() would compute -0 with some inputs.  Fixed.
        -- [rinick@gmail.com] reported the makefile.bcc was messed up.  Fixed.
-       -- [Kevin Kenny] reported some issues with mp_toradix_n().  Now it doesn't require a min of 3 chars of output.  
+       -- [Kevin Kenny] reported some issues with mp_toradix_n().  Now it doesn't require a min of 3 chars of output.
        -- Made the make command renamable.  Wee
 
 August 1st, 2005
@@ -30,8 +130,8 @@ v0.36  -- LTM_PRIME_2MSB_ON was fixed and the "OFF" flag was removed.
        -- Ported LTC patch to fix the prime_random_ex() function to get the bitsize correct [and the maskOR flags]
        -- Kevin Kenny pointed out a stray //
        -- David Hulton pointed out a typo in the textbook [mp_montgomery_setup() pseudo-code]
-       -- Neal Hamilton (Elliptic Semiconductor) pointed out that my Karatsuba notation was backwards and that I could use 
-          unsigned operations in the routine.  
+       -- Neal Hamilton (Elliptic Semiconductor) pointed out that my Karatsuba notation was backwards and that I could use
+          unsigned operations in the routine.
        -- Paul Schmidt pointed out a linking error in mp_exptmod() when BN_S_MP_EXPTMOD_C is undefined (and another for read_radix)
        -- Updated makefiles to be way more flexible
 
@@ -42,7 +142,7 @@ v0.35  -- Stupid XOR function missing line again... oops.
        -- [Wolfgang Ehrhardt] Suggested a fix for mp_reduce() which avoided underruns.  ;-)
        -- mp_rand() would emit one too many digits and it was possible to get a 0 out of it ... oops
        -- Added montgomery to the testing to make sure it handles 1..10 digit moduli correctly
-       -- Fixed bug in comba that would lead to possible erroneous outputs when "pa < digs" 
+       -- Fixed bug in comba that would lead to possible erroneous outputs when "pa < digs"
        -- Fixed bug in mp_toradix_size for "0" [Kevin Kenny]
        -- Updated chapters 1-5 of the textbook ;-) It now talks about the new comba code!
 
@@ -53,7 +153,7 @@ v0.34  -- Fixed two more small errors in mp_prime_random_ex()
        -- Added "large" diminished radix support.  Speeds up things like DSA where the moduli is of the form 2^k - P for some P < 2^(k/2) or so
           Actually is faster than Montgomery on my AMD64 (and probably much faster on a P4)
        -- Updated the manual a bit
-       -- Ok so I haven't done the textbook work yet... My current freelance gig has landed me in France till the 
+       -- Ok so I haven't done the textbook work yet... My current freelance gig has landed me in France till the
           end of Feb/05.  Once I get back I'll have tons of free time and I plan to go to town on the book.
           As of this release the API will freeze.  At least until the book catches up with all the changes.  I welcome
           bug reports but new algorithms will have to wait.
@@ -70,7 +170,7 @@ v0.33  -- Fixed "small" variant for mp_div() which would munge with negative div
 October 29th, 2004
 v0.32  -- Added "makefile.shared" for shared object support
        -- Added more to the build options/configs in the manual
-       -- Started the Depends framework, wrote dep.pl to scan deps and 
+       -- Started the Depends framework, wrote dep.pl to scan deps and
           produce "callgraph.txt" ;-)
        -- Wrote SC_RSA_1 which will enable close to the minimum required to perform
           RSA on 32-bit [or 64-bit] platforms with LibTomCrypt
@@ -78,7 +178,7 @@ v0.32  -- Added "makefile.shared" for shared object support
           you want to use as your mp_div() at build time.  Saves roughly 8KB or so.
        -- Renamed a few files and changed some comments to make depends system work better.
           (No changes to function names)
-       -- Merged in new Combas that perform 2 reads per inner loop instead of the older 
+       -- Merged in new Combas that perform 2 reads per inner loop instead of the older
           3reads/2writes per inner loop of the old code.  Really though if you want speed
           learn to use TomsFastMath ;-)
 
@@ -107,8 +207,8 @@ v0.30  -- Added "mp_toradix_n" which stores upto "n-1" least significant digits
           call.
        -- Removed /etclib directory [um LibTomPoly deprecates this].
        -- Fixed mp_mod() so the sign of the result agrees with the sign of the modulus.
-       ++ N.B.  My semester is almost up so expect updates to the textbook to be posted to the libtomcrypt.org 
-          website.  
+       ++ N.B.  My semester is almost up so expect updates to the textbook to be posted to the libtomcrypt.org
+          website.
 
 Jan 25th, 2004
 v0.29  ++ Note: "Henrik" from the v0.28 changelog refers to Henrik Goldman ;-)