diff options
Diffstat (limited to 'pdf-as-common')
5 files changed, 52 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..3d70fe96 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,9 @@ 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}]){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..c2e6b81d --- /dev/null +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/CheckSignatureBlockParameters.java @@ -0,0 +1,31 @@ +package at.gv.egiz.pdfas.common.utils; + +import at.gv.egiz.pdfas.common.settings.DefaultSignatureProfileSettings; + +import java.util.Map; + +public class CheckSignatureBlockParameters { + + public static boolean checkSignatureBlockParameterMapIsValid(Map<String, String> map, String keyRegex, + String 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; + } + for(String key : map.keySet()){ + if(isValid(key, keyRegex) == false) + return false; + if(isValid(map.get(key), valueRegex) == false) + return false; + } + + return true; + } + + public static boolean isValid(String s, String regex) { + return s.matches(regex); + } + +} diff --git a/pdf-as-common/src/main/resources/resources/messages/common.properties b/pdf-as-common/src/main/resources/resources/messages/common.properties index 8ddfe312..0a7f1787 100644 --- a/pdf-as-common/src/main/resources/resources/messages/common.properties +++ b/pdf-as-common/src/main/resources/resources/messages/common.properties @@ -25,6 +25,7 @@ error.pdf.stamp.09=no suitable placeholder found and STRICT matching mode reques error.pdf.stamp.10=no stamper available error.pdf.stamp.11=Failed to calculate page length +error.invalid.signature.parameter.01=Signature block parameter is invalid #Signature errors error.pdf.sig.01=Failed to create signature error.pdf.sig.02=Failed to open keystore |