commsec-0.3.4: Network/CommSec/Types.hs
{-# LANGUAGE DeriveDataTypeable #-}
module Network.CommSec.Types where
import Control.Exception
import Data.Data
import Data.Typeable
import Control.Concurrent.MVar
-- |Errors that can be returned by the decoding/receicing operations.
data CommSecError
= OldContext -- The context is too old (sequence number rollover)
| DuplicateSeq -- The sequence number we previously seen (possible replay attack)
| InvalidICV -- The integrity check value is invalid
| BadPadding -- The padding was invalid (corrupt sender?)
| BuildKeyFailure -- The entropy was insufficent to build a key (bytestring too short)
deriving (Eq,Ord,Show,Enum,Data,Typeable)
-- |Policy for misordered packets. Notice StrictOrdering does not mean
-- every sequence numbered packet will be received, only that the sequence
-- number will always increase.
data SequenceMode
= AllowOutOfOrder -- In IPSec style, allow for datagrams to be recieved out of order
| StrictOrdering -- Allow messages with newer sequence numbers than previously observed, but drop any with older.
| Sequential -- Allows messages only if the sequence number matches the expected value
deriving (Eq,Ord,Show,Enum,Data,Typeable)
instance Exception CommSecError