The cryptonite package

[Tags:benchmark, bsd3, library, test]

A repository of cryptographic primitives.

If anything cryptographic related is missing from here, submit a pull request to have it added. This package strive to be a cryptographic kitchen sink that provides cryptography for everyone.

Evaluate the security related to your requirements before using.

[Skip to Readme]


Versions 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.15.1, 0.16, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24
Change log
Dependencies base (>=4.3 && <5), bytestring, deepseq, ghc-prim, integer-gmp, memory (>=0.8), Win32 [details]
License BSD3
Copyright Vincent Hanquez <>
Author Vincent Hanquez <>
Category Cryptography
Home page
Bug tracker
Source repository head: git clone
Uploaded Mon Aug 22 12:44:59 UTC 2016 by LukeTaylor
Distributions Arch:0.24, Debian:0.10, FreeBSD:0.6, LTSHaskell:0.21, NixOS:0.24, Stackage:0.23, Tumbleweed:0.21
Downloads 46623 total (8065 in the last 30 days)
2 []
Status Docs available [build log]
Last success reported on 2016-08-22 [all 1 reports]
Hackage Matrix CI




support_aesniallow compilation with AESNI on system and architecture that supports itEnabledManual
support_rdrandallow compilation with RDRAND on system and architecture that supports itEnabledManual
support_pclmuldqAllow compilation with pclmuldq on architecture that supports itDisabledManual
support_blake2_sseUse SSE optimized version of BLAKE2.DisabledManual
integer-gmpWhether or not to use GMP for some functionsEnabledManual
support_deepseqadd deepseq instances for cryptographic typesEnabledManual
old_toolchain_inlineruse -fgnu89-inline to workaround an old compiler / linker / glibc issue.DisabledManual

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for cryptonite

Readme for cryptonite-0.15.1


Join the chat at <a href=""></a> Build Status BSD Haskell

Cryptonite is a haskell repository of cryptographic primitives. Each crypto algorithm have specificities, that are hard to wrap in common APIs and types, so instead of trying to provide a common ground for algorithms that wouldn't allow to provide all different usage or a really complicated system, this just provide a non-consistant low-level API.

If you have no idea what're you doing, please do not use this directly, rely on higher level protocols or higher level implementation.

Documentation: cryptonite on hackage


Development versions are an incremental number prefixed by 0. No specific meaning is associated with the versions, specially no API stability.

Production versions : TBD

Coding Style

The coding style of this project mostly follows: haskell-style


cryptonite supports the following platform:

  • Windows >= 8
  • OSX >= 10.8
  • Linux
  • BSDs

On the following architectures:

  • x86-64
  • i386

On the following haskell versions:

  • GHC 7.0.x
  • GHC 7.4.x
  • GHC 7.6.x
  • GHC 7.8.x
  • GHC 7.10.x

Further platforms and architectures probably works too, but until maintainer(s) don't have regular access to them, we can't commit for further support

Known Building Issues

on OSX <= 10.7, the system compiler doesn't understand the '-maes' option, and with the lack of autodetection feature builtin in .cabal file, it is left on the user to disable the aesni. See the [Disabling AESNI] section

Disabling AESNI

It may be useful to disable AESNI (for building, testing or runtime purpose), and one can do that with the support_aesni flag.

As part of configure of cryptonite:

  cabal configure --flag='-support_aesni'

or as part of an installation:

  cabal install --constraint="cryptonite -support_aesni"

For help with cabal flags, see: stackoverflow : is there a way to define flags for cabal



  • add support for XSalsa