/// <summary>
        /// Decrypt the incoming encryptedStream.
        /// </summary>
        /// <param name="encryptedStream"></param>
        /// <param name="key"></param>
        /// <param name="iv"></param>
        /// <returns>The plaintext stream derived from encrypted stream</returns>
        public Stream DecryptStream(Stream encryptedStream, byte[] key, byte[] iv)
        {
            ICryptoTransform iTransform = new Salsa20CryptoTransform(key, iv);

            return(new CryptoStream(encryptedStream, iTransform, CryptoStreamMode.Read));
        }
        /// <summary>
        /// Encrypt the incoming plainTextStream.
        /// </summary>
        /// <param name="plainTextStream"></param>
        /// <param name="key"></param>
        /// <param name="iv"></param>
        /// <returns>An encrypted stream of bytes</returns>
        public Stream EncryptStream(Stream plainTextStream, byte[] key, byte[] iv)
        {
            ICryptoTransform iTransform = new Salsa20CryptoTransform(key, iv);

            return(new CryptoStream(plainTextStream, iTransform, CryptoStreamMode.Write));
        }