#include <es_capi.h>
Win32 CAPI Entropy Source
Definition at line 19 of file es_capi.h.
Botan::Win32_CAPI_EntropySource::Win32_CAPI_EntropySource |
( |
const std::string & |
provs = "" | ) |
|
|
explicit |
Win32_Capi_Entropysource Constructor
- Parameters
-
provs | list of providers, separated by ':' |
Definition at line 75 of file es_capi.cpp.
References Botan::split_on().
77 for(std::string prov_name :
split_on(provs,
':'))
81 if(prov_name ==
"RSA_FULL")
82 prov_type = PROV_RSA_FULL;
83 else if(prov_name ==
"INTEL_SEC")
84 prov_type = PROV_INTEL_SEC;
85 else if(prov_name ==
"RNG")
90 m_csp_provs.push_back(std::unique_ptr<CSP_Handle>(
new CSP_Handle_Impl(prov_type)));
std::vector< std::string > split_on(const std::string &str, char delim)
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 45 of file entropy_srcs.cpp.
Referenced by Botan::Entropy_Sources::Entropy_Sources().
49 #if defined(BOTAN_HAS_ENTROPY_SRC_RDRAND)
50 return std::unique_ptr<Entropy_Source>(
new Intel_Rdrand);
56 #if defined(BOTAN_HAS_ENTROPY_SRC_RDSEED)
57 return std::unique_ptr<Entropy_Source>(
new Intel_Rdseed);
61 if(
name ==
"darwin_secrandom")
63 #if defined(BOTAN_HAS_ENTROPY_SRC_DARWIN_SECRANDOM)
64 return std::unique_ptr<Entropy_Source>(
new Darwin_SecRandom);
68 if(
name ==
"getentropy")
70 #if defined(BOTAN_HAS_ENTROPY_SRC_GETENTROPY)
71 return std::unique_ptr<Entropy_Source>(
new Getentropy);
75 if(
name ==
"dev_random")
77 #if defined(BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM)
78 return std::unique_ptr<Entropy_Source>(
new Device_EntropySource(BOTAN_SYSTEM_RNG_POLL_DEVICES));
82 if(
name ==
"win32_cryptoapi")
84 #if defined(BOTAN_HAS_ENTROPY_SRC_CAPI)
85 return std::unique_ptr<Entropy_Source>(
new Win32_CAPI_EntropySource(
"RSA_FULL"));
89 if(
name ==
"proc_walk")
91 #if defined(BOTAN_HAS_ENTROPY_SRC_PROC_WALKER)
92 const std::string root_dir = BOTAN_ENTROPY_PROC_FS_PATH;
94 return std::unique_ptr<Entropy_Source>(
new ProcWalking_EntropySource(root_dir));
98 if(
name ==
"system_stats")
100 #if defined(BOTAN_HAS_ENTROPY_SRC_WIN32)
101 return std::unique_ptr<Entropy_Source>(
new Win32_EntropySource);
105 return std::unique_ptr<Entropy_Source>();
virtual std::string name() const =0
std::string Botan::Win32_CAPI_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 53 of file es_capi.cpp.
References Botan::RandomNumberGenerator::add_entropy().
55 secure_vector<uint8_t> buf(BOTAN_SYSTEM_RNG_POLL_REQUEST);
58 for(
size_t i = 0; i != m_csp_provs.size(); ++i)
60 size_t got = m_csp_provs[i]->gen_random(buf.data(), buf.size());
64 rng.add_entropy(buf.data(), got);
The documentation for this class was generated from the following files: