Commit 67e353e4e4a9207e26171502f44fb2efbf7848c1
1 parent
b873dc9c
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
Showing
3 changed files
with
9 additions
and
6 deletions
TODO
| ... | ... | @@ -55,12 +55,12 @@ |
| 55 | 55 | |
| 56 | 56 | - figure out a way to test crypt filters defined on a stream |
| 57 | 57 | |
| 58 | + - test extraction of metadata with and without encrypted metadata | |
| 59 | + | |
| 58 | 60 | - would be nice to test strings and streams with different |
| 59 | 61 | encryption types, but without sample data, we'd have to write |
| 60 | 62 | them ourselves which is not that useful |
| 61 | 63 | |
| 62 | - - figure out why xpdf can open my files but not acroread | |
| 63 | - | |
| 64 | 64 | - figure out how to look at the metadata so I can tell whether |
| 65 | 65 | /EncryptMetadata is working the way it's supposed to |
| 66 | 66 | ... | ... |
libqpdf/QPDFWriter.cc
| ... | ... | @@ -363,11 +363,14 @@ QPDFWriter::setEncryptionParametersInternal( |
| 363 | 363 | } |
| 364 | 364 | if (V == 4) |
| 365 | 365 | { |
| 366 | - encryption_dictionary["/StmF"] = "/CF1"; | |
| 367 | - encryption_dictionary["/StrF"] = "/CF1"; | |
| 366 | + // The spec says the value for the crypt filter key can be | |
| 367 | + // anything, and xpdf seems to agree. However, Adobe Reader | |
| 368 | + // won't open our files unless we use /StdCF. | |
| 369 | + encryption_dictionary["/StmF"] = "/StdCF"; | |
| 370 | + encryption_dictionary["/StrF"] = "/StdCF"; | |
| 368 | 371 | std::string method = (this->encrypt_use_aes ? "/AESV2" : "/V2"); |
| 369 | 372 | encryption_dictionary["/CF"] = |
| 370 | - "<< /CF1 << /AuthEvent /DocOpen /CFM " + method + " >> >>"; | |
| 373 | + "<< /StdCF << /AuthEvent /DocOpen /CFM " + method + " >> >>"; | |
| 371 | 374 | } |
| 372 | 375 | |
| 373 | 376 | this->encrypted = true; | ... | ... |
libqpdf/QPDF_encryption.cc