diff options
Diffstat (limited to 'doc/examples/test_es.cpp')
-rw-r--r-- | doc/examples/test_es.cpp | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/doc/examples/test_es.cpp b/doc/examples/test_es.cpp index 18531b326..cae47a853 100644 --- a/doc/examples/test_es.cpp +++ b/doc/examples/test_es.cpp @@ -32,30 +32,36 @@ using namespace Botan; -void test_entropy_source(EntropySource* es) +void test_entropy_source(EntropySource* es, + EntropySource* es2 = 0) { // sometimes iostreams really is just a pain - // upper buffer size of 96 to match HMAC_RNG's - byte buf[96] = { 0 }; - printf("Polling '%s':\n", es->name().c_str()); - printf(" Fast poll... "); - u32bit fast_poll_got = es->fast_poll(buf, sizeof(buf)); - printf("got %d bytes: ", fast_poll_got); - for(u32bit i = 0; i != fast_poll_got; ++i) - printf("%02X", buf[i]); - printf("\n"); + Entropy_Accumulator accum1(256); + es->poll(accum1); + + Entropy_Accumulator accum2(256); + if(es2) + es2->poll(accum2); + else + es->poll(accum2); + + SecureVector<byte> polled1 = accum1.get_entropy_buffer(); + SecureVector<byte> polled2 = accum2.get_entropy_buffer(); + + SecureVector<byte> compare(std::min(polled1.size(), polled2.size())); + + for(u32bit i = 0; i != compare.size(); ++i) + compare[i] = polled1[i] ^ polled2[i]; - printf(" Slow poll... "); - u32bit slow_poll_got = es->slow_poll(buf, sizeof(buf)); - printf("got %d bytes: ", slow_poll_got); - for(u32bit i = 0; i != slow_poll_got; ++i) - printf("%02X", buf[i]); + for(u32bit i = 0; i != compare.size(); ++i) + printf("%02X", compare[i]); printf("\n"); delete es; + delete es2; } int main() @@ -81,7 +87,8 @@ int main() #endif #if defined(BOTAN_HAS_ENTROPY_SRC_FTW) - test_entropy_source(new FTW_EntropySource("/proc")); + test_entropy_source(new FTW_EntropySource("/proc"), + new FTW_EntropySource("/proc")); #endif |