diff options
| author | tknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2009-12-02 18:11:11 +0000 | 
|---|---|---|
| committer | tknall <tknall@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2009-12-02 18:11:11 +0000 | 
| commit | edd5756535f4a3cf9897837510dc12168715bdd5 (patch) | |
| tree | f63ba583d76e351370385f688c936c1372616761 /src/main/java/at/gv | |
| parent | 840d6a4b71e5c8c0273be231a85306be26356933 (diff) | |
| download | pdf-as-3-edd5756535f4a3cf9897837510dc12168715bdd5.tar.gz pdf-as-3-edd5756535f4a3cf9897837510dc12168715bdd5.tar.bz2 pdf-as-3-edd5756535f4a3cf9897837510dc12168715bdd5.zip | |
Non-textual objects may be extracted during the analysis phase of the signature verification process
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@485 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
Diffstat (limited to 'src/main/java/at/gv')
7 files changed, 102 insertions, 15 deletions
| diff --git a/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeParameters.java b/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeParameters.java index 0ab854c..b0ad28b 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeParameters.java +++ b/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeParameters.java @@ -33,6 +33,8 @@ public class AnalyzeParameters     */
    protected String verifyMode = Constants.VERIFY_MODE_FULL_CONSERVATIVE;
 +  protected boolean returnNonTextualObjects = false;
 +  
    /**
     * @return the document
     */
 @@ -65,5 +67,19 @@ public class AnalyzeParameters      this.verifyMode = verifyMode;
    }
 +  public boolean isReturnNonTextualObjects() {
 +     return this.returnNonTextualObjects;
 +  }
 +  
 +  /**
 +   * Tells if non text object of the signed pdf should be extracted and returned.
 +   * One should show this to the user, especially in case of textual signature.
 +   * Defaults to <tt>false</tt>
 +   * 
 +   * @param returnNonTextualObjects
 +   */
 +  public void setReturnNonTextualObjects(boolean returnNonTextualObjects) {
 +     this.returnNonTextualObjects = returnNonTextualObjects;
 +  }
  }
 diff --git a/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeResult.java b/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeResult.java index d063b76..c9dde9e 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeResult.java +++ b/src/main/java/at/gv/egiz/pdfas/api/analyze/AnalyzeResult.java @@ -29,4 +29,18 @@ public interface AnalyzeResult    public List getSignatures() throws PdfAsException;
    public List getNoSignatures();
 +
 +  /**
 +   * Returns non textual data from pdf provided that {@link AnalyzeParameters#setReturnNonTextualObjects(boolean)}
 +   * has been set {@code true}. 
 +   * @return List of {@link NonTextObjectInfo}
 +   */
 +  public List getNonTextualObjects();
 +
 +  /**
 +   * Returns <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +   * @return <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +   */
 +  public boolean hasNonTextualObjects();
 +  
  }
 diff --git a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyParameters.java b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyParameters.java index 4f60bea..793764b 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyParameters.java +++ b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyParameters.java @@ -78,7 +78,7 @@ public class VerifyParameters     */
    protected boolean returnHashInputData = false;
 -  protected boolean returnNonTextObjects = false;
 +  protected boolean returnNonTextualObjects = false;
    /**
     * @return the document
 @@ -182,8 +182,8 @@ public class VerifyParameters      this.returnHashInputData = returnHashInputData;
    }
 -   public boolean isReturnNonTextObjects() {
 -      return this.returnNonTextObjects;
 +   public boolean isReturnNonTextualObjects() {
 +      return this.returnNonTextualObjects;
     }
     /**
 @@ -191,10 +191,10 @@ public class VerifyParameters      * One should show this to the user, especially in case of textual signature.
      * Defaults to <tt>false</tt>
      * 
 -    * @param returnNonTextObjects
 +    * @param returnNonTextualObjects
      */
 -   public void setReturnNonTextObjects(boolean returnNonTextObjects) {
 -      this.returnNonTextObjects = returnNonTextObjects;
 +   public void setReturnNonTextualObjects(boolean returnNonTextualObjects) {
 +      this.returnNonTextualObjects = returnNonTextualObjects;
     }
 diff --git a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResults.java b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResults.java index b30c451..ef06880 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResults.java +++ b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResults.java @@ -28,11 +28,17 @@ public interface VerifyResults    public List getResults();
    /**
 -   * Returns a list<{@link NonTextObjectInfo} of non textual objects in the pdf document.
 +   * Returns a list<{@link NonTextObjectInfo}> of non textual objects in the pdf document.
     * Only available for textual signatures. Show this to the user who signed the textual content only! 
     * @return  List<{@link NonTextObjectInfo} or <tt>null</tt> of not available (binary signature)
     */
    public List getNonTextualObjects();
 -  public void setNonTextualObjects(List nonTextObjects);
 +
 +  /**
 +   * Returns <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +   * @return <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +   */
 +  public boolean hasNonTextualObjects();
 +  
  }
 diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java b/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java index df72a65..f98b0f0 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/PdfAsObject.java @@ -53,8 +53,10 @@ import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;  import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
  import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
  import at.knowcenter.wag.egov.egiz.pdf.NoSignatureHolder;
 +import at.knowcenter.wag.egov.egiz.pdf.ObjectExtractor;
  import at.knowcenter.wag.egov.egiz.pdf.SignatureHolder;
  import at.knowcenter.wag.egov.egiz.pdf.TablePos;
 +import at.knowcenter.wag.egov.egiz.pdf.TextualSignature;
  import at.knowcenter.wag.egov.egiz.sig.SignatureResponse;
  import at.knowcenter.wag.egov.egiz.sig.SignatureTypeDefinition;
  import at.knowcenter.wag.egov.egiz.sig.SignatureTypes;
 @@ -280,10 +282,6 @@ public class PdfAsObject implements PdfAs      fillVerifyAfterAnalysisParametersWithVerifyParameters(vaap, verifyParameters);
      VerifyResults res = verify(vaap);
 -    if (verifyParameters.isReturnNonTextObjects()) {
 -       res.setNonTextualObjects(PdfAS.extractNonTextualObjects(new PdfDataSourceAdapter(verifyParameters.getDocument())));    
 -    }
 -    
      return res;
    }
 @@ -302,6 +300,7 @@ public class PdfAsObject implements PdfAs    {
      ap.setDocument(vp.getDocument());
      ap.setVerifyMode(vp.getVerifyMode());
 +    ap.setReturnNonTextualObjects(vp.isReturnNonTextualObjects());
    }
    /**
 @@ -381,8 +380,12 @@ public class PdfAsObject implements PdfAs          sigInfs.add(si);
        }
      }
 +    List nonTextInfos = null;
 +    if (analyzeParameters.isReturnNonTextualObjects()) {
 +       nonTextInfos = ObjectExtractor.extractNonTextInfo(new PdfDataSourceAdapter(analyzeParameters.getDocument()));
 +    }
 -    return new AnalyzeResultImpl(sigInfs, noSigs);
 +    return new AnalyzeResultImpl(sigInfs, noSigs, nonTextInfos);
    }
    /**
 @@ -423,8 +426,10 @@ public class PdfAsObject implements PdfAs        VerifyResult vr = new VerifyResultAdapter(response, holder, verifyAfterAnalysisParameters.getVerificationTime());
        vrs.add(vr);
      }
 -
 -    return new VerifyResultsImpl(vrs);
 +    
 +    VerifyResultsImpl verifyResults = new VerifyResultsImpl(vrs); 
 +    verifyResults.setNonTextualObjects(verifyAfterAnalysisParameters.getAnalyzeResult().getNonTextualObjects());
 +    return verifyResults;
    }
  }
 diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/analyze/AnalyzeResultImpl.java b/src/main/java/at/gv/egiz/pdfas/impl/api/analyze/AnalyzeResultImpl.java index 7b1dffa..a50b7a1 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/analyze/AnalyzeResultImpl.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/analyze/AnalyzeResultImpl.java @@ -5,7 +5,9 @@ package at.gv.egiz.pdfas.impl.api.analyze;  import java.util.List;
 +import at.gv.egiz.pdfas.api.analyze.AnalyzeParameters;
  import at.gv.egiz.pdfas.api.analyze.AnalyzeResult;
 +import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
  import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
  /**
 @@ -25,6 +27,8 @@ public class AnalyzeResultImpl implements AnalyzeResult     */
    protected List noSignatures = null;
 +  protected List nonTextualObjects = null;
 +  
    /**
     * Constructor.
 @@ -36,6 +40,20 @@ public class AnalyzeResultImpl implements AnalyzeResult     */
    public AnalyzeResultImpl(List signatures, List noSignatures)
    {
 +     this(signatures, noSignatures, null);
 +  }
 +
 +  /**
 +   * Constructor.
 +   * 
 +   * @param signatures
 +   *          The found signatures.
 +   * @param noSignatures
 +   *          The found non-signature update blocks.
 +   * @param nonTextInfos Non textual data from pdf provided that {@link AnalyzeParameters#setReturnNonTextualObjects(boolean)} was set.              
 +   */
 +  public AnalyzeResultImpl(List signatures, List noSignatures, List nonTextInfos)
 +  {
      if (signatures == null)
      {
        throw new IllegalArgumentException("The list of found signatures must not be null.");
 @@ -43,6 +61,7 @@ public class AnalyzeResultImpl implements AnalyzeResult      this.signatures = signatures;
      this.noSignatures = noSignatures;
 +    this.nonTextualObjects = nonTextInfos;
    }
 @@ -74,5 +93,23 @@ public class AnalyzeResultImpl implements AnalyzeResult      return this.noSignatures;
    }
 +
 +
 +  /**
 +   * Returns non textual data from pdf provided that {@link AnalyzeParameters#setReturnNonTextualObjects(boolean)}
 +   * has been set {@code true}. 
 +   * @return List of {@link NonTextObjectInfo}
 +   */
 +  public List getNonTextualObjects() {
 +     return this.nonTextualObjects;
 +  }
 +
 +  /**
 +   * Returns <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +   * @return <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +   */
 +  public boolean hasNonTextualObjects() {
 +   return this.nonTextualObjects != null && !this.nonTextualObjects.isEmpty();
 +  }
  }
 diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultsImpl.java b/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultsImpl.java index c5e6713..22d446a 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultsImpl.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultsImpl.java @@ -46,4 +46,13 @@ public class VerifyResultsImpl implements VerifyResults        this.nonTextualObjects = nonTextObjects;
     }
 +
 +   /**
 +    * Returns <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +    * @return <code>true</code> if non textual objects have been found, <code>false</code> if not.
 +    */
 +   public boolean hasNonTextualObjects() {
 +      return this.nonTextualObjects != null && !this.nonTextualObjects.isEmpty();
 +   }
 +
  }
 | 
