summaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2009-10-18 04:26:09 +0200
committerJay Berkenbilt <ejb@ql.org>2009-10-18 04:26:09 +0200
commit67e353e4e4a9207e26171502f44fb2efbf7848c1 (patch)
treeb0f185afbb90be11882934381165a018361ab6ea /libqpdf
parentb873dc9c59f4445239f68d7138aebb53cc0df648 (diff)
downloadqpdf-67e353e4e4a9207e26171502f44fb2efbf7848c1.tar.zst
use StdCF to make adobe reader happy; handle EncryptMetadata properly when reading
git-svn-id: svn+q:///qpdf/trunk@817 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFWriter.cc9
-rw-r--r--libqpdf/QPDF_encryption.cc2
2 files changed, 7 insertions, 4 deletions
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc
index 8cdd2759..6cfa6fb9 100644
--- a/libqpdf/QPDFWriter.cc
+++ b/libqpdf/QPDFWriter.cc
@@ -363,11 +363,14 @@ QPDFWriter::setEncryptionParametersInternal(
}
if (V == 4)
{
- encryption_dictionary["/StmF"] = "/CF1";
- encryption_dictionary["/StrF"] = "/CF1";
+ // The spec says the value for the crypt filter key can be
+ // anything, and xpdf seems to agree. However, Adobe Reader
+ // won't open our files unless we use /StdCF.
+ encryption_dictionary["/StmF"] = "/StdCF";
+ encryption_dictionary["/StrF"] = "/StdCF";
std::string method = (this->encrypt_use_aes ? "/AESV2" : "/V2");
encryption_dictionary["/CF"] =
- "<< /CF1 << /AuthEvent /DocOpen /CFM " + method + " >> >>";
+ "<< /StdCF << /AuthEvent /DocOpen /CFM " + method + " >> >>";
}
this->encrypted = true;
diff --git a/libqpdf/QPDF_encryption.cc b/libqpdf/QPDF_encryption.cc
index d405759e..287a361a 100644
--- a/libqpdf/QPDF_encryption.cc
+++ b/libqpdf/QPDF_encryption.cc
@@ -612,7 +612,7 @@ QPDF::decryptStream(Pipeline*& pipeline, int objid, int generation,
// XXX What about embedded file streams?
}
use_aes = false;
- switch (this->cf_stream)
+ switch (method)
{
case e_none:
return;