diff options
Diffstat (limited to 'moaSig/moa-sig/src/test/java/at/gv/egovernment')
4 files changed, 231 insertions, 26 deletions
diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java index abdab26..fb1cc05 100644 --- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java +++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java @@ -9,6 +9,10 @@ import static org.junit.Assert.assertTrue; import java.io.IOException; import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.List; + +import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; @@ -18,24 +22,35 @@ 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.MOAException; +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.DataObjectInfo; 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.xmlbind.CreateCMSSignatureRequestParser; import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults; import at.gv.egovernment.moa.spss.server.config.ConfigurationException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; import at.gv.egovernment.moa.spss.server.init.SystemInitializer; +import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker; import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory; +import at.gv.egovernment.moaspss.util.DOMUtils; import iaik.pki.Configurator; import iaik.pki.PKIFactory; @RunWith(BlockJUnit4ClassRunner.class) public class CadesIntegrationTest extends AbstractIntegrationTest { - CMSSignatureVerificationInvoker cadesInvoker; + CMSSignatureVerificationInvoker verifyCadesInvoker; + private CMSSignatureCreationInvoker signCadesInvoker; @BeforeClass public static void classInitializer() throws IOException, ConfigurationException, @@ -74,7 +89,9 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { @Before public void initializer() throws ConfigurationException { - cadesInvoker = CMSSignatureVerificationInvoker.getInstance(); + verifyCadesInvoker = CMSSignatureVerificationInvoker.getInstance(); + signCadesInvoker = CMSSignatureCreationInvoker.getInstance(); + setUpContexts(RandomStringUtils.randomAlphabetic(10)); } @@ -89,7 +106,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { false); // perform test - final MOAException error = assertThrows(MOAException.class, () -> cadesInvoker.verifyCMSSignature( + final MOAException error = assertThrows(MOAException.class, () -> verifyCadesInvoker.verifyCMSSignature( request)); assertEquals("wrong errorCode", "2203", error.getMessageId()); @@ -105,7 +122,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { false); // perform test - final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request); + final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request); // verify result assertNotNull("verification result", result); @@ -140,7 +157,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { true); // perform test - final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request); + final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request); // verify result assertNotNull("verification result", result); @@ -190,7 +207,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { false); // perform test - final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request); + final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request); // verify result assertNotNull("verification result", result); @@ -225,7 +242,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { true); // perform test - final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request); + final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request); // verify result assertNotNull("verification result", result); @@ -260,4 +277,95 @@ public class CadesIntegrationTest extends AbstractIntegrationTest { } + @Test + public void simpleCmsCreation() throws MOAException, ParserConfigurationException, SAXException, IOException { + // build request + Element cadesReqXml = DOMUtils.parseXmlNonValidating( + CadesIntegrationTest.class.getResourceAsStream("/testdata/cades/createCades_1.xml")); + CreateCMSSignatureRequest cadesReq = new CreateCMSSignatureRequestParser().parse(cadesReqXml); + + + // perform test + CreateCMSSignatureResponse cadesResp = signCadesInvoker.createCMSSignature(cadesReq, null); + + + // validate response + assertNotNull("cadesResp", cadesResp); + assertNotNull("cadesResp elements", cadesResp.getResponseElements()); + assertFalse("cadesResp elements", cadesResp.getResponseElements().isEmpty()); + + CMSSignatureResponse cades = (CMSSignatureResponse) cadesResp.getResponseElements().get(0); + assertNotNull("cades Sig.", cades.getCMSSignature()); + + // signature + final VerifyCMSSignatureRequest request = buildVerfifyCmsRequest( + org.apache.commons.codec.binary.Base64.decodeBase64(cades.getCMSSignature()), + "jUnitSigning", + false, + false); + + // perform test + final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request); + + // verify result + assertNotNull("verification result", result); + assertEquals("wrong result size", 1, result.getResponseElements().size()); + + final VerifyCMSSignatureResponseElement cmsResult = (VerifyCMSSignatureResponseElement) result + .getResponseElements().get(0); + assertEquals("sigCode", 0, cmsResult.getSignatureCheck().getCode()); + assertEquals("certCode", 0, cmsResult.getCertificateCheck().getCode()); + + + } + + @Test + public void simpleCadesCreation() throws MOAException, ParserConfigurationException, SAXException, IOException { + // build request + Element cadesReqXml = DOMUtils.parseXmlNonValidating( + CadesIntegrationTest.class.getResourceAsStream("/testdata/cades/createCades_2.xml")); + CreateCMSSignatureRequest cadesReq = new CreateCMSSignatureRequestParser().parse(cadesReqXml); + + + // perform test + CreateCMSSignatureResponse cadesResp = signCadesInvoker.createCMSSignature(cadesReq, null); + + + // validate response + assertNotNull("cadesResp", cadesResp); + assertNotNull("cadesResp elements", cadesResp.getResponseElements()); + assertFalse("cadesResp elements", cadesResp.getResponseElements().isEmpty()); + + CMSSignatureResponse cades = (CMSSignatureResponse) cadesResp.getResponseElements().get(0); + assertNotNull("cades Sig.", cades.getCMSSignature()); + + // signature + final VerifyCMSSignatureRequest request = buildVerfifyCmsRequest( + org.apache.commons.codec.binary.Base64.decodeBase64(cades.getCMSSignature()), + "jUnitSigning", + false, + true); + + // perform test + final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request); + + // verify result + assertNotNull("verification result", result); + assertEquals("wrong result size", 1, result.getResponseElements().size()); + + final VerifyCMSSignatureResponseElement cmsResult = (VerifyCMSSignatureResponseElement) result + .getResponseElements().get(0); + assertEquals("sigCode", 0, cmsResult.getSignatureCheck().getCode()); + assertEquals("certCode", 0, cmsResult.getCertificateCheck().getCode()); + + assertNotNull("form val. result", cmsResult.getAdESFormResults()); + assertEquals("form val. result size", 4, cmsResult.getAdESFormResults().size()); + for (final Object el : cmsResult.getAdESFormResults()) { + final AdESFormResults test = (AdESFormResults) el; + assertEquals("Find wrong form val status", 1, test.getCode().longValue()); + + } + + } + } 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()); + + } + } diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java index 698eb2f..f43ebf8 100644 --- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java +++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java @@ -31,7 +31,12 @@ import at.gv.egovernment.moa.spss.server.init.SystemInitializer; import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; import at.gv.egovernment.moa.spss.test.integration.AbstractIntegrationTest; - +/** + * https://esignature.ec.europa.eu/efda/validation-tests/#/screen/home + * + * @author tlenz + * + */ @RunWith(BlockJUnit4ClassRunner.class) public class XadesTslEuTestset02Test extends AbstractIntegrationTest { @@ -149,22 +154,24 @@ public class XadesTslEuTestset02Test extends AbstractIntegrationTest { assertNotNull("signerInfo", result.getSignerInfo()); assertEquals("issuerCC", "BE", result.getSignerInfo().getIssuerCountryCode()); assertFalse("publicAuthority", result.getSignerInfo().isPublicAuthority()); - assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + + //because this signature is not on TSL any more --> EC changes the test setup!!! + assertFalse("QC", result.getSignerInfo().isQualifiedCertificate()); assertTrue("SSCD", result.getSignerInfo().isSSCD()); - assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource()); assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource()); - assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); - assertEquals("TSL CC", "BE", result.getSignerInfo().getTslInfos().getTslIssuerCountry()); - assertEquals("TSL ServiceType", "http://uri.etsi.org/TrstSvc/Svctype/CA/QC", - result.getSignerInfo().getTslInfos().getServiceTypeIdentifier()); - assertEquals("TSL ServiceStatus", "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted", - result.getSignerInfo().getTslInfos().getServiceTypeStatus()); - assertFalse("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation() - .isEmpty()); - assertEquals("TSL addit. status value", - "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures", - result.getSignerInfo().getTslInfos().getAdditionalServiceInformation().get(0)); + assertNull("TSL infos", result.getSignerInfo().getTslInfos()); + //assertEquals("TSL CC", "BE", result.getSignerInfo().getTslInfos().getTslIssuerCountry()); + //assertEquals("TSL ServiceType", "http://uri.etsi.org/TrstSvc/Svctype/CA/QC", + // result.getSignerInfo().getTslInfos().getServiceTypeIdentifier()); + //assertEquals("TSL ServiceStatus", "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted", + // result.getSignerInfo().getTslInfos().getServiceTypeStatus()); + //assertFalse("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation() + // .isEmpty()); + //assertEquals("TSL addit. status value", + // "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures", + // result.getSignerInfo().getTslInfos().getAdditionalServiceInformation().get(0)); assertNotNull("form val. result", result.getAdESFormResults()); assertNotNull("extended val. result", result.getExtendedCertificateCheck()); diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java index d6a1550..813e1df 100644 --- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java +++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java @@ -33,7 +33,16 @@ import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer; import at.gv.egovernment.moa.spss.test.integration.AbstractIntegrationTest; +/** + * EC changed the Test SET and TSL information!!!!! + * + * <b>We have to switch to a static version</b> + * + * @author tlenz + * + */ @RunWith(BlockJUnit4ClassRunner.class) +@Ignore public class XadesTslEuTestset03Test extends AbstractIntegrationTest { XMLSignatureVerificationInvoker xadesInvoker; |