{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE StandaloneDeriving #-} module Crypto.Random.Effect.AES ( runAESRNG ) where import Control.Eff (Eff, SetMember, (:>)) import Control.Eff.Lift (Lift) import Control.Eff.Reader.Strict (Reader) import Control.Eff.State.Strict (State) import Crypto.Random (EntropyPool) import Crypto.Random.AESCtr (AESRNG) import Crypto.Random.Effect (runRNG) import Data.Typeable (Typeable) deriving instance Typeable AESRNG -- | Run the effect using an AES counter mode pseudo random number generator. runAESRNG :: SetMember Lift (Lift IO) r => Eff (State AESRNG :> Reader EntropyPool :> r) a -> Eff r a runAESRNG = runRNG