aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/qpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-11-30 18:02:56 +0100
committerJay Berkenbilt <ejb@ql.org>2013-12-14 21:17:35 +0100
commit5e3bad2f86665b35155095b91a2d672fc7335870 (patch)
tree984d4830ee0dd3b8e90bae913f411a84c8e876d4 /libqpdf/qpdf
parente9a319fb9536347aeab076cdb18e1ff97eb66c07 (diff)
downloadqpdf-5e3bad2f86665b35155095b91a2d672fc7335870.tar.zst
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.
Diffstat (limited to 'libqpdf/qpdf')
-rw-r--r--libqpdf/qpdf/InsecureRandomDataProvider.hh27
-rw-r--r--libqpdf/qpdf/SecureRandomDataProvider.hh22
2 files changed, 49 insertions, 0 deletions
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 <qpdf/RandomDataProvider.hh>
+#include <qpdf/DLL.h>
+
+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 <qpdf/RandomDataProvider.hh>
+#include <qpdf/DLL.h>
+
+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__