Skip to content

vincenthz/hs-cipher-aes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

TODO:

  • 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).

About

DEPRECATED - use cryptonite - a comprehensive fast AES implementation for haskell that supports aesni and advanced cryptographic modes.

Resources

License

Stars

Watchers

Forks

Packages

No packages published