aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
diff options
context:
space:
mode:
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java')
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java424
1 files changed, 210 insertions, 214 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
index e4d93a7..55cc5c6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
@@ -21,21 +21,21 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
+import java.util.List;
+
+import org.apache.axis.AxisFault;
+import org.w3c.dom.Element;
+
import at.gv.egiz.asic.api.ASiC;
import at.gv.egiz.asic.api.ASiCFactory;
-import at.gv.egiz.asic.api.ASiCFormat;
import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egiz.asic.impl.ASiCMOAVerifier;
import at.gv.egiz.asic.xmlbind.VerifyASICSignatureRequestParser;
import at.gv.egiz.asic.xmlbind.VerifyASICSignatureResponseBuilder;
import at.gv.egiz.asic.xmlbind.VerifyASiCRequest;
import at.gv.egovernment.moa.spss.MOAApplicationException;
-import org.apache.axis.AxisFault;
-import org.w3c.dom.Element;
-
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
@@ -54,192 +54,189 @@ import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.StreamUtils;
-import java.io.FileInputStream;
-import java.util.List;
-
/**
* The service endpoint for the <code>SignatureVerification</code> web service.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SignatureVerificationService {
- /**
- * Handle a <code>VerifyPDFSignatureRequest</code>.
- *
- * @param request The <code>VerifyPDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyPDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] VerifyPDFSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
- try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyCMSSignatureRequestParser requestParser =
- new VerifyCMSSignatureRequestParser();
- VerifyPDFSignatureResponseBuilder responseBuilder =
- new VerifyPDFSignatureResponseBuilder();
- Element reparsedReq;
- VerifyCMSSignatureRequest requestObj;
- VerifyCMSSignatureResponse responseObj;
- // create a parser and builder for binding API objects to/from XML
- /*VerifyPDFRequestParser requestParser =
- new VerifyPDFRequestParser();
- VerifyPDFResponseBuilder responseBuilder =
- new VerifyPDFResponseBuilder();
- Element reparsedReq;
- VerifyPDFRequest requestObj;
- VerifyPDFResponse responseObj;*/
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- requestObj = requestParser.parsePDF(reparsedReq);
-
- // invoke the core logic
- responseObj = invoker.verifyCMSSignature(requestObj);
-
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
-
- // save response in transaction
- context.setResponse(response[0]);
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
- }
-
-
- /**
- * Handle a <code>VerifyPDFSignatureRequest</code>.
- *
- * @param request The <code>VerifyPDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyPDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] VerifyASICSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
- try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyASICSignatureRequestParser requestParser =
- new VerifyASICSignatureRequestParser();
- VerifyASICSignatureResponseBuilder responseBuilder =
- new VerifyASICSignatureResponseBuilder();
- Element reparsedReq;
- VerifyASiCRequest requestObj;
- VerifyCMSSignatureResponse responseObj;
- // create a parser and builder for binding API objects to/from XML
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- requestObj = requestParser.parseASIC(reparsedReq);
-
- if(requestObj.getFormat() == null) {
- throw new MOAApplicationException("asic.0006", null);
- }
-
- ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(),
- requestObj.getFormat());
-
- Logger.debug("Got ASiC " + aSiC);
-
- // invoke the core logic
- ASiCMOAVerifier v = new ASiCMOAVerifier();
- List<ASiCVerificationResult> results = v.verify(aSiC,
- requestObj.getTrustProfile(), requestObj.getDate());
-
- // map back to XML
- response[0] = responseBuilder.build(results).getDocumentElement();
-
- // save response in transaction
- context.setResponse(response[0]);
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
+ /**
+ * Handle a <code>VerifyPDFSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyPDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] VerifyPDFSignatureRequest(Element[] request)
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyCMSSignatureRequestParser requestParser =
+ new VerifyCMSSignatureRequestParser();
+ final VerifyPDFSignatureResponseBuilder responseBuilder =
+ new VerifyPDFSignatureResponseBuilder();
+ Element reparsedReq;
+ VerifyCMSSignatureRequest requestObj;
+ VerifyCMSSignatureResponse responseObj;
+ // create a parser and builder for binding API objects to/from XML
+ /*
+ * VerifyPDFRequestParser requestParser = new VerifyPDFRequestParser();
+ * VerifyPDFResponseBuilder responseBuilder = new VerifyPDFResponseBuilder();
+ * Element reparsedReq; VerifyPDFRequest requestObj; VerifyPDFResponse
+ * responseObj;
+ */
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ requestObj = requestParser.parsePDF(reparsedReq);
+
+ // invoke the core logic
+ responseObj = invoker.verifyCMSSignature(requestObj);
+
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+
+ // save response in transaction
+ context.setResponse(response[0]);
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
}
-
+
+ return response;
+ }
+
+ /**
+ * Handle a <code>VerifyPDFSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyPDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] VerifyASICSignatureRequest(Element[] request)
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyASICSignatureRequestParser requestParser =
+ new VerifyASICSignatureRequestParser();
+ final VerifyASICSignatureResponseBuilder responseBuilder =
+ new VerifyASICSignatureResponseBuilder();
+ Element reparsedReq;
+ VerifyASiCRequest requestObj;
+ final VerifyCMSSignatureResponse responseObj;
+ // create a parser and builder for binding API objects to/from XML
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ requestObj = requestParser.parseASIC(reparsedReq);
+
+ if (requestObj.getFormat() == null) {
+ throw new MOAApplicationException("asic.0006", null);
+ }
+
+ final ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(),
+ requestObj.getFormat());
+
+ Logger.debug("Got ASiC " + aSiC);
+
+ // invoke the core logic
+ final ASiCMOAVerifier v = new ASiCMOAVerifier();
+ final List<ASiCVerificationResult> results = v.verify(aSiC,
+ requestObj.getTrustProfile(), requestObj.getDate());
+
+ // map back to XML
+ response[0] = responseBuilder.build(results).getDocumentElement();
+
+ // save response in transaction
+ context.setResponse(response[0]);
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ return response;
+ }
+
/**
* Handle a <code>VerifyCMSSignatureRequest</code>.
- *
+ *
* @param request The <code>VerifyCMSSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyCMSSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyCMSSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] VerifyCMSSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
try {
-
+
// create a parser and builder for binding API objects to/from XML
- VerifyCMSSignatureRequestParser requestParser =
- new VerifyCMSSignatureRequestParser();
- VerifyCMSSignatureResponseBuilder responseBuilder =
- new VerifyCMSSignatureResponseBuilder();
+ final VerifyCMSSignatureRequestParser requestParser =
+ new VerifyCMSSignatureRequestParser();
+ final VerifyCMSSignatureResponseBuilder responseBuilder =
+ new VerifyCMSSignatureResponseBuilder();
Element reparsedReq;
VerifyCMSSignatureRequest requestObj;
VerifyCMSSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
// validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
// convert to API objects
requestObj = requestParser.parse(reparsedReq);
@@ -251,20 +248,19 @@ public class SignatureVerificationService {
// save response in transaction
context.setResponse(response[0]);
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
@@ -273,60 +269,60 @@ public class SignatureVerificationService {
/**
* Handle a <code>VerifyXMLSignatureRequest</code>.
- *
+ *
* @param request The <code>VerifyXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] VerifyXMLSignatureRequest(Element[] request)
- throws AxisFault {
- XMLSignatureVerificationInvoker invoker =
- XMLSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
+ throws AxisFault {
+ final XMLSignatureVerificationInvoker invoker =
+ XMLSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyXMLSignatureRequestParser requestParser =
- new VerifyXMLSignatureRequestParser();
- VerifyXMLSignatureResponseBuilder responseBuilder =
- new VerifyXMLSignatureResponseBuilder();
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyXMLSignatureRequestParser requestParser =
+ new VerifyXMLSignatureRequestParser();
+ final VerifyXMLSignatureResponseBuilder responseBuilder =
+ new VerifyXMLSignatureResponseBuilder();
Element reparsedReq;
VerifyXMLSignatureRequest requestObj;
VerifyXMLSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
// validate the request
reparsedReq = ServiceUtils.reparseRequest(context.getRequest());
-
+
// convert to API objects
requestObj = requestParser.parse(reparsedReq);
-
+
// invoke the core logic
responseObj = invoker.verifyXMLSignature(requestObj);
// map back to XML
response[0] = responseBuilder.build(responseObj).getDocumentElement();
-
+
// save response in transaction
context.setResponse(response[0]);
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}