Botan 2.19.5 Crypto and TLS for C&

Public Member Functions | Static Public Member Functions | List of all members
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_Sources & | operator= (const Entropy_Sources &other)=delete
size_t | poll (RandomNumberGenerator &rng, size_t bits, std::chrono::milliseconds timeout)
size_t | poll_just (RandomNumberGenerator &rng, const std::string &src)

## Static Public Member Functions
static Entropy_Sources & | global_sources ()

## Detailed Description

Definition at line 56 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 219 of file entropy_srcs.cpp.

220 {
221 for(auto&& src_name : sources)
222 {
223 add_source(Entropy_Source::create(src_name));
224 }
225 }
Botan::Entropy_Source::create
static std::unique_ptr< Entropy_Source > create(const std::string &type)
Definition: entropy_srcs.cpp:107
Botan::Entropy_Sources::add_source
void add_source(std::unique_ptr< Entropy_Source > src)
Definition: entropy_srcs.cpp:167

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 167 of file entropy_srcs.cpp.

168 {
169 if(src.get())
170 {
171 m_srcs.push_back(std::move(src));
172 }
173 }

Referenced by Entropy_Sources().

## ◆ enabled_sources()

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

Definition at line 175 of file entropy_srcs.cpp.

176 {
177 std::vector<std::string> sources;
178 for(size_t i = 0; i != m_srcs.size(); ++i)
179 {
180 sources.push_back(m_srcs[i]->name());
181 }
182 return sources;
183 }
name
std::string name
Definition: commoncrypto_hash.cpp:24

References name.

## ◆ global_sources()

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

Definition at line 227 of file entropy_srcs.cpp.

228 {
229 static Entropy_Sources global_entropy_sources(BOTAN_ENTROPY_DEFAULT_SOURCES);
230
231 return global_entropy_sources;
232 }
Botan::Entropy_Sources::Entropy_Sources
Entropy_Sources()=default

## ◆ 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 185 of file entropy_srcs.cpp.

188 {
189 typedef std::chrono::system_clock clock;
190
191 auto deadline = clock::now() + timeout;
192
193 size_t bits_collected = 0;
194
195 for(size_t i = 0; i != m_srcs.size(); ++i)
196 {
197 bits_collected += m_srcs[i]->poll(rng);
198
199 if (bits_collected >= poll_bits || clock::now() > deadline)
200 break;
201 }
202
203 return bits_collected;
204 }

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

## ◆ poll_just()

size_t Botan::Entropy_Sources::poll_just | ( | RandomNumberGenerator & | rng,
|  | const std::string & | src
| ) |  |

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

Definition at line 206 of file entropy_srcs.cpp.

207 {
208 for(size_t i = 0; i != m_srcs.size(); ++i)
209 {
210 if(m_srcs[i]->name() == the_src)
211 {
212 return m_srcs[i]->poll(rng);
213 }
214 }
215
216 return 0;
217 }

References name.

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

- src/lib/entropy/entropy_src.h
- src/lib/entropy/entropy_srcs.cpp