From 77dd3fcc4d85088b15ab859c4438521d9cd6ed10 Mon Sep 17 00:00:00 2001 From: Jakob Heher Date: Wed, 15 Apr 2026 13:49:22 +0200 Subject: pdf-as-5 (#82) - JDK 17 - PDFBox 3 - PDF-AS Web moved to Spring Boot - MOA Integration tests w/ new error code --------- Co-authored-by: Gerald Palfinger Co-authored-by: kathrin.resek --- .../java/at/gv/egiz/pdfas/moa/MOAConnector.java | 39 ++++++++++++---------- .../java/at/gv/egiz/pdfas/moa/MOAVerifier.java | 9 ++--- 2 files changed, 27 insertions(+), 21 deletions(-) (limited to 'pdf-as-moa/src/main/java') diff --git a/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAConnector.java b/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAConnector.java index 11d00c75..9923e4bb 100644 --- a/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAConnector.java +++ b/pdf-as-moa/src/main/java/at/gv/egiz/pdfas/moa/MOAConnector.java @@ -30,11 +30,16 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; +import java.net.http.HttpConnectTimeoutException; +import java.net.http.HttpTimeoutException; import java.security.cert.CertificateException; -import javax.xml.ws.BindingProvider; -import javax.xml.ws.soap.SOAPBinding; +import at.gv.egiz.pdfas.common.exceptions.*; +import jakarta.xml.ws.BindingProvider; +import jakarta.xml.ws.WebServiceException; +import jakarta.xml.ws.soap.SOAPBinding; +import lombok.val; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -51,13 +56,6 @@ import at.gv.e_government.reference.namespace.moa._20020822_.MOAFault; import at.gv.e_government.reference.namespace.moa._20020822_.MetaInfoType; import at.gv.e_government.reference.namespace.moa._20020822_.SignatureCreationPortType; import at.gv.e_government.reference.namespace.moa._20020822_.SignatureCreationService; -import at.gv.egiz.pdfas.common.exceptions.ErrorConstants; -import at.gv.egiz.pdfas.common.exceptions.PDFASError; -import at.gv.egiz.pdfas.common.exceptions.PdfAsErrorCarrier; -import at.gv.egiz.pdfas.common.exceptions.PdfAsException; -import at.gv.egiz.pdfas.common.exceptions.PdfAsMOAException; -import at.gv.egiz.pdfas.common.exceptions.PdfAsSignatureException; -import at.gv.egiz.pdfas.common.exceptions.PdfAsWrappedIOException; import at.gv.egiz.pdfas.common.settings.ISettings; import at.gv.egiz.pdfas.common.utils.SettingsUtils; import at.gv.egiz.pdfas.common.utils.StreamUtils; @@ -134,18 +132,22 @@ public class MOAConnector implements ISignatureConnector, URL certificateURL = new URL(certificateValue); is = certificateURL.openStream(); this.certificate = new X509Certificate(is); - + } catch (MalformedURLException e) { logger.error(certificateValue + " is not a valid url but starts with http!"); throw new PdfAsWrappedIOException(new PdfAsException(certificateValue + " is not a valid url but!")); - + } finally { - if (is != null) { - is.close(); - - } - } - + if (is != null) { + is.close(); + + } + } + } else if (certificateValue.startsWith("base64:")) { + logger.debug("Loading base64 certificate: {}", certificateValue); + + val cert = java.util.Base64.getDecoder().decode(certificateValue.substring(7)); + this.certificate = new X509Certificate(cert); } else { File certFile = new File(certificateValue); @@ -256,6 +258,9 @@ public class MOAConnector implements ISignatureConnector, throw new PdfAsMOAException("", e.getMessage(), "", ""); } + } catch (WebServiceException e) { + val cause = (e.getCause() != null) ? e.getCause() : e; + throw new SLPdfAsException((int) ErrorConstants.ERROR_SIG_CONNECT_ERROR, cause.getMessage()); } if (response.getCMSSignatureOrErrorResponse().size() != 1) { 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..21d90681 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,10 +5,11 @@ 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 org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,7 +45,7 @@ public class MOAVerifier implements IVerifier { private String moaTrustProfile; - public List verify(byte[] signature, byte[] signatureContent, + public List verify(byte[] signature, SignatureInputData signatureContent, Date verificationTime) throws PdfAsException { List resultList = new ArrayList(); try { @@ -68,7 +69,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); -- cgit v1.2.3