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
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
The makefile.include fragment included by all of the project
makefiles unconditionally sets $(CC), $(LD), $(AR) and $(RANLIB)
to $(PREFIX){gcc,ld,ar,ranlib}. Their intent was to provide a
facility for cross-compiling the code, but the use of $(PREFIX)
for this purpose was unfortunate.
This change adds a patch to set $(PREFIX) to the empty string in
the makefiles, which should fix the problem with the smallest
set of changes.
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()
pkgsrc changes:
+ Add license
+ Update master site
Changes since last pkgsrc version (0.39):
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.
-- [CRI] Added libtommath.dsp for Visual C++ users.
December 24th, 2006
v0.40 -- Updated makefile to properly support LIBNAME
-- Fixed bug in fast_s_mp_mul_high_digs() which overflowed (line 83), thanks Valgrind!
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
April 4th, 2006
v0.39 -- Jim Wigginton pointed out my Montgomery examples in figures 6.4 and 6.6 were off by one, k should be 9 not 8
-- Bruce Guenter suggested I use --tag=CC for libtool builds where the compiler may think it's C++.
-- "mm" from sci.crypt pointed out that my mp_gcd was sub-optimal (I also updated and corrected the book)
-- updated some of the @@ tags in tommath.src to reflect source changes.
-- updated email and url info in all source files
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.
-- Made the make command renamable. Wee
August 1st, 2005
v0.36 -- LTM_PRIME_2MSB_ON was fixed and the "OFF" flag was removed.
-- [Peter LaDow] found a typo in the XREALLOC macro
-- [Peter LaDow] pointed out that mp_read_(un)signed_bin should have "const" on the input
-- 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.
-- 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
March 12th, 2005
v0.35 -- Stupid XOR function missing line again... oops.
-- Fixed bug in invmod not handling negative inputs correctly [Wolfgang Ehrhardt]
-- Made exteuclid always give positive u3 output...[ Wolfgang Ehrhardt ]
-- [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 mp_toradix_size for "0" [Kevin Kenny]
-- Updated chapters 1-5 of the textbook ;-) It now talks about the new comba code!
February 12th, 2005
v0.34 -- Fixed two more small errors in mp_prime_random_ex()
-- Fixed overflow in mp_mul_d() [Kevin Kenny]
-- Added mp_to_(un)signed_bin_n() functions which do bounds checking for ya [and report the size]
-- 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
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.
December 23rd, 2004
v0.33 -- Fixed "small" variant for mp_div() which would munge with negative dividends...
-- Fixed bug in mp_prime_random_ex() which would set the most significant byte to zero when
no special flags were set
-- Fixed overflow [minor] bug in fast_s_mp_sqr()
-- Made the makefiles easier to configure the group/user that ltm will install as
-- Fixed "final carry" bug in comba multipliers. (Volkan Ceylan)
-- Matt Johnston pointed out a missing semi-colon in mp_exptmod
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
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
-- Merged in the small/slower mp_div replacement. You can now toggle which
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
3reads/2writes per inner loop of the old code. Really though if you want speed
learn to use TomsFastMath ;-)
August 9th, 2004
v0.31 -- "profiled" builds now :-) new timings for Intel Northwoods
-- Added "pretty" build target
-- Update mp_init() to actually assign 0's instead of relying on calloc()
-- "Wolfgang Ehrhardt" <Wolfgang.Ehrhardt@munich.netsurf.de> found a bug in mp_mul() where if
you multiply a negative by zero you get negative zero as the result. Oops.
-- J Harper from PeerSec let me toy with his AMD64 and I got 60-bit digits working properly
[this also means that I fixed a bug where if sizeof(int) < sizeof(mp_digit) it would bug]
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
LibTomMath provides highly optimized and portable routines for a
vast majority of integer based number theoretic applications
(including public key cryptography). LibTomMath is not a cryptographic
toolkit itself but it can be used to write one [Used in LibTomCrypt
for RSA, DH and ECC public key routines].