Hello Fellow D'ers,
I'd like to announce TitaniumD, a binding for D to the Botan Cryptography
Library. Botan is an open-source cryptography library written in C++11 and
makes extensive use of the C++ Standard Library in it's API. Titanium is a
PIMPL around the Botan API designed to make interfacing Botan with other
languages easier by translating the STL API into something more friendly.
TitaniumD is the D specific binding for Botan.
Botan is distributed as source only and utilizes a script to configure
individual modules into a single header and source file called an
"amalgamation build". Because of this Botan and Titanium are not a typical
library distributions, such as OpenSSL, and therefore I am unsure how this
might fit into Deimos.
A TitaniumD consists of three components:
- TitaniumCore, contains the Botan amalgamation build and the PIMPL
wrapper.
- TitaniumD, the C++ half of the D binding that maps the PIMPL wrapper to
a D compatible ABI.
- TDI, the D half of the binding.
Each of these components is built as a static library.
Currently Titanium supports the following algorithms:
AES - Sizes: 128/192/256- Modes: CBC, CTS, CFB, OFB, CTR, EAX,
GCM, SIV
Camellia- Sizes: 128/192/256 - Modes: CBC, CTS, CFB, OFB, CTR, EAX,
GCM, SIV
Serpent - Sizes: 128- Modes: CBC, CTS, CFB, OFB,
CTR, EAX, GCM, SIV
Threefish - Sizes: 512 - Modes: CBC, CTS, CFB, OFB, CTR,
EAX, SIV
Twofish - Sizes: 128- Modes: CBC, CTS, CFB, OFB,
CTR, EAX, GCM, SIV
SHA-2 - Sizes: 224/256/384/512
SHA-3 - Sizes: 224/256/384/512
Skein - Sizes: 512
Whirlpool - Sizes: 512
RSA
Elliptic Curve Diffie-Hellman
HMAC RNG
ANSI X.923 RNG
SSL/TLS support is coming soon. Botan has supported SSL/TLS for a long
time, however, there were a few bugs in code that prevented Visual C++
from compiling the TLS modules. These are in the process of being fixed
and I'll be building a wrapper for TLS in Titanium shortly.
Botan currently supports x86, x64, and ARM, on Linux, OSX, Windows, iOS,
and Android. The only dependency that Botan has is on Boost, and any
recent version will do, I've tested it 1.54 and 1.55.
At this point in time, I only have the time and energy to maintain the
Windows portion of the code. Currently you can build it on Windows by
entering the directory and running Build.sh in the Git Console. However, I
could really use help in porting the build processes to other platforms.
Beyond Botan the code itself is pretty vanilla C++, so any recent compiler
should be able to compile the interface libraries without much fuss.
So if anybody has any interest in a Crypto library for D that is easy to
use and isn't OpenSSL, I could really use some help getting this library
ported to more platforms. Pull requests will be accepted!
Repositories:
Botan: https://github.com/randombit/botan/tree/net.randombit.botan
Titanium: https://github.com/ellipticbit/titanium
--
Adam Wilson
GitHub/IRC: LightBender
Aurora Project Coordinator