Skip to content
DEPRECATED - use cryptonite - a comprehensive fast AES implementation for haskell that supports aesni and advanced cryptographic modes.
C Haskell
Branch: master
Clone or download
Latest commit 646ff29 Jun 21, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
Crypto/Cipher make the call unsafe, so as to block the GC. /!\ hack Jan 10, 2015

Fast AES for haskell

This is a simple and efficient AES implementation providing all most important mode of operations.

Modes supported:

  • ECB
  • CBC
  • CTR
  • XTS
  • GCM
  • OCB

Implementation details:

  • C implementation.
  • Pure interface to haskell.
  • support AESNI instructions if available (Intel and AMD).
  • GCM mode only works on byte boundary.


  • remove create_round_key from sw implementation.
  • add aesni acceleration for aes192.
  • add pclmulqdq acceleration for GF.
  • make galois multiplication endian safe.
  • optimise further (lots of low hanging fruits).
  • add a streaming GCM API
  • GCM's GMAC support

Compilation Errors

Some older installed system do not support AESNI instructions, and cabal doesn't have a good mechanism for doing discovery of those old systems limitations.

One can use the following lists of command to solve the problems (doing forget to substitute what need be):

cabal unpack cipher-aes
cd cipher-aes-<VERSION>
cabal configure --flag -support_aesni <OTHER OPTIONS>
cabal install

Another alternative is upgrading your userspace environment to have a gcc version that is at least >= 4.4 (2009), and a binutils >= 2.18 (2007).

You can’t perform that action at this time.