diff options
Diffstat (limited to 'moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java')
-rw-r--r-- | moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java | 1860 |
1 files changed, 1860 insertions, 0 deletions
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 new file mode 100644 index 0000000..d6a1550 --- /dev/null +++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java @@ -0,0 +1,1860 @@ +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.Ignore; +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 XadesTslEuTestset03Test extends AbstractIntegrationTest { + + XMLSignatureVerificationInvoker xadesInvoker; + + public static final Map<String, Boolean> TSL_LOAD_STATUS; + + static { + final Map<String, Boolean> intMap = new HashMap<>(); + intMap.put("EU", true); + intMap.put("LU", true); + intMap.put("FR", true); + intMap.put("IT", true); + intMap.put("CZ", true); + intMap.put("BG", true); + intMap.put("UK", true); + 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_2.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 { + xadesInvoker = 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", 7, 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-3.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 euTestFile3_1_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/3.1.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + } + + @Test + public void euTestFile3_1_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/3.1.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "LU", result.getSignerInfo().getTslInfos().getTslIssuerCountry()); + assertEquals("TSL ServiceType", "http://uri.etsi.org/TrstSvc/Svctype/CA/PKC", + 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()); + + } + + // TODO: check if it should be trusted + @Ignore + @Test + public void euTestFile3_1_3() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/3.1.3-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + } + + // TODO: TSL contains multiple values --> should we throw an error in that case? + @Test + public void euTestFile3_3_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/3.3.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "LU", 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()); + + } + + // TODO: should be not QC??? + @Test + public void euTestFile4_1_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.1.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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 euTestFile4_1_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.1.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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/undersupervision", + result.getSignerInfo().getTslInfos().getServiceTypeStatus()); + assertTrue("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation() + .isEmpty()); + + assertNotNull("form val. result", result.getAdESFormResults()); + assertNotNull("extended val. result", result.getExtendedCertificateCheck()); + assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm()); + + } + + @Test + public void euTestFile4_1_3() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.1.3-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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/accredited", + result.getSignerInfo().getTslInfos().getServiceTypeStatus()); + assertTrue("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation() + .isEmpty()); + + assertNotNull("form val. result", result.getAdESFormResults()); + assertNotNull("extended val. result", result.getExtendedCertificateCheck()); + assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm()); + + } + + @Test + public void euTestFile4_1_4() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.1.4-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertFalse("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", "FR", 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/undersupervision", + result.getSignerInfo().getTslInfos().getServiceTypeStatus()); + assertTrue("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation() + .isEmpty()); + + assertNotNull("form val. result", result.getAdESFormResults()); + assertNotNull("extended val. result", result.getExtendedCertificateCheck()); + assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm()); + + } + + @Test + public void euTestFile3_2_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/3.2.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "LU", 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 euTestFile4_2_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.2.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertFalse("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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/ForeSeals", + 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 euTestFile4_2_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.2.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertFalse("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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/ForeSeals", + 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 euTestFile4_2_3() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.2.3-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertFalse("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", "FR", 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 euTestFile4_4_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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 euTestFile4_4_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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()); + + } + + // TODO: should be no-QC!!! + @Ignore + @Test + public void euTestFile4_4_3() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.3-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertFalse("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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/ForeSeals", + 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 euTestFile4_4_4() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.4-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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()); + + } + + // TODO: should not be QC + @Test + public void euTestFile4_4_5() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.5-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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 euTestFile4_4_6() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.6-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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 euTestFile4_4_7() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.7-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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 euTestFile4_4_8() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.8-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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()); + + } + + // TODO: should not be QC + @Test + public void euTestFile4_4_9() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.9-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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 euTestFile4_4_10() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.10-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_4_11() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.11-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertFalse("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 euTestFile4_4_12() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.12-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertFalse("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 euTestFile4_4_13() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.13-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertTrue("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_4_14() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.14-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertFalse("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", "FR", 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 euTestFile4_4_15() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.15-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertTrue("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("sscdSource", "TSL", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_4_16() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.16-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertFalse("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("sscdSource", "Certificate", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_4_17() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.17-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertTrue("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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()); + + } + +//TODO: should not be QC + @Test + public void euTestFile4_4_18() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.18-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertFalse("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", "FR", 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 euTestFile4_4_19() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.19-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertTrue("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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()); + + } + + // TODO: should not be QC + @Test + public void euTestFile4_4_20() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.20-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertFalse("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", "FR", 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()); + + } + + // TODO: should not be QC + @Test + public void euTestFile4_4_21() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.4.21-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + assertTrue("QC", result.getSignerInfo().isQualifiedCertificate()); + assertTrue("SSCD", result.getSignerInfo().isSSCD()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource()); + assertEquals("qcSource", "TSL", result.getSignerInfo().getSSCDSource()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_5_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.5.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_5_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.5.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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 euTestFile4_5_3() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.5.3-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "FR", 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()); + + } + + // TODO: maybe wrong result + @Test + public void euTestFile4_5_4() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/4.5.4-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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()); + 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", "FR", 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/undersupervision", + result.getSignerInfo().getTslInfos().getServiceTypeStatus()); + assertTrue("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation() + .isEmpty()); + + assertNotNull("form val. result", result.getAdESFormResults()); + assertNotNull("extended val. result", result.getExtendedCertificateCheck()); + assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm()); + + } + + @Test + public void euTestFile5_2_1() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/5.2.1-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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", "IT", 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", "IT", 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()); + + } + + // TODO: should be not QC + @Test + public void euTestFile5_2_2() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/5.2.2-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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", "IT", 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", "IT", 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 euTestFile5_2_3() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/5.2.3-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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", "IT", 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()); + + assertNotNull("TSL infos", result.getSignerInfo().getTslInfos()); + assertEquals("TSL CC", "IT", 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 euTestFile5_2_4() throws MOAException, IOException, ParserConfigurationException { + final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(IOUtils.resourceToByteArray( + "/testdata/xades/5.2.4-TEST FILE.xml"), + "OnlyTSL", true, + null, + DEFAULT_XPATH_SIGNATURE_LOCATION, + null, Collections.emptyMap()); + + // perform test + final VerifyXMLSignatureResponse result = xadesInvoker.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", "IT", 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", "IT", 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()); + + } + +} |