aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2015-11-27 14:02:29 +0100
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2015-11-27 14:02:29 +0100
commitf26449517c01e456f677d3e47edf9cafad6e70e0 (patch)
tree501b920ada68e641fd128e113663bf248752ac21 /moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java
parent6c09d652d6317d1514924518c3186470498247a9 (diff)
downloadmoa-sig-f26449517c01e456f677d3e47edf9cafad6e70e0.tar.gz
moa-sig-f26449517c01e456f677d3e47edf9cafad6e70e0.tar.bz2
moa-sig-f26449517c01e456f677d3e47edf9cafad6e70e0.zip
CXF Webservice adapter
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java')
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java141
1 files changed, 141 insertions, 0 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java
new file mode 100644
index 0000000..9512761
--- /dev/null
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java
@@ -0,0 +1,141 @@
+package at.gv.egovernment.moa.spss.server.webservice.binding;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import at.gv.egovernment.moa.spss.MOAApplicationException;
+import at.gv.egovernment.moa.spss.api.SPSSFactory;
+import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
+import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
+import at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo;
+import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
+import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
+import at.gv.egovernment.moa.util.Base64Utils;
+
+public class CMSParserUtils {
+
+ private TransformerUtils transformerUtils = new TransformerUtils();
+
+ /** The factory to create API objects. */
+ private SPSSFactory factory;
+
+ public CMSParserUtils() {
+ this.factory = SPSSFactory.getInstance();
+ }
+
+ /**
+ * Add a <code>CMSSignature</code> element to the response.
+ *
+ * @param cmsSignatureResponse
+ * The content to put under the <code>CMSSignature</code>
+ * element.
+ * @throws IOException
+ */
+ public byte[] addCMSSignature(CMSSignatureResponse cmsSignatureResponse) throws MOAApplicationException {
+ String base64Value = cmsSignatureResponse.getCMSSignature();
+
+ try {
+ return Base64Utils.decode(base64Value, true);
+ } catch (IOException e) {
+ throw new MOAApplicationException("Base64 decoding failed", null);
+ }
+ }
+
+ /**
+ * Add a <code>ErrorResponse</code> element to the response.
+ *
+ * @param errorResponse
+ * The API object containing the information to put into the
+ * <code>ErrorResponse</code> DOM element.
+ */
+ public at.gv.egiz.moasig.ErrorResponseType addErrorResponse(ErrorResponse errorResponse) {
+ at.gv.egiz.moasig.ErrorResponseType errorResponseType = new at.gv.egiz.moasig.ErrorResponseType();
+
+ errorResponseType.setErrorCode(BigInteger.valueOf(errorResponse.getErrorCode()));
+ errorResponseType.setInfo(errorResponse.getInfo());
+
+ return errorResponseType;
+ }
+
+ /**
+ * Parse all <code>SingleSignatureInfo</code> elements of the
+ * <code>CreateCMSSignatureRequest</code>.
+ *
+ * @param requestElem
+ * The <code>CreateCMSSignatureRequest</code> to parse.
+ * @return A <code>List</code> of <code>SingleSignatureInfo</code> API
+ * objects.
+ * @throws MOAApplicationException
+ * An error occurred parsing on of the
+ * <code>SingleSignatureInfo</code> elements.
+ */
+ public List parseSingleSignatureInfos(
+ List<at.gv.egiz.moasig.CreateCMSSignatureRequestType.SingleSignatureInfo> singleInfos)
+ throws MOAApplicationException {
+
+ List singleSignatureInfos = new ArrayList();
+
+ Iterator<at.gv.egiz.moasig.CreateCMSSignatureRequestType.SingleSignatureInfo> singleInfoIterator = singleInfos
+ .iterator();
+
+ while (singleInfoIterator.hasNext()) {
+ at.gv.egiz.moasig.CreateCMSSignatureRequestType.SingleSignatureInfo singleSignatureInfo = singleInfoIterator
+ .next();
+
+ singleSignatureInfos.add(parseSingleSignatureInfo(singleSignatureInfo));
+ }
+
+ return singleSignatureInfos;
+ }
+
+ /**
+ * Parse a <code>SingleSignatureInfo</code> DOM element.
+ *
+ * @param sigInfoElem
+ * The <code>SingleSignatureInfo</code> DOM element to parse.
+ * @return A <code>SingleSignatureInfo</code> API object containing the
+ * information of <code>sigInfoElem</code>.
+ * @throws MOAApplicationException
+ * An error occurred parsing the
+ * <code>SingleSignatureInfo</code>.
+ */
+ public SingleSignatureInfo parseSingleSignatureInfo(
+ at.gv.egiz.moasig.CreateCMSSignatureRequestType.SingleSignatureInfo singleSignatureInfo)
+ throws MOAApplicationException {
+
+ DataObjectInfo dataObjectInfo = parseDataObjectInfo(singleSignatureInfo.getDataObjectInfo());
+ boolean securityLayerConform = singleSignatureInfo.isSecurityLayerConformity();
+
+ return factory.createSingleSignatureInfoCMS(dataObjectInfo, securityLayerConform);
+ }
+
+ /**
+ * Parse the <code>DataObjectInfo</code> DOM elements contained in the given
+ * <code>SingleSignatureInfo</code> DOM element.
+ *
+ * @param sigInfoElem
+ * The <code>SingleSignatureInfo</code> DOM element whose
+ * <code>DataObjectInfo</code>s to parse.
+ * @return A <code>List</code> of <code>DataObjectInfo</code> API objects
+ * containing the data from the <code>DataObjectInfo</code> DOM
+ * elements.
+ * @throws MOAApplicationException
+ * An error occurred parsing one of the
+ * <code>DataObjectInfo</code>s.
+ */
+ public DataObjectInfo parseDataObjectInfo(
+ at.gv.egiz.moasig.CreateCMSSignatureRequestType.SingleSignatureInfo.DataObjectInfo dataObjectInfo)
+ throws MOAApplicationException {
+
+ String structure = dataObjectInfo.getStructure();
+
+ CMSDataObject dataObject = this.transformerUtils.parseDataObject(dataObjectInfo.getDataObject());
+
+ return factory.createDataObjectInfo(structure, dataObject);
+
+ }
+
+}