aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig/src/main/java/at
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2016-06-20 12:45:07 +0200
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2016-06-20 12:45:07 +0200
commit53ae98cdfa510650c1e015efd0d11a96ad4dc87a (patch)
tree8e7ab77a9208b541416d14bbdb15e7211ff40c5b /moaSig/moa-sig/src/main/java/at
parentacf1b849ab835bc6797adfb91f8ab4fa88f0aff5 (diff)
downloadmoa-sig-53ae98cdfa510650c1e015efd0d11a96ad4dc87a.tar.gz
moa-sig-53ae98cdfa510650c1e015efd0d11a96ad4dc87a.tar.bz2
moa-sig-53ae98cdfa510650c1e015efd0d11a96ad4dc87a.zip
ASiC Library added
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at')
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java86
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSCreateSignatureBindingImpl.java72
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java141
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSVerifySignatureBindingImpl.java244
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java85
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformParser.java363
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java521
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java101
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLVerifySignatureBindingImpl.java524
9 files changed, 86 insertions, 2051 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 8278399..e4d93a7 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
@@ -24,6 +24,15 @@
package at.gv.egovernment.moa.spss.server.service;
+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;
@@ -45,6 +54,9 @@ 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.
*
@@ -122,6 +134,80 @@ public class SignatureVerificationService {
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>VerifyCMSSignatureRequest</code>.
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSCreateSignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSCreateSignatureBindingImpl.java
deleted file mode 100644
index 31302d3..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSCreateSignatureBindingImpl.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package at.gv.egovernment.moa.spss.server.webservice.binding;
-
-import java.util.Iterator;
-import java.util.List;
-
-import at.gv.egiz.moasig.CreateCMSSignatureResponseType;
-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.CreateCMSSignatureRequest;
-import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
-import at.gv.egovernment.moa.spss.server.webservice.CMSCreateSignatureBinding;
-
-public class CMSCreateSignatureBindingImpl implements CMSCreateSignatureBinding {
-
- private TransformerUtils transformerUtils = new TransformerUtils();
-
- /** The factory to create API objects. */
- private SPSSFactory factory;
-
- private CMSParserUtils cmsParserUtils;
-
- public CMSCreateSignatureBindingImpl() {
- this.factory = SPSSFactory.getInstance();
- this.cmsParserUtils = new CMSParserUtils();
- }
-
- @Override
- public CreateCMSSignatureRequest buildCMSRequest(
- at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException {
-
- String keyIdentifier = createCMSSignatureRequest.getKeyIdentifier();
- List singleSignatureInfos = this.cmsParserUtils.parseSingleSignatureInfos(
- createCMSSignatureRequest.getSingleSignatureInfo());
-
- return this.factory.createCreateCMSSignatureRequest(keyIdentifier, singleSignatureInfos);
- }
-
- @Override
- public CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response)
- throws MOAApplicationException {
-
- Iterator iter = response.getResponseElements().iterator();
-
- CreateCMSSignatureResponseType createCMSSignatureResponseType = new CreateCMSSignatureResponseType();
-
- while (iter.hasNext()) {
- CreateCMSSignatureResponseElement responseElement = (CreateCMSSignatureResponseElement) iter.next();
-
- switch (responseElement.getResponseType()) {
- case CreateCMSSignatureResponseElement.CMS_SIGNATURE:
- CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) responseElement;
- createCMSSignatureResponseType.getCMSSignatureOrErrorResponse()
- .add(
- this.cmsParserUtils.addCMSSignature(cmsSignatureResponse));
- break;
-
- case CreateCMSSignatureResponseElement.ERROR_RESPONSE:
- ErrorResponse errorResponse = (ErrorResponse) responseElement;
- createCMSSignatureResponseType.getCMSSignatureOrErrorResponse().add(
- this.cmsParserUtils.addErrorResponse(errorResponse));
- break;
- }
- }
-
- return createCMSSignatureResponseType;
- }
-
-
-}
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
deleted file mode 100644
index 3bfe2f5..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-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.moaspss.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);
-
- }
-
-}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSVerifySignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSVerifySignatureBindingImpl.java
deleted file mode 100644
index 1cfa806..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSVerifySignatureBindingImpl.java
+++ /dev/null
@@ -1,244 +0,0 @@
-package at.gv.egovernment.moa.spss.server.webservice.binding;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import at.gv.egiz.moasig.FormResultType;
-import at.gv.egiz.moasig.ObjectFactory;
-import at.gv.egiz.moasig.PDFSignatureResultType;
-import at.gv.egiz.moasig.VerifyCMSSignatureResponseType;
-import at.gv.egiz.moasig.VerifyPDFSignatureRequest;
-import at.gv.egiz.moasig.VerifyPDFSignatureResponseType;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.common.CheckResult;
-import at.gv.egovernment.moa.spss.api.common.SignerInfo;
-import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
-import at.gv.egovernment.moa.spss.server.webservice.CMSVerifySignatureBinding;
-import at.gv.egovernment.moaspss.util.CollectionUtils;
-
-public class CMSVerifySignatureBindingImpl implements CMSVerifySignatureBinding {
-
- private TransformerUtils transformerUtils = new TransformerUtils();
-
- /** The factory to create API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
-
- @Override
- public VerifyCMSSignatureRequest buildCMSRequest(
- at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException {
-
- Date dateTime = null;
- if (verifyCMSSignatureRequest.getDateTime() != null) {
- dateTime = verifyCMSSignatureRequest.getDateTime().toGregorianCalendar().getTime();
- }
-
- int[] signatories = parseSignatories(verifyCMSSignatureRequest);
-
- CMSDataObject dataObject = this.transformerUtils.parseDataObject(verifyCMSSignatureRequest.getDataObject());
-
- String trustProfileID = null;
-
- if (verifyCMSSignatureRequest.getTrustProfileID() != null) {
- trustProfileID = verifyCMSSignatureRequest.getTrustProfileID();
- }
-
- InputStream cmsSignature = new ByteArrayInputStream(verifyCMSSignatureRequest.getCMSSignature());
-
- return factory.createVerifyCMSSignatureRequest(signatories, dateTime, cmsSignature, dataObject, trustProfileID, false);
- }
-
- /**
- * Parse the <code>Signatories</code> attribute contained in the
- * <code>VerifyCMSSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyCMSSignatureRequest</code> DOM element.
- * @return The signatories contained in the given
- * <code>VerifyCMSSignatureRequest</code> DOM element.
- */
- private int[] parseSignatories(at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest) {
- if(verifyCMSSignatureRequest.getSignatories().isEmpty()) {
- return VerifyCMSSignatureRequest.ALL_SIGNATORIES;
- }
-
- Iterator<String> signatoriesIterator = verifyCMSSignatureRequest.getSignatories().iterator();
- List signatoriesList = new ArrayList();
-
- int[] signatories;
- while (signatoriesIterator.hasNext()) {
- String signatorie = signatoriesIterator.next();
-
- if ("all".equals(signatorie)) {
- return VerifyCMSSignatureRequest.ALL_SIGNATORIES;
- } else {
- StringTokenizer tokenizer = new StringTokenizer(signatorie);
- // put the signatories into a List
- while (tokenizer.hasMoreTokens()) {
- try {
- signatoriesList.add(new Integer(tokenizer.nextToken()));
- } catch (NumberFormatException e) {
- // this cannot occur if the request has been validated
- }
- }
- }
-
- }
-
- // convert the List into an int array
- signatories = CollectionUtils.toIntArray(signatoriesList);
-
- return signatories;
- }
-
- @Override
- public VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response)
- throws MOAApplicationException {
-
- VerifyCMSSignatureResponseType verifyCMSSignatureResponseType = new VerifyCMSSignatureResponseType();
-
- Iterator iter;
-
- for (iter = response.getResponseElements().iterator(); iter.hasNext();) {
- VerifyCMSSignatureResponseElement responseElement = (VerifyCMSSignatureResponseElement) iter.next();
- addResponseElement(verifyCMSSignatureResponseType, responseElement);
- }
-
- return verifyCMSSignatureResponseType;
- }
-
- /**
- * Add an element to the response.
- *
- * @param responseElement
- * The element to add to the response.
- * @throws MOAApplicationException
- * An error occurred adding the element.
- */
- private void addResponseElement(VerifyCMSSignatureResponseType verifyCMSSignatureResponseType,
- VerifyCMSSignatureResponseElement responseElement) throws MOAApplicationException {
-
- ObjectFactory of = new ObjectFactory();
- SignerInfo signerInfo = responseElement.getSignerInfo();
- CheckResult signatureCheck = responseElement.getSignatureCheck();
- CheckResult certCheck = responseElement.getCertificateCheck();
-
- verifyCMSSignatureResponseType.getSignerInfoAndSignatureCheckAndCertificateCheck().add(
- of.createVerifyCMSSignatureResponseTypeSignerInfo(this.transformerUtils.buildSignerInfo(signerInfo)));
- verifyCMSSignatureResponseType.getSignerInfoAndSignatureCheckAndCertificateCheck()
- .add(of.createVerifyCMSSignatureResponseTypeSignatureCheck(
- this.transformerUtils.buildCheckResult(signatureCheck)));
-
- verifyCMSSignatureResponseType.getSignerInfoAndSignatureCheckAndCertificateCheck()
- .add(of.createVerifyCMSSignatureResponseTypeCertificateCheck(
- this.transformerUtils.buildCheckResult(certCheck)));
-
- if (responseElement.getAdESFormResults() != null) {
- Iterator adesIterator = responseElement.getAdESFormResults().iterator();
- while (adesIterator.hasNext()) {
- AdESFormResults adesResult = (AdESFormResults) adesIterator.next();
- FormResultType formResultType = new FormResultType();
- formResultType.setCode(BigInteger.valueOf(adesResult.getCode()));
- formResultType.setName(adesResult.getName());
-
- verifyCMSSignatureResponseType.getSignerInfoAndSignatureCheckAndCertificateCheck().add(
- of.createVerifyCMSSignatureResponseTypeFormCheckResult(formResultType));
- }
- }
- }
-
- /**
- * Add an element to the response.
- *
- * @param responseElement
- * The element to add to the response.
- * @throws MOAApplicationException
- * An error occurred adding the element.
- */
- private void addResponseElement(VerifyPDFSignatureResponseType verifyPDFSignatureResponseType,
- VerifyCMSSignatureResponseElement responseElement) throws MOAApplicationException {
-
- SignerInfo signerInfo = responseElement.getSignerInfo();
- CheckResult signatureCheck = responseElement.getSignatureCheck();
- CheckResult certCheck = responseElement.getCertificateCheck();
-
- PDFSignatureResultType resultType = new PDFSignatureResultType();
-
- if (responseElement.getAdESFormResults() != null) {
- Iterator adesIterator = responseElement.getAdESFormResults().iterator();
- while (adesIterator.hasNext()) {
- AdESFormResults adesResult = (AdESFormResults) adesIterator.next();
- FormResultType formResultType = new FormResultType();
- formResultType.setCode(BigInteger.valueOf(adesResult.getCode()));
- formResultType.setName(adesResult.getName());
- resultType.getFormCheckResult().add(formResultType);
- }
- }
-
- resultType.setSignerInfo(this.transformerUtils.buildSignerInfo(signerInfo));
- resultType.setSignatureCheck(this.transformerUtils.buildCheckResult(signatureCheck));
- resultType.setCertificateCheck(this.transformerUtils.buildCheckResult(certCheck));
-
- verifyPDFSignatureResponseType.getSignatureResult().add(resultType);
- }
-
- /**
- * Parse the <code>Signatories</code> attribute contained in the
- * <code>VerifyCMSSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyCMSSignatureRequest</code> DOM element.
- * @return The signatories contained in the given
- * <code>VerifyCMSSignatureRequest</code> DOM element.
- */
- private int[] parseSignatories(VerifyPDFSignatureRequest verifyPDFSignatureRequest) {
- return VerifyCMSSignatureRequest.ALL_SIGNATORIES;
- }
-
- @Override
- public VerifyCMSSignatureRequest buildPDFRequest(VerifyPDFSignatureRequest verifyPDFSignatureRequest)
- throws MOAApplicationException {
- Date dateTime = null;
- if (verifyPDFSignatureRequest.getDateTime() != null) {
- dateTime = verifyPDFSignatureRequest.getDateTime().toGregorianCalendar().getTime();
- }
-
- int[] signatories = parseSignatories(verifyPDFSignatureRequest);
-
- String trustProfileID = null;
-
- if (verifyPDFSignatureRequest.getTrustProfileID() != null) {
- trustProfileID = verifyPDFSignatureRequest.getTrustProfileID();
- }
-
- InputStream cmsSignature = new ByteArrayInputStream(verifyPDFSignatureRequest.getPDFSignature());
-
- return factory.createVerifyCMSSignatureRequest(signatories, dateTime, cmsSignature, null, trustProfileID, true);
- }
-
- @Override
- public VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response)
- throws MOAApplicationException {
- VerifyPDFSignatureResponseType verifyPDFSignatureResponseType = new VerifyPDFSignatureResponseType();
-
- Iterator iter;
-
- for (iter = response.getResponseElements().iterator(); iter.hasNext();) {
- VerifyCMSSignatureResponseElement responseElement = (VerifyCMSSignatureResponseElement) iter.next();
- addResponseElement(verifyPDFSignatureResponseType, responseElement);
- }
-
- return verifyPDFSignatureResponseType;
- }
-
-}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java
deleted file mode 100644
index b16cce7..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package at.gv.egovernment.moa.spss.server.webservice.binding;
-
-import java.math.BigInteger;
-import java.util.Iterator;
-
-import at.gv.egiz.moasig.CreatePDFSignatureRequest;
-import at.gv.egiz.moasig.CreatePDFSignatureResponseType;
-import at.gv.egiz.moasig.ErrorResponseType;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.server.webservice.PDFCreateSignatureBinding;
-import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest;
-import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone;
-import at.gv.egovernment.moa.spss.server.xmlbind.PDFSignatureInfo;
-import at.gv.egovernment.moa.spss.server.xmlbind.SignedPDFInfo;
-
-public class PDFCreateSignatureBindingImpl implements PDFCreateSignatureBinding {
-
- public PDFCreateSignatureBindingImpl() {
- }
-
- @Override
- public CreatePDFRequest buildPDFRequest(CreatePDFSignatureRequest createCMSSignatureRequest)
- throws MOAApplicationException {
- String keyIdentifier = createCMSSignatureRequest.getKeyIdentifier();
- CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier);
- Iterator<at.gv.egiz.moasig.CreatePDFSignatureRequest.SingleSignatureInfo> iter =
- createCMSSignatureRequest.getSingleSignatureInfo().iterator();
-
- while(iter.hasNext()) {
- at.gv.egiz.moasig.CreatePDFSignatureRequest.SingleSignatureInfo singleSignatureInfo = iter.next();
- createPDFRequest.getSignatureInfoList().add(parseSingleSignatureInfo(singleSignatureInfo));
- }
-
- return createPDFRequest;
- }
-
- @Override
- public CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response) throws MOAApplicationException {
-
- CreatePDFSignatureResponseType createPDFSignatureResponseType = new CreatePDFSignatureResponseType();
-
- Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator();
-
- while(iter.hasNext()) {
- SignedPDFInfo signedPDFInfo = iter.next();
-
- createPDFSignatureResponseType.getPDFSignature().add(buildPDFSignedResponse(signedPDFInfo));
- }
- return createPDFSignatureResponseType;
- }
-
- public PDFSignatureInfo parseSingleSignatureInfo(
- at.gv.egiz.moasig.CreatePDFSignatureRequest.SingleSignatureInfo singleSignatureInfo)
- throws MOAApplicationException {
- String signatureProfile = singleSignatureInfo.getSignatureProfile();
- String signaturePosition = singleSignatureInfo.getSignaturePosition();
- String signatureID = singleSignatureInfo.getSignatureID();
- byte[] inputPDF = singleSignatureInfo.getPDFDocument();
- PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF,
- signatureProfile, signaturePosition, signatureID);
-
- return PDFSignatureInfo;
- }
-
- public at.gv.egiz.moasig.PDFSignedRepsonse buildPDFSignedResponse(SignedPDFInfo signedPDFInfo) {
- at.gv.egiz.moasig.PDFSignedRepsonse response = new at.gv.egiz.moasig.PDFSignedRepsonse();
-
- response.setSignatureID(signedPDFInfo.getSignatureID());
-
- switch (signedPDFInfo.getResponseType()) {
- case SignedPDFInfo.SUCCESS_SIGNATURE:
- response.setPDFSignature(signedPDFInfo.getPdfDocument());
- break;
-
- default:
- ErrorResponseType errorResponseType = new ErrorResponseType();
- errorResponseType.setErrorCode(BigInteger.valueOf(signedPDFInfo.getErrorCode()));
- errorResponseType.setInfo(signedPDFInfo.getErrorInfo());
- response.setErrorResponse(errorResponseType);
- break;
- }
-
- return response;
- }
-}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformParser.java
deleted file mode 100644
index 1d05f22..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformParser.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright 2003 Federal Chancellery Austria
- * MOA-SPSS has been developed in a cooperation between BRZ, the Federal
- * Chancellery Austria - ICT staff unit, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- * You may obtain a copy of the Licence at:
- * http://www.osor.eu/eupl/
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and
- * limitations under the Licence.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-package at.gv.egovernment.moa.spss.server.webservice.binding;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.Serializable;
-import java.io.StringBufferInputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import javax.xml.bind.JAXBElement;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.traversal.NodeIterator;
-import org.xml.sax.SAXException;
-
-import at.gv.egiz.moasig.MoaTransformType;
-import at.gv.egiz.moasig.MoaTransformsType;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.common.Base64Transform;
-import at.gv.egovernment.moa.spss.api.common.CanonicalizationTransform;
-import at.gv.egovernment.moa.spss.api.common.EnvelopedSignatureTransform;
-import at.gv.egovernment.moa.spss.api.common.ExclusiveCanonicalizationTransform;
-import at.gv.egovernment.moa.spss.api.common.Transform;
-import at.gv.egovernment.moa.spss.api.common.XPathFilter;
-import at.gv.egovernment.moa.spss.api.common.XPathFilter2Transform;
-import at.gv.egovernment.moa.spss.api.common.XPathTransform;
-import at.gv.egovernment.moa.spss.api.common.XSLTTransform;
-import at.gv.egovernment.moaspss.util.Constants;
-import at.gv.egovernment.moaspss.util.DOMUtils;
-import at.gv.egovernment.moaspss.util.XPathUtils;
-
-/**
- * A parser to parse XMLDsig <code>Transform</code> DOM elements into their MOA
- * SPSS API representation.
- *
- * @author Patrick Peck
- * @version $Id$
- */
-public class TransformParser {
- //
- // XPath expressions for selecting information from the DOM tree
- //
- private static final String DSIG = Constants.DSIG_PREFIX + ":";
- private static final String DSIG_FILTER2 = Constants.DSIG_FILTER2_PREFIX + ":";
- private static final String XSLT = Constants.XSLT_PREFIX + ":";
- private static final String EC = Constants.DSIG_EC_PREFIX + ":";
- private static final String TRANSFORM_XPATH = DSIG + "Transform";
- private static final String XPATH_XPATH = DSIG + "XPath";
- private static final String XSLT_ELEMENT_XPATH = XSLT + "stylesheet";
- private static final String XPATH2_XPATH = (DSIG_FILTER2 + "XPath[@Filter=\"intersect\"] | ")
- + (DSIG_FILTER2 + "XPath[@Filter=\"subtract\"] | ") + (DSIG_FILTER2 + "XPath[@Filter=\"union\"]");
- private static final String INCLUSIVE_NAMESPACES_XPATH = EC + "InclusiveNamespaces";
-
- /**
- * The <code>SPSSFactory</code> to use for creating new API objects.
- */
- private SPSSFactory factory = SPSSFactory.getInstance();
-
- /**
- * Parse an XMLDsig <code>Transforms</code> DOM element.
- *
- * @param transformsElem
- * The <code>Transforms</code> DOM element to parse.
- * @return A <code>List</code> of <code>Transform</code> API objects
- * containing the data from the individual <code>Transform</code>
- * DOM elements.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>Transforms</code> DOM
- * element.
- */
- public List parseTransforms(MoaTransformsType moaTransformsType) throws MOAApplicationException {
- List transforms = new ArrayList();
- if (moaTransformsType.getMoaTransform() != null) {
- Iterator<MoaTransformType> transformIterator = moaTransformsType.getMoaTransform().iterator();
-
- while (transformIterator.hasNext()) {
- MoaTransformType transformType = transformIterator.next();
- Transform transform = parseTransform(transformType);
- transforms.add(transform);
- }
- }
- return transforms;
- }
-
- /**
- * Parse an XMLDsig <code>Transform</code> DOM element.
- *
- * @param transformElem
- * <code>Transform</code> DOM element to parse.
- * @return The <code>Transform</code> API object containing the data from
- * the <code>Transform</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>Transform</code> DOM
- * element.
- */
- public Transform parseTransform(MoaTransformType transformType) throws MOAApplicationException {
-
- String algorithmUri = transformType.getAlgorithm();// transformElem.getAttribute("Algorithm");
-
- if (CanonicalizationTransform.CANONICAL_XML.equals(algorithmUri)
- || CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals(algorithmUri)) {
- return factory.createCanonicalizationTransform(algorithmUri);
- } else if (ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(algorithmUri)
- || ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS.equals(algorithmUri)) {
- return parseExclusiveC14nTransform(algorithmUri, transformType);
- } else if (Base64Transform.BASE64_DECODING.equals(algorithmUri)) {
- return factory.createBase64Transform();
- } else if (EnvelopedSignatureTransform.ENVELOPED_SIGNATURE.equals(algorithmUri)) {
- return factory.createEnvelopedSignatureTransform();
- } else if (XPathTransform.XPATH.equals(algorithmUri)) {
- return parseXPathTransform(transformType);
- } else if (XPathFilter2Transform.XPATH_FILTER2.equals(algorithmUri)) {
- return parseXPathFilter2Transform(transformType);
- } else if (XSLTTransform.XSLT.equals(algorithmUri)) {
- return parseXSLTTransform(transformType);
- } else {
- throw new MOAApplicationException("1108", new Object[] { algorithmUri });
- }
- }
-
- private List<byte[]> getDataObjectFromMoaTransform(MoaTransformType transformType) {
- Iterator<Serializable> objectsIterator = transformType.getContent().iterator();
- List<byte[]> dataObjects = new ArrayList<byte[]>();
- while (objectsIterator.hasNext()) {
- Serializable serializable = objectsIterator.next();
- if (serializable instanceof JAXBElement<?>) {
- JAXBElement<?> jaxb = (JAXBElement<?>) serializable;
- if (jaxb.getDeclaredType() == byte[].class) {
- JAXBElement<byte[]> jaxbString = (JAXBElement<byte[]>) serializable;
- dataObjects.add(jaxbString.getValue());
- }
- }
- }
- return dataObjects;
- }
-
- private List<String> getStringFromMoaTransform(MoaTransformType transformType) {
- Iterator<Serializable> objectsIterator = transformType.getContent().iterator();
- List<String> dataObjects = new ArrayList<String>();
- while (objectsIterator.hasNext()) {
- Serializable serializable = objectsIterator.next();
- if (serializable instanceof JAXBElement<?>) {
- JAXBElement<?> jaxb = (JAXBElement<?>) serializable;
- if (jaxb.getDeclaredType() == String.class) {
- JAXBElement<String> jaxbString = (JAXBElement<String>) serializable;
- dataObjects.add(jaxbString.getValue());
- }
- } else if (serializable instanceof String) {
- dataObjects.add((String) serializable);
- }
- }
- return dataObjects;
- }
-
- /**
- * Parse an exclusive canonicalization type of transform.
- *
- * @param algorithmUri
- * The algorithm URI of the canonicalization algorithm.
- * @param transformElem
- * The <code>Transform</code> DOM element to parse.
- * @return An <code>ExclusiveCanonicalizationTransform</code> API object
- * containing the data from the <code>transformElem</code>.
- * @throws MOAApplicationException
- */
- private Transform parseExclusiveC14nTransform(String algorithmUri, MoaTransformType transformType)
- throws MOAApplicationException {
- List<byte[]> data = getDataObjectFromMoaTransform(transformType);
- List inclusiveNamespaces = new ArrayList();
- Iterator<byte[]> dataIterator = data.iterator();
- while (dataIterator.hasNext()) {
- byte[] dataObject = dataIterator.next();
- Element transform;
- try {
- transform = DOMUtils.parseXmlNonValidating(new ByteArrayInputStream(dataObject));
- } catch (ParserConfigurationException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- } catch (SAXException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- } catch (IOException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- }
-
- Element inclusiveNamespacesElem = (Element) XPathUtils.selectSingleNode(transform,
- INCLUSIVE_NAMESPACES_XPATH);
-
- if (inclusiveNamespacesElem != null) {
- StringTokenizer tokenizer = new StringTokenizer(inclusiveNamespacesElem.getAttribute("PrefixList"));
- while (tokenizer.hasMoreTokens()) {
- inclusiveNamespaces.add(tokenizer.nextToken());
- }
- }
- }
- return factory.createExclusiveCanonicalizationTransform(algorithmUri, inclusiveNamespaces);
- }
-
- /**
- * Parse an <code>XPath</code> type of <code>Transform</code>.
- *
- * @param transformElem
- * The <code>Transform</code> DOM element to parse.
- * @return The <code>Transform</code> API object representation of the
- * <code>Transform</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>Transform</code> DOM
- * element.
- */
- private Transform parseXPathTransform(MoaTransformType transformType) throws MOAApplicationException {
- // TODO: XPATH Namespace Declarations
- List<String> xPathTransforms = getStringFromMoaTransform(transformType);
- Map nsDecls;
- if (xPathTransforms.isEmpty()) {
- throw new MOAApplicationException("2202", null);
- }
- nsDecls = new HashMap();
- return factory.createXPathTransform(xPathTransforms.get(0), nsDecls);
- /*
- * Element xPathElem = (Element)
- * XPathUtils.selectSingleNode(transformElem, XPATH_XPATH);
- *
- *
- * if (xPathElem == null) { throw new MOAApplicationException("2202",
- * null); }
- *
- * nsDecls = DOMUtils.getNamespaceDeclarations(xPathElem);
- * nsDecls.remove("");
- *
- * return factory.createXPathTransform(DOMUtils.getText(xPathElem),
- * nsDecls);
- */
- }
-
- /**
- * Parse an <code>XPathFilter2</code> type of <code>Transform</code>.
- *
- * @param transformElem
- * The <code>Transform</code> DOM element to parse.
- * @return The <code>Transform</code> API object representation of the
- * <code>Transform</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>Transform</code> DOM
- * element.
- */
- private Transform parseXPathFilter2Transform(MoaTransformType transformType) throws MOAApplicationException {
-
- List<byte[]> data = getDataObjectFromMoaTransform(transformType);
-
- List filters = new ArrayList();
- Iterator<byte[]> dataIterator = data.iterator();
- while (dataIterator.hasNext()) {
- byte[] dataObject = dataIterator.next();
- Element transform;
- try {
- transform = DOMUtils.parseXmlNonValidating(new ByteArrayInputStream(dataObject));
- } catch (ParserConfigurationException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- } catch (SAXException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- } catch (IOException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- }
-
- NodeIterator iter = XPathUtils.selectNodeIterator(transform, XPATH2_XPATH);
- Element filterElem;
-
- while ((filterElem = (Element) iter.nextNode()) != null) {
- String filterAttr = filterElem.getAttribute("Filter");
- String filterType;
- String expression;
- Map nsDecls;
-
- if (filterAttr.equals("intersect")) {
- filterType = XPathFilter.INTERSECT_TYPE;
- } else if (filterAttr.equals("subtract")) {
- filterType = XPathFilter.SUBTRACT_TYPE;
- } else {
- filterType = XPathFilter.UNION_TYPE;
- }
-
- expression = DOMUtils.getText(filterElem);
- nsDecls = DOMUtils.getNamespaceDeclarations(filterElem);
- nsDecls.remove("");
- filters.add(factory.createXPathFilter(filterType, expression, nsDecls));
- }
- }
- if (filters.size() == 0) {
- throw new MOAApplicationException("2216", null);
- }
-
- return factory.createXPathFilter2Transform(filters);
- }
-
- /**
- * Parse an <code>XSLT</code> type of <code>Transform</code>.
- *
- * @param transformElem
- * The <code>Transform</code> DOM element to parse.
- * @return The <code>Transform</code> API object representation of the
- * <code>Transform</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>Transform</code> DOM
- * element.
- */
- private Transform parseXSLTTransform(MoaTransformType transformType) throws MOAApplicationException {
- List<byte[]> data = getDataObjectFromMoaTransform(transformType);
-
- if (data.isEmpty()) {
- throw new MOAApplicationException("2215", null);
- }
-
- byte[] dataObject = data.get(0);
- Element transform;
- try {
- transform = DOMUtils.parseXmlNonValidating(new ByteArrayInputStream(dataObject));
- } catch (ParserConfigurationException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- } catch (SAXException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- } catch (IOException e) {
- throw new MOAApplicationException("failed to parse transform element", null, e);
- }
-
- Element xsltElem = (Element) XPathUtils.selectSingleNode(transform, XSLT_ELEMENT_XPATH);
-
- if (xsltElem == null) {
-
- }
-
- return factory.createXSLTTransform(xsltElem);
- }
-
-}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java
deleted file mode 100644
index 676c95c..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java
+++ /dev/null
@@ -1,521 +0,0 @@
-package at.gv.egovernment.moa.spss.server.webservice.binding;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.security.cert.CertificateEncodingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBElement;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import at.gv.egiz.moasig.MetaInfoType;
-import at.gv.egiz.moasig.PublicAuthorityType;
-import at.gv.egiz.moasig.QualifiedCertificate;
-import at.gv.egiz.moasig.SecureSignatureCreationDevice;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
-import at.gv.egovernment.moa.spss.api.common.Content;
-import at.gv.egovernment.moa.spss.api.common.MetaInfo;
-import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureEnvironmentProfile;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureInfo;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureLocation;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfile;
-import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo;
-import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
-
-public class TransformerUtils {
-
- /** The factory to create API objects. */
- private SPSSFactory factory;
-
- /**
- * Create a new <code>CreateXMLSignatureRequestParser</code>.
- */
- public TransformerUtils() {
- this.factory = SPSSFactory.getInstance();
- }
-
- public SingleSignatureInfo buildSingleSignatureInfo(
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo singleSignatureInfo)
- throws MOAApplicationException {
-
- List dataObjectInfos = new ArrayList();
-
- Iterator<at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo> dataObjectInfoIterator = singleSignatureInfo
- .getDataObjectInfo().iterator();
-
- while (dataObjectInfoIterator.hasNext()) {
- dataObjectInfos.add(buildDataObjectInfo(dataObjectInfoIterator.next()));
- }
-
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfoWeb = singleSignatureInfo
- .getCreateSignatureInfo();
-
- CreateSignatureInfo createSignatureInfo = buildCreateSignatureInfo(createSignatureInfoWeb);
-
- boolean securityLayerConform = singleSignatureInfo.isSecurityLayerConformity();
-
- return factory.createSingleSignatureInfo(dataObjectInfos, createSignatureInfo, securityLayerConform);
- }
-
- public DataObjectInfo buildDataObjectInfo(
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo dataObjectInfo)
- throws MOAApplicationException {
- String structure = dataObjectInfo.getStructure();
- boolean childOfManifest = dataObjectInfo.isChildOfManifest();
-
- Content dataObject = buildContent(dataObjectInfo.getDataObject());
-
- CreateTransformsInfoProfile createTransformsInfoProfile = parseCreateTransformsInfoProfile(
- dataObjectInfo.getCreateTransformsInfoProfile());
-
- return factory.createDataObjectInfo(structure, childOfManifest, dataObject, createTransformsInfoProfile);
- }
-
- public CreateSignatureInfo buildCreateSignatureInfo(
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfo)
- throws MOAApplicationException {
- if (createSignatureInfo == null) {
- return null;
- } else {
- Content environment = buildContent(createSignatureInfo.getCreateSignatureEnvironment());
- CreateSignatureEnvironmentProfile environmentProfile = parseCreateSignatureEnvironmentProfile(
- createSignatureInfo);
- return factory.createCreateSignatureInfo(environment, environmentProfile);
- }
- }
-
- public CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile(
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfo)
- throws MOAApplicationException {
- if (createSignatureInfo.getCreateSignatureEnvironmentProfile() != null) {
- return parseCreateSignatureEnvironmentProfile(createSignatureInfo.getCreateSignatureEnvironmentProfile());
- } else {
- String profileID = createSignatureInfo.getCreateSignatureEnvironmentProfileID();
- return factory.createCreateSignatureEnvironmentProfile(profileID);
- }
- }
-
- public CreateTransformsInfoProfile parseCreateTransformsInfoProfile(
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo dataObjectInfo)
- throws MOAApplicationException {
- if (dataObjectInfo.getCreateTransformsInfoProfile() != null) {
- at.gv.egiz.moasig.CreateTransformsInfoProfile createTransformsInfoProfile = dataObjectInfo
- .getCreateTransformsInfoProfile();
- return parseCreateTransformsInfoProfile(createTransformsInfoProfile);
- } else {
- String profileID = dataObjectInfo.getCreateTransformsInfoProfileID();
- return factory.createCreateTransformsInfoProfile(profileID);
- }
- }
-
- /**
- * Parse a <code>CreateTransformsInfoProfile</code> DOM element.
- *
- * @param profileElem
- * The <code>CreateTransformsInfoProfile</code> element to parse.
- * @return The <code>CreateTransformsInfoProfile</code> API object
- * containing the data from the <code>profileElem</code>.
- * @throws MOAApplicationException
- * An error occurred parsing the DOM element.
- */
- public CreateTransformsInfoProfile parseCreateTransformsInfoProfile(
- at.gv.egiz.moasig.CreateTransformsInfoProfile createTransformsInfoProfile) throws MOAApplicationException {
- if(createTransformsInfoProfile == null) {
- return null;
- }
-
- CreateTransformsInfo createTransformsInfo = parseCreateTransformsInfo(
- createTransformsInfoProfile.getCreateTransformsInfo());
- List supplements = parseSupplements(createTransformsInfoProfile.getSupplement());
- return factory.createCreateTransformsInfoProfile(createTransformsInfo, supplements);
- }
-
- /**
- * Parse a <code>XMLDataObjectAssociationType</code> kind of DOM element.
- *
- * @param assocElem
- * The <code>XMLDataObjectAssociationType</code> kind of DOM
- * elmeent to parse.
- * @return The <code>XMLDataObjectAssociation</code> API object containing
- * the data from the <code>XMLDataObjectAssociationType</code> DOM
- * element.
- * @throws MOAApplicationException
- */
- public XMLDataObjectAssociation parseXMLDataObjectAssociation(
- at.gv.egiz.moasig.XMLDataObjectAssociationType xmlDataObjectAssociationType)
- throws MOAApplicationException {
-
- MetaInfo metaInfo = parseMetaInfo(xmlDataObjectAssociationType.getMetaInfo());
-
- Content content = buildContent(xmlDataObjectAssociationType.getContent());
-
- return factory.createXMLDataObjectAssociation(metaInfo, content);
- }
-
- /**
- * Parse a <code>CreateSignatureEnvironmentProfile</code> DOM element.
- *
- * @param profileElem
- * The <code>CreateSignatureEnvironmentProfile</code> DOM element
- * to parse.
- * @return The <code>CreateSignatureEnvironmentProfile</code> API object
- * containing the data from the <code>profileElem</code>.
- * @throws MOAApplicationException
- */
- public CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile(
- at.gv.egiz.moasig.CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile)
- throws MOAApplicationException {
-
- CreateSignatureLocation createSignatureLocation = parseCreateSignatureLocation(
- createSignatureEnvironmentProfile.getCreateSignatureLocation());
- List supplements = parseSupplements(createSignatureEnvironmentProfile.getSupplement());
-
- return factory.createCreateSignatureEnvironmentProfile(createSignatureLocation, supplements);
- }
-
- /**
- * Parse a <code>CreateSignatureLocation</code> DOM element contained in a
- * <code>CreateSignatureEnvironmentProfile</code>.
- *
- * @param profileElem
- * The <code>CreateSignatureEnvironmentProfile</code> DOM element
- * containing the <code>CreateSignatureLocation</code>.
- * @return The <code>CreateSignatureLocation</code> API object containing
- * the data from the <code>CreateSignatureLocation</code> DOM
- * element.
- */
- private CreateSignatureLocation parseCreateSignatureLocation(
- at.gv.egiz.moasig.CreateSignatureLocationType createSignatureLocationType) {
-
- String xPathExpression = createSignatureLocationType.getValue();
- Map namespaceDeclarations = new HashMap();// DOMUtils.getNamespaceDeclarations(locationElem);
- int index = createSignatureLocationType.getIndex().intValue();
- // Integer.parseInt(indexStr);
-
- return factory.createCreateSignatureLocation(xPathExpression, index, namespaceDeclarations);
- }
-
- /**
- * Parse all <code>Supplement</code> DOM elements contained in a given
- * parent DOM element.
- *
- * @param supplementsParentElem
- * The DOM element being the parent of the
- * <code>Supplement</code>s.
- * @return A <code>List</code> of <code>Supplement</code> API objects
- * containing the data from the <code>Supplement</code> DOM
- * elements.
- * @throws MOAApplicationException
- */
- private List parseSupplements(List<at.gv.egiz.moasig.XMLDataObjectAssociationType> supplementsList)
- throws MOAApplicationException {
- List supplements = new ArrayList();
- Iterator<at.gv.egiz.moasig.XMLDataObjectAssociationType> supplementsIterator = supplementsList.iterator();
-
- while (supplementsIterator.hasNext()) {
- at.gv.egiz.moasig.XMLDataObjectAssociationType xmlDataObjectAssociationType = supplementsIterator.next();
- XMLDataObjectAssociation supplement = parseXMLDataObjectAssociation(xmlDataObjectAssociationType);
- supplements.add(supplement);
- }
- return supplements;
- }
-
- /**
- * Parse the <code>CreateTransformsInfo</code> DOM element contained in a
- * <code>CreateTransformsInfoProfile</code>.
- *
- * @param profileElem
- * The <code>CreateTransformsInfoProfile</code> DOM element
- * containing the <code>CreateTransformsInfo</code>.
- * @return The <code>CreateTransformsInfo</code> API object containinig the
- * data from the <code>CreateTransformsInfo</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the
- * <code>CreateTransformsInfo</code> DOM element.
- */
- public CreateTransformsInfo parseCreateTransformsInfo(at.gv.egiz.moasig.TransformsInfoType transformsInfoType)
- throws MOAApplicationException {
- MetaInfo finalDataMetaInfo = null;
- List transforms = null;
- if (transformsInfoType != null) {
- if (transformsInfoType.getMoaTransforms() != null) {
- if (transformsInfoType.getMoaTransforms() != null) {
- // Transform Parser with MoaTransformsType
- at.gv.egovernment.moa.spss.server.webservice.binding.TransformParser parser = new at.gv.egovernment.moa.spss.server.webservice.binding.TransformParser();
- transforms = parser.parseTransforms(transformsInfoType.getMoaTransforms());
- }
- }
-
- finalDataMetaInfo = parseMetaInfo(transformsInfoType.getFinalDataMetaInfo());
- }
- return factory.createCreateTransformsInfo(transforms, finalDataMetaInfo);
- }
-
- public Content buildContent(at.gv.egiz.moasig.DataObjectInfoType.DataObject dataObject)
- throws MOAApplicationException {
- String referenceURI = dataObject.getReference();
- if (dataObject.getBase64Content() != null) {
- return factory.createContent(new ByteArrayInputStream(dataObject.getBase64Content()), referenceURI);
- } else if (dataObject.getLocRefContent() != null) {
- String locationReferenceURI = dataObject.getLocRefContent();
- return factory.createContent(locationReferenceURI, referenceURI);
- } else {
- return factory.createContent(referenceURI);
- }
- }
-
- public Content buildContent(at.gv.egiz.moasig.ContentOptionalRefType contentBaseType)
- throws MOAApplicationException {
-
- String referenceURI = contentBaseType.getReference();
-
- if (contentBaseType.getBase64Content() != null) {
- return factory.createContent(new ByteArrayInputStream(contentBaseType.getBase64Content()), referenceURI);
- } else if (contentBaseType.getLocRefContent() != null) {
- String locationReferenceURI = contentBaseType.getLocRefContent();
- return factory.createContent(locationReferenceURI, referenceURI);
- } else {
- return factory.createContent(referenceURI);
- }
- }
-
- public MetaInfo parseMetaInfo(at.gv.egiz.moasig.FinalDataMetaInfoType metaInfoElem) {
- SPSSFactory factory = SPSSFactory.getInstance();
-
- String mimeType = metaInfoElem.getMimeType();
- String description = metaInfoElem.getDescription();
- String type = metaInfoElem.getType();
- // TODO: any type not supported
-
- return factory.createMetaInfo(mimeType, description, null, type);
- }
-
- public MetaInfo parseMetaInfo(at.gv.egiz.moasig.MetaInfoType metaInfoElem) {
- SPSSFactory factory = SPSSFactory.getInstance();
-
- String mimeType = metaInfoElem.getMimeType();
- String description = metaInfoElem.getDescription();
- // TODO: any and type not supported
-
- return factory.createMetaInfo(mimeType, description, null, null);
- }
-
- public at.gv.egiz.moasig.KeyInfoType buildSignerInfo(at.gv.egovernment.moa.spss.api.common.SignerInfo signerInfo)
- throws MOAApplicationException {
- at.gv.egiz.moasig.KeyInfoType infoType = new at.gv.egiz.moasig.KeyInfoType();
-
- at.gv.egiz.moasig.X509DataType x509DataType = new at.gv.egiz.moasig.X509DataType();
-
- at.gv.egiz.moasig.ObjectFactory of = new at.gv.egiz.moasig.ObjectFactory();
-
- // Set Issuer
-
- at.gv.egiz.moasig.X509IssuerSerialType x509IssuerSerialType = new at.gv.egiz.moasig.X509IssuerSerialType();
-
- x509IssuerSerialType.setX509IssuerName(signerInfo.getSignerCertificate().getIssuerDN().getName());
- x509IssuerSerialType.setX509SerialNumber(signerInfo.getSignerCertificate().getSerialNumber());
-
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName()
- .add(of.createX509DataTypeX509IssuerSerial(x509IssuerSerialType));
-
- // Set Subject
- try {
- RFC2253NameParser parser = new RFC2253NameParser(
- signerInfo.getSignerCertificate().getSubjectDN().getName());
- String subjectRfc2253 = parser.parse().getRFC2253String();
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName()
- .add(of.createX509DataTypeX509SubjectName(subjectRfc2253));
- } catch (RFC2253NameParserException e) {
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(
- of.createX509DataTypeX509SubjectName(signerInfo.getSignerCertificate().getSubjectDN().getName()));
- }
-
- // Set Certificate
- try {
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName()
- .add(of.createX509DataTypeX509Certificate(signerInfo.getSignerCertificate().getEncoded()));
- } catch (CertificateEncodingException e) {
- throw new MOAApplicationException("2245", null, e);
- }
-
- // Qualified Cert
-
- if (signerInfo.isQualifiedCertificate()) {
- QualifiedCertificate qualifiedCertificate = of.createQualifiedCertificate();
- if ("TLS".compareToIgnoreCase(signerInfo.getQCSource()) == 0) {
- qualifiedCertificate.setSource(signerInfo.getQCSource());
- }
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(qualifiedCertificate);
- }
-
- // Public Authority
-
- if (signerInfo.isPublicAuthority()) {
- PublicAuthorityType publicAuthorityType = of.createPublicAuthorityType();
-
- if (signerInfo.getPublicAuhtorityID() != null) {
- publicAuthorityType.setCode(signerInfo.getPublicAuhtorityID());
- }
-
- JAXBElement<PublicAuthorityType> publicAuthority = of.createPublicAuthority(publicAuthorityType);
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(publicAuthority);
- }
-
- // ssCD
-
- if (signerInfo.isSSCD()) {
- SecureSignatureCreationDevice sscd = of.createSecureSignatureCreationDevice();
- sscd.setSource(signerInfo.getSSCDSource());
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(sscd);
- }
-
- if (signerInfo.getIssuerCountryCode() != null) {
- x509DataType.getX509IssuerSerialOrX509SKIOrX509SubjectName()
- .add(of.createIssuingCountry(signerInfo.getIssuerCountryCode()));
- }
-
- return infoType;
- }
-
- public at.gv.egiz.moasig.CheckResultType buildCheckResult(
- at.gv.egovernment.moa.spss.api.common.CheckResult checkResult) {
- at.gv.egiz.moasig.CheckResultType checkResultType = new at.gv.egiz.moasig.CheckResultType();
- checkResultType.setCode(BigInteger.valueOf(checkResult.getCode()));
-
- if (checkResult.getInfo() != null) {
- at.gv.egiz.moasig.AnyChildrenType anyInfos = new at.gv.egiz.moasig.AnyChildrenType();
-
- for (int idx = 0; idx < checkResult.getInfo().getLength(); idx++) {
- Node node = checkResult.getInfo().item(idx);
- if (node instanceof Element) {
- anyInfos.getContent().add((Element) node);
- }
- }
-
- checkResultType.setInfo(anyInfos);
- }
- return checkResultType;
- }
-
- /**
- * Parse a the <code>DataObject</code> DOM element contained in a given
- * <code>VerifyCMSSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyCMSSignatureRequest</code> DOM element to
- * parse.
- * @return The <code>CMSDataObject</code> API object containing the data
- * from the <code>DataObject</code> DOM element.
- */
- public CMSDataObject parseDataObject(at.gv.egiz.moasig.CMSDataObjectRequiredMetaType cmsDataObject) {
-
- if (cmsDataObject != null) {
- MetaInfo metaInfo = null;
-
- MetaInfoType metaInfoType = cmsDataObject.getMetaInfo();
-
- if (metaInfoType != null) {
- metaInfo = this.parseMetaInfo(metaInfoType);
- }
-
- at.gv.egiz.moasig.CMSContentBaseType cmsContent = cmsDataObject.getContent();
-
- CMSContent content = parseContent(cmsContent);
-
- BigDecimal excludeByteRangeFrom = null;
-
- if (cmsDataObject.getFrom() != null) {
- excludeByteRangeFrom = new BigDecimal(cmsDataObject.getFrom());
- }
-
- BigDecimal excludeByteRangeTo = null;
- if (cmsDataObject.getTo() != null) {
- excludeByteRangeTo = new BigDecimal(cmsDataObject.getTo());
- }
-
- return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo);
-
- } else {
- return null;
- }
-
- }
-
- /**
- * Parse a the <code>DataObject</code> DOM element contained in a given
- * <code>VerifyCMSSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyCMSSignatureRequest</code> DOM element to
- * parse.
- * @return The <code>CMSDataObject</code> API object containing the data
- * from the <code>DataObject</code> DOM element.
- */
- public CMSDataObject parseDataObject(at.gv.egiz.moasig.CMSDataObjectOptionalMetaType cmsDataObject) {
-
- if (cmsDataObject != null) {
- MetaInfo metaInfo = null;
-
- MetaInfoType metaInfoType = cmsDataObject.getMetaInfo();
-
- if (metaInfoType != null) {
- metaInfo = this.parseMetaInfo(metaInfoType);
- }
-
- at.gv.egiz.moasig.CMSContentBaseType cmsContent = cmsDataObject.getContent();
-
- CMSContent content = parseContent(cmsContent);
-
- BigDecimal excludeByteRangeFrom = null;
-
- if (cmsDataObject.getFrom() != null) {
- excludeByteRangeFrom = new BigDecimal(cmsDataObject.getFrom());
- }
-
- BigDecimal excludeByteRangeTo = null;
- if (cmsDataObject.getTo() != null) {
- excludeByteRangeTo = new BigDecimal(cmsDataObject.getTo());
- }
-
- return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo);
-
- } else {
- return null;
- }
-
- }
-
- /**
- * Parse the content contained in a <code>CMSContentBaseType</code> kind of
- * DOM element.
- *
- * @param contentElem
- * The <code>CMSContentBaseType</code> kind of element to parse.
- * @return A <code>CMSDataObject</code> API object containing the data from
- * the given DOM element.
- */
- public CMSContent parseContent(at.gv.egiz.moasig.CMSContentBaseType cmsContent) {
-
- if (cmsContent.getBase64Content() != null) {
- InputStream binaryContent = new ByteArrayInputStream(cmsContent.getBase64Content());
- return factory.createCMSContent(binaryContent);
- } else {
- return factory.createCMSContent(cmsContent.getReference());
- }
- }
-}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java
deleted file mode 100644
index 6656d51..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java
+++ /dev/null
@@ -1,101 +0,0 @@
-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 javax.xml.transform.TransformerException;
-
-import at.gv.egiz.moasig.CreateXMLSignatureRequest;
-import at.gv.egiz.moasig.CreateXMLSignatureResponseType;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
-import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
-import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;
-import at.gv.egovernment.moa.spss.server.webservice.XMLCreateSignatureBinding;
-import at.gv.egovernment.moaspss.util.DOMUtils;
-
-public class XMLCreateSignatureBindingImpl implements XMLCreateSignatureBinding {
-
- /** The factory to create API objects. */
- private SPSSFactory factory;
-
- /**
- * Create a new <code>CreateXMLSignatureRequestParser</code>.
- */
- public XMLCreateSignatureBindingImpl() {
- this.factory = SPSSFactory.getInstance();
- }
-
- @Override
- public at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest(
- CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException {
-
- String keyIdentifier = createXMLSignatureRequest.getKeyIdentifier();
-
- TransformerUtils transformerUtils = new TransformerUtils();
-
- List singleSignatureInfos = new ArrayList();
-
- Iterator<at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo> singleSignatureInfoIterator = createXMLSignatureRequest
- .getSingleSignatureInfo().iterator();
-
- while (singleSignatureInfoIterator.hasNext()) {
- at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo singleSignatureInfo = singleSignatureInfoIterator
- .next();
- singleSignatureInfos.add(transformerUtils.buildSingleSignatureInfo(singleSignatureInfo));
- }
-
- return factory.createCreateXMLSignatureRequest(keyIdentifier, singleSignatureInfos);
- }
-
-
-
- @Override
- public CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response) throws MOAApplicationException {
- CreateXMLSignatureResponseType createXMLSignatureResponseType = new CreateXMLSignatureResponseType();
- List responseObjects = response.getResponseElements();
-
- Iterator responseIterator = responseObjects.iterator();
-
- while(responseIterator.hasNext()) {
- Object responseObject = responseIterator.next();
-
- CreateXMLSignatureResponseElement responseElement =
- (CreateXMLSignatureResponseElement) responseObject;
-
- switch (responseElement.getResponseType()) {
- case CreateXMLSignatureResponseElement.SIGNATURE_ENVIRONMENT_RESPONSE :
- SignatureEnvironmentResponse envResponse =
- (SignatureEnvironmentResponse) responseElement;
- byte[] signature;
- try {
- signature = DOMUtils.serializeNode(envResponse.getSignatureEnvironment(), "UTF-8");
- } catch (TransformerException e) {
- throw new MOAApplicationException("Failed to write xml signature to response", null, e);
- } catch (IOException e) {
- throw new MOAApplicationException("Failed to write xml signature to response", null, e);
- }
- createXMLSignatureResponseType.getSignatureEnvironmentOrErrorResponse().add(signature);
- break;
-
- case CreateXMLSignatureResponseElement.ERROR_RESPONSE :
- ErrorResponse errorResponse = (ErrorResponse) responseElement;
-
- at.gv.egiz.moasig.ErrorResponseType errorResponseType = new at.gv.egiz.moasig.ErrorResponseType();
- errorResponseType.setErrorCode(BigInteger.valueOf(errorResponse.getErrorCode()));
- errorResponseType.setInfo(errorResponse.getInfo());
-
- createXMLSignatureResponseType.getSignatureEnvironmentOrErrorResponse().add(errorResponseType);
- break;
- }
- }
-
- return createXMLSignatureResponseType;
- }
-
-}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLVerifySignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLVerifySignatureBindingImpl.java
deleted file mode 100644
index dcc92f9..0000000
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLVerifySignatureBindingImpl.java
+++ /dev/null
@@ -1,524 +0,0 @@
-package at.gv.egovernment.moa.spss.server.webservice.binding;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.security.cert.CertificateEncodingException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.security.auth.login.FailedLoginException;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.dom.DOMResult;
-
-import org.apache.commons.io.IOUtils;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import at.gv.egiz.moasig.MoaTransformsType;
-import at.gv.egiz.moasig.NamespaceDeclarationType;
-import at.gv.egiz.moasig.PublicAuthorityType;
-import at.gv.egiz.moasig.QualifiedCertificate;
-import at.gv.egiz.moasig.SecureSignatureCreationDevice;
-import at.gv.egiz.moasig.TransformParameterType;
-import at.gv.egiz.moasig.TransformParameterType.Hash;
-import at.gv.egiz.moasig.VerifyXMLSignatureResponseType;
-import at.gv.egiz.moasig.XMLDataObjectAssociationType;
-import at.gv.egiz.moasig.XMLSignatureLocationType;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.common.Content;
-import at.gv.egovernment.moa.spss.api.common.ContentBinary;
-import at.gv.egovernment.moa.spss.api.common.ContentXML;
-import at.gv.egovernment.moa.spss.api.common.InputData;
-import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
-import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
-import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo;
-import at.gv.egovernment.moa.spss.api.xmlverify.SignatureManifestCheckParams;
-import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile;
-import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameter;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfile;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
-import at.gv.egovernment.moa.spss.server.webservice.XMLVerifySignatureBinding;
-import at.gv.egovernment.moaspss.util.DOMUtils;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
-
-public class XMLVerifySignatureBindingImpl implements XMLVerifySignatureBinding {
-
- /** The <code>SPSSFactory</code> for creating new API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
-
- private TransformerUtils transformerUtils = new TransformerUtils();
-
- private TransformParser transformParser = new TransformParser();
-
- @Override
- public VerifyXMLSignatureRequest buildXMLRequest(
- at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException {
- Date dateTime = null;
- if (verifyXMLSignatureRequest.getDateTime() != null) {
- dateTime = verifyXMLSignatureRequest.getDateTime().toGregorianCalendar().getTime();
- }
- boolean returnHashInputData = false;
- returnHashInputData = (verifyXMLSignatureRequest.getReturnHashInputData() != null);
- String trustProfileID = verifyXMLSignatureRequest.getTrustProfileID();
- VerifySignatureInfo verifySignatureInfo = parseVerifySignatureInfo(
- verifyXMLSignatureRequest.getVerifySignatureInfo());
- List supplementProfiles = parseSupplementProfiles(verifyXMLSignatureRequest);
-
- SignatureManifestCheckParams signatureManifestCheckParams = this
- .parseSignatureManifestCheckParams(verifyXMLSignatureRequest.getSignatureManifestCheckParams());
- return factory.createVerifyXMLSignatureRequest(dateTime, verifySignatureInfo, supplementProfiles,
- signatureManifestCheckParams, returnHashInputData, trustProfileID);
- }
-
- @Override
- public VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response)
- throws MOAApplicationException {
- VerifyXMLSignatureResponseType verifyXMLSignatureResponseType = new VerifyXMLSignatureResponseType();
-
- verifyXMLSignatureResponseType.setSignerInfo(this.transformerUtils.buildSignerInfo(response.getSignerInfo()));
-
- if (response.getHashInputDatas() != null && !response.getHashInputDatas().isEmpty()) {
- for (Iterator iter = response.getHashInputDatas().iterator(); iter.hasNext();) {
- InputData inputData = (InputData) iter.next();
- verifyXMLSignatureResponseType.getHashInputData().add(buildInputData(inputData));
- }
- }
-
- if (response.getReferenceInputDatas() != null && !response.getReferenceInputDatas().isEmpty()) {
- for (Iterator iter = response.getReferenceInputDatas().iterator(); iter.hasNext();) {
- InputData inputData = (InputData) iter.next();
- verifyXMLSignatureResponseType.getReferenceInputData().add(buildInputData(inputData));
- }
- }
-
- // add the SignatureCheck
- verifyXMLSignatureResponseType.setSignatureCheck(buildReferencesCheckResult(response.getSignatureCheck()));
-
- // add the SignatureManifestCheck
- if (response.getSignatureManifestCheck() != null) {
- verifyXMLSignatureResponseType.setSignatureManifestCheck(buildReferencesCheckResult(response.getSignatureManifestCheck()));
- }
-
- // add the XMLDsigManifestChecks
- if(response.getXMLDsigManifestChecks() != null) {
- List xmlDsigManifestChecks = response.getXMLDsigManifestChecks();
- Iterator iter = xmlDsigManifestChecks.iterator();
- while(iter.hasNext()) {
- Object xmlDsigManifestCheck = iter.next();
- verifyXMLSignatureResponseType.getXMLDSIGManifestCheck().add(
- buildManifestCheckResult((at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResult)
- xmlDsigManifestCheck));
- }
- }
-
- // add the CertificateCheck
- verifyXMLSignatureResponseType.setCertificateCheck(this.transformerUtils.buildCheckResult(response.getCertificateCheck()));
-
- if(response.getAdESFormResults() != null) {
- Iterator formIterator = response.getAdESFormResults().iterator();
-
- while(formIterator.hasNext()) {
- AdESFormResults adESFormResult = (AdESFormResults)formIterator.next();
- verifyXMLSignatureResponseType.getFormCheckResult().add(
- buildFormResult(adESFormResult));
- }
-
- }
-
- return verifyXMLSignatureResponseType;
- }
-
- private at.gv.egiz.moasig.InputDataType buildInputData(InputData inputData) throws MOAApplicationException {
- at.gv.egiz.moasig.InputDataType inputDataType = new at.gv.egiz.moasig.InputDataType();
- inputDataType.setPartOf(inputData.getPartOf());
-
- if(inputData.getReferringReferenceNumber() != InputData.REFERER_NONE_) {
- inputDataType.setReferringSigReference(BigInteger.valueOf(inputData.getReferringReferenceNumber()));
- }
-
- switch(inputData.getContentType()) {
- case Content.XML_CONTENT:
- ContentXML contentXml = (ContentXML) inputData;
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try {
- iaik.xml.crypto.utils.DOMUtils.serialize(DOMUtils.nodeList2DocumentFragment(
- contentXml.getXMLContent()).getOwnerDocument(),
- baos);
- inputDataType.setBase64Content(baos.toByteArray());
- } catch (TransformerException e) {
- throw new MOAApplicationException("2200", null, e);
- } catch (ParserConfigurationException e) {
- throw new MOAApplicationException("2200", null, e);
- }
-
- break;
- case Content.BINARY_CONTENT:
- ContentBinary contentBinary = (ContentBinary) inputData;
- try {
- inputDataType.setBase64Content(IOUtils.toByteArray(contentBinary.getBinaryContent()));
- } catch (IOException e) {
- throw new MOAApplicationException("2200", null, e);
- }
- break;
- }
- return inputDataType;
- }
-
- private at.gv.egiz.moasig.FormResultType buildFormResult(AdESFormResults adESFormResults) {
- at.gv.egiz.moasig.FormResultType formResult = new at.gv.egiz.moasig.FormResultType();
- formResult.setCode(BigInteger.valueOf(adESFormResults.getCode()));
- formResult.setName(adESFormResults.getName());
- return formResult;
- }
-
- private at.gv.egiz.moasig.ManifestRefsCheckResultType buildManifestCheckResult(
- at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResult referencesCheckResult) {
- at.gv.egiz.moasig.ManifestRefsCheckResultType referencesCheckResultType = new at.gv.egiz.moasig.ManifestRefsCheckResultType();
-
- if (referencesCheckResult.getInfo() != null) {
- at.gv.egiz.moasig.ObjectFactory of = new at.gv.egiz.moasig.ObjectFactory();
- at.gv.egiz.moasig.AnyChildrenType anyInfos = new at.gv.egiz.moasig.AnyChildrenType();
-
- if (referencesCheckResult.getInfo().getFailedReferences() != null) {
- for (int idx = 0; idx < referencesCheckResult.getInfo().getFailedReferences().length; idx++) {
- anyInfos.getContent().add(of.createFailedReference(
- BigInteger.valueOf(referencesCheckResult.getInfo().getFailedReferences()[idx])));
- }
- }
-
- if (referencesCheckResult.getInfo().getAnyOtherInfo() != null) {
- for (int idx = 0; idx < referencesCheckResult.getInfo().getAnyOtherInfo().getLength(); idx++) {
- Node node = referencesCheckResult.getInfo().getAnyOtherInfo().item(idx);
- if (node instanceof Element) {
- anyInfos.getContent().add((Element) node);
- }
- }
- }
-
- anyInfos.getContent().add(of.createReferringSigReference(
- BigInteger.valueOf(referencesCheckResult.getInfo().getReferringSignatureReference())));
-
- referencesCheckResultType.setInfo(anyInfos);
-
- }
-
- referencesCheckResultType.setCode(BigInteger.valueOf(referencesCheckResult.getCode()));
- return referencesCheckResultType;
- }
-
- private at.gv.egiz.moasig.ReferencesCheckResultType buildReferencesCheckResult(
- at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult referencesCheckResult) {
- at.gv.egiz.moasig.ReferencesCheckResultType referencesCheckResultType = new at.gv.egiz.moasig.ReferencesCheckResultType();
-
- if (referencesCheckResult.getInfo() != null) {
- at.gv.egiz.moasig.ObjectFactory of = new at.gv.egiz.moasig.ObjectFactory();
- at.gv.egiz.moasig.AnyChildrenType anyInfos = new at.gv.egiz.moasig.AnyChildrenType();
-
- if (referencesCheckResult.getInfo().getFailedReferences() != null) {
- for (int idx = 0; idx < referencesCheckResult.getInfo().getFailedReferences().length; idx++) {
- anyInfos.getContent().add(of.createFailedReference(
- BigInteger.valueOf(referencesCheckResult.getInfo().getFailedReferences()[idx])));
- }
- }
-
- if (referencesCheckResult.getInfo().getAnyOtherInfo() != null) {
- for (int idx = 0; idx < referencesCheckResult.getInfo().getAnyOtherInfo().getLength(); idx++) {
- Node node = referencesCheckResult.getInfo().getAnyOtherInfo().item(idx);
- if (node instanceof Element) {
- anyInfos.getContent().add((Element) node);
- }
- }
- }
-
- referencesCheckResultType.setInfo(anyInfos);
- }
-
- referencesCheckResultType.setCode(BigInteger.valueOf(referencesCheckResult.getCode()));
- return referencesCheckResultType;
- }
-
-
-
- /**
- * Parse the <code>VerifySignatureInfo</code> DOM element contained in the
- * <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequest</code> DOM element
- * containing the <code>VerifySignatureInfo</code> DOM element.
- * @return The <code>VerifySignatureInfo</code> API object containing the
- * data from the DOM element.
- * @throws MOAApplicationException
- */
- private VerifySignatureInfo parseVerifySignatureInfo(
- at.gv.egiz.moasig.VerifyXMLSignatureRequestType.VerifySignatureInfo verifySignatureInfo)
- throws MOAApplicationException {
- Content verifySignatureEnvironment = transformerUtils
- .buildContent(verifySignatureInfo.getVerifySignatureEnvironment());
-
- XMLSignatureLocationType xmlSignatureLocationType = verifySignatureInfo.getVerifySignatureLocation();
-
- String xPathExpression = xmlSignatureLocationType.getXPathExpression();
-
- Iterator<NamespaceDeclarationType> namespaceDelcarationIterator = xmlSignatureLocationType.getNamespaceDeclaration().iterator();
-
- Map namespaceMap = new HashMap();
-
- while(namespaceDelcarationIterator.hasNext()) {
- NamespaceDeclarationType namespaceDelcaration = namespaceDelcarationIterator.next();
-
- String prefix = namespaceDelcaration.getPrefix();
- String namespace = namespaceDelcaration.getValue();
-
- namespaceMap.put(prefix, namespace);
- }
-
- VerifySignatureLocation verifySignatureLocation = factory.createVerifySignatureLocation(xPathExpression,
- namespaceMap);
-
- return factory.createVerifySignatureInfo(verifySignatureEnvironment, verifySignatureLocation);
- }
-
- /**
- * Parse the supplement profiles contained in the given
- * <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequest</code> DOM element.
- * @return A <code>List</code> of <code>SupplementProfile</code> API objects
- * containing the data from the <code>SupplementProfile</code> DOM
- * elements.
- * @throws MOAApplicationException
- */
- private List parseSupplementProfiles(at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest)
- throws MOAApplicationException {
- List supplementProfiles = new ArrayList();
- List<Object> supplementElements = verifyXMLSignatureRequest.getSupplementProfileOrSupplementProfileID();
- if (supplementElements != null) {
- Iterator<Object> supplementElementsIterator = supplementElements.iterator();
- while (supplementElementsIterator.hasNext()) {
- Object object = supplementElementsIterator.next();
- SupplementProfile profile;
- if (object instanceof XMLDataObjectAssociationType) {
- XMLDataObjectAssociationType xmlDataObjectAssociationType = (XMLDataObjectAssociationType) object;
- profile = parseSupplementProfile(xmlDataObjectAssociationType);
- } else if (object instanceof String) {
- String profileID = (String) object;
- profile = factory.createSupplementProfile(profileID);
- } else {
- throw new MOAApplicationException(
- "Invalid object in moa:SupplementProfile | moa:SupplementProfileID", null);
- }
-
- supplementProfiles.add(profile);
- }
- }
-
- return supplementProfiles;
- }
-
- public SupplementProfile parseSupplementProfile(XMLDataObjectAssociationType xmlDataObjectAssociationType)
- throws MOAApplicationException {
- XMLDataObjectAssociation supplementProfile = this.transformerUtils
- .parseXMLDataObjectAssociation(xmlDataObjectAssociationType);
-
- return factory.createSupplementProfile(supplementProfile);
- }
-
- /**
- * Parse the <code>SignatureManifestCheckParams</code> DOM element contained
- * in the given <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequest</code> DOM element.
- * @return The <code>SignatureManifestCheckParams</code> API object
- * containing the data from the
- * <code>SignatureManifestCheckParams</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the
- * <code>SignatureManifestCheckParams</code> DOM element.
- */
- private SignatureManifestCheckParams parseSignatureManifestCheckParams(
- at.gv.egiz.moasig.VerifyXMLSignatureRequestType.SignatureManifestCheckParams signatureManifestCheckParams)
- throws MOAApplicationException {
-
- if (signatureManifestCheckParams == null) {
- return null;
- }
-
- boolean returnReferencInputData = signatureManifestCheckParams.isReturnReferenceInputData();
- List<at.gv.egiz.moasig.VerifyTransformsDataType> referenceInfos = signatureManifestCheckParams
- .getReferenceInfo();
- List referenceInfosBuild = parseReferenceInfos(referenceInfos);
-
- return factory.createSignatureManifestCheckParams(referenceInfosBuild, returnReferencInputData);
- }
-
- /**
- * Parse the <code>ReferenceInfo</code> DOM elements contained in a
- * <code>SignatureManifestCheckParams</code> DOM element.
- *
- * @param paramsElem
- * The <code>SignatureManifestCheckParams</code> DOM element
- * containing the <code>ReferenceInfo</code> DOM elements.
- * @return A <code>List</code> of <code>RefernceInfo</code> API objects
- * containing the data from the <code>ReferenceInfo</code> DOM
- * elements.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>ReferenceInfo</code> DOM
- * elements.
- */
- private List parseReferenceInfos(List<at.gv.egiz.moasig.VerifyTransformsDataType> referenceInfosWeb)
- throws MOAApplicationException {
-
- List referenceInfos = new ArrayList();
-
- if (referenceInfosWeb != null) {
-
- Iterator<at.gv.egiz.moasig.VerifyTransformsDataType> referenceInfosIterator = referenceInfosWeb.iterator();
-
- while (referenceInfosIterator.hasNext()) {
- at.gv.egiz.moasig.VerifyTransformsDataType verifyTransformsDataType = referenceInfosIterator.next();
-
- ReferenceInfo referenceInfo = parseReferenceInfo(verifyTransformsDataType);
- referenceInfos.add(referenceInfo);
- }
-
- }
- return referenceInfos;
- }
-
- /**
- * Parse a <code>ReferenceInfo</code> DOM element.
- *
- * @param refInfoElem
- * The <code>ReferenceInfo</code> DOM element to parse.
- * @return The <code>ReferenceInfo</code> API object containing the data
- * from the given <code>ReferenceInfo</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>ReferenceInfo</code> DOM
- * element.
- */
- private ReferenceInfo parseReferenceInfo(at.gv.egiz.moasig.VerifyTransformsDataType verifyTransformsDataType)
- throws MOAApplicationException {
- List profiles = parseVerifyTransformsInfoProfiles(verifyTransformsDataType);
- return factory.createReferenceInfo(profiles);
- }
-
- /**
- * Parse the <code>VerifyTransformsInfoProfile</code> DOM elements contained
- * in a <code>ReferenceInfo</code> DOM element.
- *
- * @param refInfoElem
- * <code>ReferenceInfo</code> DOM element containing the
- * <code>VerifyTransformsInfoProfile</code> DOM elements.
- * @return A <code>List</code> of <code>VerifyTransformsInfoProfile</code>
- * API objects containing the profile data.
- * @throws MOAApplicationException
- * An error occurred building the
- * <code>VerifyTransformsInfoProfile</code>s.
- */
- private List parseVerifyTransformsInfoProfiles(at.gv.egiz.moasig.VerifyTransformsDataType verifyTransformsDataType)
- throws MOAApplicationException {
-
- List profiles = new ArrayList();
-
- List<Object> transformsList = verifyTransformsDataType
- .getVerifyTransformsInfoProfileOrVerifyTransformsInfoProfileID();
- Iterator<Object> transformsListIterator = transformsList.iterator();
-
- while (transformsListIterator.hasNext()) {
- Object object = transformsListIterator.next();
-
- if (object instanceof at.gv.egiz.moasig.VerifyTransformsInfoProfile) {
- at.gv.egiz.moasig.VerifyTransformsInfoProfile verifyTransformsInfoProfile = (at.gv.egiz.moasig.VerifyTransformsInfoProfile) object;
- } else if (object instanceof String) {
- String profileID = (String) object;
- profiles.add(factory.createVerifyTransformsInfoProfile(profileID));
- } else {
- throw new MOAApplicationException("Invalid object in VerifyTransformsData", null);
- }
- }
- return profiles;
- }
-
- /**
- * Parse a <code>VerifyTransformsInfoProfile</code> DOM element.
- *
- * @param profileElem
- * The <code>VerifyTransformsInfoProfile</code> DOM element to
- * parse.
- * @return A <code>VerifyTransformsInfoProfile</code> API object containing
- * the information from the <code>VerifyTransformsInfoProfile</code>
- * DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the
- * <code>VerifyTransformsInfoProfile</code>.
- */
- public VerifyTransformsInfoProfile parseVerifyTransformsInfoProfile(
- at.gv.egiz.moasig.VerifyTransformsInfoProfile verifyTransformsInfoProfile) throws MOAApplicationException {
- List transforms = null;
- List transformParameters = new ArrayList();
- List<TransformParameterType> transformParams = verifyTransformsInfoProfile.getTransformParameter();
- Iterator<TransformParameterType> transformParamIterator = transformParams.iterator();
-
- MoaTransformsType moaTransforms = verifyTransformsInfoProfile.getMoaTransforms();
-
- if (moaTransforms != null) {
- transforms = transformParser.parseTransforms(moaTransforms);
- }
-
- while (transformParamIterator.hasNext()) {
- TransformParameterType transformParameter = transformParamIterator.next();
- transformParameters.add(parseTransformParameter(transformParameter));
- }
-
- return factory.createVerifyTransformsInfoProfile(transforms, transformParameters);
- }
-
- /**
- * Parse a <code>TransformParameter</code> DOM element.
- *
- * @param paramElem
- * The <code>TransformParameter</code> DOM element to parse.
- * @return The <code>TransformParameter</code> API object containing the
- * information from the <code>TransformParameter</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>TransformParameter</code>
- * DOM element.
- */
- private TransformParameter parseTransformParameter(TransformParameterType transformParameter)
- throws MOAApplicationException {
- String uri = transformParameter.getURI();
- if (transformParameter.getBase64Content() != null) {
- InputStream binaryContent = new ByteArrayInputStream(transformParameter.getBase64Content());
- return factory.createTransformParameter(uri, binaryContent);
- } else if (transformParameter.getHash() != null) {
- Hash hash = transformParameter.getHash();
- String digestMethodStr = "";
-
- if (hash.getDigestMethod() != null) {
- digestMethodStr = hash.getDigestMethod().getAlgorithm();
- }
- byte[] digestValue = hash.getDigestValue();
- return factory.createTransformParameter(uri, digestMethodStr, digestValue);
- } else {
- return factory.createTransformParameter(uri);
- }
- }
-}