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:29:08 UTC

svn commit: r1606319 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption: PublicKeySecurityHandler.java SecurityHandler.java StandardSecurityHandler.java

Author: lehmi
Date: Sat Jun 28 11:29:08 2014
New Revision: 1606319

URL: http://svn.apache.org/r1606319
Log:
PDFBOX-1872: don't decrypt not encrypted metadata

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java?rev=1606319&r1=1606318&r2=1606319&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/PublicKeySecurityHandler.java Sat Jun 28 11:29:08 2014
@@ -135,17 +135,18 @@ public final class PublicKeySecurityHand
                                      DecryptionMaterial decryptionMaterial)
                                      throws IOException
     {
-	      if(encryption.getLength() != 0)
-	      {
-	          this.keyLength = encryption.getLength();
-	      }
-	
 	      if(!(decryptionMaterial instanceof PublicKeyDecryptionMaterial))
 	      {
 	          throw new IOException(
 	              "Provided decryption material is not compatible with the document");
 	      }
 	
+          decryptMetadata = encryption.isEncryptMetaData();
+          if(encryption.getLength() != 0)
+          {
+              this.keyLength = encryption.getLength();
+          }
+    
 	      PublicKeyDecryptionMaterial material = (PublicKeyDecryptionMaterial)decryptionMaterial;
 	
 	      try

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java?rev=1606319&r1=1606318&r2=1606319&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java Sat Jun 28 11:29:08 2014
@@ -82,11 +82,14 @@ public abstract class SecurityHandler
     /** The RC4 implementation used for cryptographic functions. */
     protected RC4Cipher rc4 = new RC4Cipher();
 
+    /** indicates if the Metadata have to be decrypted of not */ 
+    protected boolean decryptMetadata; 
+    
     private final Set<COSBase> objects = new HashSet<COSBase>();
     private final Set<COSDictionary> potentialSignatures = new HashSet<COSDictionary>();
 
     private boolean useAES;
-
+    
     /**
      * The access permission granted to the current user for the document. These
      * permissions are computed during decryption and are in read only mode.
@@ -413,6 +416,10 @@ public abstract class SecurityHandler
      */
     public void decryptStream(COSStream stream, long objNum, long genNum) throws IOException
     {
+        if (!decryptMetadata && COSName.METADATA.equals(stream.getCOSName(COSName.TYPE)))
+        {
+            return;
+        }
         decryptDictionary(stream, objNum, genNum);
         InputStream encryptedStream = stream.getFilteredStream();
         encryptData(objNum, genNum, encryptedStream, stream.createFilteredStream(), true /* decrypt */);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java?rev=1606319&r1=1606318&r2=1606319&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/StandardSecurityHandler.java Sat Jun 28 11:29:08 2014
@@ -175,6 +175,7 @@ public final class StandardSecurityHandl
         {
             throw new IOException("Decryption material is not compatible with the document");
         }
+        decryptMetadata = encryption.isEncryptMetaData();
 
         StandardDecryptionMaterial material = (StandardDecryptionMaterial)decryptionMaterial;