aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
diff options
context:
space:
mode:
Diffstat (limited to 'moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java')
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java110
1 files changed, 85 insertions, 25 deletions
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
index c48cecd..0480316 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
@@ -23,41 +23,19 @@
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.server.modules.AdESFormVerificationResult;
-import iaik.server.modules.AdESVerificationResult;
-import iaik.server.modules.IAIKException;
-import iaik.server.modules.IAIKRuntimeException;
-import iaik.server.modules.SignatureVerificationProfile;
-import iaik.server.modules.cmsverify.CMSSignatureVerificationModule;
-import iaik.server.modules.cmsverify.CMSSignatureVerificationModuleFactory;
-import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile;
-import iaik.server.modules.cmsverify.CMSSignatureVerificationResult;
-import iaik.server.modules.cmsverify.ExtendedCMSSignatureVerificationResult;
-import iaik.server.modules.pdfverify.PDFSignatureVerificationProfile;
-import iaik.server.modules.pdfverify.PDFSignatureVerificationResult;
-import iaik.util.logging.Log;
-import iaik.server.modules.pdfverify.ExtendedPDFSignatureVerificationResult;
-import iaik.server.modules.pdfverify.PDFSignatureVerificationModule;
-import iaik.x509.X509Certificate;
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
-import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import org.apache.commons.codec.binary.Hex;
-import org.apache.commons.io.HexDump;
-import org.apache.commons.io.IOUtils;
-import org.slf4j.LoggerFactory;
-
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
+import at.gv.egovernment.moa.spss.MOARuntimeException;
import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentExcplicit;
import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentReference;
@@ -75,6 +53,23 @@ import at.gv.egovernment.moa.spss.util.QCSSCDResult;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.logging.LoggingContext;
import at.gv.egovernment.moaspss.logging.LoggingContextManager;
+import iaik.server.ConfigurationException;
+import iaik.server.modules.AdESFormVerificationResult;
+import iaik.server.modules.AdESVerificationResult;
+import iaik.server.modules.IAIKException;
+import iaik.server.modules.IAIKRuntimeException;
+import iaik.server.modules.SignatureVerificationProfile;
+import iaik.server.modules.SignatureVerificationResult;
+import iaik.server.modules.cmsverify.CMSSignatureVerificationModule;
+import iaik.server.modules.cmsverify.CMSSignatureVerificationModuleFactory;
+import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile;
+import iaik.server.modules.cmsverify.CMSSignatureVerificationResult;
+import iaik.server.modules.cmsverify.ExtendedCMSSignatureVerificationResult;
+import iaik.server.modules.pdfverify.ExtendedPDFSignatureVerificationResult;
+import iaik.server.modules.pdfverify.PDFSignatureVerificationModule;
+import iaik.server.modules.pdfverify.PDFSignatureVerificationProfile;
+import iaik.server.modules.pdfverify.PDFSignatureVerificationResult;
+import iaik.x509.X509Certificate;
/**
* A class providing an interface to the
@@ -264,7 +259,11 @@ public class CMSSignatureVerificationInvoker {
if (resultObject instanceof ExtendedCMSSignatureVerificationResult) {
ExtendedCMSSignatureVerificationResult result = (ExtendedCMSSignatureVerificationResult) resultObject;
cmsResult = result.getCMSSignatureVerificationResult();
- adesResults = getAdESResult(result.getFormVerificationResult());
+ try {
+ adesResults = getAdESResult(result);
+ } catch (ConfigurationException e) {
+ Logger.warn("Failed to provide extended validation results", e);
+ }
if (adesResults != null) {
Iterator adesIterator = adesResults.iterator();
@@ -363,7 +362,12 @@ public class CMSSignatureVerificationInvoker {
if (resultObject instanceof ExtendedPDFSignatureVerificationResult) {
ExtendedPDFSignatureVerificationResult result = (ExtendedPDFSignatureVerificationResult) resultObject;
cmsResult = result.getPDFSignatureVerificationResult();
- adesResults = getAdESResult(result.getFormVerificationResult());
+ try {
+ adesResults = getAdESResult(result);
+ } catch (ConfigurationException e) {
+ Logger.warn("Failed to provide extended validation results", e);
+ //throw new MOARuntimeException("config.52", null);
+ }
if (adesResults != null) {
Iterator adesIterator = adesResults.iterator();
@@ -508,6 +512,46 @@ public class CMSSignatureVerificationInvoker {
}
+ private List getAdESResult(ExtendedCMSSignatureVerificationResult adesFormVerification) throws ConfigurationException {
+ if (adesFormVerification == null) {
+ // no form information
+ return null;
+ }
+
+ List adesList = new ArrayList();
+
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA),
+ SignatureVerificationProfile.LEVEL_LTA, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT),
+ SignatureVerificationProfile.LEVEL_LT, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T),
+ SignatureVerificationProfile.LEVEL_T, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B),
+ SignatureVerificationProfile.LEVEL_B, adesList);
+
+ return adesList;
+ }
+
+ private List getAdESResult(ExtendedPDFSignatureVerificationResult adesFormVerification) throws ConfigurationException {
+ if (adesFormVerification == null) {
+ // no form information
+ return null;
+ }
+
+ List adesList = new ArrayList();
+
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA),
+ SignatureVerificationProfile.LEVEL_LTA, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT),
+ SignatureVerificationProfile.LEVEL_LT, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T),
+ SignatureVerificationProfile.LEVEL_T, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B),
+ SignatureVerificationProfile.LEVEL_B, adesList);
+
+ return adesList;
+ }
+
private List getAdESResult(AdESFormVerificationResult adesFormVerification) {
if (adesFormVerification == null) {
// no form information
@@ -528,6 +572,22 @@ public class CMSSignatureVerificationInvoker {
return adesList;
}
+ private void checkSubResult(SignatureVerificationResult subResult, String level, List adesList) throws ConfigurationException {
+ if (subResult != null) {
+ Logger.info("Checking Level: " + level);
+ try {
+ AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
+ adESFormResultsImpl.setCode(subResult.getResultCode().getCode());
+ adESFormResultsImpl.setInfo(subResult.getInfo());
+ adESFormResultsImpl.setName(subResult.getName());
+
+ adesList.add(adESFormResultsImpl);
+ } catch (NullPointerException e) {
+ Logger.warn("Catching NullPointer Exception, of invalid? Form Results", e);
+ }
+ }
+ }
+
private void checkSubResult(AdESVerificationResult subResult, String level, List adesList) {
if (subResult != null) {
Logger.info("Checking Level: " + level);