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 )