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

#include <getentropy.h>

Inheritance diagram for Botan::Getentropy:
Botan::Entropy_Source

Public Member Functions

std::string name () const override
 
size_t poll (RandomNumberGenerator &rng) override
 

Static Public Member Functions

static std::unique_ptr< Entropy_Sourcecreate (std::string_view type)
 

Detailed Description

Entropy source using the getentropy(2) system call first introduced in OpenBSD 5.6 and added to Solaris 11.3.

Definition at line 19 of file getentropy.h.

Member Function Documentation

◆ create()

std::unique_ptr< Entropy_Source > Botan::Entropy_Source::create ( std::string_view type)
staticinherited

Return a new entropy source of a particular type, or null Each entropy source may require substantial resources (eg, a file handle or socket instance), so try to share them among multiple RNGs, or just use the preconfigured global list accessed by Entropy_Sources::global_sources()

Definition at line 110 of file entropy_srcs.cpp.

110 {
111#if defined(BOTAN_HAS_SYSTEM_RNG)
112 if(name == "system_rng") {
113 return std::make_unique<System_RNG_EntropySource>();
114 }
115#endif
116
117#if defined(BOTAN_HAS_PROCESSOR_RNG)
118 if(name == "hwrng") {
120 return std::make_unique<Processor_RNG_EntropySource>();
121 }
122 }
123#endif
124
125#if defined(BOTAN_HAS_ENTROPY_SRC_RDSEED)
126 if(name == "rdseed") {
127 return std::make_unique<Intel_Rdseed>();
128 }
129#endif
130
131#if defined(BOTAN_HAS_ENTROPY_SRC_GETENTROPY)
132 if(name == "getentropy") {
133 return std::make_unique<Getentropy>();
134 }
135#endif
136
137#if defined(BOTAN_HAS_ENTROPY_SRC_WIN32)
138 if(name == "system_stats") {
139 return std::make_unique<Win32_EntropySource>();
140 }
141#endif
142
143#if defined(BOTAN_HAS_JITTER_RNG)
144 if(name == "jitter_rng") {
145 return std::make_unique<Jitter_RNG_EntropySource>();
146 }
147#endif
148
150 return nullptr;
151}
#define BOTAN_UNUSED
Definition assert.h:118
virtual std::string name() const =0

References Botan::Processor_RNG::available(), BOTAN_UNUSED, and Botan::Entropy_Source::name().

Referenced by Botan::Entropy_Sources::Entropy_Sources().

◆ name()

std::string Botan::Getentropy::name ( ) const
inlineoverridevirtual
Returns
name identifying this entropy source

Implements Botan::Entropy_Source.

Definition at line 21 of file getentropy.h.

21{ return "getentropy"; }

◆ poll()

size_t Botan::Getentropy::poll ( RandomNumberGenerator & rng)
overridevirtual

Gather 256 bytes entropy from getentropy(2). Note that maximum buffer size is limited to 256 bytes. On OpenBSD this does neither block nor fail.

Implements Botan::Entropy_Source.

Definition at line 23 of file getentropy.cpp.

23 {
25
26 if(::getentropy(buf.data(), buf.size()) == 0) {
27 rng.add_entropy(buf.data(), buf.size());
28 return buf.size() * 8;
29 }
30
31 return 0;
32}
std::vector< T, secure_allocator< T > > secure_vector
Definition secmem.h:61

References Botan::RandomNumberGenerator::add_entropy().


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