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

Reply via email to