#include <p9_darn.h>
Definition at line 14 of file p9_darn.h.
| std::unique_ptr< Entropy_Source > Botan::Entropy_Source::create |
( |
const std::string & |
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 67 of file entropy_srcs.cpp.
References BOTAN_UNUSED, and Botan::OS::running_in_privileged_state().
Referenced by Botan::Entropy_Sources::Entropy_Sources().
69 #if defined(BOTAN_HAS_SYSTEM_RNG)
70 if(
name ==
"system_rng" ||
name ==
"win32_cryptoapi")
72 return std::unique_ptr<Entropy_Source>(
new System_RNG_EntropySource);
76 #if defined(BOTAN_HAS_ENTROPY_SRC_RDRAND)
79 return std::unique_ptr<Entropy_Source>(
new Intel_Rdrand);
83 #if defined(BOTAN_HAS_ENTROPY_SRC_RDSEED)
86 return std::unique_ptr<Entropy_Source>(
new Intel_Rdseed);
90 #if defined(BOTAN_HAS_ENTROPY_SRC_DARN)
93 return std::unique_ptr<Entropy_Source>(
new POWER9_DARN);
97 #if defined(BOTAN_HAS_ENTROPY_SRC_GETENTROPY)
98 if(
name ==
"getentropy")
100 return std::unique_ptr<Entropy_Source>(
new Getentropy);
104 #if defined(BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM)
105 if(
name ==
"dev_random")
107 return std::unique_ptr<Entropy_Source>(
new Device_EntropySource(BOTAN_SYSTEM_RNG_POLL_DEVICES));
111 #if defined(BOTAN_HAS_ENTROPY_SRC_PROC_WALKER)
114 const std::string root_dir = BOTAN_ENTROPY_PROC_FS_PATH;
115 if(!root_dir.empty())
116 return std::unique_ptr<Entropy_Source>(
new ProcWalking_EntropySource(root_dir));
120 #if defined(BOTAN_HAS_ENTROPY_SRC_WIN32)
121 if(
name ==
"system_stats")
123 return std::unique_ptr<Entropy_Source>(
new Win32_EntropySource);
128 return std::unique_ptr<Entropy_Source>();
virtual std::string name() const =0
bool running_in_privileged_state()
#define BOTAN_UNUSED(...)
| std::string Botan::POWER9_DARN::name |
( |
| ) |
const |
|
inlineoverridevirtual |
Perform an entropy gathering poll
- Parameters
-
| rng | will be provided with entropy via calls to add_entropy |
- Returns
- conservative estimate of actual entropy added to rng during poll
Implements Botan::Entropy_Source.
Definition at line 38 of file p9_darn.cpp.
References Botan::RandomNumberGenerator::add_entropy().
40 const size_t DARN_BYTES = 1024;
41 static_assert(DARN_BYTES % 8 == 0,
"Bad DARN configuration");
43 if(CPUID::has_darn_rng())
45 secure_vector<uint64_t> seed;
46 seed.reserve(DARN_BYTES / 8);
48 for(
size_t p = 0; p != DARN_BYTES / 8; ++p)
56 rng.add_entropy(reinterpret_cast<const uint8_t*>(seed.data()),
57 seed.size() *
sizeof(uint32_t));
The documentation for this class was generated from the following files: