-- Initial hwsl2.cabal generated by cabal init. For further documentation, -- see http://haskell.org/cabal/users-guide/ -- The name of the package. name: hwsl2 -- The package version. See the Haskell package versioning policy (PVP) -- for standards guiding when and how versions should be incremented. -- http://www.haskell.org/haskellwiki/Package_versioning_policy -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change version: 0.3.0.1 -- A short (one-line) description of the package. synopsis: Hashing with SL2 -- A longer description of the package. description: An algebraic hash function, inspired by the paper /Hashing with SL2/ by Tillich and Zemor. . The hash function is based on matrix multiplication in the special linear group of degree 2, over a Galois field of order 2^127, with all computations modulo the polynomial x^127 + x^63 + 1. . This construction gives some nice properties, which traditional bit-scambling hash functions don't possess, including it being composable. It holds: . > hash (m1 <> m2) == hash m1 <> hash m2 . Following that, the hash function is also parallelisable. If a message can be divided into a list of chunks, the hash of the message can be calculated in parallel: . > mconcat (parMap rpar hash chunks) . All operations in this package are implemented in a very efficient manner using SSE instructions. -- URL for the project homepage or repository. homepage: https://github.com/srijs/hwsl2 -- The license under which the package is released. license: MIT -- The file containing the license text. license-file: LICENSE -- The package author(s). author: Sam Rijs -- An email address to which users can send suggestions, bug reports, and -- patches. maintainer: srijs@airpost.net -- A copyright notice. -- copyright: category: Data build-type: Simple -- Extra files to be distributed with the package, such as examples or a -- README. extra-source-files: README.md -- Constraint on the version of Cabal needed to build this package. cabal-version: >=1.10 library -- Modules exported by the library. exposed-modules: Data.Hash.SL2 Data.Hash.SL2.Mutable Data.Hash.SL2.Unsafe -- Modules included in this library but not exported. other-modules: Data.Hash.SL2.Internal -- LANGUAGE extensions used by modules in this package. other-extensions: ForeignFunctionInterface CApiFFI Safe Trustworthy Unsafe -- Other library packages from which modules are imported. build-depends: base >=4.7 && <4.8, bytestring >=0.10 && <0.11 -- Directories containing source files. hs-source-dirs: src ghc-options: -fwarn-unused-imports -- Options for foreign source files. include-dirs: src includes: src/sl2-inl.h src/gf2p127-inl.h install-includes: src/sl2-inl.h src/gf2p127-inl.h cc-options: -msse2 -msse4.1 -mpclmul ghc-options: -optc-msse2 -optc-msse4.1 -optc-mpclmul -- Base language which the package is written in. default-language: Haskell2010 test-suite test type: detailed-0.9 hs-source-dirs: src test-module: Data.Hash.SL2.Test other-modules: Data.Hash.SL2 Data.Hash.SL2.Mutable Data.Hash.SL2.Unsafe Data.Hash.SL2.Internal build-depends: base >=4.7 && <4.8, Cabal >=1.22.0.0, bytestring >=0.10 && <0.11, QuickCheck >=2.7 && <2.8, quickcheck-properties>=0.1 && <0.2, cabal-test-quickcheck>=0.1 && <0.2 include-dirs: src includes: src/sl2-inl.h src/gf2p127-inl.h install-includes: src/sl2-inl.h src/gf2p127-inl.h ghc-options: -optc-msse2 -optc-msse4.1 -optc-mpclmul benchmark bench type: exitcode-stdio-1.0 hs-source-dirs: src main-is: Data/Hash/SL2/Benchmark.hs other-modules: Data.Hash.SL2 Data.Hash.SL2.Mutable Data.Hash.SL2.Unsafe Data.Hash.SL2.Internal build-depends: base >=4.7 && <4.8, Cabal >=1.22.0.0, bytestring >=0.10 && <0.11, criterion >=1.0 && <1.1, cryptohash >=0.11 && <0.12, parallel >=3.2 && <3.3 include-dirs: src includes: src/sl2-inl.h src/gf2p127-inl.h install-includes: src/sl2-inl.h src/gf2p127-inl.h ghc-options: -rtsopts -threaded -optc-msse2 -optc-msse4.1 -optc-mpclmul