packages feed

keystore-0.9.0.0: src/Data/KeyStore/KS/CPRNG.hs

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings          #-}

module Data.KeyStore.KS.CPRNG
    ( CPRNG
    , newCPRNG
    , testCPRNG
    , generateCPRNG
    ) where

import           Crypto.Random
import qualified Data.ByteArray                 as BA
import           System.IO.Unsafe


newtype CPRNG
    = CPRNG { _CPRNG :: SystemDRG }
    deriving (DRG)


newCPRNG :: IO CPRNG
newCPRNG = CPRNG <$> getSystemDRG

testCPRNG :: CPRNG
testCPRNG = unsafePerformIO newCPRNG

generateCPRNG :: BA.ByteArray ba => Int -> CPRNG -> (ba,CPRNG)
generateCPRNG = randomBytesGenerate