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 2019/09/28 13:53:57 UTC
svn commit: r1867675 -
/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
Author: tilman
Date: Sat Sep 28 13:53:57 2019
New Revision: 1867675
URL: http://svn.apache.org/viewvc?rev=1867675&view=rev
Log:
PDFBOX-4071: use jdk7 try-with-resources
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=1867675&r1=1867674&r2=1867675&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 Sat Sep 28 13:53:57 2019
@@ -33,7 +33,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSString;
import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
@@ -111,8 +110,10 @@ public class TestSymmetricKeyEncryption
* standard". The restricted permissions prevent printing and text
* extraction. In the 128 and 256 bit encrypted files, AssembleDocument,
* ExtractForAccessibility and PrintDegraded are also disabled.
+ *
+ * @throws java.io.IOException
*/
- public void testPermissions() throws Exception
+ public void testPermissions() throws IOException
{
AccessPermission fullAP = new AccessPermission();
AccessPermission restrAP = new AccessPermission();
@@ -167,28 +168,27 @@ public class TestSymmetricKeyEncryption
private void checkPerms(byte[] inputFileAsByteArray, String password,
AccessPermission expectedPermissions) throws IOException
{
- PDDocument doc = PDDocument.load(inputFileAsByteArray, password);
-
- AccessPermission currentAccessPermission = doc.getCurrentAccessPermission();
-
- // check permissions
- assertEquals(expectedPermissions.isOwnerPermission(), currentAccessPermission.isOwnerPermission());
- if (!expectedPermissions.isOwnerPermission())
- {
- assertEquals(true, currentAccessPermission.isReadOnly());
- }
- assertEquals(expectedPermissions.canAssembleDocument(), currentAccessPermission.canAssembleDocument());
- assertEquals(expectedPermissions.canExtractContent(), currentAccessPermission.canExtractContent());
- assertEquals(expectedPermissions.canExtractForAccessibility(), currentAccessPermission.canExtractForAccessibility());
- assertEquals(expectedPermissions.canFillInForm(), currentAccessPermission.canFillInForm());
- assertEquals(expectedPermissions.canModify(), currentAccessPermission.canModify());
- assertEquals(expectedPermissions.canModifyAnnotations(), currentAccessPermission.canModifyAnnotations());
- assertEquals(expectedPermissions.canPrint(), currentAccessPermission.canPrint());
- assertEquals(expectedPermissions.canPrintDegraded(), currentAccessPermission.canPrintDegraded());
-
- new PDFRenderer(doc).renderImage(0);
-
- doc.close();
+ try (PDDocument doc = PDDocument.load(inputFileAsByteArray, password))
+ {
+ AccessPermission currentAccessPermission = doc.getCurrentAccessPermission();
+
+ // check permissions
+ assertEquals(expectedPermissions.isOwnerPermission(), currentAccessPermission.isOwnerPermission());
+ if (!expectedPermissions.isOwnerPermission())
+ {
+ assertEquals(true, currentAccessPermission.isReadOnly());
+ }
+ assertEquals(expectedPermissions.canAssembleDocument(), currentAccessPermission.canAssembleDocument());
+ assertEquals(expectedPermissions.canExtractContent(), currentAccessPermission.canExtractContent());
+ assertEquals(expectedPermissions.canExtractForAccessibility(), currentAccessPermission.canExtractForAccessibility());
+ assertEquals(expectedPermissions.canFillInForm(), currentAccessPermission.canFillInForm());
+ assertEquals(expectedPermissions.canModify(), currentAccessPermission.canModify());
+ assertEquals(expectedPermissions.canModifyAnnotations(), currentAccessPermission.canModifyAnnotations());
+ assertEquals(expectedPermissions.canPrint(), currentAccessPermission.canPrint());
+ assertEquals(expectedPermissions.canPrintDegraded(), currentAccessPermission.canPrintDegraded());
+
+ new PDFRenderer(doc).renderImage(0);
+ }
}
/**
@@ -327,36 +327,37 @@ public class TestSymmetricKeyEncryption
for (int i = 0; i < numSrcPages; ++i)
{
srcImgTab.add(pdfRenderer.renderImage(i));
- InputStream unfilteredStream = document.getPage(i).getContents();
- byte[] bytes = IOUtils.toByteArray(unfilteredStream);
- unfilteredStream.close();
- srcContentStreamTab.add(bytes);
- }
-
- PDDocument encryptedDoc = encrypt(keyLength, preferAES, sizePriorToEncr, document,
- prefix, permission, userpassword, ownerpassword);
-
- Assert.assertEquals(numSrcPages, encryptedDoc.getNumberOfPages());
- pdfRenderer = new PDFRenderer(encryptedDoc);
- for (int i = 0; i < encryptedDoc.getNumberOfPages(); ++i)
- {
- // compare rendering
- BufferedImage bim = pdfRenderer.renderImage(i);
- ValidateXImage.checkIdent(bim, srcImgTab.get(i));
-
- // compare content streams
- InputStream unfilteredStream = encryptedDoc.getPage(i).getContents();
- byte[] bytes = IOUtils.toByteArray(unfilteredStream);
- unfilteredStream.close();
- Assert.assertArrayEquals("content stream of page " + i + " not identical",
- srcContentStreamTab.get(i),
- bytes);
- }
-
- File pdfFile = new File(testResultsDir, prefix + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + "-decrypted.pdf");
- encryptedDoc.setAllSecurityToBeRemoved(true);
- encryptedDoc.save(pdfFile);
- encryptedDoc.close();
+ try (InputStream unfilteredStream = document.getPage(i).getContents())
+ {
+ srcContentStreamTab.add(IOUtils.toByteArray(unfilteredStream));
+ }
+ }
+
+ try (PDDocument encryptedDoc = encrypt(keyLength, preferAES, sizePriorToEncr, document,
+ prefix, permission, userpassword, ownerpassword))
+ {
+ Assert.assertEquals(numSrcPages, encryptedDoc.getNumberOfPages());
+ pdfRenderer = new PDFRenderer(encryptedDoc);
+ for (int i = 0; i < encryptedDoc.getNumberOfPages(); ++i)
+ {
+ // compare rendering
+ BufferedImage bim = pdfRenderer.renderImage(i);
+ ValidateXImage.checkIdent(bim, srcImgTab.get(i));
+
+ // compare content streams
+ try (InputStream unfilteredStream = encryptedDoc.getPage(i).getContents())
+ {
+ byte[] bytes = IOUtils.toByteArray(unfilteredStream);
+ Assert.assertArrayEquals("content stream of page " + i + " not identical",
+ srcContentStreamTab.get(i),
+ bytes);
+ }
+ }
+
+ File pdfFile = new File(testResultsDir, prefix + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + "-decrypted.pdf");
+ encryptedDoc.setAllSecurityToBeRemoved(true);
+ encryptedDoc.save(pdfFile);
+ }
}
// encrypt with keylength and permission, save, check sizes before and after encryption
@@ -432,11 +433,11 @@ public class TestSymmetricKeyEncryption
PDEmbeddedFile embeddedFile = complexFileSpec.getEmbeddedFile();
File resultFile = new File(testResultsDir, name);
- FileOutputStream fos = new FileOutputStream(resultFile);
- InputStream is = embeddedFile.createInputStream();
- IOUtils.copy(is, fos);
- fos.close();
- is.close();
+ try (FileOutputStream fos = new FileOutputStream(resultFile);
+ InputStream is = embeddedFile.createInputStream())
+ {
+ IOUtils.copy(is, fos);
+ }
LOG.info(" size: " + embeddedFile.getSize());
assertEquals(embeddedFile.getSize(), resultFile.length());
@@ -450,22 +451,22 @@ public class TestSymmetricKeyEncryption
String userpassword, String ownerpassword) throws IOException
{
PDDocument document = PDDocument.load(inputFileWithEmbeddedFileAsByteArray);
- PDDocument encryptedDoc = encrypt(keyLength, preferAES, sizePriorToEncr, document, "ContainsEmbedded-", permission, userpassword, ownerpassword);
-
- File decryptedFile = new File(testResultsDir, "DecryptedContainsEmbedded-" + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + ".pdf");
- encryptedDoc.setAllSecurityToBeRemoved(true);
- encryptedDoc.save(decryptedFile);
-
- File extractedEmbeddedFile = extractEmbeddedFile(new FileInputStream(decryptedFile), "decryptedInnerFile-" + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + ".pdf");
-
- Assert.assertEquals(keyLength + "-bit " + (preferAES ? "AES" : "RC4") + " decrypted inner attachment pdf should have same size as plain one",
- embeddedFilePriorToEncryption.length(), extractedEmbeddedFile.length());
-
- // compare the two embedded files
- Assert.assertArrayEquals(
- getFileAsByteArray(embeddedFilePriorToEncryption),
- getFileAsByteArray(extractedEmbeddedFile));
- encryptedDoc.close();
+ try (PDDocument encryptedDoc = encrypt(keyLength, preferAES, sizePriorToEncr, document, "ContainsEmbedded-", permission, userpassword, ownerpassword))
+ {
+ File decryptedFile = new File(testResultsDir, "DecryptedContainsEmbedded-" + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + ".pdf");
+ encryptedDoc.setAllSecurityToBeRemoved(true);
+ encryptedDoc.save(decryptedFile);
+
+ File extractedEmbeddedFile = extractEmbeddedFile(new FileInputStream(decryptedFile), "decryptedInnerFile-" + keyLength + "-bit-" + (preferAES ? "AES" : "RC4") + ".pdf");
+
+ Assert.assertEquals(keyLength + "-bit " + (preferAES ? "AES" : "RC4") + " decrypted inner attachment pdf should have same size as plain one",
+ embeddedFilePriorToEncryption.length(), extractedEmbeddedFile.length());
+
+ // compare the two embedded files
+ Assert.assertArrayEquals(
+ getFileAsByteArray(embeddedFilePriorToEncryption),
+ getFileAsByteArray(extractedEmbeddedFile));
+ }
}
private byte[] getFileResourceAsByteArray(String testFileName) throws IOException