diff options
Diffstat (limited to 'moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java')
-rw-r--r-- | moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java | 91 |
1 files changed, 86 insertions, 5 deletions
diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java index cdbe5ab..ebbc334 100644 --- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java +++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.util.Collections; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; @@ -19,21 +20,30 @@ import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.MOAException; import at.gv.egovernment.moa.spss.api.common.InputData; +import at.gv.egovernment.moa.spss.api.xmlbind.CreateXMLSignatureRequestParser; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; 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.config.ConfigurationException; import at.gv.egovernment.moa.spss.server.init.SystemInitializer; +import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker; import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; +import at.gv.egovernment.moaspss.util.DOMUtils; @RunWith(BlockJUnit4ClassRunner.class) public class XadesIntegrationTest extends AbstractIntegrationTest { - XMLSignatureVerificationInvoker xadesInvoker; + XMLSignatureVerificationInvoker xadesVerifyInvoker; + XMLSignatureCreationInvoker xadesSignInvoker; @BeforeClass public static void classInitializer() throws IOException, ConfigurationException, @@ -49,7 +59,8 @@ public class XadesIntegrationTest extends AbstractIntegrationTest { @Before public void initializer() throws ConfigurationException { - xadesInvoker = XMLSignatureVerificationInvoker.getInstance(); + xadesVerifyInvoker = XMLSignatureVerificationInvoker.getInstance(); + xadesSignInvoker = XMLSignatureCreationInvoker.getInstance(); setUpContexts(RandomStringUtils.randomAlphabetic(10)); } @@ -66,7 +77,7 @@ public class XadesIntegrationTest extends AbstractIntegrationTest { null, Collections.emptyMap()); // perform test - final MOAException error = assertThrows(MOAException.class, () -> xadesInvoker.verifyXMLSignature( + final MOAException error = assertThrows(MOAException.class, () -> xadesVerifyInvoker.verifyXMLSignature( request)); assertEquals("wrong errorCode", "2203", error.getMessageId()); @@ -83,7 +94,7 @@ public class XadesIntegrationTest extends AbstractIntegrationTest { null, Collections.emptyMap()); // perform test - final VerifyXMLSignatureResponse result = xadesInvoker.verifyXMLSignature(request); + final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request); // verify result assertNotNull("verification result", result); @@ -116,7 +127,7 @@ public class XadesIntegrationTest extends AbstractIntegrationTest { null, Collections.emptyMap()); // perform test - final VerifyXMLSignatureResponse result = xadesInvoker.verifyXMLSignature(request); + final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request); // verify result assertNotNull("verification result", result); @@ -155,5 +166,75 @@ public class XadesIntegrationTest extends AbstractIntegrationTest { assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm()); } + + @Test + public void simpleXmlSignature() throws MOAException, ParserConfigurationException, SAXException, IOException, TransformerException { + // build request + Element xml = DOMUtils.parseXmlNonValidating( + CadesIntegrationTest.class.getResourceAsStream("/testdata/xades/sign/createXades_1.xml")); + CreateXMLSignatureRequest xmlReq = new CreateXMLSignatureRequestParser().parse(xml); + + // create signature + CreateXMLSignatureResponse xmlResp = xadesSignInvoker.createXMLSignature(xmlReq, Collections.EMPTY_SET); + + + // verify response + assertNotNull("xadesResp", xmlResp); + assertNotNull("xadesResp elements", xmlResp.getResponseElements()); + assertFalse("xadesResp elements", xmlResp.getResponseElements().isEmpty()); + + SignatureEnvironmentResponse signedXml = (SignatureEnvironmentResponse) xmlResp.getResponseElements().get(0); + assertNotNull("signed xml", signedXml.getSignatureEnvironment()); + + + // verify signature + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest( + DOMUtils.serializeNode(signedXml.getSignatureEnvironment()).getBytes(), + "jUnitSigning", false, null, DEFAULT_XPATH_SIGNATURE_LOCATION, null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request); + + // verify result + assertNotNull("verification result", result); + assertEquals("sigCode", 0, result.getSignatureCheck().getCode()); + assertEquals("certCode", 0, result.getCertificateCheck().getCode()); + + } + @Test + public void simpleXadesSignature() throws MOAException, ParserConfigurationException, SAXException, IOException, TransformerException { + // build request + Element xml = DOMUtils.parseXmlNonValidating( + CadesIntegrationTest.class.getResourceAsStream("/testdata/xades/sign/createXades_2.xml")); + CreateXMLSignatureRequest xmlReq = new CreateXMLSignatureRequestParser().parse(xml); + + // create signature + CreateXMLSignatureResponse xmlResp = xadesSignInvoker.createXMLSignature(xmlReq, Collections.EMPTY_SET); + + + // verify response + assertNotNull("xadesResp", xmlResp); + assertNotNull("xadesResp elements", xmlResp.getResponseElements()); + assertFalse("xadesResp elements", xmlResp.getResponseElements().isEmpty()); + + SignatureEnvironmentResponse signedXml = (SignatureEnvironmentResponse) xmlResp.getResponseElements().get(0); + assertNotNull("signed xml", signedXml.getSignatureEnvironment()); + + + // verify signature + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest( + DOMUtils.serializeNode(signedXml.getSignatureEnvironment()).getBytes(), + "jUnitSigning", false, null, DEFAULT_XPATH_SIGNATURE_LOCATION, null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request); + + // verify result + assertNotNull("verification result", result); + assertEquals("sigCode", 0, result.getSignatureCheck().getCode()); + assertEquals("certCode", 0, result.getCertificateCheck().getCode()); + + } + } |