comparison changes.txt @ 1:22d5cf7d4b1a libtommath

Renaming branch
author Matt Johnston <matt@ucc.asn.au>
date Mon, 31 May 2004 18:23:46 +0000
parents
children d29b64170cf0
comparison
equal deleted inserted replaced
-1:000000000000 1:22d5cf7d4b1a
1 April 11th, 2004
2 v0.30 -- Added "mp_toradix_n" which stores upto "n-1" least significant digits of an mp_int
3 -- Johan Lindh sent a patch so MSVC wouldn't whine about redefining malloc [in weird dll modes]
4 -- Henrik Goldman spotted a missing OPT_CAST in mp_fwrite()
5 -- Tuned tommath.h so that when MP_LOW_MEM is defined MP_PREC shall be reduced.
6 [I also allow MP_PREC to be externally defined now]
7 -- Sped up mp_cnt_lsb() by using a 4x4 table [e.g. 4x speedup]
8 -- Added mp_prime_random_ex() which is a more versatile prime generator accurate to
9 exact bit lengths (unlike the deprecated but still available mp_prime_random() which
10 is only accurate to byte lengths). See the new LTM_PRIME_* flags ;-)
11 -- Alex Polushin contributed an optimized mp_sqrt() as well as mp_get_int() and mp_is_square().
12 I've cleaned them all up to be a little more consistent [along with one bug fix] for this release.
13 -- Added mp_init_set and mp_init_set_int to initialize and set small constants with one function
14 call.
15 -- Removed /etclib directory [um LibTomPoly deprecates this].
16 -- Fixed mp_mod() so the sign of the result agrees with the sign of the modulus.
17 ++ N.B. My semester is almost up so expect updates to the textbook to be posted to the libtomcrypt.org
18 website.
19
20 Jan 25th, 2004
21 v0.29 ++ Note: "Henrik" from the v0.28 changelog refers to Henrik Goldman ;-)
22 -- Added fix to mp_shrink to prevent a realloc when used == 0 [e.g. realloc zero bytes???]
23 -- Made the mp_prime_rabin_miller_trials() function internal table smaller and also
24 set the minimum number of tests to two (sounds a bit safer).
25 -- Added a mp_exteuclid() which computes the extended euclidean algorithm.
26 -- Fixed a memory leak in s_mp_exptmod() [called when Barrett reduction is to be used] which would arise
27 if a multiplication or subsequent reduction failed [would not free the temp result].
28 -- Made an API change to mp_radix_size(). It now returns an error code and stores the required size
29 through an "int star" passed to it.
30
31 Dec 24th, 2003
32 v0.28 -- Henrik Goldman suggested I add casts to the montomgery code [stores into mu...] so compilers wouldn't
33 spew [erroneous] diagnostics... fixed.
34 -- Henrik Goldman also spotted two typos. One in mp_radix_size() and another in mp_toradix().
35 -- Added fix to mp_shrink() to avoid a memory leak.
36 -- Added mp_prime_random() which requires a callback to make truly random primes of a given nature
37 (idea from chat with Niels Ferguson at Crypto'03)
38 -- Picked up a second wind. I'm filled with Gooo. Mission Gooo!
39 -- Removed divisions from mp_reduce_is_2k()
40 -- Sped up mp_div_d() [general case] to use only one division per digit instead of two.
41 -- Added the heap macros from LTC to LTM. Now you can easily [by editing four lines of tommath.h]
42 change the name of the heap functions used in LTM [also compatible with LTC via MPI mode]
43 -- Added bn_prime_rabin_miller_trials() which gives the number of Rabin-Miller trials to achieve
44 a failure rate of less than 2^-96
45 -- fixed bug in fast_mp_invmod(). The initial testing logic was wrong. An invalid input is not when
46 "a" and "b" are even it's when "b" is even [the algo is for odd moduli only].
47 -- Started a new manual [finally]. It is incomplete and will be finished as time goes on. I had to stop
48 adding full demos around half way in chapter three so I could at least get a good portion of the
49 manual done. If you really need help using the library you can always email me!
50 -- My Textbook is now included as part of the package [all Public Domain]
51
52 Sept 19th, 2003
53 v0.27 -- Removed changes.txt~ which was made by accident since "kate" decided it was
54 a good time to re-enable backups... [kde is fun!]
55 -- In mp_grow() "a->dp" is not overwritten by realloc call [re: memory leak]
56 Now if mp_grow() fails the mp_int is still valid and can be cleared via
57 mp_clear() to reclaim the memory.
58 -- Henrik Goldman found a buffer overflow bug in mp_add_d(). Fixed.
59 -- Cleaned up mp_mul_d() to be much easier to read and follow.
60
61 Aug 29th, 2003
62 v0.26 -- Fixed typo that caused warning with GCC 3.2
63 -- Martin Marcel noticed a bug in mp_neg() that allowed negative zeroes.
64 Also, Martin is the fellow who noted the bugs in mp_gcd() of 0.24/0.25.
65 -- Martin Marcel noticed an optimization [and slight bug] in mp_lcm().
66 -- Added fix to mp_read_unsigned_bin to prevent a buffer overflow.
67 -- Beefed up the comments in the baseline multipliers [and montgomery]
68 -- Added "mont" demo to the makefile.msvc in etc/
69 -- Optimized sign compares in mp_cmp from 4 to 2 cases.
70
71 Aug 4th, 2003
72 v0.25 -- Fix to mp_gcd again... oops (0,-a) == (-a, 0) == a
73 -- Fix to mp_clear which didn't reset the sign [Greg Rose]
74 -- Added mp_error_to_string() to convert return codes to strings. [Greg Rose]
75 -- Optimized fast_mp_invmod() to do the test for invalid inputs [both even]
76 first so temps don't have to be initialized if it's going to fail.
77 -- Optimized mp_gcd() by removing mp_div_2d calls for when one of the inputs
78 is odd.
79 -- Tons of new comments, some indentation fixups, etc.
80 -- mp_jacobi() returns MP_VAL if the modulus is less than or equal to zero.
81 -- fixed two typos in the header of each file :-)
82 -- LibTomMath is officially Public Domain [see LICENSE]
83
84 July 15th, 2003
85 v0.24 -- Optimized mp_add_d and mp_sub_d to not allocate temporary variables
86 -- Fixed mp_gcd() so the gcd of 0,0 is 0. Allows the gcd operation to be chained
87 e.g. (0,0,a) == a [instead of 1]
88 -- Should be one of the last release for a while. Working on LibTomMath book now.
89 -- optimized the pprime demo [/etc/pprime.c] to first make a huge table of single
90 digit primes then it reads them randomly instead of randomly choosing/testing single
91 digit primes.
92
93 July 12th, 2003
94 v0.23 -- Optimized mp_prime_next_prime() to not use mp_mod [via is_divisible()] in each
95 iteration. Instead now a smaller table is kept of the residues which can be updated
96 without division.
97 -- Fixed a bug in next_prime() where an input of zero would be treated as odd and
98 have two added to it [to move to the next odd].
99 -- fixed a bug in prime_fermat() and prime_miller_rabin() which allowed the base
100 to be negative, zero or one. Normally the test is only valid if the base is
101 greater than one.
102 -- changed the next_prime() prototype to accept a new parameter "bbs_style" which
103 will find the next prime congruent to 3 mod 4. The default [bbs_style==0] will
104 make primes which are either congruent to 1 or 3 mod 4.
105 -- fixed mp_read_unsigned_bin() so that it doesn't include both code for
106 the case DIGIT_BIT < 8 and >= 8
107 -- optimized div_d() to easy out on division by 1 [or if a == 0] and use
108 logical shifts if the divisor is a power of two.
109 -- the default DIGIT_BIT type was not int for non-default builds. Fixed.
110
111 July 2nd, 2003
112 v0.22 -- Fixed up mp_invmod so the result is properly in range now [was always congruent to the inverse...]
113 -- Fixed up s_mp_exptmod and mp_exptmod_fast so the lower half of the pre-computed table isn't allocated
114 which makes the algorithm use half as much ram.
115 -- Fixed the install script not to make the book :-) [which isn't included anyways]
116 -- added mp_cnt_lsb() which counts how many of the lsbs are zero
117 -- optimized mp_gcd() to use the new mp_cnt_lsb() to replace multiple divisions by two by a single division.
118 -- applied similar optimization to mp_prime_miller_rabin().
119 -- Fixed a bug in both mp_invmod() and fast_mp_invmod() which tested for odd
120 via "mp_iseven() == 0" which is not valid [since zero is not even either].
121
122 June 19th, 2003
123 v0.21 -- Fixed bug in mp_mul_d which would not handle sign correctly [would not always forward it]
124 -- Removed the #line lines from gen.pl [was in violation of ISO C]
125
126 June 8th, 2003
127 v0.20 -- Removed the book from the package. Added the TDCAL license document.
128 -- This release is officially pure-bred TDCAL again [last officially TDCAL based release was v0.16]
129
130 June 6th, 2003
131 v0.19 -- Fixed a bug in mp_montgomery_reduce() which was introduced when I tweaked mp_rshd() in the previous release.
132 Essentially the digits were not trimmed before the compare which cause a subtraction to occur all the time.
133 -- Fixed up etc/tune.c a bit to stop testing new cutoffs after 16 failures [to find more optimal points].
134 Brute force ho!
135
136
137 May 29th, 2003
138 v0.18 -- Fixed a bug in s_mp_sqr which would handle carries properly just not very elegantly.
139 (e.g. correct result, just bad looking code)
140 -- Fixed bug in mp_sqr which still had a 512 constant instead of MP_WARRAY
141 -- Added Toom-Cook multipliers [needs tuning!]
142 -- Added efficient divide by 3 algorithm mp_div_3
143 -- Re-wrote mp_div_d to be faster than calling mp_div
144 -- Added in a donated BCC makefile and a single page LTM poster ([email protected])
145 -- Added mp_reduce_2k which reduces an input modulo n = 2**p - k for any single digit k
146 -- Made the exptmod system be aware of the 2k reduction algorithms.
147 -- Rewrote mp_dr_reduce to be smaller, simpler and easier to understand.
148
149 May 17th, 2003
150 v0.17 -- Benjamin Goldberg submitted optimized mp_add and mp_sub routines. A new gen.pl as well
151 as several smaller suggestions. Thanks!
152 -- removed call to mp_cmp in inner loop of mp_div and put mp_cmp_mag in its place :-)
153 -- Fixed bug in mp_exptmod that would cause it to fail for odd moduli when DIGIT_BIT != 28
154 -- mp_exptmod now also returns errors if the modulus is negative and will handle negative exponents
155 -- mp_prime_is_prime will now return true if the input is one of the primes in the prime table
156 -- Damian M Gryski ([email protected]) found a index out of bounds error in the
157 mp_fast_s_mp_mul_high_digs function which didn't come up before. (fixed)
158 -- Refactored the DR reduction code so there is only one function per file.
159 -- Fixed bug in the mp_mul() which would erroneously avoid the faster multiplier [comba] when it was
160 allowed. The bug would not cause the incorrect value to be produced just less efficient (fixed)
161 -- Fixed similar bug in the Montgomery reduction code.
162 -- Added tons of (mp_digit) casts so the 7/15/28/31 bit digit code will work flawlessly out of the box.
163 Also added limited support for 64-bit machines with a 60-bit digit. Both thanks to Tom Wu ([email protected])
164 -- Added new comments here and there, cleaned up some code [style stuff]
165 -- Fixed a lingering typo in mp_exptmod* that would set bitcnt to zero then one. Very silly stuff :-)
166 -- Fixed up mp_exptmod_fast so it would set "redux" to the comba Montgomery reduction if allowed. This
167 saves quite a few calls and if statements.
168 -- Added etc/mont.c a test of the Montgomery reduction [assuming all else works :-| ]
169 -- Fixed up etc/tune.c to use a wider test range [more appropriate] also added a x86 based addition which
170 uses RDTSC for high precision timing.
171 -- Updated demo/demo.c to remove MPI stuff [won't work anyways], made the tests run for 2 seconds each so its
172 not so insanely slow. Also made the output space delimited [and fixed up various errors]
173 -- Added logs directory, logs/graph.dem which will use gnuplot to make a series of PNG files
174 that go with the pre-made index.html. You have to build [via make timing] and run ltmtest first in the
175 root of the package.
176 -- Fixed a bug in mp_sub and mp_add where "-a - -a" or "-a + a" would produce -0 as the result [obviously invalid].
177 -- Fixed a bug in mp_rshd. If the count == a.used it should zero/return [instead of shifting]
178 -- Fixed a "off-by-one" bug in mp_mul2d. The initial size check on alloc would be off by one if the residue
179 shifting caused a carry.
180 -- Fixed a bug where s_mp_mul_digs() would not call the Comba based routine if allowed. This made Barrett reduction
181 slower than it had to be.
182
183 Mar 29th, 2003
184 v0.16 -- Sped up mp_div by making normalization one shift call
185 -- Sped up mp_mul_2d/mp_div_2d by aliasing pointers :-)
186 -- Cleaned up mp_gcd to use the macros for odd/even detection
187 -- Added comments here and there, mostly there but occasionally here too.
188
189 Mar 22nd, 2003
190 v0.15 -- Added series of prime testing routines to lib
191 -- Fixed up etc/tune.c
192 -- Added DR reduction algorithm
193 -- Beefed up the manual more.
194 -- Fixed up demo/demo.c so it doesn't have so many warnings and it does the full series of
195 tests
196 -- Added "pre-gen" directory which will hold a "gen.pl"'ed copy of the entire lib [done at
197 zipup time so its always the latest]
198 -- Added conditional casts for C++ users [boo!]
199
200 Mar 15th, 2003
201 v0.14 -- Tons of manual updates
202 -- cleaned up the directory
203 -- added MSVC makefiles
204 -- source changes [that I don't recall]
205 -- Fixed up the lshd/rshd code to use pointer aliasing
206 -- Fixed up the mul_2d and div_2d to not call rshd/lshd unless needed
207 -- Fixed up etc/tune.c a tad
208 -- fixed up demo/demo.c to output comma-delimited results of timing
209 also fixed up timing demo to use a finer granularity for various functions
210 -- fixed up demo/demo.c testing to pause during testing so my Duron won't catch on fire
211 [stays around 31-35C during testing :-)]
212
213 Feb 13th, 2003
214 v0.13 -- tons of minor speed-ups in low level add, sub, mul_2 and div_2 which propagate
215 to other functions like mp_invmod, mp_div, etc...
216 -- Sped up mp_exptmod_fast by using new code to find R mod m [e.g. B^n mod m]
217 -- minor fixes
218
219 Jan 17th, 2003
220 v0.12 -- re-wrote the majority of the makefile so its more portable and will
221 install via "make install" on most *nix platforms
222 -- Re-packaged all the source as seperate files. Means the library a single
223 file packagage any more. Instead of just adding "bn.c" you have to add
224 libtommath.a
225 -- Renamed "bn.h" to "tommath.h"
226 -- Changes to the manual to reflect all of this
227 -- Used GNU Indent to clean up the source
228
229 Jan 15th, 2003
230 v0.11 -- More subtle fixes
231 -- Moved to gentoo linux [hurrah!] so made *nix specific fixes to the make process
232 -- Sped up the montgomery reduction code quite a bit
233 -- fixed up demo so when building timing for the x86 it assumes ELF format now
234
235 Jan 9th, 2003
236 v0.10 -- Pekka Riikonen suggested fixes to the radix conversion code.
237 -- Added baseline montgomery and comba montgomery reductions, sped up exptmods
238 [to a point, see bn.h for MONTGOMERY_EXPT_CUTOFF]
239
240 Jan 6th, 2003
241 v0.09 -- Updated the manual to reflect recent changes. :-)
242 -- Added Jacobi function (mp_jacobi) to supplement the number theory side of the lib
243 -- Added a Mersenne prime finder demo in ./etc/mersenne.c
244
245 Jan 2nd, 2003
246 v0.08 -- Sped up the multipliers by moving the inner loop variables into a smaller scope
247 -- Corrected a bunch of small "warnings"
248 -- Added more comments
249 -- Made "mtest" be able to use /dev/random, /dev/urandom or stdin for RNG data
250 -- Corrected some bugs where error messages were potentially ignored
251 -- add etc/pprime.c program which makes numbers which are provably prime.
252
253 Jan 1st, 2003
254 v0.07 -- Removed alot of heap operations from core functions to speed them up
255 -- Added a root finding function [and mp_sqrt macro like from MPI]
256 -- Added more to manual
257
258 Dec 31st, 2002
259 v0.06 -- Sped up the s_mp_add, s_mp_sub which inturn sped up mp_invmod, mp_exptmod, etc...
260 -- Cleaned up the header a bit more
261
262 Dec 30th, 2002
263 v0.05 -- Builds with MSVC out of the box
264 -- Fixed a bug in mp_invmod w.r.t. even moduli
265 -- Made mp_toradix and mp_read_radix use char instead of unsigned char arrays
266 -- Fixed up exptmod to use fewer multiplications
267 -- Fixed up mp_init_size to use only one heap operation
268 -- Note there is a slight "off-by-one" bug in the library somewhere
269 without the padding (see the source for comment) the library
270 crashes in libtomcrypt. Anyways a reasonable workaround is to pad the
271 numbers which will always correct it since as the numbers grow the padding
272 will still be beyond the end of the number
273 -- Added more to the manual
274
275 Dec 29th, 2002
276 v0.04 -- Fixed a memory leak in mp_to_unsigned_bin
277 -- optimized invmod code
278 -- Fixed bug in mp_div
279 -- use exchange instead of copy for results
280 -- added a bit more to the manual
281
282 Dec 27th, 2002
283 v0.03 -- Sped up s_mp_mul_high_digs by not computing the carries of the lower digits
284 -- Fixed a bug where mp_set_int wouldn't zero the value first and set the used member.
285 -- fixed a bug in s_mp_mul_high_digs where the limit placed on the result digits was not calculated properly
286 -- fixed bugs in add/sub/mul/sqr_mod functions where if the modulus and dest were the same it wouldn't work
287 -- fixed a bug in mp_mod and mp_mod_d concerning negative inputs
288 -- mp_mul_d didn't preserve sign
289 -- Many many many many fixes
290 -- Works in LibTomCrypt now :-)
291 -- Added iterations to the timing demos... more accurate.
292 -- Tom needs a job.
293
294 Dec 26th, 2002
295 v0.02 -- Fixed a few "slips" in the manual. This is "LibTomMath" afterall :-)
296 -- Added mp_cmp_mag, mp_neg, mp_abs and mp_radix_size that were missing.
297 -- Sped up the fast [comba] multipliers more [yahoo!]
298
299 Dec 25th,2002
300 v0.01 -- Initial release. Gimme a break.
301 -- Todo list,
302 add details to manual [e.g. algorithms]
303 more comments in code
304 example programs