-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathTypes.hs
35 lines (27 loc) · 1.16 KB
/
Types.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{-# LANGUAGE DeriveDataTypeable #-}
-- |Type aliases used throughout the crypto-api modules.
module Crypto.Types where
import qualified Control.Exception as X
import Data.Data
import Data.Typeable
import Data.ByteString as B
import Data.ByteString.Lazy as L
-- |Initilization Vectors for BlockCipher implementations (IV k) are
-- used for various modes and guarrenteed to be blockSize bits long.
-- The common ways to obtain an IV are to generate one ('getIV' or
-- 'getIVIO') or to use one provided with the ciphertext (using the
-- 'Serialize' instance of IV).
--
-- 'zeroIV' also exists and is of particular use for starting 'ctr'
-- mode with a fresh key.
data IV k = IV { initializationVector :: {-# UNPACK #-} !B.ByteString
} deriving (Eq, Ord, Show)
-- |The length of a field (usually a ByteString) in bits
type BitLength = Int
-- |The length fo a field in bytes.
type ByteLength = Int
data BlockCipherError = InputTooLong String
| AuthenticationFailed String
| Other String
deriving (Eq, Ord, Show, Read, Data, Typeable)
instance X.Exception BlockCipherError