Raven Core  3.0.0
P2P Digital Currency
Public Member Functions | Private Member Functions | Private Attributes | List of all members
FastRandomContext Class Reference

Fast randomness source. More...

#include <random.h>

Collaboration diagram for FastRandomContext:
[legend]

Public Member Functions

 FastRandomContext (bool fDeterministic=false)
 
 FastRandomContext (const uint256 &seed)
 Initialize with explicit seed (only for testing) More...
 
uint64_t rand64 ()
 Generate a random 64-bit integer. More...
 
uint64_t randbits (int bits)
 Generate a random (bits)-bit integer. More...
 
uint64_t randrange (uint64_t range)
 Generate a random integer in the range [0..range). More...
 
std::vector< unsigned char > randbytes (size_t len)
 Generate random bytes. More...
 
uint32_t rand32 ()
 Generate a random 32-bit integer. More...
 
uint256 rand256 ()
 generate a random uint256. More...
 
bool randbool ()
 Generate a random boolean. More...
 

Private Member Functions

void RandomSeed ()
 
void FillByteBuffer ()
 
void FillBitBuffer ()
 

Private Attributes

bool requires_seed
 
ChaCha20 rng
 
unsigned char bytebuf [64]
 
int bytebuf_size
 
uint64_t bitbuf
 
int bitbuf_size
 

Detailed Description

Fast randomness source.

This is seeded once with secure random data, but is completely deterministic and insecure after that. This class is not thread-safe.

Definition at line 45 of file random.h.

Constructor & Destructor Documentation

◆ FastRandomContext() [1/2]

FastRandomContext::FastRandomContext ( bool  fDeterministic = false)
explicit

Definition at line 456 of file random.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FastRandomContext() [2/2]

FastRandomContext::FastRandomContext ( const uint256 seed)
explicit

Initialize with explicit seed (only for testing)

Definition at line 407 of file random.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ FillBitBuffer()

void FastRandomContext::FillBitBuffer ( )
inlineprivate

Definition at line 67 of file random.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FillByteBuffer()

void FastRandomContext::FillByteBuffer ( )
inlineprivate

Definition at line 58 of file random.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rand256()

uint256 FastRandomContext::rand256 ( )

generate a random uint256.

Definition at line 387 of file random.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rand32()

uint32_t FastRandomContext::rand32 ( )
inline

Generate a random 32-bit integer.

Definition at line 118 of file random.h.

Here is the call graph for this function:

◆ rand64()

uint64_t FastRandomContext::rand64 ( )
inline

Generate a random 64-bit integer.

Definition at line 80 of file random.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ randbits()

uint64_t FastRandomContext::randbits ( int  bits)
inline

Generate a random (bits)-bit integer.

Definition at line 89 of file random.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ randbool()

bool FastRandomContext::randbool ( )
inline

Generate a random boolean.

Definition at line 124 of file random.h.

Here is the call graph for this function:

◆ randbytes()

std::vector< unsigned char > FastRandomContext::randbytes ( size_t  len)

Generate random bytes.

Definition at line 398 of file random.cpp.

Here is the call graph for this function:

◆ RandomSeed()

void FastRandomContext::RandomSeed ( )
private

Definition at line 380 of file random.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ randrange()

uint64_t FastRandomContext::randrange ( uint64_t  range)
inline

Generate a random integer in the range [0..range).

Definition at line 104 of file random.h.

Member Data Documentation

◆ bitbuf

uint64_t FastRandomContext::bitbuf
private

Definition at line 53 of file random.h.

◆ bitbuf_size

int FastRandomContext::bitbuf_size
private

Definition at line 54 of file random.h.

◆ bytebuf

unsigned char FastRandomContext::bytebuf[64]
private

Definition at line 50 of file random.h.

◆ bytebuf_size

int FastRandomContext::bytebuf_size
private

Definition at line 51 of file random.h.

◆ requires_seed

bool FastRandomContext::requires_seed
private

Definition at line 47 of file random.h.

◆ rng

ChaCha20 FastRandomContext::rng
private

Definition at line 48 of file random.h.


The documentation for this class was generated from the following files: