AES-0.0.1: Codec/Crypto/AES.hs
-- | A pure interface to AES
module Codec.Crypto.AES(
Mode(..), Direction(..), crypt, crypt'
) where
import qualified Codec.Crypto.AES.ST as AES
import Codec.Crypto.AES.ST(Mode(..), Direction(..))
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
-- | Encryption/decryption for lazy bytestrings
crypt :: Mode
-> B.ByteString -- ^ The AES key - 16, 24 or 32 bytes
-> B.ByteString -- ^ The IV, 16 bytes
-> Direction
-> BL.ByteString -- ^ Bytestring to encrypt/decrypt
-> BL.ByteString
crypt mode key iv dir bs = AES.execAES mode key iv dir (AES.crypt bs)
-- | Encryption/decryption for strict bytestrings
crypt' :: Mode
-> B.ByteString -- ^ The AES key - 16, 24 or 32 bytes
-> B.ByteString -- ^ The IV, 16 bytes
-> Direction
-> B.ByteString -- ^ Bytestring to encrypt/decrypt
-> B.ByteString
crypt' mode key iv dir bs = B.concat $ BL.toChunks $ AES.execAES mode key iv dir (AES.crypt bs)