You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2022/08/02 05:47:15 UTC

svn commit: r1903187 - in /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption: TestPublicKeyEncryption.java TestSymmetricKeyEncryption.java

Author: lehmi
Date: Tue Aug  2 05:47:15 2022
New Revision: 1903187

URL: http://svn.apache.org/viewvc?rev=1903187&view=rev
Log:
PDFBOX-5483: replace InputStream with RandomAccessRead

Modified:
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.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=1903187&r1=1903186&r2=1903187&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 Tue Aug  2 05:47:15 2022
@@ -36,6 +36,7 @@ import javax.crypto.Cipher;
 
 import org.apache.pdfbox.Loader;
 import org.apache.pdfbox.io.MemoryUsageSetting;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
 import org.apache.pdfbox.pdmodel.encryption.PublicKeyProtectionPolicy;
@@ -333,8 +334,9 @@ class TestPublicKeyEncryption
     @Test
     void testReadPubkeyEncryptedAES128() throws IOException
     {
-        try (InputStream is = TestPublicKeyEncryption.class.getResourceAsStream("AESkeylength128.pdf");
-             PDDocument doc = Loader.loadPDF(is,
+        try (PDDocument doc = Loader.loadPDF(
+                RandomAccessReadBuffer.createBufferFromStream(
+                        TestPublicKeyEncryption.class.getResourceAsStream("AESkeylength128.pdf")),
                 "w!z%C*F-JaNdRgUk",
                 TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-4421-keystore.pfx"),
                 "testnutzer"))
@@ -356,8 +358,9 @@ class TestPublicKeyEncryption
     @Test
     void testReadPubkeyEncryptedAES256() throws IOException
     {
-        try (InputStream is = TestPublicKeyEncryption.class.getResourceAsStream("AESkeylength256.pdf");
-             PDDocument doc = Loader.loadPDF(is,
+        try (PDDocument doc = Loader.loadPDF(
+                RandomAccessReadBuffer.createBufferFromStream(
+                        TestPublicKeyEncryption.class.getResourceAsStream("AESkeylength256.pdf")),
                 "w!z%C*F-JaNdRgUk",
                 TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-4421-keystore.pfx"),
                 "testnutzer"))
@@ -379,10 +382,11 @@ class TestPublicKeyEncryption
     @Test
     void testReadPubkeyEncryptedAES128withMetadataExposed() throws IOException
     {
-        try (InputStream is = TestPublicKeyEncryption.class.getResourceAsStream("AES128ExposedMeta.pdf");
-             PDDocument doc = Loader.loadPDF(is, "",
-                     TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-5249.p12"), "test",
-                     MemoryUsageSetting.setupMainMemoryOnly()))
+        try (PDDocument doc = Loader.loadPDF(
+                RandomAccessReadBuffer.createBufferFromStream(
+                        TestPublicKeyEncryption.class.getResourceAsStream("AES128ExposedMeta.pdf")), //
+                "", TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-5249.p12"), //
+                "test", MemoryUsageSetting.setupMainMemoryOnly()))
         {
             assertEquals("PublicKeySecurityHandler",
                     doc.getEncryption().getSecurityHandler().getClass().getSimpleName());
@@ -402,10 +406,11 @@ class TestPublicKeyEncryption
     @Test
     void testReadPubkeyEncryptedAES256withMetadataExposed() throws IOException
     {
-        try (InputStream is = TestPublicKeyEncryption.class.getResourceAsStream("AES256ExposedMeta.pdf");
-             PDDocument doc = Loader.loadPDF(is, "",
-                     TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-5249.p12"), "test",
-                     MemoryUsageSetting.setupMainMemoryOnly()))
+        try (PDDocument doc = Loader.loadPDF(
+                RandomAccessReadBuffer.createBufferFromStream(
+                        TestPublicKeyEncryption.class.getResourceAsStream("AES256ExposedMeta.pdf")), //
+                "", TestPublicKeyEncryption.class.getResourceAsStream("PDFBOX-5249.p12"), //
+                "test", MemoryUsageSetting.setupMainMemoryOnly()))
         {
             assertEquals("PublicKeySecurityHandler",
                     doc.getEncryption().getSecurityHandler().getClass().getSimpleName());

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=1903187&r1=1903186&r2=1903187&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 Tue Aug  2 05:47:15 2022
@@ -24,9 +24,7 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.fail;
 
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -44,6 +42,9 @@ import org.apache.pdfbox.Loader;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.io.IOUtils;
+import org.apache.pdfbox.io.RandomAccessRead;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
+import org.apache.pdfbox.io.RandomAccessReadBufferedFile;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary;
@@ -262,7 +263,9 @@ class TestSymmetricKeyEncryption
         int sizeOfFileWithEmbeddedFile = inputFileWithEmbeddedFileAsByteArray.length;
 
         File extractedEmbeddedFile
-                = extractEmbeddedFile(new ByteArrayInputStream(inputFileWithEmbeddedFileAsByteArray), "innerFile.pdf");
+                = extractEmbeddedFile(
+                        new RandomAccessReadBuffer(inputFileWithEmbeddedFileAsByteArray),
+                        "innerFile.pdf");
 
         testSymmEncrForKeySizeInner(40, false, sizeOfFileWithEmbeddedFile, 
                 inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, USERPASSWORD, OWNERPASSWORD);
@@ -426,9 +429,9 @@ class TestSymmetricKeyEncryption
     }
 
     // extract the embedded file, saves it, and return the extracted saved file
-    private File extractEmbeddedFile(InputStream pdfInputStream, String name) throws IOException
+    private File extractEmbeddedFile(RandomAccessRead pdfSource, String name) throws IOException
     {
-        PDDocument docWithEmbeddedFile = Loader.loadPDF(pdfInputStream);
+        PDDocument docWithEmbeddedFile = Loader.loadPDF(pdfSource);
         PDDocumentCatalog catalog = docWithEmbeddedFile.getDocumentCatalog();
         PDDocumentNameDictionary names = catalog.getNames();
         PDEmbeddedFilesNameTreeNode embeddedFiles = names.getEmbeddedFiles();
@@ -464,7 +467,9 @@ class TestSymmetricKeyEncryption
             encryptedDoc.setAllSecurityToBeRemoved(true);
             encryptedDoc.save(decryptedFile);
             
-            File extractedEmbeddedFile = extractEmbeddedFile(new FileInputStream(decryptedFile), "decryptedInnerFile-" + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + ".pdf");
+            File extractedEmbeddedFile = extractEmbeddedFile(
+                    new RandomAccessReadBufferedFile(decryptedFile), "decryptedInnerFile-"
+                            + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + ".pdf");
             
             assertEquals(embeddedFilePriorToEncryption.length(), extractedEmbeddedFile.length(),
                     keyLength + "-bit " + (preferAES ? "AES" : "RC4") + " decrypted inner attachment pdf should have same size as plain one");