diff options
author | Jay Berkenbilt <ejb@ql.org> | 2009-10-18 16:09:10 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2009-10-18 16:09:10 +0200 |
commit | 4ccc9330a8144660af5ac8f392d1fb8cb77422f0 (patch) | |
tree | 8a429b252b804ccde1f04419c6113b21413a234f /libqpdf/Pl_AES_PDF.cc | |
parent | 67e353e4e4a9207e26171502f44fb2efbf7848c1 (diff) | |
download | qpdf-4ccc9330a8144660af5ac8f392d1fb8cb77422f0.tar.zst |
only seed randon number generater once for aes-cbc, try to avoid compressing Metadata streams
git-svn-id: svn+q:///qpdf/trunk@818 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/Pl_AES_PDF.cc')
-rw-r--r-- | libqpdf/Pl_AES_PDF.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/libqpdf/Pl_AES_PDF.cc b/libqpdf/Pl_AES_PDF.cc index c3fd03a9..1e5f81ab 100644 --- a/libqpdf/Pl_AES_PDF.cc +++ b/libqpdf/Pl_AES_PDF.cc @@ -108,17 +108,22 @@ Pl_AES_PDF::finish() void Pl_AES_PDF::initializeVector() { - std::string seed_str; - seed_str += QUtil::int_to_string((int)QUtil::get_current_time()); - seed_str += " QPDF aes random"; - MD5 m; - m.encodeString(seed_str.c_str()); - MD5::Digest digest; - m.digest(digest); - assert(sizeof(digest) >= sizeof(unsigned int)); - unsigned int seed; - memcpy((void*)(&seed), digest, sizeof(unsigned int)); - srandom(seed); + static bool seeded_random = false; + if (! seeded_random) + { + std::string seed_str; + seed_str += QUtil::int_to_string((int)QUtil::get_current_time()); + seed_str += " QPDF aes random"; + MD5 m; + m.encodeString(seed_str.c_str()); + MD5::Digest digest; + m.digest(digest); + assert(sizeof(digest) >= sizeof(unsigned int)); + unsigned int seed; + memcpy((void*)(&seed), digest, sizeof(unsigned int)); + srandom(seed); + seeded_random = true; + } for (unsigned int i = 0; i < this->buf_size; ++i) { this->cbc_block[i] = (unsigned char)((random() & 0xff0) >> 4); |