Mercurial > dropbear
annotate changes @ 195:19e5d79b7190 libtomcrypt
Cleanup of import of LTC 1.02, still problematic for Dropbear
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Mon, 09 May 2005 09:33:00 +0000 |
parents | 1c15b283127b |
children | 39d5d58461d6 |
rev | line source |
---|---|
191
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
1 April 19th, 2005 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
2 v1.02 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
3 -- Added LTC_TEST support to gcm_test() |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
4 -- "pt/ct" can now be NULL in gcm_process() if you are processing zero bytes |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
5 -- Optimized GCM by removing the "double copy" handling of the plaintext/aad |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
6 -- Richard Outerbridge pointed out that x86_prof won't build on MACOS and that the manual |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
7 erroneously refers to "mycrypt" all over the place. Fixed. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
8 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
9 April 17th, 2005 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
10 v1.01 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
11 ** Secure Science Corporation has supported this release cycle by sponsoring the development time taken. Their |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
12 continuing support of this project has helped me maintain a steady pace in order to keep LibTomCrypt up to date, |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
13 stable and more efficient. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
14 ----------------------------------------------------------------------------------------------------- |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
15 -- Updated base64_decode.c so if there are more than 3 '=' signs it would stop parsing |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
16 -- Merged in latest mpi that fixed a few bugs here and there |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
17 -- Updated OAEP encoder/decoder to catch when the hash output is too large |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
18 Cleaned up PSS code too |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
19 -- Andy Bontoft fixed a bug in my demos/tests/makefile.msvc ... seems "dsa_test.c" isn't an object |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
20 afterall. Thanks. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
21 -- Made invalid ECC key sizes (configuration) not hard fault the program (it returns an error code now) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
22 -- SAFER has been re-enabled after I was pointed to http://www.ciphersbyritter.com/NEWS2/95032301.HTM |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
23 [Mark Kotiaho] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
24 -- Added CCM mode to the encauth list (now has EAX, OCB and CCM, c'est un treo magnifique!) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
25 -- Added missing ASN.1 header to the RSA keys ... oops... now the rsa_export/import are FULLY compatible |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
26 with other libs like OpenSSL (comment: Test vectors would go a long way RSA...) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
27 -- Manually merged in fix to the prime_random_ex() LTM function that ensures the 2nd MSB is set properly. Now |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
28 When you say "I want a 1024/8 byte RSA key" the MSB bit of the modulus is set as expected. Note I generally |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
29 don't view this as a "huge issue" but it's just one less nit to worry about. [Bryan Klisch] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
30 -- A new CVS has been setup on my Athlon64 box... if you want developer access send me an email (and at this point the email would have to be awesome). |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
31 -- Updated API for ECB and CBC shell code. Now can process N whole blocks in one call (like $DEITY intended) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
32 -- Introduced a new "hardware accel" framework that can be used to speed up cipher ECB, CBC and CTR mode |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
33 calls. Later on dependent code (e.g. OMAC, CCM) will be re-written to use the generic cbc/ctr functions. But now |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
34 if you [say] call ctr_encrypt() with a cipher descriptor that has hardware CTR it will automatically |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
35 be used (e.g. no code rewrites) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
36 -- Now ships with 20% more love. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
37 -- x86_prof now uses ECB shell code (hint: accelerators) and outputs cycles per BLOCK not byte. This will make it a bit |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
38 easier to compare hardware vs. software cipher implementations. It also emits timings for CBC and CTR modes |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
39 -- [Peter LaDow] fixed a typo w.r.t. XREALLOC macro (spelling counts kids!) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
40 -- Fixed bug with __x86_64__ where ROL64/ROR64 with LTC_NO_ROLC would be the 32-bit versions instead... |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
41 -- Shipping with preliminary GCM code (disabled). It's buggy (stack overflow hidden somewhere). If anyone can spot it let me know. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
42 -- Added Pelican MAC [it's an AES based fast MAC] to the list of supported MACs |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
43 -- Added LTC_FAST [and you can disable by defining LTC_NO_FAST] so that CBC and CTR mode XOR whole words [e.g. 32 or 64 bits] at a time |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
44 instead of one byte. On my AMD64 this reduced the overhead for AES-128-CBC from 4.56 cycles/byte to around 1 cycle/byte. This requires |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
45 that you either allow unaligned read/writes [e.g. x86_32/x86_64] or align all your data. It won't go out of it's way to ensure |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
46 aligned access. Only enabled for x86_* platforms by default since they allow unaligned read/writes. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
47 -- Added LTC_FAST support to PMAC (drops the cycle/byte by about 9 cycles on my AMD64) [note: I later rewrote this prior to release] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
48 -- Updated "profiled" target to work with the new directory layout |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
49 -- Added [demo only] optimized RC5-CTR code to x86_prof demo to show off how to make an accelerator |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
50 [This has been removed prior to release... It may re-appear later] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
51 -- Added CCM acelerator callbacks to the list [now supports ECB, CTR, CBC and now CCM]. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
52 -- Added chapter to manual about accelerators (you know you want it) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
53 -- Added "bswap" optimizations to x86 LOAD/STORE with big endian. Can be disabled by defining LTC_NO_BSWAP |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
54 -- LTC_NO_ASM is now the official "disable all non-portable stuff" macro. When defined it will make the code endian-neutral, |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
55 disable any form of ASM and disable LTC_FAST load/stores. Essentially build the library with this defined if you're having |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
56 trouble building the library (old GCCs for instance dislike the ROLc macro) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
57 -- Added tomcrypt_mac.h and moved MAC/encMAC functions from tomcrypt_hash.h into it |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
58 -- Added "done" function to ciphers and the five chaining modes [and things like omac/pmac/etc] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
59 -- Changed install group to "wheel" from "root". |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
60 -- Replaced // comments with /**/ so it will build on older UNIX-like platforms |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
61 -- x86_prof builds and runs with IntelCC fine now |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
62 -- Added "stest" build to intel CC to test static linked from within the dir (so you don't have to install to test) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
63 -- Moved testing/benchmark into testprof directory and build it as part of the build. Now you can link against libtomcrypt_prof.a to get |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
64 testing info (hint: hardware developers ;-) ) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
65 -- Added CCM to tv_gen |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
66 -- Added demos to MSVC makefile |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
67 -- Removed -funroll-all-loops from GCC makefile and replaced with -funroll-loops which is a bit more sane (P4 ain't got much cache for the IDATA) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
68 -- Fixed GCM prior to release and re-enabled it. It has not been optimized but it does conform when compiled with optimizations. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
69 -- I've since optimized GCM and CCM. They're close in speed but GCM is more flexible imho (though EAX is more flexible than both) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
70 -- For kicks I optimized the ECC code to use projective points. Gets between 3.21x (Prescott P4) to 4.53x (AMD64) times faster than before at 160-bit keys and the |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
71 speedup grows as the keysize grows. Basically removing most practical reasons to "not use the ECC code". Enjoy. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
72 -- Added LTC_FAST support to OMAC/PMAC and doubled it's speed on my amd64 [faster on the P4 too I guess] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
73 -- Added GCM to tv_gen |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
74 -- Removed "makefile.cygwin_dll" as it's not really used by anyone and not worth the effort (hell I hardly maintain the MSVC makefiles ...) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
75 -- Updated a few files in the "misc" directory to have correct @file comments for doxygen |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
76 -- Removed "profile" target since it was slower anyways (go figure...) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
77 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
78 December 31st, 2004 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
79 v1.00 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
80 -- Added "r,s == 0" check to dsa_verify_hash() |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
81 -- Added "multi block" helpers for hash, hmac, pmac and omac routines so you can process multiple non-adjacent |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
82 blocks of data with one call (added demos/multi.c to make sure they work) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
83 -- Note these are not documented but they do have doxygen comments inside them |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
84 -- Also I don't use them in other functions (like pkcs_5_2()) because I didn't have the time. Job for the new LTC maintainer ;-) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
85 -- Added tweaked Anubis test vectors and made it default (undefined ANUBIS_TWEAK to get original Anubis) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
86 -- Merged in fix for mp_prime_random_ex() to deal with MSB and LSB "bugs" |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
87 -- Removed tim_exptmod() completely, updated several RSA functions (notably v15 and the decrypt/verify) so they |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
88 don't require a prng now |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
89 -- This release brought to you by the fine tunes of Macy Gray. We miss you. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
90 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
91 December 23rd, 2004 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
92 v1.00rc1 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
93 -- Renamed "mycrypt_*" to "tomcrypt_*" to be more specific and professional |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
94 Now just include "tomcrypt.h" instead of "mycrypt.h" to get LTC ;-) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
95 -- Cleaned up makefiles to ensure all headers are correctly installed |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
96 -- Added "rotate by constant" macros for portable, x86-32 and x86-64 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
97 You can disable this new code with LTC_NO_ROLC which is useful for older GCCs |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
98 -- Cleaned up detection of x86-64 so it works for ROL/ROR macros |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
99 -- Fixed rsa_import() so that it would detect multi-prime RSA keys and error appropriately |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
100 -- Sorted the source files by category and updated the makefiles appropriately |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
101 -- Added LTC_DER define so you can trim out DER code if not required |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
102 -- Fixed up RSA's decrypt functions changing "res" to "stat" to be more in sync |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
103 with the signature variables nomenclature. (no code change just renamed the arguments) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
104 -- Removed all labels starting with __ and replaced with LBL_ to avoid namespace conflicts (Randy Howard) |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
105 -- Merged in LTM fix to mp_prime_random_ex() which zap'ed the most significant byte if the bit size |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
106 requested was a multiple of eight. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
107 -- Made RSA_TIMING off by default as it's not terribly useful [and likely to be deprecated] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
108 -- Renamed SMALL_CODE, CLEAN_STACK and NO_FILE to have a LTC_ prefix to avoid namespace collisions |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
109 with other programs. e.g. SMALL_CODE => LTC_SMALL_CODE |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
110 -- Zed Shaw pointed out that on certain systems installing libs as "root" isn't possible as the super-user |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
111 is not root. Now the makefiles allow this to be changed easily. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
112 -- Renamed "struct _*_descriptor" to "struct ltc_*_descriptor" to avoid using a leading _ |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
113 Also renamed _ARGCHK to LTC_ARGCHK |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
114 -- Zed Shaw pointed out that I still defined the prng structs in tomcrypt_prng.h even if they |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
115 weren't defined. This made undef'ing FORTUNA break the build. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
116 -- Added LTC_NO_ASM to disable inline asm macros [ROL/ROR/etc] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
117 -- Changed RSA decrypt functions to change the output length variable name from "keylen" to "outlen" to make |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
118 it more consistent. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
119 -- Added the 64-bit Khazad block cipher [NESSIE] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
120 -- Added the 128-bit Anubis block cipher [with key support for 128...320 bit keys] [NESSIE] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
121 -- Changes to several MAC functions to rename input arguments to more sensible names |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
122 -- Removed FAST_PK support from dh_sys.c |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
123 -- Declared deskey() from des.c as static instead of a global |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
124 -- Added pretty much all practical GCC warning tests to the GCC [related] makefiles. These additional |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
125 warnings can easily be disabled for those with older copies of GCC [or even non GNU cc's] |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
126 -- Added doxygen @ tags to the code... phew that was a hell of a lot of [repetitive] work |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
127 -- Also added pre-configured Doxygen script. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
128 -- Cleaned up quite a few functions [ciphers, pk, etc] to make the parameters naming style consistent |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
129 E.g. ciphers keys are called "skey" consistently now. The input to PK encryption is called "in", etc. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
130 These changes require no code changes on the behalf of developers fortunately |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
131 -- Started a SAFER+ optimizer [does encrypt only] which shaves a good 30 or so cycles/byte on my AMD64 |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
132 at an expense of huge code. It's in notes/etc/saferp_optimizer.c |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
133 -- DSA sign/verify now uses DER encoded output/inputs and no LTC style headers. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
134 -- Matt Johnston found a missing semi-colon in mp_exptmod(). Fix has been merged in. |
1c15b283127b
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
Matt Johnston <matt@ucc.asn.au>
parents:
143
diff
changeset
|
135 |
143 | 136 October 29th, 2004 |
137 v0.99 -- Merged in the latest version of LTM which includes all of the recent bug fixes | |
138 -- Deprecated LTMSSE and removed it (to be replaced with TFM later on) | |
139 -- Stefan Arentz pointed out that mp_s_rmap should be extern | |
140 -- Kristian Gj�steen pointed out that there are typos in the | |
141 "test" makefile and minor issues in Yarrow and Sober [just cosmetics really] | |
142 -- Matthew P. Cashdollar pointed out that "export" is a C++ keyword | |
143 so changed the PRNG api to use "pexport" and "pimport" | |
144 -- Updated "hashsum" demo so it builds ;-) | |
145 -- Added automatic support for x86-64 (will configure for 64-bit little endian automagically) | |
146 -- Zhi Chen pointed out a bug in rsa_exptmod which would leak memory on error. | |
147 -- Made hash functions "init" return an int. slight change to API ;-( | |
148 -- Added "CHC" mode which turns any cipher into a hash the other LTC functions can use | |
149 -- Added CHC mode stuff to demos such as tv_gen and hashsum | |
150 -- Added "makefile.shared" which builds and installs shared/static object copies | |
151 of the library. | |
152 -- Added DER for bignum support | |
153 -- RSA is now fully joy. rsa_export/rsa_import use PKCS #1 encodings and should be | |
154 compatible with other crypto libs that use the format. | |
155 -- Added support for x86-64 for the ROL/ROR macros | |
156 -- Changed the DLL and SO makefiles to optimize for speed, commented SMALL_CODE in | |
157 mycrypt_custom.h and added -DSMALL_CODE to the default makefile | |
158 -- Updated primality testing code so it does a minimum of 5 tests [of Miller-Rabin] | |
159 (AFAIK not a security fix, just warm fuzzies) | |
160 -- Minor updates to the OMAC code (additional __ARGCHK and removed printf from omac_test... oops!) | |
161 -- Update build and configuration info which was really really really out of date. (Chapter 14) | |
162 ++ Minor update, switch RSA to use the PKCS style CRT | |
163 | |
164 August 6th, 2004 | |
165 v0.98 -- Update to hmac_init to free all allocated memory on error | |
166 -- Update to PRNG API to fix import/export functions of Fortuna and Yarrow | |
167 -- Added test functions to PRNG api, RC4 now conforms ;-) [was a minor issue] | |
168 -- Added the SOBER-128 PRNG based off of code donated by Greg Rose. | |
169 -- Added Tech Note #4 [notes/tech0004.txt] | |
170 -- Changed RC4 back [due to request]. It will now XOR the output so you can use it like | |
171 a stream cipher easily. | |
172 -- Update Fortuna's export() to emit a hash of each pool. This means that the accumulated | |
173 entropy that was spread over all the pools isn't entirely lost when you export/import. | |
174 -- Zhi Chen suggested a comment for rsa_encrypt_key() to let users know [easily] that it was | |
175 PKCS #1 v2.0 padding. (updated other rsa_* functions) | |
176 -- Cleaned up Noekeon to remove unrolling [wasn't required, was messy and actually slower with GCC/ICC] | |
177 -- Updated RC4 so that when you feed it >256 bytes of entropy it quietly ignores additional | |
178 bytes. Also removed the % from the key setup to speed it up a bit. | |
179 -- Added cipher/hash/prng tests to x86_prof to help catch bugs while testing | |
180 -- Made the PRNG "done" return int, fixed sprng_done to not require prng* to be non-null | |
181 -- Spruced up mycrypt_custom.h to trap more errors and also help prevent LTMSSE from being defined | |
182 on non-i386 platforms by accident. | |
183 -- Added RSA/ECC/DH speed tests to x86_prof and cleaned it up to build with zero warnings | |
184 -- Changed Fortuna to count only entropy [not the 2 byte header] added to pool[0] into the | |
185 reseed mechanism. | |
186 -- Added "export_size" member to prng_descriptor tables so you can know in advance the size of | |
187 the exported state for any given PRNG. | |
188 -- Ported over patch on LTM 0.30 [not ready to release LTM 0.31] that fixes bug in mp_mul()/mp_div() | |
189 that used to result in negative zeroes when you multiplied zero by a negative integer. | |
190 (patch due to "Wolfgang Ehrhardt" <[email protected]>) | |
191 -- Fixed rsa_*decrypt_key() and rsa_*verify_hash() to default to invalid "stat" or "res". This way | |
192 if any of the higher level functions fail [before you get to the padding] the result will be in | |
193 a known state]. Applied to both v2 and v1.5 padding helpers. | |
194 -- Added MACs to x86_prof | |
195 -- Fixed up "warnings" in x86_prof and tv_gen | |
196 -- Added a "profiled" target back [for GCC 3.4 and ICC v8]. Doesn't seem to help but might be worth | |
197 tinkering with. | |
198 -- Beefed up load/store test in demos/test | |
199 | |
200 ++ New note, in order to use the optimized LOAD/STORE macros your platform | |
201 must support unaligned 32/64 bit load/stores. The x86s support this | |
202 but some [ARM for instance] do not. If your platform cannot perform | |
203 unaligned operations you must use the endian neutral code which is safe for | |
204 any sort of platform. | |
205 | |
206 July 23rd, 2004 | |
207 v0.97b -- Added PKCS #1 v1.5 RSA encrypt/sign helpers (like rsa_sign_hash, etc...) | |
208 -- Added missing prng check to rsa_decrypt_key() [not critical as I don't use | |
209 descriptors directly in that function] | |
210 -- Merged in LTM-SSE, define LTMSSE before you build and you will get SSE2 optimized math ;-) | |
211 (roughly 3x faster on a P4 Northwood). By default it will compile as ISO C portable | |
212 code (when LTMSSE is undefined). | |
213 -- Fixed bug in ltc_tommath.h where I had the kara/toom cutoffs not marked as ``extern'' | |
214 Thanks to "Stefan Arentz" <stefan at organicnetwork.net> | |
215 -- Steven Dake <[email protected]> and Richard Amacker <[email protected]> submitted patches to | |
216 fix pkcs_5_2(). It now matches the output of another crypto library. Whoops... hehehe | |
217 -- Updated PRNG api. Added Fortuna PRNG to the list of supported PRNGs | |
218 -- Fixed up the descriptor tables since globals are automatically zero'ed on startup. | |
219 -- Changed RC4 to store it's output. If you want to encrypt with RC4 | |
220 you'll have to do the XOR yourself. | |
221 -- Fixed buffer overflows/overruns in the HMAC code. | |
222 | |
223 ++ API change for the PRNGs there now is a done() function per PRNG. You | |
224 should call it when you are done with a prng state. So far it's | |
225 not absolutely required (won't cause problems) but is a good idea to | |
226 start. | |
227 | |
228 | |
229 June 23rd, 2004 | |
230 v0.97a ++ Fixed several potentially crippling bugs... [read on] | |
231 -- Fixed bug in OAEP decoder that would incorrectly report | |
232 buffer overflows. [Zhi Chen] | |
233 -- Fixed headers which had various C++ missing [extern "C"]'s | |
234 -- Added "extern" to sha384_desc descriptor which I removed by mistake | |
235 -- Fixed bugs in ENDIAN_BIG macros using the wrong byte order [Matt Johnston] | |
236 -- Updated tiger.c and des.c to not shadow "round" which is intrinsic on | |
237 some C compilers. | |
238 -- Updated demos/test/rsa_test.c to test the RSA functionality better | |
239 ++ This update has been tested with GCC [v3.3.3], ICC [v8] and MSVC [v6+SP6] | |
240 all on a x86 P4 [GCC/ICC tested in Gentoo Linux, MSVC in WinXP] | |
241 ++ Outcome: The bug Zhi Chen pointed out has been fixed. So have the bugs | |
242 that Matt Johnston found. | |
243 | |
244 June 19th, 2004 | |
245 v0.97 -- Removed spurious unused files [arrg!] | |
246 -- Patched buffer overflow in tim_exptmod() | |
247 -- Fixed buffer overrun bug in pkcs_1_v15_es_decode() | |
248 -- Reduced stack usage in PKCS #1 v2.0 padding functions (by several KBs) | |
249 -- Removed useless extern's that were an artifact from the project start... ;-) | |
250 -- Replaced memcpy/memset with XMEMCPY and XMEMSET for greater flexibility | |
251 -- fixed bugs in hmac_done()/hmac_init()/[various others()] where I didn't trap errors | |
252 -- Reduced stack usage in OMAC/PMAC/HMAC/EAX/OCB/PKCS#5 by mallocing any significant sized | |
253 arrays (e.g. > 100 bytes or so). Only in non-critical functions (e.g. eax_init()) | |
254 -- "Zhi Chen" <[email protected]> pointed out that rsa_decrypt_key() requires | |
255 an incorrect output size (too large). Fixed. | |
256 -- Added a "pretty" target to the GCC makefile. Requires PERL. It is NEAT! | |
257 -- Minor updates to ch1 of the manual. | |
258 -- Cleaned up the indentation and added comments to rsa_make_key(), rsa_exptmod() and | |
259 rsa_verify_hash() | |
260 -- Updated makefile.icc so the "install" target would work ;-) | |
261 -- Removed demos/test.c [deprecated from demos/test/test.c] | |
262 -- Changed MAXBLOCKSIZE from 128 to 64 to reflect the true size... | |
263 | |
15 | 264 May 30th, 2004 |
265 v0.96 -- Removed GF and Keyring code | |
266 -- Extended OAEP decoder to distinguish better [and use a more uniform API] | |
267 -- Changed PSS/OAEP API slightly to be more consistent with other PK functions (order of arguments) | |
268 -- rsa_exptmod() now pads with leading zeroes as per I2OSP. | |
269 -- added error checking to yarrow code | |
143 | 270 -- pointed out that tommath.h from this distro will overwrite tommath.h |
15 | 271 from libtommath. I changed this to ltc_tommath.h to avoid any such problems. |
272 -- Fixed bug in PSS encoder/decoder that didn't handle the MSB properly | |
273 -- refactored AES, now sports an "encrypt only" descriptor which uses half as much code space. | |
274 -- modded Yarrow to try and use refactored AES code and added WHIRLPOOL support (d'oh) ;-) | |
275 -- updated ECB, OCB and CBC decrypt functions to detect when "encrypt only" descriptor is used. | |
276 -- replaced old RSA code with new code that uses PKCS #1 v2.0 padding | |
277 -- replaced old test harness with new over-engineer'ed one in /demos/test/ | |
278 -- updated cbc/cfb/ofb/ctr code with setiv/getiv functions to change/read the IV without re-keying. | |
279 -- Added PKCS #1 v1.5 RSA encryption and signature padding routines | |
280 -- Added DER OID's to most hash descriptors (as many as I could find) | |
281 -- modded rsa_exptmod() to use timing-resilient tim_exptmod() when doing private key operations | |
282 added #define RSA_TIMING which can turn on/off this feature. | |
283 -- No more config.pl so please just read mycrypt_custom.h for build-time tweaks | |
284 -- Small update to rand_prime() | |
285 -- Updated sha1, md5 and sha256 so they are smaller when SMALL_CODE is defined. If you want speed though, | |
286 you're going to have to undefine SMALL_CODE ;-) | |
287 -- Worked over AES so that it's even smaller now [in both modes]. | |
288 | |
3 | 289 May 12th, 2004 |
290 v0.95 -- Optimized AES and WHIRLPOOL for SMALL_CODE by taking advantage of the fact | |
291 the transforms are circulant. AES dropped 5KB and WHIRLPOOL dropped 13KB | |
292 using the default build options on the x86. | |
293 -- Updated eax so the eax_done() would clear the state [like hmac,pmac,ocb] when | |
294 CLEAN_STACK has been defined. | |
295 -- added LTC_TEST support to rmd160 | |
296 -- updates to mycrypt_pk.h | |
297 -- updated rand_prime() to faciliate making RSA composites | |
298 -- DSA/RSA now makes composites of the exact size desired. | |
299 -- Refactored quite a bit of the code, fewer functions per C file | |
300 -- cleaned up the makefiles to organize the objects logically | |
301 -- added ICC makefile along with "profiled" targets for both GNU and ICC compilers | |
302 -- Marked functions for removal before v1.00 see PLAN for more information | |
303 -- GCC 3.4.0 tested and seems to work | |
304 -- Added PKCS #5 support | |
305 -- Fixed typo in comment header of .C files ;-) | |
306 -- Added PKCS #1 OAEP and PSS support. | |
307 | |
308 Feb 20th, 2004 | |
309 v0.94 -- removed unused variables from ocb.c and fixed it to match known test vectors. | |
310 -- Added PMAC support, minor changes to OMAC/EAX code [I think....] | |
311 -- Teamed up with Brian Gladman. His code verifies against my vectors and my code | |
312 verifies against his test vectors. Hazaa for co-operation! | |
313 -- Various small changes (added missing ARGCHKs and cleaned up indentation) | |
314 -- Optimization to base64, removed unused variable "c" | |
315 -- Added base64 gen to demos/tv_gen.c | |
316 -- Fix to demos/x86_prof.c to correctly identify the i386 architecture... weird... | |
317 -- Fixed up all of the PK code by adding missing error checking, removed "res" variables, | |
318 shrunk some stack variables, removed non-required stack variables and added proper | |
319 error conversion from MPI to LTC codes. I also spotted a few "off by one" error | |
320 checking which could have been used to force the code to read past the end of | |
321 the buffer (in theory, haven't checked if it would work) by a few bytes. | |
322 -- Added checks to OUTPUT_BIGNUM so the *_export() functions cannot overflow the output and I | |
323 also modded it so it stores in the output provided to the function (that is not on | |
324 the local stack) which saves memory and time. | |
325 -- Made SAFER default to disabled for now (plans are to cleanhouse write an implementation later) | |
326 -- Added the 512-bit one-way hash WHIRLPOOL which clocks in at 138 cycles per byte on my | |
327 Athlon XP [for comparison, SHA-512 clocks in at 77 cycles per byte]. This code uses the | |
328 teams new sbox design (not the original NESSIE one). | |
329 | |
330 | |
331 Jan 25th, 2004 | |
332 v0.93 -- [note: deleted v0.93 changes by accident... recreating from memory...] | |
333 -- Fix to RC2 to not deference pointer before ARGCHK | |
334 -- Fix to NOEKEON to match published test vectors as well as cleaned up the code a bit | |
335 -- Optimized Twofish [down to 28 cycles/byte on my box] and Blowfish | |
336 -- Fix to OMAC to test cipher block size first [prevents wasting any time] | |
337 -- Added more OMAC test vectors | |
338 -- Added EAX Encrypt+Authenticate support | |
339 -- Fix to DSA to check return of a few LTM functions I forgot [mp_to_unsigned_bin] | |
340 -- Added common headers to all C files | |
341 -- CTR mode supports big and little [default] endian counters now. | |
342 -- fix to find_cipher_any() so that it can handle a fragmented cipher_descriptor table. | |
343 -- added find_hash_any() akin to find_cipher_any(). | |
344 -- Added EAX code to demos/tv_gen.c Hazaa! | |
345 -- Removed SONY defines and files from codebase. | |
346 -- Added OCB support [patents be damned] and to demos/tv_gen.c | |
347 -- Merge all of the INPUT/OUTPUT BIGNUM macros (less toc) into mycrypt_pk.h | |
348 -- Made appropriate changes to the debug string in crypt.c | |
349 | |
350 Dec 24th, 2003 | |
351 v0.92 -- Updated the config.pl script so the options have more details. | |
352 -- Updated demos/tv_gen to include RIPEMD hashes | |
353 -- Updated Twofish so when TWOFISH_ALL_TABLES is defined a pre-computed RS table | |
354 is included [speedup: slight, about 4k cycles on my Athlon]. | |
355 -- Re-wrote the twofish large key generation [the four 8x32 key dependent tables]. Now about twice as fast. | |
356 With both optimizations [e.g. TWOFISH_ALL_TABLES defined] a 128-bit Twofish key can now be scheduled | |
357 in 26,000 cycles on my Athlon XP [as opposed to 49,000 before] when optimized for size. | |
358 -- config.pl has been updated so rmd128.o and rmd160.o are objects included in the build [oops] | |
359 -- Andrew Mann found a bug in rsa_exptmod() which wouldn't indicate if the wrong type of key was specified | |
360 (e.g. not PK_PRIVATE or PK_PUBLIC) | |
361 -- Fixed up demos/x86_prof so it sorts the output now :-) | |
362 -- The project is now powered by radioactive rubber pants. | |
363 -- Fixed dh_encrypt_key() so if you pass it a hash with a smaller output than the input key it | |
364 will return CRYPT_INVALID_HASH [to match what ecc_encrypt_key() will do] | |
365 -- Merge the store/encrypt key part of ecc_encrypt_key() as per dh_encrypt_key() [can you guess what I'm upto?] | |
366 -- Massive updates to the prime generation code. I use the LTM random prime functions [and provide a nice | |
367 interface between the LTC PRNG's and the LTM generic prng prototype]. I also use a variable number of tests | |
368 depending on the input size. This nicely speeds up most prime generation/testing within the library. | |
369 -- Added SHA-224 to the list of hashes. | |
370 -- Made HMAC test vectors constant and static [takes ROM space instead of RAM] | |
371 -- This release was brought to you by the letter P which stands for Patent Infringement. | |
372 -- Added generic HASH_PROCESS macro to mycrypt_hash.h which simplifies the hash "process" functions | |
373 I also optimized the compression functions of all but MD2 to not perform input copies when avoidable. | |
374 -- Removed the division from the Blowfish setup function [dropped 3k cycles on my Athlon] | |
375 -- Added stack cleaning to rijndael, cast5 so now all ciphers have CLEAN_STACK code. | |
376 -- Added Skipjack to the list of ciphers [made appropriate changes to demos/test.c, demos/tv_gen.c and | |
377 demos/x86_prof.c] | |
378 -- Added mechanical testing to cipher test vector routines. Now it encrypts 1000 times, then decrypts and | |
379 compares. Any fault (e.g. bug in code, compiler) in the routines is likely to show through. Doesn't | |
380 stress test the key gen though... | |
381 -- Matt Johnson found a bug in the blowfish.c apparently I was out of my mind and put twofish defines in there | |
382 The code now builds with any config. Thanks. | |
383 -- Added OMAC1 Message Authentication Code support to the library. | |
384 -- Re-prototyped the hash "process" and "done" to prevent buffer overflows [which don't seem easy to exploit]. | |
385 Updated HMAC code to use them too. Hazaa! | |
386 -- Fixed bug in ECC code which wouldn't do an _ARGCHK on stat in ecc_verify_hash(). | |
387 -- Fixed [temp fix] bug in all PK where the OUTPUT_BIGNUM macros would not trap errors on the to_unsigned_bin | |
388 conversion [now returns CRYPT_MEM, will fix it up better later] | |
389 -- Added DSA to the list of supported PK algorithms. | |
390 -- Fixed up various ciphers to &255 the input key bytes where required [e.g. where used to index a table] to prevent | |
391 problems on platforms where CHAR_BIT != 8 | |
392 -- Merged in LibTomMath v0.28 | |
393 -- Updated demos/x86_prof.c to use Yarrow during the key sched testing [was horribly slow on platforms with blockable | |
394 /dev/random]. | |
395 -- Added OMAC/HMAC tests to demos/tv_gen and I now store the output of this in notes/ | |
396 -- Fixed a bug in config.pl that wouldn't have TWOFISH_TABLES defined by default (too many commas on the line) | |
397 -- Fixed bug in hmac_done(). Apparently FIPS-198 [HMAC] specifies that the output can be truncated. My code | |
398 would not support that (does now just like the new OMAC code). | |
399 -- Removed "hashsize" from hmac_state as it wasn't being used. | |
400 -- Made demos/test.c stop if OMAC or HMAC tests fail (instead of just printing a failed message and keep going). | |
401 -- Updated notes/tech0003.txt to take into account the existence of Skipjack [also I fixed a few typos]. | |
402 -- Slight changes to Noekeon, with SMALL_CODE undefined it uses a fully unrolled version. Dropped +10 cycles/byte | |
403 on my Athlon (35 cycles per byte or 410.4Mbit/sec at 1795Mhz) | |
404 -- Added _ARGCHK() calls to is_prime() for the two input pointers. | |
405 | |
406 Sept 25th, 2003 | |
407 v0.91 -- HMAC fix of 0.90 was incorrect for keys larger than the block size of the hash. | |
408 -- Added error CRYPT_FILE_NOTFOUND for the file [hmac/hash] routines. | |
409 -- Added RIPEMD hashes to the hashsum demo. | |
410 -- Added hashsum demo to MSVC makefile. | |
411 -- Added RMD160 to the x86_prof demo [oops] | |
412 -- Merged in LibTomMath-0.27 with a patch to mp_shrink() that will be in LibTomMath-0.28 | |
413 Fixes another potential memory leak. | |
414 | |
415 Sept 7th, 2003 | |
416 v0.90 -- new ROL/ROR for x86 GCC | |
417 -- Jochen Katz submitted a patch to the makefile to prevent "make" from making the .a library | |
418 when not required. | |
419 == By default the KR code is not enabled [it's only a demo anyways!] | |
420 -- changed the "buf" in ecc_make_key from 4KB to 128 bytes [since the largest key is 65 bytes] | |
421 -- hmac_done() now requires you pass it the size of the destination buffer to prevent | |
422 buffer overflows. (API CHANGE) | |
423 -- hmac/hash filebased routines now return CRYPT_NOP if NO_FILE is defined. | |
424 -- I've removed the primes from dh.c and replaced them with DR safe primes suitable for the default | |
425 configuration of LibTomMath. Check out these comparisons on a 1.3Ghz Athlon XP, optimized for size, | |
426 | |
427 768-bit, 4 vs. 10 | |
428 1024-bit, 8 vs. 18 | |
429 1280-bit, 12 vs. 34 | |
430 1536-bit, 20 vs. 56 | |
431 1792-bit 28 vs. 88 | |
432 2048-bit, 40 vs. 124 | |
433 2560-bit, 71 vs. 234 | |
434 3072-bit, 113 vs. 386 | |
435 4096-bit, 283 vs. 916 | |
436 | |
437 Times are all in milliseconds for key generation. New primes times on the left. This makes the code binary | |
438 incompatible with previous releases. However, this addition is long overdue as LibTomMath has supported DR | |
439 reductions for quite some time. | |
440 -- Added RIPE-MD 128 and 160 to the list of supported hashes [10 in total]. | |
441 -- The project has been released as public domain. TDCAL no longer applies. | |
442 | |
443 July 15th, 2003 | |
444 v0.89 -- Fix a bug in bits.c which would prevent it from building with msvc | |
445 -- Merged in LibTomMath v0.24 [and I used the alloc/free macros this time!] | |
446 -- Removed the LTC version of next_prime() and replaced it with a call to the | |
447 mp_prime_next_prime() from LibTomMath | |
448 -- reverted bits.c to the 0.86 copy since the new one doesn't build in MSVC | |
449 or cygwin. | |
450 | |
451 Jul 10th, 2003 | |
452 v0.88 -- Sped up CAST5 key schedule for MSVC | |
453 -- added "ulong32" which allows people on 64-bit platforms to force the 32-bit tables in | |
454 ciphers like blowfish and AES to be 32-bits. E.g. when unsigned long is 64-bits. | |
455 -- Optimized the SAFER-SK64, SAFER-SK128, SAFER+, RC5 and RC6 key schedule [big time!] | |
456 -- Optimized SHA-1 and SHA-256 quite a bit too. | |
457 -- Fixed up the makefile to use -fomit-frame-pointer more liberally | |
458 -- Added tv_gen program which makes test vectors for ciphers/hashes | |
459 -- Merged in LibTomMath v0.22 | |
460 | |
461 Jun 19th, 2003 | |
462 v0.87 -- Many MSVC optimizations to the code base | |
463 -- Improved the AES and Twofish key schedule [faster, more constant time] | |
464 -- Tons of optimizations here and there. | |
465 | |
466 Jun 15th, 2003 | |
467 v0.86 -- Fixed up AES to workaround MSVC optimizer bug | |
468 -- Merged in fresh LTM base [based on v0.20] so there are no warnings with MSVC | |
469 -- Wrote x86_prof which will time the hashes and ciphers downto cycles per byte. | |
470 -- Fixed up demos/encrypt to remove serpent_desc from the list | |
471 -- Re-enabled MSVC optimizations w00t w00t | |
472 -- Replaced "errno" with "err" in all functions that had it so it wouldn't clash | |
473 with the global "errno" | |
474 -- Removed a set of unused variables from certain functions | |
475 -- Removed {#line 0 "..."} stuff from mpi.c to comply with ISO C :-) | |
476 | |
477 Jun 11th, 2003 | |
478 v0.85 -- Swapped in a new AES routine | |
479 -- Removed Serpent | |
480 -- Added TDCAL policy document | |
481 | |
482 Jun 1st, 2003 | |
483 v0.84 -- Removed a 4KB buffer from rsa_decrypt_key that wasn't being used no more | |
484 -- Fixed another potential buffer problem. Not an overflow but could cause the | |
485 PK import routines to read past the end of the buffer. | |
486 -- Optimized the ECC mulmod more by removing a if condition that will always be false | |
487 -- Optimized prime.c to not include a 2nd prime table, removed code from is_prime calls prime | |
488 test from LibTomMath now | |
489 -- Added LTC_TEST define which when defined will enable the test vector routines [see mycrypt_custom.h] | |
490 -- Removed ampi.o from the depends cuz it ain't no not working in *nix with it [routines are in mpi.c now]. | |
491 | |
492 | |
493 Mar 29th, 2003 | |
494 v0.83 -- Optimized the ecc_mulmod, it's faster and takes less heap/stack space | |
495 -- Fixed a free memory error in ecc_mulmod and del_point which would try to free NULL | |
496 -- Fixed two serious bugs in rsa_decrypt_key and rsa_verify_hash that would allow a trivialy | |
497 buffer overflow. | |
498 -- Fixed a bug in the hmac testing code if you don't register all the hashes it won't return | |
499 errors now. | |
500 | |
501 Mar 15th, 2003 | |
502 v0.82 -- Manual updated | |
503 -- Added MSVC makefile [back, actually its written from scratch to work with NMAKE] | |
504 -- Change to HMAC helper functions API to avoid buffer overflow [source changes] | |
505 -- the rsa_encrypt_key was supposed to reject key sizes out of bounds ... | |
506 same fix to the rsa_sign_hash | |
507 -- Added code to ensure that that chaining mode code (cfb/ofb/ctr/cbc) have valid | |
508 structures when being called. E.g. the indexes to the pad/ivs are not out of bounds | |
509 -- Cleaned up the DES code and simplified the core desfunc routine. | |
510 -- Simplified one of the boolean functions in MD4 | |
511 | |
512 Jan 16th, 2003 | |
513 v0.81 -- Merged in new makefile from Clay Culver and Mike Frysinger | |
514 -- Sped up the ECC mulmod() routine by making the word size adapt to the input. Saves a whopping 9 point | |
515 operations on 521-bit keys now (translates to about 8ms on my Athlon XP). I also now use barrett reduction | |
516 as much as possible. This sped the routine up quite a bit. | |
517 -- Fixed a huge flaw in ecc_verify_hash() where it would return CRYPT_OK on error... Now fixed. | |
518 -- Fixed up config.pl by fixing an invalid query and the file is saved in non-windows [e.g. not CR/LF] format | |
519 (fix due to Mika Bostr�m) | |
520 -- Merged in LibTomMath for kicks | |
521 -- Changed the build process so that by default "mycrypt_custom.h" is included and provided | |
522 The makefile doesn't include any build options anymore | |
523 -- Removed the PS2 and VC makefiles. | |
524 | |
525 Dec 16th, 2002 | |
526 v0.80 -- Found a change I made to the MPI that is questionable. Not quite a bug but definately not desired. Had todo | |
527 with the digit shifting. In v0.79 I simply truncated without zeroing. It didn't cause problems during my | |
528 testing but I fixed it up none the less. | |
529 -- Optimized s_mp_mul_dig() from MPI to do a minimal number of passes. | |
530 -- Fixed in rsa_exptmod() where I was getting the size of the result. Basically it accomplishes the same thing | |
531 but the fixed code is more readable. | |
532 -- Fixed slight bug in dh_sign_hash() where the random "k" value was 1 byte shorter than it should have been. I've | |
533 also made the #define FAST_PK speed up signatures as well. Essentially FAST_PK tells the DH sub-system to | |
534 limit any private exponent to 256-bits. Note that when FAST_PK is defined does not make the library | |
535 binary or source incompatible with a copy of the library with it undefined. | |
536 -- Removed the DSA code. If you want fast diffie-hellman just define FAST_PK :-) | |
537 -- Updated dh_sign_hash()/dh_verify_hash() to export "unsigned" bignums. Saves two bytes but is not binary | |
538 compatible with the previous release... sorry! I've performed the same fix to the ecc code as well. | |
539 -- Fixed up the PK code to remove all use of mp_toraw() and mp_read_raw() [get all the changes out of the way now] | |
540 -- Fixed a bug in the DH code where it missed trapping a few errors if they occurred. | |
541 -- Fixed a slight "its-not-a-bug-but-could-be-done-better" bug in the next_prime() function. Essentially it was | |
542 testing to ensure that in the loop that searches for the next candidate that the step never grows beyond | |
543 65000. Should have been testing for MP_DIGIT_MAX | |
544 -- Spruced up the config.pl script. It now makes a header file "mycrypt_custom.h" which can be included *before* | |
545 you include mycrypt.h. This allows you to add libtomcrypt to a project without completely changing your make | |
546 system around. Note that you should use the makefile it writes to at least build the library initially. | |
547 -- Used splint to check alot of the code out. Tons of minor fixes and explicit casts added. | |
548 -- Also made all the internal functions of MPI are now static to avoid poluting the namespace | |
549 -- **Notice**: There are no planned future releases for at least a month from the this release date. | |
550 | |
551 Dec 14th, 2002 | |
552 v0.79 -- Change to PK code [binary and source]. I made it so you have to pass the buffer size to the *_decrypt_key and | |
553 *_verify_hash functions. This prevents malformed packets from performing buffer overflows. I've also trimmed | |
554 the packet header size [by 4 bytes]. | |
555 -- Made the test program halt on the first error it occurs. Also made it trap more errors than before. | |
556 -- Wrote the first chapter of my new book [DRAFT!], not in this package but check my website! | |
557 -- Included a perl script "config.pl" that will make "makefile.out" according to the users needs. | |
558 -- Added shell script to look for latest release | |
559 -- Merge DH and ECC key defines from mycrypt_cfg.h into the makefiles | |
560 -- updated the makefile to use BSD friendly archiving invokations | |
561 -- Changed the DH and ECC code to use base64 static key settings [e.g. the primes]. Dropped the code size by 3KB | |
562 and is ever-so-slightly faster than before. | |
563 -- added "mp_shrink" function to shrink the size of bignums. Specially useful for PK code :-) | |
564 -- Added new exptmod function that calculates a^b mod c with fewer multiplies then before [~20% for crypto | |
565 sized numbers]. Also added a "low mem" variant that doesn't use more than 20KB [upto 4096 bit nums] of | |
566 heap todo the calculation. Both are #define'able controlled | |
567 -- Added XREALLOC macro to provide realloc() functionality. | |
568 -- Added fix where in rsa_import() if you imported a public key or a non-optimized key it would free the mp_int's | |
569 not being used. | |
570 -- Fixed potential bug in the ECC code. Only would occur on platforms where char is not eight bits [which isn't | |
571 often!] | |
572 -- Fixed up the ECC point multiplication, its about 15% faster now | |
573 -- While I was at it [since the lib isn't binary backwards compatible anyways] I've fixed the PK export routines | |
574 so they export as "unsigned" types saving 1 byte per bignum outputted. Not a lot but heck why not. | |
575 | |
576 Nov 28th, 2002 | |
577 v0.78 -- Made the default ARGCHK macro a function call instead which reduced the code size from 264KB to 239KB. | |
578 -- Fixed a bug in the XTEA keysize function which called ARGCHK incorrectly. | |
579 -- Added Noekeon block cipher at 2,800 bytes of object code and 345Mbit/sec it is a welcome addition. | |
580 -- Made the KR code check if the other PK systems are included [provides error when building otherwise]. | |
581 -- Made "aes" an alias for Rijndael via a pre-processor macro. Now you can use "aes_ecb_encrypt", etc... :-) | |
582 Thanks to Jean-Luc Cooke for the "buzzword conformance" suggestion. | |
583 -- Removed the old PK code entirely (e.g. rsa_sign, dh_encrypt). The *_sign_hash and *_encrypt_key functions | |
584 are all that is to remain. | |
585 -- **NOTE** Changed the PK *_import (including the keyring) routine to accept a "inlen" parameter. This fixes a | |
586 bug where improperly made key packets could result in reading passed the end of the buffer. This means | |
587 the code is no longer source compatible but still binary compatible. | |
588 -- Fixed a few other minor bugs in the PK import code while I was at it. | |
589 | |
590 Nov 26th, 2002 | |
591 v0.77 -- Updated the XTEA code to use pre-computed keys. With optimizations for speed it achieves 222Mbit/sec | |
592 compared to the 121Mbit/sec before. It is 288 bytes bigger than before. | |
593 -- Cleaned up some of the ciphers and hashes (coding style, cosmetic changes) | |
594 -- Optimized AES slightly for 256-bit keys [only one if statement now, still two for 192-bit keys] | |
595 -- Removed most test cases from Blowfish, left three of them there. Makes it smaller and faster to test. | |
596 -- Changed the primality routines around. I now use 8 rounds of Rabin-Miller, I use 256 primes in the sieve | |
597 step and the "rand_prime" function uses a modified sieve that avoids alot of un-needed bignum work. | |
598 -- Fixed a bug in the ECC/DH signatures where the keys "setting" value was not checked for validity. This means | |
599 that a invalid value could have caused segfaults, etc... | |
600 -- **NOTE** Changed the way the ECC/DH export/import functions work. They are source but not binary compatible | |
601 with v0.76. Essentially insteading of exporting the setting index like before I export the key size. Now | |
602 if you ever re-configure which key settings are supported the lib will still be able to make use of your | |
603 keys. | |
604 -- Optimized Blowfish by inlining the round function, unrolling it for four rounds then using a for loop for the | |
605 rest. It achieves a rate of 425Mbit/sec with the new code compared to 314Mbit/sec before. The new blowfish | |
606 object file is 7,813 bytes compared to 8,663 before and is 850 bytes smaller. So the code is both smaller and | |
607 faster! | |
608 -- Optimized Twofish as well by inlining the round function. Gets ~400Mbit/sec compared to 280Mbit/sec before | |
609 and the code is only 78 bytes larger than the previous copy. | |
610 -- Removed SMALL_PRIME_TAB build option. I use the smaller table always. | |
611 -- Fixed some mistakes concerning prime generation in the manual. | |
612 -- [Note: sizes/speeds are for GCC 3.2 on an x86 Athlon XP @ 1.53Ghz] | |
613 | |
614 Nov 25th, 2002 | |
615 v0.76 -- Updated makefiles a bit more, use "-Os" instead of "-O2" to optimize for size. Got the lib | |
616 downto 265KB using GCC 3.2 on my x86 box. | |
617 -- Updated the SAFER+, Twofish and Rijndael test vector routine to use the table driven design. | |
618 -- Updated all other test vector routines to return as soon as an error is found | |
619 -- fixed a bug in the test program where errors in the hash test routines would not be reported | |
620 correctly. I found this by temporarily changing one of the bytes of the test vectors. All the | |
621 hashes check out [the demos/test.c would still have reported an error, just the wrong one]. | |
622 | |
623 | |
624 Nov 24th, 2002 | |
625 v0.75 -- Fixed a flaw in hash_filehandle, it should ARGCHK that the filehandle is not NULL | |
626 -- Fixed a bug where in hash_file if the call to hash_filehandle failed the open file would | |
627 not be closed. | |
628 -- Added more strict rules to build process, starting to weed out "oh this works in GCC" style code | |
629 In the next release "-Wconversion" will be enabled which will deal with all implicit casts. | |
630 | |
631 Nov 22nd, 2002 [later in the day] | |
632 v0.74 -- Wrote a small variant of SAFER+ which shaved 50KB off the size of the library on x86 platforms | |
633 -- Wrote a build option to remove the PK packet functions [keeps the encrypt_key/sign_hash functions] | |
634 -- Wrote a small variant of Rijndael (trimmed 13KB) | |
635 -- Trimmed the TIGER/192 hash function a bit | |
636 -- Overall the entire lib compiled is 295KB [down from 400KB before] | |
637 -- Fixed a few minor oversights in the MSVC makefile | |
638 | |
639 Nov 22nd, 2002 | |
640 v0.73 -- Fixed bug in RC4 code where it could only use 255 byte keys. | |
641 -- Fixed bug in yarrow code where it would allow cast5 or md2 to be used with it... | |
642 -- Removed the ecc compress/expand points from the global scope. Reduces namespace polution | |
643 -- Fixed bug where if you used the SPRNG you couldn't pass NULL as your prng_state which you should be | |
644 able todo since the SPRNG has no state... | |
645 -- Corrected some oversights in the manual and the examples... | |
646 -- By default the GF(2^W) math library is excluded from the build. The source is maintained because I wrote it | |
647 and like it :-). This way the built library is a tad smaller | |
648 -- the MSVC makefile will now build for a SPACE optimized library rather than TIME optimized. | |
649 | |
650 Nov 21th, 2002 | |
651 v0.72 -- Fixed bug in the prime testing. In the Miller-Rabin test I was raising the base to "N-1" not "r". | |
652 The math still worked out fine because in effect it was performing a Fermat test. Tested the new code and it | |
653 works properly | |
654 -- Fixed some of the code where it was still using the old error syntax | |
655 -- Sped up the RSA decrypt/sign routines | |
656 -- Optimized the ecc_shared_secret routine to not use so much stack | |
657 -- Fixed up the makefile to make releases where the version # is in the file name and directory it will unzip | |
658 to | |
659 | |
660 Nov 19th, 2002 | |
661 v0.71 -- HELP TOM. I need tuition for the January semester. Now I don't want to force donations [nor will I ever] | |
662 but I really need the help! See my website http://tom.iahu.ca/help_tom.html for more details. Please help | |
663 if you can! | |
664 -------------------------------------------------------------------------------------------------------------- | |
665 -- Officially the library is no longer supported in GCC 3.2 in windows [cygwin]. | |
666 In windows you can either use GCC 2.95.3 or try your luck with 3.2 It seems that | |
667 "-fomit-frame-pointer" is broken in the windows build [but not the linux x86 build???] | |
668 If you simply must use 3.2 then I suggest you limit the optimizations to simply "-O2" | |
669 -- Started new error handling API. Similar to the previous except there are more error codes than just | |
670 CRYPT_ERROR | |
671 -- Added my implementation of the MD2 hash function [despite the errors in the RFC I managed to get it right!] | |
672 -- Merged in more changes from Sky Schulz. I have to make mention here that he has been a tremendous help in | |
673 getting me motivated to make some much needed updates to the library! | |
674 -- Fixed one of the many mistakes in the manual as pointed out by Daniel Richards | |
675 -- Fixed a bug in the RC4 code [wasn't setting up the key correctly] | |
676 -- Added my implementation of the CAST5 [aka CAST-128] block cipher (conforms...) | |
677 -- Fixed numerous bugs in the PK code. Essentially I was "freeing" keys when the import failed. This is neither | |
678 required nor a good a idea [double free]. | |
679 -- Tom needs a job. | |
680 -- Fixed up the test harness as requested by Sky Schulz. Also modifed the timing routines to run for X seconds | |
681 and count # of ops performed. This is more suitable than say encrypting 10 million blocks on a slow processor | |
682 where it could take minutes! | |
683 -- Modified test programs hashsum/encrypt to use the new algorithms and error handling syntax | |
684 -- Removed the PKCS code since it was incomplete. In the future I plan on writing a "add-on" library that | |
685 provides PKCS support... | |
686 -- updated the config system so the #defines are in the makefiles instead of mycrypt_cfg.h | |
687 -- Willing to work on an hourly basis for 15$ CDN per hour. | |
688 -- updated the test program to not test ciphers not included | |
689 -- updated the makefile to make "rsa_sys.c" a dependency of rsa.o [helps develop the code...] | |
690 -- fixed numerous failures to detect buffer overflows [minor] in the PK code. | |
691 -- fixed the safer [64-bit block version] test routines which didn't check the returns of the setup | |
692 function | |
693 -- check out my CV at http://tom.iahu.ca/cv.html | |
694 -- removed the GBA makefile and code from demos/test.c [not a particularly useful demo...] | |
695 -- merged in rudimentary [for testing] PS2 RNG from Sky Schulz | |
696 -- merged in PS2 timer code [only shell included due to NDA reasons...] | |
697 -- updated HMAC code to return errors where possible | |
698 -- Thanks go to Sky Schulz who bought me a RegCode for TextPad [the official editor of libtomcrypt] | |
699 | |
700 Nov 12th, 2002 | |
701 v0.70 -- Updated so you can swap out the default malloc/calloc/free routines at build time with others. (Sky Schulz) | |
702 -- Sky Schulz contributed some code towards autodetecting the PS2 in mycrypt_cfg.h | |
703 -- Added PS2 makefile contributed by Sky Schulz [see a pattern forming?] | |
704 -- Added ability to have no FILE I/O functions at all (see makefile), Sky Schulz.... | |
705 -- Added support for substituting out the clock() function (Sky Schulz) | |
706 -- Fixed up makefile to include new headers in the HEADERS variable | |
707 -- Removed "coin.c" as its not really useful anyways | |
708 -- Removed many "debug" printfs that would show up on failures. Basically I wanted to ensure the only output | |
709 would be from the developer themselves. | |
710 -- Added "rc4.c" a RC4 implementation with a PRNG interface. Since RC4 isn't a block cipher it wouldn't work | |
711 too well as a block cipher. | |
712 -- Fixed ARGCHK macro usage when ARGTYPE=1 throughout the code | |
713 -- updated makefile to make subdirectory properly (Sku Schulz) | |
714 -- Started towards new API setup. Instead of checking for "== CRYPT_ERROR" you should check "!= CRYPT_OK" | |
715 In future releases functions will return things other than CRYPT_ERROR on error to give more useful | |
716 thread safe error reporting. The manual will be updated to reflect this. For this release all | |
717 errors are returned as CRYPT_ERROR (except as noted) but in future releases this will change. | |
718 -- Removed the zlib branch since its not really required anyways. Makes the package smaller | |
719 | |
720 Nov 11th, 2002 | |
721 v0.69 -- Added ARGCHK (see mycrypt_argchk.h) "arguement checking" to all functions that accept pointers | |
722 -- Note I forgot to change the CRYPT version tag in v0.68... fixed now. | |
723 | |
724 Nov 8th, 2002 | |
725 v0.68 -- Fixed flaw in kr_import/kr_export that wasted 4 bytes. Source but not binary compatible with v0.67 | |
726 -- Fixed bug in kr_find_name that used memcmp to match strings. Uses strncmp now. | |
727 -- kr_clear now sets the pointer to NULL to facilate debugging [e.g. using the keyring after clearing] | |
728 -- static functions in _write/_read in keyring.c now check the return of ctr_encrypt/ctr_decrypt. | |
729 -- Updated blowfish/rc2/rc5/rc6 keysize() function to not reject keys larger than the biggest key the | |
730 respective ciphers can use. | |
731 -- Fixed a bug in hashsum demo that would report the hash for files that don't exist! | |
732 | |
733 Oct 16th, 2002 | |
734 v0.67 -- Moved the function prototypes into files mycrypt_*.h. To "install" the lib just copy all the | |
735 header files "*.h" from the base of this project into your global include path. | |
736 -- Made the OFB/CFB/CTR functions use "unsigned long" for the length instead of "int" | |
737 -- Added keyring support for the PK functions | |
738 -- ***API CHANGE*** changed the ecc_make_key and dh_make_key to act more like rsa_make_key. Basically | |
739 move the first argument to the next to last. | |
740 -- Fixed bug in dh_test() that wouldn't test the primality of the order of the sub-group | |
741 -- replaced the primes in the DH code with new ones that are larger than the size they are | |
742 associated with. That is a 1024-bit DH key will have a 1025-bit prime as the modulus | |
743 -- cleaned up all the PK code, changed a bit of the API around [not source compatible with v0.66] | |
744 -- major editing of the manual, started Docer program | |
745 -- added 160 and 224 bit key settings for ECC. This makes the DH and ECC binary wise incompatible with v0.66 | |
746 -- Added an additional check for memory errors in is_prime() and cleaned up prime.c a bit | |
747 -- Removed ID_TAG from all files [meh, not a big fan...] | |
748 -- Removed unused variable from yarrow state and made AES/SHA256 the default cipher/hash combo | |
749 -- Fixed a bug in the Yarrow code that called prng_is_valid instead of cipher_is_valid from yarrow_start() | |
750 -- The ECB/CBC/OFB/CFB/CTR wrappers now check that the cipher is valid in the encrypt/decrypt calls | |
751 Returns int now instead of void. | |
752 | |
753 Sept 24th, 2002 | |
754 v0.66 -- Updated the /demos/test.c program to time the hashes correctly. Also it uses the yarrow PRNG for all of the | |
755 tests meaning its possible to run on RNG less platforms | |
756 -- Updated the /demos/hashsum.c program to hash from the standard input | |
757 -- Updated the RSA code to make keys a bit quicker [update by Wayne Scott] by not making both primes at the same | |
758 time. | |
759 -- Dan Kaminsky suggested some cleanups for the code and the MPI config | |
760 Code ships in unix LF format by default now too... will still build in MSVC and all... but if you want | |
761 to read the stuff you'll have to convert it | |
762 -- Changes to the manual to reflect new API [e.g. hash_memory/file have v0.65 prototypes]and some typos fixed | |
763 | |
764 Sept 20th, 2002 | |
765 v0.65 -- Wayne Scott ([email protected]) made a few of suggestions to improve the library. Most | |
766 importantly he pointed out the math lib is not really required. He's also tested the lib on 18 | |
767 different platforms. According to him with only a few troubles [lack of /dev/random, etc] the | |
768 library worked as it was supposed to. You can find the list at | |
769 http://www.bitkeeper.com/Products.BitKeeper.Platforms.html | |
770 -- Updated the hash_file and hash_memory functions to keep track of the size of the output | |
771 -- Wayne Scott updated the demos/test.c file to use the SPRNG less and Yarrow more | |
772 -- Modified the mycrypt_cfg.h to autodetect x86-32 machines | |
773 | |
774 Sept 19th, 2002 | |
775 v0.64 -- wrote makefile for the GBA device [and hacked the demos/test.c file to support it conditionally] | |
776 -- Fixed error in PK (e.g. ECC, RSA, DH) import functions where I was clobbering the packet error messages | |
777 -- fixed more typos in the manual | |
778 -- removed all unused variables from the core library (ignore the ID_TAG stuff) | |
779 -- added "const char *crypt_build_settings" string which is a build time constant that gives a listing | |
780 of all the build time options. Useful for debugging since you can send that to me and I will know what | |
781 exactly you had set for the mycrypt_cfg.h file. | |
782 -- Added control over endianess. Out of the box it defaults to endianess neutral but you can trivially | |
783 configure the library for your platform. Using this I boosted RC5 from 660Mbit/sec to 785Mbit/sec on my | |
784 Athlon box. See "mycrypt_cfg.h" for more information. | |
785 | |
786 Sept 11th, 2002 | |
787 v0.63 -- Made hashsum demo output like the original md5sum program | |
788 -- Made additions to the examples in the manual (fixed them up a bunch) | |
789 -- Merged in the base64 code from Wayne Scott ([email protected]) | |
790 | |
791 Aug 29th, 2002 | |
792 v0.62 -- Added the CLEAN_STACK functionality to several of the hashes I forgot to update. | |
793 | |
794 Aug 9th, 2002 | |
795 v0.61 -- Fixed a bug in the DES code [oops I read something wrong]. | |
796 | |
797 Aug 8th, 2002 | |
798 v0.60 -- Merged in DES code [and wrote 3DES-EDE code based on it] from Dobes V. | |
799 | |
800 Aug 7th, 2002 | |
801 v0.59 -- Fixed a "unsigned long long" bug that caused v0.58 not to build in MSVC. | |
802 -- Cleaned up a little in the makefile | |
803 -- added code that times the hash functions too in the test program | |
804 | |
805 Aug 3rd, 2002 | |
806 v0.58 -- Added more stack cleaning conditionals throughout the code. | |
807 -- corrected some CLEAR_STACK conditionals... should have been CLEAN_STACK | |
808 -- Simplified the RSA, DH and ECC encrypt() routines where they use CTR to encode the message | |
809 now they only make one call to ctr_encrypt()/ctr_decrypt(). | |
810 | |
811 Aug 2nd, 2002 | |
812 v0.57 -- Fixed a few errors messages in the SAFER code to actually report the correct cipher name. | |
813 -- rsa_encrypt() uses the "keysize()" method of the cipher being used to more accurately pick a | |
814 key size. By default rsa_encrypt() will choose to use a 256-bit key but the cipher can turn that | |
815 down if required. | |
816 -- The rsa_exptmod() function will now more reliably detect invalid inputs (e.g. greater than the modulus). | |
817 -- The padding method for RSA is more clearly documented. Namely if you want to encrypt/sign something of length | |
818 N then your modulus must be of length 1+3N. So to sign a message with say SHA-384 [48 bytes] you need a | |
819 145 byte (1160 bits) modulus. This is all in the manual now. | |
820 -- Added build option CLEAN_STACK which will allow you to choose whether you want to clean the stack or not after every | |
821 cipher/hash call | |
822 -- Sped up the hash "process()" functions by not copying one byte at a time. | |
823 ++ (added just after I uploaded...) | |
824 MD4 process() now handles input buffers > 64 bytes | |
825 | |
826 Aug 1st, 2002 | |
827 v0.56 -- Cleaned up the comments in the Blowfish code. | |
828 -- Oh yeah, in v0.55 I made all of the descriptor elements constant. I just forgot to mention it. | |
829 -- fixed a couple of places where descriptor indexes were tested wrong. Not a huge bug but now its harder | |
830 to mess up. | |
831 -- Added the SAFER [64-bit block] ciphers K64, SK64, K128 and SK128 to the library. | |
832 -- Added the RC2 block cipher to the library. | |
833 -- Changed the SAFER define for the SAFER+ cipher to SAFERP so that the new SAFER [64-bit] ciphers | |
834 can use them with less confusion. | |
835 | |
836 July 29th, 2002 | |
837 v0.55 -- My god stupid Blowfish has yet again been fixed. I swear I hate that cipher. Next bug in it and boom its out of the | |
838 library. Use AES or something else cuz I really hate Blowfish at this stage.... | |
839 -- Partial PKCS support [hint DONT USE IT YET CUZ ITS UNTESTED!] | |
840 | |
841 July 19th, 2002 | |
842 v0.54 -- Blowfish now conforms to known test vectors. Silly bad coding tom! | |
843 -- RC5/RC6/Serpent all have more test vectors now [and they seemed to have been working before] | |
844 | |
845 July 18th, 2002 | |
846 v0.53 -- Added more test vectors to the blowfish code just for kicks [and they are const now too :-)] | |
847 -- added prng/hash/cipher is_valid functions and used them in all of the PK code so you can't enter the code | |
848 with an invalid index ever now. | |
849 -- Simplified the Yarrow code once again :-) | |
850 | |
851 July 12th, 2002 | |
852 v0.52 -- Fixed a bug in MD4 where the hash descriptor ID was the same as SHA-512. Now MD4 will work with | |
853 all the routines... | |
854 -- Fixed the comments in SHA-512 to be a bit more meaningful | |
855 -- In md4 I made the PADDING array const [again to store it in ROM] | |
856 -- in hash_file I switched the constant "512" to "sizeof(buf)" to be a bit safer | |
857 -- in SHA-1's test routine I fixed the string literal to say SHA-1 not sha1 | |
858 -- Fixed a logical error in the CTR code which would make it skip the first IV value. This means | |
859 the CTR code from v0.52 will be incompatible [binary wise] with previous releases but it makes more | |
860 sense this way. | |
861 -- Added {} braces for as many if/for/blocks of code I could find. My rule is that every for/if/while/do block | |
862 must have {} braces around it. | |
863 -- made the rounds table in saferp_setup const [again for the ROM think about the ROM!] | |
864 -- fixed RC5 since it no longer requires rc5 to be registered in the lib. It used to since the descriptors used to | |
865 be part of the table... | |
866 -- the packet.c code now makes crypt_error literal string errors when an error occurs | |
867 -- cleaned up the SAFER+ key schedule to be a bit easier to read. | |
868 -- fixed a huge bug in Twofish with the TWOFISH_SMALL define. Because I clean the stack now I had | |
869 changed the "g_func()" to be called indirectly. I forgot to actually return the return of the Twofish | |
870 g_func() function which caused it not to work... [does now :-)] | |
871 | |
872 July 11th, 2002 | |
873 v0.51 -- Fixed a bug in SHA512/384 code for multi-block messages. | |
874 -- Added more test vectors to the SHA384/512 and TIGER hash functions | |
875 -- cleaned up the hash done routines to make more sense | |
876 | |
877 July 10th, 2002 | |
878 v0.50 -- Fixed yarrow.c so that the cipher/hash used would be registered. Also fixed | |
879 a bug where the SAFER+ name was "safer" but should have been "safer+". | |
880 -- Added an element to the hash descriptors that gives the size of a block [sent into the compressor] | |
881 -- Cleaned up the support for HMAC's | |
882 -- Cleaned up the test vector routines to make the test vector data const. This means on some platforms it will be | |
883 placed in ROM not RAM now. | |
884 -- Added MD4 code submited by Dobes Vandermeer ([email protected]) | |
885 -- Added "burn_stack" function [idea taken from another source of crypto code]. The idea is if a function has | |
886 alot of variables it will clean up better. Functions like the ecb serpent and twofish code will now have their | |
887 stacks cleaned and the rest of the code is getting much more straightforward. | |
888 -- Added a hashing demo by Daniel Richards ([email protected]) | |
889 -- I (Tom) modified some of the test vector routines to use more vectors ala Dobes style. | |
890 For example, the MD5/SHA1 code now uses all of the test vectors from the RFC/FIPS spec. | |
891 -- Fixed the register/unregister functions to properly report errors in crypt_error | |
892 -- Correctly updated yarrow code to remove a few unused variables. | |
893 -- Updated manual to fix a few erroneous examples. | |
894 -- Added section on Hash based Message Authentication Codes (HMAC) to the manual | |
895 | |
896 June 19th, 2002 | |
897 v0.46 -- Added in HMAC code from Dobes Vandermeer ([email protected]) | |
898 | |
899 June 8th, 2002 | |
900 v0.45 -- Fixed bug in rc5.c where if you called rc5_setup() before registering RC5 it would cause | |
901 undefined behaviour. | |
902 -- Fixed mycrypt_cfg.h to eliminate the 224 bit ECC key. | |
903 -- made the "default" makefile target have depends on mycrypt.h and mycrypt_cfg.h | |
904 | |
905 Apr 4th, 2002 | |
906 v0.44 -- Fixed bug in ecc.c::new_point() where if the initial malloc fails it would not catch it. | |
907 | |
908 Mar 22nd, 2002 | |
909 v0.43 -- Changed the ZLIB code over to the 1.1.4 code base to avoid the "double free" bug. | |
910 -- Updated the GCC makefile not to use -O3 or -funroll-loops | |
911 -- Version tag in mycrypt.h has been updated :-) | |
912 | |
913 Mar 10th, 2002 | |
914 v0.42 -- The RNG code can now use /dev/urandom before trying /dev/random (J. Klapste) | |
915 | |
916 Mar 3rd, 2002 | |
917 v0.41 -- Added support to link and use ciphers at compile time. This can greatly reduce the code size! | |
918 -- Added a demo to show off how small an application can get... 46kb! | |
919 -- Disastry pointed out that Blowfish is supposed to be high endian. | |
920 -- Made registry code for the PRNGs as well [now the smallest useable link is 43kb] | |
921 | |
922 Feb 11th, 2002 | |
923 v0.40 -- RSA signatures use [and check for] fixed padding scheme. | |
924 -- I'm developing in Linux now :-) | |
925 -- No more warnings from GCC 2.96 | |
926 | |
927 Feb 5th, 2002 | |
928 v0.39 -- Updated the XTEA code to work in accordance with the XTEA design | |
929 | |
930 January 24th, 2002 | |
931 v0.38 -- CFB and OFB modes can now handle blocks of variable size like the CTR code | |
932 -- Wrote a wrapper around the memory compress functions in Zlib that act like the functions | |
933 in the rest of my crypto lib | |
934 | |
935 January 23rd, 2002 | |
936 v0.37 -- Added support code so that if a hash size and key size for a cipher don't match up they will | |
937 use the next lower key supported. (mainly for the PK code). So you can now use SHA-1 with | |
938 Twofish, etc... | |
939 -- Added more options for Twofish. You can now tell it to use precomputed sboxes and MDS multiplications | |
940 This will speed up the TWOFISH_SMALL implementation by increasing the code size by 1024 bytes. | |
941 -- Fixed a bug in prime.c that would not use the correct table if you undefined SMALL_PRIME_TAB | |
942 -- Fixed all of the PK packet code to use the same header format [see packet.c]. This makes the PK code | |
943 binary wise incompatible with previous releases while the API has not changed at all. | |
944 | |
945 January 22nd, 2002 | |
946 v0.36 -- Corrections to the manual | |
947 -- Made a modification to Twofish which lets you build a "small ram" variant. It requires | |
948 about 190 bytes of ram for the key storage compared to the 4,200 bytes the normal | |
949 variant requires. | |
950 -- Reduced the stack space used in all of the PK routines. | |
951 | |
952 January 19th, 2002 | |
953 v0.35 -- If you removed the first hash or cipher from the library it wouldn't return an error if | |
954 you used an ID=0 [i.e blowfish or sha256] in any routine. Now it checks for that and will | |
955 return an error like it should | |
956 -- Merged in new routines from Clay Culver. These routines are for the PK code so you can easily | |
957 encode a symmetric key for multiple recipients. | |
958 -- Made the ecc and DH make_key() routines make secret keys of the same size as the keysize listed. | |
959 Originally I wanted to ensure that the keys were smaller than the order of the field used | |
960 However, the bias is so insignifcant using full sizes. For example, with a ECC-192 key the order | |
961 is about 2^191.99, so instead I rounded down and used a 184-bit secret key. Now I simply use a full 192-bit | |
962 key the code will work just the same except that some 192-bit keys will be duplicates which is not a big | |
963 deal since 1/2^192 is a very small bias! | |
964 -- Made the configuration a bit simpler and more exacting. You can for example now select which DH or ECC | |
965 key settings you wish to support without including the data for all other key settings. I put the #defines | |
966 in a new file called "mycrypt_cfg.h" | |
967 -- Configured "mpi-config.h" so its a bit more conservative with the memory required and code space used | |
968 -- Jason Klapste submitted bug fixes to the yarrow, hash and various other issues. The yarrow code will now | |
969 use what ever remaining hash/cipher combo is left [after you #undef them] at build time. He also suggested | |
970 a fix to remove unused structures from the symmetric_key and hash_state unions. | |
971 -- Made the CTR code handle variable length blocks better. It will buffer the encryption pad so you can | |
972 encrypt messages any size block at a time. | |
973 -- Simplified the yarrow code to take advantage of the new CTR code. | |
974 -- Added a 4096-bit DH key setting. That took me about 36 hours to find! | |
975 -- Changed the base64 routines to use a real base64 encoding scheme. | |
976 -- Added in DH and ECC "encrypt_key()" functions. They are still rather "beta"ish. | |
977 -- Added **Twofish** to the list of ciphers! | |
978 | |
979 January 18th, 2002 | |
980 v0.34 -- Added "sha512" to the list of hashes. Produces a 512-bit message digest. Note that with the current | |
981 padding with the rsa_sign() function you cannot use sha512 with a key less than 1536 bits for signatures. | |
982 -- Cleaned up the other hash functions to use the LOAD and STORE macros... | |
983 | |
984 January 17th, 2002 | |
985 v0.33 -- Made the lower limit on keysizes for RSA 1024 bits again because I realized that 768 bit keys wouldn't | |
986 work with the padding scheme and large symmetric keys. | |
987 -- Added information concerning the Zlib license to the manual | |
988 -- Added a 3072-bit key setting for the DH code. | |
989 -- Made the "find_xyz()" routines take "const char *" as per Clay Culver's suggestion. | |
990 -- Fixed an embarassing typo in the manual concerning the hashes. Thank's Clay for finding it! | |
991 -- Fixed rand_prime() so that it makes primes bigger than the setting you give. For example, | |
992 if you want a 1024-bit prime it would make a 1023-bit one. Now it ensures that the prime | |
993 it makes is always greater than 2^(8n) (n == bytes in prime). This doesn't have a huge | |
994 impact on security but I corrected it just the same. | |
995 -- Fixed the CTR routine to work on platforms where char != 8-bits | |
996 -- Fixed sha1/sha256/md5/blowfish to not assume "unsigned long == 32-bits", Basically any operation with carries | |
997 I "AND" with 0xFFFFFFFF. That forces only the lower 32-bits to have information in it. On x86 platforms | |
998 most compilers optimize out the AND operation since its a nop. | |
999 | |
1000 January 16th, 2002 | |
1001 v0.32 -- Made Rijndael's setup function fully static so it is thread safe | |
1002 -- Svante Seleborg suggested a cosmetic style fixup for aes.c, | |
1003 basically to remove some of the #defines to clean it up | |
1004 -- Made the PK routines not export the ASCII version of the names of ciphers/hashes which makes | |
1005 the PK message formats *incompatible* with previous releases. | |
1006 -- Merge in Zlib :-) | |
1007 | |
1008 | |
1009 January 15th, 2002 | |
1010 v0.31 -- The RSA routines can now use CRT to speed up decryption/signatures. The routines are backwards | |
1011 compatible with previous releases. | |
1012 -- Fixed another bug that Svante Seleborg found. Basically you could buffer-overrun the | |
1013 rsa_exptmod() function itself if you're not careful. That's fixed now. Fixed another bug in | |
1014 rsa_exptmod() where if it knows the buffer you passed is too small it wouldn't free all used | |
1015 memory. | |
1016 -- improved the readability of the PK import/export functions | |
1017 -- Added a fix to RSA.C by Clay Culver | |
1018 -- Changed the CONST64 macro for MSVC to use the "unsigned __int64" type, e.g. "ui64" instead of "i64". | |
1019 | |
1020 January 14th, 2002 | |
1021 v0.30 -- Major change to the Yarrow PRNG code, fixed a bug that Eugene Starokoltsev found. | |
1022 Basically if you added entropy to the pool in small increments it could in fact | |
1023 cancel out. Now I hash the pool with the new data which is way smarter. | |
1024 | |
1025 January 12th, 2002 | |
1026 v0.29 -- Added MPI code written by Svante Seleborg to the library. This will make the PK code much | |
1027 easier to follow and debug. Actually I've already fixed a memory leak in dh_shared_secret(). | |
1028 -- Memory leaks found and correct in all three PK routines. The leaks would occur when a bignum | |
1029 operation fails so it wouldn't normally turn up in the course of a program | |
1030 -- Fixed bugs in dh_key_size and ecc_key_size which would return garbage for invalid key idx'es | |
1031 | |
1032 January 11th, 2002 | |
1033 v0.28 -- Cleaned up some code so that it doesn't assume "char == 8bits". Mainly SAFER+ has been | |
1034 changed. | |
1035 -- ***HUGE*** changes in the PK code. I check all return values in the bignum code so if there | |
1036 are errors [insufficient memory, etc..] it will be reported. This makes the code fairly more | |
1037 robust and likely to catch any errors. | |
1038 -- Updated the is_prime() function to use a new prototype [it can return errors now] and it also | |
1039 does trial divisions against more primes before the Rabin Miller steps | |
1040 -- Added OFB, CFB and ECB generic wrappers for the symmetric ciphers to round out the implementations. | |
1041 -- Added Xtea to the list of ciphers, to the best of my ability I have verified this implementation. | |
1042 I should note that there is not alot of concrete information about the cipher. "Ansi C" versions | |
1043 I found did not address endianess and were not even portable!. This code is portable and to the | |
1044 best of my knowledge implements the Xtea algorithm as per the [short] X-Tea paper. | |
1045 -- Reformated the manual to include the **FULL** source code optimized to be pritable. | |
1046 | |
1047 January 9th, 2002 | |
1048 v0.27 -- Changed the char constants to numerical values. It is backwards compatible and should work on | |
1049 platforms where 'd' != 100 [for example]. | |
1050 -- Made a change to rand_prime() which takes the input length as a signed type so you can pass | |
1051 a negative len to get a "3 mod 4" style prime... oops | |
1052 -- changed the MSVC makefile to build with a warning level of three, no warnings! | |
1053 | |
1054 January 8th, 2002 | |
1055 v0.26 -- updated SHA-256 to use ROR() for a rotate so 64-bit machines won't corrupt | |
1056 the output | |
1057 -- Changed #include <> to #include "" for local .h files as per Richard Heathfields' suggestions. | |
1058 -- Fixed bug in MPI [well bug in MSVC] that compiled code incorrectly in mp_set_int() | |
1059 I added a work around that catches the error and continues normally. | |
1060 | |
1061 January 8th, 2002 | |
1062 v0.25 -- Added a stupid define so MSVC 6.00 can build the library. | |
1063 -- Big thanks to sci.crypt and "Ajay K. Agrawal" for helping me port this to MSVC | |
1064 | |
1065 January 7th, 2002 | |
1066 v0.24 -- Sped up Blowfish by unrolling and removing the swaps. | |
1067 -- Made the code comply with more traditional ANSI C standards | |
1068 Should compile with MSVC with less errors | |
1069 -- moved the demos and documentation into their own directories | |
1070 so you can easily build the library with other tool chains | |
1071 by compiling the files in the root | |
1072 -- converted functions with length of outputs to use | |
1073 "unsigned long" so 16-bit platforms will like this library more. | |
1074 | |
1075 January 5th, 2002 | |
1076 v0.23 -- Fixed a small error in the MPI config it should build fine anywhere. | |
1077 | |
1078 January 4th, 2002 | |
1079 v0.22 -- faster gf_mul() code | |
1080 -- gf_shl() and gf_shr() are safe on 64-bit platforms now | |
1081 -- Fixed an error in the hashes that Brian Gladman found. | |
1082 Basically if the message has exactly 56 bytes left to be | |
1083 compressed I handled them incorrectly. | |
1084 | |
1085 January 4th, 2002 | |
1086 v0.21 -- sped up the ECC code by removing redundant divisions in the | |
1087 point add and double routines. I also extract the bits more | |
1088 efficiently in "ecc_mulmod()" now. | |
1089 -- sped up [and documented] the rand_prime() function. Now it just | |
1090 makes a random integer and increments by two until a prime is found | |
1091 This is faster since it doesn't require alot of calls to the PRNG and | |
1092 it doesn't require loading huge integers over and over. rand_prime() | |
1093 can also make primes congruent to 3 mod 4 [i.e for a blum integer] | |
1094 -- added a gf_sqrt() function that finds square roots in a GF(2^w) field | |
1095 -- fixed a bug in gf_div() that would return the wrong results if the divisor had a greator | |
1096 divisor than the dividend. | |
1097 | |
1098 January 4th, 2002 | |
1099 v0.20 -- Added the fixed MPI back in so RSA and DH are much faster again | |
1100 | |
1101 v0.19 -- Updated the manual to reflect the fact that Brian Gladman wrote the AES and Serpent code. | |
1102 -- DH, ECC and RSA signature/decryption functions check if the key is private | |
1103 -- new DH signature/verification code works just like the RSA/ECC versions | |
1104 | |
1105 January 3rd, 2002 | |
1106 v0.18 -- Added way more comments to each .C file | |
1107 -- fixed a bug in cbc_decrypt(pt, ct, key) where pt == ct [i.e same buffer] | |
1108 -- fixed RC5 so it reads the default rounds out of the cipher_descriptor table | |
1109 -- cleaned up ecc_export() | |
1110 -- Cleaned up dh_import() and ecc_import() which also perform more | |
1111 error checking now | |
1112 -- Fixed a serious flaw in rsa_import() with private keys. | |
1113 | |
1114 January 2nd, 2002 | |
1115 v0.17 -- Fixed a bug in the random prime generator that fixes the wrong bits to one | |
1116 -- ECC and DH code verify that the moduli and orders are in fact prime. That | |
1117 slows down the test routines alot but what are you gonna do? | |
1118 -- Fixed a huge bug in the mp_exptmod() function which incorrectly calculates g^x mod p for some | |
1119 values of p. I replaced it with a slow function. Once the author of MPI fixes his faster routine | |
1120 I will switch back. | |
1121 | |
1122 January 1st, 2002 [whoa new year!] | |
1123 v0.16 -- Improved GF division code that is faster. | |
1124 -- documented the GF code | |
1125 | |
1126 December 31st, 2001 | |
1127 v0.15 -- A 1792-bit and 2048-bit DH setting was added. Took me all night to | |
1128 find a 1792 and 2048-bit strong prime but what the heck | |
1129 -- Library now has polynomial-basis GF(2^w) routines I wrote myself. Can be used to perform | |
1130 ECC over GF(2^w) later on.... | |
1131 -- Fixed a bug with the defines that allows it to build in windows | |
1132 | |
1133 December 30th, 2001 | |
1134 v0.14 -- Fixed the xxx_encrypt() packet routines to make an IV of appropriate size | |
1135 for the cipher used. It was defaulting to making a 256-bit IV... | |
1136 -- base64_encode() now appends a NULL byte, um "duh" stupid mistake now fixed... | |
1137 -- spell checked the manual again... :-) | |
1138 | |
1139 December 30th, 2001 | |
1140 v0.13 -- Switching back to older copy of MPI since it works! arrg.. | |
1141 -- Added sign/verify functions for ECC | |
1142 -- all signature verification routines default to invalid signatures. | |
1143 -- Changed all calls to memset to zeromem. Fixed up some buffer problems | |
1144 in other routines. All calls to zeromem let the compiler determine the size | |
1145 of the data to wipe. | |
1146 | |
1147 December 29th, 2001 | |
1148 v0.12 -- Imported a new version of MPI [the bignum library] that should | |
1149 be a bit more stable [if you want to write your own bignum | |
1150 routines with the library that is...] | |
1151 -- Manual has way more info | |
1152 -- hash_file() clears stack now [like it should] | |
1153 -- The artificial cap on the hash input size of 2^32 bits has been | |
1154 removed. Basically I was too lazy todo 64-bit math before | |
1155 [don't ask why... I can't remember]. Anyways the hashes | |
1156 support the size of 2^64 bits [if you ever use that many bits in a message | |
1157 that's just wierd...] | |
1158 -- The hashes now wipe the "hash_state" after the digest is computed. This helps | |
1159 prevent the internal state of the hash being leaked accidently [i.e stack problems] | |
1160 | |
1161 December 29th, 2001 | |
1162 v0.11 -- Made #define's so you can trim the library down by removing | |
1163 ciphers, hashs, modes of operation, prngs, and even PK algorithms | |
1164 For example, the library with rijndael+ctr+sha1+ECC is 91KB compared | |
1165 to the 246kb the full library takes. | |
1166 -- Added ECC packet routines for encrypt/decrypt/sign/verify much akin to | |
1167 the RSA packet routines. | |
1168 -- ECC now compresses the public key, a ECC-192 public key takes 33 bytes | |
1169 for example.... | |
1170 | |
1171 December 28th, 2001 | |
1172 v0.10 -- going to restart the manual from scratch to make it more | |
1173 clear and professional | |
1174 -- Added ECC over Z/pZ. Basically provides as much as DH | |
1175 except its faster since the numbers are smaller. For example, | |
1176 A comparable 256-bit ECC key provides as much security as expected | |
1177 from a DH key over 1024-bits. | |
1178 -- Cleaned up the DH code to not export the symbol "sets[]" | |
1179 -- Fixed a bug in the DH code that would not make the correct size | |
1180 random string if you made the key short. For instance if you wanted | |
1181 a 512-bit DH key it would make a 768-bit one but only make up 512-bits | |
1182 for the exponent... now it makes the full 768 bits [or whatever the case | |
1183 is] | |
1184 -- Fixed another ***SERIOUS*** bug in the DH code that would default to 768-bit | |
1185 keys by mistake. | |
1186 | |
1187 December 25th, 2001 | |
1188 v0.09 -- Includes a demo program called file_crypt which shows off | |
1189 how to use the library to make a command line tool which | |
1190 allows the user to encode/decode a file with any | |
1191 hash (on the passphrase) and cipher in CTR mode. | |
1192 -- Switched everything to use typedef's now to clear up the code. | |
1193 -- Added AES (128/192 and 256 bit key modes) | |
1194 | |
1195 December 24th, 2001 | |
1196 v0.08 -- fixed a typo in the manual. MPI stores its bignums in | |
1197 BIG endian not little. | |
1198 -- Started adding a RNG to the library. Right now it tries | |
1199 to open /dev/random and if that fails it uses either the | |
1200 MS CSP or the clock drift RNG. It also allows callbacks | |
1201 since the drift RNG is slow (about 3.5 bytes/sec) | |
1202 -- the RNG can also automatically setup a PRNG as well now | |
1203 | |
1204 v0.07 -- Added basic DH routines sufficient to | |
1205 negotiate shared secrets | |
1206 [see the manual for a complete example!] | |
1207 -- Fixed rsa_import to detect when the input | |
1208 could be corrupt. | |
1209 -- added more to the manual. | |
1210 | |
1211 December 22nd, 2001 | |
1212 v0.06 -- Fixed some formatting errors in | |
1213 the hash functions [just source code cleaning] | |
1214 -- Fixed a typo in the error message for sha256 :-) | |
1215 -- Fixed an error in base64_encode() that | |
1216 would fail to catch all buffer overruns | |
1217 -- Test program times the RSA and symmetric cipher | |
1218 routines for kicks... | |
1219 -- Added the "const" modifier to alot of routines to | |
1220 clear up the purpose of each function. | |
1221 -- Changed the name of the library to "TomCrypt" | |
1222 following a suggestion from a sci.crypt reader.... | |
1223 | |
1224 v0.05 -- Fixed the ROL/ROR macro to be safe on platforms | |
1225 where unsigned long is not 32-bits | |
1226 -- I have added a bit more to the documentation | |
1227 manual "crypt.pdf" provided. | |
1228 -- I have added a makefile for LCC-Win32. It should be | |
1229 easy to port to other LCC platforms by changing a few lines. | |
1230 -- Ran a spell checker over the manual. | |
1231 -- Changed the header and library from "crypt" to "mycrypt" to not | |
1232 clash with the *nix package "crypt". | |
1233 | |
1234 v0.04 -- Fixed a bug in the RC5,RC6,Blowfish key schedules | |
1235 where if the key was not a multiple of 4 bytes it would | |
1236 not get loaded correctly. | |
1237 | |
1238 December 21st, 2001 | |
1239 | |
1240 v0.03 -- Added Serpent to the list of ciphers. | |
1241 | |
1242 v0.02 -- Changed RC5 to only allow 12 to 24 rounds | |
1243 -- Added more to the manual. | |
1244 | |
1245 v0.01 -- We will call this the first version. |