Author: tilman
Date: Wed Feb 26 13:46:40 2025
New Revision: 1924055
URL: http://svn.apache.org/viewvc?rev=1924055&view=rev
Log:
PDFBOX-5955: add test
Modified:
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
Modified:
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java?rev=1924055&r1=1924054&r2=1924055&view=diff
==============================================================================
---
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
(original)
+++
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
Wed Feb 26 13:46:40 2025
@@ -57,6 +57,7 @@ import org.apache.pdfbox.pdmodel.encrypt
import org.apache.pdfbox.pdmodel.encryption.StandardSecurityHandler;
import org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage;
import org.apache.pdfbox.rendering.PDFRenderer;
+import org.apache.pdfbox.text.PDFTextStripper;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -248,6 +249,42 @@ class TestSymmetricKeyEncryption
}
/**
+ * PDFBOX-5955: test unusual RC4 encryption that has 40 or 48 bits instead
of 128.
+ *
+ * @throws IOException
+ */
+ @Test
+ void testPDFBox5955() throws IOException
+ {
+ File file40bit = new File("target/pdfs", "PDFBOX-5955-40bit.pdf");
+ File file48bit = new File("target/pdfs", "PDFBOX-5955-48bit.pdf");
+ try (PDDocument doc = Loader.loadPDF(file40bit))
+ {
+ PDFTextStripper stripper = new PDFTextStripper();
+ String text = stripper.getText(doc);
+ assertTrue(text.contains("0x0446615747"));
+ }
+ try (PDDocument doc = Loader.loadPDF(file40bit, "ownerpass"))
+ {
+ PDFTextStripper stripper = new PDFTextStripper();
+ String text = stripper.getText(doc);
+ assertTrue(text.contains("0x0446615747"));
+ }
+ try (PDDocument doc = Loader.loadPDF(file48bit))
+ {
+ PDFTextStripper stripper = new PDFTextStripper();
+ String text = stripper.getText(doc);
+ assertTrue(text.contains("0x02988E82AFF8"));
+ }
+ try (PDDocument doc = Loader.loadPDF(file48bit, "ownerpass"))
+ {
+ PDFTextStripper stripper = new PDFTextStripper();
+ String text = stripper.getText(doc);
+ assertTrue(text.contains("0x02988E82AFF8"));
+ }
+ }
+
+ /**
* Protect a document with an embedded PDF with a key and try to reopen it
* with that key and compare.
*