diff options
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper')
-rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java | 28 | ||||
-rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java | 27 |
2 files changed, 44 insertions, 11 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java index 11ee4790..2f7c9323 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java @@ -301,7 +301,7 @@ public class PdfAsHelper { return sb.toString(); } - public static List<VerifyResult> synchornousVerify( + public static List<VerifyResult> synchronousVerify( HttpServletRequest request, HttpServletResponse response, byte[] pdfData) throws Exception { String signidxString = PdfAsParameterExtractor.getSigIdx(request); @@ -332,9 +332,9 @@ public class PdfAsHelper { return results; } - public static List<VerifyResult> synchornousVerify(byte[] pdfData, - int signIdx, SignatureVerificationLevel lvl, - Map<String, String> preProcessor) throws Exception { + public static List<VerifyResult> synchronousVerify(byte[] pdfData, + int signIdx, SignatureVerificationLevel lvl, + Map<String, String> preProcessor) throws Exception { logger.debug("Verifing Signature index: " + signIdx); Configuration config = pdfAs.getConfiguration(); @@ -364,11 +364,13 @@ public class PdfAsHelper { * The Web response * @param pdfData * The pdf data + * @param dynamicSignatureBlockArguments * @return The signed pdf data * @throws Exception */ - public static byte[] synchornousSignature(HttpServletRequest request, - HttpServletResponse response, byte[] pdfData) throws Exception { + public static byte[] synchronousSignature(HttpServletRequest request, + HttpServletResponse response, byte[] pdfData, + Map<String, String> dynamicSignatureBlockArguments) throws Exception { validatePdfSize(request, response, pdfData); Configuration config = pdfAs.getConfiguration(); @@ -506,6 +508,8 @@ public class PdfAsHelper { // set Signature Position signParameter.setSignaturePosition(buildPosString(request, response)); + //set signature block parameters + signParameter.setDynamicSignatureBlockArguments(dynamicSignatureBlockArguments); @SuppressWarnings("unused") SignResult result = pdfAs.sign(signParameter); @@ -522,8 +526,9 @@ public class PdfAsHelper { * @return The signed pdf data * @throws Exception */ - public static PDFASSignResponse synchornousServerSignature(byte[] pdfData, - PDFASSignParameters params) throws Exception { + public static PDFASSignResponse synchronousServerSignature(byte[] pdfData, + PDFASSignParameters params, Map<String, String> dynamicSignatureBlockArguments) throws Exception { + Configuration config = pdfAs.getConfiguration(); if (WebConfiguration.isAllowExtOverwrite() && params.getOverrides() != null) { @@ -658,6 +663,8 @@ public class PdfAsHelper { signParameter.setPreprocessorArguments(params.getPreprocessor() .getMap()); } + //TODO alex + signParameter.setDynamicSignatureBlockArguments(dynamicSignatureBlockArguments); SignResult signResult = pdfAs.sign(signParameter); @@ -771,7 +778,7 @@ public class PdfAsHelper { HttpServletResponse response, ServletContext context, byte[] pdfData, String connector, String position, String transactionId, String profile, - Map<String, String> preProcessor, Map<String, String> overwrite) throws Exception { + Map<String, String> preProcessor, Map<String, String> overwrite, Map<String, String> dynamicSignatureBlockArguments) throws Exception { // TODO: Protect session so that only one PDF can be signed during one // session @@ -856,6 +863,7 @@ public class PdfAsHelper { // set Signature Position signParameter.setSignaturePosition(position); + signParameter.setDynamicSignatureBlockArguments(dynamicSignatureBlockArguments); StatusRequest statusRequest = pdfAs.startSign(signParameter); session.setAttribute(PDF_STATUS, statusRequest); @@ -1283,7 +1291,7 @@ public class PdfAsHelper { baos.close(); PDFASVerificationResponse verResponse = new PDFASVerificationResponse(); - List<VerifyResult> verResults = PdfAsHelper.synchornousVerify( + List<VerifyResult> verResults = PdfAsHelper.synchronousVerify( baos.toByteArray(), -2, PdfAsHelper.getVerificationLevel(request), null); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java index 5415b233..31fbf46d 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java @@ -23,6 +23,7 @@ ******************************************************************************/ package at.gv.egiz.pdfas.web.helper; +import java.nio.charset.Charset; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; @@ -31,6 +32,8 @@ import javax.servlet.http.HttpServletRequest; import at.gv.egiz.pdfas.lib.api.IConfigurationConstants; import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class PdfAsParameterExtractor { @@ -74,7 +77,10 @@ public class PdfAsParameterExtractor { public static final String PARAM_PREPROCESSOR_PREFIX = "pp:"; public static final String PARAM_OVERWRITE_PREFIX = "ov:"; public static final String PARAM_QRCODE_CONTENT = "qrcontent"; + public static final String PARAM_DYNAMIC_SIGNATURE_BLOCK_PARAMETER = "sbp:"; + private static final Logger logger = LoggerFactory + .getLogger(PdfAsParameterExtractor.class); public static String getConnector(HttpServletRequest request) { String connector = (String)request.getAttribute(PARAM_CONNECTOR); @@ -83,7 +89,26 @@ public class PdfAsParameterExtractor { } return PARAM_CONNECTOR_DEFAULT; } - + + public static Map<String,String> getDynamicSignatureBlockParameters(HttpServletRequest request) throws Exception { + HashMap<String, String> signatureBlockParametersMap = new HashMap<String, String>(); + logger.debug("Default charset:"+ Charset.defaultCharset()); + logger.debug("Request charset:"+ request.getCharacterEncoding()); + + Enumeration<String> parameterNames = request.getAttributeNames(); + while(parameterNames.hasMoreElements()) { + String parameterName = parameterNames.nextElement(); + if (parameterName.startsWith(PARAM_DYNAMIC_SIGNATURE_BLOCK_PARAMETER)) { + String key = parameterName.substring(PARAM_DYNAMIC_SIGNATURE_BLOCK_PARAMETER.length()); + String value = (String) request.getAttribute(parameterName); + if(value != null && !value.isEmpty()){ + signatureBlockParametersMap.put(key, value); + logger.debug("Setting key "+ key +" to "+ value ); + } + } + } + return signatureBlockParametersMap; + } public static String getQRCodeContent(HttpServletRequest request) { String qrcodeContent = (String)request.getAttribute(PARAM_QRCODE_CONTENT); return qrcodeContent; |