mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Bug fix: preserve AES when copying encryption parameters
This commit is contained in:
parent
b501251291
commit
db95960ac1
@ -1,3 +1,9 @@
|
||||
2012-07-15 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* libqpdf/QPDFWriter.cc (copyEncryptionParameters): Bug fix: qpdf
|
||||
was not preserving whether or not AES encryption was being used
|
||||
when copying encryption parameters.
|
||||
|
||||
2012-07-14 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* QPDFWriter: add public copyEncryptionParameters to allow copying
|
||||
|
@ -409,10 +409,34 @@ QPDFWriter::copyEncryptionParameters(QPDF& qpdf)
|
||||
this->encrypt_metadata =
|
||||
encrypt.getKey("/EncryptMetadata").getBoolValue();
|
||||
}
|
||||
if (V >= 4)
|
||||
{
|
||||
if (encrypt.hasKey("/CF") &&
|
||||
encrypt.getKey("/CF").isDictionary() &&
|
||||
encrypt.hasKey("/StmF") &&
|
||||
encrypt.getKey("/StmF").isName())
|
||||
{
|
||||
// Determine whether to use AES from StmF. QPDFWriter
|
||||
// can't write files with different StrF and StmF.
|
||||
QPDFObjectHandle CF = encrypt.getKey("/CF");
|
||||
QPDFObjectHandle StmF = encrypt.getKey("/StmF");
|
||||
if (CF.hasKey(StmF.getName()) &&
|
||||
CF.getKey(StmF.getName()).isDictionary())
|
||||
{
|
||||
QPDFObjectHandle StmF_data = CF.getKey(StmF.getName());
|
||||
if (StmF_data.hasKey("/CFM") &&
|
||||
StmF_data.getKey("/CFM").isName() &&
|
||||
StmF_data.getKey("/CFM").getName() == "/AESV2")
|
||||
{
|
||||
this->encrypt_use_aes = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
QTC::TC("qpdf", "QPDFWriter copy encrypt metadata",
|
||||
this->encrypt_metadata ? 0 : 1);
|
||||
this->id1 =
|
||||
trailer.getKey("/ID").getArrayItem(0).getStringValue();
|
||||
QTC::TC("qpdf", "QPDFWriter copy use_aes",
|
||||
this->encrypt_use_aes ? 0 : 1);
|
||||
setEncryptionParametersInternal(
|
||||
V,
|
||||
encrypt.getKey("/R").getIntValue(),
|
||||
|
@ -234,3 +234,4 @@ QPDF replace foreign indirect with null 0
|
||||
QPDF not copying pages object 0
|
||||
QPDF insert foreign page 0
|
||||
QPDFWriter foreign object 0
|
||||
QPDFWriter copy use_aes 1
|
||||
|
Loading…
Reference in New Issue
Block a user