cryptonite: Cryptography Primitives sink

[ bsd3, cryptography, library ] [ Propose Tags ]
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, 0.25
Change log
Dependencies base (>=4.6 && <5), basement (>=0.0.6), bytestring, deepseq, ghc‑prim, integer‑gmp, memory (>=0.14.14), Win32 [details]
License BSD-3-Clause
Copyright Vincent Hanquez <>
Author Vincent Hanquez <>
Category Cryptography
Home page
Bug tracker
Source repo head: git clone
Uploaded by VincentHanquez at Tue Feb 6 15:35:07 UTC 2018
Distributions Arch:0.24, Debian:0.10, Fedora:0.24, FreeBSD:0.6, LTSHaskell:0.25, NixOS:0.25, Stackage:0.25, openSUSE:0.24
Downloads 86380 total (608 in the last 30 days)
Rating 2.25 (votes: 5) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-02-06 [all 1 reports]
Hackage Matrix CI

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.

Read Crypto.Tutorial for a quick start guide.

[Skip to Readme]





allow compilation with AESNI on system and architecture that supports it


allow compilation with RDRAND on system and architecture that supports it


Allow compilation with pclmuldq on architecture that supports it


Use SSE optimized version of (BLAKE2, ARGON2)


Whether or not to use GMP for some functions


add deepseq instances for cryptographic types


use -fgnu89-inline to workaround an old compiler linker glibc issue.


extra check on alignment in C layers, which cause lowlevel assert errors. for debugging only.


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-0.25

[back to package description]


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

Cryptonite is a haskell repository of cryptographic primitives. Each crypto algorithm has specificities that are hard to wrap in common APIs and types, so instead of trying to provide a common ground for algorithms, this package provides a non-consistent low-level API.

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

Documentation: cryptonite on hackage


Cryptonite APIs are stable, and we only strive to add, not change or remove. Note that because the API exposed is wide and also expose internals things (for power users and flexibility), certains APIs can be revised in extreme cases where we can't just add.


Next version of 0.x is 0.(x+1). There's no exceptions, or API related meaning behind the numbers.

Each versions of stackage (going back 3 stable LTS) has a cryptonite version that we maintain with security fixes when necessary and are versioned with the following 0.x.y scheme.

Coding Style

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


cryptonite supports the following platforms:

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

On the following architectures:

  • x86-64
  • i386

On the following haskell versions:

  • GHC 7.8.x
  • GHC 7.10.x
  • GHC 8.0.x
  • GHC 8.2.x

Further platforms and architectures probably work too, but since the maintainer(s) don't have regular access to them, we can't commit to 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 purposes. This is achieved 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