diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2016-06-20 12:45:07 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2016-06-20 12:45:07 +0200 |
commit | 53ae98cdfa510650c1e015efd0d11a96ad4dc87a (patch) | |
tree | 8e7ab77a9208b541416d14bbdb15e7211ff40c5b /moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler | |
parent | acf1b849ab835bc6797adfb91f8ab4fa88f0aff5 (diff) | |
download | moa-sig-53ae98cdfa510650c1e015efd0d11a96ad4dc87a.tar.gz moa-sig-53ae98cdfa510650c1e015efd0d11a96ad4dc87a.tar.bz2 moa-sig-53ae98cdfa510650c1e015efd0d11a96ad4dc87a.zip |
ASiC Library added
Diffstat (limited to 'moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler')
18 files changed, 344 insertions, 0 deletions
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java new file mode 100644 index 0000000..fa31bfc --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java @@ -0,0 +1,28 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.impl.EntryHandler; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by afitzek on 6/15/16. + */ +public class AllDataHandler extends BaseHandler implements EntryHandler, ASiCConstants { + @Override + public int getPriority() { + return 100; + } + + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { + + ASiCEntry entry = buildASiCEntry(entryName, is); + container.addDataEntry(entry); + + return true; + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java new file mode 100644 index 0000000..2b5ca9a --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java @@ -0,0 +1,27 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.impl.EntryHandler; +import org.apache.commons.io.IOUtils; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public abstract class BaseHandler implements EntryHandler, ASiCConstants { + + protected ASiCEntry buildASiCEntry(String entryName, InputStream is) throws IOException { + ASiCEntry entry = new ASiCEntry(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + IOUtils.copy(is, baos); + entry.setContents(new ByteArrayInputStream(baos.toByteArray())); + entry.setEntryName(entryName); + return entry; + } + +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java new file mode 100644 index 0000000..3ee97fc --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java @@ -0,0 +1,20 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egiz.asic.impl.EntryHandler; +import at.gv.egovernment.moa.spss.MOAException; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public abstract class CAdESHandler extends SignatureHandler implements EntryHandler, ASiCConstants { + + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsCAdES(); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java new file mode 100644 index 0000000..f89c6d0 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java @@ -0,0 +1,18 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egovernment.moa.spss.MOAException; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public abstract class EvidenceERSRecordHandler extends SignatureHandler { + + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsEvidenceERS(); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java new file mode 100644 index 0000000..4516bb0 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java @@ -0,0 +1,15 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egovernment.moa.spss.MOAException; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public abstract class EvidenceXMLRecordHandler extends SignatureHandler { + + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsEvidenceXML(); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java new file mode 100644 index 0000000..464bcf6 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java @@ -0,0 +1,13 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public class ExtendedASiCCAdESHandler extends CAdESHandler { + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".p7s") && entryName.startsWith(FILE_META_INF) && entryName.contains("signature"); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java new file mode 100644 index 0000000..28b21a3 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java @@ -0,0 +1,11 @@ +package at.gv.egiz.asic.impl.handler; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public class ExtendedASiCXAdESHandler extends XAdESHandler { + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains("signature"); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java new file mode 100644 index 0000000..ccf9224 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java @@ -0,0 +1,11 @@ +package at.gv.egiz.asic.impl.handler; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public class ExtendedEvidenceERSRecordHandler extends EvidenceERSRecordHandler { + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".ers") && entryName.startsWith(FILE_META_INF) && entryName.contains("evidencerecord"); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java new file mode 100644 index 0000000..d24d61b --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java @@ -0,0 +1,11 @@ +package at.gv.egiz.asic.impl.handler; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public class ExtendedEvidenceXMLRecordHandler extends EvidenceERSRecordHandler { + @Override + protected boolean matches(String entryName) { + return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains("evidencerecord"); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java new file mode 100644 index 0000000..36a215d --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java @@ -0,0 +1,16 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.impl.EntryHandler; + +import java.util.Comparator; + +/** + * Created by afitzek on 6/15/16. + */ +public class HandlerSorter implements Comparator<EntryHandler> { + + @Override + public int compare(EntryHandler o1, EntryHandler o2) { + return Integer.compare(o1.getPriority(), o2.getPriority()); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java new file mode 100644 index 0000000..ec4f101 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java @@ -0,0 +1,33 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egiz.asic.api.ASiCEntry; +import at.gv.egiz.asic.impl.EntryHandler; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public class MetaInfHandler extends BaseHandler implements EntryHandler, ASiCConstants { + @Override + public int getPriority() { + return 20; + } + + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { + + boolean metainf = entryName.startsWith(FILE_META_INF); + + if(metainf) { + ASiCEntry entry = buildASiCEntry(entryName, is); + container.addInformationEntry(entry); + return true; + } + + return false; + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java new file mode 100644 index 0000000..68fc87e --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java @@ -0,0 +1,36 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egiz.asic.impl.EntryHandler; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by afitzek on 6/15/16. + */ +public class MimefileHandler implements EntryHandler, ASiCConstants { + + private boolean isMimeType(String entryName) { + return FILE_MIME_TYPE.equalsIgnoreCase(entryName); + } + + @Override + public int getPriority() { + return 1; + } + + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException { + + if(isMimeType(entryName)) { + String mimeType = IOUtils.toString(is, "UTF-8"); + container.setMimeType(mimeType); + return true; + } + + return false; + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java new file mode 100644 index 0000000..621c9d4 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java @@ -0,0 +1,36 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egovernment.moa.spss.MOAException; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public abstract class SignatureHandler extends BaseHandler { + + @Override + public int getPriority() { + return 0; + } + + protected abstract boolean matches(String entryName); + + protected abstract void setType(ASiCContainer container) throws MOAException; + + @Override + public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException { + boolean signature = this.matches(entryName); + + if(signature) { + this.setType(container); + container.addSignatureEntry(buildASiCEntry(entryName, is)); + return true; + } + + return false; + } + +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java new file mode 100644 index 0000000..fdeda41 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java @@ -0,0 +1,13 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public class SimpleASiCCAdESHandler extends CAdESHandler { + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "signature.p7s").equalsIgnoreCase(entryName); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java new file mode 100644 index 0000000..66a7546 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java @@ -0,0 +1,13 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; + +/** + * Created by Andreas Fitzek on 6/15/16. + */ +public class SimpleASiCXAdESHandler extends XAdESHandler { + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "signatures.xml").equalsIgnoreCase(entryName); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java new file mode 100644 index 0000000..58221f5 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java @@ -0,0 +1,13 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public class SimpleEvidenceERSRecordHandler extends EvidenceERSRecordHandler { + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "evidencerecord.ers").equalsIgnoreCase(entryName); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java new file mode 100644 index 0000000..dacc218 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java @@ -0,0 +1,13 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; + +/** + * Created by Andreas Fitzek on 6/17/16. + */ +public class SimpleEvidenceXMLRecordHandler extends EvidenceERSRecordHandler { + @Override + protected boolean matches(String entryName) { + return (ASiCConstants.FILE_META_INF + "evidencerecord.xml").equalsIgnoreCase(entryName); + } +} diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java new file mode 100644 index 0000000..ff19759 --- /dev/null +++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java @@ -0,0 +1,17 @@ +package at.gv.egiz.asic.impl.handler; + +import at.gv.egiz.asic.api.ASiCConstants; +import at.gv.egiz.asic.impl.ASiCContainer; +import at.gv.egiz.asic.impl.EntryHandler; +import at.gv.egovernment.moa.spss.MOAException; + +/** + * Created by afitzek on 6/15/16. + */ +public abstract class XAdESHandler extends SignatureHandler implements EntryHandler, ASiCConstants { + + @Override + protected void setType(ASiCContainer container) throws MOAException { + container.setIsXAdES(); + } +} |