-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Symmetrical block and stream ciphers.
--   
--   Symmetrical block and stream ciphers.
@package cryptocipher
@version 0.6.1

module Crypto.Cipher

-- | Symmetric cipher class.
class Cipher cipher
cipherInit :: Cipher cipher => Key cipher -> cipher
cipherName :: Cipher cipher => cipher -> String
cipherKeySize :: Cipher cipher => cipher -> KeySizeSpecifier

-- | Symmetric block cipher class
class Cipher cipher => BlockCipher cipher
blockSize :: BlockCipher cipher => cipher -> Int
ecbEncrypt :: BlockCipher cipher => cipher -> ByteString -> ByteString
ecbDecrypt :: BlockCipher cipher => cipher -> ByteString -> ByteString
cbcEncrypt :: BlockCipher cipher => cipher -> IV cipher -> ByteString -> ByteString
cbcDecrypt :: BlockCipher cipher => cipher -> IV cipher -> ByteString -> ByteString
cfbEncrypt :: BlockCipher cipher => cipher -> IV cipher -> ByteString -> ByteString
cfbDecrypt :: BlockCipher cipher => cipher -> IV cipher -> ByteString -> ByteString
ctrCombine :: BlockCipher cipher => cipher -> IV cipher -> ByteString -> ByteString
xtsEncrypt :: BlockCipher cipher => (cipher, cipher) -> IV cipher -> DataUnitOffset -> ByteString -> ByteString
xtsDecrypt :: BlockCipher cipher => (cipher, cipher) -> IV cipher -> DataUnitOffset -> ByteString -> ByteString
aeadInit :: (BlockCipher cipher, Byteable iv) => AEADMode -> cipher -> iv -> Maybe (AEAD cipher)

-- | Symmetric stream cipher class
class Cipher cipher => StreamCipher cipher
streamCombine :: StreamCipher cipher => cipher -> ByteString -> (ByteString, cipher)

-- | AES with 128 bit key
data AES128 :: *

-- | AES with 192 bit key
data AES192 :: *

-- | AES with 256 bit key
data AES256 :: *

-- | variable keyed blowfish state
data Blowfish :: *

-- | DES Context
data DES :: *

-- | 3DES with 3 different keys used all in the same direction
data DES_EEE3 :: *

-- | 3DES with 3 different keys used in alternative direction
data DES_EDE3 :: *

-- | 3DES where the first and third keys are equal, used in the same
--   direction
data DES_EEE2 :: *

-- | 3DES where the first and third keys are equal, used in alternative
--   direction
data DES_EDE2 :: *

-- | Camellia block cipher with 128 bit key
data Camellia128 :: *
