add streaming support for encryption / decryption + tests