MDeltaX / cipher-aes128

Based on cipher-aes, but using a crypto-api interface and providing resulting IVs for each mode

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TravisCI

AES and various modes

This package, available on hackage, implements AES and various modes of operation. Despite the name, it provides AES-192 and 256 as well.

While it original started as a fork of the cipher-aes package to test a performance improvement, this package continues to be maintained due to my preference for the API (for example, also this) and the idea that faster C code will eventually be adopted.

Use

Most users will want the crypto-api interface to generate keys and encrypt/decrypt data:

{-# LANGUAGE OverloadedStrings #-}
import Data.ByteString
import Crypto.Cipher.AES128 (AESKey128)
import Crypto.Classes (buildKeyIO, ctr, unCtr, zeroIV)

main =
 do k <- buildKeyIO :: IO AESKey128
    let myMessage            = "Some message or another"
        (ciphertext,_nextIV) = ctr k zeroIV myMessage
        (myMessage',_nextIV) = unCtr k zeroIV ciphertext
    print (unpack myMessage)
    print (unpack ciphertext)
    print $ myMessage == myMessage'

Unless you need GCM in which case, as of writing, you'll need to use makeGCMCtx, encryptGCM and decryptGCM.

About

Based on cipher-aes, but using a crypto-api interface and providing resulting IVs for each mode

License:Other


Languages

Language:C 77.8%Language:Haskell 22.2%