23 lines
657 B
Haskell
23 lines
657 B
Haskell
|
|
-- |
|
||
|
|
-- Module : Crypto.Random.Entropy
|
||
|
|
-- License : BSD-style
|
||
|
|
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
|
||
|
|
-- Stability : experimental
|
||
|
|
-- Portability : Good
|
||
|
|
--
|
||
|
|
module Crypto.Random.Entropy
|
||
|
|
( getEntropy
|
||
|
|
) where
|
||
|
|
|
||
|
|
import Data.Maybe (catMaybes)
|
||
|
|
import Crypto.Internal.ByteArray (ByteArray)
|
||
|
|
import qualified Crypto.Internal.ByteArray as B
|
||
|
|
|
||
|
|
import Crypto.Random.Entropy.Unsafe
|
||
|
|
|
||
|
|
-- | Get some entropy from the system source of entropy
|
||
|
|
getEntropy :: ByteArray byteArray => Int -> IO byteArray
|
||
|
|
getEntropy n = do
|
||
|
|
backends <- catMaybes `fmap` sequence supportedBackends
|
||
|
|
B.alloc n (replenish n backends)
|