-- |
-- Module      : Crypto.Cipher.Types.Stream
-- License     : BSD-style
-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
-- Stability   : Stable
-- Portability : Excellent
--
-- Stream cipher basic types
--
module Crypto.Cipher.Types.Stream
    ( StreamCipher(..)
    ) where

import Crypto.Cipher.Types.Base
import Crypto.Internal.ByteArray (ByteArray)

-- | Symmetric stream cipher class
class Cipher cipher => StreamCipher cipher where
    -- | Combine using the stream cipher
    streamCombine :: ByteArray ba => cipher -> ba -> (ba, cipher)