Cryptography
The libraries in this subsection are as follows:
SHA
andRSA
: Pure implementations of SHA routines and RSA encryption and signature algorithms. Not the fastest, but plain Haskell without any FFI. Created by Galois Inc.HsOpenSSL
: Partial bindings to OpenSSL via FFI.cryptonite
: Low-level cryptography primitives with varying API's and probably of varying quality.skein
: Bindings to the skein family of fast and secure cryptographic hash functions.
For really robust, production-ready cryptography applications, one should look for bindings to existing cryptography libraries. For instance, the C implementation of the Skein hash function family has Haskell bindings in the similarly named library skein
.
Although Haskell can be used to implement cryptographic algorithms, many of the algorithms rely on bit-twiddling for security in ways that GHC's code optimizations can potentially negate. This makes code vulnerable to side-channel attacks.
That said, some pure Haskell implementations of some...