aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2013-10-01 15:27:32 +0200
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2013-10-01 15:27:32 +0200
commitadd4460d9619f3586a02ae0d8c028f01903494bc (patch)
tree244ef6d0f0af028da98f9cecd3ee9a3424223889 /pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java
parent25f5495b60fb0fb089c7af216986d2f3abf92375 (diff)
downloadpdf-as-4-add4460d9619f3586a02ae0d8c028f01903494bc.tar.gz
pdf-as-4-add4460d9619f3586a02ae0d8c028f01903494bc.tar.bz2
pdf-as-4-add4460d9619f3586a02ae0d8c028f01903494bc.zip
+ Extracting information from Certificate (Ognl)
+ CMS KeyStore Signer (still wrong format)
Diffstat (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java')
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java45
1 files changed, 34 insertions, 11 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java
index 9052a7eb..19b38f27 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/ValueResolver.java
@@ -3,10 +3,13 @@ package at.gv.egiz.pdfas.lib.impl.stamping;
import at.gv.egiz.pdfas.common.settings.IProfileConstants;
import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings;
import at.gv.egiz.pdfas.lib.impl.PdfAsImpl;
+import at.gv.egiz.pdfas.lib.impl.status.RequestedSignature;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -15,11 +18,13 @@ import org.slf4j.LoggerFactory;
* Created with IntelliJ IDEA. User: afitzek Date: 9/11/13 Time: 11:11 AM To
* change this template use File | Settings | File Templates.
*/
-public class ValueResolver implements IProfileConstants {
+public class ValueResolver implements IProfileConstants, IResolver {
private static final Logger logger = LoggerFactory
.getLogger(ValueResolver.class);
+ public static final String PatternRegex = "\\$(\\{[^\\$]*\\})";
+
private static final String defaultDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
public static final String EXP_START = "${";
@@ -31,25 +36,43 @@ public class ValueResolver implements IProfileConstants {
// TODO: Use status in real implementation to get currently needed
// informations...
public String resolve(String key, String value,
- SignatureProfileSettings settings) {
+ SignatureProfileSettings settings, RequestedSignature signature) {
logger.debug("Resolving value for key: " + key);
logger.debug("Resolving value with value: " + value);
if (value != null) {
- if (value.startsWith(EXP_START) && value.endsWith(EXP_END)) {
- // TODO: handle OGNL expression for key and value
- // TODO: Here we need the certificate
- CertificateResolver certificateResolver = new CertificateResolver(
- null);
- String exp = value.substring(EXP_START.length(), value.length()
- - EXP_END.length());
- return certificateResolver.resolve(key, exp, settings);
+
+ Pattern pattern = Pattern.compile(PatternRegex);
+ Matcher matcher = pattern.matcher(value);
+ CertificateResolver certificateResolver = new CertificateResolver(
+ signature.getCertificate());
+ String result = "";
+ int curidx = 0;
+ if (matcher.find()) {
+ do {
+ int idx = matcher.start(0);
+ int idxe = matcher.end(0);
+ result += value.substring(curidx, idx);
+ curidx = idxe;
+ result += certificateResolver.resolve(key,
+ matcher.group(1), settings, signature);
+ } while (matcher.find());
+ } else {
+ result = value;
}
+ /*
+ * if (value.startsWith(EXP_START) && value.endsWith(EXP_END)) { //
+ * TODO: handle OGNL expression for key and value // TODO: Here we
+ * need the certificate
+ *
+ * String exp = value.replace('$', ' '); return }
+ */
+ return result;
}
if (key.equals(SIG_DATE)) {
- if(value == null) {
+ if (value == null) {
value = defaultDateFormat;
}
// Value holds the date format!