#include <es_win32.h>
Win32 Entropy Source
Definition at line 18 of file es_win32.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 107 of file entropy_srcs.cpp.
References Botan::Processor_RNG::available(), BOTAN_UNUSED, and Botan::OS::running_in_privileged_state().
Referenced by Botan::Entropy_Sources::Entropy_Sources().
109 #if defined(BOTAN_HAS_SYSTEM_RNG)
110 if(
name ==
"system_rng" ||
name ==
"win32_cryptoapi")
112 return std::unique_ptr<Entropy_Source>(
new System_RNG_EntropySource);
116 #if defined(BOTAN_HAS_PROCESSOR_RNG)
117 if(
name ==
"hwrng" ||
name ==
"rdrand" ||
name ==
"p9_darn")
121 return std::unique_ptr<Entropy_Source>(
new Processor_RNG_EntropySource);
126 #if defined(BOTAN_HAS_ENTROPY_SRC_RDSEED)
129 return std::unique_ptr<Entropy_Source>(
new Intel_Rdseed);
133 #if defined(BOTAN_HAS_ENTROPY_SRC_GETENTROPY)
134 if(
name ==
"getentropy")
136 return std::unique_ptr<Entropy_Source>(
new Getentropy);
140 #if defined(BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM)
141 if(
name ==
"dev_random")
143 return std::unique_ptr<Entropy_Source>(
new Device_EntropySource(BOTAN_SYSTEM_RNG_POLL_DEVICES));
147 #if defined(BOTAN_HAS_ENTROPY_SRC_PROC_WALKER)
150 const std::string root_dir = BOTAN_ENTROPY_PROC_FS_PATH;
151 if(!root_dir.empty())
152 return std::unique_ptr<Entropy_Source>(
new ProcWalking_EntropySource(root_dir));
156 #if defined(BOTAN_HAS_ENTROPY_SRC_WIN32)
157 if(
name ==
"system_stats")
159 return std::unique_ptr<Entropy_Source>(
new Win32_EntropySource);
164 return std::unique_ptr<Entropy_Source>();
virtual std::string name() const =0
bool running_in_privileged_state()
#define BOTAN_UNUSED(...)
std::string Botan::Win32_EntropySource::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 15 of file es_win32.cpp.
References Botan::RandomNumberGenerator::add_entropy_T().
17 rng.add_entropy_T(::GetTickCount());
18 rng.add_entropy_T(::GetMessagePos());
19 rng.add_entropy_T(::GetMessageTime());
20 rng.add_entropy_T(::GetInputState());
22 rng.add_entropy_T(::GetCurrentProcessId());
23 rng.add_entropy_T(::GetCurrentThreadId());
26 ::GetSystemInfo(&sys_info);
27 rng.add_entropy_T(sys_info);
29 MEMORYSTATUSEX mem_info;
30 ::GlobalMemoryStatusEx(&mem_info);
31 rng.add_entropy_T(mem_info);
34 ::GetCursorPos(&point);
35 rng.add_entropy_T(point);
37 ::GetCaretPos(&point);
38 rng.add_entropy_T(point);
The documentation for this class was generated from the following files: