diff options
| author | Alexander Marsalek <amarsalek@iaik.tugraz.at> | 2021-04-10 17:23:35 +0200 | 
|---|---|---|
| committer | Alexander Marsalek <amarsalek@iaik.tugraz.at> | 2021-04-10 17:23:35 +0200 | 
| commit | bd1def86093d9bb539603cc1eca4e843a37e67e5 (patch) | |
| tree | bc864f9fa443755bbd42290b0967dd8e7d6a1f21 /pdf-as-lib/src/main/java/at | |
| parent | eb1a4aa74efe76d9af26f1c38e099ffb621707f2 (diff) | |
| download | pdf-as-4-bd1def86093d9bb539603cc1eca4e843a37e67e5.tar.gz pdf-as-4-bd1def86093d9bb539603cc1eca4e843a37e67e5.tar.bz2 pdf-as-4-bd1def86093d9bb539603cc1eca4e843a37e67e5.zip | |
added constant
Diffstat (limited to 'pdf-as-lib/src/main/java/at')
3 files changed, 97 insertions, 2 deletions
| 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 new file mode 100644 index 00000000..d7d83b34 --- /dev/null +++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/stamping/CertificateAndRequestParameterResolver.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> + * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a + * joint initiative of the Federal Chancellery Austria and Graz University of + * Technology. + *  + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + *  + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + *  + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + ******************************************************************************/ +package at.gv.egiz.pdfas.lib.impl.stamping; + +import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings; +import at.gv.egiz.pdfas.common.utils.DNUtils; +import at.gv.egiz.pdfas.common.utils.OgnlUtils; +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 { + +    private static final Logger logger = LoggerFactory.getLogger(CertificateResolver.class); + +    private OgnlContext ctx; +    private X509Certificate certificate; + +    public CertificateResolver(X509Certificate certificate, OperationStatus operationStatus) { +        this.certificate = certificate; + +        MemberAccess memberAccess = new AbstractMemberAccess() { +            @Override +            public boolean isAccessible(Map context, Object target, Member member, String propertyName) { +                int modifiers = member.getModifiers(); +                return Modifier.isPublic(modifiers); +            } +        }; +                 +        this.ctx = new OgnlContext(null, null, memberAccess); + +        this.ctx.put("sn", this.certificate.getSerialNumber().toString()); +         +        try { +            Map<String, String> issuerDNMap = DNUtils.dnToMap(certificate.getIssuerDN().getName()); +            this.ctx.put("issuer", issuerDNMap); +        } catch (InvalidNameException e) { +            logger.warn("Failed to build issuer Map", e); +        } + +        try { +            Map<String, String> subjectDNMap = DNUtils.dnToMap(certificate.getSubjectDN().getName()); +            this.ctx.put("subject", subjectDNMap); +        } catch (InvalidNameException e) { +            logger.warn("Failed to build subject Map", e); +        } + +        Map<String, String> iuiMap = new HashMap<String, String>(); +        try { +        	iuiMap.put("pdfVersion", operationStatus.getPdfObject().getPDFVersion()); +        } catch(Throwable e) { +        	logger.warn("Cannot determine pdfVersion: " + e.getMessage()); +        } +        this.ctx.put("iui", iuiMap); +    } + +    public String resolve(String key, String value, SignatureProfileSettings settings) { +        return OgnlUtils.resolvsOgnlExpression(value, this.ctx); +    } + +} 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 4b2a8f10..b8abb383 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 @@ -4,6 +4,7 @@ import java.lang.reflect.Member;  import java.lang.reflect.Modifier;  import java.util.Map; +import at.gv.egiz.pdfas.common.settings.IProfileConstants;  import at.gv.egiz.pdfas.common.settings.SignatureProfileSettings;  import at.gv.egiz.pdfas.common.utils.OgnlUtils;  import ognl.AbstractMemberAccess; @@ -27,7 +28,7 @@ public class RequestParameterResolver implements IResolver {  		};  		this.ctx = new OgnlContext(null, null, memberAccess); -		this.ctx.put("dynamic", requestParameters); +		this.ctx.put(IProfileConstants.DYNAMIC_REQUEST_PARAMETERS, requestParameters);  //		for(String key : requestParameters.keySet()) {  //			this.ctx.put(key, requestParameters.get(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 e5905c22..6e8d2a72 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 @@ -126,7 +126,7 @@ public class ValueResolver implements IProfileConstants, IResolver {  					result += tmp1;  					curidx = idxe;  					String tmpValue = matcher.group(1); -					if(!tmpValue.contains("dynamic")) { +					if(!tmpValue.contains(DYNAMIC_REQUEST_PARAMETERS)) {  						String tmp = internalCertificateResolver.resolve(key, tmpValue, settings);  						result += tmp;  					}else { | 
