diff options
Diffstat (limited to 'src/main')
6 files changed, 28 insertions, 68 deletions
diff --git a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java index bd62d4a..73b3968 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java +++ b/src/main/java/at/gv/egiz/pdfas/api/verify/VerifyResult.java @@ -3,9 +3,11 @@ package at.gv.egiz.pdfas.api.verify; import java.util.Date;
import java.util.List;
+import at.gv.egiz.pdfas.api.PdfAs;
import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
import at.gv.egiz.pdfas.api.commons.SignatureInformation;
import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
+import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData;
/**
* Encapsulates the data of a verification of one signature.
@@ -142,5 +144,13 @@ public interface VerifyResult extends SignatureInformation */
public boolean hasNonTextualObjects();
+ /**
+ * Get the reconstructed xmldsig XML data. The reconstruction is done during the verification process.
+ *
+ * @see PdfAs#reconstructXMLDSIG(at.gv.egiz.pdfas.api.xmldsig.ReconstructXMLDsigParameters)
+ * @see PdfAs#reconstructXMLDSIG(at.gv.egiz.pdfas.api.xmldsig.ReconstructXMLDsigAfterAnalysisParameters)
+ * @return
+ */
+ public XMLDsigData getReconstructedXMLDsig();
}
diff --git a/src/main/java/at/gv/egiz/pdfas/api/xmldsig/ReconstructXMLDsigAfterAnalysisParameters.java b/src/main/java/at/gv/egiz/pdfas/api/xmldsig/ReconstructXMLDsigAfterAnalysisParameters.java index 1f0ecc5..1975a27 100644 --- a/src/main/java/at/gv/egiz/pdfas/api/xmldsig/ReconstructXMLDsigAfterAnalysisParameters.java +++ b/src/main/java/at/gv/egiz/pdfas/api/xmldsig/ReconstructXMLDsigAfterAnalysisParameters.java @@ -1,7 +1,5 @@ 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;
@@ -30,22 +28,6 @@ public class ReconstructXMLDsigAfterAnalysisParameters { 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()
@@ -78,38 +60,4 @@ public class ReconstructXMLDsigAfterAnalysisParameters { {
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;
- }
-
}
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 dc6e106..1cb158e 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 @@ -370,9 +370,7 @@ public class PdfAsObject implements PdfAs ReconstructXMLDsigAfterAnalysisParameters reconstructParams,
VerifyAfterAnalysisParameters verifyAfterAnalysisParameters) {
reconstructParams.setAnalyzeResult(verifyAfterAnalysisParameters.getAnalyzeResult());
- reconstructParams.setReturnHashInputData(verifyAfterAnalysisParameters.isReturnHashInputData());
reconstructParams.setSignatureDevice(verifyAfterAnalysisParameters.getSignatureDevice());
- reconstructParams.setVerificationTime(verifyAfterAnalysisParameters.getVerificationTime());
}
/**
@@ -515,20 +513,12 @@ public class PdfAsObject implements PdfAs AnalyzeResult ar = analyze(analyzeParameters);
ReconstructXMLDsigAfterAnalysisParameters rxaap = new ReconstructXMLDsigAfterAnalysisParameters();
- fillReconstructXMLDsigAfterAnalysisParametersWithReconstructXMLDsigParameters(rxaap, reconstructXMLDsigParameters);
+ rxaap.setSignatureDevice(reconstructXMLDsigParameters.getSignatureDevice());
rxaap.setAnalyzeResult(ar);
return reconstructXMLDSIG(rxaap);
}
- protected void fillReconstructXMLDsigAfterAnalysisParametersWithReconstructXMLDsigParameters(
- ReconstructXMLDsigAfterAnalysisParameters rxaap,
- ReconstructXMLDsigParameters reconstructXMLDsigParameters) {
- rxaap.setReturnHashInputData(reconstructXMLDsigParameters.isReturnHashInputData());
- rxaap.setSignatureDevice(reconstructXMLDsigParameters.getSignatureDevice());
- rxaap.setVerificationTime(reconstructXMLDsigParameters.getVerificationTime());
- }
-
/**
* @see PdfAs#reconstructXMLDSIG(ReconstructXMLDsigAfterAnalysisParameters)
*/
@@ -579,7 +569,7 @@ public class PdfAsObject implements PdfAs ExtendedSignatureInformation extSigInfo = (ExtendedSignatureInformation)extSignatures.get(i);
SignatureHolder holder = (SignatureHolder) extSigInfo.getSignatureInformation().getInternalSignatureInformation();
- VerifyResult vr = new VerifyResultAdapter(response, holder, verifyAfterReconstructXMLDsigParameters.getVerificationTime());
+ VerifyResult vr = new VerifyResultAdapter(response, holder, verifyAfterReconstructXMLDsigParameters.getVerificationTime(), extSigInfo.getXmlDsigData());
vr.setNonTextualObjects( extSigInfo.getSignatureInformation().getNonTextualObjects());
vrs.add(vr);
@@ -589,7 +579,7 @@ public class PdfAsObject implements PdfAs ExtendedSignatureInformation extSigInfo = (ExtendedSignatureInformation)extSignatures.get(verifySignatureIndex);
SignatureHolder holder = (SignatureHolder) extSigInfo.getSignatureInformation().getInternalSignatureInformation();
- VerifyResult vr = new VerifyResultAdapter(response, holder, verifyAfterReconstructXMLDsigParameters.getVerificationTime());
+ VerifyResult vr = new VerifyResultAdapter(response, holder, verifyAfterReconstructXMLDsigParameters.getVerificationTime(), extSigInfo.getXmlDsigData());
vr.setNonTextualObjects( extSigInfo.getSignatureInformation().getNonTextualObjects());
vrs.add(vr);
diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/internal/PdfAsInternalObject.java b/src/main/java/at/gv/egiz/pdfas/impl/api/internal/PdfAsInternalObject.java index 4e36c24..747f6b0 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/internal/PdfAsInternalObject.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/internal/PdfAsInternalObject.java @@ -272,7 +272,7 @@ public class PdfAsInternalObject implements PdfAsInternal { Properties props = new Properties();
props.setProperty(BKUPostConnection.RESPONSE_STRING_KEY, xmlResponse);
SignatureResponse sigResponse = local_conn.analyzeVerifyResponse(props);
- return new VerifyResultAdapter(sigResponse, holder, null);
+ return new VerifyResultAdapter(sigResponse, holder, null, null); // timestamp and xmldsig not needed here
}
/**
diff --git a/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultAdapter.java b/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultAdapter.java index b640bc7..265c916 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultAdapter.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/api/verify/VerifyResultAdapter.java @@ -14,6 +14,7 @@ import org.apache.commons.logging.LogFactory; import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
import at.gv.egiz.pdfas.api.verify.SignatureCheck;
import at.gv.egiz.pdfas.api.verify.VerifyResult;
+import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData;
import at.gv.egiz.pdfas.impl.api.commons.SignatureInformationAdapter;
import at.knowcenter.wag.egov.egiz.exceptions.SettingNotFoundException;
import at.knowcenter.wag.egov.egiz.pdf.BinarySignatureHolder;
@@ -38,6 +39,8 @@ public class VerifyResultAdapter extends SignatureInformationAdapter implements protected Date vTime = null;
private String timestamp;
+
+ private XMLDsigData xmlDsigData;
/**
@@ -49,12 +52,14 @@ public class VerifyResultAdapter extends SignatureInformationAdapter implements * The SignatureHolder.
* @param verificationTime
* The time of verification. This is directly returned by {@link #getVerificationTime()}
+ * @param xmlDsigData
*/
- public VerifyResultAdapter(SignatureResponse sigRes, SignatureHolder sh, Date verificationTime)
+ public VerifyResultAdapter(SignatureResponse sigRes, SignatureHolder sh, Date verificationTime, XMLDsigData xmlDsigData)
{
super(sh);
this.sigRes = sigRes;
this.vTime = verificationTime;
+ this.xmlDsigData = xmlDsigData;
if (sh instanceof BinarySignatureHolder) {
this.timestamp = ((BinarySignatureHolder)sh).getSignatureObject().getTimeStamp();
}
@@ -169,5 +174,12 @@ public class VerifyResultAdapter extends SignatureInformationAdapter implements public boolean isVerificationDone() {
return this.sigRes.getVerificationImpossibleEx() == null;
}
+
+ /**
+ * @see VerifyResult#getReconstructedXMLDsig()
+ */
+ public XMLDsigData getReconstructedXMLDsig() {
+ return this.xmlDsigData;
+ }
}
diff --git a/src/main/java/demo/SignatureVerificationDemo.java b/src/main/java/demo/SignatureVerificationDemo.java index b1c11c7..6abb37e 100644 --- a/src/main/java/demo/SignatureVerificationDemo.java +++ b/src/main/java/demo/SignatureVerificationDemo.java @@ -3,7 +3,6 @@ package demo; import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -114,6 +113,7 @@ public class SignatureVerificationDemo { // retrieve reconstructed signature
ReconstructXMLDsigAfterAnalysisParameters recstrParams = new ReconstructXMLDsigAfterAnalysisParameters();
+ recstrParams.setSignatureDevice(Constants.SIGNATURE_DEVICE_BKU);
recstrParams.setAnalyzeResult(analyzeResult);
ReconstructXMLDsigResult recstrResult = pdfasAPI.reconstructXMLDSIG(recstrParams);
|