Raaz is a cryptographic library for Haskell. The library
is designed with a special emphasis on using the type system of
Haskell to eliminate a large set of vulnerabilities like buffer
overflows, timing attacks etc. It also strives to achieve this
safety with no compromise on performance.

Flags

Use optimisation for the platform on which it is being built. Do not enable this
when cross compiling as it can break the implementation. Also tested only with gcc.

Disabled

Manual

vector128

Make use of vector instructions with size being 128. Do not enable this unless you have reasons
to. It is better to use opt-native and opt-vectorise and let gcc have a go at the portable implementation

Disabled

Manual

vector256

Make use of gcc vector instructions with size being 256. Do not enable this unless you have reasons
to. It is better to use opt-native and opt-vectorise and let gcc have a go at the portable implementation.

Disabled

Manual

vector512

Make use of gcc vector instructions with size being 512.

Disabled

Manual

avx2

Support avx2 optimisations. Warning: enable only if you are sure of support.

Disabled

Manual

linux-getrandom

Use the getrandom for system entropy instead of devurandom. Available only on linux kernel > 3.17.

Disabled

Manual

liquidhaskell

Use liquid haskell form verifying properties. Only for developers.

Disabled

Manual

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

Maintainer's Corner

Readme for raaz-0.2.0

Raaz: A secure cryptographic library

This is the repository of raaz, a Haskell library that implements
some standard cryptographic primitives. This library is the basis on
which we plan to build a cryptographic framework in Haskell. For
example, there are plans to implement some common cryptographic
protocols like ssh. Thus applications that require cryptographic
security, in particular secure networking applications can be built
out of this.

Raaz is also an attempt to provide better security guarantees by
making use of Haskell's strong typing. Besides, we put a lot of
emphasis on better API design and good documentation which, we
believe, makes the usage of the library secure.

Hacking and Discussion

Releasing and reviewing.

The repository also contains the file Releasing.md which contains
checklist for releasing a new version of the library. Any crypto
library should undergo through review by multiple people. In the file
Reviewing.md, we collect some common pitfalls to look for while
reviewing the code. It is good to actively look for some of the
problems suggested there but of course one should also look for other
problems.