vSMC
vSMC: Scalable Monte Carlo
Public Types | Public Member Functions | List of all members
vsmc::AES256Engine< ResultType, Blocks > Class Template Reference

AES-256 RNG engine. More...

#include <vsmc/rng/aes.hpp>

Public Types

typedef AESNIEngine< ResultType, AES256KeySeq< ResultType >, true, 14, Blocks > base_eng_type
 
- Public Types inherited from vsmc::AESNIEngine< ResultType, AES256KeySeq< ResultType >, true, 14, Blocks >
typedef Array< __m128i, Blocks > buffer_type
 
typedef Array< ctr_type, Blocks > ctr_block_type
 
typedef Array< ResultType, sizeof(__m128i)/sizeof(ResultType)> ctr_type
 
typedef Array< __m128i, Rounds+1 > key_seq_type
 
typedef AES256KeySeq< ResultType >::key_type key_type
 
typedef ResultType result_type
 

Public Member Functions

 AES256Engine (ResultType s=0)
 
template<typename SeedSeq >
 AES256Engine (SeedSeq &seq, typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, typename base_eng_type::result_type, typename base_eng_type::key_type, AES256Engine< ResultType, Blocks > >::value >::type *=nullptr)
 
 AES256Engine (const typename base_eng_type::key_type &k)
 
- Public Member Functions inherited from vsmc::AESNIEngine< ResultType, AES256KeySeq< ResultType >, true, 14, Blocks >
 AESNIEngine (result_type s=0)
 
 AESNIEngine (SeedSeq &seq, typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, result_type, key_type, AESNIEngine< ResultType, AES256KeySeq< ResultType >, KeySeqInit, Rounds, Blocks > >::value >::type *=nullptr)
 
 AESNIEngine (const key_type &k)
 
ctr_type ctr () const
 
void ctr (const ctr_type &c)
 
ctr_block_type ctr_block () const
 
void discard (result_type nskip)
 
key_type key () const
 
void key (const key_type &k)
 
key_seq_type key_seq () const
 
result_type operator() ()
 
buffer_type operator() (const ctr_type &c) const
 Generate a buffer of random bits given a counter using the current key. More...
 
buffer_type operator() (const ctr_block_type &cb) const
 Generate a buffer of random bits given a block of counters using the current key. More...
 
void operator() (const ctr_type &c, buffer_type &buf) const
 Generate random bits in a pre-allocated buffer given a counter using the current key. More...
 
void operator() (const ctr_block_type &cb, buffer_type &buf) const
 Generate ranodm bits in a pre-allocated buffer given a block of counters using the current key. More...
 
void seed (result_type s)
 
void seed (SeedSeq &seq, typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, result_type, key_type >::value >::type *=nullptr)
 
void seed (const key_type &k)
 

Additional Inherited Members

- Static Public Member Functions inherited from vsmc::AESNIEngine< ResultType, AES256KeySeq< ResultType >, true, 14, Blocks >
static constexpr result_type max ()
 
static constexpr result_type min ()
 
- Static Public Attributes inherited from vsmc::AESNIEngine< ResultType, AES256KeySeq< ResultType >, true, 14, Blocks >
static constexpr const result_type _Max
 
static constexpr const result_type _Min
 

Detailed Description

template<typename ResultType, std::size_t Blocks = 1>
class vsmc::AES256Engine< ResultType, Blocks >

AES-256 RNG engine.

See also
AES256KeySeq
AESNIEngine

Definition at line 740 of file aes.hpp.

Member Typedef Documentation

template<typename ResultType , std::size_t Blocks = 1>
typedef AESNIEngine<ResultType, AES256KeySeq<ResultType>, true, 14, Blocks> vsmc::AES256Engine< ResultType, Blocks >::base_eng_type

Definition at line 747 of file aes.hpp.

Constructor & Destructor Documentation

template<typename ResultType , std::size_t Blocks = 1>
vsmc::AES256Engine< ResultType, Blocks >::AES256Engine ( ResultType  s = 0)
inlineexplicit

Definition at line 749 of file aes.hpp.

template<typename ResultType , std::size_t Blocks = 1>
template<typename SeedSeq >
vsmc::AES256Engine< ResultType, Blocks >::AES256Engine ( SeedSeq &  seq,
typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, typename base_eng_type::result_type, typename base_eng_type::key_type, AES256Engine< ResultType, Blocks > >::value >::type = nullptr 
)
inlineexplicit

Definition at line 752 of file aes.hpp.

template<typename ResultType , std::size_t Blocks = 1>
vsmc::AES256Engine< ResultType, Blocks >::AES256Engine ( const typename base_eng_type::key_type k)
inline

Definition at line 759 of file aes.hpp.