1cabal-version:       >=1.10
2name:                cryptohash-sha1
3version:             0.11.100.1
4x-revision:          5
5
6synopsis:            Fast, pure and practical SHA-1 implementation
7description: {
8
9A practical incremental and one-pass, pure API to
10the [SHA-1 cryptographic hash algorithm](https://en.wikipedia.org/wiki/SHA-1) according
11to [FIPS 180-4](http://dx.doi.org/10.6028/NIST.FIPS.180-4)
12with performance close to the fastest implementations available in other languages.
13.
14The core SHA-1 algorithm is implemented in C and is thus expected
15to be as fast as the standard [sha1sum(1) tool](https://linux.die.net/man/1/sha1sum).
16(If, instead, you require a pure Haskell implementation and performance is secondary, please refer to the [SHA package](https://hackage.haskell.org/package/SHA).)
17.
18Additionally, this package provides support for
19.
20- HMAC-SHA-1: SHA-1-based [Hashed Message Authentication Codes](https://en.wikipedia.org/wiki/HMAC) (HMAC)
21.
22conforming to [RFC6234](https://tools.ietf.org/html/rfc6234), [RFC4231](https://tools.ietf.org/html/rfc4231), [RFC5869](https://tools.ietf.org/html/rfc5869), et al..
23.
24=== Packages in the @cryptohash-*@ family
25.
26- <https://hackage.haskell.org/package/cryptohash-md5    cryptohash-md5>
27- <https://hackage.haskell.org/package/cryptohash-sha1   cryptohash-sha1>
28- <https://hackage.haskell.org/package/cryptohash-sha256 cryptohash-sha256>
29- <https://hackage.haskell.org/package/cryptohash-sha512 cryptohash-sha512>
30.
31=== Relationship to the @cryptohash@ package and its API
32.
33This package has been originally a fork of @cryptohash-0.11.7@ because the @cryptohash@
34package had been deprecated and so this package continues to satisfy the need for a
35lightweight package providing the SHA-1 hash algorithm without any dependencies on packages
36other than @base@ and @bytestring@. The API exposed by @cryptohash-sha1-0.11.*@'s
37"Crypto.Hash.SHA1" module is guaranteed to remain a compatible superset of the API provided
38by the @cryptohash-0.11.7@'s module of the same name.
39.
40Consequently, this package is designed to be used as a drop-in replacement for @cryptohash-0.11.7@'s
41"Crypto.Hash.SHA1" module, though with
42a [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/).
43
44}
45
46license:             BSD3
47license-file:        LICENSE
48copyright:           Vincent Hanquez, Herbert Valerio Riedel
49maintainer:          Herbert Valerio Riedel <hvr@gnu.org>
50homepage:            https://github.com/hvr/cryptohash-sha1
51bug-reports:         https://github.com/hvr/cryptohash-sha1/issues
52category:            Data, Cryptography
53build-type:          Simple
54tested-with:         GHC == 7.4.2
55                   , GHC == 7.6.3
56                   , GHC == 7.8.4
57                   , GHC == 7.10.3
58                   , GHC == 8.0.1
59
60extra-source-files:  cbits/sha1.h
61                     changelog.md
62
63source-repository head
64  type:     git
65  location: https://github.com/hvr/cryptohash-sha1.git
66
67library
68  default-language:  Haskell2010
69  build-depends:     base             >= 4.5   && < 4.15
70                   , bytestring       >= 0.9.2 && < 0.11
71
72  hs-source-dirs:    src
73  exposed-modules:   Crypto.Hash.SHA1
74  ghc-options:       -Wall -fno-cse -O2
75  cc-options:        -Wall -O3
76  c-sources:         cbits/sha1.c
77  include-dirs:      cbits
78
79test-suite test-sha1
80  default-language:  Haskell2010
81  other-extensions:  OverloadedStrings
82  type:              exitcode-stdio-1.0
83  hs-source-dirs:    src-tests
84  main-is:           test-sha1.hs
85  build-depends:     cryptohash-sha1
86                   , base
87                   , bytestring
88
89                   , base16-bytestring >= 0.1.1  && < 0.2
90                   , SHA               >= 1.6.4  && < 1.7
91                   , tasty             == 0.11.*
92                   , tasty-quickcheck  == 0.8.*
93                   , tasty-hunit       == 0.9.*
94
95benchmark bench-sha1
96  default-language:  Haskell2010
97  type:              exitcode-stdio-1.0
98  main-is:           bench-sha1.hs
99  hs-source-dirs:    src-bench
100  build-depends:     cryptohash-sha1
101                   , base
102                   , bytestring
103                   , criterion        == 1.1.*
104