packages feed

Cabal revisions of cryptonite-0.29

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-Name:                cryptonite-version:             0.29-Synopsis:            Cryptography Primitives sink-Description:-    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.-License:             BSD3-License-file:        LICENSE-Copyright:           Vincent Hanquez <vincent@snarc.org>-Author:              Vincent Hanquez <vincent@snarc.org>-Maintainer:          vincent@snarc.org-Category:            Cryptography-Stability:           experimental-Build-Type:          Simple-Homepage:            https://github.com/haskell-crypto/cryptonite-Bug-reports:         https://github.com/haskell-crypto/cryptonite/issues-Cabal-Version:       1.18-tested-with:         GHC==8.8.2, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2-extra-doc-files:     README.md CHANGELOG.md-extra-source-files:  cbits/*.h-                     cbits/aes/*.h-                     cbits/ed25519/*.h-                     cbits/decaf/include/*.h-                     cbits/decaf/include/decaf/*.h-                     cbits/decaf/include/arch_32/*.h-                     cbits/decaf/include/arch_ref64/*.h-                     cbits/decaf/p448/arch_32/*.h-                     cbits/decaf/p448/arch_ref64/*.h-                     cbits/decaf/p448/*.h-                     cbits/decaf/ed448goldilocks/decaf_tables.c-                     cbits/decaf/ed448goldilocks/decaf.c-                     cbits/include32/p256/*.h-                     cbits/include64/p256/*.h-                     cbits/blake2/ref/*.h-                     cbits/blake2/sse/*.h-                     cbits/argon2/*.h-                     cbits/argon2/*.c-                     cbits/aes/x86ni_impl.c-                     cbits/cryptonite_hash_prefix.c-                     tests/*.hs--source-repository head-  type: git-  location: https://github.com/haskell-crypto/cryptonite--Flag support_aesni-  Description:       allow compilation with AESNI on system and architecture that supports it-  Default:           True-  Manual:            True--Flag support_rdrand-  Description:       allow compilation with RDRAND on system and architecture that supports it-  Default:           True-  Manual:            True--Flag support_pclmuldq-  Description:       Allow compilation with pclmuldq on architecture that supports it-  Default:           False-  Manual:            True--Flag support_sse-  Description:       Use SSE optimized version of (BLAKE2, ARGON2)-  Default:           False-  Manual:            True--Flag integer-gmp-  Description:       Whether or not to use GMP for some functions-  Default:           True-  Manual:            True--Flag support_deepseq-  Description:       add deepseq instances for cryptographic types-  Default:           True-  Manual:            True--Flag old_toolchain_inliner-  Description:       use -fgnu89-inline to workaround an old compiler / linker / glibc issue.-  Default:           False-  Manual:            True--Flag check_alignment-  Description:       extra check on alignment in C layers, which cause lowlevel assert errors. for debugging only.-  Default:           False-  Manual:            True--Flag use_target_attributes-  Description:       use GCC / clang function attributes instead of global target options.-  Default:           True-  Manual:            True--Library-  Exposed-modules:   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-                     Crypto.ConstructHash.MiyaguchiPreneel-                     Crypto.Data.AFIS-                     Crypto.Data.Padding-                     Crypto.ECC-                     Crypto.ECC.Edwards25519-                     Crypto.Error-                     Crypto.MAC.CMAC-                     Crypto.MAC.Poly1305-                     Crypto.MAC.HMAC-                     Crypto.MAC.KMAC-                     Crypto.Number.Basic-                     Crypto.Number.F2m-                     Crypto.Number.Generate-                     Crypto.Number.ModArithmetic-                     Crypto.Number.Nat-                     Crypto.Number.Prime-                     Crypto.Number.Serialize-                     Crypto.Number.Serialize.LE-                     Crypto.Number.Serialize.Internal-                     Crypto.Number.Serialize.Internal.LE-                     Crypto.KDF.Argon2-                     Crypto.KDF.PBKDF2-                     Crypto.KDF.Scrypt-                     Crypto.KDF.BCrypt-                     Crypto.KDF.BCryptPBKDF-                     Crypto.KDF.HKDF-                     Crypto.Hash-                     Crypto.Hash.IO-                     Crypto.Hash.Algorithms-                     Crypto.OTP-                     Crypto.PubKey.Curve25519-                     Crypto.PubKey.Curve448-                     Crypto.PubKey.MaskGenFunction-                     Crypto.PubKey.DH-                     Crypto.PubKey.DSA-                     Crypto.PubKey.ECC.Generate-                     Crypto.PubKey.ECC.Prim-                     Crypto.PubKey.ECC.DH-                     Crypto.PubKey.ECC.ECDSA-                     Crypto.PubKey.ECC.P256-                     Crypto.PubKey.ECC.Types-                     Crypto.PubKey.ECDSA-                     Crypto.PubKey.ECIES-                     Crypto.PubKey.Ed25519-                     Crypto.PubKey.Ed448-                     Crypto.PubKey.EdDSA-                     Crypto.PubKey.RSA-                     Crypto.PubKey.RSA.PKCS15-                     Crypto.PubKey.RSA.Prim-                     Crypto.PubKey.RSA.PSS-                     Crypto.PubKey.RSA.OAEP-                     Crypto.PubKey.RSA.Types-                     Crypto.PubKey.Rabin.OAEP-                     Crypto.PubKey.Rabin.Basic-                     Crypto.PubKey.Rabin.Modified-                     Crypto.PubKey.Rabin.RW-                     Crypto.PubKey.Rabin.Types-                     Crypto.Random-                     Crypto.Random.Types-                     Crypto.Random.Entropy-                     Crypto.Random.EntropyPool-                     Crypto.Random.Entropy.Unsafe-                     Crypto.System.CPU-                     Crypto.Tutorial-  Other-modules:     Crypto.Cipher.AES.Primitive-                     Crypto.Cipher.Blowfish.Box-                     Crypto.Cipher.Blowfish.Primitive-                     Crypto.Cipher.CAST5.Primitive-                     Crypto.Cipher.Camellia.Primitive-                     Crypto.Cipher.DES.Primitive-                     Crypto.Cipher.Twofish.Primitive-                     Crypto.Cipher.Types.AEAD-                     Crypto.Cipher.Types.Base-                     Crypto.Cipher.Types.Block-                     Crypto.Cipher.Types.GF-                     Crypto.Cipher.Types.Stream-                     Crypto.Cipher.Types.Utils-                     Crypto.Error.Types-                     Crypto.Number.Compat-                     Crypto.Hash.Types-                     Crypto.Hash.Blake2-                     Crypto.Hash.Blake2s-                     Crypto.Hash.Blake2sp-                     Crypto.Hash.Blake2b-                     Crypto.Hash.Blake2bp-                     Crypto.Hash.SHA1-                     Crypto.Hash.SHA224-                     Crypto.Hash.SHA256-                     Crypto.Hash.SHA384-                     Crypto.Hash.SHA512-                     Crypto.Hash.SHA512t-                     Crypto.Hash.SHA3-                     Crypto.Hash.SHAKE-                     Crypto.Hash.Keccak-                     Crypto.Hash.MD2-                     Crypto.Hash.MD4-                     Crypto.Hash.MD5-                     Crypto.Hash.RIPEMD160-                     Crypto.Hash.Skein256-                     Crypto.Hash.Skein512-                     Crypto.Hash.Tiger-                     Crypto.Hash.Whirlpool-                     Crypto.Random.Entropy.Source-                     Crypto.Random.Entropy.Backend-                     Crypto.Random.ChaChaDRG-                     Crypto.Random.SystemDRG-                     Crypto.Random.Probabilistic-                     Crypto.PubKey.Internal-                     Crypto.PubKey.ElGamal-                     Crypto.ECC.Simple.Types-                     Crypto.ECC.Simple.Prim-                     Crypto.Internal.Builder-                     Crypto.Internal.ByteArray-                     Crypto.Internal.Compat-                     Crypto.Internal.CompatPrim-                     Crypto.Internal.DeepSeq-                     Crypto.Internal.Imports-                     Crypto.Internal.Nat-                     Crypto.Internal.Words-                     Crypto.Internal.WordArray-  if impl(ghc < 8.0)-    Buildable: False-  else-    Build-depends:   base--  Build-depends:     bytestring-                   , memory >= 0.14.18-                   , basement >= 0.0.6-                   , ghc-prim-  ghc-options:       -Wall -fwarn-tabs -optc-O3-  if os(linux)-    extra-libraries: pthread-  default-language:  Haskell2010-  cc-options:        -std=gnu99-  if flag(old_toolchain_inliner)-    cc-options:      -fgnu89-inline-  C-sources:         cbits/cryptonite_chacha.c-                   , cbits/cryptonite_salsa.c-                   , cbits/cryptonite_xsalsa.c-                   , cbits/cryptonite_rc4.c-                   , cbits/cryptonite_cpu.c-                   , cbits/p256/p256.c-                   , cbits/p256/p256_ec.c-                   , cbits/cryptonite_blake2s.c-                   , cbits/cryptonite_blake2sp.c-                   , cbits/cryptonite_blake2b.c-                   , cbits/cryptonite_blake2bp.c-                   , cbits/cryptonite_poly1305.c-                   , cbits/cryptonite_sha1.c-                   , cbits/cryptonite_sha256.c-                   , cbits/cryptonite_sha512.c-                   , cbits/cryptonite_sha3.c-                   , cbits/cryptonite_md2.c-                   , cbits/cryptonite_md4.c-                   , cbits/cryptonite_md5.c-                   , cbits/cryptonite_ripemd.c-                   , cbits/cryptonite_skein256.c-                   , cbits/cryptonite_skein512.c-                   , cbits/cryptonite_tiger.c-                   , cbits/cryptonite_whirlpool.c-                   , cbits/cryptonite_scrypt.c-                   , cbits/cryptonite_pbkdf2.c-                   , cbits/ed25519/ed25519.c-  include-dirs:      cbits-                   , cbits/ed25519-                   , cbits/decaf/include-                   , cbits/decaf/p448--  if arch(x86_64) || arch(aarch64)-    include-dirs:      cbits/include64-  else-    include-dirs:      cbits/include32--  if arch(x86_64) || arch(aarch64)-    C-sources:         cbits/decaf/p448/arch_ref64/f_impl.c-                     , cbits/decaf/p448/f_generic.c-                     , cbits/decaf/p448/f_arithmetic.c-                     , cbits/decaf/utils.c-                     , cbits/decaf/ed448goldilocks/scalar.c-                     , cbits/decaf/ed448goldilocks/decaf_all.c-                     , cbits/decaf/ed448goldilocks/eddsa.c--    include-dirs:      cbits/decaf/include/arch_ref64-                     , cbits/decaf/p448/arch_ref64-  else-    C-sources:         cbits/decaf/p448/arch_32/f_impl.c-                     , cbits/decaf/p448/f_generic.c-                     , cbits/decaf/p448/f_arithmetic.c-                     , cbits/decaf/utils.c-                     , cbits/decaf/ed448goldilocks/scalar.c-                     , cbits/decaf/ed448goldilocks/decaf_all.c-                     , cbits/decaf/ed448goldilocks/eddsa.c--    include-dirs:      cbits/decaf/include/arch_32-                     , cbits/decaf/p448/arch_32--  if arch(x86_64) || arch(aarch64)-    C-sources: cbits/curve25519/curve25519-donna-c64.c-  else-    C-sources: cbits/curve25519/curve25519-donna.c--  -- FIXME armel or mispel is also little endian.-  -- might be a good idea to also add a runtime autodetect mode.-  -- ARCH_ENDIAN_UNKNOWN-  if (arch(i386) || arch(x86_64))-    CPP-options: -DARCH_IS_LITTLE_ENDIAN--  if arch(i386)-    CPP-options: -DARCH_X86--  if arch(x86_64)-    CPP-options: -DARCH_X86_64--  if flag(support_rdrand) && (arch(i386) || arch(x86_64)) && !os(windows)-    CPP-options:    -DSUPPORT_RDRAND-    Other-modules:  Crypto.Random.Entropy.RDRand-    c-sources:      cbits/cryptonite_rdrand.c--  if flag(support_aesni) && (os(linux) || os(freebsd) || os(osx)) && (arch(i386) || arch(x86_64))-    CC-options:     -DWITH_AESNI-    if !flag(use_target_attributes)-      CC-options:     -mssse3 -maes-    if flag(support_pclmuldq)-      CC-options:   -DWITH_PCLMUL-      if !flag(use_target_attributes)-        CC-options:     -msse4.1 -mpclmul-    C-sources:       cbits/aes/x86ni.c-                   , cbits/aes/generic.c-                   , cbits/aes/gf.c-                   , cbits/cryptonite_aes.c-  else-    C-sources:       cbits/aes/generic.c-                   , cbits/aes/gf.c-                   , cbits/cryptonite_aes.c--  if arch(x86_64) || flag(support_sse)-    C-sources:      cbits/blake2/sse/blake2s.c-                  , cbits/blake2/sse/blake2sp.c-                  , cbits/blake2/sse/blake2b.c-                  , cbits/blake2/sse/blake2bp.c-    include-dirs: cbits/blake2/sse-  else-    C-sources:      cbits/blake2/ref/blake2s-ref.c-                  , cbits/blake2/ref/blake2sp-ref.c-                  , cbits/blake2/ref/blake2b-ref.c-                  , cbits/blake2/ref/blake2bp-ref.c-    include-dirs: cbits/blake2/ref--  if arch(x86_64) || flag(support_sse)-    CPP-options:    -DSUPPORT_SSE-    if arch(i386)-      CC-options:   -msse2--  C-sources:      cbits/argon2/argon2.c-  include-dirs:   cbits/argon2--  if os(windows)-    cpp-options:    -DWINDOWS-    Build-Depends:  Win32-    Other-modules:  Crypto.Random.Entropy.Windows-    extra-libraries: advapi32-  else-    Other-modules:  Crypto.Random.Entropy.Unix--  if impl(ghc) && flag(integer-gmp)-    Build-depends:   integer-gmp--  if flag(support_deepseq)-    CPP-options:     -DWITH_DEEPSEQ_SUPPORT-    Build-depends:   deepseq-  if flag(check_alignment)-    cc-options:     -DWITH_ASSERT_ALIGNMENT-  if flag(use_target_attributes)-    cc-options:     -DWITH_TARGET_ATTRIBUTES--Test-Suite test-cryptonite-  type:              exitcode-stdio-1.0-  hs-source-dirs:    tests-  Main-is:           Tests.hs-  Other-modules:     BlockCipher-                     ChaCha-                     BCrypt-                     BCryptPBKDF-                     ECC-                     ECC.Edwards25519-                     ECDSA-                     Hash-                     Imports-                     KAT_AES.KATCBC-                     KAT_AES.KATECB-                     KAT_AES.KATGCM-                     KAT_AES.KATCCM-                     KAT_AES.KATOCB3-                     KAT_AES.KATXTS-                     KAT_AES-                     KAT_AESGCMSIV-                     KAT_AFIS-                     KAT_Argon2-                     KAT_Blowfish-                     KAT_CAST5-                     KAT_Camellia-                     KAT_Curve25519-                     KAT_Curve448-                     KAT_DES-                     KAT_Ed25519-                     KAT_Ed448-                     KAT_EdDSA-                     KAT_CMAC-                     KAT_HKDF-                     KAT_HMAC-                     KAT_KMAC-                     KAT_MiyaguchiPreneel-                     KAT_PBKDF2-                     KAT_OTP-                     KAT_PubKey.DSA-                     KAT_PubKey.ECC-                     KAT_PubKey.ECDSA-                     KAT_PubKey.OAEP-                     KAT_PubKey.PSS-                     KAT_PubKey.P256-                     KAT_PubKey.RSA-                     KAT_PubKey.Rabin-                     KAT_PubKey-                     KAT_RC4-                     KAT_Scrypt-                     KAT_TripleDES-                     KAT_Twofish-                     ChaChaPoly1305-                     Number-                     Number.F2m-                     Padding-                     Poly1305-                     Salsa-                     Utils-                     XSalsa-  Build-Depends:     base >= 0 && < 10-                   , bytestring-                   , memory-                   , tasty-                   , tasty-quickcheck-                   , tasty-hunit-                   , tasty-kat-                   , cryptonite-  ghc-options:       -Wall -fno-warn-orphans -fno-warn-missing-signatures -rtsopts-  default-language:  Haskell2010--Benchmark bench-cryptonite-  type:              exitcode-stdio-1.0-  hs-source-dirs:    benchs-  Main-is:           Bench.hs-  Other-modules:     Number.F2m-  Build-Depends:     base-                   , bytestring-                   , deepseq-                   , memory-                   , gauge-                   , random-                   , cryptonite-  ghc-options:       -Wall -fno-warn-missing-signatures-  default-language:  Haskell2010+Name:                cryptonite
+version:             0.29
+x-revision: 1
+Synopsis:            Cryptography Primitives sink
+Description:
+    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.
+License:             BSD3
+License-file:        LICENSE
+Copyright:           Vincent Hanquez <vincent@snarc.org>
+Author:              Vincent Hanquez <vincent@snarc.org>
+Maintainer:          vincent@snarc.org
+Category:            Cryptography
+Stability:           experimental
+Build-Type:          Simple
+Homepage:            https://github.com/haskell-crypto/cryptonite
+Bug-reports:         https://github.com/haskell-crypto/cryptonite/issues
+Cabal-Version:       1.18
+tested-with:         GHC==8.8.2, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2
+extra-doc-files:     README.md CHANGELOG.md
+extra-source-files:  cbits/*.h
+                     cbits/aes/*.h
+                     cbits/ed25519/*.h
+                     cbits/decaf/include/*.h
+                     cbits/decaf/include/decaf/*.h
+                     cbits/decaf/include/arch_32/*.h
+                     cbits/decaf/include/arch_ref64/*.h
+                     cbits/decaf/p448/arch_32/*.h
+                     cbits/decaf/p448/arch_ref64/*.h
+                     cbits/decaf/p448/*.h
+                     cbits/decaf/ed448goldilocks/decaf_tables.c
+                     cbits/decaf/ed448goldilocks/decaf.c
+                     cbits/include32/p256/*.h
+                     cbits/include64/p256/*.h
+                     cbits/blake2/ref/*.h
+                     cbits/blake2/sse/*.h
+                     cbits/argon2/*.h
+                     cbits/argon2/*.c
+                     cbits/aes/x86ni_impl.c
+                     cbits/cryptonite_hash_prefix.c
+                     tests/*.hs
+
+source-repository head
+  type: git
+  location: https://github.com/haskell-crypto/cryptonite
+
+Flag support_aesni
+  Description:       allow compilation with AESNI on system and architecture that supports it
+  Default:           True
+  Manual:            True
+
+Flag support_rdrand
+  Description:       allow compilation with RDRAND on system and architecture that supports it
+  Default:           True
+  Manual:            True
+
+Flag support_pclmuldq
+  Description:       Allow compilation with pclmuldq on architecture that supports it
+  Default:           False
+  Manual:            True
+
+Flag support_sse
+  Description:       Use SSE optimized version of (BLAKE2, ARGON2)
+  Default:           False
+  Manual:            True
+
+Flag integer-gmp
+  Description:       Whether or not to use GMP for some functions
+  Default:           True
+  Manual:            True
+
+Flag support_deepseq
+  Description:       add deepseq instances for cryptographic types
+  Default:           True
+  Manual:            True
+
+Flag old_toolchain_inliner
+  Description:       use -fgnu89-inline to workaround an old compiler / linker / glibc issue.
+  Default:           False
+  Manual:            True
+
+Flag check_alignment
+  Description:       extra check on alignment in C layers, which cause lowlevel assert errors. for debugging only.
+  Default:           False
+  Manual:            True
+
+Flag use_target_attributes
+  Description:       use GCC / clang function attributes instead of global target options.
+  Default:           True
+  Manual:            True
+
+Library
+  Exposed-modules:   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
+                     Crypto.ConstructHash.MiyaguchiPreneel
+                     Crypto.Data.AFIS
+                     Crypto.Data.Padding
+                     Crypto.ECC
+                     Crypto.ECC.Edwards25519
+                     Crypto.Error
+                     Crypto.MAC.CMAC
+                     Crypto.MAC.Poly1305
+                     Crypto.MAC.HMAC
+                     Crypto.MAC.KMAC
+                     Crypto.Number.Basic
+                     Crypto.Number.F2m
+                     Crypto.Number.Generate
+                     Crypto.Number.ModArithmetic
+                     Crypto.Number.Nat
+                     Crypto.Number.Prime
+                     Crypto.Number.Serialize
+                     Crypto.Number.Serialize.LE
+                     Crypto.Number.Serialize.Internal
+                     Crypto.Number.Serialize.Internal.LE
+                     Crypto.KDF.Argon2
+                     Crypto.KDF.PBKDF2
+                     Crypto.KDF.Scrypt
+                     Crypto.KDF.BCrypt
+                     Crypto.KDF.BCryptPBKDF
+                     Crypto.KDF.HKDF
+                     Crypto.Hash
+                     Crypto.Hash.IO
+                     Crypto.Hash.Algorithms
+                     Crypto.OTP
+                     Crypto.PubKey.Curve25519
+                     Crypto.PubKey.Curve448
+                     Crypto.PubKey.MaskGenFunction
+                     Crypto.PubKey.DH
+                     Crypto.PubKey.DSA
+                     Crypto.PubKey.ECC.Generate
+                     Crypto.PubKey.ECC.Prim
+                     Crypto.PubKey.ECC.DH
+                     Crypto.PubKey.ECC.ECDSA
+                     Crypto.PubKey.ECC.P256
+                     Crypto.PubKey.ECC.Types
+                     Crypto.PubKey.ECDSA
+                     Crypto.PubKey.ECIES
+                     Crypto.PubKey.Ed25519
+                     Crypto.PubKey.Ed448
+                     Crypto.PubKey.EdDSA
+                     Crypto.PubKey.RSA
+                     Crypto.PubKey.RSA.PKCS15
+                     Crypto.PubKey.RSA.Prim
+                     Crypto.PubKey.RSA.PSS
+                     Crypto.PubKey.RSA.OAEP
+                     Crypto.PubKey.RSA.Types
+                     Crypto.PubKey.Rabin.OAEP
+                     Crypto.PubKey.Rabin.Basic
+                     Crypto.PubKey.Rabin.Modified
+                     Crypto.PubKey.Rabin.RW
+                     Crypto.PubKey.Rabin.Types
+                     Crypto.Random
+                     Crypto.Random.Types
+                     Crypto.Random.Entropy
+                     Crypto.Random.EntropyPool
+                     Crypto.Random.Entropy.Unsafe
+                     Crypto.System.CPU
+                     Crypto.Tutorial
+  Other-modules:     Crypto.Cipher.AES.Primitive
+                     Crypto.Cipher.Blowfish.Box
+                     Crypto.Cipher.Blowfish.Primitive
+                     Crypto.Cipher.CAST5.Primitive
+                     Crypto.Cipher.Camellia.Primitive
+                     Crypto.Cipher.DES.Primitive
+                     Crypto.Cipher.Twofish.Primitive
+                     Crypto.Cipher.Types.AEAD
+                     Crypto.Cipher.Types.Base
+                     Crypto.Cipher.Types.Block
+                     Crypto.Cipher.Types.GF
+                     Crypto.Cipher.Types.Stream
+                     Crypto.Cipher.Types.Utils
+                     Crypto.Error.Types
+                     Crypto.Number.Compat
+                     Crypto.Hash.Types
+                     Crypto.Hash.Blake2
+                     Crypto.Hash.Blake2s
+                     Crypto.Hash.Blake2sp
+                     Crypto.Hash.Blake2b
+                     Crypto.Hash.Blake2bp
+                     Crypto.Hash.SHA1
+                     Crypto.Hash.SHA224
+                     Crypto.Hash.SHA256
+                     Crypto.Hash.SHA384
+                     Crypto.Hash.SHA512
+                     Crypto.Hash.SHA512t
+                     Crypto.Hash.SHA3
+                     Crypto.Hash.SHAKE
+                     Crypto.Hash.Keccak
+                     Crypto.Hash.MD2
+                     Crypto.Hash.MD4
+                     Crypto.Hash.MD5
+                     Crypto.Hash.RIPEMD160
+                     Crypto.Hash.Skein256
+                     Crypto.Hash.Skein512
+                     Crypto.Hash.Tiger
+                     Crypto.Hash.Whirlpool
+                     Crypto.Random.Entropy.Source
+                     Crypto.Random.Entropy.Backend
+                     Crypto.Random.ChaChaDRG
+                     Crypto.Random.SystemDRG
+                     Crypto.Random.Probabilistic
+                     Crypto.PubKey.Internal
+                     Crypto.PubKey.ElGamal
+                     Crypto.ECC.Simple.Types
+                     Crypto.ECC.Simple.Prim
+                     Crypto.Internal.Builder
+                     Crypto.Internal.ByteArray
+                     Crypto.Internal.Compat
+                     Crypto.Internal.CompatPrim
+                     Crypto.Internal.DeepSeq
+                     Crypto.Internal.Imports
+                     Crypto.Internal.Nat
+                     Crypto.Internal.Words
+                     Crypto.Internal.WordArray
+  if impl(ghc < 8.0)
+    Buildable: False
+  else
+    Build-depends:   base < 4.16
+
+  Build-depends:     bytestring
+                   , memory >= 0.14.18
+                   , basement >= 0.0.6
+                   , ghc-prim
+  ghc-options:       -Wall -fwarn-tabs -optc-O3
+  if os(linux)
+    extra-libraries: pthread
+  default-language:  Haskell2010
+  cc-options:        -std=gnu99
+  if flag(old_toolchain_inliner)
+    cc-options:      -fgnu89-inline
+  C-sources:         cbits/cryptonite_chacha.c
+                   , cbits/cryptonite_salsa.c
+                   , cbits/cryptonite_xsalsa.c
+                   , cbits/cryptonite_rc4.c
+                   , cbits/cryptonite_cpu.c
+                   , cbits/p256/p256.c
+                   , cbits/p256/p256_ec.c
+                   , cbits/cryptonite_blake2s.c
+                   , cbits/cryptonite_blake2sp.c
+                   , cbits/cryptonite_blake2b.c
+                   , cbits/cryptonite_blake2bp.c
+                   , cbits/cryptonite_poly1305.c
+                   , cbits/cryptonite_sha1.c
+                   , cbits/cryptonite_sha256.c
+                   , cbits/cryptonite_sha512.c
+                   , cbits/cryptonite_sha3.c
+                   , cbits/cryptonite_md2.c
+                   , cbits/cryptonite_md4.c
+                   , cbits/cryptonite_md5.c
+                   , cbits/cryptonite_ripemd.c
+                   , cbits/cryptonite_skein256.c
+                   , cbits/cryptonite_skein512.c
+                   , cbits/cryptonite_tiger.c
+                   , cbits/cryptonite_whirlpool.c
+                   , cbits/cryptonite_scrypt.c
+                   , cbits/cryptonite_pbkdf2.c
+                   , cbits/ed25519/ed25519.c
+  include-dirs:      cbits
+                   , cbits/ed25519
+                   , cbits/decaf/include
+                   , cbits/decaf/p448
+
+  if arch(x86_64) || arch(aarch64)
+    include-dirs:      cbits/include64
+  else
+    include-dirs:      cbits/include32
+
+  if arch(x86_64) || arch(aarch64)
+    C-sources:         cbits/decaf/p448/arch_ref64/f_impl.c
+                     , cbits/decaf/p448/f_generic.c
+                     , cbits/decaf/p448/f_arithmetic.c
+                     , cbits/decaf/utils.c
+                     , cbits/decaf/ed448goldilocks/scalar.c
+                     , cbits/decaf/ed448goldilocks/decaf_all.c
+                     , cbits/decaf/ed448goldilocks/eddsa.c
+
+    include-dirs:      cbits/decaf/include/arch_ref64
+                     , cbits/decaf/p448/arch_ref64
+  else
+    C-sources:         cbits/decaf/p448/arch_32/f_impl.c
+                     , cbits/decaf/p448/f_generic.c
+                     , cbits/decaf/p448/f_arithmetic.c
+                     , cbits/decaf/utils.c
+                     , cbits/decaf/ed448goldilocks/scalar.c
+                     , cbits/decaf/ed448goldilocks/decaf_all.c
+                     , cbits/decaf/ed448goldilocks/eddsa.c
+
+    include-dirs:      cbits/decaf/include/arch_32
+                     , cbits/decaf/p448/arch_32
+
+  if arch(x86_64) || arch(aarch64)
+    C-sources: cbits/curve25519/curve25519-donna-c64.c
+  else
+    C-sources: cbits/curve25519/curve25519-donna.c
+
+  -- FIXME armel or mispel is also little endian.
+  -- might be a good idea to also add a runtime autodetect mode.
+  -- ARCH_ENDIAN_UNKNOWN
+  if (arch(i386) || arch(x86_64))
+    CPP-options: -DARCH_IS_LITTLE_ENDIAN
+
+  if arch(i386)
+    CPP-options: -DARCH_X86
+
+  if arch(x86_64)
+    CPP-options: -DARCH_X86_64
+
+  if flag(support_rdrand) && (arch(i386) || arch(x86_64)) && !os(windows)
+    CPP-options:    -DSUPPORT_RDRAND
+    Other-modules:  Crypto.Random.Entropy.RDRand
+    c-sources:      cbits/cryptonite_rdrand.c
+
+  if flag(support_aesni) && (os(linux) || os(freebsd) || os(osx)) && (arch(i386) || arch(x86_64))
+    CC-options:     -DWITH_AESNI
+    if !flag(use_target_attributes)
+      CC-options:     -mssse3 -maes
+    if flag(support_pclmuldq)
+      CC-options:   -DWITH_PCLMUL
+      if !flag(use_target_attributes)
+        CC-options:     -msse4.1 -mpclmul
+    C-sources:       cbits/aes/x86ni.c
+                   , cbits/aes/generic.c
+                   , cbits/aes/gf.c
+                   , cbits/cryptonite_aes.c
+  else
+    C-sources:       cbits/aes/generic.c
+                   , cbits/aes/gf.c
+                   , cbits/cryptonite_aes.c
+
+  if arch(x86_64) || flag(support_sse)
+    C-sources:      cbits/blake2/sse/blake2s.c
+                  , cbits/blake2/sse/blake2sp.c
+                  , cbits/blake2/sse/blake2b.c
+                  , cbits/blake2/sse/blake2bp.c
+    include-dirs: cbits/blake2/sse
+  else
+    C-sources:      cbits/blake2/ref/blake2s-ref.c
+                  , cbits/blake2/ref/blake2sp-ref.c
+                  , cbits/blake2/ref/blake2b-ref.c
+                  , cbits/blake2/ref/blake2bp-ref.c
+    include-dirs: cbits/blake2/ref
+
+  if arch(x86_64) || flag(support_sse)
+    CPP-options:    -DSUPPORT_SSE
+    if arch(i386)
+      CC-options:   -msse2
+
+  C-sources:      cbits/argon2/argon2.c
+  include-dirs:   cbits/argon2
+
+  if os(windows)
+    cpp-options:    -DWINDOWS
+    Build-Depends:  Win32
+    Other-modules:  Crypto.Random.Entropy.Windows
+    extra-libraries: advapi32
+  else
+    Other-modules:  Crypto.Random.Entropy.Unix
+
+  if impl(ghc) && flag(integer-gmp)
+    Build-depends:   integer-gmp
+
+  if flag(support_deepseq)
+    CPP-options:     -DWITH_DEEPSEQ_SUPPORT
+    Build-depends:   deepseq
+  if flag(check_alignment)
+    cc-options:     -DWITH_ASSERT_ALIGNMENT
+  if flag(use_target_attributes)
+    cc-options:     -DWITH_TARGET_ATTRIBUTES
+
+Test-Suite test-cryptonite
+  type:              exitcode-stdio-1.0
+  hs-source-dirs:    tests
+  Main-is:           Tests.hs
+  Other-modules:     BlockCipher
+                     ChaCha
+                     BCrypt
+                     BCryptPBKDF
+                     ECC
+                     ECC.Edwards25519
+                     ECDSA
+                     Hash
+                     Imports
+                     KAT_AES.KATCBC
+                     KAT_AES.KATECB
+                     KAT_AES.KATGCM
+                     KAT_AES.KATCCM
+                     KAT_AES.KATOCB3
+                     KAT_AES.KATXTS
+                     KAT_AES
+                     KAT_AESGCMSIV
+                     KAT_AFIS
+                     KAT_Argon2
+                     KAT_Blowfish
+                     KAT_CAST5
+                     KAT_Camellia
+                     KAT_Curve25519
+                     KAT_Curve448
+                     KAT_DES
+                     KAT_Ed25519
+                     KAT_Ed448
+                     KAT_EdDSA
+                     KAT_CMAC
+                     KAT_HKDF
+                     KAT_HMAC
+                     KAT_KMAC
+                     KAT_MiyaguchiPreneel
+                     KAT_PBKDF2
+                     KAT_OTP
+                     KAT_PubKey.DSA
+                     KAT_PubKey.ECC
+                     KAT_PubKey.ECDSA
+                     KAT_PubKey.OAEP
+                     KAT_PubKey.PSS
+                     KAT_PubKey.P256
+                     KAT_PubKey.RSA
+                     KAT_PubKey.Rabin
+                     KAT_PubKey
+                     KAT_RC4
+                     KAT_Scrypt
+                     KAT_TripleDES
+                     KAT_Twofish
+                     ChaChaPoly1305
+                     Number
+                     Number.F2m
+                     Padding
+                     Poly1305
+                     Salsa
+                     Utils
+                     XSalsa
+  Build-Depends:     base >= 0 && < 10
+                   , bytestring
+                   , memory
+                   , tasty
+                   , tasty-quickcheck
+                   , tasty-hunit
+                   , tasty-kat
+                   , cryptonite
+  ghc-options:       -Wall -fno-warn-orphans -fno-warn-missing-signatures -rtsopts
+  default-language:  Haskell2010
+
+Benchmark bench-cryptonite
+  type:              exitcode-stdio-1.0
+  hs-source-dirs:    benchs
+  Main-is:           Bench.hs
+  Other-modules:     Number.F2m
+  Build-Depends:     base
+                   , bytestring
+                   , deepseq
+                   , memory
+                   , gauge
+                   , random
+                   , cryptonite
+  ghc-options:       -Wall -fno-warn-missing-signatures
+  default-language:  Haskell2010