crypton: Cryptography Primitives sink

[ bsd3, cryptography ] [ Propose Tags ]

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]

Flags

Manual Flags

NameDescriptionDefault
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

Enabled
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

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.31, 0.32, 0.33, 0.34, 1.0.0, 1.0.1 (info)
Change log CHANGELOG.md
Dependencies base, basement (>=0.0.6), bytestring, deepseq, ghc-prim, integer-gmp, memory (>=0.14.18), Win32 [details]
License BSD-3-Clause
Copyright Vincent Hanquez <vincent@snarc.org>
Author Vincent Hanquez <vincent@snarc.org>
Maintainer Kazu Yamamoto <kazu@iij.ad.jp>
Category Cryptography
Home page https://github.com/kazu-yamamoto/crypton
Bug tracker https://github.com/kazu-yamamoto/crypton/issues
Source repo head: git clone https://github.com/kazu-yamamoto/crypton
Uploaded by KazuYamamoto at 2023-06-19T22:57:40Z
Distributions Arch:0.34, LTSHaskell:0.34, NixOS:0.34, Stackage:1.0.1, openSUSE:1.0.1
Reverse Dependencies 64 direct, 3565 indirect [details]
Downloads 5017 total (458 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for crypton-0.32

[back to package description]

GitHub Actions status

crypton

Crypton is a fork from cryptonite with the original author's permission.

Crypton 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: crypton on hackage

Stability

Crypton 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 crypton 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 crypton:

  cabal configure --flag='-support_aesni'

or as part of an installation:

  cabal install --constraint="crypton -support_aesni"

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