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
|
-- Initial tf-random.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
-- The name of the package.
name: tf-random
-- 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.5
-- A short (one-line) description of the package.
synopsis: High-quality splittable pseudorandom number generator
-- A longer description of the package.
description: This package contains an implementation of a high-quality splittable pseudorandom number generator. The generator is based on a cryptographic hash function built on top of the ThreeFish block cipher. See the paper /Splittable Pseudorandom Number Generators Using Cryptographic Hashing/ by Claessen, Palka for details and the rationale of the design.
.
The package provides the following:
.
* A splittable PRNG that implements the standard 'System.Random.RandomGen' class.
.
* The generator also implements an alternative version of the 'System.Random.TF.Gen.RandomGen' class (exported from "System.Random.TF.Gen"), which requires the generator to return pseudorandom integers from the full 32-bit range, and contains an n-way split function.
.
* An alternative version of the @Random@ class is provided, which is linked to the new @RandomGen@ class, together with @Random@ instances for some integral types.
.
* Two functions for initialising the generator with a non-deterministic seed: one using the system time, and one using the @\/dev\/urandom@ UNIX special file.
.
The package uses an adapted version of the reference C implementation of ThreeFish from the reference package of the Skein hash function (<https://www.schneier.com/skein.html>), originally written by Doug Whiting.
.
Please note that even though the generator provides very high-quality pseudorandom numbers, it has not been designed with cryptographic applications in mind.
-- URL for the project homepage or repository.
--homepage: http://no.home.page/
-- The license under which the package is released.
license: BSD3
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Michal Palka <michal.palka@chalmers.se>
-- An email address to which users can send suggestions, bug reports, and
-- patches.
maintainer: Michal Palka <michal.palka@chalmers.se>
-- A copyright notice.
-- copyright:
category: Random
build-type: Simple
-- Constraint on the version of Cabal needed to build this package.
cabal-version: >=1.8
extra-source-files:
ChangeLog,
LICENSE.brg,
LICENSE.tf,
cbits/brg_types.h,
cbits/skein_debug.c,
cbits/skein_debug.h,
cbits/threefish.h,
cbits/threefish_port.h
source-repository head
type: darcs
location: http://hub.darcs.net/michal.palka/tf-random
library
Hs-Source-Dirs: src
C-Sources:
cbits/threefish_block.c
--GHC-options: -O
-- Modules exported by the library.
exposed-modules: System.Random.TF, System.Random.TF.Gen, System.Random.TF.Init, System.Random.TF.Instances
-- Modules included in this library but not exported.
-- other-modules:
-- Other library packages from which modules are imported.
build-depends:
base >= 4.2 && < 5,
primitive >= 0.3,
random,
time
|