úÎ¸å   . BModes ECB and CBC can only handle full 16-byte frames. This means D the length of every strict bytestring passed in must be a multiple ) of 16; when using lazy bytestrings, its  component strict $ bytestrings must all satisfy this.  !"#$Must be 16, 24 or 32 bytes %Create 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 A 16, 24 or 32-byte AES key  A 16-byte IV &'%Create a context for ECB, which doesn' t need an IV A 16, 24 or 32-byte AES key ()Incrementally encrypt/decrypt bytestrings (crypt is definitely not thread-safe. Don't even think about  it. *+,-./012 %') %') 3  Encryption/ decryption for lazy bytestrings  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 !The AES key - 16, 24 or 32 bytes Bytestring to encrypt/decrypt 456    7      !"  ##$%&'( )*+,-./0123456 SimpleAES-0.2Codec.Crypto.SimpleAESCodec.Crypto.AES.IOModeCBCECB DirectionDecryptEncryptIVKeynewIV randomKeycrypt_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_encryptDecryptCtxStructEncryptCtxStruct DecryptCtxP EncryptCtxPDirectionalCtx DecryptCtx EncryptCtxAESCtxCBCCtxECBCtxAESKeytoKeynewCtxnewCtx' newECBCtx newECBCtx'crypt'callcallivaddiv aes_ctr_cryptwrapensure encryptCtx decryptCtxnewSeed lazyCryptrepackrandomByteString