File: cryptonite.cabal

package info (click to toggle)
haskell-cryptonite 0.26-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 3,160 kB
  • sloc: ansic: 21,001; haskell: 16,572; makefile: 8
file content (459 lines) | stat: -rw-r--r-- 17,352 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
Name:                cryptonite
version:             0.26
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 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.18
tested-with:         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/p256/*.h
                     cbits/blake2/ref/*.h
                     cbits/blake2/sse/*.h
                     cbits/argon2/*.h
                     cbits/argon2/*.c
                     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_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

Library
  Exposed-modules:   Crypto.Cipher.AES
                     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.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.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.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.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)
    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:     -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_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

  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

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
                     Hash
                     Imports
                     KAT_AES.KATCBC
                     KAT_AES.KATECB
                     KAT_AES.KATGCM
                     KAT_AES.KATCCM
                     KAT_AES.KATOCB3
                     KAT_AES.KATXTS
                     KAT_AES
                     KAT_AFIS
                     KAT_Argon2
                     KAT_Blowfish
                     KAT_CAST5
                     KAT_Camellia
                     KAT_Curve25519
                     KAT_Curve448
                     KAT_DES
                     KAT_Ed25519
                     KAT_Ed448
                     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