From 1b337e50a9edb280aea49879f901613e1fe17b55 Mon Sep 17 00:00:00 2001 From: pdanner Date: Fri, 26 Nov 2010 12:01:18 +0000 Subject: Changes for xmldsig reconstruction git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@612 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../wag/egov/egiz/sig/connectors/Connector.java | 17 ++++- .../egov/egiz/sig/connectors/LocalConnector.java | 7 +- .../sig/connectors/bku/DetachedBKUConnector.java | 75 +++++++++++++-------- .../bku/EnvelopedBase64BKUConnector.java | 51 ++++++++------ .../connectors/moa/DetachedLocRefMOAConnector.java | 37 ++++++++--- .../moa/EnvelopingBase64MOAConnector.java | 49 +++++++++----- .../moa/MOASoapWithAttachmentConnector.java | 77 ++++++++++++++-------- .../mocca/LocRefDetachedMOCCAConnector.java | 17 +++-- .../wag/egov/egiz/web/LocalRequestHelper.java | 2 +- 9 files changed, 221 insertions(+), 111 deletions(-) (limited to 'src/main/java/at/knowcenter/wag/egov/egiz') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/Connector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/Connector.java index 5444d1b..2d8840a 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/Connector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/Connector.java @@ -3,6 +3,7 @@ */ package at.knowcenter.wag.egov.egiz.sig.connectors; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException; import at.knowcenter.wag.egov.egiz.sig.SignatureData; import at.knowcenter.wag.egov.egiz.sig.SignatureResponse; @@ -14,6 +15,8 @@ import at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject; */ public interface Connector { +//23.11.2010 changed by exthex - added reconstructXMLDsig(SignatureData data, SignSignatureObject so) + /** * Performs a sign. * @@ -33,10 +36,22 @@ public interface Connector * The data to be verified. * @param so * The signature object with the signature information. + * @param dsig + * The xmldsig info which will be enveloped in the verify request. * @return Returns the SignatureResponse with the result of the verification. * @throws ConnectorException * Thrown if something goes wrong. */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException; + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException; + /** + * Reconstruct the xmldsig info of the given {@link SignSignatureObject} + * + * @param data + * @param so + * @return + * @throws ConnectorException + */ + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) throws ConnectorException; + } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/LocalConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/LocalConnector.java index 05f8149..91806a7 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/LocalConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/LocalConnector.java @@ -5,6 +5,7 @@ package at.knowcenter.wag.egov.egiz.sig.connectors; import java.util.Properties; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException; import at.knowcenter.wag.egov.egiz.sig.SignatureData; import at.knowcenter.wag.egov.egiz.sig.SignatureResponse; @@ -15,6 +16,8 @@ import at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject; */ public interface LocalConnector { +//23.11.2010 changed by exthex - added XMLDsigData parameter to prepareVerifyRequest to allow reuse + /** * Prepares the sign request xml to be sent using the sign request template. * @@ -46,11 +49,13 @@ public interface LocalConnector * The SignatureData. * @param so * The signature information object. + * @param dsigData + * The previously recreated xmldsig block of the signature * @return Returns the verify request xml to be sent. * @throws ConnectorException * f.e. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException; + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException; /** * Analyzes the verify response string. diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java index 6638b12..c55e727 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java @@ -11,6 +11,7 @@ import org.apache.commons.logging.LogFactory; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.exceptions.ErrorCode; import at.gv.egiz.pdfas.framework.ConnectorParameters; import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; @@ -42,6 +43,8 @@ import at.knowcenter.wag.egov.egiz.tools.CodingHelper; */ public class DetachedBKUConnector implements Connector, LocalConnector { +//23.11.2010 changed by exthex - added reconstructXMLDsig method and moved xmldsig creation to chooseAndCreateXMLDsig method + /** * The log. */ @@ -274,11 +277,11 @@ public class DetachedBKUConnector implements Connector, LocalConnector * @throws ConnectorException * f.e. */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException { log.debug("doVerify:"); //$NON-NLS-1$ - String verify_request_xml = prepareVerifyRequest(data, so); + String verify_request_xml = prepareVerifyRequest(data, so, dsig); log.debug("verify_request_xml = " + verify_request_xml); //$NON-NLS-1$ // TODO debug - remove @@ -316,39 +319,19 @@ public class DetachedBKUConnector implements Connector, LocalConnector * @throws ConnectorException * f.e. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException { String verify_request_template = this.environment.getVerifyRequestTemplate(); String xml_content = null; - // MOA - if (SigKZIDHelper.isMOASigned(so)) + if (dsigData != null && dsigData.getXmlDsig() != null) { - log.debug("The signature is MOA signed -> getting XML content from DetachedLocRefMOA connector."); - DetachedLocRefMOAConnector moa_conn = new DetachedLocRefMOAConnector(this.environment.getProfile(), "loc ref not needed here"); - xml_content = moa_conn.prepareXMLContent(data, so); - - // MOCCA - } else if (SigKZIDHelper.isMOCCASigned(so)) { - log.debug("MOCCA signature detected."); - String algorithmId = SigKZIDHelper.parseAlgorithmId(so.id); - log.debug("Algorithm = " + algorithmId); - LocRefDetachedMOCCAConnector mocca_connector = new LocRefDetachedMOCCAConnector(this.params, "not needed here", algorithmId); - xml_content = mocca_connector.prepareXMLContent(data, so); - - // ATRUST - } else if (SigKZIDHelper.isATrustSigned(so)) { - log.debug("ATrust signature detected"); - MOASoapWithAttachmentConnector moaConn = new MOASoapWithAttachmentConnector(this.params); - moaConn.reInitVerifyTemplate(MOASoapWithAttachmentConnector.ATRUST_VERIFY_TEMPLATE_KEY); - xml_content = moaConn.prepareXMLContent(data, so); - } - // TD + xml_content = dsigData.getXmlDsig(); + } else { - log.debug("TD signature signature detected."); - xml_content = prepareXMLContent(data, so); + xml_content = chooseAndCreateXMLDsig(data, so); } String verify_request_xml = verify_request_template.replaceFirst(TemplateReplaces.XML_CONTENT_REPLACE, xml_content); @@ -358,7 +341,36 @@ public class DetachedBKUConnector implements Connector, LocalConnector return verify_request_xml; } - /** + private String chooseAndCreateXMLDsig(SignatureData data, SignSignatureObject so) throws ConnectorException { + // MOA + if (SigKZIDHelper.isMOASigned(so)) + { + log.debug("The signature is MOA signed -> getting XML content from DetachedLocRefMOA connector."); + DetachedLocRefMOAConnector moa_conn = new DetachedLocRefMOAConnector(this.environment.getProfile(), "loc ref not needed here"); + return moa_conn.prepareXMLContent(data, so); + // MOCCA + } else if (SigKZIDHelper.isMOCCASigned(so)) { + log.debug("MOCCA signature detected."); + String algorithmId = SigKZIDHelper.parseAlgorithmId(so.id); + log.debug("Algorithm = " + algorithmId); + LocRefDetachedMOCCAConnector mocca_connector = new LocRefDetachedMOCCAConnector(this.params, "not needed here", algorithmId); + return mocca_connector.prepareXMLContent(data, so); + // ATRUST + } else if (SigKZIDHelper.isATrustSigned(so)) { + log.debug("ATrust signature detected"); + MOASoapWithAttachmentConnector moaConn = new MOASoapWithAttachmentConnector(this.params); + moaConn.reInitVerifyTemplate(MOASoapWithAttachmentConnector.ATRUST_VERIFY_TEMPLATE_KEY); + return moaConn.prepareXMLContent(data, so); + } + // TD + else + { + log.debug("TD signature signature detected."); + return prepareXMLContent(data, so); + } + } + +/** * Prepares the XML content the holds the actual signature data. * *

@@ -773,4 +785,11 @@ public class DetachedBKUConnector implements Connector, LocalConnector return value; } } + + + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) + throws ConnectorException { + String xmldsig = chooseAndCreateXMLDsig(data, so); + return new XMLDsigData(xmldsig, true); + } } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java index 8107d67..08f0199 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/EnvelopedBase64BKUConnector.java @@ -10,9 +10,9 @@ import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.exceptions.ErrorCode; import at.gv.egiz.pdfas.framework.ConnectorParameters; import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; @@ -26,17 +26,9 @@ import at.knowcenter.wag.egov.egiz.sig.connectors.ConnectorEnvironment; import at.knowcenter.wag.egov.egiz.sig.connectors.LocalConnector; import at.knowcenter.wag.egov.egiz.sig.connectors.TemplateReplaces; import at.knowcenter.wag.egov.egiz.sig.connectors.moa.EnvelopingBase64MOAConnector; -import at.knowcenter.wag.egov.egiz.sig.connectors.mocca.MOCCAHelper; -import at.knowcenter.wag.egov.egiz.sig.sigid.DetachedIdFormatter; -import at.knowcenter.wag.egov.egiz.sig.sigid.DetachedLocRefMOAIdFormatter; -import at.knowcenter.wag.egov.egiz.sig.sigid.DetachedMOCIdFormatter; import at.knowcenter.wag.egov.egiz.sig.sigid.HotfixIdFormatter; import at.knowcenter.wag.egov.egiz.sig.sigkz.SigKZIDHelper; -import at.knowcenter.wag.egov.egiz.sig.signaturelayout.SignatureLayoutHandler; -import at.knowcenter.wag.egov.egiz.sig.signaturelayout.SignatureLayoutHandlerFactory; -import at.knowcenter.wag.egov.egiz.sig.signaturelayout.mocca.MOCCASignatureLayout10Handler; import at.knowcenter.wag.egov.egiz.tools.CodingHelper; -import at.knowcenter.wag.egov.egiz.tools.FileHelper; /** * @author wprinz @@ -44,6 +36,7 @@ import at.knowcenter.wag.egov.egiz.tools.FileHelper; */ public class EnvelopedBase64BKUConnector implements Connector, LocalConnector { + //23.11.2010 changed by exthex - added reconstructXMLDsig method and moved xmldsig creation to chooseAndCreateXMLDsig method /** * The log. @@ -105,11 +98,11 @@ public class EnvelopedBase64BKUConnector implements Connector, LocalConnector * @see at.knowcenter.wag.egov.egiz.sig.connectors.Connector#doVerify(at.knowcenter.wag.egov.egiz.sig.SignatureData, * at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject) */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException { log.debug("doVerify:"); //$NON-NLS-1$ - String verify_request_xml = prepareVerifyRequest(data, so); + String verify_request_xml = prepareVerifyRequest(data, so, dsig); // DebugHelper.debugStringToFile(verify_request_xml, "BKU_EnvB64_verify_request.xml"); //$NON-NLS-1$ String url = this.environment.getVerifyURL(); @@ -298,22 +291,18 @@ public class EnvelopedBase64BKUConnector implements Connector, LocalConnector * @throws ConnectorException * f.e. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException { String verify_request_template = this.environment.getVerifyRequestTemplate(); String xml_content = null; - if (SigKZIDHelper.isMOASigned(so)) + if (dsigData != null && dsigData.getXmlDsig() != null) { - log.debug("The signature is MOA signed -> getting XML content from Base64MOA connector."); - ConnectorParameters cp = new ConnectorParameters(); - cp.setProfileId(this.environment.getProfile()); - EnvelopingBase64MOAConnector moa_conn = new EnvelopingBase64MOAConnector(cp); - xml_content = moa_conn.prepareXMLContent(data, so); + xml_content = dsigData.getXmlDsig(); } else { - xml_content = prepareXMLContent(data, so); + xml_content = chooseAndCreateXMLDsig(data, so); } String verify_request_xml = verify_request_template.replaceFirst(TemplateReplaces.XML_CONTENT_REPLACE, xml_content); @@ -323,7 +312,22 @@ public class EnvelopedBase64BKUConnector implements Connector, LocalConnector return verify_request_xml; } - /** + private String chooseAndCreateXMLDsig(SignatureData data, SignSignatureObject so) throws ConnectorException { + if (SigKZIDHelper.isMOASigned(so)) + { + log.debug("The signature is MOA signed -> getting XML content from Base64MOA connector."); + ConnectorParameters cp = new ConnectorParameters(); + cp.setProfileId(this.environment.getProfile()); + EnvelopingBase64MOAConnector moa_conn = new EnvelopingBase64MOAConnector(cp); + return moa_conn.prepareXMLContent(data, so); + } + else + { + return prepareXMLContent(data, so); + } + } + +/** * Sends the request to the given URL. * * @param url @@ -632,4 +636,11 @@ public class EnvelopedBase64BKUConnector implements Connector, LocalConnector return value; } } + + + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) + throws ConnectorException { + String xmldsig = chooseAndCreateXMLDsig(data, so); + return new XMLDsigData(xmldsig, false); + } } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java index 70ec5ab..5afd63e 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java @@ -12,6 +12,7 @@ import org.apache.commons.logging.LogFactory; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmMapper; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.exceptions.ErrorCode; import at.gv.egiz.pdfas.framework.ConnectorParameters; import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; @@ -39,6 +40,7 @@ import at.knowcenter.wag.egov.egiz.tools.FileHelper; */ public class DetachedLocRefMOAConnector implements Connector { + //23.11.2010 changed by exthex - added reconstructXMLDsig method and moved xmldsig creation to chooseAndCreateXMLDsig method /** * The SIG_ID prefix. */ @@ -142,11 +144,11 @@ public class DetachedLocRefMOAConnector implements Connector * @see at.knowcenter.wag.egov.egiz.sig.connectors.Connector#doVerify(at.knowcenter.wag.egov.egiz.sig.SignatureData, * at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject) */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException { log.debug("doVerify:"); //$NON-NLS-1$ - String verify_request_xml = prepareVerifyRequest(data, so); + String verify_request_xml = prepareVerifyRequest(data, so, dsig); log.debug("verify_request_xml = " + verify_request_xml); //$NON-NLS-1$ String url = this.environment.getVerifyURL(); @@ -170,21 +172,18 @@ public class DetachedLocRefMOAConnector implements Connector * @throws ConnectorException * f.e. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException { String verify_request_template = this.environment.getVerifyRequestTemplate(); String xml_content = null; - if (!SigKZIDHelper.isMOASigned(so)) + if (dsigData != null && dsigData.getXmlDsig() != null) { - ConnectorParameters cp = new ConnectorParameters(); - cp.setProfileId(this.environment.getProfile()); - DetachedBKUConnector bku_connector = new DetachedBKUConnector(cp, "not needed here"); - xml_content = bku_connector.prepareXMLContent(data, so); + xml_content = dsigData.getXmlDsig(); } else { - xml_content = prepareXMLContent(data, so); + xml_content = chooseAndCreateXMLDsig(data, so); } String verify_request_xml = verify_request_template.replaceFirst(TemplateReplaces.XML_CONTENT_REPLACE, xml_content); @@ -619,4 +618,24 @@ public class DetachedLocRefMOAConnector implements Connector } + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) + throws ConnectorException { + String xmldsig = chooseAndCreateXMLDsig(data, so); + return new XMLDsigData(xmldsig, true); + } + + private String chooseAndCreateXMLDsig(SignatureData data, SignSignatureObject so) throws ConnectorException { + if (!SigKZIDHelper.isMOASigned(so)) + { + ConnectorParameters cp = new ConnectorParameters(); + cp.setProfileId(this.environment.getProfile()); + DetachedBKUConnector bku_connector = new DetachedBKUConnector(cp, "not needed here"); + return bku_connector.prepareXMLContent(data, so); + } + else + { + return prepareXMLContent(data, so); + } + } + } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java index b74c7ff..409f97f 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/EnvelopingBase64MOAConnector.java @@ -12,6 +12,7 @@ import org.apache.commons.logging.LogFactory; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.framework.ConnectorParameters; import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException; @@ -37,6 +38,7 @@ import at.knowcenter.wag.egov.egiz.tools.FileHelper; */ public class EnvelopingBase64MOAConnector implements Connector { + //23.11.2010 changed by exthex - added reconstructXMLDsig method and moved xmldsig creation to chooseAndCreateXMLDsig method /** * The log. */ @@ -96,11 +98,11 @@ public class EnvelopingBase64MOAConnector implements Connector * @see at.knowcenter.wag.egov.egiz.sig.connectors.Connector#doVerify(at.knowcenter.wag.egov.egiz.sig.SignatureData, * at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject) */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException { log.debug("doVerify:"); //$NON-NLS-1$ - String verify_request_xml = prepareVerifyRequest(data, so); + String verify_request_xml = prepareVerifyRequest(data, so, dsig); log.debug("verify_request_xml = " + verify_request_xml); //$NON-NLS-1$ String url = this.environment.getVerifyURL(); @@ -163,27 +165,18 @@ public class EnvelopingBase64MOAConnector implements Connector * @throws ConnectorException * f.e. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException { String verify_request_template = this.environment.getVerifyRequestTemplate(); String xml_content = null; - if (!SigKZIDHelper.isMOASigned(so)) + if (dsigData != null && dsigData.getXmlDsig() != null) { - if (SigKZIDHelper.isOldBKU(so)) - { - OldEnvelopingBase64BKUConnector bku_connector = new OldEnvelopingBase64BKUConnector(this.environment.getProfile()); - xml_content = bku_connector.prepareXMLContent(data, so); - } - else - { - EnvelopedBase64BKUConnector bku_connector = new EnvelopedBase64BKUConnector(this.environment.getProfile()); - xml_content = bku_connector.prepareXMLContent(data, so); - } + xml_content = dsigData.getXmlDsig(); } else { - xml_content = prepareXMLContent(data, so); + xml_content = chooseAndCreateXMLDsig(data, so); } String verify_request_xml = verify_request_template.replaceFirst(TemplateReplaces.XML_CONTENT_REPLACE, xml_content); @@ -596,4 +589,30 @@ public class EnvelopingBase64MOAConnector implements Connector } + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) + throws ConnectorException { + String xmldsig = chooseAndCreateXMLDsig(data, so); + return new XMLDsigData(xmldsig, false); + } + + private String chooseAndCreateXMLDsig(SignatureData data, SignSignatureObject so) throws ConnectorException { + if (!SigKZIDHelper.isMOASigned(so)) + { + if (SigKZIDHelper.isOldBKU(so)) + { + OldEnvelopingBase64BKUConnector bku_connector = new OldEnvelopingBase64BKUConnector(this.environment.getProfile()); + return bku_connector.prepareXMLContent(data, so); + } + else + { + EnvelopedBase64BKUConnector bku_connector = new EnvelopedBase64BKUConnector(this.environment.getProfile()); + return bku_connector.prepareXMLContent(data, so); + } + } + else + { + return prepareXMLContent(data, so); + } + } + } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java index f72cbc2..1d310cf 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/MOASoapWithAttachmentConnector.java @@ -11,6 +11,7 @@ import org.apache.commons.logging.LogFactory; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.exceptions.ErrorCode; import at.gv.egiz.pdfas.framework.ConnectorParameters; import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; @@ -37,6 +38,7 @@ import at.knowcenter.wag.egov.egiz.tools.CodingHelper; */ public class MOASoapWithAttachmentConnector implements Connector { + //23.11.2010 changed by exthex - added reconstructXMLDsig method and moved xmldsig creation to chooseAndCreateXMLDsig method public static final String ATRUST_VERIFY_TEMPLATE_KEY = "atrust.verify.template.detached"; /** @@ -151,11 +153,11 @@ public class MOASoapWithAttachmentConnector implements Connector * @see at.knowcenter.wag.egov.egiz.sig.connectors.Connector#doVerify(at.knowcenter.wag.egov.egiz.sig.SignatureData, * at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject) */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException { log.debug("doVerify:"); //$NON-NLS-1$ - String verify_request_xml = prepareVerifyRequest(data, so); + String verify_request_xml = prepareVerifyRequest(data, so, dsig); log.debug("verify_request_xml = " + verify_request_xml); //$NON-NLS-1$ String url = this.environment.getVerifyURL(); @@ -179,36 +181,18 @@ public class MOASoapWithAttachmentConnector implements Connector * @throws ConnectorException * f.e. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException { String verify_request_template = this.environment.getVerifyRequestTemplate(); String xml_content = null; - - // MOA - if (SigKZIDHelper.isMOASigned(so)) { - log.debug("MOA signature detected."); - xml_content = prepareXMLContent(data, so); - - // MOCCA - } else if (SigKZIDHelper.isMOCCASigned(so)) { - log.debug("MOCCA signature detected."); - String algorithmId = SigKZIDHelper.parseAlgorithmId(so.id); - log.debug("Algorithm = " + algorithmId); - LocRefDetachedMOCCAConnector mocca_connector = new LocRefDetachedMOCCAConnector(this.params, "not needed here", algorithmId); - xml_content = mocca_connector.prepareXMLContent(data, so); - - // ATrust - } else if (SigKZIDHelper.isATrustSigned(so)) { - log.debug("A-Trust signature detected."); - this.environment.reInitVerifyTemplate(ATRUST_VERIFY_TEMPLATE_KEY); - xml_content = prepareXMLContent(data, so); - - // TD - } else { - log.debug("TD signature signature detected."); - DetachedBKUConnector bku_connector = new DetachedBKUConnector(this.params, "not needed here"); - xml_content = bku_connector.prepareXMLContent(data, so); + if (dsigData != null && dsigData.getXmlDsig() != null) + { + xml_content = dsigData.getXmlDsig(); + } + else + { + xml_content = chooseAndCreateXMLDsig(data, so); } String verify_request_xml = verify_request_template.replaceFirst(TemplateReplaces.XML_CONTENT_REPLACE, xml_content); @@ -230,7 +214,36 @@ public class MOASoapWithAttachmentConnector implements Connector return verify_request_xml; } - /** + private String chooseAndCreateXMLDsig(SignatureData data, SignSignatureObject so) throws ConnectorException { + + // MOA + if (SigKZIDHelper.isMOASigned(so)) { + log.debug("MOA signature detected."); + return prepareXMLContent(data, so); + + // MOCCA + } else if (SigKZIDHelper.isMOCCASigned(so)) { + log.debug("MOCCA signature detected."); + String algorithmId = SigKZIDHelper.parseAlgorithmId(so.id); + log.debug("Algorithm = " + algorithmId); + LocRefDetachedMOCCAConnector mocca_connector = new LocRefDetachedMOCCAConnector(this.params, "not needed here", algorithmId); + return mocca_connector.prepareXMLContent(data, so); + + // ATrust + } else if (SigKZIDHelper.isATrustSigned(so)) { + log.debug("A-Trust signature detected."); + this.environment.reInitVerifyTemplate(ATRUST_VERIFY_TEMPLATE_KEY); + return prepareXMLContent(data, so); + + // TD + } else { + log.debug("TD signature signature detected."); + DetachedBKUConnector bku_connector = new DetachedBKUConnector(this.params, "not needed here"); + return bku_connector.prepareXMLContent(data, so); + } + } + +/** * Analyzes the verify response string. * * @param response_properties @@ -699,4 +712,10 @@ public class MOASoapWithAttachmentConnector implements Connector } + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) + throws ConnectorException { + String xmldsig = chooseAndCreateXMLDsig(data, so); + return new XMLDsigData(xmldsig, true); + } + } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java index 0101c51..6f872f2 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java @@ -8,14 +8,13 @@ import java.util.regex.Pattern; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject; import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil; +import at.gv.egiz.pdfas.api.xmldsig.XMLDsigData; import at.gv.egiz.pdfas.exceptions.ErrorCode; import at.gv.egiz.pdfas.framework.ConnectorParameters; import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException; -import at.knowcenter.wag.egov.egiz.exceptions.SettingNotFoundException; import at.knowcenter.wag.egov.egiz.exceptions.SettingsException; import at.knowcenter.wag.egov.egiz.sig.SignatureData; import at.knowcenter.wag.egov.egiz.sig.SignatureResponse; @@ -26,18 +25,16 @@ import at.knowcenter.wag.egov.egiz.sig.connectors.TemplateReplaces; import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUHelper; import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUPostConnection; import at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject; -import at.knowcenter.wag.egov.egiz.sig.sigid.DetachedMOCIdFormatter; -import at.knowcenter.wag.egov.egiz.sig.sigkz.SigKZIDHelper; import at.knowcenter.wag.egov.egiz.sig.signaturelayout.SignatureLayoutHandler; import at.knowcenter.wag.egov.egiz.sig.signaturelayout.SignatureLayoutHandlerFactory; import at.knowcenter.wag.egov.egiz.tools.CodingHelper; -import at.knowcenter.wag.egov.egiz.tools.FileHelper; /** * Connector for MOCCA. * @author tknall */ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { + //23.11.2010 changed by exthex - added reconstructXMLDsig method and moved xmldsig creation to chooseAndCreateXMLDsig method private static Log log = LogFactory.getLog(LocRefDetachedMOCCAConnector.class); @@ -120,7 +117,7 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { * Verification is not supported by MOCCA. Therefore this method always throws a * {@link ConnectorException} with error code {@link ErrorCode#SIGNATURE_VERIFICATION_NOT_SUPPORTED}. */ - public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException { + public SignatureResponse doVerify(SignatureData data, SignSignatureObject so, XMLDsigData dsig) throws ConnectorException { throw new ConnectorException(ErrorCode.SIGNATURE_VERIFICATION_NOT_SUPPORTED, "Signature Verification is not supported by MOCCA."); } @@ -194,7 +191,7 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { * Verification is not supported by MOCCA. Therefore this method always throws a * {@link ConnectorException} with error code {@link ErrorCode#SIGNATURE_VERIFICATION_NOT_SUPPORTED}. */ - public String prepareVerifyRequest(SignatureData data, SignSignatureObject so) throws ConnectorException { + public String prepareVerifyRequest(SignatureData data, SignSignatureObject so, XMLDsigData dsigData) throws ConnectorException { throw new ConnectorException(ErrorCode.SIGNATURE_VERIFICATION_NOT_SUPPORTED, "Signature Verification is not supported by MOCCA."); } @@ -594,4 +591,10 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { return result; } + public XMLDsigData reconstructXMLDsig(SignatureData data, SignSignatureObject so) + throws ConnectorException { + String xmldsig = prepareXMLContent(data, so); + return new XMLDsigData(xmldsig, true); + } + } diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java index 0490c48..36db7b5 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java @@ -211,7 +211,7 @@ public abstract class LocalRequestHelper SignSignatureObject so = SignatureObjectHelper.convertSignatureObjectToSignSignatureObject(s); LocalConnector local_conn = ConnectorChooser.chooseLocalConnectorForVerify(si.connector, s.getKZ(), so.id, si.type, loc_ref_url); - String request_string = local_conn.prepareVerifyRequest(sd, so); + String request_string = local_conn.prepareVerifyRequest(sd, so, null); LocalRequest local_request = new LocalRequest("not-needed", request_string); si.currentLocalOperation.requests[i] = local_request; -- cgit v1.2.3