summaryrefslogtreecommitdiff
path: root/eaaf_modules/eaaf_module_moa-sig/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'eaaf_modules/eaaf_module_moa-sig/src/main/java')
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureCreationService.java5
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureVerificationService.java191
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/ICmsSignatureVerificationResponse.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/ICmsSignatureVerificationResponse.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IGenericSignatureVerificationResponse.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/IGenericSignatureVerificationResponse.java)39
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IPdfSignatureVerificationResponse.java29
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/ISchemaRessourceProvider.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/ISchemaRessourceProvider.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IXmlSignatureVerificationResponse.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/IXmlSignatureVerificationResponse.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceBuilderException.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceBuilderException.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceConfigurationException.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceConfigurationException.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceException.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceException.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceParserException.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceParserException.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/AbstractSignatureService.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java)28
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java)43
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigSpringResourceProvider.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigSpringResourceProvider.java)2
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/SignatureCreationService.java)4
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/SignatureVerificationService.java)238
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java223
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java14
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyPdfSignatureResponse.java30
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java35
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/parser/VerifyXmlSignatureResponseParser.java (renamed from eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/parser/VerifyXmlSignatureResponseParser.java)19
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureCreationService.java5
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureVerificationService.java100
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java152
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java10
-rw-r--r--eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java115
26 files changed, 818 insertions, 478 deletions
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureCreationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureCreationService.java
new file mode 100644
index 00000000..dbf5846b
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureCreationService.java
@@ -0,0 +1,5 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api;
+
+public interface ISignatureCreationService {
+
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureVerificationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureVerificationService.java
new file mode 100644
index 00000000..1a0df63c
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/ISignatureVerificationService.java
@@ -0,0 +1,191 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.ICmsSignatureVerificationResponse;
+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;
+
+public interface ISignatureVerificationService {
+
+ /**
+ * Verify a CAdES or CMS signature. <br>
+ * <br>
+ * <i>This method only validates the first CMS or CAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Enveloped CMS or CAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
+ * @return {@link ICmsSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ ICmsSignatureVerificationResponse verifyCmsSignature(byte[] signature, String trustProfileID)
+ throws MoaSigServiceException;
+
+ /**
+ * Verify a CAdES or CMS signature. <br>
+ * <br>
+ * <i>This method only validates the first CMS or CAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Enveloped CMS or CAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
+ * @param performExtendedValidation If <code>true</code> than MOA-Sig perform extended validation on this signature.
+ * @return {@link ICmsSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ ICmsSignatureVerificationResponse verifyCmsSignature(byte[] signature, String trustProfileID,
+ boolean performExtendedValidation) throws MoaSigServiceException;
+
+
+ /**
+ * Verify a PAdES or PDF signature.
+ *
+ * @param pdf PDF document
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
+ * @return {@link List} of {@link IPdfSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ List<IPdfSignatureVerificationResponse> verifyPdfSignature(byte[] pdf, String trustProfileID)
+ throws MoaSigServiceException;
+
+
+ /**
+ * Verify a PAdES or PDF signature.
+ *
+ * @param pdf PDF document
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
+ * @param performExtendedValidation If <code>true</code> than MOA-Sig perform extended validation on this signature.
+ * @return {@link List} of {@link IPdfSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ List<IPdfSignatureVerificationResponse> verifyPdfSignature(byte[] pdf, String trustProfileID,
+ boolean performExtendedValidation) throws MoaSigServiceException;
+
+
+ /**
+ * Verify a XML or XAdES signature. <br>
+ * <br>
+ * <i>This method only validates the first XML or XAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Serialized XML or XAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
+ * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID)
+ throws MoaSigServiceException;
+
+ /**
+ * Verify a XML or XAdES signature. <br>
+ * <br>
+ * <i>This method only validates the first XML or XAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Serialized XML or XAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
+ * @param signingDate Signature timestamp
+ * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
+ Date signingDate) throws MoaSigServiceException;
+
+ /**
+ * Verify a XML or XAdES signature. <br>
+ * <br>
+ * <i>This method only validates the first XML or XAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Serialized XML or XAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig
+ * configuration
+ * @param verifyTransformsInfoProfileID {@link List} of XML Transformations that
+ * should be used for
+ * signature-verification
+ * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
+ List<String> verifyTransformsInfoProfileID) throws MoaSigServiceException;
+
+ /**
+ * Verify a XML or XAdES signature. <br>
+ * <br>
+ * <i>This method only validates the first XML or XAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Serialized XML or XAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig
+ * configuration
+ * @param signatureLocationXpath Xpath that points to location of Signature
+ * element
+ * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
+ String signatureLocationXpath) throws MoaSigServiceException;
+
+ /**
+ * Verify a XML or XAdES signature. <br>
+ * <br>
+ * <i>This method only validates the first XML or XAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Serialized XML or XAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig
+ * configuration
+ * @param verifyTransformsInfoProfileID {@link List} of XML Transformations that
+ * should be used for
+ * signature-verification
+ * @param signatureLocationXpath Xpath that points to location of
+ * Signature element
+ * @param signingDate Signature timestamp
+ * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
+ List<String> verifyTransformsInfoProfileID, String signatureLocationXpath, Date signingDate)
+ throws MoaSigServiceException;
+
+
+ /**
+ * Verify a XML or XAdES signature. <br>
+ * <br>
+ * <i>This method only validates the first XML or XAdES signature if more than
+ * one signature exists</i>
+ *
+ * @param signature Serialized XML or XAdES signature
+ * @param trustProfileID Id of the Trust-Profile from MOA-Sig
+ * configuration
+ * @param verifyTransformsInfoProfileID {@link List} of XML Transformations that
+ * should be used for
+ * signature-verification
+ * @param signatureLocationXpath Xpath that points to location of
+ * Signature element
+ * @param signingDate Signature timestamp
+ * @param supplementContent Map that contains supplement profile content; keyed by references. Each entry
+ * in this map becomes a Content/Base64Content child in the SupplementProfile
+ * node.
+ * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
+ * signature was found
+ * @throws MoaSigServiceException on signatue-verification error
+ */
+ IXmlSignatureVerificationResponse verifyXmlSignature(final byte[] signature,
+ final String trustProfileID, final List<String> verifyTransformsInfoProfileID,
+ final String signatureLocationXpath, Date signingDate,
+ final Map<String, byte[]> supplementContent) throws MoaSigServiceException;
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/ICmsSignatureVerificationResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/ICmsSignatureVerificationResponse.java
index 5e7a4564..f3d1dffc 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/ICmsSignatureVerificationResponse.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/ICmsSignatureVerificationResponse.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api.data;
public interface ICmsSignatureVerificationResponse extends IGenericSignatureVerificationResponse {
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/IGenericSignatureVerificationResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IGenericSignatureVerificationResponse.java
index 8ebd90be..8e8511fa 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/IGenericSignatureVerificationResponse.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IGenericSignatureVerificationResponse.java
@@ -1,10 +1,15 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api.data;
import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Nonnull;
import org.springframework.lang.Nullable;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.GenericSignatureVerificationResponse.ExtendedCertificateValidation;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.GenericSignatureVerificationResponse.ExtendedResult;
import iaik.x509.X509Certificate;
public interface IGenericSignatureVerificationResponse {
@@ -71,4 +76,34 @@ public interface IGenericSignatureVerificationResponse {
@Nullable
String getPublicAuthorityCode();
+
+ /**
+ * Return the signature-algorithm that was used for signing or <code>null</code> if no result exists.
+ * <br>
+ * <p>This result requires extended validation.</p>
+ *
+ * @return
+ */
+ @Nullable
+ String getSignatureAlgorithmIdentifier();
+
+ /**
+ * Return the extended certificate-validation result or <code>null</code> if no result exists.
+ * <br>
+ * <p>This result requires extended validation.</p>
+ *
+ * @return
+ */
+ @Nullable
+ ExtendedCertificateValidation getExtendedCertificateValidation();
+
+ /**
+ * Return the form-validation result or an empty list if no result exists.
+ * <br>
+ * <p>This result requires extended validation.</p>
+ *
+ * @return
+ */
+ @Nonnull
+ List<ExtendedResult> getFormValidationResults();
}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IPdfSignatureVerificationResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IPdfSignatureVerificationResponse.java
new file mode 100644
index 00000000..1bf2d7b2
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IPdfSignatureVerificationResponse.java
@@ -0,0 +1,29 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api.data;
+
+import java.util.List;
+
+import at.gv.egiz.eaaf.core.impl.data.Pair;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyPdfSignatureResponse.CoversFullDocument;
+
+/**
+ * PDF specific signature-verification response.
+ *
+ * @author tlenz
+ *
+ */
+public interface IPdfSignatureVerificationResponse extends IGenericSignatureVerificationResponse {
+
+ /**
+ * Flag if signature covers the full pdf-document.
+ *
+ * @return
+ */
+ CoversFullDocument getSignatureCoversFullDocument();
+
+ /**
+ * PDF signing ranges as {@link List} of {@link Pair} of starting-byte and byte-length.
+ *
+ * @return
+ */
+ List<Pair<Integer, Integer>> getByteRange();
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/ISchemaRessourceProvider.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/ISchemaRessourceProvider.java
index 17d5fa59..edbbf628 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/ISchemaRessourceProvider.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/ISchemaRessourceProvider.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api.data;
import java.io.InputStream;
import java.util.Map;
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/IXmlSignatureVerificationResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IXmlSignatureVerificationResponse.java
index 5b766917..c7d0b276 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/data/IXmlSignatureVerificationResponse.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/api/data/IXmlSignatureVerificationResponse.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.api.data;
/**
* XML signature verification result.
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceBuilderException.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceBuilderException.java
index e32ab932..560732c3 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceBuilderException.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceBuilderException.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions;
public class MoaSigServiceBuilderException extends MoaSigServiceException {
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceConfigurationException.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceConfigurationException.java
index fd5f8caf..97817e01 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceConfigurationException.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceConfigurationException.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions;
public class MoaSigServiceConfigurationException extends MoaSigServiceException {
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceException.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceException.java
index a4fb6290..56277d7d 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceException.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceException.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions;
import at.gv.egiz.eaaf.core.exceptions.EaafServiceException;
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceParserException.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceParserException.java
index a47b45e0..760e293f 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/exceptions/MoaSigServiceParserException.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/exceptions/MoaSigServiceParserException.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions;
public class MoaSigServiceParserException extends MoaSigServiceException {
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/AbstractSignatureService.java
index d2cab2ef..942cd35c 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/AbstractSignatureService.java
@@ -1,4 +1,7 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl;
+
+import java.security.Provider;
+import java.security.Security;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -10,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.w3c.dom.Document;
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.iaik.config.IaikConfigurator;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
@@ -47,25 +49,41 @@ public abstract class AbstractSignatureService {
protected final void setUpContexts(final String transactionID) throws ConfigurationException {
final TransactionContextManager txMgr = TransactionContextManager.getInstance();
final LoggingContextManager logMgr = LoggingContextManager.getInstance();
-
+
if (txMgr.getTransactionContext() == null) {
log.debug("Set not MOA-Sig transaction context");
final TransactionContext ctx =
- new TransactionContext(transactionID, null, ConfigurationProvider.getInstance());
+ new TransactionContext(transactionID, null, moaSigConfig.getConfigHolder().getMoaSpssConfig());
txMgr.setTransactionContext(ctx);
}
+ //set Logging context into MOA-Sig
if (logMgr.getLoggingContext() == null) {
final LoggingContext ctx = new LoggingContext(transactionID);
logMgr.setLoggingContext(ctx);
}
- new IaikConfigurator().configure(ConfigurationProvider.getInstance());
+ //dump Java Security-Providers
+ if (log.isTraceEnabled()) {
+ log.trace("Set-Up verifier Bean: {}", this);
+ dumpSecProviders("MOA-Sig Context-Set-Up");
+
+ }
+
+ new IaikConfigurator().configure(moaSigConfig.getConfigHolder().getMoaSpssConfig());
}
+ private static void dumpSecProviders(String message) {
+ log.trace("Security Providers: {}", message);
+ for (final Provider provider : Security.getProviders()) {
+ log.trace(" - {} - {}", provider.getName(), provider.getVersion());
+
+ }
+ }
+
/**
* Tear down thread-local context information.
*/
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java
index 77bbc88b..dc4aa4c0 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigInitializer.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl;
import java.io.IOException;
import java.io.InputStream;
@@ -7,23 +7,23 @@ import java.security.Security;
import java.util.Iterator;
import java.util.Map.Entry;
-import javax.annotation.Nonnull;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.ISchemaRessourceProvider;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceConfigurationException;
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.Configurator;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.ISchemaRessourceProvider;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceConfigurationException;
+import at.gv.egovernment.moa.spss.server.init.StartupConfigurationHolder;
+import at.gv.egovernment.moa.spss.server.init.SystemInitializer;
import at.gv.egovernment.moaspss.logging.LoggingContext;
import at.gv.egovernment.moaspss.logging.LoggingContextManager;
import at.gv.egovernment.moaspss.util.DOMUtils;
import iaik.asn1.structures.AlgorithmID;
import iaik.security.ec.provider.ECCelerate;
import iaik.security.provider.IAIK;
+import lombok.Getter;
public class MoaSigInitializer {
private static final Logger log = LoggerFactory.getLogger(MoaSigInitializer.class);
@@ -31,18 +31,12 @@ public class MoaSigInitializer {
@Autowired(required = false)
ISchemaRessourceProvider[] schemas;
- private Configurator moaSigConfigurator;
-
/**
* Get MOA-Sig configuration object.
- *
- * @return moa-sig configuration
*/
- @Nonnull
- public Configurator getMoaSigConfigurator() {
- return moaSigConfigurator;
+ @Getter
+ private StartupConfigurationHolder configHolder;
- }
@PostConstruct
private synchronized void initialize() throws MoaSigServiceConfigurationException {
@@ -55,27 +49,18 @@ public class MoaSigInitializer {
try {
LoggingContextManager.getInstance().setLoggingContext(new LoggingContext("startup"));
log.debug("MOA-Sig library initialization process ... ");
- Configurator.getInstance().init();
+ configHolder = SystemInitializer.init();
log.info("MOA-Sig library initialization complete ");
- Security.insertProviderAt(IAIK.getInstance(), 0);
-
- final ECCelerate eccProvider = ECCelerate.getInstance();
- if (Security.getProvider(eccProvider.getName()) != null) {
- Security.removeProvider(eccProvider.getName());
- }
- Security.addProvider(new ECCelerate());
-
fixJava8_141ProblemWithSslAlgorithms();
if (log.isDebugEnabled()) {
log.debug("Loaded Security Provider:");
final Provider[] providerList = Security.getProviders();
for (int i = 0; i < providerList.length; i++) {
- log.debug(
- i + ": " + providerList[i].getName() + " Version " + providerList[i].getVersion());
+ log.debug("{}: {} Version {}", i, providerList[i].getName(), providerList[i].getVersion());
+
}
-
}
// Inject additional XML schemes
@@ -99,10 +84,8 @@ public class MoaSigInitializer {
}
}
- moaSigConfigurator = Configurator.getInstance();
-
- } catch (final MOAException e) {
- log.error("MOA-SP initialization FAILED!", e.getWrapped());
+ } catch (final RuntimeException e) {
+ log.error("MOA-SP initialization FAILED!", e);
throw new MoaSigServiceConfigurationException("service.moasig.04",
new Object[] { e.toString() }, e);
}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigSpringResourceProvider.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigSpringResourceProvider.java
index d09b26de..b5e190d8 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigSpringResourceProvider.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/MoaSigSpringResourceProvider.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/SignatureCreationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java
index 559af62a..0d8b7975 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/SignatureCreationService.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureCreationService.java
@@ -1,4 +1,4 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl;
import javax.annotation.PostConstruct;
@@ -6,7 +6,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.ISignatureCreationService;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.ISignatureCreationService;
import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker;
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/SignatureVerificationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java
index 8fc4086e..79f39e65 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/SignatureVerificationService.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/SignatureVerificationService.java
@@ -1,11 +1,17 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl;
import java.io.ByteArrayInputStream;
import java.security.cert.CertificateEncodingException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import javax.annotation.PostConstruct;
+import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.lang.Nullable;
@@ -15,12 +21,17 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.ISignatureVerificationService;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.ICmsSignatureVerificationResponse;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceBuilderException;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceException;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.parser.VerifyXmlSignatureResponseParser;
+import at.gv.egiz.eaaf.core.impl.data.Pair;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.ISignatureVerificationService;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.ICmsSignatureVerificationResponse;
+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.MoaSigServiceBuilderException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.GenericSignatureVerificationResponse;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyPdfSignatureResponse;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyPdfSignatureResponse.CoversFullDocument;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.parser.VerifyXmlSignatureResponseParser;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
@@ -50,6 +61,8 @@ public class SignatureVerificationService extends AbstractSignatureService
private static final String DSIG = Constants.DSIG_PREFIX + ":";
private static final String DEFAULT_XPATH_SIGNATURE_LOCATION = "//" + DSIG + "Signature";
+ public static final String PATTERN_ISSUE_INSTANT = "yyyy-MM-dd'T'HH:mm:ssXXX";
+
private CMSSignatureVerificationInvoker cadesInvoker;
private XMLSignatureVerificationInvoker xadesInvocer;
@@ -63,13 +76,20 @@ public class SignatureVerificationService extends AbstractSignatureService
@Nullable
public ICmsSignatureVerificationResponse verifyCmsSignature(final byte[] signature,
final String trustProfileID) throws MoaSigServiceException {
+ return verifyCmsSignature(signature, trustProfileID, false);
+
+ }
+
+ @Override
+ public ICmsSignatureVerificationResponse verifyCmsSignature(byte[] signature, String trustProfileID,
+ boolean performExtendedValidation) throws MoaSigServiceException {
try {
// setup context
setUpContexts(Thread.currentThread().getName());
// verify signature
final VerifyCMSSignatureRequest cmsSigVerifyReq =
- buildVerfifyCmsRequest(signature, trustProfileID, false, false);
+ buildVerfifyCmsRequest(signature, trustProfileID, false, performExtendedValidation);
final VerifyCMSSignatureResponse cmsSigVerifyResp =
cadesInvoker.verifyCMSSignature(cmsSigVerifyReq);
return parseCmsVerificationResult(cmsSigVerifyResp);
@@ -87,9 +107,43 @@ public class SignatureVerificationService extends AbstractSignatureService
tearDownContexts();
}
-
}
+
+ @Override
+ public List<IPdfSignatureVerificationResponse> verifyPdfSignature(byte[] pdf, String trustProfileID)
+ throws MoaSigServiceException {
+ return verifyPdfSignature(pdf, trustProfileID, false);
+
+ }
+
+ @Override
+ public List<IPdfSignatureVerificationResponse> verifyPdfSignature(byte[] pdf, String trustProfileID,
+ boolean performExtendedValidation) throws MoaSigServiceException {
+ try {
+ // setup context
+ setUpContexts(Thread.currentThread().getName());
+
+ // verify signature
+ final VerifyCMSSignatureResponse cmsSigVerifyResp = cadesInvoker.verifyCMSSignature(
+ buildVerfifyCmsRequest(pdf, trustProfileID, true, performExtendedValidation));
+
+ return parsePdfVerificationResult(cmsSigVerifyResp);
+
+ } catch (final MOAException e) {
+ log.warn("PDF signature verification has an error.", e);
+ throw new MoaSigServiceException("service.03", new Object[] { e.toString() }, e);
+ } catch (final CertificateEncodingException e) {
+ log.warn("Can NOT serialize X509 certificate from PDF/PAdES signature-verification response",
+ e);
+ throw new MoaSigServiceException("service.03", new Object[] { e.toString() }, e);
+
+ } finally {
+ tearDownContexts();
+
+ }
+ }
+
/*
* (non-Javadoc)
*
@@ -99,7 +153,8 @@ public class SignatureVerificationService extends AbstractSignatureService
@Override
public IXmlSignatureVerificationResponse verifyXmlSignature(final byte[] signature,
final String trustProfileID) throws MoaSigServiceException {
- return verifyXmlSignature(signature, trustProfileID, null, DEFAULT_XPATH_SIGNATURE_LOCATION);
+ return verifyXmlSignature(signature, trustProfileID, null, DEFAULT_XPATH_SIGNATURE_LOCATION, null,
+ Collections.emptyMap());
}
@@ -115,7 +170,7 @@ public class SignatureVerificationService extends AbstractSignatureService
final String trustProfileID, final List<String> verifyTransformsInfoProfileID)
throws MoaSigServiceException {
return verifyXmlSignature(signature, trustProfileID, verifyTransformsInfoProfileID,
- DEFAULT_XPATH_SIGNATURE_LOCATION);
+ DEFAULT_XPATH_SIGNATURE_LOCATION, null, Collections.emptyMap());
}
/*
@@ -129,27 +184,37 @@ public class SignatureVerificationService extends AbstractSignatureService
public IXmlSignatureVerificationResponse verifyXmlSignature(final byte[] signature,
final String trustProfileID, final String signatureLocationXpath)
throws MoaSigServiceException {
- return verifyXmlSignature(signature, trustProfileID, null, signatureLocationXpath);
+ return verifyXmlSignature(signature, trustProfileID, null, signatureLocationXpath, null, Collections.emptyMap());
}
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.
- * ISignatureVerificationService# verifyXMLSignature(byte[], java.lang.String,
- * java.util.List, java.lang.String)
- */
+ @Override
+ public IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
+ Date signingDate) throws MoaSigServiceException {
+ return verifyXmlSignature(signature, trustProfileID, null,
+ DEFAULT_XPATH_SIGNATURE_LOCATION, signingDate, Collections.emptyMap());
+ }
+
+
@Override
public IXmlSignatureVerificationResponse verifyXmlSignature(final byte[] signature,
final String trustProfileID, final List<String> verifyTransformsInfoProfileID,
- final String xpathSignatureLocation) throws MoaSigServiceException {
+ final String xpathSignatureLocation, Date signingDate) throws MoaSigServiceException {
+ return verifyXmlSignature(signature, trustProfileID, verifyTransformsInfoProfileID, xpathSignatureLocation,
+ signingDate, Collections.emptyMap());
+ }
+
+ @Override
+ public IXmlSignatureVerificationResponse verifyXmlSignature(final byte[] signature,
+ final String trustProfileID, final List<String> verifyTransformsInfoProfileID,
+ final String xpathSignatureLocation, Date signingDate, final Map<String, byte[]> supplementContent)
+ throws MoaSigServiceException {
try {
// setup context
setUpContexts(Thread.currentThread().getName());
// build signature-verification request
final Element domVerifyXmlSignatureRequest = buildVerifyXmlRequest(signature, trustProfileID,
- verifyTransformsInfoProfileID, xpathSignatureLocation);
+ verifyTransformsInfoProfileID, xpathSignatureLocation, signingDate, supplementContent);
// send signature-verification to MOA-Sig
final VerifyXMLSignatureRequest vsrequest =
@@ -191,33 +256,90 @@ public class SignatureVerificationService extends AbstractSignatureService
log.warn(
"CMS or CAdES signature contains more than one technical signatures. Only validate the first signature");
}
+
+ return (ICmsSignatureVerificationResponse) parseBasisSignatureInformation(
+ new at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyCmsSignatureResponse(),
+ (VerifyCMSSignatureResponseElement) cmsSigVerifyResp.getResponseElements().get(0));
+ }
+
+ private List<IPdfSignatureVerificationResponse> parsePdfVerificationResult(
+ VerifyCMSSignatureResponse cmsSigVerifyResp) throws CertificateEncodingException {
+
+ List<IPdfSignatureVerificationResponse> result = new ArrayList<>();
+ if (cmsSigVerifyResp.getResponseElements() == null
+ || cmsSigVerifyResp.getResponseElements().isEmpty()) {
+ log.info("No CMS signature FOUND. ");
+
+ } else {
+ Iterator<?> it = cmsSigVerifyResp.getResponseElements().iterator();
+ while (it.hasNext()) {
+ VerifyCMSSignatureResponseElement el = (VerifyCMSSignatureResponseElement) it.next();
+ VerifyPdfSignatureResponse pdfSigResult =
+ (VerifyPdfSignatureResponse) parseBasisSignatureInformation(new VerifyPdfSignatureResponse(), el);
+
+ pdfSigResult.setSignatureCoversFullDocument(
+ el.getCoversFullDocument() != null
+ ? el.getCoversFullDocument() ? CoversFullDocument.YES : CoversFullDocument.NO
+ : CoversFullDocument.UNKNOWN);
+ pdfSigResult.setByteRange(convertByteRanges(el.getByteRangeOfSignature()));
+ result.add(pdfSigResult);
+
+ }
+ }
+
+ return result;
+
+ }
+
+ private List<Pair<Integer, Integer>> convertByteRanges(int[] byteRangeOfSignature) {
+ List<Pair<Integer, Integer>> result = new ArrayList<>();
+
+ if (byteRangeOfSignature != null) {
+ for (int i = 0; i < byteRangeOfSignature.length / 2; i++) {
+ result.add(Pair.newInstance(
+ Integer.valueOf(byteRangeOfSignature[i]),
+ Integer.valueOf(byteRangeOfSignature[i + 1])));
+
+ }
+ } else {
+ log.debug("PDF signature-verification result contains no byte-range information");
+
+ }
+
+ return result;
+ }
- final VerifyCMSSignatureResponseElement firstSig =
- (VerifyCMSSignatureResponseElement) cmsSigVerifyResp.getResponseElements().get(0);
-
- final at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.data.VerifyCmsSignatureResponse result =
- new at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.data.VerifyCmsSignatureResponse();
-
+ private GenericSignatureVerificationResponse parseBasisSignatureInformation(
+ GenericSignatureVerificationResponse result, VerifyCMSSignatureResponseElement resp)
+ throws CertificateEncodingException {
// parse results into response container
- result.setSignatureCheckCode(firstSig.getSignatureCheck().getCode());
- result.setCertificateCheckCode(firstSig.getCertificateCheck().getCode());
+ result.setSignatureCheckCode(resp.getSignatureCheck().getCode());
+ result.setCertificateCheckCode(resp.getCertificateCheck().getCode());
- if (firstSig.getSignerInfo() != null) {
- result.setSigningDateTime(firstSig.getSignerInfo().getSigningTime());
+ if (resp.getSignerInfo() != null) {
+ result.setSigningDateTime(resp.getSignerInfo().getSigningTime());
result
- .setX509CertificateEncoded(firstSig.getSignerInfo().getSignerCertificate().getEncoded());
- result.setQualifiedCertificate(firstSig.getSignerInfo().isQualifiedCertificate());
+ .setX509CertificateEncoded(resp.getSignerInfo().getSignerCertificate().getEncoded());
+ result.setQualifiedCertificate(resp.getSignerInfo().isQualifiedCertificate());
- result.setPublicAuthority(firstSig.getSignerInfo().isPublicAuthority());
- result.setPublicAuthorityCode(firstSig.getSignerInfo().getPublicAuhtorityID());
+ result.setPublicAuthority(resp.getSignerInfo().isPublicAuthority());
+ result.setPublicAuthorityCode(resp.getSignerInfo().getPublicAuhtorityID());
} else {
log.info("CMS or CAdES verification result contains no SignerInfo");
+
}
-
+
+
+ //TODO: add extended validation infos
+ result.setSignatureAlgorithmIdentifier(resp.getSignatureAlgorithm());
+ result.setExtendedCertificateCheckResult(resp.getExtendedCertificateCheck());
+ result.setFormValidationResults(resp.getAdESFormResults());
+
return result;
+
}
-
+
/**
* Build a VerifyCMS-Siganture request for MOA-Sig. <br>
* <br>
@@ -258,15 +380,21 @@ public class SignatureVerificationService extends AbstractSignatureService
* used for validation
* @param xpathSignatureLocation Xpath that points to location of
* Signature element
+ * @param sigValDate Signature timestamp
+ * @param supplementContent Map that contains supplement profile content; keyed by references. Each entry
+ * in this map becomes a Content/Base64Content child in the SupplementProfile
+ * node. Use this map to specify content of references that the verification
+ * service cannot resolve.
* @return MOA-Sig verification request element
* @throws MoaSigServiceBuilderException In case of an error
*/
private Element buildVerifyXmlRequest(final byte[] signature, final String trustProfileID,
- final List<String> verifyTransformsInfoProfileID, final String xpathSignatureLocation)
- throws MoaSigServiceBuilderException {
+ final List<String> verifyTransformsInfoProfileID, final String xpathSignatureLocation,
+ Date sigValDate, final Map<String, byte[]> supplementContent) throws MoaSigServiceBuilderException {
try {
// build empty document
final Document requestDoc_ = getNewDocumentBuilder();
+
final Element requestElem_ =
requestDoc_.createElementNS(MOA_NS_URI, "VerifyXMLSignatureRequest");
requestElem_.setAttributeNS(XMLNS_NS_URI, "xmlns", MOA_NS_URI);
@@ -275,6 +403,18 @@ public class SignatureVerificationService extends AbstractSignatureService
requestDoc_.appendChild(requestElem_);
// build the request
+
+ // build set signing time
+ if (sigValDate != null) {
+ final Element dateTimeElem = requestDoc_.createElementNS(MOA_NS_URI, "DateTime");
+ requestElem_.appendChild(dateTimeElem);
+ final Node dateTime = requestDoc_.createTextNode(
+ DateFormatUtils.format(sigValDate, PATTERN_ISSUE_INSTANT));
+ dateTimeElem.appendChild(dateTime);
+
+ }
+
+ //set other parameters
final Element verifiySignatureInfoElem =
requestDoc_.createElementNS(MOA_NS_URI, "VerifySignatureInfo");
requestElem_.appendChild(verifiySignatureInfoElem);
@@ -334,6 +474,25 @@ public class SignatureVerificationService extends AbstractSignatureService
trustProfileIdElem.appendChild(requestDoc_.createTextNode(trustProfileID));
requestElem_.appendChild(trustProfileIdElem);
+ // add supplement profile
+ if (!supplementContent.isEmpty()) {
+
+ final Element supplementProfile = requestDoc_.createElementNS(MOA_NS_URI, "SupplementProfile");
+
+ for (Map.Entry<String, byte[]> entry: supplementContent.entrySet()) {
+ String reference = entry.getKey();
+ byte[] contentBytes = entry.getValue();
+ final Element content = requestDoc_.createElementNS(MOA_NS_URI, "Content");
+ content.setAttribute("Reference", reference);
+ final Element b64content = requestDoc_.createElementNS(MOA_NS_URI, "Base64Content");
+ b64content.setTextContent(Base64Utils.encodeToString(contentBytes));
+ content.appendChild(b64content);
+ supplementProfile.appendChild(content);
+ }
+
+ requestElem_.appendChild(supplementProfile);
+ }
+
return requestElem_;
} catch (final Throwable t) {
@@ -342,7 +501,6 @@ public class SignatureVerificationService extends AbstractSignatureService
t);
}
-
}
@PostConstruct
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java
new file mode 100644
index 00000000..6006b731
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java
@@ -0,0 +1,223 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data;
+
+import java.io.Serializable;
+import java.security.cert.CertificateException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.IGenericSignatureVerificationResponse;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.exceptions.MoaSigServiceParserException;
+import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult;
+import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
+import iaik.x509.X509Certificate;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Getter
+@Setter
+public class GenericSignatureVerificationResponse
+ implements IGenericSignatureVerificationResponse, Serializable {
+
+ private static final long serialVersionUID = -7751001050689401118L;
+
+ /** The signing time. */
+ private Date signingDateTime;
+
+ /** The signatureCheckCode to be stored. */
+ private int signatureCheckCode;
+
+ /** The certificateCheckCode to be stored. */
+ private int certificateCheckCode;
+
+ /** The publicAuthority to be stored. */
+ private boolean publicAuthority;
+
+ /** The publicAuthorityCode to be stored. */
+ private String publicAuthorityCode;
+
+ /** The qualifiedCertificate to be stored. */
+ private boolean qualifiedCertificate;
+
+ private byte[] x509CertificateEncoded;
+
+ /**
+ * Identifier of the signing algorithm.
+ */
+ private String signatureAlgorithmIdentifier;
+
+ private ExtendedCertificateValidation extendedCertificateValidation;
+
+ private List<ExtendedResult> formValidationResults = null;
+
+ @Override
+ public Date getSigningDateTime() {
+ if (this.signingDateTime != null) {
+ return new Date(this.signingDateTime.getTime());
+ }
+ return null;
+
+ }
+
+ @Override
+ public X509Certificate getX509Certificate() throws MoaSigServiceException {
+ if (x509CertificateEncoded != null) {
+ try {
+ return new X509Certificate(x509CertificateEncoded);
+
+ } catch (final CertificateException e) {
+ log.error("Can NOT parse X509 certifcate in "
+ + GenericSignatureVerificationResponse.class.getName(), e);
+ throw new MoaSigServiceParserException("service.moasig.01", null, e);
+ }
+
+ }
+
+ return null;
+
+ }
+
+ @Override
+ public byte[] getX509CertificateEncoded() {
+ if (this.x509CertificateEncoded != null) {
+ return this.x509CertificateEncoded.clone();
+
+ }
+ return null;
+
+ }
+
+ @Override
+ public String getPublicAuthorityCode() {
+ if (StringUtils.isNotEmpty(this.publicAuthorityCode)) {
+ return this.publicAuthorityCode;
+
+ } else {
+ return null;
+
+ }
+
+ }
+
+ @Override
+ public List<ExtendedResult> getFormValidationResults() {
+ if (formValidationResults == null) {
+ return Collections.emptyList();
+
+ } else {
+ return formValidationResults;
+
+ }
+ }
+
+ /**
+ * Set signature creation timestramp.
+ *
+ * @param signingDateTime timestamp
+ */
+ public void setSigningDateTime(final Date signingDateTime) {
+ if (signingDateTime != null) {
+ this.signingDateTime = new Date(signingDateTime.getTime());
+ }
+ }
+
+ /**
+ * Set encoded signer certificate.
+ *
+ * @param x509CertificateEncoded signer cerificate
+ */
+ public void setX509CertificateEncoded(final byte[] x509CertificateEncoded) {
+ if (x509CertificateEncoded != null) {
+ this.x509CertificateEncoded = x509CertificateEncoded.clone();
+
+ }
+ }
+
+ /**
+ * Set extended certificate-validation result.
+ *
+ * @param extendedCertificateCheck Extended result from MOA-Sig
+ */
+ public void setExtendedCertificateCheckResult(ExtendedCertificateCheckResult extendedCertificateCheck) {
+ if (extendedCertificateCheck != null) {
+ this.extendedCertificateValidation = ExtendedCertificateValidation.builder()
+ .majorResult(ExtendedResult.builder()
+ .code(extendedCertificateCheck.getMajorCode())
+ .info(extendedCertificateCheck.getMajorInfo())
+ .build())
+ .minorResult(ExtendedResult.builder()
+ .code(extendedCertificateCheck.getMinorCode())
+ .info(extendedCertificateCheck.getMinorInfo())
+ .build())
+ .build();
+
+ } else {
+ log.debug("No extended verification-result. Skipping certificate-result extraction ... ");
+
+ }
+ }
+
+ /**
+ * Set form-validation result.
+ *
+ * @param formCheckResult Extended form-validation result from MOA-Sig
+ */
+ public void setFormValidationResults(List<?> formCheckResult) {
+ if (formCheckResult != null) {
+ for (Object elObj : formCheckResult) {
+ if (elObj instanceof AdESFormResults) {
+ AdESFormResults el = (AdESFormResults)elObj;
+
+ if (formValidationResults == null) {
+ formValidationResults = new ArrayList<>();
+
+ }
+
+ formValidationResults.add(ExtendedResult.builder()
+ .code(el.getCode())
+ .info(el.getName())
+ .build());
+
+ } else {
+ log.warn("Skip unknown form-validation result of type: {}", elObj.getClass().getName());
+
+ }
+ }
+
+ } else {
+ log.debug("No extended verification-result. Skipping form-validation result extraction ... ");
+
+ }
+
+ }
+
+ @Getter
+ @Builder
+ public static class ExtendedCertificateValidation implements Serializable {
+
+ private static final long serialVersionUID = -7800026008655393276L;
+
+ private ExtendedResult majorResult;
+ private ExtendedResult minorResult;
+
+ }
+
+ @Getter
+ @Builder
+ public static class ExtendedResult implements Serializable {
+
+ private static final long serialVersionUID = 8523769744476971010L;
+
+ private int code;
+ private String info;
+
+ }
+
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java
new file mode 100644
index 00000000..a812db56
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java
@@ -0,0 +1,14 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.ICmsSignatureVerificationResponse;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class VerifyCmsSignatureResponse extends GenericSignatureVerificationResponse
+ implements ICmsSignatureVerificationResponse {
+
+ private static final long serialVersionUID = 708260904158070696L;
+
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyPdfSignatureResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyPdfSignatureResponse.java
new file mode 100644
index 00000000..740ac55a
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyPdfSignatureResponse.java
@@ -0,0 +1,30 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data;
+
+import java.util.List;
+
+import at.gv.egiz.eaaf.core.impl.data.Pair;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.IPdfSignatureVerificationResponse;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class VerifyPdfSignatureResponse extends VerifyCmsSignatureResponse
+ implements IPdfSignatureVerificationResponse {
+
+ private static final long serialVersionUID = 1835687958341837826L;
+
+ /**
+ * Flag if signature covers the full pdf-document.
+ */
+ private CoversFullDocument signatureCoversFullDocument = CoversFullDocument.UNKNOWN;
+
+ /**
+ * PDF signing ranges as {@link List} of {@link Pair} of starting-byte and byte-length.
+ */
+ private List<Pair<Integer, Integer>> byteRange;
+
+
+ public enum CoversFullDocument { YES, NO, UNKNOWN }
+
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java
new file mode 100644
index 00000000..4021a90b
--- /dev/null
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java
@@ -0,0 +1,35 @@
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data;
+
+import at.gv.egiz.eaaf.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * MOA-Sig signature verification response for XML based signatures.
+ *
+ * @author tlenz
+ *
+ */
+
+@Getter
+@Setter
+public class VerifyXmlSignatureResponse extends GenericSignatureVerificationResponse
+ implements IXmlSignatureVerificationResponse {
+
+ private static final long serialVersionUID = 8386070769565711601L;
+
+ /** The xmlDsigSubjectName to be stored. */
+ private String xmlDsigSubjectName;
+
+ /** The xmlDSIGManifestCheckCode to be stored. */
+ private int xmlDsigManifestCheckCode;
+ /** The xmlDSIGManigest to be stored. */
+ private boolean xmlDsigManigest;
+
+ /**
+ * The result of the signature manifest check. The default value <code>-1</code>
+ * indicates that the signature manifest has not been checked.
+ */
+ private int signatureManifestCheckCode = -1;
+
+}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/parser/VerifyXmlSignatureResponseParser.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/parser/VerifyXmlSignatureResponseParser.java
index 231cb94f..746b5461 100644
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/parser/VerifyXmlSignatureResponseParser.java
+++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eaaf/modules/sigverify/moasig/impl/parser/VerifyXmlSignatureResponseParser.java
@@ -1,27 +1,26 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.parser;
+package at.gv.egiz.eaaf.modules.sigverify.moasig.impl.parser;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.joda.time.DateTime;
import org.joda.time.format.ISODateTimeFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.lang.NonNull;
import org.w3c.dom.Element;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceException;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceParserException;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.data.VerifyXmlSignatureResponse;
+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.exceptions.MoaSigServiceParserException;
+import at.gv.egiz.eaaf.modules.sigverify.moasig.impl.data.VerifyXmlSignatureResponse;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.DOMUtils;
import at.gv.egovernment.moaspss.util.XPathUtils;
import iaik.utils.Base64InputStream;
import iaik.x509.X509Certificate;
+import lombok.extern.slf4j.Slf4j;
+@Slf4j
public class VerifyXmlSignatureResponseParser {
- private static final Logger log = LoggerFactory.getLogger(VerifyXmlSignatureResponseParser.class);
//
// XPath namespace prefix shortcuts
@@ -180,7 +179,9 @@ public class VerifyXmlSignatureResponseParser {
respData.setSigningDateTime(datetime.toDate());
}
-
+
+ //TODO: parse extended validation results
+
return respData;
} catch (final Throwable t) {
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureCreationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureCreationService.java
deleted file mode 100644
index 66eedd79..00000000
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureCreationService.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api;
-
-public interface ISignatureCreationService {
-
-}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureVerificationService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureVerificationService.java
deleted file mode 100644
index 67e9e29d..00000000
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/api/ISignatureVerificationService.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api;
-
-import java.util.List;
-
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.ICmsSignatureVerificationResponse;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceException;
-
-public interface ISignatureVerificationService {
-
- /**
- * Verify a CAdES or CMS signature. <br>
- * <br>
- * <i>This method only validates the first CMS or CAdES signature if more than
- * one signature exists</i>
- *
- * @param signature Enveloped CMS or CAdES signature
- * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
- * @return @link {@link ICmsSignatureVerificationResponse}, or null if no
- * signature was found
- * @throws MoaSigServiceException on signatue-verification error
- */
- ICmsSignatureVerificationResponse verifyCmsSignature(byte[] signature, String trustProfileID)
- throws MoaSigServiceException;
-
- /**
- * Verify a XML or XAdES signature. <br>
- * <br>
- * <i>This method only validates the first XML or XAdES signature if more than
- * one signature exists</i>
- *
- * @param signature Serialized XML or XAdES signature
- * @param trustProfileID Id of the Trust-Profile from MOA-Sig configuration
- * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
- * signature was found
- * @throws MoaSigServiceException on signatue-verification error
- */
- IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID)
- throws MoaSigServiceException;
-
- /**
- * Verify a XML or XAdES signature. <br>
- * <br>
- * <i>This method only validates the first XML or XAdES signature if more than
- * one signature exists</i>
- *
- * @param signature Serialized XML or XAdES signature
- * @param trustProfileID Id of the Trust-Profile from MOA-Sig
- * configuration
- * @param verifyTransformsInfoProfileID {@link List} of XML Transformations that
- * should be used for
- * signature-verification
- * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
- * signature was found
- * @throws MoaSigServiceException on signatue-verification error
- */
- IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
- List<String> verifyTransformsInfoProfileID) throws MoaSigServiceException;
-
- /**
- * Verify a XML or XAdES signature. <br>
- * <br>
- * <i>This method only validates the first XML or XAdES signature if more than
- * one signature exists</i>
- *
- * @param signature Serialized XML or XAdES signature
- * @param trustProfileID Id of the Trust-Profile from MOA-Sig
- * configuration
- * @param signatureLocationXpath Xpath that points to location of Signature
- * element
- * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
- * signature was found
- * @throws MoaSigServiceException on signatue-verification error
- */
- IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
- String signatureLocationXpath) throws MoaSigServiceException;
-
- /**
- * Verify a XML or XAdES signature. <br>
- * <br>
- * <i>This method only validates the first XML or XAdES signature if more than
- * one signature exists</i>
- *
- * @param signature Serialized XML or XAdES signature
- * @param trustProfileID Id of the Trust-Profile from MOA-Sig
- * configuration
- * @param verifyTransformsInfoProfileID {@link List} of XML Transformations that
- * should be used for
- * signature-verification
- * @param signatureLocationXpath Xpath that points to location of
- * Signature element
- * @return @link {@link IXmlSignatureVerificationResponse}, or null if no
- * signature was found
- * @throws MoaSigServiceException on signatue-verification error
- */
- IXmlSignatureVerificationResponse verifyXmlSignature(byte[] signature, String trustProfileID,
- List<String> verifyTransformsInfoProfileID, String signatureLocationXpath)
- throws MoaSigServiceException;
-
-}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java
deleted file mode 100644
index 0485f31f..00000000
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/GenericSignatureVerificationResponse.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.data;
-
-import java.io.Serializable;
-import java.security.cert.CertificateException;
-import java.util.Date;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.IGenericSignatureVerificationResponse;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceException;
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MoaSigServiceParserException;
-import iaik.x509.X509Certificate;
-
-public class GenericSignatureVerificationResponse
- implements IGenericSignatureVerificationResponse, Serializable {
-
- private static final long serialVersionUID = -7751001050689401118L;
- private static final Logger log =
- LoggerFactory.getLogger(GenericSignatureVerificationResponse.class);
-
- /** The signing time. */
- private Date signingDateTime;
-
- /** The signatureCheckCode to be stored. */
- private int signatureCheckCode;
-
- /** The certificateCheckCode to be stored. */
- private int certificateCheckCode;
-
- /** The publicAuthority to be stored. */
- private boolean publicAuthority;
-
- /** The publicAuthorityCode to be stored. */
- private String publicAuthorityCode;
-
- /** The qualifiedCertificate to be stored. */
- private boolean qualifiedCertificate;
-
- private byte[] x509CertificateEncoded;
-
- @Override
- public Date getSigningDateTime() {
- if (this.signingDateTime != null) {
- return new Date(this.signingDateTime.getTime());
- }
- return null;
-
- }
-
- @Override
- public int getSignatureCheckCode() {
- return this.signatureCheckCode;
-
- }
-
- @Override
- public int getCertificateCheckCode() {
- return this.certificateCheckCode;
-
- }
-
- @Override
- public boolean isQualifiedCertificate() {
- return this.qualifiedCertificate;
-
- }
-
- @Override
- public X509Certificate getX509Certificate() throws MoaSigServiceException {
- if (x509CertificateEncoded != null) {
- try {
- return new X509Certificate(x509CertificateEncoded);
-
- } catch (final CertificateException e) {
- log.error("Can NOT parse X509 certifcate in "
- + GenericSignatureVerificationResponse.class.getName(), e);
- throw new MoaSigServiceParserException("service.moasig.01", null, e);
- }
-
- }
-
- return null;
-
- }
-
- @Override
- public byte[] getX509CertificateEncoded() {
- if (this.x509CertificateEncoded != null) {
- return this.x509CertificateEncoded.clone();
-
- }
- return null;
-
- }
-
- @Override
- public boolean isPublicAuthority() {
- return this.publicAuthority;
-
- }
-
- @Override
- public String getPublicAuthorityCode() {
- return this.publicAuthorityCode;
-
- }
-
- /**
- * Set signature creation timestramp.
- *
- * @param signingDateTime timestamp
- */
- public void setSigningDateTime(final Date signingDateTime) {
- if (signingDateTime != null) {
- this.signingDateTime = new Date(signingDateTime.getTime());
- }
- }
-
- public void setSignatureCheckCode(final int signatureCheckCode) {
- this.signatureCheckCode = signatureCheckCode;
- }
-
- public void setCertificateCheckCode(final int certificateCheckCode) {
- this.certificateCheckCode = certificateCheckCode;
- }
-
- public void setPublicAuthority(final boolean publicAuthority) {
- this.publicAuthority = publicAuthority;
- }
-
- public void setPublicAuthorityCode(final String publicAuthorityCode) {
- this.publicAuthorityCode = publicAuthorityCode;
- }
-
- public void setQualifiedCertificate(final boolean qualifiedCertificate) {
- this.qualifiedCertificate = qualifiedCertificate;
- }
-
- /**
- * Set encoded signer certificate.
- *
- * @param x509CertificateEncoded signer cerificate
- */
- public void setX509CertificateEncoded(final byte[] x509CertificateEncoded) {
- if (x509CertificateEncoded != null) {
- this.x509CertificateEncoded = x509CertificateEncoded.clone();
-
- }
- }
-
-}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java
deleted file mode 100644
index ed679828..00000000
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyCmsSignatureResponse.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.data;
-
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.ICmsSignatureVerificationResponse;
-
-public class VerifyCmsSignatureResponse extends GenericSignatureVerificationResponse
- implements ICmsSignatureVerificationResponse {
-
- private static final long serialVersionUID = 708260904158070696L;
-
-}
diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java
deleted file mode 100644
index 4b0632b1..00000000
--- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/data/VerifyXmlSignatureResponse.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package at.gv.egiz.eid.authhandler.modules.sigverify.moasig.impl.data;
-
-import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.IXmlSignatureVerificationResponse;
-
-/**
- * MOA-Sig signature verification response for XML based signatures.
- *
- * @author tlenz
- *
- */
-
-public class VerifyXmlSignatureResponse extends GenericSignatureVerificationResponse
- implements IXmlSignatureVerificationResponse {
-
- private static final long serialVersionUID = 8386070769565711601L;
-
- /** The xmlDsigSubjectName to be stored. */
- private String xmlDsigSubjectName;
-
- /** The xmlDSIGManifestCheckCode to be stored. */
- private int xmlDsigManifestCheckCode;
- /** The xmlDSIGManigest to be stored. */
- private boolean xmlDsigManigest;
-
- /**
- * The result of the signature manifest check. The default value <code>-1</code>
- * indicates that the signature manifest has not been checked.
- */
- private int signatureManifestCheckCode = -1;
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * getXmlDSIGManifestCheckCode()
- */
- @Override
- public int getXmlDsigManifestCheckCode() {
- return xmlDsigManifestCheckCode;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * getXmlDsigSubjectName()
- */
- @Override
- public String getXmlDsigSubjectName() {
- return xmlDsigSubjectName;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * setXmlDSIGManifestCheckCode( int)
- */
- public void setXmlDsigManifestCheckCode(final int xmlDsigManifestCheckCode) {
- this.xmlDsigManifestCheckCode = xmlDsigManifestCheckCode;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * setXmlDsigSubjectName(java.lang .String)
- */
- public void setXmlDsigSubjectName(final String xmlDsigSubjectName) {
- this.xmlDsigSubjectName = xmlDsigSubjectName;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * isXmlDSIGManigest()
- */
- @Override
- public boolean isXmlDsigManigest() {
- return xmlDsigManigest;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * setXmlDSIGManigest(boolean)
- */
- public void setXmlDsigManigest(final boolean xmlDsigManigest) {
- this.xmlDsigManigest = xmlDsigManigest;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * getSignatureManifestCheckCode()
- */
- @Override
- public int getSignatureManifestCheckCode() {
- return signatureManifestCheckCode;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see at.gv.egovernment.moa.id.auth.data.IVerifiyXMLSignatureResponse#
- * setSignatureManifestCheckCode( int)
- */
- public void setSignatureManifestCheckCode(final int signatureManifestCheckCode) {
- this.signatureManifestCheckCode = signatureManifestCheckCode;
- }
-
-}