entropy: A platform independent entropy source

[ bsd3, cryptography, data, library ] [ Propose Tags ]

A mostly platform independent method to obtain cryptographically strong entropy (RDRAND, urandom, CryptAPI, and patches welcome) Users looking for cryptographically strong (number-theoretically sound) PRNGs should see the DRBG package too.


[Skip to Readme]
Versions [RSS] [faq] 0.1, 0.2, 0.2.1, 0.2.2, 0.2.2.1, 0.2.2.2, 0.2.2.3, 0.2.2.4, 0.3, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.3.4.1, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.4, 0.4.1, 0.4.1.1, 0.4.1.2, 0.4.1.3, 0.4.1.4, 0.4.1.5, 0.4.1.6
Dependencies base (>=4.8 && <5), bytestring, ghcjs-dom, jsaddle, unix, Win32 (>=2.5) [details]
License BSD-3-Clause
Copyright Thomas DuBuisson <thomas.dubuisson@gmail.com>
Author Thomas DuBuisson <thomas.dubuisson@gmail.com>
Maintainer Thomas DuBuisson <thomas.dubuisson@gmail.com>
Revised Revision 1 made by AdamBergmark at 2021-06-07T17:09:34Z
Category Data, Cryptography
Home page https://github.com/TomMD/entropy
Bug tracker https://github.com/TomMD/entropy/issues
Source repo head: git clone https://github.com/TomMD/entropy
Uploaded by ThomasDuBuisson at 2020-04-11T00:28:30Z
Distributions Arch:0.4.1.6, Debian:0.4.1.1, Fedora:0.4.1.6, FreeBSD:0.3.7, LTSHaskell:0.4.1.6, NixOS:0.4.1.6, Stackage:0.4.1.6, openSUSE:0.4.1.6
Downloads 133348 total (722 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2020-04-11 [all 1 reports]

Modules

[Index] [Quick Jump]

Flags

NameDescriptionDefaultType
halvm

Build for the HaLVM

DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees

Candidates


Readme for entropy-0.4.1.6

[back to package description]

Introduction

This package allows Haskell users to easily acquire entropy for use in critical security applications by calling out to either windows crypto api, unix/linux's getrandom and /dev/urandom. Hardware RNGs (currently RDRAND, patches welcome) are supported via the hardwareRNG function.

Quick Start

To simply get random bytes use getEntropy:

#!/usr/bin/env cabal
{- cabal:
    build-depends: base, entropy, bytestring
-}
import qualified Data.ByteString as BS
import           System.Entropy

main :: IO ()
main = print . BS.unpack =<< getEntropy 16
-- Example output: [241,191,215,193,225,27,121,244,16,155,252,41,131,38,6,100]

Faster Randoms from Hardware

Most x86 systems include a hardware random number generator. These can be faster but require more trust in the platform:

import qualified Data.ByteString as B
import           System.Entropy

eitherRNG :: Int -> IO B.ByteString
eitherRNG sz = maybe (getEntropy sz) pure =<< getHardwareEntropy sz

main :: IO ()
main = print . B.unpack =<< eitherRNG 32

This package supports Windows, {li,u}nix, QNX, and has preliminary support for HaLVM.

Typically tested on Linux and OSX - testers are as welcome as patches.

Build Status