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