From 53ae98cdfa510650c1e015efd0d11a96ad4dc87a Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Mon, 20 Jun 2016 12:45:07 +0200 Subject: ASiC Library added --- .../binding/CMSCreateSignatureBindingImpl.java | 72 --- .../server/webservice/binding/CMSParserUtils.java | 141 ------ .../binding/CMSVerifySignatureBindingImpl.java | 244 ---------- .../binding/PDFCreateSignatureBindingImpl.java | 85 ---- .../server/webservice/binding/TransformParser.java | 363 -------------- .../webservice/binding/TransformerUtils.java | 521 -------------------- .../binding/XMLCreateSignatureBindingImpl.java | 101 ---- .../binding/XMLVerifySignatureBindingImpl.java | 524 --------------------- 8 files changed, 2051 deletions(-) delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSCreateSignatureBindingImpl.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSParserUtils.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/CMSVerifySignatureBindingImpl.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformParser.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/TransformerUtils.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLCreateSignatureBindingImpl.java delete mode 100644 moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/XMLVerifySignatureBindingImpl.java (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice') 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 CMSSignature element to the response. - * - * @param cmsSignatureResponse - * The content to put under the CMSSignature - * 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 ErrorResponse element to the response. - * - * @param errorResponse - * The API object containing the information to put into the - * ErrorResponse 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 SingleSignatureInfo elements of the - * CreateCMSSignatureRequest. - * - * @param requestElem - * The CreateCMSSignatureRequest to parse. - * @return A List of SingleSignatureInfo API - * objects. - * @throws MOAApplicationException - * An error occurred parsing on of the - * SingleSignatureInfo elements. - */ - public List parseSingleSignatureInfos( - List singleInfos) - throws MOAApplicationException { - - List singleSignatureInfos = new ArrayList(); - - Iterator singleInfoIterator = singleInfos - .iterator(); - - while (singleInfoIterator.hasNext()) { - at.gv.egiz.moasig.CreateCMSSignatureRequestType.SingleSignatureInfo singleSignatureInfo = singleInfoIterator - .next(); - - singleSignatureInfos.add(parseSingleSignatureInfo(singleSignatureInfo)); - } - - return singleSignatureInfos; - } - - /** - * Parse a SingleSignatureInfo DOM element. - * - * @param sigInfoElem - * The SingleSignatureInfo DOM element to parse. - * @return A SingleSignatureInfo API object containing the - * information of sigInfoElem. - * @throws MOAApplicationException - * An error occurred parsing the - * SingleSignatureInfo. - */ - 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 DataObjectInfo DOM elements contained in the given - * SingleSignatureInfo DOM element. - * - * @param sigInfoElem - * The SingleSignatureInfo DOM element whose - * DataObjectInfos to parse. - * @return A List of DataObjectInfo API objects - * containing the data from the DataObjectInfo DOM - * elements. - * @throws MOAApplicationException - * An error occurred parsing one of the - * DataObjectInfos. - */ - 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 Signatories attribute contained in the - * VerifyCMSSignatureRequest DOM element. - * - * @param requestElem - * The VerifyCMSSignatureRequest DOM element. - * @return The signatories contained in the given - * VerifyCMSSignatureRequest DOM element. - */ - private int[] parseSignatories(at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest) { - if(verifyCMSSignatureRequest.getSignatories().isEmpty()) { - return VerifyCMSSignatureRequest.ALL_SIGNATORIES; - } - - Iterator 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 Signatories attribute contained in the - * VerifyCMSSignatureRequest DOM element. - * - * @param requestElem - * The VerifyCMSSignatureRequest DOM element. - * @return The signatories contained in the given - * VerifyCMSSignatureRequest 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 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 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 Transform 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 SPSSFactory to use for creating new API objects. - */ - private SPSSFactory factory = SPSSFactory.getInstance(); - - /** - * Parse an XMLDsig Transforms DOM element. - * - * @param transformsElem - * The Transforms DOM element to parse. - * @return A List of Transform API objects - * containing the data from the individual Transform - * DOM elements. - * @throws MOAApplicationException - * An error occurred parsing the Transforms DOM - * element. - */ - public List parseTransforms(MoaTransformsType moaTransformsType) throws MOAApplicationException { - List transforms = new ArrayList(); - if (moaTransformsType.getMoaTransform() != null) { - Iterator transformIterator = moaTransformsType.getMoaTransform().iterator(); - - while (transformIterator.hasNext()) { - MoaTransformType transformType = transformIterator.next(); - Transform transform = parseTransform(transformType); - transforms.add(transform); - } - } - return transforms; - } - - /** - * Parse an XMLDsig Transform DOM element. - * - * @param transformElem - * Transform DOM element to parse. - * @return The Transform API object containing the data from - * the Transform DOM element. - * @throws MOAApplicationException - * An error occurred parsing the Transform 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 getDataObjectFromMoaTransform(MoaTransformType transformType) { - Iterator objectsIterator = transformType.getContent().iterator(); - List dataObjects = new ArrayList(); - while (objectsIterator.hasNext()) { - Serializable serializable = objectsIterator.next(); - if (serializable instanceof JAXBElement) { - JAXBElement jaxb = (JAXBElement) serializable; - if (jaxb.getDeclaredType() == byte[].class) { - JAXBElement jaxbString = (JAXBElement) serializable; - dataObjects.add(jaxbString.getValue()); - } - } - } - return dataObjects; - } - - private List getStringFromMoaTransform(MoaTransformType transformType) { - Iterator objectsIterator = transformType.getContent().iterator(); - List dataObjects = new ArrayList(); - while (objectsIterator.hasNext()) { - Serializable serializable = objectsIterator.next(); - if (serializable instanceof JAXBElement) { - JAXBElement jaxb = (JAXBElement) serializable; - if (jaxb.getDeclaredType() == String.class) { - JAXBElement jaxbString = (JAXBElement) 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 Transform DOM element to parse. - * @return An ExclusiveCanonicalizationTransform API object - * containing the data from the transformElem. - * @throws MOAApplicationException - */ - private Transform parseExclusiveC14nTransform(String algorithmUri, MoaTransformType transformType) - throws MOAApplicationException { - List data = getDataObjectFromMoaTransform(transformType); - List inclusiveNamespaces = new ArrayList(); - Iterator 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 XPath type of Transform. - * - * @param transformElem - * The Transform DOM element to parse. - * @return The Transform API object representation of the - * Transform DOM element. - * @throws MOAApplicationException - * An error occurred parsing the Transform DOM - * element. - */ - private Transform parseXPathTransform(MoaTransformType transformType) throws MOAApplicationException { - // TODO: XPATH Namespace Declarations - List 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 XPathFilter2 type of Transform. - * - * @param transformElem - * The Transform DOM element to parse. - * @return The Transform API object representation of the - * Transform DOM element. - * @throws MOAApplicationException - * An error occurred parsing the Transform DOM - * element. - */ - private Transform parseXPathFilter2Transform(MoaTransformType transformType) throws MOAApplicationException { - - List data = getDataObjectFromMoaTransform(transformType); - - List filters = new ArrayList(); - Iterator 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 XSLT type of Transform. - * - * @param transformElem - * The Transform DOM element to parse. - * @return The Transform API object representation of the - * Transform DOM element. - * @throws MOAApplicationException - * An error occurred parsing the Transform DOM - * element. - */ - private Transform parseXSLTTransform(MoaTransformType transformType) throws MOAApplicationException { - List 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 CreateXMLSignatureRequestParser. - */ - public TransformerUtils() { - this.factory = SPSSFactory.getInstance(); - } - - public SingleSignatureInfo buildSingleSignatureInfo( - at.gv.egiz.moasig.CreateXMLSignatureRequestType.SingleSignatureInfo singleSignatureInfo) - throws MOAApplicationException { - - List dataObjectInfos = new ArrayList(); - - Iterator 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 CreateTransformsInfoProfile DOM element. - * - * @param profileElem - * The CreateTransformsInfoProfile element to parse. - * @return The CreateTransformsInfoProfile API object - * containing the data from the profileElem. - * @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 XMLDataObjectAssociationType kind of DOM element. - * - * @param assocElem - * The XMLDataObjectAssociationType kind of DOM - * elmeent to parse. - * @return The XMLDataObjectAssociation API object containing - * the data from the XMLDataObjectAssociationType 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 CreateSignatureEnvironmentProfile DOM element. - * - * @param profileElem - * The CreateSignatureEnvironmentProfile DOM element - * to parse. - * @return The CreateSignatureEnvironmentProfile API object - * containing the data from the profileElem. - * @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 CreateSignatureLocation DOM element contained in a - * CreateSignatureEnvironmentProfile. - * - * @param profileElem - * The CreateSignatureEnvironmentProfile DOM element - * containing the CreateSignatureLocation. - * @return The CreateSignatureLocation API object containing - * the data from the CreateSignatureLocation 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 Supplement DOM elements contained in a given - * parent DOM element. - * - * @param supplementsParentElem - * The DOM element being the parent of the - * Supplements. - * @return A List of Supplement API objects - * containing the data from the Supplement DOM - * elements. - * @throws MOAApplicationException - */ - private List parseSupplements(List supplementsList) - throws MOAApplicationException { - List supplements = new ArrayList(); - Iterator 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 CreateTransformsInfo DOM element contained in a - * CreateTransformsInfoProfile. - * - * @param profileElem - * The CreateTransformsInfoProfile DOM element - * containing the CreateTransformsInfo. - * @return The CreateTransformsInfo API object containinig the - * data from the CreateTransformsInfo DOM element. - * @throws MOAApplicationException - * An error occurred parsing the - * CreateTransformsInfo 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 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 DataObject DOM element contained in a given - * VerifyCMSSignatureRequest DOM element. - * - * @param requestElem - * The VerifyCMSSignatureRequest DOM element to - * parse. - * @return The CMSDataObject API object containing the data - * from the DataObject 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 DataObject DOM element contained in a given - * VerifyCMSSignatureRequest DOM element. - * - * @param requestElem - * The VerifyCMSSignatureRequest DOM element to - * parse. - * @return The CMSDataObject API object containing the data - * from the DataObject 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 CMSContentBaseType kind of - * DOM element. - * - * @param contentElem - * The CMSContentBaseType kind of element to parse. - * @return A CMSDataObject 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 CreateXMLSignatureRequestParser. - */ - 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 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 SPSSFactory 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 VerifySignatureInfo DOM element contained in the - * VerifyXMLSignatureRequest DOM element. - * - * @param requestElem - * The VerifyXMLSignatureRequest DOM element - * containing the VerifySignatureInfo DOM element. - * @return The VerifySignatureInfo 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 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 - * VerifyXMLSignatureRequest DOM element. - * - * @param requestElem - * The VerifyXMLSignatureRequest DOM element. - * @return A List of SupplementProfile API objects - * containing the data from the SupplementProfile DOM - * elements. - * @throws MOAApplicationException - */ - private List parseSupplementProfiles(at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest) - throws MOAApplicationException { - List supplementProfiles = new ArrayList(); - List supplementElements = verifyXMLSignatureRequest.getSupplementProfileOrSupplementProfileID(); - if (supplementElements != null) { - Iterator 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 SignatureManifestCheckParams DOM element contained - * in the given VerifyXMLSignatureRequest DOM element. - * - * @param requestElem - * The VerifyXMLSignatureRequest DOM element. - * @return The SignatureManifestCheckParams API object - * containing the data from the - * SignatureManifestCheckParams DOM element. - * @throws MOAApplicationException - * An error occurred parsing the - * SignatureManifestCheckParams DOM element. - */ - private SignatureManifestCheckParams parseSignatureManifestCheckParams( - at.gv.egiz.moasig.VerifyXMLSignatureRequestType.SignatureManifestCheckParams signatureManifestCheckParams) - throws MOAApplicationException { - - if (signatureManifestCheckParams == null) { - return null; - } - - boolean returnReferencInputData = signatureManifestCheckParams.isReturnReferenceInputData(); - List referenceInfos = signatureManifestCheckParams - .getReferenceInfo(); - List referenceInfosBuild = parseReferenceInfos(referenceInfos); - - return factory.createSignatureManifestCheckParams(referenceInfosBuild, returnReferencInputData); - } - - /** - * Parse the ReferenceInfo DOM elements contained in a - * SignatureManifestCheckParams DOM element. - * - * @param paramsElem - * The SignatureManifestCheckParams DOM element - * containing the ReferenceInfo DOM elements. - * @return A List of RefernceInfo API objects - * containing the data from the ReferenceInfo DOM - * elements. - * @throws MOAApplicationException - * An error occurred parsing the ReferenceInfo DOM - * elements. - */ - private List parseReferenceInfos(List referenceInfosWeb) - throws MOAApplicationException { - - List referenceInfos = new ArrayList(); - - if (referenceInfosWeb != null) { - - Iterator 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 ReferenceInfo DOM element. - * - * @param refInfoElem - * The ReferenceInfo DOM element to parse. - * @return The ReferenceInfo API object containing the data - * from the given ReferenceInfo DOM element. - * @throws MOAApplicationException - * An error occurred parsing the ReferenceInfo DOM - * element. - */ - private ReferenceInfo parseReferenceInfo(at.gv.egiz.moasig.VerifyTransformsDataType verifyTransformsDataType) - throws MOAApplicationException { - List profiles = parseVerifyTransformsInfoProfiles(verifyTransformsDataType); - return factory.createReferenceInfo(profiles); - } - - /** - * Parse the VerifyTransformsInfoProfile DOM elements contained - * in a ReferenceInfo DOM element. - * - * @param refInfoElem - * ReferenceInfo DOM element containing the - * VerifyTransformsInfoProfile DOM elements. - * @return A List of VerifyTransformsInfoProfile - * API objects containing the profile data. - * @throws MOAApplicationException - * An error occurred building the - * VerifyTransformsInfoProfiles. - */ - private List parseVerifyTransformsInfoProfiles(at.gv.egiz.moasig.VerifyTransformsDataType verifyTransformsDataType) - throws MOAApplicationException { - - List profiles = new ArrayList(); - - List transformsList = verifyTransformsDataType - .getVerifyTransformsInfoProfileOrVerifyTransformsInfoProfileID(); - Iterator 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 VerifyTransformsInfoProfile DOM element. - * - * @param profileElem - * The VerifyTransformsInfoProfile DOM element to - * parse. - * @return A VerifyTransformsInfoProfile API object containing - * the information from the VerifyTransformsInfoProfile - * DOM element. - * @throws MOAApplicationException - * An error occurred parsing the - * VerifyTransformsInfoProfile. - */ - public VerifyTransformsInfoProfile parseVerifyTransformsInfoProfile( - at.gv.egiz.moasig.VerifyTransformsInfoProfile verifyTransformsInfoProfile) throws MOAApplicationException { - List transforms = null; - List transformParameters = new ArrayList(); - List transformParams = verifyTransformsInfoProfile.getTransformParameter(); - Iterator 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 TransformParameter DOM element. - * - * @param paramElem - * The TransformParameter DOM element to parse. - * @return The TransformParameter API object containing the - * information from the TransformParameter DOM element. - * @throws MOAApplicationException - * An error occurred parsing the TransformParameter - * 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); - } - } -} -- cgit v1.2.3