Subject: Re: [boost] [crypto] Finalisation
From: Kasra (kasra_n500_at_[hidden])
Date: 2009-01-05 11:24:58


Dear Kevin,

I didn't know you were working on your library I thought you have coded one and decided it was enough for your needs and had stopped developing.

So if we are both developing I personally think it is more than silly to code two separate libraries instead of focusing on one. If you are interested we could merge the current progress into 1 library.

In regards to your comment about the amount of code, I have the following algorithms fully functioning (some need little attention):

BlockCiphers: Blowfish, Cast-256, Khazad, Mars, Rijndael, RC2, RC5, RC6, Serpent, Twofish

All of the above implementations are generic, for example rc6 is defined as follows:
template
<
size_t R, // # of rounds
typename W // word size {uint8_t,uint16_t,uint32_t,uint64_t}
> class rc6_cipher;

// the recommended rc6, although completely generic
// but the following typedef could gain performance of
// 26 Clocks Per Byte (CPB) which is _almost_ as fast as it gets
typedef rc6_cipher<20,32> rc6;

StreamCiphers: RC4, HC-128/256, Rabbit, Salsa, Sosemanuk

Hash Functions: MD4, MD5, SHA-1, SHA-244, SHA-256, SHA-384, SHA-512, Whirlpool, (ifdef BOOST_CRYPTO_EXPERIMENTAL) { MD6, Sekin }

Padding: One-zero, ISO-10126, PKCS-7.

Mode Of operation: ECB, CBC, OFB, CFB, CTR-E, CTR-D, LRW, XTS

mode of operations is something like:
template
<
BlockCipher BlockCipherT,
PaddingAlgorithm PaddingAlgorithmT
>
class XTS;

Also endian class which is designed to read/write correct endian values from/to memory.

I haven't implemented Public key cryptography because of not having a clear answer to what library to use for large number operations, or for example implement internal library for it.

With Best Regards

Kasra