mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
[Editor] Don't forget to encrypt image streams (see issue #16821)
and encrypt a compressed stream after having been compressed.
This commit is contained in:
parent
d4ba312f00
commit
7a5b3423d6
5 changed files with 51 additions and 6 deletions
|
@ -298,7 +298,13 @@ class AnnotationFactory {
|
|||
baseFont.set("Encoding", Name.get("WinAnsiEncoding"));
|
||||
const buffer = [];
|
||||
baseFontRef = xref.getNewTemporaryRef();
|
||||
await writeObject(baseFontRef, baseFont, buffer, null);
|
||||
const transform = xref.encrypt
|
||||
? xref.encrypt.createCipherTransform(
|
||||
baseFontRef.num,
|
||||
baseFontRef.gen
|
||||
)
|
||||
: null;
|
||||
await writeObject(baseFontRef, baseFont, buffer, transform);
|
||||
dependencies.push({ ref: baseFontRef, data: buffer.join("") });
|
||||
}
|
||||
promises.push(
|
||||
|
@ -325,13 +331,19 @@ class AnnotationFactory {
|
|||
const buffer = [];
|
||||
if (smaskStream) {
|
||||
const smaskRef = xref.getNewTemporaryRef();
|
||||
await writeObject(smaskRef, smaskStream, buffer, null);
|
||||
const transform = xref.encrypt
|
||||
? xref.encrypt.createCipherTransform(smaskRef.num, smaskRef.gen)
|
||||
: null;
|
||||
await writeObject(smaskRef, smaskStream, buffer, transform);
|
||||
dependencies.push({ ref: smaskRef, data: buffer.join("") });
|
||||
imageStream.dict.set("SMask", smaskRef);
|
||||
buffer.length = 0;
|
||||
}
|
||||
const imageRef = (image.imageRef = xref.getNewTemporaryRef());
|
||||
await writeObject(imageRef, imageStream, buffer, null);
|
||||
const transform = xref.encrypt
|
||||
? xref.encrypt.createCipherTransform(imageRef.num, imageRef.gen)
|
||||
: null;
|
||||
await writeObject(imageRef, imageStream, buffer, transform);
|
||||
dependencies.push({ ref: imageRef, data: buffer.join("") });
|
||||
image.imageStream = image.smaskStream = null;
|
||||
}
|
||||
|
|
|
@ -46,9 +46,6 @@ async function writeDict(dict, buffer, transform) {
|
|||
|
||||
async function writeStream(stream, buffer, transform) {
|
||||
let string = stream.getString();
|
||||
if (transform !== null) {
|
||||
string = transform.encryptString(string);
|
||||
}
|
||||
const { dict } = stream;
|
||||
|
||||
const [filter, params] = await Promise.all([
|
||||
|
@ -106,6 +103,10 @@ async function writeStream(stream, buffer, transform) {
|
|||
}
|
||||
}
|
||||
|
||||
if (transform !== null) {
|
||||
string = transform.encryptString(string);
|
||||
}
|
||||
|
||||
dict.set("Length", string.length);
|
||||
await writeDict(dict, buffer, transform);
|
||||
buffer.push(" stream\n", string, "\nendstream");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue