summaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_encryption.cc
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-07-23 17:48:28 +0200
committerm-holger <m-holger@kubitscheck.org>2022-07-24 17:02:35 +0200
commitf7978db1f604083c16733952d2b01d3b0f4b0a6a (patch)
tree44bb02e178aa305ca06a0140dbefe9748a72bc0f /libqpdf/QPDF_encryption.cc
parent3404ca8ac8e19ccba5ff2d7426081a593880f1c0 (diff)
downloadqpdf-f7978db1f604083c16733952d2b01d3b0f4b0a6a.tar.zst
QPDFObjGen : tidy QPDF private methods
Change method signatures to use QPDFObjGen. Use QPDFObjGen methods where possible. Remove redundant QPDF::objGenToIndirect.
Diffstat (limited to 'libqpdf/QPDF_encryption.cc')
-rw-r--r--libqpdf/QPDF_encryption.cc29
1 files changed, 12 insertions, 17 deletions
diff --git a/libqpdf/QPDF_encryption.cc b/libqpdf/QPDF_encryption.cc
index 95d5ea37..8c35b992 100644
--- a/libqpdf/QPDF_encryption.cc
+++ b/libqpdf/QPDF_encryption.cc
@@ -1075,8 +1075,7 @@ QPDF::initializeEncryption()
std::string
QPDF::getKeyForObject(
std::shared_ptr<EncryptionParameters> encp,
- int objid,
- int generation,
+ QPDFObjGen const& og,
bool use_aes)
{
if (!encp->encrypted) {
@@ -1084,26 +1083,24 @@ QPDF::getKeyForObject(
"request for encryption key in non-encrypted PDF");
}
- if (!((objid == encp->cached_key_objid) &&
- (generation == encp->cached_key_generation))) {
+ if (og != encp->cached_key_og) {
encp->cached_object_encryption_key = compute_data_key(
encp->encryption_key,
- objid,
- generation,
+ og.getObj(),
+ og.getGen(),
use_aes,
encp->encryption_V,
encp->encryption_R);
- encp->cached_key_objid = objid;
- encp->cached_key_generation = generation;
+ encp->cached_key_og = og;
}
return encp->cached_object_encryption_key;
}
void
-QPDF::decryptString(std::string& str, int objid, int generation)
+QPDF::decryptString(std::string& str, QPDFObjGen const& og)
{
- if (objid == 0) {
+ if (!og.isIndirect()) {
return;
}
bool use_aes = false;
@@ -1139,8 +1136,7 @@ QPDF::decryptString(std::string& str, int objid, int generation)
}
}
- std::string key =
- getKeyForObject(this->m->encp, objid, generation, use_aes);
+ std::string key = getKeyForObject(this->m->encp, og, use_aes);
try {
if (use_aes) {
QTC::TC("qpdf", "QPDF_encryption aes decode string");
@@ -1175,8 +1171,8 @@ QPDF::decryptString(std::string& str, int objid, int generation)
this->m->file->getName(),
this->m->last_object_description,
this->m->file->getLastOffset(),
- "error decrypting string for object " +
- QPDFObjGen(objid, generation).unparse() + ": " + e.what());
+ "error decrypting string for object " + og.unparse() + ": " +
+ e.what());
}
}
@@ -1186,8 +1182,7 @@ QPDF::decryptStream(
std::shared_ptr<InputSource> file,
QPDF& qpdf_for_warning,
Pipeline*& pipeline,
- int objid,
- int generation,
+ QPDFObjGen const& og,
QPDFObjectHandle& stream_dict,
std::vector<std::shared_ptr<Pipeline>>& heap)
{
@@ -1282,7 +1277,7 @@ QPDF::decryptStream(
break;
}
}
- std::string key = getKeyForObject(encp, objid, generation, use_aes);
+ std::string key = getKeyForObject(encp, og, use_aes);
std::shared_ptr<Pipeline> new_pipeline;
if (use_aes) {
QTC::TC("qpdf", "QPDF_encryption aes decode stream");