úÎΠ     NoneCreate an encryption/#decryption context for incremental  encryption/ decryption CYou may create an ECB context this way, in which case you may pass  undefined for the IV %Create a context for ECB, which doesn' t need an IV Incrementally encrypt/decrypt bytestrings (crypt is definitely not thread-safe. Don't even think about  it. 0 !"#$%&'()*+Must be 16, 24 or 32 bytes A 16, 24 or 32-byte AES key  A 16-byte IV ,A 16, 24 or 32-byte AES key -./012345678 & !"#$%&'()*+,-./012345678None 9Encrypt a bytestring using a random seed (IV). Since the 3 seed is random, this function is tainted by IO. .Encrypt a ByteString using a given seed (IV). D The resulting ByteString contains both the seed and the original ) length of the input (before padding).  Encryption/Ddecryption for lazy bytestrings. The input string is zero-padded to X a multiple of 16. It is your obligation to separate encode the length of the string.  Properties: B x == y => crypt mode key iv dir x == crypt mode key iv dir y T take (length x) (crypt mode key iv Decrypt (crypt mode key iv Encrypt x)) == x 9: !The AES key - 16, 24 or 32 bytes Bytestring to encrypt/decrypt ;<=   9: ;<=>        !"#$%&'()*+,-./0123456789:;<=SimpleAES-0.4.2Codec.Crypto.SimpleAESCodec.Crypto.AES.IOModeCBCECB DirectionDecryptEncryptIVKeynewIV randomKey encryptMsg encryptMsg' decryptMsg decryptMsg'cryptnewCtx newECBCtxDecryptCtxStructEncryptCtxStruct DecryptCtxP EncryptCtxPDirectionalCtx DecryptCtx EncryptCtxAESCtxCBCCtxECBCtxAESKey_aes_decrypt_key_aes_encrypt_key_ctr_inc_aes_ctr_crypt_aes_ofb_crypt_aes_cfb_decrypt_aes_cfb_encrypt_aes_cbc_decrypt_aes_cbc_encrypt_aes_ecb_decrypt_aes_ecb_encrypttoKeynewCtx' newECBCtx'crypt'callcallivaddiv aes_ctr_cryptwrapensure encryptCtx decryptCtx$fStorableDecryptCtxStruct$fStorableEncryptCtxStructnewSeedivLength lazyCryptrepackrandomByteString