aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-common/src/main/java/at/gv
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-common/src/main/java/at/gv')
-rw-r--r--pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignRequest.java16
-rw-r--r--pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/DefaultSignatureProfileSettings.java4
-rw-r--r--pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java1
-rw-r--r--pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/CheckSignatureBlockParameters.java42
4 files changed, 63 insertions, 0 deletions
diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignRequest.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignRequest.java
index 3e714ea9..39a384b2 100644
--- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignRequest.java
+++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignRequest.java
@@ -24,6 +24,8 @@
package at.gv.egiz.pdfas.api.ws;
import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@@ -40,6 +42,9 @@ public class PDFASSignRequest implements Serializable {
byte[] inputData;
PDFASSignParameters parameters;
VerificationLevel verificationLevel;
+
+ //map of user provided parameters, these values can be used in the signature block
+ Map<String,String> signatureBlockParameters;
@XmlElement(required = true, nillable = false, name="requestID")
public String getRequestID() {
@@ -76,4 +81,15 @@ public class PDFASSignRequest implements Serializable {
public void setParameters(PDFASSignParameters parameters) {
this.parameters = parameters;
}
+
+ @XmlElement(required = false, nillable = true, name="signatureBlockParameter")
+ public Map<String, String> getSignatureBlockParameters() {
+ if(signatureBlockParameters == null)
+ signatureBlockParameters = new HashMap<>();
+ return signatureBlockParameters;
+ }
+
+ public void setSignatureBlockParameters(Map<String, String> signatureBlockParameters) {
+ this.signatureBlockParameters = signatureBlockParameters;
+ }
}
diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/DefaultSignatureProfileSettings.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/DefaultSignatureProfileSettings.java
index 6f1519a4..6e288a27 100644
--- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/DefaultSignatureProfileSettings.java
+++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/DefaultSignatureProfileSettings.java
@@ -65,6 +65,10 @@ public class DefaultSignatureProfileSettings {
public static final String VALUE_SIG_DATE_DEFAULT = "yyyy-MM-dd'T'HH:mm:ssXXX";
+ public static final String SIG_BLOCK_PARAMETER_DEFAULT_KEY_REGEX = "^([A-za-z]){1,20}$";
+// public static final String SIG_BLOCK_PARAMETER_DEFAULT_VALUE_REGEX = "^([\\p{Print}-ß_'\\+\\!\u00e4\u00f6\u00fc" +
+// "\u00c4\u00d6\u00dc]){1,100}$";
+public static final String SIG_BLOCK_PARAMETER_DEFAULT_VALUE_REGEX = "^([\\p{Print}\u00df\u00A7\u20AC\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc]){1,100}$";
static {
profileSettings.put(KEY_SIG_SUBJECT, new SignatureProfileEntry(KEY_SIG_SUBJECT, KEY_SIG_SUBJECT_DEFAULT, VALUE_SIG_SUBJECT_DEFAULT) );
diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java
index e1fcb9d0..3f07f774 100644
--- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java
+++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/settings/IProfileConstants.java
@@ -96,4 +96,5 @@ public interface IProfileConstants {
public final static String SIG_PDFUA_FORCE = "SIG_PDFUA_FORCE";
public final static String LATIN1_ENCODING = "latin1_encoding";
+ public final static String SIGNATURE_BLOCK_PARAMETER = "sbp";
}
diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/CheckSignatureBlockParameters.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/CheckSignatureBlockParameters.java
new file mode 100644
index 00000000..756a240c
--- /dev/null
+++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/CheckSignatureBlockParameters.java
@@ -0,0 +1,42 @@
+package at.gv.egiz.pdfas.common.utils;
+
+import at.gv.egiz.pdfas.common.settings.DefaultSignatureProfileSettings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+
+public class CheckSignatureBlockParameters {
+
+ private static final Logger logger = LoggerFactory
+ .getLogger(CheckSignatureBlockParameters.class);
+ public static boolean checkSignatureBlockParameterMapIsValid(Map<String, String> map, String keyRegex,
+ String valueRegex) {
+
+ logger.trace("regex1:"+keyRegex+", regex1:"+valueRegex);
+ if(keyRegex == null || keyRegex.length() == 0) {
+ keyRegex = DefaultSignatureProfileSettings.SIG_BLOCK_PARAMETER_DEFAULT_KEY_REGEX;
+ }
+ if(valueRegex == null || valueRegex.length() == 0) {
+ valueRegex = DefaultSignatureProfileSettings.SIG_BLOCK_PARAMETER_DEFAULT_VALUE_REGEX;
+ }
+ logger.trace("regex2:"+keyRegex+", regex2:"+valueRegex);
+ for(String key : map.keySet()){
+ if(isValid(key, keyRegex) == false) {
+ logger.error("Invalid key:"+key+", regex:"+keyRegex);
+ return false;
+ }
+ if(isValid(map.get(key), valueRegex) == false) {
+ logger.error("Invalid value:"+map.get(key)+", regex:"+valueRegex);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public static boolean isValid(String s, String regex) {
+ return s.matches(regex);
+ }
+
+}