LibTomCrypt [v0.99] and LibTomMath [v0.32]

From: Tom St Denis (tomstdenis_at_iahu.ca)
Date: 10/30/04


Date: Fri, 29 Oct 2004 18:44:28 -0400

Both released today ;-)

First quick url: http://libtomcrypt.org

For those not in the know...

LibTomCrypt is a free (public domain) ISO C cryptographic toolkit that
provides many cryptographic algorithms the average cryptographer would
require in their day to day jobs. The library includes symmetric block
ciphers, one-way hashes, CSPRNGs, RSA/DSA/DH/ECC, Various MACs (such as
HMAC, OMAC, PMAC) and Enc+Auth modes as well as other support routines
such as DER integer encoding, PKCS #5 password handling, PKCS #1 v1.5
and v2.1 padding, base64 encoding/decoding. It builds with GCC, ICC and
MSVC and is entirely written in portable C code.

LibTomMath is a free (public domain) ISO C multiple precision integer
library that provides the functions required to work with large integers
in number theoretic taskings (e.g. exptmod, jacobi symbol, etc...). It
is also ideally suited for Cryptographic taskings such as RSA, ECC, DH
and DSA.

Changes for LTC [quite a few]

v0.99 -- Merged in the latest version of LTM which includes all of the
recent bug fixes

        -- Deprecated LTMSSE and removed it (to be replaced with TFM
later on)

        -- Stefan Arentz pointed out that mp_s_rmap should be extern

        -- Kristian Gjøsteen pointed out that there are typos in the
        "test" makefile and minor issues in Yarrow and Sober [just
cosmetics really]

        -- Matthew P. Cashdollar pointed out that "export" is a C++
keyword so changed the PRNG api to use "pexport" and "pimport"

        -- Updated "hashsum" demo so it builds ;-)

        -- Added automatic support for x86-64 (will configure for 64-bit
little endian automagically)

        -- Zhi Chen pointed out a bug in rsa_exptmod which would leak
memory on error.

        -- Made hash functions "init" return an int. slight change to
API ;-(

        -- Added "CHC" mode which turns any cipher into a hash the other
LTC functions can use

        -- Added CHC mode stuff to demos such as tv_gen and hashsum

        -- Added "makefile.shared" which builds and installs
shared/static object copies of the library.

        -- Added DER for bignum support

        -- RSA is now fully joy. rsa_export/rsa_import use PKCS #1
encodings and should be compatible with other crypto libs that use the
format.

        -- Added support for x86-64 for the ROL/ROR macros

        -- Changed the DLL and SO makefiles to optimize for speed,
commented SMALL_CODE in mycrypt_custom.h and added -DSMALL_CODE to the
default makefile

        -- Updated primality testing code so it does a minimum of 5
tests [of Miller-Rabin] (AFAIK not a security fix, just warm fuzzies)

        -- Minor updates to the OMAC code (additional __ARGCHK and
removed printf from omac_test... oops!)

        -- Update build and configuration info which was really really
really out of date. (Chapter 14)

And now for LTM

October 29th, 2004
v0.32 -- Added "makefile.shared" for shared object support

        -- Added more to the build options/configs in the manual

        -- Started the Depends framework, wrote dep.pl to scan deps and
           produce "callgraph.txt" ;-)

        -- Wrote SC_RSA_1 which will enable close to the minimum
required to perform RSA on 32-bit [or 64-bit] platforms with LibTomCrypt

        -- Merged in the small/slower mp_div replacement. You can now
toggle which you want to use as your mp_div() at build time. Saves
roughly 8KB or so.

        -- Renamed a few files and changed some comments to make depends
system work better. (No changes to function names)

        -- Merged in new Combas that perform 2 reads per inner loop
instead of the older 3reads/2writes per inner loop of the old code.
Really though if you want speed learn to use TomsFastMath ;-)