diff options
Diffstat (limited to 'libqpdf/Pl_AES_PDF.cc')
-rw-r--r-- | libqpdf/Pl_AES_PDF.cc | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/libqpdf/Pl_AES_PDF.cc b/libqpdf/Pl_AES_PDF.cc index 0ceb7df7..d9754981 100644 --- a/libqpdf/Pl_AES_PDF.cc +++ b/libqpdf/Pl_AES_PDF.cc @@ -12,6 +12,8 @@ # define srandom srand #endif +bool Pl_AES_PDF::use_static_iv = false; + Pl_AES_PDF::Pl_AES_PDF(char const* identifier, Pipeline* next, bool encrypt, unsigned char const key[key_size]) : Pipeline(identifier, next), @@ -52,6 +54,12 @@ Pl_AES_PDF::disableCBC() } void +Pl_AES_PDF::useStaticIV() +{ + use_static_iv = true; +} + +void Pl_AES_PDF::write(unsigned char* data, int len) { unsigned int bytes_left = len; @@ -116,9 +124,19 @@ Pl_AES_PDF::initializeVector() srandom((int)QUtil::get_current_time() ^ 0xcccc); seeded_random = true; } - for (unsigned int i = 0; i < this->buf_size; ++i) + if (use_static_iv) + { + for (unsigned int i = 0; i < this->buf_size; ++i) + { + this->cbc_block[i] = 14 * (1 + i); + } + } + else { - this->cbc_block[i] = (unsigned char)((random() & 0xff0) >> 4); + for (unsigned int i = 0; i < this->buf_size; ++i) + { + this->cbc_block[i] = (unsigned char)((random() & 0xff0) >> 4); + } } } |