aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas <>2021-04-27 20:48:49 +0200
committerThomas <>2021-04-27 20:48:49 +0200
commit38c3a15d00414fb3967555481131e55e6a21fbd1 (patch)
tree76db3b61d459cd3a9b105f6712283b1386de64d9
parent45860b07b44777b1ed2c9e76165da20f2655f92d (diff)
downloadmoa-sig-38c3a15d00414fb3967555481131e55e6a21fbd1.tar.gz
moa-sig-38c3a15d00414fb3967555481131e55e6a21fbd1.tar.bz2
moa-sig-38c3a15d00414fb3967555481131e55e6a21fbd1.zip
fix bug in ConfigurationProvider the ignore keyGroups for MOA-SS
add jUnit tests to test signature-creation
-rw-r--r--README.md4
-rw-r--r--moaSig/build.gradle4
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java2
-rw-r--r--moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java122
-rw-r--r--moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java91
-rw-r--r--moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java35
-rw-r--r--moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java9
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/MOASPSSConfiguration.xml34
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/certstore/subjectdn/09EC246B13947F627EF592995FC0E63691D5333C/B8AD35FEBC854E2FFFF5EA23AF7372B9341D4039bin0 -> 789 bytes
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.crt19
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.p12bin0 -> 2546 bytes
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/profiles/MOA-SPSS_signing.crt19
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/trustProfiles/jUnitSigning/junit_signing.crt19
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_2_1.crt3
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_3_1.crt3
-rw-r--r--moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/tsl_cert_20210427_2.crt3
-rw-r--r--moaSig/moa-sig/src/test/resources/testdata/cades/createCades_1.xml15
-rw-r--r--moaSig/moa-sig/src/test/resources/testdata/cades/createCades_2.xml15
-rw-r--r--moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_1.xml286
-rw-r--r--moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_2.xml62
20 files changed, 713 insertions, 32 deletions
diff --git a/README.md b/README.md
index eec4db2..12a43aa 100644
--- a/README.md
+++ b/README.md
@@ -72,8 +72,8 @@ where
- Mindestanforderung für JAVA 8
- Anpassungen an der TSL Implementierung
- - Updates von Bibliotheken zur Stabilitätsverbesserung
- - TrustStore Update in der Beispielkonfiguration
+- Updates von Bibliotheken zur Stabilitätsverbesserung
+- TrustStore Update in der Beispielkonfiguration
**v3.1.3**
diff --git a/moaSig/build.gradle b/moaSig/build.gradle
index bff3147..1cc1551 100644
--- a/moaSig/build.gradle
+++ b/moaSig/build.gradle
@@ -37,7 +37,7 @@ subprojects {
testImplementation 'junit:junit:4.13.2'
}
- version = '3.1.4-RC2'
+ version = '3.1.4-RC3'
jar { manifest.attributes provider: 'EGIZ', 'Specification-Version': getCheckedOutGitCommitHash(), 'Implementation-Version': project.version }
@@ -94,7 +94,7 @@ subprojects {
authentication(userName: System.getenv("EGIZ_MAVEN_USER"), password: System.getenv("EGIZ_MAVEN_PASSWORD"))
}
- snapshotRepository(url: "sftp://apps.egiz.gv.at/maven-snaphot") {
+ snapshotRepository(url: "sftp://apps.egiz.gv.at/maven-snapshot") {
authentication(userName: System.getenv("EGIZ_MAVEN_USER"), password: System.getenv("EGIZ_MAVEN_PASSWORD"))
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java
index bffa489..64bd066 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java
@@ -375,7 +375,7 @@ public class ConfigurationProvider {
allKeyModules = new ArrayList(hardwareKeyModules);
allKeyModules.addAll(softwareKeyModules);
keyGroups = builder.buildKeyGroups(allKeyModules);
- builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL);
+ keyGroupMappings = builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL);
this.connectionTimeout = builder.getConnectionTimeout();
Logger.debug("Set 'Connection-Timeout' to " + String.valueOf(this.connectionTimeout) + "[ms]");
diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java
index abdab26..fb1cc05 100644
--- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java
+++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/CadesIntegrationTest.java
@@ -9,6 +9,10 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.RandomStringUtils;
@@ -18,24 +22,35 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
import at.gv.egovernment.moa.spss.MOAException;
+import at.gv.egovernment.moa.spss.api.SPSSFactory;
+import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
+import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest;
+import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
+import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement;
+import at.gv.egovernment.moa.spss.api.xmlbind.CreateCMSSignatureRequestParser;
import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.init.SystemInitializer;
+import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;
import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
+import at.gv.egovernment.moaspss.util.DOMUtils;
import iaik.pki.Configurator;
import iaik.pki.PKIFactory;
@RunWith(BlockJUnit4ClassRunner.class)
public class CadesIntegrationTest extends AbstractIntegrationTest {
- CMSSignatureVerificationInvoker cadesInvoker;
+ CMSSignatureVerificationInvoker verifyCadesInvoker;
+ private CMSSignatureCreationInvoker signCadesInvoker;
@BeforeClass
public static void classInitializer() throws IOException, ConfigurationException,
@@ -74,7 +89,9 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
@Before
public void initializer() throws ConfigurationException {
- cadesInvoker = CMSSignatureVerificationInvoker.getInstance();
+ verifyCadesInvoker = CMSSignatureVerificationInvoker.getInstance();
+ signCadesInvoker = CMSSignatureCreationInvoker.getInstance();
+
setUpContexts(RandomStringUtils.randomAlphabetic(10));
}
@@ -89,7 +106,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
false);
// perform test
- final MOAException error = assertThrows(MOAException.class, () -> cadesInvoker.verifyCMSSignature(
+ final MOAException error = assertThrows(MOAException.class, () -> verifyCadesInvoker.verifyCMSSignature(
request));
assertEquals("wrong errorCode", "2203", error.getMessageId());
@@ -105,7 +122,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
false);
// perform test
- final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request);
+ final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request);
// verify result
assertNotNull("verification result", result);
@@ -140,7 +157,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
true);
// perform test
- final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request);
+ final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request);
// verify result
assertNotNull("verification result", result);
@@ -190,7 +207,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
false);
// perform test
- final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request);
+ final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request);
// verify result
assertNotNull("verification result", result);
@@ -225,7 +242,7 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
true);
// perform test
- final VerifyCMSSignatureResponse result = cadesInvoker.verifyCMSSignature(request);
+ final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request);
// verify result
assertNotNull("verification result", result);
@@ -260,4 +277,95 @@ public class CadesIntegrationTest extends AbstractIntegrationTest {
}
+ @Test
+ public void simpleCmsCreation() throws MOAException, ParserConfigurationException, SAXException, IOException {
+ // build request
+ Element cadesReqXml = DOMUtils.parseXmlNonValidating(
+ CadesIntegrationTest.class.getResourceAsStream("/testdata/cades/createCades_1.xml"));
+ CreateCMSSignatureRequest cadesReq = new CreateCMSSignatureRequestParser().parse(cadesReqXml);
+
+
+ // perform test
+ CreateCMSSignatureResponse cadesResp = signCadesInvoker.createCMSSignature(cadesReq, null);
+
+
+ // validate response
+ assertNotNull("cadesResp", cadesResp);
+ assertNotNull("cadesResp elements", cadesResp.getResponseElements());
+ assertFalse("cadesResp elements", cadesResp.getResponseElements().isEmpty());
+
+ CMSSignatureResponse cades = (CMSSignatureResponse) cadesResp.getResponseElements().get(0);
+ assertNotNull("cades Sig.", cades.getCMSSignature());
+
+ // signature
+ final VerifyCMSSignatureRequest request = buildVerfifyCmsRequest(
+ org.apache.commons.codec.binary.Base64.decodeBase64(cades.getCMSSignature()),
+ "jUnitSigning",
+ false,
+ false);
+
+ // perform test
+ final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+ assertEquals("wrong result size", 1, result.getResponseElements().size());
+
+ final VerifyCMSSignatureResponseElement cmsResult = (VerifyCMSSignatureResponseElement) result
+ .getResponseElements().get(0);
+ assertEquals("sigCode", 0, cmsResult.getSignatureCheck().getCode());
+ assertEquals("certCode", 0, cmsResult.getCertificateCheck().getCode());
+
+
+ }
+
+ @Test
+ public void simpleCadesCreation() throws MOAException, ParserConfigurationException, SAXException, IOException {
+ // build request
+ Element cadesReqXml = DOMUtils.parseXmlNonValidating(
+ CadesIntegrationTest.class.getResourceAsStream("/testdata/cades/createCades_2.xml"));
+ CreateCMSSignatureRequest cadesReq = new CreateCMSSignatureRequestParser().parse(cadesReqXml);
+
+
+ // perform test
+ CreateCMSSignatureResponse cadesResp = signCadesInvoker.createCMSSignature(cadesReq, null);
+
+
+ // validate response
+ assertNotNull("cadesResp", cadesResp);
+ assertNotNull("cadesResp elements", cadesResp.getResponseElements());
+ assertFalse("cadesResp elements", cadesResp.getResponseElements().isEmpty());
+
+ CMSSignatureResponse cades = (CMSSignatureResponse) cadesResp.getResponseElements().get(0);
+ assertNotNull("cades Sig.", cades.getCMSSignature());
+
+ // signature
+ final VerifyCMSSignatureRequest request = buildVerfifyCmsRequest(
+ org.apache.commons.codec.binary.Base64.decodeBase64(cades.getCMSSignature()),
+ "jUnitSigning",
+ false,
+ true);
+
+ // perform test
+ final VerifyCMSSignatureResponse result = verifyCadesInvoker.verifyCMSSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+ assertEquals("wrong result size", 1, result.getResponseElements().size());
+
+ final VerifyCMSSignatureResponseElement cmsResult = (VerifyCMSSignatureResponseElement) result
+ .getResponseElements().get(0);
+ assertEquals("sigCode", 0, cmsResult.getSignatureCheck().getCode());
+ assertEquals("certCode", 0, cmsResult.getCertificateCheck().getCode());
+
+ assertNotNull("form val. result", cmsResult.getAdESFormResults());
+ assertEquals("form val. result size", 4, cmsResult.getAdESFormResults().size());
+ for (final Object el : cmsResult.getAdESFormResults()) {
+ final AdESFormResults test = (AdESFormResults) el;
+ assertEquals("Find wrong form val status", 1, test.getCode().longValue());
+
+ }
+
+ }
+
}
diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java
index cdbe5ab..ebbc334 100644
--- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java
+++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/XadesIntegrationTest.java
@@ -11,6 +11,7 @@ import java.io.IOException;
import java.util.Collections;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.RandomStringUtils;
@@ -19,21 +20,30 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.api.common.InputData;
+import at.gv.egovernment.moa.spss.api.xmlbind.CreateXMLSignatureRequestParser;
+import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest;
+import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
+import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;
import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
import at.gv.egovernment.moa.spss.server.init.SystemInitializer;
+import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
+import at.gv.egovernment.moaspss.util.DOMUtils;
@RunWith(BlockJUnit4ClassRunner.class)
public class XadesIntegrationTest extends AbstractIntegrationTest {
- XMLSignatureVerificationInvoker xadesInvoker;
+ XMLSignatureVerificationInvoker xadesVerifyInvoker;
+ XMLSignatureCreationInvoker xadesSignInvoker;
@BeforeClass
public static void classInitializer() throws IOException, ConfigurationException,
@@ -49,7 +59,8 @@ public class XadesIntegrationTest extends AbstractIntegrationTest {
@Before
public void initializer() throws ConfigurationException {
- xadesInvoker = XMLSignatureVerificationInvoker.getInstance();
+ xadesVerifyInvoker = XMLSignatureVerificationInvoker.getInstance();
+ xadesSignInvoker = XMLSignatureCreationInvoker.getInstance();
setUpContexts(RandomStringUtils.randomAlphabetic(10));
}
@@ -66,7 +77,7 @@ public class XadesIntegrationTest extends AbstractIntegrationTest {
null, Collections.emptyMap());
// perform test
- final MOAException error = assertThrows(MOAException.class, () -> xadesInvoker.verifyXMLSignature(
+ final MOAException error = assertThrows(MOAException.class, () -> xadesVerifyInvoker.verifyXMLSignature(
request));
assertEquals("wrong errorCode", "2203", error.getMessageId());
@@ -83,7 +94,7 @@ public class XadesIntegrationTest extends AbstractIntegrationTest {
null, Collections.emptyMap());
// perform test
- final VerifyXMLSignatureResponse result = xadesInvoker.verifyXMLSignature(request);
+ final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request);
// verify result
assertNotNull("verification result", result);
@@ -116,7 +127,7 @@ public class XadesIntegrationTest extends AbstractIntegrationTest {
null, Collections.emptyMap());
// perform test
- final VerifyXMLSignatureResponse result = xadesInvoker.verifyXMLSignature(request);
+ final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request);
// verify result
assertNotNull("verification result", result);
@@ -155,5 +166,75 @@ public class XadesIntegrationTest extends AbstractIntegrationTest {
assertEquals("used sig alg", "SHA256withRSA", result.getSignatureAlgorithm());
}
+
+ @Test
+ public void simpleXmlSignature() throws MOAException, ParserConfigurationException, SAXException, IOException, TransformerException {
+ // build request
+ Element xml = DOMUtils.parseXmlNonValidating(
+ CadesIntegrationTest.class.getResourceAsStream("/testdata/xades/sign/createXades_1.xml"));
+ CreateXMLSignatureRequest xmlReq = new CreateXMLSignatureRequestParser().parse(xml);
+
+ // create signature
+ CreateXMLSignatureResponse xmlResp = xadesSignInvoker.createXMLSignature(xmlReq, Collections.EMPTY_SET);
+
+
+ // verify response
+ assertNotNull("xadesResp", xmlResp);
+ assertNotNull("xadesResp elements", xmlResp.getResponseElements());
+ assertFalse("xadesResp elements", xmlResp.getResponseElements().isEmpty());
+
+ SignatureEnvironmentResponse signedXml = (SignatureEnvironmentResponse) xmlResp.getResponseElements().get(0);
+ assertNotNull("signed xml", signedXml.getSignatureEnvironment());
+
+
+ // verify signature
+ final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(
+ DOMUtils.serializeNode(signedXml.getSignatureEnvironment()).getBytes(),
+ "jUnitSigning", false, null, DEFAULT_XPATH_SIGNATURE_LOCATION, null, Collections.emptyMap());
+
+ // perform test
+ final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+ assertEquals("sigCode", 0, result.getSignatureCheck().getCode());
+ assertEquals("certCode", 0, result.getCertificateCheck().getCode());
+
+ }
+ @Test
+ public void simpleXadesSignature() throws MOAException, ParserConfigurationException, SAXException, IOException, TransformerException {
+ // build request
+ Element xml = DOMUtils.parseXmlNonValidating(
+ CadesIntegrationTest.class.getResourceAsStream("/testdata/xades/sign/createXades_2.xml"));
+ CreateXMLSignatureRequest xmlReq = new CreateXMLSignatureRequestParser().parse(xml);
+
+ // create signature
+ CreateXMLSignatureResponse xmlResp = xadesSignInvoker.createXMLSignature(xmlReq, Collections.EMPTY_SET);
+
+
+ // verify response
+ assertNotNull("xadesResp", xmlResp);
+ assertNotNull("xadesResp elements", xmlResp.getResponseElements());
+ assertFalse("xadesResp elements", xmlResp.getResponseElements().isEmpty());
+
+ SignatureEnvironmentResponse signedXml = (SignatureEnvironmentResponse) xmlResp.getResponseElements().get(0);
+ assertNotNull("signed xml", signedXml.getSignatureEnvironment());
+
+
+ // verify signature
+ final VerifyXMLSignatureRequest request = buildVerifyXmlRequest(
+ DOMUtils.serializeNode(signedXml.getSignatureEnvironment()).getBytes(),
+ "jUnitSigning", false, null, DEFAULT_XPATH_SIGNATURE_LOCATION, null, Collections.emptyMap());
+
+ // perform test
+ final VerifyXMLSignatureResponse result = xadesVerifyInvoker.verifyXMLSignature(request);
+
+ // verify result
+ assertNotNull("verification result", result);
+ assertEquals("sigCode", 0, result.getSignatureCheck().getCode());
+ assertEquals("certCode", 0, result.getCertificateCheck().getCode());
+
+ }
+
}
diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java
index 698eb2f..f43ebf8 100644
--- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java
+++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset02Test.java
@@ -31,7 +31,12 @@ import at.gv.egovernment.moa.spss.server.init.SystemInitializer;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
import at.gv.egovernment.moa.spss.test.integration.AbstractIntegrationTest;
-
+/**
+ * https://esignature.ec.europa.eu/efda/validation-tests/#/screen/home
+ *
+ * @author tlenz
+ *
+ */
@RunWith(BlockJUnit4ClassRunner.class)
public class XadesTslEuTestset02Test extends AbstractIntegrationTest {
@@ -149,22 +154,24 @@ public class XadesTslEuTestset02Test extends AbstractIntegrationTest {
assertNotNull("signerInfo", result.getSignerInfo());
assertEquals("issuerCC", "BE", result.getSignerInfo().getIssuerCountryCode());
assertFalse("publicAuthority", result.getSignerInfo().isPublicAuthority());
- assertTrue("QC", result.getSignerInfo().isQualifiedCertificate());
+
+ //because this signature is not on TSL any more --> EC changes the test setup!!!
+ assertFalse("QC", result.getSignerInfo().isQualifiedCertificate());
assertTrue("SSCD", result.getSignerInfo().isSSCD());
- assertEquals("qcSource", "TSL", result.getSignerInfo().getQCSource());
+ assertEquals("qcSource", "Certificate", result.getSignerInfo().getQCSource());
assertEquals("qcSource", "Certificate", result.getSignerInfo().getSSCDSource());
- assertNotNull("TSL infos", result.getSignerInfo().getTslInfos());
- assertEquals("TSL CC", "BE", result.getSignerInfo().getTslInfos().getTslIssuerCountry());
- assertEquals("TSL ServiceType", "http://uri.etsi.org/TrstSvc/Svctype/CA/QC",
- result.getSignerInfo().getTslInfos().getServiceTypeIdentifier());
- assertEquals("TSL ServiceStatus", "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted",
- result.getSignerInfo().getTslInfos().getServiceTypeStatus());
- assertFalse("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation()
- .isEmpty());
- assertEquals("TSL addit. status value",
- "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures",
- result.getSignerInfo().getTslInfos().getAdditionalServiceInformation().get(0));
+ assertNull("TSL infos", result.getSignerInfo().getTslInfos());
+ //assertEquals("TSL CC", "BE", result.getSignerInfo().getTslInfos().getTslIssuerCountry());
+ //assertEquals("TSL ServiceType", "http://uri.etsi.org/TrstSvc/Svctype/CA/QC",
+ // result.getSignerInfo().getTslInfos().getServiceTypeIdentifier());
+ //assertEquals("TSL ServiceStatus", "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted",
+ // result.getSignerInfo().getTslInfos().getServiceTypeStatus());
+ //assertFalse("TSL addit. status", result.getSignerInfo().getTslInfos().getAdditionalServiceInformation()
+ // .isEmpty());
+ //assertEquals("TSL addit. status value",
+ // "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures",
+ // result.getSignerInfo().getTslInfos().getAdditionalServiceInformation().get(0));
assertNotNull("form val. result", result.getAdESFormResults());
assertNotNull("extended val. result", result.getExtendedCertificateCheck());
diff --git a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java
index d6a1550..813e1df 100644
--- a/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java
+++ b/moaSig/moa-sig/src/test/java/at/gv/egovernment/moa/spss/test/integration/tsl/XadesTslEuTestset03Test.java
@@ -33,7 +33,16 @@ import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
import at.gv.egovernment.moa.spss.test.integration.AbstractIntegrationTest;
+/**
+ * EC changed the Test SET and TSL information!!!!!
+ *
+ * <b>We have to switch to a static version</b>
+ *
+ * @author tlenz
+ *
+ */
@RunWith(BlockJUnit4ClassRunner.class)
+@Ignore
public class XadesTslEuTestset03Test extends AbstractIntegrationTest {
XMLSignatureVerificationInvoker xadesInvoker;
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/MOASPSSConfiguration.xml b/moaSig/moa-sig/src/test/resources/moaspss_config/MOASPSSConfiguration.xml
index aa9368e..44a04fa 100644
--- a/moaSig/moa-sig/src/test/resources/moaspss_config/MOASPSSConfiguration.xml
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/MOASPSSConfiguration.xml
@@ -7,7 +7,35 @@
<cfg:IP>192.168</cfg:IP>
</cfg:BlackListUri>
</cfg:PermitExternalUris>
- </cfg:Common>
+ </cfg:Common>
+
+ <cfg:SignatureCreation>
+ <cfg:KeyModules>
+ <cfg:SoftwareKeyModule>
+ <cfg:Id>SKM_junit</cfg:Id>
+ <cfg:FileName>keys/junit_signing.p12</cfg:FileName>
+ <cfg:Password>nichts</cfg:Password>
+ </cfg:SoftwareKeyModule>
+ </cfg:KeyModules>
+ <cfg:KeyGroup>
+ <cfg:Id>KG_junit</cfg:Id>
+ <cfg:Key>
+ <cfg:KeyModuleId>SKM_junit</cfg:KeyModuleId>
+ <cfg:KeyCertIssuerSerial>
+ <dsig:X509IssuerName>CN=MOA-SPSS signing,OU=jUnit Tests,O=EGIZ,C=AT</dsig:X509IssuerName>
+ <dsig:X509SerialNumber>1619541256</dsig:X509SerialNumber>
+ </cfg:KeyCertIssuerSerial>
+ </cfg:Key>
+ </cfg:KeyGroup>
+ <cfg:KeyGroupMapping>
+ <cfg:KeyGroupId>KG_junit</cfg:KeyGroupId>
+ </cfg:KeyGroupMapping>
+ <cfg:XMLDSig>
+ <cfg:CanonicalizationAlgorithm>http://www.w3.org/2001/10/xml-exc-c14n#</cfg:CanonicalizationAlgorithm>
+ <cfg:DigestMethodAlgorithm>http://www.w3.org/2000/09/xmldsig#sha256</cfg:DigestMethodAlgorithm>
+ </cfg:XMLDSig>
+ </cfg:SignatureCreation>
+
<cfg:SignatureVerification>
<cfg:CertificateValidation>
<cfg:PathConstruction>
@@ -45,6 +73,10 @@
<cfg:Id>MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten</cfg:Id>
<cfg:TrustAnchorsLocation>trustProfiles/MOAIDBuergerkarteAuthentisierungsDatenMitTestkarten</cfg:TrustAnchorsLocation>
</cfg:TrustProfile>
+ <cfg:TrustProfile>
+ <cfg:Id>jUnitSigning</cfg:Id>
+ <cfg:TrustAnchorsLocation>trustProfiles/jUnitSigning</cfg:TrustAnchorsLocation>
+ </cfg:TrustProfile>
</cfg:PathValidation>
<cfg:RevocationChecking>
<cfg:EnableChecking>false</cfg:EnableChecking>
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/certstore/subjectdn/09EC246B13947F627EF592995FC0E63691D5333C/B8AD35FEBC854E2FFFF5EA23AF7372B9341D4039 b/moaSig/moa-sig/src/test/resources/moaspss_config/certstore/subjectdn/09EC246B13947F627EF592995FC0E63691D5333C/B8AD35FEBC854E2FFFF5EA23AF7372B9341D4039
new file mode 100644
index 0000000..dc94677
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/certstore/subjectdn/09EC246B13947F627EF592995FC0E63691D5333C/B8AD35FEBC854E2FFFF5EA23AF7372B9341D4039
Binary files differ
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.crt b/moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.crt
new file mode 100644
index 0000000..fcc10a6
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDETCCAfkCBGCIPQgwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQxDTAL
+BgNVBAoMBEVHSVoxFDASBgNVBAsMC2pVbml0IFRlc3RzMRkwFwYDVQQDDBBNT0Et
+U1BTUyBzaWduaW5nMB4XDTIxMDQyNzE2MzQxNloXDTQ4MDkxMTE2MzQxNlowTTEL
+MAkGA1UEBhMCQVQxDTALBgNVBAoMBEVHSVoxFDASBgNVBAsMC2pVbml0IFRlc3Rz
+MRkwFwYDVQQDDBBNT0EtU1BTUyBzaWduaW5nMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAr8tSafwFaLIOC0lzkN5Ymkuq9AXM3S7eBcO4i6U/QEPiTf5l
+m+INTIsLqzFwXrkeJgHTR0CbdMkp/CFKjYbLnyc17jq9gGiFNvWYTIon17Tmy+ri
+W8/8mWAADvBe4dyjelSQW0MBOV4pzeFWc5NlDyW2Jp1J77PYPb7muPY2RmS/38WD
+ttRkz1nXOnibray2ZKz26hqnW1T3Om1s30EOB2+xMGhhBgdQ9+PdBn61HlP4UwN1
+RRWnLRaNkFTEnTK+YQEQF1LlGhriwCdfdGu65XTBWdGpXZoR9pjEGYzkF/UrYBAz
+r0QSeXCM076uWT8/mJZOpxuBVBUukTZhQuf5uwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAHBLlRY4dpmr8Pwp8rst0mzmRhIvm3MV2+D4K6ekLwDi/y1bMzSfyTXfLT
+wLOCScYvwBfF1Fng5WylGbE69si1G7baq+VAbglTXyP5Hs/eLt9boGWAiFUz49o/
+2O4f89BWFY18zRg5ptDl5KNbcW9L0kOmHGsVwqJcKAT+6c3J15NV1IiUf3voE9LV
+D4ita8he8/emHPRJxILVRNi6imx6O5cKGy+Sar2gK25Wc20oRAnSX/w9bpnQpJyh
+Gp41K5taSZkPsm0wWBmvnJhA0TKA5ODeoqQD+eeQWC+I52dfAqEiwT76gWBSnhp1
+9yfgJqYU0ylD4DRlJ9S5krMhqbMl
+-----END CERTIFICATE-----
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.p12 b/moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.p12
new file mode 100644
index 0000000..93c67e7
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/keys/junit_signing.p12
Binary files differ
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/profiles/MOA-SPSS_signing.crt b/moaSig/moa-sig/src/test/resources/moaspss_config/profiles/MOA-SPSS_signing.crt
new file mode 100644
index 0000000..fcc10a6
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/profiles/MOA-SPSS_signing.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDETCCAfkCBGCIPQgwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQxDTAL
+BgNVBAoMBEVHSVoxFDASBgNVBAsMC2pVbml0IFRlc3RzMRkwFwYDVQQDDBBNT0Et
+U1BTUyBzaWduaW5nMB4XDTIxMDQyNzE2MzQxNloXDTQ4MDkxMTE2MzQxNlowTTEL
+MAkGA1UEBhMCQVQxDTALBgNVBAoMBEVHSVoxFDASBgNVBAsMC2pVbml0IFRlc3Rz
+MRkwFwYDVQQDDBBNT0EtU1BTUyBzaWduaW5nMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAr8tSafwFaLIOC0lzkN5Ymkuq9AXM3S7eBcO4i6U/QEPiTf5l
+m+INTIsLqzFwXrkeJgHTR0CbdMkp/CFKjYbLnyc17jq9gGiFNvWYTIon17Tmy+ri
+W8/8mWAADvBe4dyjelSQW0MBOV4pzeFWc5NlDyW2Jp1J77PYPb7muPY2RmS/38WD
+ttRkz1nXOnibray2ZKz26hqnW1T3Om1s30EOB2+xMGhhBgdQ9+PdBn61HlP4UwN1
+RRWnLRaNkFTEnTK+YQEQF1LlGhriwCdfdGu65XTBWdGpXZoR9pjEGYzkF/UrYBAz
+r0QSeXCM076uWT8/mJZOpxuBVBUukTZhQuf5uwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAHBLlRY4dpmr8Pwp8rst0mzmRhIvm3MV2+D4K6ekLwDi/y1bMzSfyTXfLT
+wLOCScYvwBfF1Fng5WylGbE69si1G7baq+VAbglTXyP5Hs/eLt9boGWAiFUz49o/
+2O4f89BWFY18zRg5ptDl5KNbcW9L0kOmHGsVwqJcKAT+6c3J15NV1IiUf3voE9LV
+D4ita8he8/emHPRJxILVRNi6imx6O5cKGy+Sar2gK25Wc20oRAnSX/w9bpnQpJyh
+Gp41K5taSZkPsm0wWBmvnJhA0TKA5ODeoqQD+eeQWC+I52dfAqEiwT76gWBSnhp1
+9yfgJqYU0ylD4DRlJ9S5krMhqbMl
+-----END CERTIFICATE-----
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/trustProfiles/jUnitSigning/junit_signing.crt b/moaSig/moa-sig/src/test/resources/moaspss_config/trustProfiles/jUnitSigning/junit_signing.crt
new file mode 100644
index 0000000..fcc10a6
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/trustProfiles/jUnitSigning/junit_signing.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDETCCAfkCBGCIPQgwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQxDTAL
+BgNVBAoMBEVHSVoxFDASBgNVBAsMC2pVbml0IFRlc3RzMRkwFwYDVQQDDBBNT0Et
+U1BTUyBzaWduaW5nMB4XDTIxMDQyNzE2MzQxNloXDTQ4MDkxMTE2MzQxNlowTTEL
+MAkGA1UEBhMCQVQxDTALBgNVBAoMBEVHSVoxFDASBgNVBAsMC2pVbml0IFRlc3Rz
+MRkwFwYDVQQDDBBNT0EtU1BTUyBzaWduaW5nMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAr8tSafwFaLIOC0lzkN5Ymkuq9AXM3S7eBcO4i6U/QEPiTf5l
+m+INTIsLqzFwXrkeJgHTR0CbdMkp/CFKjYbLnyc17jq9gGiFNvWYTIon17Tmy+ri
+W8/8mWAADvBe4dyjelSQW0MBOV4pzeFWc5NlDyW2Jp1J77PYPb7muPY2RmS/38WD
+ttRkz1nXOnibray2ZKz26hqnW1T3Om1s30EOB2+xMGhhBgdQ9+PdBn61HlP4UwN1
+RRWnLRaNkFTEnTK+YQEQF1LlGhriwCdfdGu65XTBWdGpXZoR9pjEGYzkF/UrYBAz
+r0QSeXCM076uWT8/mJZOpxuBVBUukTZhQuf5uwIDAQABMA0GCSqGSIb3DQEBCwUA
+A4IBAQAHBLlRY4dpmr8Pwp8rst0mzmRhIvm3MV2+D4K6ekLwDi/y1bMzSfyTXfLT
+wLOCScYvwBfF1Fng5WylGbE69si1G7baq+VAbglTXyP5Hs/eLt9boGWAiFUz49o/
+2O4f89BWFY18zRg5ptDl5KNbcW9L0kOmHGsVwqJcKAT+6c3J15NV1IiUf3voE9LV
+D4ita8he8/emHPRJxILVRNi6imx6O5cKGy+Sar2gK25Wc20oRAnSX/w9bpnQpJyh
+Gp41K5taSZkPsm0wWBmvnJhA0TKA5ODeoqQD+eeQWC+I52dfAqEiwT76gWBSnhp1
+9yfgJqYU0ylD4DRlJ9S5krMhqbMl
+-----END CERTIFICATE-----
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_2_1.crt b/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_2_1.crt
new file mode 100644
index 0000000..5734a7f
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_2_1.crt
@@ -0,0 +1,3 @@
+-----BEGIN CERTIFICATE-----
+MIIDRjCCAi6gAwIBAgIBATANBgkqhkiG9w0BAQ0FADBVMRQwEgYDVQQDDAtDRVJULUxPVEwtMjEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMRYwFAYDVQQLDA1DRVJUIEZPUiBURVNUMQswCQYDVQQGEwJMVTAeFw0yMDA0MjQyMzAwMDZaFw0yMjA0MjQyMzAwMDZaMFUxFDASBgNVBAMMC0NFUlQtTE9UTC0yMRgwFgYDVQQKDA9FVSBPcmdhbml6YXRpb24xFjAUBgNVBAsMDUNFUlQgRk9SIFRFU1QxCzAJBgNVBAYTAkxVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwmTKwpsl/UtiYo3mWUIiKn40QIJ6wv5wM9hty734M+ZZWxEIOKlMiIUo2nzWzMAJg4voCGScq+B5Cgtq+8M1QgLjeCnbUbCJtBgV9uAyn41zG66VhtxVVab8pAFBG3sRVphggWYZ/Y2j7AfpaVQDa14bFa9GfLze/yJnXJWHeabAZoLbKSIKiTRy/K9sw8DfBLFY0cjg3yHJktiw6KdkVd4tbfcNGKzL9UkHEwAfWpi41dKzmhBg3iyHkpmgeJSFK3zR4NCm0vIrDroiOwjQRuQLqKNk7cT6wJ5R6TJU0Pbd5MhWXwm40eGdFG8s0/VDuiUqRqCAZx/g0ZO3h6FIbQIDAQABoyEwHzAdBgNVHQ4EFgQUEZ9FMd7u5mrjSep0MuKiY4rSIxswDQYJKoZIhvcNAQENBQADggEBAE/nmC1Q6GG5B2k26SNtdqZbUnYV5iKeLzQXpt8TsloAA1e9jaRXEhlMSJWAL3HMU/KAvOu7xGAsF7mgb/yzdNZBL47RQ2OxzBINLbDEkQ66kVHZlgYKvEht8GfQfNRzC4c9drgUsL4jNSz6znAfCa5ZtdkxuvownboioJwJ1OK02hjiIn4m4bPNOboCWb7O7z3nFrMWO4viRNM/P3AMyzifOJSRduJWrRoVJ85zshpu3QinqUgyEVzhK7MNq5Ex5bTqCnWd7uiws2kq53hzQSZYCXy8S/86mw2q+ksCpEtbB+WY9lxRwcd//6bY0HxF7NSYCVh7epv6s4cpX5s1xTg=
+-----END CERTIFICATE-----
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_3_1.crt b/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_3_1.crt
new file mode 100644
index 0000000..9596869
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/EU_Test_TSL_3_1.crt
@@ -0,0 +1,3 @@
+-----BEGIN CERTIFICATE-----
+MIIDRjCCAi6gAwIBAgIBATANBgkqhkiG9w0BAQ0FADBVMRQwEgYDVQQDDAtDRVJULUxPVEwtMzEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMRYwFAYDVQQLDA1DRVJUIEZPUiBURVNUMQswCQYDVQQGEwJMVTAeFw0yMDA0MjQyMzAwMDBaFw0yMjA0MjQyMzAwMDBaMFUxFDASBgNVBAMMC0NFUlQtTE9UTC0zMRgwFgYDVQQKDA9FVSBPcmdhbml6YXRpb24xFjAUBgNVBAsMDUNFUlQgRk9SIFRFU1QxCzAJBgNVBAYTAkxVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtsnEky5JX96BZUuEO1121mPiY6aUyV/NL4TBEesupxzkXebi+mjmkK4ygqdMk/cqbJH6GaLLpFHdKfCGIdwTCEP3NWsnwKcRDE4rcMUDLNQcP60QbXkYWERnXVE/2mnlY0iGnfm+g9Euiq0vspaMr7uBiSWSelUMbGReO2sH2+0oaUgvC7F7A7OsmPpqBy94Y8+VhIuDnJY9I2ffqz3VA42R9mXHbjptXaf0AMGh0LR4Lhs83tjKtkpLvqvZxVwJnUzw/bHV5ZKzAsbGfq03Lx30dhET3OYcG7Bjv4w9lB/pvpomU2SpuItPVz+68rSCHi96a8/UvGWoukjGyNNwdwIDAQABoyEwHzAdBgNVHQ4EFgQUZEbJrRNBlBJ9/iv4OS0QenI8AvAwDQYJKoZIhvcNAQENBQADggEBAGhsZAK25NZ/EfFgjhiKxDpQ7Nbjr7f27F/Sww/W1Uxt/Ka1lvmFpn9GxndQiUAOE9aEH9XLFyPtTqKCZtecVFI9iD1+0dtrssnVwZiPl6CWSqBdm+YKbn5+3bdHYNnBuRog4B6Ca9RdW+ecB0CIFIRIom/3OwJHbQWa2zQTb3HoTOWmYlTirfqvzPzPaiqqP0E0rNESaCwVWRKDQ0V2j/259ot1+KCC5/LVJZxY5tnmMOyvgy9hsSmRetm27ofVcAiHmaybLlbn4knw71hzk8u1VPPUkf7tjWYR9H/LZkBFLRiQXcA5XkM9FV1zPYHh1BH8ILMg2OgrP6Ij2vBF8ZI=
+-----END CERTIFICATE-----
diff --git a/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/tsl_cert_20210427_2.crt b/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/tsl_cert_20210427_2.crt
new file mode 100644
index 0000000..24c6d73
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/moaspss_config/tslworking/trust/eu/tsl_cert_20210427_2.crt
@@ -0,0 +1,3 @@
+-----BEGIN CERTIFICATE-----
+MIIG7zCCBNegAwIBAgIQEAAAAAAAnuXHXttK9Tyf2zANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQGEwJCRTERMA8GA1UEBxMIQnJ1c3NlbHMxHDAaBgNVBAoTE0NlcnRpcG9zdCBOLlYuL1MuQS4xEzARBgNVBAMTCkNpdGl6ZW4gQ0ExDzANBgNVBAUTBjIwMTgwMzAeFw0xODA2MDEyMjA0MTlaFw0yODA1MzAyMzU5NTlaMHAxCzAJBgNVBAYTAkJFMSMwIQYDVQQDExpQYXRyaWNrIEtyZW1lciAoU2lnbmF0dXJlKTEPMA0GA1UEBBMGS3JlbWVyMRUwEwYDVQQqEwxQYXRyaWNrIEplYW4xFDASBgNVBAUTCzcyMDIwMzI5OTcwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr7g7VriDY4as3R4LPOg7uPH5inHzaVMOwFb/8YOW+9IVMHz/V5dJAzeTKvhLG5S4Pk6Kd2E+h18FlRonp70Gv2+ijtkPk7ZQkfez0ycuAbLXiNx2S7fc5GG9LGJafDJgBgTQuQm1aDVLDQ653mqR5tAO+gEf6vs4zRESL3MkYXAUq+S/WocEaGpIheNVAF3iPSkvEe3LvUjF/xXHWF4aMvqGK6kXGseaTcn9hgTbceuW2PAiEr+eDTNczkwGBDFXwzmnGFPMRez3ONk/jIKhha8TylDSfI/MX3ODt0dU3jvJEKPIfUJixBPehxMJMwWxTjFbNu/CK7tJ8qT2i1S4VQIDAQABo4ICjzCCAoswHwYDVR0jBBgwFoAU2TQhPjpCJW3hu7++R0z4Aq3jL1QwcwYIKwYBBQUHAQEEZzBlMDkGCCsGAQUFBzAChi1odHRwOi8vY2VydHMuZWlkLmJlbGdpdW0uYmUvY2l0aXplbjIwMTgwMy5jcnQwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmVpZC5iZWxnaXVtLmJlLzIwggEjBgNVHSAEggEaMIIBFjCCAQcGB2A4DAEBAgEwgfswLAYIKwYBBQUHAgEWIGh0dHA6Ly9yZXBvc2l0b3J5LmVpZC5iZWxnaXVtLmJlMIHKBggrBgEFBQcCAjCBvQyBukdlYnJ1aWsgb25kZXJ3b3JwZW4gYWFuIGFhbnNwcmFrZWxpamtoZWlkc2JlcGVya2luZ2VuLCB6aWUgQ1BTIC0gVXNhZ2Ugc291bWlzIMOgIGRlcyBsaW1pdGF0aW9ucyBkZSByZXNwb25zYWJpbGl0w6ksIHZvaXIgQ1BTIC0gVmVyd2VuZHVuZyB1bnRlcmxpZWd0IEhhZnR1bmdzYmVzY2hyw6Rua3VuZ2VuLCBnZW3DpHNzIENQUzAJBgcEAIvsQAECMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwuZWlkLmJlbGdpdW0uYmUvZWlkYzIwMTgwMy5jcmwwDgYDVR0PAQH/BAQDAgZAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMGwGCCsGAQUFBwEDBGAwXjAIBgYEAI5GAQEwCAYGBACORgEEMDMGBgQAjkYBBTApMCcWIWh0dHBzOi8vcmVwb3NpdG9yeS5laWQuYmVsZ2l1bS5iZRMCZW4wEwYGBACORgEGMAkGBwQAjkYBBgEwDQYJKoZIhvcNAQELBQADggIBACBY+OLhM7BryzXWklDUh9UK1+cDVboPg+lN1Et1lAEoxV4y9zuXUWLco9t8M5WfDcWFfDxyhatLedku2GurSJ1t8O/knDwLLyoJE1r2Db9VrdG+jtST+j/TmJHAX3yNWjn/9dsjiGQQuTJcce86rlzbGdUqjFTt5mGMm4zy4l/wKy6XiDKiZT8cFcOTevsl+l/vxiLiDnghOwTztVZhmWExeHG9ypqMFYmIucHQ0SFZre8mv3c7Df+VhqV/sY9xLERK3Ffk4l6B5qRPygImXqGzNSWiDISdYeUf4XoZLXJBEP7/36r4mlnP2NWQ+c1ORjesuDAZ8tD/yhMvR4DVG95EScjpTYv1wOmVB2lQrWnEtygZIi60HXfozo8uOekBnqWyDc1kuizZsYRfVNlwhCu7RsOq4zN8gkael0fejuSNtBf2J9A+rc9LQeu6AcdPauWmbxtJV93H46pFptsR8zXo+IJn5m2P9QPZ3mvDkzldNTGLG+ukhN7IF2CCcagt/WoVZLq3qKC35WVcqeoSMEE/XeSrf3/mIJ1OyFQm+tsfhTceOFDXuUgl3E86bR/f8Ur/bapwXpWpFxGIpXLGaJXbzQGSTtyNEYrdENlh71I3OeYdw3xmzU2B3tbaWREOXtj2xjyW2tIv+vvHG6sloR1QkIkGMFfzsT7W5U6ILetv
+-----END CERTIFICATE-----
diff --git a/moaSig/moa-sig/src/test/resources/testdata/cades/createCades_1.xml b/moaSig/moa-sig/src/test/resources/testdata/cades/createCades_1.xml
new file mode 100644
index 0000000..5fe8e43
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/testdata/cades/createCades_1.xml
@@ -0,0 +1,15 @@
+<ns:CreateCMSSignatureRequest xmlns:ns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <ns:KeyIdentifier>KG_junit</ns:KeyIdentifier>
+ <ns:SingleSignatureInfo SecurityLayerConformity="false" PAdESConformity="false">
+ <ns:DataObjectInfo Structure="enveloping">
+ <ns:DataObject>
+ <ns:MetaInfo>
+ <ns:MimeType>application/securitylayer2+json</ns:MimeType>
+ </ns:MetaInfo>
+ <ns:Content>
+ <ns:Base64Content>ew0KICAiYXBwSWQiOiAiaHR0cHM6Ly9kZW1vU1AiLA0KICAiZnJpZW5kbHlOYW1lIjogIkZpcnN0IERlbW8gU1AiLA0KICAiY291bnRyeUNvZGUiOiAiQVQiLA0KICAiYXV0aCI6IHsNCiAgICAicHJvY2Vzc0lkIjogImFhYmJjY2RkZWVmZjEyMzQiLA0KICAgICJ1cm46b2lkOjEuMi40MC4wLjEwLjIuMS4xLjI2MS45MCI6ICIxMWFhMjJiYjMzY2M0NGVlIg0KICB9LA0KICAiYXR0cmlidXRlcyI6IHsNCiAgICAidXJuOm9pZDoxLjIuNDAuMC4xMC4yLjEuMS4yNjEuMjAiOiAiTmFjaG5hbWUiLA0KICAgICJ1cm46b2lkOjIuNS40LjQyIjogIlZvcm5hbWUiLA0KICAgICJ1cm46b2lkOjEuMi40MC4wLjEwLjIuMS4xLjU1IjogIkdlYnVydHNkYXR1bSIsDQogICAgInVybjpvaWQ6MS4yLjQwLjAuMTAuMi4xLjEuMTQ5IjogIkJlcmVpY2hzc3BlemlmaXNjaGVzIFBlcnNvbmVua2VubnplaWNoZW4iDQogIH0sDQogICJjb25zdHJhaW5zIjogew0KICAgICJ2YWxpZEZyb20iOiAiMjAxOS0wNC0yOVQwODo1MDo1Ni40NTBaIiwNCiAgICAidmFsaWRUbyI6ICIyMDE5LTA0LTI5VDA5OjUwOjU2LjQ1MFoiDQogIH0sDQogICJ2aWV3Ijogew0KICAgICJ0ZW1wbGF0ZVVSSSI6ICJ3d3cuaGFuZHktc2lnbmF0dXIuYXQvc2VjdXJpdHlsYXllcjIvdGVtcGxhdGUvMjM3NCIsDQogICAgImhhc2hUZW1wbGF0ZSI6ICJBZDkxMmphaGdsYXNkPSINCiAgfQ0KfQ==</ns:Base64Content>
+ </ns:Content>
+ </ns:DataObject>
+ </ns:DataObjectInfo>
+ </ns:SingleSignatureInfo>
+ </ns:CreateCMSSignatureRequest>
diff --git a/moaSig/moa-sig/src/test/resources/testdata/cades/createCades_2.xml b/moaSig/moa-sig/src/test/resources/testdata/cades/createCades_2.xml
new file mode 100644
index 0000000..c9d3e60
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/testdata/cades/createCades_2.xml
@@ -0,0 +1,15 @@
+<ns:CreateCMSSignatureRequest xmlns:ns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <ns:KeyIdentifier>KG_junit</ns:KeyIdentifier>
+ <ns:SingleSignatureInfo SecurityLayerConformity="true" PAdESConformity="false">
+ <ns:DataObjectInfo Structure="enveloping">
+ <ns:DataObject>
+ <ns:MetaInfo>
+ <ns:MimeType>application/securitylayer2+json</ns:MimeType>
+ </ns:MetaInfo>
+ <ns:Content>
+ <ns:Base64Content>ew0KICAiYXBwSWQiOiAiaHR0cHM6Ly9kZW1vU1AiLA0KICAiZnJpZW5kbHlOYW1lIjogIkZpcnN0IERlbW8gU1AiLA0KICAiY291bnRyeUNvZGUiOiAiQVQiLA0KICAiYXV0aCI6IHsNCiAgICAicHJvY2Vzc0lkIjogImFhYmJjY2RkZWVmZjEyMzQiLA0KICAgICJ1cm46b2lkOjEuMi40MC4wLjEwLjIuMS4xLjI2MS45MCI6ICIxMWFhMjJiYjMzY2M0NGVlIg0KICB9LA0KICAiYXR0cmlidXRlcyI6IHsNCiAgICAidXJuOm9pZDoxLjIuNDAuMC4xMC4yLjEuMS4yNjEuMjAiOiAiTmFjaG5hbWUiLA0KICAgICJ1cm46b2lkOjIuNS40LjQyIjogIlZvcm5hbWUiLA0KICAgICJ1cm46b2lkOjEuMi40MC4wLjEwLjIuMS4xLjU1IjogIkdlYnVydHNkYXR1bSIsDQogICAgInVybjpvaWQ6MS4yLjQwLjAuMTAuMi4xLjEuMTQ5IjogIkJlcmVpY2hzc3BlemlmaXNjaGVzIFBlcnNvbmVua2VubnplaWNoZW4iDQogIH0sDQogICJjb25zdHJhaW5zIjogew0KICAgICJ2YWxpZEZyb20iOiAiMjAxOS0wNC0yOVQwODo1MDo1Ni40NTBaIiwNCiAgICAidmFsaWRUbyI6ICIyMDE5LTA0LTI5VDA5OjUwOjU2LjQ1MFoiDQogIH0sDQogICJ2aWV3Ijogew0KICAgICJ0ZW1wbGF0ZVVSSSI6ICJ3d3cuaGFuZHktc2lnbmF0dXIuYXQvc2VjdXJpdHlsYXllcjIvdGVtcGxhdGUvMjM3NCIsDQogICAgImhhc2hUZW1wbGF0ZSI6ICJBZDkxMmphaGdsYXNkPSINCiAgfQ0KfQ==</ns:Base64Content>
+ </ns:Content>
+ </ns:DataObject>
+ </ns:DataObjectInfo>
+ </ns:SingleSignatureInfo>
+ </ns:CreateCMSSignatureRequest>
diff --git a/moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_1.xml b/moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_1.xml
new file mode 100644
index 0000000..dfe735a
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_1.xml
@@ -0,0 +1,286 @@
+<CreateXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <KeyIdentifier>KG_junit</KeyIdentifier>
+ <SingleSignatureInfo SecurityLayerConformity="false">
+ <DataObjectInfo Structure="detached">
+ <DataObject Reference="">
+ </DataObject>
+ <CreateTransformsInfoProfile>
+ <CreateTransformsInfo>
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+ </dsig:Transforms>
+ <FinalDataMetaInfo>
+ <MimeType>text/plain</MimeType>
+ </FinalDataMetaInfo>
+ </CreateTransformsInfo>
+ </CreateTransformsInfoProfile>
+ </DataObjectInfo>
+ <CreateSignatureInfo>
+ <CreateSignatureEnvironment>
+
+<Base64Content>PEVudGl0eURlc2NyaXB0b3IgIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bWV0
+YWRhdGEiIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiB4bWxu
+czpzaGlibWQ9InVybjptYWNlOnNoaWJib2xldGg6bWV0YWRhdGE6MS4wIiB4bWxuczp4bWw9Imh0
+dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgeG1sbnM6bWR1aT0idXJuOm9hc2lz
+Om5hbWVzOnRjOlNBTUw6bWV0YWRhdGE6dWkiIHhtbG5zOnJlcS1hdHRyPSJ1cm46b2FzaXM6bmFt
+ZXM6dGM6U0FNTDpwcm90b2NvbDpleHQ6cmVxLWF0dHIiIGVudGl0eUlEPSJodHRwczovL2xhYmRh
+LmlhaWsudHVncmF6LmF0OjY0NDMvaWRwL3NoaWJib2xldGgiPg0KDQogICAgPElEUFNTT0Rlc2Ny
+aXB0b3IgcHJvdG9jb2xTdXBwb3J0RW51bWVyYXRpb249InVybjpvYXNpczpuYW1lczp0YzpTQU1M
+OjIuMDpwcm90b2NvbCB1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6cHJvdG9jb2wgdXJuOm1h
+Y2U6c2hpYmJvbGV0aDoxLjAiPg0KDQogICAgICAgIDxFeHRlbnNpb25zPg0KICAgICAgICAgICAg
+PHNoaWJtZDpTY29wZSByZWdleHA9ImZhbHNlIj5lZ2l6Lmd2LmF0PC9zaGlibWQ6U2NvcGU+DQo8
+IS0tDQogICAgRmlsbCBpbiB0aGUgZGV0YWlscyBmb3IgeW91ciBJZFAgaGVyZSANCiAgICAtLT4N
+CiAgICAgICAgICAgIDxtZHVpOlVJSW5mbz4NCiAgICAgICAgICAgICAgICA8bWR1aTpEaXNwbGF5
+TmFtZSB4bWw6bGFuZz0iZW4iPkRlbW8gSWRQIGF0IGxhYmRhLmlhaWsudHVncmF6LmF0OjY0NDM8
+L21kdWk6RGlzcGxheU5hbWU+DQogICAgICAgICAgICAgICAgPG1kdWk6RGVzY3JpcHRpb24geG1s
+Omxhbmc9ImVuIj5TaGliYm9sZXRoIElkUCBsYWJkYS5pYWlrLnR1Z3Jhei5hdDo2NDQzPC9tZHVp
+OkRlc2NyaXB0aW9uPg0KICAgICAgICAgICAgICAgIDwhLS0gPG1kdWk6TG9nbyBoZWlnaHQ9Ijgw
+IiB3aWR0aD0iODAiPmh0dHBzOi8vbGFiZGEuaWFpay50dWdyYXouYXQ6NjQ0My9QYXRoL1RvL0xv
+Z28ucG5nPC9tZHVpOkxvZ28+IC0tPg0KICAgICAgICAgICAgPC9tZHVpOlVJSW5mbz4NCg0KICAg
+ICAgICA8L0V4dGVuc2lvbnM+DQoNCiAgICAgICAgPCEtLSBGaXJzdCBzaWduaW5nIGNlcnRpZmlj
+YXRlIGlzIEJhY2tDaGFubmVsLCB0aGUgU2Vjb25kIGlzIEZyb250Q2hhbm5lbCAtLT4NCiAgICAg
+ICAgPEtleURlc2NyaXB0b3IgdXNlPSJzaWduaW5nIj4NCiAgICAgICAgICAgIDxkczpLZXlJbmZv
+Pg0KICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+DQogICAgICAgICAgICAgICAgICAg
+ICAgICA8ZHM6WDUwOUNlcnRpZmljYXRlPg0KTUlJRUpEQ0NBb3lnQXdJQkFnSVZBTWMrUFByY2NC
+TlZFb0pTVTQ4djdpeTg2YjVYTUEwR0NTcUdTSWIzRFFFQg0KQ3dVQU1Ca3hGekFWQmdOVkJBTU1E
+bVZwWkM1bFoybDZMbWQyTG1GME1CNFhEVEU1TURJeE9ERXpNek16T1ZvWA0KRFRNNU1ESXhPREV6
+TXpNek9Wb3dHVEVYTUJVR0ExVUVBd3dPWldsa0xtVm5hWG91WjNZdVlYUXdnZ0dpTUEwRw0KQ1Nx
+R1NJYjNEUUVCQVFVQUE0SUJqd0F3Z2dHS0FvSUJnUUNsRk4vczM2RnBjYTExaG1VQ0VLZEM5R25O
+eU0yYw0KSWdYYjdzOUJwdk9aQkdFVEkwMGhBQ3lUTGtLQlFKR1NZK0dnVlhIK1p1MmpXSEF0Vjdz
+T2c3U2wrM1NQN0tkMw0KUmw0TnBzcUV6dkpoWXp2TFNlcWpPTW9uUk5aOWN0RmR0Y0tEeXU1dWx2
+UHRaZSs0dXRIUzRHUUpOR3lXYStPdw0KQjNzUE9kUXkyaVlKM2NaSU9jUGNDbGVRaFROaTV1anVZ
+TVFidDIyNS8xeDlnZnNCbklEUFh6OHFxV1ZKOTQ1bg0KeG10eXNuRXJsTXlXd21PSnZnL1hVbWxm
+dEhaTDRMSkdGYWh1bmdLY0tKNVUrR2Y0bjRRcTdvQTFPMzUxcHB0Mg0KYXFKZmxRVE9uaU4vMW83
+aThEQ3B3MzVRWVJLNEdsdmtGaG1OQ1cxanhOdzloV3hMTjQ0RVlhc3JETWs0ZHkzNQ0KdXBVaWNs
+SXRvbGU0Mm83Z0Y2YVJFQjV6QjFBUDQwNkxCZno2NVN6anNLNVFZS3JsVDNqbVdoR3Z1ZXhlV0hh
+aA0KakJKM3VocnloRzJWV0xFME5RU0s2NW9ORHZTTkJielpvSDlVQW5xT0FUN3RZRXJWbWN3UmN0
+bnpwU25CS1ZJcA0Kem1abkpGRHFKNHFFU2pxamw2YzRtTkk3dTlncHBTczNHK1VDQXdFQUFhTmpN
+R0V3SFFZRFZSME9CQllFRkw3Vg0KcmxSWHlTUVh0VU83R284WTEzdFNRNTJCTUVBR0ExVWRFUVE1
+TURlQ0RtVnBaQzVsWjJsNkxtZDJMbUYwaGlWbw0KZEhSd2N6b3ZMMlZwWkM1bFoybDZMbWQyTG1G
+MEwybGtjQzl6YUdsaVltOXNaWFJvTUEwR0NTcUdTSWIzRFFFQg0KQ3dVQUE0SUJnUUFMaVdpaUhn
+aGNhWDFTcGhrbTFEaVhVMmJhZlNCMGgyVlpycFFpVXdoQldCWC9XZDRjRlJneg0KazEvUm4xL0ht
+TFZlNUdOQzZmb2VyQU1tLzQwZ2tUY3VKTmZwdFB1YU96UVJXaUo2VmZPcW1QOFhpTW9tQmVsMw0K
+WDFjczRuaVVEKytMREtVakJTbG94ZWFwZW9KUVV4VDBnNzlJTGJQTTFLdGpNMm9ESHBXR0ZxOEdY
+a3FBaXJHZw0KUHNPNmdnbnhrRnZKTGJxRHZkM0p6NVBKNzV2ZjNmWEdZNmlvVTBFcCtXbm5RSmJK
+WHU3SEtCQmNqWXNSYVZHRw0Kem0yU2RuK2FQbUdmNEk4aFpEcndqdTRyQThRQUdWWmt5cFQwTFNm
+MitvdnN0QnNQOStnN20waEJONWErOFl1Uw0KTGJsNnF1V1BNVXZDN1Q4VU01Y1laZG8yUEoyV2tX
+YWVvL0I2QVVIdlZseDlHZTNIT0g0RmIwZlB0Z3dTelJENg0KS1lTWDdCZWtxSVRmblVCZC9SeEo5
+U2lJcThXUEo1L29ET0ZvS01XaUlJZUJ2MjhZNWNWdzUrcUdPZkJDcjhRQw0KZ2NPU2N5OE9xMHBE
+NDBvMjFZRjlTeDBLOURtQTl2bGZKbXVEK2R2Y3RRNmE4ejl1bFpIbVljdG5OVDZTb3NYTw0KdkFP
+L2RxT2VlbTA9DQogICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlg1MDlDZXJ0aWZpY2F0ZT4N
+CiAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4NCiAgICAgICAgICAgIDwvZHM6S2V5
+SW5mbz4NCg0KICAgICAgICA8L0tleURlc2NyaXB0b3I+DQogICAgICAgIDxLZXlEZXNjcmlwdG9y
+IHVzZT0ic2lnbmluZyI+DQogICAgICAgICAgICA8ZHM6S2V5SW5mbz4NCiAgICAgICAgICAgICAg
+ICAgICAgPGRzOlg1MDlEYXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRzOlg1MDlDZXJ0
+aWZpY2F0ZT4NCk1JSUVKRENDQW95Z0F3SUJBZ0lWQUxOanN1djM1akZMOXYwZkxiRkR1LzB3UzJs
+Rk1BMEdDU3FHU0liM0RRRUINCkN3VUFNQmt4RnpBVkJnTlZCQU1NRG1WcFpDNWxaMmw2TG1kMkxt
+RjBNQjRYRFRFNU1ESXhPREV6TXpNek9Gb1gNCkRUTTVNREl4T0RFek16TXpPRm93R1RFWE1CVUdB
+MVVFQXd3T1pXbGtMbVZuYVhvdVozWXVZWFF3Z2dHaU1BMEcNCkNTcUdTSWIzRFFFQkFRVUFBNElC
+andBd2dnR0tBb0lCZ1FEeU0xcTVPdmxYeHFWSklOR0F5U0N3djBmdENIbysNCkdrZ2tYY0laRU1o
+YzdLVHU1aHFQSzFYMy9ScWZQRkZFY2d6ZlBwbXJSRkZLMTN0T1V3VVNOVUdrSUpPck1GSncNCkxy
+aFRZdEtzQWFmL0FFcXVjcmtqazhhckNTM045NmhaOUJmZnlVSVMwdmFjQm5GbytOY29RMTNldmNY
+ZTNhUkwNCllldytXZWlyNC9oQ3VienlFMzQ2a2J0SlFJRGUzQmtPM2NKRGVmeXRJTG92VXZ5cXNV
+Yy9Rc0hWTWhaM0xmdDYNCmRqajdBMlJiaHNCR1FXZmxyejFFNlp2ZzZKNWhxVXZndEdRS3A5cXNL
+aXdjazNWR3NNZVR4dzIvTnA5TXhSOXANCnpFSHdneTg5Wk9jcWtvZjhJR0VWS0ozQ2xpOUFrUmNH
+aHpsYmoyTmpGaVUxaURLZFQ3djNHZXZYZ1ZzM1RHeEYNCjRxN1ZubXJ4REMwMGFkRmIwdTZtemFv
+d1NKQ1VwMVE2ZE1jdVNiQzV4ZzBsSWlJYVE4MjQyVCs4RktHNTFzaDINCjBiKzQvbnloa1VYM3Zq
+bGpxdi9kN2lLdUh1Vk9sbitPMi9nR1JXSkphZnM5SWNDZ0xjSFlKUGhPWVVFK2pyVWsNClFhczdo
+dUJaSmozQ3E3TkE5cVEwVWdqNHBzVjI0RXorNzNFQ0F3RUFBYU5qTUdFd0hRWURWUjBPQkJZRUZQ
+M1INClpTK0cyZy9YOG9GbVE1VFoybExQOUdQbU1FQUdBMVVkRVFRNU1EZUNEbVZwWkM1bFoybDZM
+bWQyTG1GMGhpVm8NCmRIUndjem92TDJWcFpDNWxaMmw2TG1kMkxtRjBMMmxrY0M5emFHbGlZbTlz
+WlhSb01BMEdDU3FHU0liM0RRRUINCkN3VUFBNElCZ1FBbmpxUHVhOWhla1BDbmRTSUV0WnNYbnph
+NFJxWDN6YkVWbXVMTVVHa0dSTW8vcUV0OUhESjkNCndTVDk4dmZZODdQRDlHOTFGeS9TRDhrVmUx
+MXQ5QmIxM3pxMGNEc0k0UXlFaEUvcWtYQnVKdjJMYXdmdmovQ2MNCnRlRDhNeXlEckxHeGtZQ1Va
+V1BtMTdpcmVWY1dpOU41NHlCVnJ5ai9vdFV0OUNnZmVxUnhQOE1LZ0h4R2lzYmsNCk4rdCtTb2V1
+LzVWVG9jWWIvSDZNUXVOaHB1eUlDZ1ZZeVFPRzZsaVRRZEorQUdXdXFQVnFsVFEyZ3RQcnZIUzIN
+ClptL0dQTXlvekh5VGtjQXhqbDNHQTR3bTBTNzBTTHlqZ0I0ZWxGWVdHY0RCaXhLc3BtdVBXellR
+anltczVlVkkNCldGV2NRQXRva2NiM0llRjUrTVZhU0pJaS8zd3ZTbjNXT0RHYjFheEVIUVFKeDY2
+UTJmSktVbHJrTUx1bTNLdkcNCmVMc01CV3VYZGVCYlMwWFd0Y09LcFFmKzdaaTFtcUsycHJiTWZu
+d0wvZURyTitjOHQzZzA2K0ZSQ2pkMjJQN1oNCmJxNm5PZWNoWEduZlI0YXNYRnRkTll4clljQjdV
+ZklLeHRJQVA5c29Dd3VUY3B5QnFNelZuRTRMamxCdTVmbzcNClRxYmRYUUV6NzlFPQ0KICAgICAg
+ICAgICAgICAgICAgICAgICAgPC9kczpYNTA5Q2VydGlmaWNhdGU+DQogICAgICAgICAgICAgICAg
+ICAgIDwvZHM6WDUwOURhdGE+DQogICAgICAgICAgICA8L2RzOktleUluZm8+DQoNCiAgICAgICAg
+PC9LZXlEZXNjcmlwdG9yPg0KICAgICAgICA8S2V5RGVzY3JpcHRvciB1c2U9ImVuY3J5cHRpb24i
+Pg0KICAgICAgICAgICAgPGRzOktleUluZm8+DQogICAgICAgICAgICAgICAgICAgIDxkczpYNTA5
+RGF0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYNTA5Q2VydGlmaWNhdGU+DQpNSUlF
+SkRDQ0FveWdBd0lCQWdJVkFLRk1zNWUwVkFJN3FEeGFCb2swWHVyQVA4K3dNQTBHQ1NxR1NJYjNE
+UUVCDQpDd1VBTUJreEZ6QVZCZ05WQkFNTURtVnBaQzVsWjJsNkxtZDJMbUYwTUI0WERURTVNREl4
+T0RFek16TXpPVm9YDQpEVE01TURJeE9ERXpNek16T1Zvd0dURVhNQlVHQTFVRUF3d09aV2xrTG1W
+bmFYb3VaM1l1WVhRd2dnR2lNQTBHDQpDU3FHU0liM0RRRUJBUVVBQTRJQmp3QXdnZ0dLQW9JQmdR
+Q1dPWmFkYzg3UmwrTVZJTy9SZURoekY0bXFxdnpoDQpvZzdZOUpkVURQNHlDUHFwaUhMRk9TajV2
+K3p0d0tTcG5sbWFtNU1NbEdid282ampvQ2xHcDBVRjUrelNLL3hYDQpERSs2a2hpcHhXbFZ0U0dR
+aTdldTVYUTNxR3Y1RmtCNWFORFJxRTNWcy81MTZrRU9EaDY1RUtZOGNWcnprYnJjDQpLRE1QWE9y
+MWtLQ1V4S3F4QzBlR1VqSjJ0bnNGYVYzc0ZnN0M3QTEyaVN6K0lUaVRPQzhMS3ZsbHErU0RyU0FI
+DQpncmhhWU1Rb2s5YTRHV0pTN0kwam5NRFZvSUlGWFVEaEhjRHQwR3JXSkh5eUV4U1FJNFZISUts
+bnBHTHhxc21tDQpVU3ZneEIxSjNPaDZxb0VjVkRWUXVNOXVoZVMxOW9PZ3VMZ1dVS2J5bzBZdEs0
+alhVeUpJenVNL3p4ZEUrbFVQDQppeEpzMUdoU2J6VFBLaStjeEdmcFNHNk5lSk1XTkMrWFhXTHVK
+UlJZc1g0UVA5cHJQNXpOQ2dIVVN3bi9FMWxmDQorL2tSYVlIUFhKNXZEZ0hXUHlreGRKeHQzLy9K
+M0U3K0cvc3RTdGpsZU40MGlpU1lVWG5MRnArNEhtS3FZckVMDQoxRTdLa0JGZTZhbDdiMzVGNGdy
+cTZmNllSdC9mVnRDNTM3Y0NBd0VBQWFOak1HRXdIUVlEVlIwT0JCWUVGQ2J2DQpibzdESjdRcTRQ
+Tmx5ZENWdFVnR2RCamxNRUFHQTFVZEVRUTVNRGVDRG1WcFpDNWxaMmw2TG1kMkxtRjBoaVZvDQpk
+SFJ3Y3pvdkwyVnBaQzVsWjJsNkxtZDJMbUYwTDJsa2NDOXphR2xpWW05c1pYUm9NQTBHQ1NxR1NJ
+YjNEUUVCDQpDd1VBQTRJQmdRQWRLUVN4T3gwVHR3ZmtXb2Z1cDNTb0xTOTUyZGE4Zmd0SXdlZm1s
+VFlaT0lZbTBGMU5ZeHMxDQpCYXl0c0crUDZBL0xWK1dpVWdySEFFNzVqR2VycDdXY29zZjZmeWZO
+bW9NaW1sQjdLNnZtUGFQWG12dU10alFYDQp5ZkhOZXVkbldrbjc1NFRBTzRQNHUyc1Fkd0RQZWVR
+Y2IwOGljVlE1ck1RWlg4djliZHVQeS9EQmRuRmt3OUErDQpXek5zOTRrQlRsTGdTT0VIUFJsZGRI
+aDlJNUU3c3BGMUhwSC8ybzBkWS9sazZsYVdtOGpYMm13bDdKWTQ2WHBODQo1VUFTUUJFaExOdXp1
+MEI3dnhmNlZmRUYvVVREcnVwUzAraGxac2p4S1pkckl4QVg0VU1hK0VCZmo0QVFFL1NrDQpBT3VE
+em9heUpoUnhkQ2dmbTBmdGxVcUVZQS9QNDU4NVQyZmpWMW5KTXYvV3ZpL1FzTHBUbWtUY3FraHJ6
+R29IDQpSM2dnMHl4ejlacDY3N2pyZVcvTkxTc2tWbVYxNDdYUXRhbVAyazlLNFF4UUVXbVdmME8w
+cHdJdlEzVEtSZ3Y1DQp3UlowZGo2aCt2b0VGdmpwYk81SGJTRUFMU0U0TlJvOG44SzlGTTUwRjVu
+NTY3STZ1TjQrWDFUU1NhcUlaV0hJDQo4c3ZXa2NvM1NPWT0NCiAgICAgICAgICAgICAgICAgICAg
+ICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPg0KICAgICAgICAgICAgICAgICAgICA8L2RzOlg1MDlE
+YXRhPg0KICAgICAgICAgICAgPC9kczpLZXlJbmZvPg0KDQogICAgICAgIDwvS2V5RGVzY3JpcHRv
+cj4NCg0KICAgICAgICA8QXJ0aWZhY3RSZXNvbHV0aW9uU2VydmljZSBCaW5kaW5nPSJ1cm46b2Fz
+aXM6bmFtZXM6dGM6U0FNTDoxLjA6YmluZGluZ3M6U09BUC1iaW5kaW5nIiBMb2NhdGlvbj0iaHR0
+cHM6Ly9sYWJkYS5pYWlrLnR1Z3Jhei5hdDo2NDQzL2lkcC9wcm9maWxlL1NBTUwxL1NPQVAvQXJ0
+aWZhY3RSZXNvbHV0aW9uIiBpbmRleD0iMSIvPg0KICAgICAgICA8QXJ0aWZhY3RSZXNvbHV0aW9u
+U2VydmljZSBCaW5kaW5nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YmluZGluZ3M6U09B
+UCIgTG9jYXRpb249Imh0dHBzOi8vbGFiZGEuaWFpay50dWdyYXouYXQ6NjQ0My9pZHAvcHJvZmls
+ZS9TQU1MMi9TT0FQL0FydGlmYWN0UmVzb2x1dGlvbiIgaW5kZXg9IjIiLz4NCg0KICAgICAgICA8
+IS0tDQogICAgICAgIDxTaW5nbGVMb2dvdXRTZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1l
+czp0YzpTQU1MOjIuMDpiaW5kaW5nczpIVFRQLVJlZGlyZWN0IiBMb2NhdGlvbj0iaHR0cHM6Ly9s
+YWJkYS5pYWlrLnR1Z3Jhei5hdDo2NDQzL2lkcC9wcm9maWxlL1NBTUwyL1JlZGlyZWN0L1NMTyIv
+Pg0KICAgICAgICA8U2luZ2xlTG9nb3V0U2VydmljZSBCaW5kaW5nPSJ1cm46b2FzaXM6bmFtZXM6
+dGM6U0FNTDoyLjA6YmluZGluZ3M6SFRUUC1QT1NUIiBMb2NhdGlvbj0iaHR0cHM6Ly9sYWJkYS5p
+YWlrLnR1Z3Jhei5hdDo2NDQzL2lkcC9wcm9maWxlL1NBTUwyL1BPU1QvU0xPIi8+DQogICAgICAg
+IDxTaW5nbGVMb2dvdXRTZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIu
+MDpiaW5kaW5nczpIVFRQLVBPU1QtU2ltcGxlU2lnbiIgTG9jYXRpb249Imh0dHBzOi8vbGFiZGEu
+aWFpay50dWdyYXouYXQ6NjQ0My9pZHAvcHJvZmlsZS9TQU1MMi9QT1NULVNpbXBsZVNpZ24vU0xP
+Ii8+DQogICAgICAgIDxTaW5nbGVMb2dvdXRTZXJ2aWNlIEJpbmRpbmc9InVybjpvYXNpczpuYW1l
+czp0YzpTQU1MOjIuMDpiaW5kaW5nczpTT0FQIiBMb2NhdGlvbj0iaHR0cHM6Ly9sYWJkYS5pYWlr
+LnR1Z3Jhei5hdDo2NDQzL2lkcC9wcm9maWxlL1NBTUwyL1NPQVAvU0xPIi8+DQogICAgICAgIC0t
+Pg0KDQogICAgICAgIDxTaW5nbGVTaWduT25TZXJ2aWNlIEJpbmRpbmc9InVybjptYWNlOnNoaWJi
+b2xldGg6MS4wOnByb2ZpbGVzOkF1dGhuUmVxdWVzdCIgTG9jYXRpb249Imh0dHBzOi8vbGFiZGEu
+aWFpay50dWdyYXouYXQ6NjQ0My9pZHAvcHJvZmlsZS9TaGliYm9sZXRoL1NTTyIvPg0KICAgICAg
+ICA8U2luZ2xlU2lnbk9uU2VydmljZSBCaW5kaW5nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoy
+LjA6YmluZGluZ3M6SFRUUC1QT1NUIiByZXEtYXR0cjpzdXBwb3J0c1JlcXVlc3RlZEF0dHJpYnV0
+ZXM9InRydWUiIExvY2F0aW9uPSJodHRwczovL2xhYmRhLmlhaWsudHVncmF6LmF0OjY0NDMvaWRw
+L3Byb2ZpbGUvU0FNTDIvUE9TVC9TU08iLz4NCiAgICAgICAgPFNpbmdsZVNpZ25PblNlcnZpY2Ug
+QmluZGluZz0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmJpbmRpbmdzOkhUVFAtUE9TVC1T
+aW1wbGVTaWduIiByZXEtYXR0cjpzdXBwb3J0c1JlcXVlc3RlZEF0dHJpYnV0ZXM9InRydWUiIExv
+Y2F0aW9uPSJodHRwczovL2xhYmRhLmlhaWsudHVncmF6LmF0OjY0NDMvaWRwL3Byb2ZpbGUvU0FN
+TDIvUE9TVC1TaW1wbGVTaWduL1NTTyIvPg0KICAgICAgICA8U2luZ2xlU2lnbk9uU2VydmljZSBC
+aW5kaW5nPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YmluZGluZ3M6SFRUUC1SZWRpcmVj
+dCIgcmVxLWF0dHI6c3VwcG9ydHNSZXF1ZXN0ZWRBdHRyaWJ1dGVzPSJ0cnVlIiBMb2NhdGlvbj0i
+aHR0cHM6Ly9sYWJkYS5pYWlrLnR1Z3Jhei5hdDo2NDQzL2lkcC9wcm9maWxlL1NBTUwyL1JlZGly
+ZWN0L1NTTyIvPg0KDQogICAgPC9JRFBTU09EZXNjcmlwdG9yPg0KDQoNCiAgICA8QXR0cmlidXRl
+QXV0aG9yaXR5RGVzY3JpcHRvciBwcm90b2NvbFN1cHBvcnRFbnVtZXJhdGlvbj0idXJuOm9hc2lz
+Om5hbWVzOnRjOlNBTUw6MS4xOnByb3RvY29sIj4NCg0KICAgICAgICA8RXh0ZW5zaW9ucz4NCiAg
+ICAgICAgICAgIDxzaGlibWQ6U2NvcGUgcmVnZXhwPSJmYWxzZSI+ZWdpei5ndi5hdDwvc2hpYm1k
+OlNjb3BlPg0KICAgICAgICA8L0V4dGVuc2lvbnM+DQoNCiAgICAgICAgPCEtLSBGaXJzdCBzaWdu
+aW5nIGNlcnRpZmljYXRlIGlzIEJhY2tDaGFubmVsLCB0aGUgU2Vjb25kIGlzIEZyb250Q2hhbm5l
+bCAtLT4NCiAgICAgICAgPEtleURlc2NyaXB0b3IgdXNlPSJzaWduaW5nIj4NCiAgICAgICAgICAg
+IDxkczpLZXlJbmZvPg0KICAgICAgICAgICAgICAgICAgICA8ZHM6WDUwOURhdGE+DQogICAgICAg
+ICAgICAgICAgICAgICAgICA8ZHM6WDUwOUNlcnRpZmljYXRlPg0KTUlJRUpEQ0NBb3lnQXdJQkFn
+SVZBTWMrUFByY2NCTlZFb0pTVTQ4djdpeTg2YjVYTUEwR0NTcUdTSWIzRFFFQg0KQ3dVQU1Ca3hG
+ekFWQmdOVkJBTU1EbVZwWkM1bFoybDZMbWQyTG1GME1CNFhEVEU1TURJeE9ERXpNek16T1ZvWA0K
+RFRNNU1ESXhPREV6TXpNek9Wb3dHVEVYTUJVR0ExVUVBd3dPWldsa0xtVm5hWG91WjNZdVlYUXdn
+Z0dpTUEwRw0KQ1NxR1NJYjNEUUVCQVFVQUE0SUJqd0F3Z2dHS0FvSUJnUUNsRk4vczM2RnBjYTEx
+aG1VQ0VLZEM5R25OeU0yYw0KSWdYYjdzOUJwdk9aQkdFVEkwMGhBQ3lUTGtLQlFKR1NZK0dnVlhI
+K1p1MmpXSEF0VjdzT2c3U2wrM1NQN0tkMw0KUmw0TnBzcUV6dkpoWXp2TFNlcWpPTW9uUk5aOWN0
+RmR0Y0tEeXU1dWx2UHRaZSs0dXRIUzRHUUpOR3lXYStPdw0KQjNzUE9kUXkyaVlKM2NaSU9jUGND
+bGVRaFROaTV1anVZTVFidDIyNS8xeDlnZnNCbklEUFh6OHFxV1ZKOTQ1bg0KeG10eXNuRXJsTXlX
+d21PSnZnL1hVbWxmdEhaTDRMSkdGYWh1bmdLY0tKNVUrR2Y0bjRRcTdvQTFPMzUxcHB0Mg0KYXFK
+ZmxRVE9uaU4vMW83aThEQ3B3MzVRWVJLNEdsdmtGaG1OQ1cxanhOdzloV3hMTjQ0RVlhc3JETWs0
+ZHkzNQ0KdXBVaWNsSXRvbGU0Mm83Z0Y2YVJFQjV6QjFBUDQwNkxCZno2NVN6anNLNVFZS3JsVDNq
+bVdoR3Z1ZXhlV0hhaA0KakJKM3VocnloRzJWV0xFME5RU0s2NW9ORHZTTkJielpvSDlVQW5xT0FU
+N3RZRXJWbWN3UmN0bnpwU25CS1ZJcA0Kem1abkpGRHFKNHFFU2pxamw2YzRtTkk3dTlncHBTczNH
+K1VDQXdFQUFhTmpNR0V3SFFZRFZSME9CQllFRkw3Vg0KcmxSWHlTUVh0VU83R284WTEzdFNRNTJC
+TUVBR0ExVWRFUVE1TURlQ0RtVnBaQzVsWjJsNkxtZDJMbUYwaGlWbw0KZEhSd2N6b3ZMMlZwWkM1
+bFoybDZMbWQyTG1GMEwybGtjQzl6YUdsaVltOXNaWFJvTUEwR0NTcUdTSWIzRFFFQg0KQ3dVQUE0
+SUJnUUFMaVdpaUhnaGNhWDFTcGhrbTFEaVhVMmJhZlNCMGgyVlpycFFpVXdoQldCWC9XZDRjRlJn
+eg0KazEvUm4xL0htTFZlNUdOQzZmb2VyQU1tLzQwZ2tUY3VKTmZwdFB1YU96UVJXaUo2VmZPcW1Q
+OFhpTW9tQmVsMw0KWDFjczRuaVVEKytMREtVakJTbG94ZWFwZW9KUVV4VDBnNzlJTGJQTTFLdGpN
+Mm9ESHBXR0ZxOEdYa3FBaXJHZw0KUHNPNmdnbnhrRnZKTGJxRHZkM0p6NVBKNzV2ZjNmWEdZNmlv
+VTBFcCtXbm5RSmJKWHU3SEtCQmNqWXNSYVZHRw0Kem0yU2RuK2FQbUdmNEk4aFpEcndqdTRyQThR
+QUdWWmt5cFQwTFNmMitvdnN0QnNQOStnN20waEJONWErOFl1Uw0KTGJsNnF1V1BNVXZDN1Q4VU01
+Y1laZG8yUEoyV2tXYWVvL0I2QVVIdlZseDlHZTNIT0g0RmIwZlB0Z3dTelJENg0KS1lTWDdCZWtx
+SVRmblVCZC9SeEo5U2lJcThXUEo1L29ET0ZvS01XaUlJZUJ2MjhZNWNWdzUrcUdPZkJDcjhRQw0K
+Z2NPU2N5OE9xMHBENDBvMjFZRjlTeDBLOURtQTl2bGZKbXVEK2R2Y3RRNmE4ejl1bFpIbVljdG5O
+VDZTb3NYTw0KdkFPL2RxT2VlbTA9DQogICAgICAgICAgICAgICAgICAgICAgICA8L2RzOlg1MDlD
+ZXJ0aWZpY2F0ZT4NCiAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5RGF0YT4NCiAgICAgICAg
+ICAgIDwvZHM6S2V5SW5mbz4NCg0KICAgICAgICA8L0tleURlc2NyaXB0b3I+DQogICAgICAgIDxL
+ZXlEZXNjcmlwdG9yIHVzZT0ic2lnbmluZyI+DQogICAgICAgICAgICA8ZHM6S2V5SW5mbz4NCiAg
+ICAgICAgICAgICAgICAgICAgPGRzOlg1MDlEYXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAg
+PGRzOlg1MDlDZXJ0aWZpY2F0ZT4NCk1JSUVKRENDQW95Z0F3SUJBZ0lWQUxOanN1djM1akZMOXYw
+ZkxiRkR1LzB3UzJsRk1BMEdDU3FHU0liM0RRRUINCkN3VUFNQmt4RnpBVkJnTlZCQU1NRG1WcFpD
+NWxaMmw2TG1kMkxtRjBNQjRYRFRFNU1ESXhPREV6TXpNek9Gb1gNCkRUTTVNREl4T0RFek16TXpP
+Rm93R1RFWE1CVUdBMVVFQXd3T1pXbGtMbVZuYVhvdVozWXVZWFF3Z2dHaU1BMEcNCkNTcUdTSWIz
+RFFFQkFRVUFBNElCandBd2dnR0tBb0lCZ1FEeU0xcTVPdmxYeHFWSklOR0F5U0N3djBmdENIbysN
+CkdrZ2tYY0laRU1oYzdLVHU1aHFQSzFYMy9ScWZQRkZFY2d6ZlBwbXJSRkZLMTN0T1V3VVNOVUdr
+SUpPck1GSncNCkxyaFRZdEtzQWFmL0FFcXVjcmtqazhhckNTM045NmhaOUJmZnlVSVMwdmFjQm5G
+bytOY29RMTNldmNYZTNhUkwNCllldytXZWlyNC9oQ3VienlFMzQ2a2J0SlFJRGUzQmtPM2NKRGVm
+eXRJTG92VXZ5cXNVYy9Rc0hWTWhaM0xmdDYNCmRqajdBMlJiaHNCR1FXZmxyejFFNlp2ZzZKNWhx
+VXZndEdRS3A5cXNLaXdjazNWR3NNZVR4dzIvTnA5TXhSOXANCnpFSHdneTg5Wk9jcWtvZjhJR0VW
+S0ozQ2xpOUFrUmNHaHpsYmoyTmpGaVUxaURLZFQ3djNHZXZYZ1ZzM1RHeEYNCjRxN1ZubXJ4REMw
+MGFkRmIwdTZtemFvd1NKQ1VwMVE2ZE1jdVNiQzV4ZzBsSWlJYVE4MjQyVCs4RktHNTFzaDINCjBi
+KzQvbnloa1VYM3ZqbGpxdi9kN2lLdUh1Vk9sbitPMi9nR1JXSkphZnM5SWNDZ0xjSFlKUGhPWVVF
+K2pyVWsNClFhczdodUJaSmozQ3E3TkE5cVEwVWdqNHBzVjI0RXorNzNFQ0F3RUFBYU5qTUdFd0hR
+WURWUjBPQkJZRUZQM1INClpTK0cyZy9YOG9GbVE1VFoybExQOUdQbU1FQUdBMVVkRVFRNU1EZUNE
+bVZwWkM1bFoybDZMbWQyTG1GMGhpVm8NCmRIUndjem92TDJWcFpDNWxaMmw2TG1kMkxtRjBMMmxr
+Y0M5emFHbGlZbTlzWlhSb01BMEdDU3FHU0liM0RRRUINCkN3VUFBNElCZ1FBbmpxUHVhOWhla1BD
+bmRTSUV0WnNYbnphNFJxWDN6YkVWbXVMTVVHa0dSTW8vcUV0OUhESjkNCndTVDk4dmZZODdQRDlH
+OTFGeS9TRDhrVmUxMXQ5QmIxM3pxMGNEc0k0UXlFaEUvcWtYQnVKdjJMYXdmdmovQ2MNCnRlRDhN
+eXlEckxHeGtZQ1VaV1BtMTdpcmVWY1dpOU41NHlCVnJ5ai9vdFV0OUNnZmVxUnhQOE1LZ0h4R2lz
+YmsNCk4rdCtTb2V1LzVWVG9jWWIvSDZNUXVOaHB1eUlDZ1ZZeVFPRzZsaVRRZEorQUdXdXFQVnFs
+VFEyZ3RQcnZIUzINClptL0dQTXlvekh5VGtjQXhqbDNHQTR3bTBTNzBTTHlqZ0I0ZWxGWVdHY0RC
+aXhLc3BtdVBXellRanltczVlVkkNCldGV2NRQXRva2NiM0llRjUrTVZhU0pJaS8zd3ZTbjNXT0RH
+YjFheEVIUVFKeDY2UTJmSktVbHJrTUx1bTNLdkcNCmVMc01CV3VYZGVCYlMwWFd0Y09LcFFmKzda
+aTFtcUsycHJiTWZud0wvZURyTitjOHQzZzA2K0ZSQ2pkMjJQN1oNCmJxNm5PZWNoWEduZlI0YXNY
+RnRkTll4clljQjdVZklLeHRJQVA5c29Dd3VUY3B5QnFNelZuRTRMamxCdTVmbzcNClRxYmRYUUV6
+NzlFPQ0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kczpYNTA5Q2VydGlmaWNhdGU+DQogICAg
+ICAgICAgICAgICAgICAgIDwvZHM6WDUwOURhdGE+DQogICAgICAgICAgICA8L2RzOktleUluZm8+
+DQoNCiAgICAgICAgPC9LZXlEZXNjcmlwdG9yPg0KICAgICAgICA8S2V5RGVzY3JpcHRvciB1c2U9
+ImVuY3J5cHRpb24iPg0KICAgICAgICAgICAgPGRzOktleUluZm8+DQogICAgICAgICAgICAgICAg
+ICAgIDxkczpYNTA5RGF0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkczpYNTA5Q2VydGlm
+aWNhdGU+DQpNSUlFSkRDQ0FveWdBd0lCQWdJVkFLRk1zNWUwVkFJN3FEeGFCb2swWHVyQVA4K3dN
+QTBHQ1NxR1NJYjNEUUVCDQpDd1VBTUJreEZ6QVZCZ05WQkFNTURtVnBaQzVsWjJsNkxtZDJMbUYw
+TUI0WERURTVNREl4T0RFek16TXpPVm9YDQpEVE01TURJeE9ERXpNek16T1Zvd0dURVhNQlVHQTFV
+RUF3d09aV2xrTG1WbmFYb3VaM1l1WVhRd2dnR2lNQTBHDQpDU3FHU0liM0RRRUJBUVVBQTRJQmp3
+QXdnZ0dLQW9JQmdRQ1dPWmFkYzg3UmwrTVZJTy9SZURoekY0bXFxdnpoDQpvZzdZOUpkVURQNHlD
+UHFwaUhMRk9TajV2K3p0d0tTcG5sbWFtNU1NbEdid282ampvQ2xHcDBVRjUrelNLL3hYDQpERSs2
+a2hpcHhXbFZ0U0dRaTdldTVYUTNxR3Y1RmtCNWFORFJxRTNWcy81MTZrRU9EaDY1RUtZOGNWcnpr
+YnJjDQpLRE1QWE9yMWtLQ1V4S3F4QzBlR1VqSjJ0bnNGYVYzc0ZnN0M3QTEyaVN6K0lUaVRPQzhM
+S3ZsbHErU0RyU0FIDQpncmhhWU1Rb2s5YTRHV0pTN0kwam5NRFZvSUlGWFVEaEhjRHQwR3JXSkh5
+eUV4U1FJNFZISUtsbnBHTHhxc21tDQpVU3ZneEIxSjNPaDZxb0VjVkRWUXVNOXVoZVMxOW9PZ3VM
+Z1dVS2J5bzBZdEs0alhVeUpJenVNL3p4ZEUrbFVQDQppeEpzMUdoU2J6VFBLaStjeEdmcFNHNk5l
+Sk1XTkMrWFhXTHVKUlJZc1g0UVA5cHJQNXpOQ2dIVVN3bi9FMWxmDQorL2tSYVlIUFhKNXZEZ0hX
+UHlreGRKeHQzLy9KM0U3K0cvc3RTdGpsZU40MGlpU1lVWG5MRnArNEhtS3FZckVMDQoxRTdLa0JG
+ZTZhbDdiMzVGNGdycTZmNllSdC9mVnRDNTM3Y0NBd0VBQWFOak1HRXdIUVlEVlIwT0JCWUVGQ2J2
+DQpibzdESjdRcTRQTmx5ZENWdFVnR2RCamxNRUFHQTFVZEVRUTVNRGVDRG1WcFpDNWxaMmw2TG1k
+MkxtRjBoaVZvDQpkSFJ3Y3pvdkwyVnBaQzVsWjJsNkxtZDJMbUYwTDJsa2NDOXphR2xpWW05c1pY
+Um9NQTBHQ1NxR1NJYjNEUUVCDQpDd1VBQTRJQmdRQWRLUVN4T3gwVHR3ZmtXb2Z1cDNTb0xTOTUy
+ZGE4Zmd0SXdlZm1sVFlaT0lZbTBGMU5ZeHMxDQpCYXl0c0crUDZBL0xWK1dpVWdySEFFNzVqR2Vy
+cDdXY29zZjZmeWZObW9NaW1sQjdLNnZtUGFQWG12dU10alFYDQp5ZkhOZXVkbldrbjc1NFRBTzRQ
+NHUyc1Fkd0RQZWVRY2IwOGljVlE1ck1RWlg4djliZHVQeS9EQmRuRmt3OUErDQpXek5zOTRrQlRs
+TGdTT0VIUFJsZGRIaDlJNUU3c3BGMUhwSC8ybzBkWS9sazZsYVdtOGpYMm13bDdKWTQ2WHBODQo1
+VUFTUUJFaExOdXp1MEI3dnhmNlZmRUYvVVREcnVwUzAraGxac2p4S1pkckl4QVg0VU1hK0VCZmo0
+QVFFL1NrDQpBT3VEem9heUpoUnhkQ2dmbTBmdGxVcUVZQS9QNDU4NVQyZmpWMW5KTXYvV3ZpL1Fz
+THBUbWtUY3FraHJ6R29IDQpSM2dnMHl4ejlacDY3N2pyZVcvTkxTc2tWbVYxNDdYUXRhbVAyazlL
+NFF4UUVXbVdmME8wcHdJdlEzVEtSZ3Y1DQp3UlowZGo2aCt2b0VGdmpwYk81SGJTRUFMU0U0TlJv
+OG44SzlGTTUwRjVuNTY3STZ1TjQrWDFUU1NhcUlaV0hJDQo4c3ZXa2NvM1NPWT0NCiAgICAgICAg
+ICAgICAgICAgICAgICAgIDwvZHM6WDUwOUNlcnRpZmljYXRlPg0KICAgICAgICAgICAgICAgICAg
+ICA8L2RzOlg1MDlEYXRhPg0KICAgICAgICAgICAgPC9kczpLZXlJbmZvPg0KDQogICAgICAgIDwv
+S2V5RGVzY3JpcHRvcj4NCg0KICAgICAgICA8QXR0cmlidXRlU2VydmljZSBCaW5kaW5nPSJ1cm46
+b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjA6YmluZGluZ3M6U09BUC1iaW5kaW5nIiBMb2NhdGlvbj0i
+aHR0cHM6Ly9sYWJkYS5pYWlrLnR1Z3Jhei5hdDo2NDQzL2lkcC9wcm9maWxlL1NBTUwxL1NPQVAv
+QXR0cmlidXRlUXVlcnkiLz4NCiAgICAgICAgPCEtLSA8QXR0cmlidXRlU2VydmljZSBCaW5kaW5n
+PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YmluZGluZ3M6U09BUCIgTG9jYXRpb249Imh0
+dHBzOi8vbGFiZGEuaWFpay50dWdyYXouYXQ6NjQ0My9pZHAvcHJvZmlsZS9TQU1MMi9TT0FQL0F0
+dHJpYnV0ZVF1ZXJ5Ii8+IC0tPg0KICAgICAgICA8IS0tIElmIHlvdSB1bmNvbW1lbnQgdGhlIGFi
+b3ZlIHlvdSBzaG91bGQgYWRkIHVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCB0
+byB0aGUgcHJvdG9jb2xTdXBwb3J0RW51bWVyYXRpb24gYWJvdmUgLS0+DQoNCiAgICA8L0F0dHJp
+YnV0ZUF1dGhvcml0eURlc2NyaXB0b3I+DQoNCjwvRW50aXR5RGVzY3JpcHRvcj4=</Base64Content>
+
+
+ </CreateSignatureEnvironment>
+ <CreateSignatureEnvironmentProfile>
+ <CreateSignatureLocation xmlns:meta='urn:oasis:names:tc:SAML:2.0:metadata'
+ xmlns:md='urn:oasis:names:tc:SAML:2.0:metadata'
+ Index='1'>/md:EntityDescriptor</CreateSignatureLocation>
+ </CreateSignatureEnvironmentProfile>
+ </CreateSignatureInfo>
+ </SingleSignatureInfo>
+</CreateXMLSignatureRequest>
diff --git a/moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_2.xml b/moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_2.xml
new file mode 100644
index 0000000..72f819b
--- /dev/null
+++ b/moaSig/moa-sig/src/test/resources/testdata/xades/sign/createXades_2.xml
@@ -0,0 +1,62 @@
+ <moa:CreateXMLSignatureRequest xmlns:moa="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <moa:KeyIdentifier>KG_junit</moa:KeyIdentifier>
+ <moa:SingleSignatureInfo SecurityLayerConformity="true">
+
+ <moa:DataObjectInfo Structure="detached" ChildOfManifest="false">
+ <moa:DataObject Reference=""/>
+ <moa:CreateTransformsInfoProfile>
+ <moa:CreateTransformsInfo>
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <dsig:XPath>not(ancestor-or-self::pr:Identification)</dsig:XPath>
+ </dsig:Transform>
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ </dsig:Transforms>
+ <moa:FinalDataMetaInfo>
+ <moa:MimeType>text/xml</moa:MimeType>
+ </moa:FinalDataMetaInfo>
+ </moa:CreateTransformsInfo>
+ </moa:CreateTransformsInfoProfile>
+ </moa:DataObjectInfo>
+
+ <moa:DataObjectInfo Structure="detached" ChildOfManifest="true">
+ <moa:DataObject Reference=""/>
+ <moa:CreateTransformsInfoProfile>
+ <moa:CreateTransformsInfo>
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <dsig:XPath>not(ancestor-or-self::dsig:Signature)</dsig:XPath>
+ </dsig:Transform>
+ </dsig:Transforms>
+ <moa:FinalDataMetaInfo>
+ <moa:MimeType>text/xml</moa:MimeType>
+ </moa:FinalDataMetaInfo>
+ </moa:CreateTransformsInfo>
+ </moa:CreateTransformsInfoProfile>
+ </moa:DataObjectInfo>
+
+ <moa:CreateSignatureInfo>
+ <moa:CreateSignatureEnvironment>
+ <moa:XMLContent><saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:ecdsa="http://www.w3.org/2001/04/xmldsig-more#" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" xmlns:si="http://www.w3.org/2001/XMLSchema-instance" AssertionID="szr.bmi.gv.at-AssertionID13231274415215238" IssueInstant="2011-12-06T00:24:01+01:00" Issuer="http://portal.bmi.gv.at/ref/szr/issuer" MajorVersion="1" MinorVersion="0">
+ <saml:AttributeStatement>
+ <saml:Subject>
+ <saml:SubjectConfirmation>
+ <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod>
+ <saml:SubjectConfirmationData>
+ <pr:Person si:type="pr:PhysicalPersonType"><pr:Identification><pr:Value>adfasfsafsafsafsafsadfsa</pr:Value><pr:Type>urn:publicid:gv.at:baseid</pr:Type></pr:Identification><pr:Name><pr:GivenName>Georg Max</pr:GivenName><pr:FamilyName primary="undefined">Gehtnichtmehr</pr:FamilyName></pr:Name><pr:DateOfBirth>1970-10-07</pr:DateOfBirth></pr:Person>
+ </saml:SubjectConfirmationData>
+ </saml:SubjectConfirmation>
+ </saml:Subject>
+ <saml:Attribute AttributeName="CitizenPublicKey" AttributeNamespace="urn:publicid:gv.at:namespaces:identitylink:1.2"><saml:AttributeValue><ecdsa:ECDSAKeyValue><ecdsa:DomainParameters><ecdsa:NamedCurve URN="urn:oid:1.2.840.10045.3.1.7"/></ecdsa:DomainParameters><ecdsa:PublicKey><ecdsa:X Value="30182780990795840910396548931819898671707742888036046362327117589598976109577" si:type="ecdsa:PrimeFieldElemType"/><ecdsa:Y Value="107112196457062351517299791458741371657831961314729500352055528678053697367827" si:type="ecdsa:PrimeFieldElemType"/></ecdsa:PublicKey></ecdsa:ECDSAKeyValue></saml:AttributeValue></saml:Attribute><saml:Attribute AttributeName="CitizenPublicKey" AttributeNamespace="urn:publicid:gv.at:namespaces:identitylink:1.2"><saml:AttributeValue><dsig:RSAKeyValue><dsig:Modulus>hCZLl3qKckwEWV3l4UBG14o7fvbxoHKxCfrTcJW/yJJvIZa2VUzL7rYpEGZSKFpur0v9cDjIZOtn
+jCt/8pmDSSpdRF4Yrem3wnhv2jE+UuiwUOZtOymcsv5g3I5NXFjaBJlXnXbQF3djAd0YcU6tAzpr
+Md8x0ko+J9CVBxWj6VFJeP4muTI/XvEUSU4QVxmmAyUPCYM6mzlYoYUPEYpw5oWA1p++dvM8USdh
+0pB5mmXboFfPGvN/DvfV4BKKT8xX</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></saml:AttributeValue></saml:Attribute></saml:AttributeStatement>
+</saml:Assertion></moa:XMLContent>
+ </moa:CreateSignatureEnvironment>
+ <moa:CreateSignatureEnvironmentProfile>
+ <moa:CreateSignatureLocation xmlns:saml='urn:oasis:names:tc:SAML:1.0:assertion' Index='2'>
+ /saml:Assertion</moa:CreateSignatureLocation>
+ </moa:CreateSignatureEnvironmentProfile>
+ </moa:CreateSignatureInfo>
+ </moa:SingleSignatureInfo>
+</moa:CreateXMLSignatureRequest>