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 2017/10/25 18:35:50 UTC

svn commit: r1813336 - in /pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature: CreateSignature.java CreateSignatureBase.java CreateVisibleSignature.java

Author: tilman
Date: Wed Oct 25 18:35:49 2017
New Revision: 1813336

URL: http://svn.apache.org/viewvc?rev=1813336&view=rev
Log:
PDFBOX-1848: remove MDP methods from base class; adjust calls

Modified:
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateVisibleSignature.java

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java?rev=1813336&r1=1813335&r2=1813336&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java Wed Oct 25 18:35:49 2017
@@ -116,7 +116,7 @@ public class CreateSignature extends Cre
     {
         setTsaClient(tsaClient);
 
-        int accessPermissions = getMDPPermission(document);
+        int accessPermissions = SigUtils.getMDPPermission(document);
         if (accessPermissions == 1)
         {
             throw new IllegalStateException("No changes to the document are permitted due to DocMDP transform parameters dictionary");
@@ -137,7 +137,7 @@ public class CreateSignature extends Cre
         // Optional: certify 
         if (accessPermissions == 0)
         {
-            setMDPPermission(document, signature, 2);
+            SigUtils.setMDPPermission(document, signature, 2);
         }        
 
         if (isExternalSigning())

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java?rev=1813336&r1=1813335&r2=1813336&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java Wed Oct 25 18:35:49 2017
@@ -251,88 +251,4 @@ public abstract class CreateSignatureBas
     {
         return externalSigning;
     }
-
-    /**
-     * Get the access permissions granted for this document in the DocMDP transform parameters
-     * dictionary. Details are described in the table "Entries in the DocMDP transform parameters
-     * dictionary" in the PDF specification.
-     *
-     * @param doc document.
-     * @return the permission value. 0 means no DocMDP transform parameters dictionary exists. Other
-     * return values are 1, 2 or 3. 2 is also returned if the DocMDP transform parameters dictionary
-     * is found but did not contain a /P entry, or if the value is outside the valid range.
-     */
-    public int getMDPPermission(PDDocument doc)
-    {
-        COSBase base = doc.getDocumentCatalog().getCOSObject().getDictionaryObject(COSName.PERMS);
-        if (base instanceof COSDictionary)
-        {
-            COSDictionary permsDict = (COSDictionary) base;
-            base = permsDict.getDictionaryObject(COSName.DOCMDP);
-            if (base instanceof COSDictionary)
-            {
-                COSDictionary signatureDict = (COSDictionary) base;
-                base = signatureDict.getDictionaryObject("Reference");
-                if (base instanceof COSArray)
-                {
-                    COSArray refArray = (COSArray) base;
-                    for (int i = 0; i < refArray.size(); ++i)
-                    {
-                        base = refArray.getObject(i);
-                        if (base instanceof COSDictionary)
-                        {
-                            COSDictionary sigRefDict = (COSDictionary) base;
-                            if (COSName.DOCMDP.equals(sigRefDict.getDictionaryObject("TransformMethod")))
-                            {
-                                base = sigRefDict.getDictionaryObject("TransformParams");
-                                if (base instanceof COSDictionary)
-                                {
-                                    COSDictionary transformDict = (COSDictionary) base;
-                                    int accessPermissions = transformDict.getInt(COSName.P, 2);
-                                    if (accessPermissions < 1 || accessPermissions > 3)
-                                    {
-                                        accessPermissions = 2;
-                                    }
-                                    return accessPermissions;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        return 0;
-    }
-
-    public void setMDPPermission(PDDocument doc, PDSignature signature, int accessPermissions)
-    {
-        COSDictionary sigDict = signature.getCOSObject();
-
-        // DocMDP specific stuff
-        COSDictionary transformParameters = new COSDictionary();
-        transformParameters.setItem(COSName.TYPE, COSName.getPDFName("TransformParams"));
-        transformParameters.setInt(COSName.P, accessPermissions);
-        transformParameters.setName(COSName.V, "1.2");
-        transformParameters.setNeedToBeUpdated(true);
-
-        COSDictionary referenceDict = new COSDictionary();
-        referenceDict.setItem(COSName.TYPE, COSName.getPDFName("SigRef"));
-        referenceDict.setItem("TransformMethod", COSName.getPDFName("DocMDP"));
-        referenceDict.setItem("DigestMethod", COSName.getPDFName("SHA1"));
-        referenceDict.setItem("TransformParams", transformParameters);
-        referenceDict.setNeedToBeUpdated(true);
-
-        COSArray referenceArray = new COSArray();
-        referenceArray.add(referenceDict);
-        sigDict.setItem("Reference", referenceArray);
-        referenceArray.setNeedToBeUpdated(true);
-
-        // Catalog
-        COSDictionary catalogDict = doc.getDocumentCatalog().getCOSObject();
-        COSDictionary permsDict = new COSDictionary();
-        catalogDict.setItem(COSName.PERMS, permsDict);
-        permsDict.setItem(COSName.DOCMDP, signature);
-        catalogDict.setNeedToBeUpdated(true);
-        permsDict.setNeedToBeUpdated(true);
-    }
 }

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateVisibleSignature.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateVisibleSignature.java?rev=1813336&r1=1813335&r2=1813336&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateVisibleSignature.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateVisibleSignature.java Wed Oct 25 18:35:49 2017
@@ -195,7 +195,7 @@ public class CreateVisibleSignature exte
 
         try (PDDocument doc = PDDocument.load(inputFile))
         {
-            int accessPermissions = getMDPPermission(doc);
+            int accessPermissions = SigUtils.getMDPPermission(doc);
             if (accessPermissions == 1)
             {
                 throw new IllegalStateException("No changes to the document are permitted due to DocMDP transform parameters dictionary");
@@ -221,7 +221,7 @@ public class CreateVisibleSignature exte
             // PDF/A-1b requires PDF version 1.4 max, so don't increase the version on such files.
             if (doc.getVersion() >= 1.5f && accessPermissions == 0)
             {
-                setMDPPermission(doc, signature, 2);
+                SigUtils.setMDPPermission(doc, signature, 2);
             }
 
             PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();