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 2020/09/19 15:45:33 UTC

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

Author: tilman
Date: Sat Sep 19 15:45:32 2020
New Revision: 1881852

URL: http://svn.apache.org/viewvc?rev=1881852&view=rev
Log:
PDFBOX-4421: use template, as suggested by Christian Appl

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=1881852&r1=1881851&r2=1881852&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 Sep 19 15:45:32 2020
@@ -75,7 +75,7 @@ import org.bouncycastle.cms.jcajce.JceKe
  * @see PublicKeyProtectionPolicy to see how to protect document with this security handler.
  * @author Benoit Guillon
  */
-public final class PublicKeySecurityHandler extends SecurityHandler
+public final class PublicKeySecurityHandler extends SecurityHandler<PublicKeyProtectionPolicy>
 {
     /** The filter name. */
     public static final String FILTER = "Adobe.PubSec";
@@ -97,8 +97,7 @@ public final class PublicKeySecurityHand
      */
     public PublicKeySecurityHandler(PublicKeyProtectionPolicy publicKeyProtectionPolicy)
     {
-        setProtectionPolicy(publicKeyProtectionPolicy);
-        setKeyLength(publicKeyProtectionPolicy.getEncryptionKeyLength());
+        super(publicKeyProtectionPolicy);
     }
 
     /**
@@ -422,7 +421,7 @@ public final class PublicKeySecurityHand
 
     private byte[][] computeRecipientsField(byte[] seed) throws GeneralSecurityException, IOException
     {
-        PublicKeyProtectionPolicy protectionPolicy = (PublicKeyProtectionPolicy) getProtectionPolicy();
+        PublicKeyProtectionPolicy protectionPolicy = getProtectionPolicy();
         byte[][] recipientsField = new byte[protectionPolicy.getNumberOfRecipients()][];
         Iterator<PublicKeyRecipient> it = protectionPolicy.getRecipientsIterator();
         int i = 0;

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=1881852&r1=1881851&r2=1881852&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 Sep 19 15:45:32 2020
@@ -56,8 +56,10 @@ import org.apache.pdfbox.pdmodel.PDDocum
  * @author Ben Litchfield
  * @author Benoit Guillon
  * @author Manuel Kasper
+ * 
+ * @param <T_POLICY> the protection policy.
  */
-public abstract class SecurityHandler
+public abstract class SecurityHandler<T_POLICY extends ProtectionPolicy>
 {
     private static final Log LOG = LogFactory.getLog(SecurityHandler.class);
 
@@ -90,7 +92,10 @@ public abstract class SecurityHandler
 
     private boolean useAES;
 
-    private ProtectionPolicy protectionPolicy = null;
+    /**
+     * The typed {@link ProtectionPolicy} to be used for encryption.
+     */
+    private T_POLICY protectionPolicy = null;
     
     /**
      * The access permission granted to the current user for the document. These
@@ -109,6 +114,24 @@ public abstract class SecurityHandler
     private COSName stringFilterName;
 
     /**
+     * Constructor.
+     */
+    public SecurityHandler()
+    {
+    }
+
+    /**
+     * Constructor used for encryption.
+     *
+     * @param protectionPolicy The protection policy.
+     */
+    public SecurityHandler(T_POLICY protectionPolicy)
+    {
+        this.protectionPolicy = protectionPolicy;
+        keyLength = protectionPolicy.getEncryptionKeyLength();
+    }
+
+    /**
      * Set whether to decrypt meta data.
      *
      * @param decryptMetadata true if meta data has to be decrypted.
@@ -714,7 +737,7 @@ public abstract class SecurityHandler
      *
      * @return The set {@link ProtectionPolicy}.
      */
-    protected ProtectionPolicy getProtectionPolicy()
+    protected T_POLICY getProtectionPolicy()
     {
         return protectionPolicy;
     }
@@ -723,7 +746,7 @@ public abstract class SecurityHandler
      * Sets the {@link ProtectionPolicy} to the given value.
      * @param protectionPolicy The {@link ProtectionPolicy}, that shall be set.
      */
-    protected void setProtectionPolicy(ProtectionPolicy protectionPolicy)
+    protected void setProtectionPolicy(T_POLICY protectionPolicy)
     {
         this.protectionPolicy = protectionPolicy;
     }

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=1881852&r1=1881851&r2=1881852&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 Sep 19 15:45:32 2020
@@ -46,7 +46,7 @@ import org.apache.pdfbox.pdmodel.PDDocum
  * @author Benoit Guillon
  * @author Manuel Kasper
  */
-public final class StandardSecurityHandler extends SecurityHandler
+public final class StandardSecurityHandler extends SecurityHandler<StandardProtectionPolicy>
 {
     /**
      * Log instance.
@@ -88,8 +88,7 @@ public final class StandardSecurityHandl
      */
     public StandardSecurityHandler(StandardProtectionPolicy standardProtectionPolicy)
     {
-        setProtectionPolicy(standardProtectionPolicy);
-        setKeyLength(standardProtectionPolicy.getEncryptionKeyLength());
+        super(standardProtectionPolicy);
     }
 
     /**
@@ -103,7 +102,7 @@ public final class StandardSecurityHandl
      */
     private int computeRevisionNumber(int version)
     {
-        StandardProtectionPolicy protectionPolicy = (StandardProtectionPolicy) getProtectionPolicy();
+        StandardProtectionPolicy protectionPolicy = getProtectionPolicy();
         AccessPermission permissions = protectionPolicy.getPermissions();
         if (version < 2 && !permissions.hasAnyRevision3PermissionSet())
         {
@@ -347,7 +346,7 @@ public final class StandardSecurityHandl
         encryptionDictionary.setRevision(revision);
         encryptionDictionary.setLength(getKeyLength());
 
-        StandardProtectionPolicy protectionPolicy = (StandardProtectionPolicy) getProtectionPolicy();
+        StandardProtectionPolicy protectionPolicy = getProtectionPolicy();
         String ownerPassword = protectionPolicy.getOwnerPassword();
         String userPassword = protectionPolicy.getUserPassword();
         if( ownerPassword == null )