aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/Pl_AES_PDF.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2009-10-19 02:36:51 +0200
committerJay Berkenbilt <ejb@ql.org>2009-10-19 02:36:51 +0200
commita8715c495b218c9b9388a2e20c8202a3fa73b2c1 (patch)
tree721a4a9c39d9c9fdf3a150cf64859c331d392fc2 /libqpdf/Pl_AES_PDF.cc
parent09175e457852c585a68a86d43280f7e0790a4a3b (diff)
downloadqpdf-a8715c495b218c9b9388a2e20c8202a3fa73b2c1.tar.zst
add C API for R4 encryption
git-svn-id: svn+q:///qpdf/trunk@825 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf/Pl_AES_PDF.cc')
-rw-r--r--libqpdf/Pl_AES_PDF.cc22
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);
+ }
}
}