You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/09/19 17:47:24 UTC
svn commit: r1881854 - in /pdfbox/trunk/pdfbox/src/test:
java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
resources/org/apache/pdfbox/encryption/PDFBOX-4421-keystore.pfx
Author: tilman
Date: Sat Sep 19 17:47:24 2020
New Revision: 1881854
URL: http://svn.apache.org/viewvc?rev=1881854&view=rev
Log:
PDFBOX-4421: add temporary tests
Added:
pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/encryption/PDFBOX-4421-keystore.pfx (with props)
Modified:
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java?rev=1881854&r1=1881853&r2=1881854&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java Sat Sep 19 17:47:24 2020
@@ -19,6 +19,7 @@ package org.apache.pdfbox.encryption;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
@@ -28,11 +29,13 @@ import java.util.Collection;
import javax.crypto.Cipher;
import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.io.MemoryUsageSetting;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.PublicKeyProtectionPolicy;
import org.apache.pdfbox.pdmodel.encryption.PublicKeyRecipient;
+import org.apache.pdfbox.pdmodel.encryption.PublicKeySecurityHandler;
import org.apache.pdfbox.text.PDFTextStripper;
import org.junit.After;
@@ -319,4 +322,52 @@ public class TestPublicKeyEncryption
document.save(file);
return file;
}
+
+ /**
+ * PDFBOX-4421: Read a file encrypted with AES128 but not with PDFBox, and with missing /Length
+ * entry. Test to be changed so it's done locally with small file.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testReadPubkeyEncryptedAES128() throws IOException
+ {
+ URL url = new URL("https://issues.apache.org/jira/secure/attachment/13011682/B2-Adobe-128-aes-sec.pdf");
+ byte[] ba = IOUtils.toByteArray(url.openStream()); // because of bug in PDFBOX-4836
+ try (PDDocument doc = Loader.loadPDF(ba,
+ "w!z%C*F-JaNdRgUk",
+ TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-4421-keystore.pfx"),
+ "testnutzer"))
+ {
+ Assert.assertTrue(doc.getEncryption().getSecurityHandler() instanceof PublicKeySecurityHandler);
+ Assert.assertEquals(128, doc.getEncryption().getSecurityHandler().getKeyLength());
+ PDFTextStripper stripper = new PDFTextStripper();
+ //Assert.assertEquals("Key length: 128", stripper.getText(doc).trim())
+ Assert.assertTrue(stripper.getText(doc).contains("ad0000002bf"));
+ }
+ }
+
+ /**
+ * PDFBOX-4421: Read a file encrypted with AES128 but not with PDFBox, and with missing /Length
+ * entry. Test to be changed so it's done locally with small file.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testReadPubkeyEncryptedAES256() throws IOException
+ {
+ URL url = new URL("https://issues.apache.org/jira/secure/attachment/13011752/B2-AES-256-secured.pdf");
+ byte[] ba = IOUtils.toByteArray(url.openStream()); // because of bug in PDFBOX-4836
+ try (PDDocument doc = Loader.loadPDF(ba,
+ "w!z%C*F-JaNdRgUk",
+ TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-4421-keystore.pfx"),
+ "testnutzer"))
+ {
+ Assert.assertTrue(doc.getEncryption().getSecurityHandler() instanceof PublicKeySecurityHandler);
+ Assert.assertEquals(256, doc.getEncryption().getSecurityHandler().getKeyLength());
+ PDFTextStripper stripper = new PDFTextStripper();
+ //Assert.assertEquals("Key length: 256", stripper.getText(doc).trim())
+ Assert.assertTrue(stripper.getText(doc).contains("ad0000002bf"));
+ }
+ }
}
Added: pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/encryption/PDFBOX-4421-keystore.pfx
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/encryption/PDFBOX-4421-keystore.pfx?rev=1881854&view=auto
==============================================================================
Binary file - no diff available.
Propchange: pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/encryption/PDFBOX-4421-keystore.pfx
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream