aboutsummaryrefslogtreecommitdiffstats
path: root/doc/examples
diff options
context:
space:
mode:
authorlloyd <lloyd@randombit.net>2009-01-27 06:58:51 +0000
committerlloyd <lloyd@randombit.net>2009-01-27 06:58:51 +0000
commitd655cd14d718bb8e1af4a2986b10a4d4617dbadc (patch)
tree9ce7a69c324e81491602e0cad3ce2384a1c9d0f1 /doc/examples
parent092c6d68006a2d953d8b622ce2c181a6394aed4e (diff)
Fix test_es for new Entropy_Accumulator interface. It XORs into a block
of 64 bytes. Not ideal but at least gives a sense of what it is putting out.
Diffstat (limited to 'doc/examples')
-rw-r--r--doc/examples/test_es.cpp48
1 files changed, 27 insertions, 21 deletions
diff --git a/doc/examples/test_es.cpp b/doc/examples/test_es.cpp
index cae47a853..b7b2e9162 100644
--- a/doc/examples/test_es.cpp
+++ b/doc/examples/test_es.cpp
@@ -32,36 +32,43 @@
using namespace Botan;
-void test_entropy_source(EntropySource* es,
- EntropySource* es2 = 0)
+class Saver_Of_Bytes : public BufferedComputation
+ {
+ public:
+ Saver_Of_Bytes() : BufferedComputation(0), outbuf(64), written(0) {}
+ void add_data(const byte in[], u32bit length)
+ {
+ for(size_t i = 0; i != length; ++i)
+ outbuf[i % outbuf.size()] ^= in[i];
+
+ written += length;
+ //outbuf.insert(outbuf.end(), in, in+length);
+ }
+ void final_result(byte[]) { if(written < 64) outbuf.resize(written); }
+
+ std::vector<byte> outbuf;
+ u32bit written;
+ };
+
+void test_entropy_source(EntropySource* es)
{
// sometimes iostreams really is just a pain
printf("Polling '%s':\n", es->name().c_str());
- 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();
+ Saver_Of_Bytes save;
- SecureVector<byte> compare(std::min(polled1.size(), polled2.size()));
+ Entropy_Accumulator accum(save, 128);
+ es->poll(accum);
- for(u32bit i = 0; i != compare.size(); ++i)
- compare[i] = polled1[i] ^ polled2[i];
+ save.final_result(0);
- for(u32bit i = 0; i != compare.size(); ++i)
- printf("%02X", compare[i]);
+ printf("Got %d bytes\n", save.written);
+ for(size_t i = 0; i != save.outbuf.size(); ++i)
+ printf("%02X", save.outbuf[i]);
printf("\n");
delete es;
- delete es2;
}
int main()
@@ -87,8 +94,7 @@ int main()
#endif
#if defined(BOTAN_HAS_ENTROPY_SRC_FTW)
- test_entropy_source(new FTW_EntropySource("/proc"),
- new FTW_EntropySource("/proc"));
+ test_entropy_source(new FTW_EntropySource("/proc"));
#endif