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 2020/09/06 14:29:28 UTC

svn commit: r1881512 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java

Author: lehmi
Date: Sun Sep  6 14:29:28 2020
New Revision: 1881512

URL: http://svn.apache.org/viewvc?rev=1881512&view=rev
Log:
PDFBOX-4954: harmonized types for getter and setter, eliminate the usage of COSArrayList

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java?rev=1881512&r1=1881511&r2=1881512&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/PDSeedValue.java Sun Sep  6 14:29:28 2020
@@ -16,14 +16,14 @@
  */
 package org.apache.pdfbox.pdmodel.interactive.digitalsignature;
 
-import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 
 /**
@@ -33,6 +33,14 @@ import org.apache.pdfbox.pdmodel.common.
  */
 public class PDSeedValue implements COSObjectable
 {
+
+    private static final List<String> allowedDigestNames = Arrays.asList(
+            COSName.DIGEST_SHA1.getName(), //
+            COSName.DIGEST_SHA256.getName(), //
+            COSName.DIGEST_SHA384.getName(), //
+            COSName.DIGEST_SHA512.getName(), //
+            COSName.DIGEST_RIPEMD160.getName());
+
     /**
      * A Ff flag.
      */
@@ -271,23 +279,12 @@ public class PDSeedValue implements COSO
      */
     public List<String> getSubFilter()
     {
-        List<String> retval = null;
-        COSArray fields = (COSArray)dictionary.getDictionaryObject(COSName.SUB_FILTER);
-
+        COSArray fields = dictionary.getCOSArray(COSName.SUB_FILTER);
         if (fields != null)
         {
-            List<String> actuals = new ArrayList<>();
-            for ( int i = 0; i < fields.size(); i++ )
-            {
-                String element = fields.getName(i);
-                if (element != null)
-                {
-                    actuals.add(element);
-                }
-            }
-            retval = new COSArrayList<>(actuals, fields);
+            return fields.toCOSNameStringList();
         }
-        return retval;
+        return Collections.emptyList();
     }
 
     /**
@@ -297,9 +294,10 @@ public class PDSeedValue implements COSO
      *
      * @param subfilter is the name that shall be used for encoding
      */
-    public void setSubFilter(List<COSName> subfilter)
+    public void setSubFilter(List<String> subfilter)
     {
-        dictionary.setItem(COSName.SUB_FILTER, COSArrayList.converterToCOSArray(subfilter));
+        dictionary.setItem(COSName.SUB_FILTER,
+                COSArray.convertStringListToCOSNameCOSArray(subfilter));
     }
 
     /**
@@ -311,23 +309,12 @@ public class PDSeedValue implements COSO
      */
     public List<String> getDigestMethod()
     {
-        List<String> retval = null;
-        COSArray fields = (COSArray)dictionary.getDictionaryObject(COSName.DIGEST_METHOD);
-
+        COSArray fields = dictionary.getCOSArray(COSName.DIGEST_METHOD);
         if (fields != null)
         {
-            List<String> actuals = new ArrayList<>();
-            for ( int i = 0; i < fields.size(); i++ )
-            {
-                String element = fields.getName(i);
-                if (element != null)
-                {
-                    actuals.add(element);
-                }
-            }
-            retval = new COSArrayList<>(actuals, fields);
+            return fields.toCOSNameStringList();
         }
-        return retval;
+        return Collections.emptyList();
     }
 
     /**
@@ -342,21 +329,19 @@ public class PDSeedValue implements COSO
      * @param digestMethod is a list of possible names of the digests, that should be
      * used for signing.
      */
-    public void setDigestMethod(List<COSName> digestMethod)
+    public void setDigestMethod(List<String> digestMethod)
     {
         // integrity check
-        for ( COSName cosName : digestMethod )
+        for (String digestName : digestMethod)
         {
-            if (!(cosName.equals(COSName.DIGEST_SHA1) 
-                    || cosName.equals(COSName.DIGEST_SHA256)
-                    || cosName.equals(COSName.DIGEST_SHA384)
-                    || cosName.equals(COSName.DIGEST_SHA512)
-                    || cosName.equals(COSName.DIGEST_RIPEMD160)))
+            if (!allowedDigestNames.contains(digestName))
             {
-                throw new IllegalArgumentException("Specified digest " + cosName.getName() + " isn't allowed.");
+                throw new IllegalArgumentException(
+                        "Specified digest " + digestName + " isn't allowed.");
             }
         }
-        dictionary.setItem(COSName.DIGEST_METHOD, COSArrayList.converterToCOSArray(digestMethod));
+        dictionary.setItem(COSName.DIGEST_METHOD,
+                COSArray.convertStringListToCOSNameCOSArray(digestMethod));
     }
 
     /**
@@ -400,23 +385,12 @@ public class PDSeedValue implements COSO
      */
     public List<String> getReasons()
     {
-        List<String> retval = null;
-        COSArray fields = (COSArray)dictionary.getDictionaryObject(COSName.REASONS);
-
+        COSArray fields = dictionary.getCOSArray(COSName.REASONS);
         if (fields != null)
         {
-            List<String> actuals = new ArrayList<>();
-            for ( int i = 0; i < fields.size(); i++ )
-            {
-                String element = fields.getString(i);
-                if (element != null)
-                {
-                    actuals.add(element);
-                }
-            }
-            retval = new COSArrayList<>(actuals, fields);
+            return fields.toCOSNameStringList();
         }
-        return retval;
+        return Collections.emptyList();
     }
 
     /**
@@ -546,23 +520,12 @@ public class PDSeedValue implements COSO
      */
     public List<String> getLegalAttestation()
     {
-        List<String> retval = null;
-        COSArray fields = (COSArray)dictionary.getDictionaryObject(COSName.LEGAL_ATTESTATION);
-
+        COSArray fields = dictionary.getCOSArray(COSName.LEGAL_ATTESTATION);
         if (fields != null)
         {
-            List<String> actuals = new ArrayList<>();
-            for ( int i = 0; i < fields.size(); i++ )
-            {
-                String element = fields.getString(i);
-                if (element != null)
-                {
-                    actuals.add(element);
-                }
-            }
-            retval = new COSArrayList<>(actuals, fields);
+            return fields.toCOSNameStringList();
         }
-        return retval;
+        return Collections.emptyList();
     }
 
     /**