Add check for size in generatePrime Add size test in generateSafePrime Require only that top bit is set, instead of top 2 This is the general standard, see e.g. OpenSSL Add an error for too few bits being supplied to prime generator, and add documentation Add some documentation and require highest two bits set Simplify return syntax in generatePrime and generateSafePrime Switch exponent to bit-shift for small performance boost
364 lines
13 KiB
Plaintext
364 lines
13 KiB
Plaintext
Name: cryptonite
|
|
Version: 0.21
|
|
Synopsis: Cryptography Primitives sink
|
|
Description:
|
|
A repository of cryptographic primitives.
|
|
.
|
|
* Symmetric ciphers: AES, DES, 3DES, Blowfish, Camellia, RC4, Salsa, XSalsa, ChaCha.
|
|
.
|
|
* Hash: SHA1, SHA2, SHA3, MD2, MD4, MD5, Keccak, Skein, Ripemd, Tiger, Whirlpool, Blake2
|
|
.
|
|
* MAC: HMAC, Poly1305
|
|
.
|
|
* Asymmetric crypto: DSA, RSA, DH, ECDH, ECDSA, ECC, Curve25519, Ed25519, Ed448
|
|
.
|
|
* Key Derivation Function: PBKDF2, Scrypt, HKDF
|
|
.
|
|
* 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 strive 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.10
|
|
extra-doc-files: README.md CHANGELOG.md
|
|
extra-source-files: cbits/*.h
|
|
cbits/aes/*.h
|
|
cbits/ed25519/*.h
|
|
cbits/ed448/*.h
|
|
cbits/p256/*.h
|
|
cbits/blake2/ref/*.h
|
|
cbits/blake2/sse/*.h
|
|
cbits/aes/x86ni_impl.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_blake2_sse
|
|
Description: Use SSE optimized version of BLAKE2.
|
|
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
|
|
|
|
Library
|
|
Exposed-modules: Crypto.Cipher.AES
|
|
Crypto.Cipher.Blowfish
|
|
Crypto.Cipher.Camellia
|
|
Crypto.Cipher.ChaCha
|
|
Crypto.Cipher.ChaChaPoly1305
|
|
Crypto.Cipher.DES
|
|
Crypto.Cipher.RC4
|
|
Crypto.Cipher.Salsa
|
|
Crypto.Cipher.TripleDES
|
|
Crypto.Cipher.Types
|
|
Crypto.Cipher.XSalsa
|
|
Crypto.ConstructHash.MiyaguchiPreneel
|
|
Crypto.Data.AFIS
|
|
Crypto.Data.Padding
|
|
Crypto.ECC
|
|
Crypto.Error
|
|
Crypto.MAC.CMAC
|
|
Crypto.MAC.Poly1305
|
|
Crypto.MAC.HMAC
|
|
Crypto.Number.Basic
|
|
Crypto.Number.F2m
|
|
Crypto.Number.Generate
|
|
Crypto.Number.ModArithmetic
|
|
Crypto.Number.Prime
|
|
Crypto.Number.Serialize
|
|
Crypto.Number.Serialize.Internal
|
|
Crypto.KDF.PBKDF2
|
|
Crypto.KDF.Scrypt
|
|
Crypto.KDF.BCrypt
|
|
Crypto.KDF.HKDF
|
|
Crypto.Hash
|
|
Crypto.Hash.IO
|
|
Crypto.Hash.Algorithms
|
|
Crypto.PubKey.Curve25519
|
|
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.ECIES
|
|
Crypto.PubKey.Ed25519
|
|
Crypto.PubKey.Ed448
|
|
Crypto.PubKey.RSA
|
|
Crypto.PubKey.RSA.PKCS15
|
|
Crypto.PubKey.RSA.Prim
|
|
Crypto.PubKey.RSA.PSS
|
|
Crypto.PubKey.RSA.OAEP
|
|
Crypto.PubKey.RSA.Types
|
|
Crypto.Random
|
|
Crypto.Random.Types
|
|
Crypto.Random.Entropy
|
|
Crypto.Random.EntropyPool
|
|
Crypto.Random.Entropy.Unsafe
|
|
Crypto.Tutorial
|
|
Other-modules: Crypto.Cipher.AES.Primitive
|
|
Crypto.Cipher.Blowfish.Box
|
|
Crypto.Cipher.Blowfish.Primitive
|
|
Crypto.Cipher.Camellia.Primitive
|
|
Crypto.Cipher.DES.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.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.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.Proxy
|
|
Crypto.Internal.ByteArray
|
|
Crypto.Internal.Compat
|
|
Crypto.Internal.CompatPrim
|
|
Crypto.Internal.DeepSeq
|
|
Crypto.Internal.Imports
|
|
Crypto.Internal.Words
|
|
Crypto.Internal.WordArray
|
|
Build-depends: base >= 4.3 && < 5
|
|
, bytestring
|
|
, memory >= 0.8
|
|
, ghc-prim
|
|
ghc-options: -Wall -fwarn-tabs -optc-O3 -fno-warn-unused-imports -fobject-code
|
|
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/ed25519/ed25519.c
|
|
, cbits/ed448/x448.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_keccak.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
|
|
include-dirs: cbits cbits/ed25519
|
|
|
|
if arch(x86_64)
|
|
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: -mssse3 -maes -DWITH_AESNI
|
|
if flag(support_pclmuldq)
|
|
CC-options: -msse4.1 -mpclmul -DWITH_PCLMUL
|
|
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_blake2_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 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
|
|
|
|
Test-Suite test-cryptonite
|
|
type: exitcode-stdio-1.0
|
|
hs-source-dirs: tests
|
|
Main-is: Tests.hs
|
|
Other-modules: BlockCipher
|
|
ChaCha
|
|
BCrypt
|
|
Hash
|
|
Imports
|
|
KAT_AES.KATCBC
|
|
KAT_AES.KATECB
|
|
KAT_AES.KATGCM
|
|
KAT_AES.KATOCB3
|
|
KAT_AES.KATXTS
|
|
KAT_AES
|
|
KAT_AFIS
|
|
KAT_Blowfish
|
|
KAT_Camellia
|
|
KAT_Curve25519
|
|
KAT_DES
|
|
KAT_Ed448
|
|
KAT_Ed25519
|
|
KAT_CMAC
|
|
KAT_HKDF
|
|
KAT_HMAC
|
|
KAT_MiyaguchiPreneel
|
|
KAT_PBKDF2
|
|
KAT_PubKey.DSA
|
|
KAT_PubKey.ECC
|
|
KAT_PubKey.ECDSA
|
|
KAT_PubKey.OAEP
|
|
KAT_PubKey.PSS
|
|
KAT_PubKey.P256
|
|
KAT_PubKey
|
|
KAT_RC4
|
|
KAT_Scrypt
|
|
KAT_TripleDES
|
|
ChaChaPoly1305
|
|
Number
|
|
Number.F2m
|
|
Padding
|
|
Poly1305
|
|
Salsa
|
|
Utils
|
|
XSalsa
|
|
Build-Depends: base >= 3 && < 5
|
|
, bytestring
|
|
, memory
|
|
, byteable
|
|
, tasty
|
|
, tasty-quickcheck
|
|
, tasty-hunit
|
|
, tasty-kat
|
|
, cryptonite
|
|
ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures -fno-warn-unused-imports -rtsopts
|
|
default-language: Haskell2010
|