aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/entropy/egd
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2015-11-24 17:51:59 -0500
committerJack Lloyd <[email protected]>2015-11-24 17:51:59 -0500
commit5f208fab1890e2ad64b52306eccd82f031425c7a (patch)
tree6bbbf1408e10538e441e3d603d80ebb2cabc6a78 /src/lib/entropy/egd
parentbf59ffc4de374d7b27b7ab400789ab2723131b7a (diff)
New reseed_with_sources call on RNGs
Provides an easier way for an application to configure a list of entropy sources they'd like to use, or add a custom entropy source to their seeding. Exposes some toggles for the global/default entropy sources to build.h Adds basic entropy tests which runs the polls and does sanity checking on the results, including compression tests if available. These are less useful for the CSPRNG outputs but a good check for the ones producing plain ASCII like the /proc reader.
Diffstat (limited to 'src/lib/entropy/egd')
-rw-r--r--src/lib/entropy/egd/es_egd.cpp8
-rw-r--r--src/lib/entropy/egd/es_egd.h5
2 files changed, 6 insertions, 7 deletions
diff --git a/src/lib/entropy/egd/es_egd.cpp b/src/lib/entropy/egd/es_egd.cpp
index d64b87ba1..9b625d051 100644
--- a/src/lib/entropy/egd/es_egd.cpp
+++ b/src/lib/entropy/egd/es_egd.cpp
@@ -137,19 +137,19 @@ EGD_EntropySource::~EGD_EntropySource()
*/
void EGD_EntropySource::poll(Entropy_Accumulator& accum)
{
- const size_t READ_ATTEMPT = 32;
+ const size_t ENTROPY_BITS_PER_BYTE = 8;
std::lock_guard<std::mutex> lock(m_mutex);
- m_buf.resize(READ_ATTEMPT);
+ secure_vector<byte>& buf = accum.get_io_buf(BOTAN_SYSTEM_RNG_POLL_REQUEST);
for(size_t i = 0; i != sockets.size(); ++i)
{
- size_t got = sockets[i].read(m_buf.data(), m_buf.size());
+ size_t got = sockets[i].read(buf.data(), buf.size());
if(got)
{
- accum.add(m_buf.data(), got, 6);
+ accum.add(buf.data(), got, ENTROPY_BITS_PER_BYTE);
break;
}
}
diff --git a/src/lib/entropy/egd/es_egd.h b/src/lib/entropy/egd/es_egd.h
index 7f7df1133..0b497a8bd 100644
--- a/src/lib/entropy/egd/es_egd.h
+++ b/src/lib/entropy/egd/es_egd.h
@@ -18,10 +18,10 @@ namespace Botan {
/**
* EGD Entropy Source
*/
-class EGD_EntropySource : public EntropySource
+class EGD_EntropySource : public Entropy_Source
{
public:
- std::string name() const override { return "EGD/PRNGD"; }
+ std::string name() const override { return "egd"; }
void poll(Entropy_Accumulator& accum) override;
@@ -44,7 +44,6 @@ class EGD_EntropySource : public EntropySource
std::mutex m_mutex;
std::vector<EGD_Socket> sockets;
- secure_vector<byte> m_buf;
};
}