{-# LANGUAGE DeriveDataTypeable #-}

-- |
-- Module      : Crypto.Cipher.Types
-- License     : BSD-style
-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
-- Stability   : Stable
-- Portability : Excellent
--
-- Symmetric cipher basic types
module Crypto.Cipher.Types (
    -- * Cipher classes
    Cipher (..),
    BlockCipher (..),
    BlockCipher128 (..),
    StreamCipher (..),
    DataUnitOffset,
    KeySizeSpecifier (..),
    -- , cfb8Encrypt
    -- , cfb8Decrypt

    -- * AEAD functions
    AEADMode (..),
    CCM_M (..),
    CCM_L (..),
    module Crypto.Cipher.Types.AEAD,

    -- * Initial Vector type and constructor
    IV,
    makeIV,
    nullIV,
    ivAdd,

    -- * Authentification Tag
    AuthTag (..),
) where

import Crypto.Cipher.Types.AEAD
import Crypto.Cipher.Types.Base
import Crypto.Cipher.Types.Block
import Crypto.Cipher.Types.Stream