aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java')
-rw-r--r--pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java b/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java
index 40ea4ba5..ba455ae0 100644
--- a/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java
+++ b/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAVerifier.java
@@ -5,11 +5,13 @@ import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
-import javax.xml.bind.JAXBElement;
+import at.gv.egiz.pdfas.lib.impl.verify.SignatureInputData;
+import jakarta.xml.bind.JAXBElement;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
-import javax.xml.ws.BindingProvider;
+import jakarta.xml.ws.BindingProvider;
+import lombok.val;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3._2000._09.xmldsig_.KeyInfoType;
@@ -38,13 +40,15 @@ public class MOAVerifier implements IVerifier {
.getLogger(MOAVerifier.class);
private static final String MOA_VERIFY_URL = "moa.verify.url";
+ private static final String MOA_VERIFY_TIMEOUT = "moa.verify.timeout";
private static final String MOA_VERIFY_TRUSTPROFILE = "moa.verify.TrustProfileID";
private String moaEndpoint;
+ private Long moaTimeout;
private String moaTrustProfile;
- public List<VerifyResult> verify(byte[] signature, byte[] signatureContent,
+ public List<VerifyResult> verify(byte[] signature, SignatureInputData signatureContent,
Date verificationTime) throws PdfAsException {
List<VerifyResult> resultList = new ArrayList<VerifyResult>();
try {
@@ -57,6 +61,11 @@ public class MOAVerifier implements IVerifier {
SignatureVerificationPortType verificationPort = service.getSignatureVerificationPort();
BindingProvider provider = (BindingProvider) verificationPort;
provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, this.moaEndpoint);
+ if (this.moaTimeout != null) {
+ provider.getRequestContext().put("jakarta.xml.ws.client.connectionTimeout", this.moaTimeout);
+ provider.getRequestContext().put("jakarta.xml.ws.client.receiveTimeout", this.moaTimeout);
+ }
+
VerifyCMSSignatureRequest verifyCMSSignatureRequest = new VerifyCMSSignatureRequest();
verifyCMSSignatureRequest.setTrustProfileID(this.moaTrustProfile);
verifyCMSSignatureRequest.setCMSSignature(signature);
@@ -68,7 +77,7 @@ public class MOAVerifier implements IVerifier {
metaDataType.setMetaInfo(metaInfoType);
CMSContentBaseType contentBase = new CMSContentBaseType();
- contentBase.setBase64Content(signatureContent);
+ contentBase.setBase64Content(signatureContent.getSignatureInputBytes());
metaDataType.setContent(contentBase);
verifyCMSSignatureRequest.setDataObject(metaDataType);
@@ -184,6 +193,14 @@ public class MOAVerifier implements IVerifier {
public void setConfiguration(Configuration config) {
this.moaEndpoint = config.getValue(MOA_VERIFY_URL);
this.moaTrustProfile = config.getValue(MOA_VERIFY_TRUSTPROFILE);
+ val timeout = config.getValue(MOA_VERIFY_TIMEOUT);
+ if (timeout != null) {
+ try {
+ this.moaTimeout = Long.valueOf(timeout);
+ } catch (NumberFormatException e) {
+ logger.warn("Failed to convert MOA verification timeout '{}' to a number", timeout, e);
+ }
+ }
}
@Override