package at.gv.egiz.pdfas.api.xmldsig;

import java.util.Date;

import at.gv.egiz.pdfas.api.analyze.AnalyzeResult;
import at.gv.egiz.pdfas.api.commons.Constants;

/**
 * Parameters for the reconstructXMLDsig method which is to be called after a analyze call.
 * 
 * @author exthex
 *
 */
public class ReconstructXMLDsigAfterAnalysisParameters {
   

   /**
    * The list of signatures to be verified.
    */
   protected AnalyzeResult analyzeResult = null;

   /**
    * The signature device to perform the actual signature.
    * 
    * <p>
    * May be {@link Constants#SIGNATURE_DEVICE_MOA} or
    * {@link Constants#SIGNATURE_DEVICE_BKU}.
    * </p>
    */
   protected String signatureDevice = Constants.SIGNATURE_DEVICE_MOA;

   /**
    * Allows to pass a VerificationTime to the signature device.
    */
   protected Date verificationTime = null;

   /**
    * Tells the signature device (e.g. MOA) to return the signature hash input
    * data (which is the probably transformed signed data).
    * 
    * <p>
    * Note that this forces MOA to return the potentially large signature data to
    * be returned in the result XML, which may result in very bad performance.
    * </p>
    */
   protected boolean returnHashInputData = false;

   /**
    * @return the analyzeResult
    */
   public AnalyzeResult getAnalyzeResult()
   {
     return this.analyzeResult;
   }

   /**
    * @param analyzeResult
    *          the analyzeResult to set
    */
   public void setAnalyzeResult(AnalyzeResult analyzeResult)
   {
     this.analyzeResult = analyzeResult;
   }

   /**
    * @return the signatureDevice
    */
   public String getSignatureDevice()
   {
     return this.signatureDevice;
   }

   /**
    * @param signatureDevice
    *          the signatureDevice to set
    */
   public void setSignatureDevice(String signatureDevice)
   {
     this.signatureDevice = signatureDevice;
   }

   /**
    * @return the verificationTime
    */
   public Date getVerificationTime()
   {
     return this.verificationTime;
   }

   /**
    * @param verificationTime the verificationTime to set
    */
   public void setVerificationTime(Date verificationTime)
   {
     this.verificationTime = verificationTime;
   }

   /**
    * @return the returnHashInputData
    */
   public boolean isReturnHashInputData()
   {
     return this.returnHashInputData;
   }

   /**
    * @param returnHashInputData
    *          the returnHashInputData to set
    */
   public void setReturnHashInputData(boolean returnHashInputData)
   {
     this.returnHashInputData = returnHashInputData;
   }

}