1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 21:47:46 +00:00

LibPDF: Implement 7.6.4.4.11 Algorithm 12: Authenticating owner password

...for handlers of revision 6.

Since this adds U to the hash input, also trim the size of U and O to
48 bytes. The spec requires them to be 48 bytes, but all the newer PDFs
on https://cipa.jp/e/std/std-sec.html have 127 bytes -- 48 real bytes
and 79 nul padding bytes. These files were created by:

    Creator: Word 用 Acrobat PDFMaker 17
    Producer: Adobe PDF Library 15.0

and

    Creator: Word 用 Acrobat PDFMaker 17
    Producer: Adobe PDF Library 17.11.238
This commit is contained in:
Nico Weber 2023-07-19 21:03:47 -04:00 committed by Andreas Kling
parent 8f6c67a71c
commit 57768325cc
2 changed files with 32 additions and 0 deletions

View file

@ -59,6 +59,7 @@ private:
bool authenticate_user_password_r2_to_r5(StringView password_string);
bool authenticate_user_password_r6_and_later(StringView password_string);
bool authenticate_owner_password_r6_and_later(StringView password_string);
ByteBuffer compute_encryption_key_r2_to_r5(ByteBuffer password_string);
ByteBuffer compute_encryption_key_r6_and_later(ByteBuffer password_string);