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 2014/06/28 13:44:39 UTC
svn commit: r1606321 - in
/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption:
PublicKeySecurityHandler.java SecurityHandler.java
StandardSecurityHandler.java
Author: lehmi
Date: Sat Jun 28 11:44:39 2014
New Revision: 1606321
URL: http://svn.apache.org/r1606321
Log:
PDFBOX-1872: don't decrypt not encrypted metadata
Modified:
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java?rev=1606321&r1=1606320&r2=1606321&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java Sat Jun 28 11:44:39 2014
@@ -148,18 +148,19 @@ public class PublicKeySecurityHandler ex
DecryptionMaterial decryptionMaterial)
throws CryptographyException, IOException
{
-
- if(encDictionary.getLength() != 0)
- {
- this.keyLength = encDictionary.getLength();
- }
-
if(!(decryptionMaterial instanceof PublicKeyDecryptionMaterial))
{
throw new CryptographyException(
"Provided decryption material is not compatible with the document");
}
-
+
+ decryptMetadata = encDictionary.isEncryptMetaData();
+ if(encDictionary.getLength() != 0)
+ {
+ this.keyLength = encDictionary.getLength();
+ }
+
+
PublicKeyDecryptionMaterial material = (PublicKeyDecryptionMaterial)decryptionMaterial;
try
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java?rev=1606321&r1=1606320&r2=1606321&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java Sat Jun 28 11:44:39 2014
@@ -101,6 +101,10 @@ public abstract class SecurityHandler
*/
protected ARCFour rc4 = new ARCFour();
+ /**
+ * indicates if the Metadata have to be decrypted of not
+ */
+ protected boolean decryptMetadata;
private Set<COSBase> objects = new HashSet<COSBase>();
private Set<COSDictionary> potentialSignatures = new HashSet<COSDictionary>();
@@ -408,6 +412,10 @@ public abstract class SecurityHandler
*/
public void decryptStream(COSStream stream, long objNum, long genNum) throws CryptographyException, IOException
{
+ if (!decryptMetadata && COSName.METADATA.equals(stream.getDictionaryObject(COSName.TYPE)))
+ {
+ return;
+ }
decryptDictionary(stream, objNum, genNum);
InputStream encryptedStream = stream.getFilteredStream();
encryptData(objNum, genNum, encryptedStream, stream.createFilteredStream(), true /* decrypt */);
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java?rev=1606321&r1=1606320&r2=1606321&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java Sat Jun 28 11:44:39 2014
@@ -179,7 +179,8 @@ public class StandardSecurityHandler ext
{
throw new CryptographyException("Provided decryption material is not compatible with the document");
}
-
+ decryptMetadata = encDictionary.isEncryptMetaData();
+
StandardDecryptionMaterial material = (StandardDecryptionMaterial)decryptionMaterial;
String password = material.getPassword();