From 53ae98cdfa510650c1e015efd0d11a96ad4dc87a Mon Sep 17 00:00:00 2001 From: Andreas Fitzek Date: Mon, 20 Jun 2016 12:45:07 +0200 Subject: ASiC Library added --- .../java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java (limited to 'moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java') diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java new file mode 100644 index 0000000..51392da --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java @@ -0,0 +1,87 @@ +package at.gv.egiz.asic.impl; + +import at.gv.egiz.asic.ASiCManifestType; +import at.gv.egiz.asic.DataObjectReferenceType; +import at.gv.egiz.asic.ReferenceType; +import at.gv.egiz.asic.XAdESSignaturesType; +import at.gv.egiz.asic.api.*; +import at.gv.egiz.asic.impl.verifier.ExtendedCAdESVerifier; +import at.gv.egiz.asic.impl.verifier.ExtendedXAdESVerifier; +import at.gv.egiz.asic.impl.verifier.SimpleCAdESVerifier; +import at.gv.egiz.asic.impl.verifier.SimpleXAdESVerifier; +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.MOASystemException; +import at.gv.egovernment.moa.spss.api.SPSSFactory; +import at.gv.egovernment.moa.spss.api.cmsverify.*; +import at.gv.egovernment.moa.spss.api.common.*; +import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl; +import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation; +import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest; +import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker; +import at.gv.egovernment.moa.spss.server.invoke.VerifyCMSSignatureResponseBuilder; +import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker; +import iaik.server.cmspdfverify.CertificateValidationResult; +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.xml.bind.DataBindingException; +import javax.xml.bind.JAXB; +import javax.xml.crypto.dsig.Reference; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.DigestInputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.*; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public class ASiCMOAVerifier implements ASiCVerifier { + + private static final Logger logger = LoggerFactory.getLogger(ASiCMOAVerifier.class); + + private List verifierMap = new ArrayList(); + + public ASiCMOAVerifier() { + verifierMap.add(new SimpleCAdESVerifier()); + verifierMap.add(new SimpleXAdESVerifier()); + verifierMap.add(new ExtendedCAdESVerifier()); + verifierMap.add(new ExtendedXAdESVerifier()); + } + + @Override + public List verify(ASiC asic, String trustProfileID, Date date) throws MOAException { + List response = new ArrayList(); + boolean handled = false; + + Iterator verifierIterator = verifierMap.iterator(); + + while (verifierIterator.hasNext()) { + Verifier verifier = verifierIterator.next(); + if (verifier.handles(asic)) { + verifier.verify(asic, trustProfileID, date, response); + handled = true; + break; + } + } + + if (!handled) { + logger.warn("Cannot handle ASiC: {}", asic); + throw new MOASystemException("asic.0016", null); + } + + return response; + } + + +} -- cgit v1.2.3