    module Raaz.Entropy( getEntropy ) where

    import Control.Monad.IO.Class( MonadIO, liftIO)
    import System.IO
    import Raaz.Core

    -- | Get random bytes from the system. Do not over use this function
    -- as it is meant to be used by a PRG. This function reads bytes from
    -- '/dev/urandom'.
    getEntropy :: (MonadIO m, LengthUnit l) => l -> Pointer -> m (BYTES Int)
    getEntropy l ptr = liftIO $ withBinaryFile "/dev/urandom" ReadMode $ \ hand -> hFillBuf hand ptr l