mirror of
https://github.com/kazu-yamamoto/crypton.git
synced 2024-10-04 15:57:47 +03:00
488 lines
18 KiB
Plaintext
488 lines
18 KiB
Plaintext
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
|