1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-26 10:08:06 +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:
Calixte Denizet 2023-08-10 15:19:41 +02:00
parent d4ba312f00
commit 7a5b3423d6
5 changed files with 51 additions and 6 deletions

View file

@ -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;
}