diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-07-14 13:27:56 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-07-14 13:27:56 +0200 |
commit | 030ad8ea8455922ad59c095d3a9ecbfc462ff69f (patch) | |
tree | 3fb0ab24b8432dae25efab6ef3e3b77bd623b1d5 /pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java | |
parent | 38a852e11c1edd313ab0882ac7bda00a82546fbb (diff) | |
download | pdf-as-4-030ad8ea8455922ad59c095d3a9ecbfc462ff69f.tar.gz pdf-as-4-030ad8ea8455922ad59c095d3a9ecbfc462ff69f.tar.bz2 pdf-as-4-030ad8ea8455922ad59c095d3a9ecbfc462ff69f.zip |
many fixes for html5 js viewer integration
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java')
-rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java index 9e217058..a06177e3 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java @@ -26,6 +26,7 @@ package at.gv.egiz.pdfas.web.servlets; import java.io.File; import java.io.IOException; import java.util.List; +import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -289,8 +290,10 @@ public class ExternSignServlet extends HttpServlet { HttpServletResponse response, byte[] pdfData, StatisticEvent statisticEvent) throws Exception { // Get Connector String connector = PdfAsParameterExtractor.getConnector(request); + PdfAsHelper.setConnector(request, connector); String transactionId = PdfAsParameterExtractor.getTransactionId(request); + PdfAsHelper.setTransactionid(request, transactionId); statisticEvent.setFilesize(pdfData.length); statisticEvent.setProfileId(null); @@ -329,8 +332,25 @@ public class ExternSignServlet extends HttpServlet { PdfAsHelper.setSignatureDataHash(request, pdfDataHash); logger.debug("Storing signatures data hash: " + pdfDataHash); + boolean manualPositioning = PdfAsParameterExtractor.isUserPositioning(request); + logger.debug("Starting signature creation with: " + connector); + String sigType = PdfAsParameterExtractor + .getSigType(request); + PdfAsHelper.setSignatureType(request, sigType); + + Map<String, String> preProcessorMap = PdfAsParameterExtractor.getPreProcessorMap(request); + PdfAsHelper.setPreProcessorMap(request, preProcessorMap); + + Map<String, String> overwriteMap = PdfAsParameterExtractor.getOverwriteMap(request); + PdfAsHelper.setOverwriteMap(request, overwriteMap); + + String keyIdentifier = PdfAsParameterExtractor.getKeyIdentifier(request); + PdfAsHelper.setKeyIdentifier(request, keyIdentifier); + + PdfAsHelper.setStatisticEvent(request, response, statisticEvent); + //IPlainSigner signer; if (connector.equals("bku") || connector.equals("onlinebku") || connector.equals("mobilebku")) { // start asynchronous signature creation @@ -351,21 +371,33 @@ public class ExternSignServlet extends HttpServlet { if(WebConfiguration.getLocalBKUURL() == null) { throw new PdfAsWebException("Invalid connector mobilebku is not supported"); } - } + } - PdfAsHelper.setStatisticEvent(request, response, statisticEvent); + if(manualPositioning) { + // store pdf data + // redirect to viewer html + String token = PdfAsHelper.storePdfData(pdfData, request); + + String pdfDataUrl = PdfAsHelper.generatePositioningURL(token, request, response); + + if(pdfDataUrl != null) { + response.sendRedirect(response.encodeRedirectURL(pdfDataUrl)); + return; + } else { + // remove Pdf data form session again! + PdfAsHelper.getPdfData(token, request); + } + } PdfAsHelper.startSignature(request, response, getServletContext(), pdfData, connector, - PdfAsHelper.buildPosString(request, response), transactionId, PdfAsParameterExtractor - .getSigType(request), PdfAsParameterExtractor.getPreProcessorMap(request), - PdfAsParameterExtractor.getOverwriteMap(request)); + PdfAsHelper.buildPosString(request, response), transactionId, sigType, + preProcessorMap, + overwriteMap); return; } else if (connector.equals("jks") || connector.equals("moa")) { // start synchronous siganture creation if(connector.equals("jks")) { - - String keyIdentifier = PdfAsParameterExtractor.getKeyIdentifier(request); boolean ksEnabled = false; @@ -390,7 +422,21 @@ public class ExternSignServlet extends HttpServlet { } } - + if(manualPositioning) { + // store pdf data + // redirect to viewer html + String token = PdfAsHelper.storePdfData(pdfData, request); + + String pdfDataUrl = PdfAsHelper.generatePositioningURL(token, request, response); + + if(pdfDataUrl != null) { + response.sendRedirect(response.encodeRedirectURL(pdfDataUrl)); + return; + } else { + // remove Pdf data form session again! + PdfAsHelper.getPdfData(token, request); + } + } byte[] pdfSignedData = PdfAsHelper.synchornousSignature(request, response, pdfData); |