summaryrefslogtreecommitdiff
path: root/eaaf_modules/eaaf_module_moa-sig/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'eaaf_modules/eaaf_module_moa-sig/src/test/java')
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/MoaSigSpringResourceProviderTest.java52
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceTest.java202
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceZuseConfigTest.java82
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/test/java/console/PdfSigDecoder.java2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/test/java/console/SchemaValidationTest.java51
5 files changed, 388 insertions, 1 deletions
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/MoaSigSpringResourceProviderTest.java b/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/MoaSigSpringResourceProviderTest.java
new file mode 100644
index 00000000..341c5a8c
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/MoaSigSpringResourceProviderTest.java
@@ -0,0 +1,52 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.test;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.springframework.core.io.Resource;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.MoaSigSpringResourceProvider;
+
+
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class MoaSigSpringResourceProviderTest {
+
+ static final String TEST_SPI_LOADER_PATH =
+ "/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider";
+
+ @Test
+ public void testSpringConfig() {
+ final MoaSigSpringResourceProvider test = new MoaSigSpringResourceProvider();
+ for (final Resource el : test.getResourcesToLoad()) {
+ try {
+ IOUtils.toByteArray(el.getInputStream());
+
+ } catch (final IOException e) {
+ Assert.fail("Ressouce: " + el.getFilename() + " not found");
+ }
+
+ }
+ }
+
+ @Test
+ public void testSpiLoaderConfig() {
+ final InputStream el = this.getClass().getResourceAsStream(TEST_SPI_LOADER_PATH);
+ try {
+ final String spiFile = IOUtils.toString(el, "UTF-8");
+
+ Assert.assertEquals("Wrong classpath in SPI file", MoaSigSpringResourceProvider.class.getName(),
+ spiFile);
+
+
+ } catch (final IOException e) {
+ Assert.fail("Ressouce: " + TEST_SPI_LOADER_PATH + " not found");
+ }
+
+ }
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceTest.java b/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceTest.java
new file mode 100644
index 00000000..71c4b1af
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceTest.java
@@ -0,0 +1,202 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.test.verify;
+
+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.assertThrows;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.ISignatureVerificationService;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.IPdfSignatureVerificationResponse;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyPdfSignatureResponse.CoversFullDocument;
+import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration("/moa-sig-service.beans.xml")
+@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
+public class SignatureVerificationServiceTest {
+
+ @Autowired ISignatureVerificationService service;
+
+ /**
+ * jUnit class initializer.
+ *
+ * @throws IOException In case of an error
+ * @throws ConfigurationException In case of an error
+ */
+ @BeforeClass
+ public static void moaSpssInitialize() throws IOException, ConfigurationException {
+ log.info("Loading Java security providers.");
+ final String current = new java.io.File(".").getCanonicalPath();
+ System.setProperty("moa.spss.server.configuration",
+ current + "/src/test/resources/config/moaspss_config/MOASPSSConfiguration.xml");
+
+ ((Logger) LoggerFactory.getLogger("at.gv.egovernment.moa")).setLevel(Level.DEBUG);
+ ((Logger) LoggerFactory.getLogger("iaik.server")).setLevel(Level.INFO);
+ ((Logger) LoggerFactory.getLogger("iaik.pki")).setLevel(Level.INFO);
+
+ }
+
+ /**
+ * Reset MOA-SPSS configuration.
+ */
+ @AfterClass
+ public static void removeMoaSpssConfig() {
+ System.setProperty("moa.spss.server.configuration", "");
+
+ }
+
+ @Test
+ public void unknownTrustProfile() throws IOException {
+ // load signature
+ byte[] signature = IOUtils.resourceToByteArray("/data/xml/zuse_sig_1.xml");
+
+ // start verification
+ MoaSigServiceException exception = assertThrows(MoaSigServiceException.class,
+ () -> service.verifyXmlSignature(signature, "notexist"));
+
+ // verify state
+ Assert.assertEquals("wrong exception", "service.moasig.03", exception.getErrorId());
+
+ }
+
+ @Test
+ public void simpleSignaturVerificationTest() throws MoaSigServiceException, IOException {
+ // load signature
+ byte[] signature = IOUtils.resourceToByteArray("/data/xml/zuse_sig_1.xml");
+
+ //start verification
+ IXmlSignatureVerificationResponse result =
+ service.verifyXmlSignature(signature, "MOAIDBuergerkarteAuthentisierungsDaten");
+
+ //verify result
+ Assert.assertEquals("sig. checkCode", 0, result.getSignatureCheckCode());
+ Assert.assertEquals("cert. checkCode", 1, result.getCertificateCheckCode());
+ Assert.assertEquals("XML manifest. checkCode", 0, result.getXmlDsigManifestCheckCode());
+ Assert.assertEquals("manifest. checkCode", 0, result.getSignatureManifestCheckCode());
+
+ Assert.assertNotNull("X509Cert", result.getX509Certificate());
+ Assert.assertNotNull("X509Cert encoded", result.getX509CertificateEncoded());
+
+ Assert.assertFalse("PubAuthority flag", result.isPublicAuthority());
+ Assert.assertNull("PubAuthorityIdentifer", result.getPublicAuthorityCode());
+
+ Assert.assertFalse("qcCert flag", result.isQualifiedCertificate());
+
+ }
+
+ @Test
+ public void noCertPathByMissingX509Extensions() throws MoaSigServiceException, IOException {
+ // load signature
+ byte[] signature = IOUtils.resourceToByteArray("/data/zuse/signed-notification-with-pdf.xml");
+
+ //start verification
+ IXmlSignatureVerificationResponse result =
+ service.verifyXmlSignature(signature, "default-trustprofile");
+
+ //verify result
+ Assert.assertEquals("cert. checkCode", 1, result.getCertificateCheckCode());
+
+ }
+
+ @Test
+ public void simplePdfSignatureTest() throws IOException, MoaSigServiceException {
+ // load signature
+ byte[] signature = IOUtils.resourceToByteArray(
+ "/data/pades/Plugtest2019_ESIG-P_AT_SIT_Signature-P-AT_SIT-4.pdf");
+
+ List<IPdfSignatureVerificationResponse> result =
+ service.verifyPdfSignature(signature, "MOAIDBuergerkarteAuthentisierungsDaten");
+
+ assertNotNull("result", result);
+ assertFalse("result is empty", result.isEmpty());
+ assertEquals("missing signature", 2, result.size());
+
+ assertNull("sigAlg 1", result.get(0).getSignatureAlgorithmIdentifier());
+ assertNull("formCheck 1", result.get(0).getExtendedCertificateValidation());
+ assertTrue("ext. certCheck 1", result.get(0).getFormValidationResults().isEmpty());
+ assertEquals("coversFullDoc 1", CoversFullDocument.UNKNOWN, result.get(0).getSignatureCoversFullDocument());
+
+ assertNull("SigAlg 2", result.get(1).getSignatureAlgorithmIdentifier());
+ assertNull("formCheck 2", result.get(1).getExtendedCertificateValidation());
+ assertTrue("ext. certCheck 2", result.get(1).getFormValidationResults().isEmpty());
+ assertEquals("coversFullDoc 2", CoversFullDocument.UNKNOWN, result.get(1).getSignatureCoversFullDocument());
+
+ }
+
+ @Test
+ public void extendedPdfSignatureTest() throws IOException, MoaSigServiceException {
+ // load signature
+ byte[] signature = IOUtils.resourceToByteArray(
+ "/data/pades/Plugtest2019_ESIG-P_AT_SIT_Signature-P-AT_SIT-4.pdf");
+
+ List<IPdfSignatureVerificationResponse> result =
+ service.verifyPdfSignature(signature, "MOAIDBuergerkarteAuthentisierungsDaten", true);
+
+ assertNotNull("result", result);
+ assertFalse("result is empty", result.isEmpty());
+ assertEquals("missing signature", 2, result.size());
+
+ assertEquals("sigCheckCode", 0, result.get(0).getSignatureCheckCode());
+ assertEquals("certCheckCode", 0, result.get(0).getCertificateCheckCode());
+
+ assertNotNull("sigAlg 1", result.get(0).getSignatureAlgorithmIdentifier());
+ assertNotNull("formCheck 1", result.get(0).getExtendedCertificateValidation());
+ assertFalse("ext. certCheck 1", result.get(0).getFormValidationResults().isEmpty());
+ assertEquals("coversFullDoc 1", CoversFullDocument.NO, result.get(0).getSignatureCoversFullDocument());
+
+ //valid ext. cert result
+ assertEquals("ext. cert. check code", 2,
+ result.get(0).getExtendedCertificateValidation().getMajorResult().getCode());
+ assertEquals("ext. cert. check info", "INDETERMINATE",
+ result.get(0).getExtendedCertificateValidation().getMajorResult().getInfo());
+ assertEquals("ext. cert. check code", 24,
+ result.get(0).getExtendedCertificateValidation().getMinorResult().getCode());
+ assertEquals("ext. cert. check info", "ERROR",
+ result.get(0).getExtendedCertificateValidation().getMinorResult().getInfo());
+
+
+ //validate form-check result
+ assertEquals("ext. formcheck size", 4, result.get(0).getFormValidationResults().size());
+ assertEquals("wrong PAdES-B Code", 0, result.get(0).getFormValidationResults().stream()
+ .filter(el -> el.getInfo().equals("B-B"))
+ .findFirst()
+ .get().getCode());
+
+ result.get(0).getFormValidationResults().stream()
+ .filter(el -> !el.getInfo().equals("B-B"))
+ .forEach(el -> assertEquals("wrong form check-code", 2, el.getCode()));
+
+
+ assertNotNull("SigAlg 2", result.get(1).getSignatureAlgorithmIdentifier());
+ assertNotNull("formCheck 2", result.get(1).getExtendedCertificateValidation());
+ assertFalse("ext. certCheck 2", result.get(1).getFormValidationResults().isEmpty());
+ assertEquals("coversFullDoc 2", CoversFullDocument.YES, result.get(1).getSignatureCoversFullDocument());
+
+ }
+
+}
+
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceZuseConfigTest.java b/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceZuseConfigTest.java
new file mode 100644
index 00000000..909c37dc
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/test/java/at/gv/egiz/eaaf/modules/sigverify/moasig/test/verify/SignatureVerificationServiceZuseConfigTest.java
@@ -0,0 +1,82 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.test.verify;
+
+import java.io.IOException;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.ISignatureVerificationService;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceException;
+import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
+import lombok.extern.slf4j.Slf4j;
+
+@Ignore
+@Slf4j
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration("/moa-sig-service.beans.xml")
+@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
+public class SignatureVerificationServiceZuseConfigTest {
+
+ @Autowired ISignatureVerificationService service;
+
+ /**
+ * jUnit class initializer.
+ *
+ * @throws IOException In case of an error
+ * @throws ConfigurationException In case of an error
+ */
+ @BeforeClass
+ public static void moaSpssInitialize() throws IOException, ConfigurationException {
+ log.info("Loading Java security providers.");
+ final String current = new java.io.File(".").getCanonicalPath();
+ System.setProperty("moa.spss.server.configuration",
+ current + "/src/test/resources/config/moaspss_config/MOASPSSConfiguration_zuse.xml");
+
+ }
+
+ /**
+ * Reset MOA-SPSS configuration.
+ */
+ @AfterClass
+ public static void removeMoaSpssConfig() {
+ System.setProperty("moa.spss.server.configuration", "");
+
+ }
+
+ @Test
+ public void simpleSignaturVerificationTest() throws IOException, MoaSigServiceException {
+ // load signature
+ byte[] signature = IOUtils.resourceToByteArray("/data/xml/zuse_sig_1.xml");
+
+ //start verification
+ IXmlSignatureVerificationResponse result =
+ service.verifyXmlSignature(signature, "default-trustprofile");
+
+ //verify result
+ Assert.assertEquals("sig. checkCode", 0, result.getSignatureCheckCode());
+ Assert.assertEquals("cert. checkCode", 1, result.getCertificateCheckCode());
+ Assert.assertEquals("XML manifest. checkCode", 0, result.getXmlDsigManifestCheckCode());
+ Assert.assertEquals("manifest. checkCode", 0, result.getSignatureManifestCheckCode());
+
+ Assert.assertNotNull("X509Cert", result.getX509Certificate());
+ Assert.assertNotNull("X509Cert encoded", result.getX509CertificateEncoded());
+
+ Assert.assertFalse("PubAuthority flag", result.isPublicAuthority());
+ Assert.assertNull("PubAuthorityIdentifer", result.getPublicAuthorityCode());
+
+ Assert.assertFalse("qcCert flag", result.isQualifiedCertificate());
+
+ }
+
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/PdfSigDecoder.java b/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/PdfSigDecoder.java
index 28338746..b9e9e517 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/PdfSigDecoder.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/PdfSigDecoder.java
@@ -21,7 +21,7 @@ public class PdfSigDecoder {
* @throws UnsupportedEncodingException In case of a general error
*/
public static void main(String[] args) throws CodingException, UnsupportedEncodingException, IOException {
- InputStream is = PdfSigDecoder.class.getResourceAsStream("/pdf_cades_3.hex");
+ InputStream is = PdfSigDecoder.class.getResourceAsStream("/pdf_cades_4.hex");
String test = new String(StreamUtils.copyToByteArray(is), "UTF-8");
test = test.replaceAll("\\n", "");
final byte[] bytes = new byte[test.length() / 2];
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/SchemaValidationTest.java b/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/SchemaValidationTest.java
new file mode 100644
index 00000000..4680fa3e
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/test/java/console/SchemaValidationTest.java
@@ -0,0 +1,51 @@
+package console;
+
+import java.io.InputStream;
+
+import org.w3c.dom.Document;
+
+import at.gv.egovernment.moaspss.util.DOMUtils;
+
+public class SchemaValidationTest {
+
+ public static final String SCHEMA_ROOT = "/config/zuseSchema/";
+
+ public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
+ public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd";
+
+ public static final String XSI_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
+ public static final String XSI_SCHEMA_LOCATION = SCHEMA_ROOT + "XMLSchema-instance.xsd";
+
+ public static final String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#";
+ public static final String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd";
+
+ public static final String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#";
+ public static final String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd";
+
+ private static final String ZUSE_SCHEMAS =
+// (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ")
+// + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ")
+ (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " ")
+ + (eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION);
+
+ /**
+ * Simple test.
+ *
+ * @param args not used yet
+ * @throws Exception in case of an error
+ */
+ public static void main(String[] args) throws Exception {
+
+ InputStream is = SchemaValidationTest.class.getResourceAsStream("/data/zuse/msg.xml");
+
+
+// Element result = DOMUtils.parseXmlValidating(is);
+
+ Document result = DOMUtils.parseDocument(is, true, ZUSE_SCHEMAS, null);
+
+
+ System.out.print(DOMUtils.serializeNode(result));
+
+ }
+
+}