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();