cryptonite: Cryptography Primitives sink
A repository of cryptographic primitives.
Symmetric ciphers: AES, DES, 3DES, CAST5, Blowfish, Twofish, Camellia, RC4, Salsa, XSalsa, ChaCha.
Hash: SHA1, SHA2, SHA3, SHAKE, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger, Whirlpool, Blake2
MAC: HMAC, KMAC, Poly1305
Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Curve448, Ed25519, Ed448
Key Derivation Function: PBKDF2, Scrypt, HKDF, Argon2, BCrypt, BCryptPBKDF
Cryptographic Random generation: System Entropy, Deterministic Random Generator
Data related: Anti-Forensic Information Splitter (AFIS)
If anything cryptographic related is missing from here, submit a pull request to have it added. This package strives 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]
Modules
[Index] [Quick Jump]
- Crypto
- Cipher
- Crypto.Cipher.AES
- Crypto.Cipher.AESGCMSIV
- Crypto.Cipher.Blowfish
- Crypto.Cipher.CAST5
- Crypto.Cipher.Camellia
- Crypto.Cipher.ChaCha
- Crypto.Cipher.ChaChaPoly1305
- Crypto.Cipher.DES
- Crypto.Cipher.RC4
- Crypto.Cipher.Salsa
- Crypto.Cipher.TripleDES
- Crypto.Cipher.Twofish
- Crypto.Cipher.Types
- Crypto.Cipher.Utils
- Crypto.Cipher.XSalsa
- ConstructHash
- Data
- Crypto.ECC
- Crypto.Error
- Crypto.Hash
- KDF
- MAC
- Number
- Crypto.OTP
- PubKey
- Crypto.Random
- System
- Crypto.Tutorial
- Cipher
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| support_aesni | allow compilation with AESNI on system and architecture that supports it | Enabled |
| support_rdrand | allow compilation with RDRAND on system and architecture that supports it | Enabled |
| support_pclmuldq | Allow compilation with pclmuldq on architecture that supports it | Disabled |
| support_sse | Use SSE optimized version of (BLAKE2, ARGON2) | Disabled |
| integer-gmp | Whether or not to use GMP for some functions | Enabled |
| support_deepseq | add deepseq instances for cryptographic types | Enabled |
| old_toolchain_inliner | use -fgnu89-inline to workaround an old compiler linker glibc issue. | Disabled |
| check_alignment | extra check on alignment in C layers, which cause lowlevel assert errors. for debugging only. | Disabled |
| use_target_attributes | use GCC / clang function attributes instead of global target options. | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- cryptonite-0.30.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 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, 0.26, 0.27, 0.28, 0.29, 0.30 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base , basement (>=0.0.6), bytestring , deepseq , ghc-prim , integer-gmp , memory (>=0.14.18), Win32 [details] |
| Tested with | ghc ==9.2.2, ghc ==9.0.2, ghc ==8.10.7, ghc ==8.8.4 |
| License | BSD-3-Clause |
| Copyright | Vincent Hanquez <vincent@snarc.org> |
| Author | Vincent Hanquez <vincent@snarc.org> |
| Maintainer | vincent@snarc.org |
| Category | Cryptography |
| Home page | https://github.com/haskell-crypto/cryptonite |
| Bug tracker | https://github.com/haskell-crypto/cryptonite/issues |
| Source repo | head: git clone https://github.com/haskell-crypto/cryptonite |
| Uploaded | by VincentHanquez at 2022年03月13日T12:56:59Z |
| Distributions | Arch:0.30, Debian:0.26, Fedora:0.30, FreeBSD:0.6, LTSHaskell:0.30, NixOS:0.30, openSUSE:0.30 |
| Reverse Dependencies | 255 direct, 3604 indirect [details] |
| Downloads | 167533 total (139 in the last 30 days) |
| Rating | 2.75 (votes: 13) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2022年03月13日 [all 1 reports] |
Readme for cryptonite-0.30
[back to package description]cryptonite
Join the chat at https://gitter.im/vincenthz/cryptonite 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
Stability
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.
Versioning
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
Support
See Haskell packages guidelines
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
On CentOS 7 the default C compiler includes intrinsic header files incompatible with per-function target options. Solutions are to use GCC >= 4.9 or disable flag use_target_attributes (see flag configuration examples below).
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
Enabling PCLMULDQ
When the C toolchain supports it, enabling flag support_pclmuldq can bring additional security and performance for AES GCM. A CPU with the necessary instruction set will use an alternate implementation selected at runtime.