crypton-1.0.0: Cryptography Primitives sink

License | BSD-style
Maintainer | Vincent Hanquez <vincent@snarc.org>
Stability | experimental
Portability | Good
Safe Haskell | None
Language | Haskell2010

Crypto.Random.Types

Description

Synopsis

- class Monad m => MonadRandom (m :: Type -> Type) where
  - getRandomBytes :: ByteArray byteArray => Int -> m byteArray
- data MonadPseudoRandom gen a
- class DRG gen where
  - randomBytesGenerate :: ByteArray byteArray => Int -> gen -> (byteArray, gen)
- withDRG :: DRG gen => gen -> MonadPseudoRandom gen a -> (a, gen)

# Documentation

class Monad m => MonadRandom (m :: Type -> Type) where #

A monad constraint that allows to generate random bytes

Methods

getRandomBytes :: ByteArray byteArray => Int -> m byteArray #

#### Instances

Instances details

MonadRandom IO # |
Instance details Defined in Crypto.Random.Types Methods getRandomBytes :: ByteArray byteArray => Int -> IO byteArray #
DRG gen => MonadRandom (MonadPseudoRandom gen) # |
Instance details Defined in Crypto.Random.Types Methods getRandomBytes :: ByteArray byteArray => Int -> MonadPseudoRandom gen byteArray #

data MonadPseudoRandom gen a #

A simple Monad class very similar to a State Monad with the state being a DRG.

#### Instances

Instances details

DRG gen => Applicative (MonadPseudoRandom gen) # |
Instance details Defined in Crypto.Random.Types Methods pure :: a -> MonadPseudoRandom gen a # (<*>) :: MonadPseudoRandom gen (a -> b) -> MonadPseudoRandom gen a -> MonadPseudoRandom gen b # liftA2 :: (a -> b -> c) -> MonadPseudoRandom gen a -> MonadPseudoRandom gen b -> MonadPseudoRandom gen c # (*>) :: MonadPseudoRandom gen a -> MonadPseudoRandom gen b -> MonadPseudoRandom gen b # (<*) :: MonadPseudoRandom gen a -> MonadPseudoRandom gen b -> MonadPseudoRandom gen a #
DRG gen => Functor (MonadPseudoRandom gen) # |
Instance details Defined in Crypto.Random.Types Methods fmap :: (a -> b) -> MonadPseudoRandom gen a -> MonadPseudoRandom gen b # (<$) :: a -> MonadPseudoRandom gen b -> MonadPseudoRandom gen a #
DRG gen => Monad (MonadPseudoRandom gen) # |
Instance details Defined in Crypto.Random.Types Methods (>>=) :: MonadPseudoRandom gen a -> (a -> MonadPseudoRandom gen b) -> MonadPseudoRandom gen b # (>>) :: MonadPseudoRandom gen a -> MonadPseudoRandom gen b -> MonadPseudoRandom gen b # return :: a -> MonadPseudoRandom gen a #
DRG gen => MonadRandom (MonadPseudoRandom gen) # |
Instance details Defined in Crypto.Random.Types Methods getRandomBytes :: ByteArray byteArray => Int -> MonadPseudoRandom gen byteArray #

class DRG gen where #

A Deterministic Random Generator (DRG) class

Methods

randomBytesGenerate :: ByteArray byteArray => Int -> gen -> (byteArray, gen) #

Generate N bytes of randomness from a DRG

#### Instances

Instances details

DRG ChaChaDRG # |
Instance details Defined in Crypto.Random.ChaChaDRG Methods randomBytesGenerate :: ByteArray byteArray => Int -> ChaChaDRG -> (byteArray, ChaChaDRG) #
DRG SystemDRG # |
Instance details Defined in Crypto.Random.SystemDRG Methods randomBytesGenerate :: ByteArray byteArray => Int -> SystemDRG -> (byteArray, SystemDRG) #

withDRG :: DRG gen => gen -> MonadPseudoRandom gen a -> (a, gen) #

Run a pure computation with a Deterministic Random Generator in the `MonadPseudoRandom`