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 2014/11/09 23:08:11 UTC
svn commit: r1637752 -
/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java
Author: tilman
Date: Sun Nov 9 22:08:11 2014
New Revision: 1637752
URL: http://svn.apache.org/r1637752
Log:
PDFBOX-2456: add nonSeq for parsing the encrypted file
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=1637752&r1=1637751&r2=1637752&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 Sun Nov 9 22:08:11 2014
@@ -116,15 +116,15 @@ public class TestSymmetricKeyEncryption
byte[] inputFileAsByteArray = getFileResourceAsByteArray("Acroform-PDFBOX-2333.pdf");
int sizePriorToEncryption = inputFileAsByteArray.length;
- PDDocument document = PDDocument.load(new ByteArrayInputStream(inputFileAsByteArray));
- testSymmEncrForKeySize(40, sizePriorToEncryption, document, PASSWORD, permission1);
+ testSymmEncrForKeySize(40, sizePriorToEncryption, inputFileAsByteArray, PASSWORD, permission1, false);
+ testSymmEncrForKeySize(40, sizePriorToEncryption, inputFileAsByteArray, PASSWORD, permission1, true);
- document = PDDocument.load(new ByteArrayInputStream(inputFileAsByteArray));
- testSymmEncrForKeySize(128, sizePriorToEncryption, document, PASSWORD, permission1);
+ testSymmEncrForKeySize(128, sizePriorToEncryption, inputFileAsByteArray, PASSWORD, permission1, false);
+ testSymmEncrForKeySize(128, sizePriorToEncryption, inputFileAsByteArray, PASSWORD, permission1, true);
+ testSymmEncrForKeySize(256, sizePriorToEncryption, inputFileAsByteArray, PASSWORD, permission1, false);
+ testSymmEncrForKeySize(256, sizePriorToEncryption, inputFileAsByteArray, PASSWORD, permission1, true);
//TODO check permissions
- document = PDDocument.load(new ByteArrayInputStream(inputFileAsByteArray));
- testSymmEncrForKeySize(256, sizePriorToEncryption, document, PASSWORD, permission1);
}
/**
@@ -138,25 +138,26 @@ public class TestSymmetricKeyEncryption
String testFileName = "preEnc_20141025_105451.pdf";
byte[] inputFileWithEmbeddedFileAsByteArray = getFileResourceAsByteArray(testFileName);
- PDDocument docWithEmbeddedFile;
int sizeOfFileWithEmbeddedFile = inputFileWithEmbeddedFileAsByteArray.length;
File extractedEmbeddedFile
= extractEmbeddedFile(new ByteArrayInputStream(inputFileWithEmbeddedFileAsByteArray), "innerFile.pdf");
- docWithEmbeddedFile = PDDocument.load(new ByteArrayInputStream(inputFileWithEmbeddedFileAsByteArray));
- testSymmEncrForKeySizeInner(40, sizeOfFileWithEmbeddedFile, docWithEmbeddedFile, extractedEmbeddedFile);
+ testSymmEncrForKeySizeInner(40, sizeOfFileWithEmbeddedFile, inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, false);
+ testSymmEncrForKeySizeInner(40, sizeOfFileWithEmbeddedFile, inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, true);
- docWithEmbeddedFile = PDDocument.load(new ByteArrayInputStream(inputFileWithEmbeddedFileAsByteArray));
- testSymmEncrForKeySizeInner(128, sizeOfFileWithEmbeddedFile, docWithEmbeddedFile, extractedEmbeddedFile);
+ testSymmEncrForKeySizeInner(128, sizeOfFileWithEmbeddedFile, inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, false);
+ testSymmEncrForKeySizeInner(128, sizeOfFileWithEmbeddedFile, inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, true);
- docWithEmbeddedFile = PDDocument.load(new ByteArrayInputStream(inputFileWithEmbeddedFileAsByteArray));
- testSymmEncrForKeySizeInner(256, sizeOfFileWithEmbeddedFile, docWithEmbeddedFile, extractedEmbeddedFile);
+ testSymmEncrForKeySizeInner(256, sizeOfFileWithEmbeddedFile, inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, false);
+ testSymmEncrForKeySizeInner(256, sizeOfFileWithEmbeddedFile, inputFileWithEmbeddedFileAsByteArray, extractedEmbeddedFile, true);
}
private void testSymmEncrForKeySize(int keyLength,
- int sizePriorToEncr, PDDocument document, String password, AccessPermission permission) throws IOException
+ int sizePriorToEncr, byte [] inputFileAsByteArray, String password,
+ AccessPermission permission, boolean nonSeq) throws IOException
{
+ PDDocument document = PDDocument.load(new ByteArrayInputStream(inputFileAsByteArray));
String prefix = "Simple-";
int numSrcPages = document.getNumberOfPages();
PDFRenderer pdfRenderer = new PDFRenderer(document);
@@ -173,7 +174,7 @@ public class TestSymmetricKeyEncryption
srcContentStreamTab.add(baos);
}
- PDDocument encryptedDoc = encrypt(keyLength, sizePriorToEncr, document, prefix, permission);
+ PDDocument encryptedDoc = encrypt(keyLength, sizePriorToEncr, document, prefix, permission, nonSeq);
try
{
@@ -199,6 +200,7 @@ public class TestSymmetricKeyEncryption
}
File pdfFile = new File(testResultsDir, prefix + keyLength + "-bit-decrypted.pdf");
+ encryptedDoc.setAllSecurityToBeRemoved(true);
encryptedDoc.save(pdfFile);
boolean canAssembleDocument = newPermission.canAssembleDocument();
@@ -229,7 +231,8 @@ public class TestSymmetricKeyEncryption
// encrypt with keylength and permission, save, check sizes before and after encryption
// reopen, decrypt and return document
private PDDocument encrypt(int keyLength, int sizePriorToEncr,
- PDDocument doc, String prefix, AccessPermission permission) throws IOException
+ PDDocument doc, String prefix, AccessPermission permission,
+ boolean nonSeq) throws IOException
{
AccessPermission ap = new AccessPermission();
StandardProtectionPolicy spp = new StandardProtectionPolicy(PASSWORD, PASSWORD, ap);
@@ -246,11 +249,18 @@ public class TestSymmetricKeyEncryption
+ "-bit encrypted pdf should not have same size as plain one",
sizeEncrypted != sizePriorToEncr);
- //TODO try replacing this block with loadNonSeq()
- PDDocument encryptedDoc = PDDocument.load(pdfFile);
- Assert.assertTrue(encryptedDoc.isEncrypted());
- DecryptionMaterial decryptionMaterial = new StandardDecryptionMaterial(PASSWORD);
- encryptedDoc.openProtection(decryptionMaterial);
+ PDDocument encryptedDoc;
+ if (nonSeq)
+ {
+ encryptedDoc = PDDocument.loadNonSeq(pdfFile, PASSWORD);
+ }
+ else
+ {
+ encryptedDoc = PDDocument.load(pdfFile);
+ Assert.assertTrue(encryptedDoc.isEncrypted());
+ DecryptionMaterial decryptionMaterial = new StandardDecryptionMaterial(PASSWORD);
+ encryptedDoc.openProtection(decryptionMaterial);
+ }
return encryptedDoc;
}
@@ -284,16 +294,18 @@ public class TestSymmetricKeyEncryption
}
private void testSymmEncrForKeySizeInner(int keyLength,
- int sizePriorToEncr, PDDocument doc,
- File embeddedFilePriorToEncryption) throws IOException
+ int sizePriorToEncr, byte[] inputFileWithEmbeddedFileAsByteArray,
+ File embeddedFilePriorToEncryption, boolean nonSeq) throws IOException
{
- PDDocument encryptedDoc = encrypt(keyLength, sizePriorToEncr, doc, "ContainsEmbedded-", permission1);
+ PDDocument document = PDDocument.load(new ByteArrayInputStream(inputFileWithEmbeddedFileAsByteArray));
+ PDDocument encryptedDoc = encrypt(keyLength, sizePriorToEncr, document, "ContainsEmbedded-", permission1, nonSeq);
try
{
AccessPermission permission = encryptedDoc.getCurrentAccessPermission();
File decryptedFile = new File(testResultsDir, "DecryptedContainsEmbedded-" + keyLength + "-bit.pdf");
+ encryptedDoc.setAllSecurityToBeRemoved(true);
encryptedDoc.save(decryptedFile);
File extractedEmbeddedFile = extractEmbeddedFile(new FileInputStream(decryptedFile), "decryptedInnerFile-" + keyLength + "-bit.pdf");