Botan 3.6.1
Crypto and TLS for C&
Botan::Entropy_Sources Class Referencefinal

#include <entropy_src.h>

Public Member Functions

void add_source (std::unique_ptr< Entropy_Source > src)
 
std::vector< std::string > enabled_sources () const
 
 Entropy_Sources ()=default
 
 Entropy_Sources (const Entropy_Sources &other)=delete
 
 Entropy_Sources (const std::vector< std::string > &sources)
 
 Entropy_Sources (Entropy_Sources &&other)=delete
 
Entropy_Sourcesoperator= (const Entropy_Sources &other)=delete
 
size_t poll (RandomNumberGenerator &rng, size_t bits, std::chrono::milliseconds timeout)
 
size_t poll_just (RandomNumberGenerator &rng, std::string_view src)
 

Static Public Member Functions

static Entropy_Sourcesglobal_sources ()
 

Detailed Description

Definition at line 55 of file entropy_src.h.

Constructor & Destructor Documentation

◆ Entropy_Sources() [1/4]

Botan::Entropy_Sources::Entropy_Sources ( )
default

◆ Entropy_Sources() [2/4]

Botan::Entropy_Sources::Entropy_Sources ( const std::vector< std::string > & sources)
explicit

Definition at line 196 of file entropy_srcs.cpp.

196 {
197 for(auto&& src_name : sources) {
199 }
200}
static std::unique_ptr< Entropy_Source > create(std::string_view type)
void add_source(std::unique_ptr< Entropy_Source > src)

References add_source(), and Botan::Entropy_Source::create().

◆ Entropy_Sources() [3/4]

Botan::Entropy_Sources::Entropy_Sources ( const Entropy_Sources & other)
delete

◆ Entropy_Sources() [4/4]

Botan::Entropy_Sources::Entropy_Sources ( Entropy_Sources && other)
delete

Member Function Documentation

◆ add_source()

void Botan::Entropy_Sources::add_source ( std::unique_ptr< Entropy_Source > src)

Definition at line 153 of file entropy_srcs.cpp.

153 {
154 if(src) {
155 m_srcs.push_back(std::move(src));
156 }
157}

Referenced by Entropy_Sources().

◆ enabled_sources()

std::vector< std::string > Botan::Entropy_Sources::enabled_sources ( ) const

Definition at line 159 of file entropy_srcs.cpp.

159 {
160 std::vector<std::string> sources;
161 sources.reserve(m_srcs.size());
162 for(const auto& src : m_srcs) {
163 sources.push_back(src->name());
164 }
165 return sources;
166}

◆ global_sources()

Entropy_Sources & Botan::Entropy_Sources::global_sources ( )
static

Definition at line 202 of file entropy_srcs.cpp.

202 {
203 static Entropy_Sources global_entropy_sources(BOTAN_ENTROPY_DEFAULT_SOURCES);
204
205 return global_entropy_sources;
206}
#define BOTAN_ENTROPY_DEFAULT_SOURCES
Definition build.h:508

References BOTAN_ENTROPY_DEFAULT_SOURCES.

◆ operator=()

Entropy_Sources & Botan::Entropy_Sources::operator= ( const Entropy_Sources & other)
delete

◆ poll()

size_t Botan::Entropy_Sources::poll ( RandomNumberGenerator & rng,
size_t bits,
std::chrono::milliseconds timeout )

Definition at line 168 of file entropy_srcs.cpp.

168 {
169 typedef std::chrono::system_clock clock;
170
171 auto deadline = clock::now() + timeout;
172
173 size_t bits_collected = 0;
174
175 for(auto& src : m_srcs) {
176 bits_collected += src->poll(rng);
177
178 if(bits_collected >= poll_bits || clock::now() > deadline) {
179 break;
180 }
181 }
182
183 return bits_collected;
184}

Referenced by Botan::RandomNumberGenerator::reseed().

◆ poll_just()

size_t Botan::Entropy_Sources::poll_just ( RandomNumberGenerator & rng,
std::string_view src )

Poll just a single named source. Ordinally only used for testing

Definition at line 186 of file entropy_srcs.cpp.

186 {
187 for(auto& src : m_srcs) {
188 if(src->name() == the_src) {
189 return src->poll(rng);
190 }
191 }
192
193 return 0;
194}

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