aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java')
-rw-r--r--moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java208
1 files changed, 208 insertions, 0 deletions
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
new file mode 100644
index 0000000..698eb2f
--- /dev/null
+++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java
@@ -0,0 +1,208 @@
+package at.gv.egovernment.moa.spss.test.integration.tsl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+
+import at.gv.egovernment.moa.sig.tsl.engine.data.TSLProcessingResultElement;
+import at.gv.egovernment.moa.spss.MOAException;
+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.XMLSignatureVerificationInvoker;
+import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
+import at.gv.egovernment.moa.spss.test.integration.AbstractIntegrationTest;
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class XadesTslEuTestset02Test extends AbstractIntegrationTest {
+
+ XMLSignatureVerificationInvoker cadesInvoker;
+
+ public static final Map<String, Boolean> TSL_LOAD_STATUS;
+
+ static {
+ final Map<String, Boolean> intMap = new HashMap<>();
+ intMap.put("EU", true);
+ intMap.put("LU", false);
+ intMap.put("FR", false);
+ intMap.put("BE", true);
+ intMap.put("DE", false);
+ TSL_LOAD_STATUS = Collections.unmodifiableMap(intMap);
+
+ }
+
+ @BeforeClass
+ public static void classInitializer() throws IOException, ConfigurationException,
+ NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
+ jvmStateReset();
+
+ final String current = new java.io.File(".").getCanonicalPath();
+ System.setProperty("moa.spss.server.configuration",
+ current + "/src/test/resources/moaspss_config/MOASPSSConfiguration_tsl_eu_test_1.xml");
+ System.setProperty("iaik.esi.sva.configuration.location",
+ current + "/src/test/resources/moaspss_config/svaconfig.example");
+ moaSpssCore = SystemInitializer.init();
+
+ }
+
+ @Before
+ public void initializer() throws ConfigurationException {
+ cadesInvoker = XMLSignatureVerificationInvoker.getInstance();
+ setUpContexts(RandomStringUtils.randomAlphabetic(10));
+
+ }
+
+ @Test
+ public void checkTslState() {
+ assertTrue("TSL not active", ServiceStatusContainer.getStatus());
+
+ final List<TSLProcessingResultElement> loadedTsl = ServiceStatusContainer.getTslDetailStatus();
+ assertFalse("no TSL loaded", loadedTsl.isEmpty());
+ assertEquals("wrong TSL size", 5, loadedTsl.size());
+
+ assertEquals("loaded TSL CC", "EU", loadedTsl.get(0).getCountryCode());
+ assertEquals("loaded TSL URL",
+ "https://esignature.ec.europa.eu/efda/validation-tests/testcase/tl/LOTL-2.xml",
+ loadedTsl.get(0).getTslURL());
+ assertTrue("loaded TSL processed", loadedTsl.get(0).isProcessed());
+ assertTrue("loaded TSL verified", loadedTsl.get(0).isVerified());
+
+ for (final TSLProcessingResultElement el : loadedTsl) {
+ assertTrue("TSL entry unknown", TSL_LOAD_STATUS.containsKey(el.getCountryCode()));
+ assertEquals("wrong statusCode", TSL_LOAD_STATUS.get(el.getCountryCode()), el.isProcessed());
+ assertEquals("wrong statusCode", TSL_LOAD_STATUS.get(el.getCountryCode()), el.isVerified());
+
+ }
+ }
+
+ @Test
+ public void euTestFile2_1_2() throws MOAException, IOException, ParserConfigurationException {
+ final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray(
+ "/testdata/xades/2.1.2-TEST FILE.xml"),
+ "OnlyTSL", true,
+ null,
+ DEFAULT_XPATH_SIGNATURE_LOCATION,
+ null, Collections.emptyMap());
+
+ // perform test
+ final VerifyXMLSignatureResponse result = cadesInvoker.verifyXMLSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+
+ assertEquals("sigCode", 0, result.getSignatureCheck().getCode());
+ assertEquals("certCode", 1, result.getCertificateCheck().getCode());
+
+ assertNotNull("signerInfo", result.getSignerInfo());
+ assertEquals("issuerCC", "FR", result.getSignerInfo().getIssuerCountryCode());
+ assertFalse("publicAuthority", result.getSignerInfo().isPublicAuthority());
+ assertFalse("QC", result.getSignerInfo().isQualifiedCertificate());
+ assertTrue("SSCD", result.getSignerInfo().isSSCD());
+ assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource());
+ assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource());
+
+ assertNull("TSL infos", result.getSignerInfo().getTslInfos());
+
+ assertNotNull("form val. result", result.getAdESFormResults());
+ assertNotNull("extended val. result", result.getExtendedCertificateCheck());
+ assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm());
+
+ }
+
+ @Test
+ public void euTestFile2_1_3() throws MOAException, IOException, ParserConfigurationException {
+ final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray(
+ "/testdata/xades/2.1.3-TEST FILE.xml"),
+ "OnlyTSL", true,
+ null,
+ DEFAULT_XPATH_SIGNATURE_LOCATION,
+ null, Collections.emptyMap());
+
+ // perform test
+ final VerifyXMLSignatureResponse result = cadesInvoker.verifyXMLSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+
+ assertEquals("sigCode", 0, result.getSignatureCheck().getCode());
+ assertEquals("certCode", 1, result.getCertificateCheck().getCode());
+
+ assertNotNull("signerInfo", result.getSignerInfo());
+ assertEquals("issuerCC", "BE", result.getSignerInfo().getIssuerCountryCode());
+ assertFalse("publicAuthority", result.getSignerInfo().isPublicAuthority());
+ assertTrue("QC", result.getSignerInfo().isQualifiedCertificate());
+ assertTrue("SSCD", result.getSignerInfo().isSSCD());
+ assertEquals("qcSource", "TSL", 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));
+
+ assertNotNull("form val. result", result.getAdESFormResults());
+ assertNotNull("extended val. result", result.getExtendedCertificateCheck());
+ assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm());
+
+ }
+
+ @Test
+ public void euTestFile2_1_1() throws MOAException, IOException, ParserConfigurationException {
+ final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray(
+ "/testdata/xades/2.1.1-TEST FILE.xml"),
+ "OnlyTSL", true,
+ null,
+ DEFAULT_XPATH_SIGNATURE_LOCATION,
+ null, Collections.emptyMap());
+
+ // perform test
+ final VerifyXMLSignatureResponse result = cadesInvoker.verifyXMLSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+
+ assertEquals("sigCode", 0, result.getSignatureCheck().getCode());
+ assertEquals("certCode", 1, result.getCertificateCheck().getCode());
+
+ assertNotNull("signerInfo", result.getSignerInfo());
+ assertEquals("issuerCC", "LU", result.getSignerInfo().getIssuerCountryCode());
+ assertFalse("publicAuthority", result.getSignerInfo().isPublicAuthority());
+ assertFalse("QC", result.getSignerInfo().isQualifiedCertificate());
+ assertTrue("SSCD", result.getSignerInfo().isSSCD());
+ assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource());
+ assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource());
+ assertNull("TSL infos", result.getSignerInfo().getTslInfos());
+
+ assertNotNull("form val. result", result.getAdESFormResults());
+ assertNotNull("extended val. result", result.getExtendedCertificateCheck());
+ assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm());
+
+ }
+
+}