From 263eaef58922b74bd31012f2732de8f25eb9ac0b Mon Sep 17 00:00:00 2001 From: Alexander Marsalek Date: Sat, 10 Apr 2021 17:35:31 +0200 Subject: one resolver for certificate and request atrtributes --- .../CertificateAndRequestParameterResolver.java | 12 ++++--- .../impl/stamping/RequestParameterResolver.java | 5 --- .../egiz/pdfas/lib/impl/stamping/TableFactory.java | 5 ++- .../pdfas/lib/impl/stamping/ValueResolver.java | 39 +++++++--------------- 4 files changed, 21 insertions(+), 40 deletions(-) (limited to 'pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping') diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateAndRequestParameterResolver.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateAndRequestParameterResolver.java index d7d83b34..3fe8298b 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateAndRequestParameterResolver.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateAndRequestParameterResolver.java @@ -23,6 +23,7 @@ ******************************************************************************/ 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.common.utils.DNUtils; import at.gv.egiz.pdfas.common.utils.OgnlUtils; @@ -30,26 +31,24 @@ import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; import iaik.x509.X509Certificate; import ognl.AbstractMemberAccess; import ognl.MemberAccess; -import ognl.Ognl; import ognl.OgnlContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.naming.InvalidNameException; - import java.lang.reflect.Member; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; -public class CertificateResolver implements IResolver { +public class CertificateAndRequestParameterResolver implements IResolver { - private static final Logger logger = LoggerFactory.getLogger(CertificateResolver.class); + private static final Logger logger = LoggerFactory.getLogger(CertificateAndRequestParameterResolver.class); private OgnlContext ctx; private X509Certificate certificate; - public CertificateResolver(X509Certificate certificate, OperationStatus operationStatus) { + public CertificateAndRequestParameterResolver(X509Certificate certificate, OperationStatus operationStatus) { this.certificate = certificate; MemberAccess memberAccess = new AbstractMemberAccess() { @@ -62,6 +61,9 @@ public class CertificateResolver implements IResolver { this.ctx = new OgnlContext(null, null, memberAccess); + this.ctx = new OgnlContext(null, null, memberAccess); + this.ctx.put(IProfileConstants.DYNAMIC_REQUEST_PARAMETERS, operationStatus.getRequestParameters()); + this.ctx.put("sn", this.certificate.getSerialNumber().toString()); try { diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/RequestParameterResolver.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/RequestParameterResolver.java index b8abb383..3f7a8ebe 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/RequestParameterResolver.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/RequestParameterResolver.java @@ -18,7 +18,6 @@ public class RequestParameterResolver implements IResolver { public RequestParameterResolver(Map requestParameters) { -// this.ctx = new OgnlContext(memberAccess, null, null, requestParameters); MemberAccess memberAccess = new AbstractMemberAccess() { @Override public boolean isAccessible(Map context, Object target, Member member, String propertyName) { @@ -29,10 +28,6 @@ public class RequestParameterResolver implements IResolver { this.ctx = new OgnlContext(null, null, memberAccess); this.ctx.put(IProfileConstants.DYNAMIC_REQUEST_PARAMETERS, requestParameters); -// for(String key : requestParameters.keySet()) { -// this.ctx.put(key, requestParameters.get(key)); -// } - } @Override diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/TableFactory.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/TableFactory.java index 9f015594..2908cfcd 100644 --- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/TableFactory.java +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/TableFactory.java @@ -229,9 +229,8 @@ public class TableFactory implements IProfileConstants { String value = profile.getValue(key); //String caption = getSigCaption(key); //String value = getSigValue(key); - ValueResolver resolver = "req".equals(type) - ? new ValueResolver(operationStatus) - : new ValueResolver(certProvider, operationStatus); + + ValueResolver resolver = new ValueResolver(certProvider, operationStatus); if (value != null) { Entry c_entry = new Entry(Entry.TYPE_CAPTION, caption, key); 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 6e8d2a72..2481c77b 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 @@ -28,6 +28,7 @@ import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; import at.gv.egiz.pdfas.lib.impl.status.ICertificateProvider; import at.gv.egiz.pdfas.lib.impl.status.OperationStatus; +import at.gv.egiz.pdfas.lib.impl.status.RequestedSignature; import org.apache.commons.lang3.RandomStringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,29 +61,18 @@ public class ValueResolver implements IProfileConstants, IResolver { private static final Charset UTF_8 = Charset.forName("UTF-8"); - private IResolver internalCertificateResolver; - private IResolver internalRequestParameterResolver; + private IResolver internalResolver; public ValueResolver(ICertificateProvider certProvider, OperationStatus operationStatus) { - internalCertificateResolver = new CertificateResolver( - certProvider.getCertificate(), operationStatus); - Map test = new HashMap<>(); - test.put("schoolNameRand", RandomStringUtils.randomAlphabetic(5)); - test.put("schoolName", "EGIZ testschule"); - - test.put("subject","bbbbb"); - internalRequestParameterResolver = new RequestParameterResolver(test); +// Map test = new HashMap<>(); +// test.put("schoolNameRand", RandomStringUtils.randomAlphabetic(5)); +// test.put("schoolName", "EGIZ testschule"); +// +// test.put("subject","bbBbb"); +// internalRequestParameterResolver = new RequestParameterResolver(test); + internalResolver = new CertificateAndRequestParameterResolver(certProvider.getCertificate(), + operationStatus); } - - public ValueResolver(OperationStatus operationStatus) { - Map test = new HashMap<>(); - test.put("schoolNameRand", RandomStringUtils.randomAlphabetic(5)); - test.put("schoolName", "EGIZ testschule"); - test.put("subject","bbbbb"); - internalRequestParameterResolver = new RequestParameterResolver(test); - - } - public String resolve(String key, String value, SignatureProfileSettings settings) { @@ -126,13 +116,8 @@ public class ValueResolver implements IProfileConstants, IResolver { result += tmp1; curidx = idxe; String tmpValue = matcher.group(1); - if(!tmpValue.contains(DYNAMIC_REQUEST_PARAMETERS)) { - String tmp = internalCertificateResolver.resolve(key, tmpValue, settings); - result += tmp; - }else { - String tmp2 = internalRequestParameterResolver.resolve(key, tmpValue, settings); - result += tmp2; - } + String tmp2 = internalResolver.resolve(key, tmpValue, settings); + result += tmp2; } while (matcher.find()); } else { result = value; -- cgit v1.2.3