/**
 * 
 */
package at.gv.egiz.pdfas.api.verify;

import java.util.Date;

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

/**
 * Parameter object that holds the verify after analysis parameters.
 * 
 * @author wprinz
 */
public class VerifyAfterAnalysisParameters
{

  /**
   * 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;
  }

}