diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-11-27 14:02:29 +0100 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-11-27 14:02:29 +0100 |
commit | f26449517c01e456f677d3e47edf9cafad6e70e0 (patch) | |
tree | 501b920ada68e641fd128e113663bf248752ac21 /moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java | |
parent | 6c09d652d6317d1514924518c3186470498247a9 (diff) | |
download | moa-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.java | 141 |
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); + + } + +} |