File: cryptohash-sha256.cabal

package info (click to toggle)
haskell-cryptohash-sha256 0.11.102.1-3
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 140 kB
  • sloc: haskell: 611; ansic: 187; makefile: 6
file content (157 lines) | stat: -rw-r--r-- 5,452 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
cabal-version:       2.0
name:                cryptohash-sha256
version:             0.11.102.1
x-revision:          2

synopsis:            Fast, pure and practical SHA-256 implementation
description: {

A practical incremental and one-pass, pure API to
the [SHA-256 cryptographic hash algorithm](https://en.wikipedia.org/wiki/SHA-2) according
to [FIPS 180-4](http://dx.doi.org/10.6028/NIST.FIPS.180-4)
with performance close to the fastest implementations available in other languages.
.
The core SHA-256 algorithm is implemented in C and is thus expected
to be as fast as the standard [sha256sum(1) tool](https://linux.die.net/man/1/sha256sum);
for instance, on an /Intel Core i7-3770/ at 3.40GHz this implementation can
compute a SHA-256 hash over 230 MiB of data in under one second.
(If, instead, you require a pure Haskell implementation and performance is secondary, please refer to the [SHA package](https://hackage.haskell.org/package/SHA).)
.

.
Additionally, this package provides support for
.
- HMAC-SHA-256: SHA-256-based [Hashed Message Authentication Codes](https://en.wikipedia.org/wiki/HMAC) (HMAC)
- HKDF-SHA-256: [HMAC-SHA-256-based Key Derivation Function](https://en.wikipedia.org/wiki/HKDF) (HKDF)
.
conforming to [RFC6234](https://tools.ietf.org/html/rfc6234), [RFC4231](https://tools.ietf.org/html/rfc4231), [RFC5869](https://tools.ietf.org/html/rfc5869), et al..
.
=== Relationship to the @cryptohash@ package and its API
.
This package has been originally a fork of @cryptohash-0.11.7@ because the @cryptohash@
package had been deprecated and so this package continues to satisfy the need for a
lightweight package providing the SHA-256 hash algorithm without any dependencies on packages
other than @base@ and @bytestring@. The API exposed by @cryptohash-sha256-0.11.*@'s
"Crypto.Hash.SHA256" module is guaranteed to remain a compatible superset of the API provided
by the @cryptohash-0.11.7@'s module of the same name.
.
Consequently, this package is designed to be used as a drop-in replacement for @cryptohash-0.11.7@'s
"Crypto.Hash.SHA256" module, though with
a [clearly smaller footprint by almost 3 orders of magnitude](https://www.reddit.com/r/haskell/comments/5lxv75/psa_please_use_unique_module_names_when_uploading/dbzegx3/).

}

license:             BSD3
license-file:        LICENSE
copyright:           Vincent Hanquez, Herbert Valerio Riedel
maintainer:          Herbert Valerio Riedel <hvr@gnu.org>
homepage:            https://github.com/hvr/cryptohash-sha256
bug-reports:         https://github.com/hvr/cryptohash-sha256/issues
category:            Data, Cryptography
build-type:          Simple

tested-with:
  GHC == 9.6.1
  GHC == 9.4.4
  GHC == 9.2.7
  GHC == 9.0.2
  GHC == 8.10.7
  GHC == 8.8.4
  GHC == 8.6.5
  GHC == 8.4.4
  GHC == 8.2.2
  GHC == 8.0.2
  GHC == 7.10.3
  GHC == 7.8.4
  GHC == 7.6.3
  GHC == 7.4.2

extra-source-files:  cbits/hs_sha256.h
                     changelog.md

source-repository head
  type:     git
  location: https://github.com/hvr/cryptohash-sha256.git

flag exe
  description: Enable building @sha256sum@ executable
  manual:   True
  default:  False

flag use-cbits
  description: Use fast optimized C routines via FFI; if flag is disabled falls back to non-FFI Haskell optimized implementation.
  manual:   True
  default:  True

library
  default-language:  Haskell2010

  ghc-options:       -Wall

  build-depends:     base              >= 4.5 && < 4.19

  exposed-modules:   Crypto.Hash.SHA256

  if flag(use-cbits)
    build-depends:     bytestring      ^>= 0.9.2 || ^>= 0.10.0 || ^>= 0.11.0

    other-extensions:  BangPatterns
                       CApiFFI
                       CPP
                       Trustworthy
                       Unsafe

    hs-source-dirs:    src
    other-modules:     Crypto.Hash.SHA256.FFI
                       Compat
    include-dirs:      cbits
  else
    hs-source-dirs:    src-pure
    build-depends:     cryptohash-sha256-pure ^>= 0.1.0

executable sha256sum
  default-language:  Haskell2010
  hs-source-dirs:    src-exe
  main-is:           sha256sum.hs
  ghc-options:       -Wall -threaded
  if flag(exe)
    other-extensions:  RecordWildCards
    build-depends:     cryptohash-sha256
                     , base
                     , bytestring

                     , base16-bytestring ^>= 0.1.1 || ^>= 1.0.0
  else
    buildable:       False

test-suite test-sha256
  default-language:  Haskell2010
  other-extensions:  OverloadedStrings
  type:              exitcode-stdio-1.0
  hs-source-dirs:    src-tests
  main-is:           test-sha256.hs
  ghc-options:       -Wall -threaded
  build-depends:     cryptohash-sha256
                   , base
                   , bytestring

                   , base16-bytestring ^>= 0.1.1 || ^>= 1.0.0
                   , SHA               ^>= 1.6.4
                   , tasty             ^>= 1.4
                   , tasty-quickcheck  ^>= 0.10
                   , tasty-hunit       ^>= 0.10

benchmark bench-sha256
  default-language:  Haskell2010
  other-extensions:  BangPatterns
  type:              exitcode-stdio-1.0
  main-is:           bench-sha256.hs
  hs-source-dirs:    src-bench
  build-depends:     cryptohash-sha256
                   , SHA               ^>= 1.6.4
                   , base
                   , bytestring
                   , criterion         ^>= 1.5 || ^>=1.6

  -- not yet public
  -- build-depends: cryptohash-sha256-pure ^>= 0.1.0