From 5e3bad2f86665b35155095b91a2d672fc7335870 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 30 Nov 2013 12:02:56 -0500 Subject: Refactor random data generation Add new RandomDataProvider object and implement existing random number generation in terms of that. This enables end users to supply their own random data providers. --- libqpdf/qpdf/InsecureRandomDataProvider.hh | 27 +++++++++++++++++++++++++++ libqpdf/qpdf/SecureRandomDataProvider.hh | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 libqpdf/qpdf/InsecureRandomDataProvider.hh create mode 100644 libqpdf/qpdf/SecureRandomDataProvider.hh (limited to 'libqpdf/qpdf') diff --git a/libqpdf/qpdf/InsecureRandomDataProvider.hh b/libqpdf/qpdf/InsecureRandomDataProvider.hh new file mode 100644 index 00000000..530ee3cb --- /dev/null +++ b/libqpdf/qpdf/InsecureRandomDataProvider.hh @@ -0,0 +1,27 @@ +#ifndef __INSECURERANDOMDATAPROVIDER_HH__ +#define __INSECURERANDOMDATAPROVIDER_HH__ + +#include +#include + +class InsecureRandomDataProvider: public RandomDataProvider +{ + public: + QPDF_DLL + InsecureRandomDataProvider(); + QPDF_DLL + virtual ~InsecureRandomDataProvider(); + + QPDF_DLL + virtual void provideRandomData(unsigned char* data, size_t len); + + QPDF_DLL + static RandomDataProvider* getInstance(); + + private: + long random(); + + bool seeded_random; +}; + +#endif // __INSECURERANDOMDATAPROVIDER_HH__ diff --git a/libqpdf/qpdf/SecureRandomDataProvider.hh b/libqpdf/qpdf/SecureRandomDataProvider.hh new file mode 100644 index 00000000..178c73c0 --- /dev/null +++ b/libqpdf/qpdf/SecureRandomDataProvider.hh @@ -0,0 +1,22 @@ +#ifndef __SECURERANDOMDATAPROVIDER_HH__ +#define __SECURERANDOMDATAPROVIDER_HH__ + +#include +#include + +class SecureRandomDataProvider: public RandomDataProvider +{ + public: + QPDF_DLL + SecureRandomDataProvider(); + QPDF_DLL + virtual ~SecureRandomDataProvider(); + + QPDF_DLL + virtual void provideRandomData(unsigned char* data, size_t len); + + QPDF_DLL + static RandomDataProvider* getInstance(); +}; + +#endif // __SECURERANDOMDATAPROVIDER_HH__ -- cgit v1.2.3-54-g00ecf