* Refine encryption
- Add AES-CTR, blowfish and camellia ciphers
aes-256-ctr
aes-192-ctr
aes-128-ctr
bf-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
- Merge the previous PolarSSL and MbedTLS
- Switch to MbedTLS's cipher layer functions
- Add workaround to set cipher operation(encrypt/decrypt)
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
* Add function to get MbedTLS cipher context size
and drop hard-coded ctx sizes
Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
The stock code use class Random to generate IV, the Random is pseudo random number generator. The IV maybe repeat, this will cause shadowsocks-libev closed the sockets with the error message 'invalid password or cipher'. Reference https://github.com/shadowsocks/shadowsocks-libev/issues/389
Solution is use class RNGCryptoServiceProvider to generate IV, of course it's lower performance, but a little bit.