[Botan-announce] Botan 1.7.14: modularized build, add CMS (S/MIME)
Jack Lloyd
lloyd at randombit.net
Tue Sep 30 14:04:17 EDT 2008
Hi,
I've released Botan 1.7.14, available at http://botan.randombit.net/ or
directly from:
http://files.randombit.net/botan/Botan-1.7.14.tgz
http://files.randombit.net/botan/Botan-1.7.14.tbz
This release modularizes the source code of Botan. Until now all the
sources were contained in the flat directories include and src (plus
the subdirectories in modules/). However this made it very difficult
to see what was related to what. This release changes that and Botan's
source directory is now grouped by topic:
$ ls src/
alloc build-data cipher core filters mac pbe rng
asn1 cert cms engine hash math pk utils
bigint checksum codec entropy kdf modes pk_pad
$ ls src/hash
fork256 md4 md5_ia32 rmd128 sha1_amd64 sha2
has160 md4_ia32 mdx_hash rmd160 sha1_ia32 tiger
md2 md5 par_hash sha1 sha1_sse2 whirlpool
$ ls src/cipher
aes des lion noekeon safer serpent_ia32 turing
arc4 gost lubyrack rc2 salsa20 skipjack twofish
blowfish idea mars rc5 seed square wid_wake
cast kasumi misty1 rc6 serpent tea xtea
# etc
More importantly, is possible to build Botan with only some of these
directories included. For example one can trivially build Botan
without (say) GOST included. The test suite will still run + pass
(skipping the GOST tests as an unknown algorithm). This is not yet
perfect (parts of the public key algorithms cannot yet be disabled,
for instance), but I have been able to get a working and functional
libbotan.so that is about half the size of the default build simply by
disabling modules at build time with configure.pl; more on that in my
message to botan-devel archived at
http://lists.randombit.net/pipermail/botan-devel/2008-September/000604.html
A change in the asm implementations of SHA-1, MD4, MD5, and
Serpent. Instead of replacing the C++ implementation, they derive from
it as a new class (for instance MD5_IA32 or SHA_160_SSE2) and override
just the particular functions that are optimized. This means that
referring to, for instance, SHA_160 will always mean the C++ code (but
one can query feature macros or use the lookup system to get the
fastest SHA-1 for the system).
I have also integrated (partially) the CMS code from misc/cms. It
needed a good bit of updating to match the latest Botan interfaces,
and some parts are still #if'ed out, but it is built and installed by
default (so at least it should not bitrot further). And who knows it
might work. If you don't want it, you can disable by passing
--disable-module=cms to configure.pl
Support for Pentium-M builds and MinGW/MSYS were contributed by Derek
Scherger and Zbigniew Zagorski (resp).
This release was tested with GCC on Linux/x86-64, Linux/ppc64, and
Windows/x86, Intel C++ on Linux/x86-64, and Visual Studio C++ 2008 on
Windows/x86. Since it is a major change in the build system I would
certainly appreciate build reports for any platform to record in
http://botan.randombit.net/builds.html - send an email to the list or
directly to me.
A short PSA: I am currently looking for contract work. My background
is primarily in development (C++, Python, C, Perl, Java, Scala) and
computer security/cryptography. If you have need for security reviews
(protocol review, source code review, app testing) or custom
development, take a look at my background at
http://randombit.net/resume.html or contact me offlist for more
information.
Regards,
Jack
More information about the botan-announce
mailing list