aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig
diff options
context:
space:
mode:
authorThomas <>2021-03-22 18:40:26 +0100
committerThomas <>2021-03-22 18:40:26 +0100
commit578ad0d6bc408edf9e6c875156054374f5fd8337 (patch)
tree11ca8a04bd045e20d4b381fc76762d21b9e5abaa /moaSig/moa-sig
parenteb37b2c969c85ca966f0a0ad1d8b9941647a7f6a (diff)
downloadmoa-sig-578ad0d6bc408edf9e6c875156054374f5fd8337.tar.gz
moa-sig-578ad0d6bc408edf9e6c875156054374f5fd8337.tar.bz2
moa-sig-578ad0d6bc408edf9e6c875156054374f5fd8337.zip
change to EGIZ codestyle
Diffstat (limited to 'moaSig/moa-sig')
-rw-r--r--moaSig/moa-sig/build.gradle2
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java31
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java192
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java94
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java391
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java224
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java858
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java295
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java58
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java63
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java51
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java435
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java424
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java126
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java22
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java38
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java36
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java24
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java16
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java187
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java215
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java50
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java98
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java60
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java86
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java25
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java167
31 files changed, 2061 insertions, 2239 deletions
diff --git a/moaSig/moa-sig/build.gradle b/moaSig/moa-sig/build.gradle
index b3574e6..f03d350 100644
--- a/moaSig/moa-sig/build.gradle
+++ b/moaSig/moa-sig/build.gradle
@@ -17,6 +17,8 @@ dependencies {
providedCompile 'javax.servlet:servlet-api:2.4'
compile 'commons-discovery:commons-discovery:0.5'
compile 'org.slf4j:slf4j-log4j12:1.7.30'
+ implementation group: 'javax.jws', name: 'javax.jws-api', version: '1.1'
+
//compile group: 'org.slf4j', name: 'log4j-over-slf4j', version: '1.7.30'
//compile 'org.apache.cxf:cxf-rt-frontend-jaxws:3.1.4'
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java
index fb84293..dfc7bff 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java
@@ -5,24 +5,23 @@ import org.slf4j.LoggerFactory;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.init.ExternalInitializer;
-import at.gv.egovernment.moa.spss.server.invoke.PDFASInvoker;
public class PDFASInitializer implements ExternalInitializer {
- private static final Logger logger = LoggerFactory.getLogger(PDFASInitializer.class);
-
- @Override
- public void initialize(ConfigurationProvider configurationProvider) {
- logger.warn("Log4j Config: {}", System.getProperty("log4j.configuration"));
-
- /*String pdfAsConfiguration = configurationProvider.getPDFASConfiguration();
-
- logger.info("Running PDFASInitializer with pdf as cfg: {}", pdfAsConfiguration);
-
- if(pdfAsConfiguration != null) {
- PDFASInvoker
- .init(pdfAsConfiguration);
- }*/
- }
+ private static final Logger logger = LoggerFactory.getLogger(PDFASInitializer.class);
+
+ @Override
+ public void initialize(ConfigurationProvider configurationProvider) {
+ logger.warn("Log4j Config: {}", System.getProperty("log4j.configuration"));
+
+ /*
+ * String pdfAsConfiguration = configurationProvider.getPDFASConfiguration();
+ *
+ * logger.info("Running PDFASInitializer with pdf as cfg: {}",
+ * pdfAsConfiguration);
+ *
+ * if(pdfAsConfiguration != null) { PDFASInvoker .init(pdfAsConfiguration); }
+ */
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java
index 1f7522b..94c2239 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java
@@ -1,118 +1,82 @@
package at.gv.egovernment.moa.spss.server.invoke;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.io.IOUtils;
-
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.server.logging.TransactionId;
-import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaConnector;
-import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaVerifier;
-import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest;
-import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone;
-import at.gv.egovernment.moa.spss.server.xmlbind.PDFSignatureInfo;
-import at.gv.egovernment.moa.spss.server.xmlbind.SignedPDFInfo;
-import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFRequest;
-import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFResponse;
-import at.gv.egovernment.moaspss.logging.Logger;
-
public class PDFASInvoker {
- /*
- private static PDFASInvoker instance = null;
-
- private PdfAs pdfAS;
-
- private PDFASInvoker(File configuration) {
- pdfAS = PdfAsFactory.createPdfAs(configuration);
- }
-
- public synchronized static void init(String pdfAsConfiguration) {
- instance = new PDFASInvoker(new File(pdfAsConfiguration));
- }
-
- public synchronized static PDFASInvoker getInstance() {
- if (instance == null) {
- throw new RuntimeException("PDF PDFASInvoker not initialized");
- }
- return instance;
- }
-
- public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest verifyPDFRequest) throws MOAException {
- Configuration pdfConfiguration = this.pdfAS.getConfiguration();
-
- VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse();
-
- VerifyParameter verifyParameter = PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource(
- verifyPDFRequest.getSignedPDF()));
-
- pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE, verifyPDFRequest.getTrustProfileID());
-
- try {
- List<VerifyResult> verifyResults = this.pdfAS.verify(verifyParameter);
- verifyPDFResponse.setVerificationResults(verifyResults);
- } catch (Throwable e) {
- Logger.warn("Failed to generate signed PDF document", e);
- throw new MOAApplicationException("Failed to generate signed PDF document", null, e);
- }
-
- return verifyPDFResponse;
- }
-
- public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest, String transactionId) {
- Configuration pdfConfiguration = this.pdfAS.getConfiguration();
-
- String keyIdentifier = createPDFRequest.getKeyIdentifier();
-
- Iterator<PDFSignatureInfo> signatureInfoIterator = createPDFRequest.getSignatureInfoList().iterator();
-
- CreatePDFRespone createPDFRespone = new CreatePDFRespone();
-
- while (signatureInfoIterator.hasNext()) {
- PDFSignatureInfo pdfSignatureInfo = signatureInfoIterator.next();
- SignedPDFInfo signedPDFInfo = new SignedPDFInfo(pdfSignatureInfo.getSignatureID());
- try {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- SignParameter signParameter = PdfAsFactory.createSignParameter(pdfConfiguration,
- new ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos);
-
- signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition());
- signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile());
-
- IPlainSigner signer = new PAdESSigner(
- new InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null));
-
- signParameter.setPlainSigner(signer);
-
- try {
- this.pdfAS.sign(signParameter);
- signedPDFInfo.setPdfDocument(baos.toByteArray());
- signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE);
- } catch (Throwable e) {
- signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE);
-
- if (e instanceof PDFASError) {
- PDFASError pdfAsError = (PDFASError) e;
- Logger.warn("Failed to generate signed PDF document", e);
- signedPDFInfo.setErrorCode((int) pdfAsError.getCode());
- signedPDFInfo.setErrorInfo(pdfAsError.getInfo());
- } else {
- Logger.error("Unknown exception!: ", e);
- signedPDFInfo.setErrorCode(9999);
- signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler");
- }
- } finally {
- IOUtils.closeQuietly(baos);
- }
-
- } finally {
- createPDFRespone.getSignatureInfoList().add(signedPDFInfo);
- }
-
- }
- return createPDFRespone;
- }*/
+ /*
+ * private static PDFASInvoker instance = null;
+ *
+ * private PdfAs pdfAS;
+ *
+ * private PDFASInvoker(File configuration) { pdfAS =
+ * PdfAsFactory.createPdfAs(configuration); }
+ *
+ * public synchronized static void init(String pdfAsConfiguration) { instance =
+ * new PDFASInvoker(new File(pdfAsConfiguration)); }
+ *
+ * public synchronized static PDFASInvoker getInstance() { if (instance == null)
+ * { throw new RuntimeException("PDF PDFASInvoker not initialized"); } return
+ * instance; }
+ *
+ * public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest
+ * verifyPDFRequest) throws MOAException { Configuration pdfConfiguration =
+ * this.pdfAS.getConfiguration();
+ *
+ * VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse();
+ *
+ * VerifyParameter verifyParameter =
+ * PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource(
+ * verifyPDFRequest.getSignedPDF()));
+ *
+ * pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE,
+ * verifyPDFRequest.getTrustProfileID());
+ *
+ * try { List<VerifyResult> verifyResults = this.pdfAS.verify(verifyParameter);
+ * verifyPDFResponse.setVerificationResults(verifyResults); } catch (Throwable
+ * e) { Logger.warn("Failed to generate signed PDF document", e); throw new
+ * MOAApplicationException("Failed to generate signed PDF document", null, e); }
+ *
+ * return verifyPDFResponse; }
+ *
+ * public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest,
+ * String transactionId) { Configuration pdfConfiguration =
+ * this.pdfAS.getConfiguration();
+ *
+ * String keyIdentifier = createPDFRequest.getKeyIdentifier();
+ *
+ * Iterator<PDFSignatureInfo> signatureInfoIterator =
+ * createPDFRequest.getSignatureInfoList().iterator();
+ *
+ * CreatePDFRespone createPDFRespone = new CreatePDFRespone();
+ *
+ * while (signatureInfoIterator.hasNext()) { PDFSignatureInfo pdfSignatureInfo =
+ * signatureInfoIterator.next(); SignedPDFInfo signedPDFInfo = new
+ * SignedPDFInfo(pdfSignatureInfo.getSignatureID()); try { ByteArrayOutputStream
+ * baos = new ByteArrayOutputStream(); SignParameter signParameter =
+ * PdfAsFactory.createSignParameter(pdfConfiguration, new
+ * ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos);
+ *
+ * signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition());
+ * signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile());
+ *
+ * IPlainSigner signer = new PAdESSigner( new
+ * InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null));
+ *
+ * signParameter.setPlainSigner(signer);
+ *
+ * try { this.pdfAS.sign(signParameter);
+ * signedPDFInfo.setPdfDocument(baos.toByteArray());
+ * signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE); } catch
+ * (Throwable e) { signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE);
+ *
+ * if (e instanceof PDFASError) { PDFASError pdfAsError = (PDFASError) e;
+ * Logger.warn("Failed to generate signed PDF document", e);
+ * signedPDFInfo.setErrorCode((int) pdfAsError.getCode());
+ * signedPDFInfo.setErrorInfo(pdfAsError.getInfo()); } else {
+ * Logger.error("Unknown exception!: ", e); signedPDFInfo.setErrorCode(9999);
+ * signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler"); } } finally {
+ * IOUtils.closeQuietly(baos); }
+ *
+ * } finally { createPDFRespone.getSignatureInfoList().add(signedPDFInfo); }
+ *
+ * } return createPDFRespone; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java
index 705e124..2dbb239 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java
@@ -1,61 +1,45 @@
package at.gv.egovernment.moa.spss.server.pdfas;
+
/*
import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
import at.gv.egiz.pdfas.lib.impl.verify.VerifyResultImpl;
*/
-public class ExtendedVerifyResult { /*extends VerifyResultImpl implements VerifyResult {
- private String qcSource;
- private boolean publicAuthority;
- private String publicAuthorityID;
- private boolean SSCD;
- private String sscdSource;
- private String issureCountryCode;
-
- public synchronized String getIssureCountryCode() {
- return issureCountryCode;
- }
-
- public synchronized void setIssureCountryCode(String issureCountryCode) {
- this.issureCountryCode = issureCountryCode;
- }
-
- public synchronized String getQcSource() {
- return qcSource;
- }
-
- public synchronized void setQcSource(String qcSource) {
- this.qcSource = qcSource;
- }
-
- public synchronized boolean isPublicAuthority() {
- return publicAuthority;
- }
-
- public synchronized void setPublicAuthority(boolean publicAuthority) {
- this.publicAuthority = publicAuthority;
- }
-
- public synchronized String getPublicAuthorityID() {
- return publicAuthorityID;
- }
-
- public synchronized void setPublicAuthorityID(String publicAuthorityID) {
- this.publicAuthorityID = publicAuthorityID;
- }
-
- public synchronized boolean isSSCD() {
- return SSCD;
- }
-
- public synchronized void setSSCD(boolean sSCD) {
- SSCD = sSCD;
- }
-
- public synchronized String getSscdSource() {
- return sscdSource;
- }
-
- public synchronized void setSscdSource(String sscdSource) {
- this.sscdSource = sscdSource;
- }*/
+public class ExtendedVerifyResult { /*
+ * extends VerifyResultImpl implements VerifyResult { private String
+ * qcSource; private boolean publicAuthority; private String
+ * publicAuthorityID; private boolean SSCD; private String sscdSource;
+ * private String issureCountryCode;
+ *
+ * public synchronized String getIssureCountryCode() { return
+ * issureCountryCode; }
+ *
+ * public synchronized void setIssureCountryCode(String issureCountryCode)
+ * { this.issureCountryCode = issureCountryCode; }
+ *
+ * public synchronized String getQcSource() { return qcSource; }
+ *
+ * public synchronized void setQcSource(String qcSource) { this.qcSource =
+ * qcSource; }
+ *
+ * public synchronized boolean isPublicAuthority() { return
+ * publicAuthority; }
+ *
+ * public synchronized void setPublicAuthority(boolean publicAuthority) {
+ * this.publicAuthority = publicAuthority; }
+ *
+ * public synchronized String getPublicAuthorityID() { return
+ * publicAuthorityID; }
+ *
+ * public synchronized void setPublicAuthorityID(String publicAuthorityID)
+ * { this.publicAuthorityID = publicAuthorityID; }
+ *
+ * public synchronized boolean isSSCD() { return SSCD; }
+ *
+ * public synchronized void setSSCD(boolean sSCD) { SSCD = sSCD; }
+ *
+ * public synchronized String getSscdSource() { return sscdSource; }
+ *
+ * public synchronized void setSscdSource(String sscdSource) {
+ * this.sscdSource = sscdSource; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java
index 0344346..efcd2ce 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java
@@ -1,227 +1,170 @@
package at.gv.egovernment.moa.spss.server.pdfas;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.security.Principal;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.impl.CMSContentExplicitImpl;
-import at.gv.egovernment.moa.spss.api.impl.CMSDataObjectImpl;
-import at.gv.egovernment.moa.spss.api.impl.CreateCMSSignatureRequestImpl;
-import at.gv.egovernment.moa.spss.api.impl.DataObjectInfoCMSImpl;
-import at.gv.egovernment.moa.spss.api.impl.MetaInfoImpl;
-import at.gv.egovernment.moa.spss.api.impl.SingleSignatureInfoCMSImpl;
-import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
-import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;
-import at.gv.egovernment.moaspss.logging.Logger;
-import at.gv.egovernment.moaspss.util.Base64Utils;
-import iaik.logging.TransactionId;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-import iaik.server.modules.keys.UnknownKeyException;
-import iaik.x509.X509Certificate;
-
-public class InternalMoaConnector { /*implements ISignatureConnector {
-
- private String keyIdentifier;
- private X509Certificate clientCert;
- private TransactionId transactionId;
-
- public InternalMoaConnector(String keyIdentifier, TransactionId transactionId, X509Certificate clientCert) {
- this.keyIdentifier = keyIdentifier;
- this.transactionId = transactionId;
- this.clientCert = clientCert;
- }
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private Set buildKeySet(String keyGroupID, KeyModule module) throws ConfigurationException {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
-
- Set keyGroupEntries;
-
- // get the KeyGroup entries from the configuration
- if (clientCert != null) {
- Principal issuer = clientCert.getIssuerDN();
- BigInteger serialNumber = clientCert.getSerialNumber();
-
- keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber, keyGroupID);
- } else {
- keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
- }
-
- // map the KeyGroup entries to a set of KeyEntryIDs
- if (keyGroupEntries == null) {
- return Collections.EMPTY_SET;
- } else if (keyGroupEntries.size() == 0) {
- return Collections.EMPTY_SET;
- } else {
-
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
- Set keySet = new HashSet();
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
- KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(), entryID.getCertificateIssuer(),
- entryID.getCertificateSerialNumber());
- if (keyGroupEntries.contains(entry)) {
- keySet.add(entryID);
- }
- }
- return keySet;
- }
- }
-
- @Override
- @SuppressWarnings("rawtypes")
- public X509Certificate getCertificate(SignParameter parameter) throws PdfAsException {
- KeyModule module = KeyModuleFactory.getInstance(this.transactionId);
-
- Set keySet = null;
- try {
- keySet = buildKeySet(this.keyIdentifier, module);
- } catch (ConfigurationException e2) {
- Logger.warn("MOA not correctly configured!", e2);
- throw new PdfAsException("MOA not correctly configured!");
- }
-
- if (keySet == null || keySet.isEmpty()) {
- Logger.warn("No keys available for Key Identifier " + this.keyIdentifier + " and given authentication.");
- throw new PdfAsException("Invalid Key Identifier: " + this.keyIdentifier);
- }
-
- if (keySet.size() != 1) {
- Logger.warn(
- "Too many keys available for Key Identifier " + this.keyIdentifier + " and given authentication.");
- throw new PdfAsException("Too many keys available for Key Identifier: " + this.keyIdentifier);
- }
-
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keySet.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
-
- List certChain = null;
- try {
- certChain = module.getPrivateKeyEntry(entryID).getCertificateChain();
- } catch (UnknownKeyException e1) {
- Logger.warn("Unknown KeyIdentifier found!", e1);
- throw new PdfAsException("Unknown Key Identifier: " + this.keyIdentifier);
- }
-
- if (certChain != null && !certChain.isEmpty()) {
- Logger.trace("Returning Certificate!");
- Certificate keyCert = ((Certificate) certChain.get(0));
- if (keyCert instanceof X509Certificate) {
- return (X509Certificate) keyCert;
- } else {
- try {
- return new X509Certificate(keyCert.getEncoded());
- } catch (CertificateEncodingException e) {
- Logger.warn("Invalid certificate found!", e);
- throw new PdfAsException("Invalid certificate for Key Identifier: " + this.keyIdentifier);
- } catch (CertificateException e) {
- Logger.warn("Invalid certificate found!", e);
- throw new PdfAsException("Invalid certificate for Key Identifier: " + this.keyIdentifier);
- }
- }
- }
-
- break;
- }
-
- // No Certificate could be found!
- Logger.warn("Failed to find keys available for Key Identifier " + this.keyIdentifier
- + " and given authentication.");
- throw new PdfAsException("Failed to find keys available for Key Identifier: " + this.keyIdentifier);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public byte[] sign(byte[] input, int[] byteRange, SignParameter parameter, RequestedSignature requestedSignature)
- throws PdfAsException {
-
- CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl();
- createCMSSignatureRequest.setKeyIdentifier(this.keyIdentifier);
- SingleSignatureInfoCMSImpl singleSignatureInfos = new SingleSignatureInfoCMSImpl();
-
- DataObjectInfoCMSImpl dataObjectInfoCMSImpl = new DataObjectInfoCMSImpl();
-
- dataObjectInfoCMSImpl.setStructure(DataObjectInfoCMSImpl.STRUCTURE_DETACHED);
-
- CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
-
- CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl();
- cmsContent.setBinaryContent(new ByteArrayInputStream(input));
-
- cmsDataObjectImpl.setContent(cmsContent);
-
- MetaInfoImpl metaInfoImpl = new MetaInfoImpl();
-
- metaInfoImpl.setMimeType("application/pdf");
-
- cmsDataObjectImpl.setMetaInfo(metaInfoImpl);
-
- dataObjectInfoCMSImpl.setDataObject(cmsDataObjectImpl);
-
- singleSignatureInfos.setDataObjectInfo(dataObjectInfoCMSImpl);
-
- createCMSSignatureRequest.getSingleSignatureInfos().add(singleSignatureInfos);
-
- try {
- CreateCMSSignatureResponse createCMSSignatureResponse = CMSSignatureCreationInvoker.getInstance()
- .createCMSSignature(createCMSSignatureRequest, Collections.EMPTY_SET);
-
- if (createCMSSignatureResponse.getResponseElements().isEmpty()) {
- Logger.error("MOA CMS Signature response is empty!");
- throw new PdfAsException("MOA CMS Signature response is empty");
- }
-
- CreateCMSSignatureResponseElement createCMSSignatureResponseElement = (CreateCMSSignatureResponseElement) createCMSSignatureResponse
- .getResponseElements().get(0);
-
- if(createCMSSignatureResponseElement.getResponseType()
- == CreateCMSSignatureResponseElement.ERROR_RESPONSE) {
- ErrorResponse errorResponse = (ErrorResponse) createCMSSignatureResponseElement;
- Logger.error("Failed to create signature " + errorResponse.getErrorCode() + " " + errorResponse.getInfo());
- throw new PdfAsErrorCarrier(new PDFASError(errorResponse.getErrorCode(), errorResponse.getInfo()));
- } else if(createCMSSignatureResponseElement.getResponseType()
- == CreateCMSSignatureResponseElement.CMS_SIGNATURE ) {
- CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) createCMSSignatureResponseElement;
- return Base64Utils.decode(cmsSignatureResponse.getCMSSignature(), true);
- }
- } catch (MOAException e) {
- Logger.error("Failed to create signature!", e);
- throw new PdfAsException("Failed to create signature!", e);
- } catch (IOException e) {
- Logger.error("Failed to create signature!", e);
- throw new PdfAsException("Failed to create signature!", e);
- }
-
- return null;
- }
- */
+public class InternalMoaConnector { /*
+ * implements ISignatureConnector {
+ *
+ * private String keyIdentifier; private X509Certificate clientCert;
+ * private TransactionId transactionId;
+ *
+ * public InternalMoaConnector(String keyIdentifier, TransactionId
+ * transactionId, X509Certificate clientCert) { this.keyIdentifier =
+ * keyIdentifier; this.transactionId = transactionId; this.clientCert =
+ * clientCert; }
+ *
+ * @SuppressWarnings({ "rawtypes", "unchecked" }) private Set
+ * buildKeySet(String keyGroupID, KeyModule module) throws
+ * ConfigurationException { ConfigurationProvider config =
+ * ConfigurationProvider.getInstance();
+ *
+ * Set keyGroupEntries;
+ *
+ * // get the KeyGroup entries from the configuration if (clientCert !=
+ * null) { Principal issuer = clientCert.getIssuerDN(); BigInteger
+ * serialNumber = clientCert.getSerialNumber();
+ *
+ * keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber,
+ * keyGroupID); } else { keyGroupEntries = config.getKeyGroupEntries(null,
+ * null, keyGroupID); }
+ *
+ * // map the KeyGroup entries to a set of KeyEntryIDs if (keyGroupEntries
+ * == null) { return Collections.EMPTY_SET; } else if
+ * (keyGroupEntries.size() == 0) { return Collections.EMPTY_SET; } else {
+ *
+ * Set keyEntryIDs = module.getPrivateKeyEntryIDs(); Set keySet = new
+ * HashSet(); Iterator iter;
+ *
+ * // filter out the keys that do not exist in the IAIK configuration //
+ * by walking through the key entries and checking if the exist in // the
+ * // keyGroupEntries for (iter = keyEntryIDs.iterator(); iter.hasNext();)
+ * { KeyEntryID entryID = (KeyEntryID) iter.next(); KeyGroupEntry entry =
+ * new KeyGroupEntry(entryID.getModuleID(),
+ * entryID.getCertificateIssuer(), entryID.getCertificateSerialNumber());
+ * if (keyGroupEntries.contains(entry)) { keySet.add(entryID); } } return
+ * keySet; } }
+ *
+ * @Override
+ *
+ * @SuppressWarnings("rawtypes") public X509Certificate
+ * getCertificate(SignParameter parameter) throws PdfAsException {
+ * KeyModule module = KeyModuleFactory.getInstance(this.transactionId);
+ *
+ * Set keySet = null; try { keySet = buildKeySet(this.keyIdentifier,
+ * module); } catch (ConfigurationException e2) {
+ * Logger.warn("MOA not correctly configured!", e2); throw new
+ * PdfAsException("MOA not correctly configured!"); }
+ *
+ * if (keySet == null || keySet.isEmpty()) {
+ * Logger.warn("No keys available for Key Identifier " +
+ * this.keyIdentifier + " and given authentication."); throw new
+ * PdfAsException("Invalid Key Identifier: " + this.keyIdentifier); }
+ *
+ * if (keySet.size() != 1) { Logger.warn(
+ * "Too many keys available for Key Identifier " + this.keyIdentifier +
+ * " and given authentication."); throw new
+ * PdfAsException("Too many keys available for Key Identifier: " +
+ * this.keyIdentifier); }
+ *
+ * Iterator iter;
+ *
+ * // filter out the keys that do not exist in the IAIK configuration //
+ * by walking through the key entries and checking if the exist in // the
+ * // keyGroupEntries for (iter = keySet.iterator(); iter.hasNext();) {
+ * KeyEntryID entryID = (KeyEntryID) iter.next();
+ *
+ * List certChain = null; try { certChain =
+ * module.getPrivateKeyEntry(entryID).getCertificateChain(); } catch
+ * (UnknownKeyException e1) { Logger.warn("Unknown KeyIdentifier found!",
+ * e1); throw new PdfAsException("Unknown Key Identifier: " +
+ * this.keyIdentifier); }
+ *
+ * if (certChain != null && !certChain.isEmpty()) {
+ * Logger.trace("Returning Certificate!"); Certificate keyCert =
+ * ((Certificate) certChain.get(0)); if (keyCert instanceof
+ * X509Certificate) { return (X509Certificate) keyCert; } else { try {
+ * return new X509Certificate(keyCert.getEncoded()); } catch
+ * (CertificateEncodingException e) {
+ * Logger.warn("Invalid certificate found!", e); throw new
+ * PdfAsException("Invalid certificate for Key Identifier: " +
+ * this.keyIdentifier); } catch (CertificateException e) {
+ * Logger.warn("Invalid certificate found!", e); throw new
+ * PdfAsException("Invalid certificate for Key Identifier: " +
+ * this.keyIdentifier); } } }
+ *
+ * break; }
+ *
+ * // No Certificate could be found!
+ * Logger.warn("Failed to find keys available for Key Identifier " +
+ * this.keyIdentifier + " and given authentication."); throw new
+ * PdfAsException("Failed to find keys available for Key Identifier: " +
+ * this.keyIdentifier); }
+ *
+ * @SuppressWarnings("unchecked")
+ *
+ * @Override public byte[] sign(byte[] input, int[] byteRange,
+ * SignParameter parameter, RequestedSignature requestedSignature) throws
+ * PdfAsException {
+ *
+ * CreateCMSSignatureRequestImpl createCMSSignatureRequest = new
+ * CreateCMSSignatureRequestImpl();
+ * createCMSSignatureRequest.setKeyIdentifier(this.keyIdentifier);
+ * SingleSignatureInfoCMSImpl singleSignatureInfos = new
+ * SingleSignatureInfoCMSImpl();
+ *
+ * DataObjectInfoCMSImpl dataObjectInfoCMSImpl = new
+ * DataObjectInfoCMSImpl();
+ *
+ * dataObjectInfoCMSImpl.setStructure(DataObjectInfoCMSImpl.
+ * STRUCTURE_DETACHED);
+ *
+ * CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
+ *
+ * CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl();
+ * cmsContent.setBinaryContent(new ByteArrayInputStream(input));
+ *
+ * cmsDataObjectImpl.setContent(cmsContent);
+ *
+ * MetaInfoImpl metaInfoImpl = new MetaInfoImpl();
+ *
+ * metaInfoImpl.setMimeType("application/pdf");
+ *
+ * cmsDataObjectImpl.setMetaInfo(metaInfoImpl);
+ *
+ * dataObjectInfoCMSImpl.setDataObject(cmsDataObjectImpl);
+ *
+ * singleSignatureInfos.setDataObjectInfo(dataObjectInfoCMSImpl);
+ *
+ * createCMSSignatureRequest.getSingleSignatureInfos().add(
+ * singleSignatureInfos);
+ *
+ * try { CreateCMSSignatureResponse createCMSSignatureResponse =
+ * CMSSignatureCreationInvoker.getInstance()
+ * .createCMSSignature(createCMSSignatureRequest, Collections.EMPTY_SET);
+ *
+ * if (createCMSSignatureResponse.getResponseElements().isEmpty()) {
+ * Logger.error("MOA CMS Signature response is empty!"); throw new
+ * PdfAsException("MOA CMS Signature response is empty"); }
+ *
+ * CreateCMSSignatureResponseElement createCMSSignatureResponseElement =
+ * (CreateCMSSignatureResponseElement) createCMSSignatureResponse
+ * .getResponseElements().get(0);
+ *
+ * if(createCMSSignatureResponseElement.getResponseType() ==
+ * CreateCMSSignatureResponseElement.ERROR_RESPONSE) { ErrorResponse
+ * errorResponse = (ErrorResponse) createCMSSignatureResponseElement;
+ * Logger.error("Failed to create signature " +
+ * errorResponse.getErrorCode() + " " + errorResponse.getInfo()); throw
+ * new PdfAsErrorCarrier(new PDFASError(errorResponse.getErrorCode(),
+ * errorResponse.getInfo())); } else
+ * if(createCMSSignatureResponseElement.getResponseType() ==
+ * CreateCMSSignatureResponseElement.CMS_SIGNATURE ) {
+ * CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse)
+ * createCMSSignatureResponseElement; return
+ * Base64Utils.decode(cmsSignatureResponse.getCMSSignature(), true); } }
+ * catch (MOAException e) { Logger.error("Failed to create signature!",
+ * e); throw new PdfAsException("Failed to create signature!", e); } catch
+ * (IOException e) { Logger.error("Failed to create signature!", e); throw
+ * new PdfAsException("Failed to create signature!", e); }
+ *
+ * return null; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java
index 8d5a27e..c1d18bf 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java
@@ -1,129 +1,101 @@
package at.gv.egovernment.moa.spss.server.pdfas;
-import java.io.ByteArrayInputStream;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
-import at.gv.egiz.pdfas.lib.api.Configuration;
-import at.gv.egiz.pdfas.lib.api.verify.SignatureCheck;
-import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel;
-import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
-import at.gv.egiz.pdfas.lib.impl.verify.IVerifier;
-import at.gv.egiz.pdfas.lib.impl.verify.SignatureCheckImpl;
-*/
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.common.CheckResult;
-import at.gv.egovernment.moa.spss.api.impl.CMSContentExplicitImpl;
-import at.gv.egovernment.moa.spss.api.impl.CMSDataObjectImpl;
-import at.gv.egovernment.moa.spss.api.impl.MetaInfoImpl;
-import at.gv.egovernment.moa.spss.api.impl.VerifyCMSSignatureRequestImpl;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
-import iaik.x509.X509Certificate;
-
-public class InternalMoaVerifier { /*implements IVerifier {
-
- public static final String MOA_TRUSTPROFILE = "internal.moa.trustprofile";
-
- private String trustProfile;
-
- private static final Logger logger = LoggerFactory.getLogger(InternalMoaVerifier.class);
-
- @Override
- public List<VerifyResult> verify(byte[] signature, byte[] signatureContent, Date verificationTime)
- throws PdfAsException {
-
- List<VerifyResult> verificationResultList = new ArrayList<VerifyResult>();
-
- VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl();
- verifyCMSSignatureRequest.setDateTime(verificationTime);
- verifyCMSSignatureRequest.setTrustProfileId(this.trustProfile);
- verifyCMSSignatureRequest.setCMSSignature(new ByteArrayInputStream(signature));
-
- CMSContentExplicitImpl cmsContentExplicitImpl = new CMSContentExplicitImpl();
- cmsContentExplicitImpl.setBinaryContent(new ByteArrayInputStream(signatureContent));
-
- CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
- cmsDataObjectImpl.setContent(cmsContentExplicitImpl);
-
- MetaInfoImpl metaInfo = new MetaInfoImpl();
- metaInfo.setMimeType("application/pdf");
- metaInfo.setDescription("PDF Document");
- cmsDataObjectImpl.setMetaInfo(metaInfo);
-
- verifyCMSSignatureRequest.setDataObject(cmsDataObjectImpl);
-
- verifyCMSSignatureRequest.setSignatories(VerifyCMSSignatureRequest.ALL_SIGNATORIES);
-
- try {
- VerifyCMSSignatureResponse verifyCMSSignatureResponse = CMSSignatureVerificationInvoker.getInstance()
- .verifyCMSSignature(verifyCMSSignatureRequest);
- @SuppressWarnings("rawtypes")
- Iterator iter;
- for (iter = verifyCMSSignatureResponse.getResponseElements().iterator(); iter.hasNext();) {
- VerifyCMSSignatureResponseElement responseElement = (VerifyCMSSignatureResponseElement) iter.next();
- ExtendedVerifyResult verifyResult = new ExtendedVerifyResult();
-
- verifyResult.setCertificateCheck(convertCheck(responseElement.getCertificateCheck()));
- verifyResult.setValueCheckCode(convertCheck(responseElement.getSignatureCheck()));
- verifyResult.setManifestCheckCode(new SignatureCheckImpl(99, null));
- verifyResult.setQualifiedCertificate(responseElement.getSignerInfo().isQualifiedCertificate());
- verifyResult.setVerificationDone(true);
-
- if (responseElement.getSignerInfo().getSignerCertificate() instanceof X509Certificate) {
- verifyResult.setSignerCertificate(
- (X509Certificate) responseElement.getSignerInfo().getSignerCertificate());
- } else {
- verifyResult.setSignerCertificate(
- new X509Certificate(responseElement.getSignerInfo().getSignerCertificate().getEncoded()));
- }
-
- verifyResult.setQcSource(responseElement.getSignerInfo().getQCSource());
-
- verifyResult.setPublicAuthority(responseElement.getSignerInfo().isPublicAuthority());
- verifyResult.setPublicAuthorityID(responseElement.getSignerInfo().getPublicAuhtorityID());
- verifyResult.setSSCD(responseElement.getSignerInfo().isSSCD());
- verifyResult.setSscdSource(responseElement.getSignerInfo().getSSCDSource());
- verifyResult.setIssureCountryCode(responseElement.getSignerInfo().getIssuerCountryCode());
-
- verificationResultList.add(verifyResult);
- }
- } catch (MOAException e) {
- logger.error("Failed to verify CMS Signature with MOA", e);
- throw new PdfAsException("Failed to verify CMS Signature with MOA", e);
- } catch (CertificateEncodingException e) {
- logger.error("Failed to verify CMS Signature with MOA", e);
- throw new PdfAsException("Failed to verify CMS Signature with MOA", e);
- } catch (CertificateException e) {
- logger.error("Failed to verify CMS Signature with MOA", e);
- throw new PdfAsException("Failed to verify CMS Signature with MOA", e);
- }
-
- return verificationResultList;
- }
-
- private SignatureCheck convertCheck(CheckResult checkResult) {
- return new SignatureCheckImpl(checkResult.getCode(), null);
- }
-
- @Override
- public void setConfiguration(Configuration config) {
- this.trustProfile = config.getValue(MOA_TRUSTPROFILE);
- }
-
- @Override
- public SignatureVerificationLevel getLevel() {
- return SignatureVerificationLevel.FULL_VERIFICATION;
- }
- */
+public class InternalMoaVerifier { /*
+ * implements IVerifier {
+ *
+ * public static final String MOA_TRUSTPROFILE =
+ * "internal.moa.trustprofile";
+ *
+ * private String trustProfile;
+ *
+ * private static final Logger logger =
+ * LoggerFactory.getLogger(InternalMoaVerifier.class);
+ *
+ * @Override public List<VerifyResult> verify(byte[] signature, byte[]
+ * signatureContent, Date verificationTime) throws PdfAsException {
+ *
+ * List<VerifyResult> verificationResultList = new
+ * ArrayList<VerifyResult>();
+ *
+ * VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new
+ * VerifyCMSSignatureRequestImpl();
+ * verifyCMSSignatureRequest.setDateTime(verificationTime);
+ * verifyCMSSignatureRequest.setTrustProfileId(this.trustProfile);
+ * verifyCMSSignatureRequest.setCMSSignature(new
+ * ByteArrayInputStream(signature));
+ *
+ * CMSContentExplicitImpl cmsContentExplicitImpl = new
+ * CMSContentExplicitImpl(); cmsContentExplicitImpl.setBinaryContent(new
+ * ByteArrayInputStream(signatureContent));
+ *
+ * CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
+ * cmsDataObjectImpl.setContent(cmsContentExplicitImpl);
+ *
+ * MetaInfoImpl metaInfo = new MetaInfoImpl();
+ * metaInfo.setMimeType("application/pdf");
+ * metaInfo.setDescription("PDF Document");
+ * cmsDataObjectImpl.setMetaInfo(metaInfo);
+ *
+ * verifyCMSSignatureRequest.setDataObject(cmsDataObjectImpl);
+ *
+ * verifyCMSSignatureRequest.setSignatories(VerifyCMSSignatureRequest.
+ * ALL_SIGNATORIES);
+ *
+ * try { VerifyCMSSignatureResponse verifyCMSSignatureResponse =
+ * CMSSignatureVerificationInvoker.getInstance()
+ * .verifyCMSSignature(verifyCMSSignatureRequest);
+ *
+ * @SuppressWarnings("rawtypes") Iterator iter; for (iter =
+ * verifyCMSSignatureResponse.getResponseElements().iterator();
+ * iter.hasNext();) { VerifyCMSSignatureResponseElement responseElement =
+ * (VerifyCMSSignatureResponseElement) iter.next(); ExtendedVerifyResult
+ * verifyResult = new ExtendedVerifyResult();
+ *
+ * verifyResult.setCertificateCheck(convertCheck(responseElement.
+ * getCertificateCheck()));
+ * verifyResult.setValueCheckCode(convertCheck(responseElement.
+ * getSignatureCheck())); verifyResult.setManifestCheckCode(new
+ * SignatureCheckImpl(99, null));
+ * verifyResult.setQualifiedCertificate(responseElement.getSignerInfo().
+ * isQualifiedCertificate()); verifyResult.setVerificationDone(true);
+ *
+ * if (responseElement.getSignerInfo().getSignerCertificate() instanceof
+ * X509Certificate) { verifyResult.setSignerCertificate( (X509Certificate)
+ * responseElement.getSignerInfo().getSignerCertificate()); } else {
+ * verifyResult.setSignerCertificate( new
+ * X509Certificate(responseElement.getSignerInfo().getSignerCertificate().
+ * getEncoded())); }
+ *
+ * verifyResult.setQcSource(responseElement.getSignerInfo().getQCSource());
+ *
+ * verifyResult.setPublicAuthority(responseElement.getSignerInfo().
+ * isPublicAuthority());
+ * verifyResult.setPublicAuthorityID(responseElement.getSignerInfo().
+ * getPublicAuhtorityID());
+ * verifyResult.setSSCD(responseElement.getSignerInfo().isSSCD());
+ * verifyResult.setSscdSource(responseElement.getSignerInfo().getSSCDSource
+ * ()); verifyResult.setIssureCountryCode(responseElement.getSignerInfo().
+ * getIssuerCountryCode());
+ *
+ * verificationResultList.add(verifyResult); } } catch (MOAException e) {
+ * logger.error("Failed to verify CMS Signature with MOA", e); throw new
+ * PdfAsException("Failed to verify CMS Signature with MOA", e); } catch
+ * (CertificateEncodingException e) {
+ * logger.error("Failed to verify CMS Signature with MOA", e); throw new
+ * PdfAsException("Failed to verify CMS Signature with MOA", e); } catch
+ * (CertificateException e) {
+ * logger.error("Failed to verify CMS Signature with MOA", e); throw new
+ * PdfAsException("Failed to verify CMS Signature with MOA", e); }
+ *
+ * return verificationResultList; }
+ *
+ * private SignatureCheck convertCheck(CheckResult checkResult) { return
+ * new SignatureCheckImpl(checkResult.getCode(), null); }
+ *
+ * @Override public void setConfiguration(Configuration config) {
+ * this.trustProfile = config.getValue(MOA_TRUSTPROFILE); }
+ *
+ * @Override public SignatureVerificationLevel getLevel() { return
+ * SignatureVerificationLevel.FULL_VERIFICATION; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java
index 4ee4e07..804c7ad 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java
@@ -35,9 +35,7 @@ import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
-import org.apache.axis.AxisEngine;
import org.apache.axis.AxisFault;
-import org.apache.axis.AxisProperties;
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.attachments.AttachmentPart;
@@ -49,7 +47,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
@@ -66,447 +63,434 @@ import at.gv.egovernment.moaspss.util.DOMUtils;
/**
* An handler that is invoked on each web service request and performs some
* central message handling.
- *
+ *
* Mainly sets up the <code>TransactionContext</code> for the current
* transaction (i.e. web service request).
- *
+ *
* @author Patrick Peck
* @author Stefan Knirsch
* @version $Id$
*/
public class AxisHandler extends BasicHandler {
- /**
- *
- */
- private static final long serialVersionUID = 2520698947819506866L;
-
- /** The resource names of the messages to load. */
- private static final String MOA_SPSS_WSDL_RESOURCE_ = "/resources/wsdl/MOA-SPSS-2.0.0.wsdl";
-
- /** The property name for accessing the HTTP request. */
- private static final String REQUEST_PROPERTY = HTTPConstants.MC_HTTP_SERVLETREQUEST;
-
- /** The property name for accessing the X509 client certificate chain. */
- private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
-
- /** The property name for accessing the SOAP action header. */
- private static final String SOAP_ACTION_HEADER = "soapaction";
-
- /** URI of the SOAP XML namespace. */
- public static final String SOAP_NS_URI = "http://schemas.xmlsoap.org/soap/envelope/";
-
- /** Prefix used for the SOAP XML namespace */
- public static final String SOAP_PREFIX = "soapenv";
-
- /** Simple string contains the front part of the enveloping SOAP wrapping */
- private static final String SOAP_PART_PRE = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>";
-
- /** Simple string contains the post part of the enveloping SOAP wrapping */
- private static final String SOAP_PART_POST = "</soapenv:Body></soapenv:Envelope>";
-
- /**
- * Handle an invocation of this handler.
- *
- * @param msgContext
- * Information about this request/response.
- * @throws AxisFault
- * An error occurred during processing of the request.
- * @see org.apache.axis.Handler#invoke(MessageContext)
- */
- public void invoke(MessageContext msgContext) throws AxisFault {
- if (!msgContext.getPastPivot()) {
- handleRequest(msgContext);
- } else {
- handleResponse(msgContext);
- }
- }
-
- /**
- * This method is called by <code>invoke</code> to handle incoming requests.
- *
- * @param msgContext
- * The context as provided to <code>invoke</code>.
- * @throws AxisFault
- * An error occurred during processing of the request.
- */
- private void handleRequest(MessageContext msgContext) throws AxisFault {
- Message soapMessage = null;
- try {
- Logger.trace("---- Entering Axishandler");
- // generate a unique transaction id and build the TransactionContext
- // for this request
- HttpServletRequest request = (HttpServletRequest) msgContext.getProperty(REQUEST_PROPERTY);
-
- X509Certificate[] clientCert = (X509Certificate[]) request.getAttribute(X509_CERTIFICATE_PROPERTY);
-
- if (Logger.isTraceEnabled()) {
- Enumeration<String> allHeaders = request.getHeaderNames();
- if (allHeaders != null) {
- while(allHeaders.hasMoreElements()) {
- String header = allHeaders.nextElement();
- Logger.trace("Header: " + header + " : " + request.getHeader(header));
-
- }
- }
- }
-
- // Configure Axis
- // AxisProperties.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
- // AxisProperties.setProperty(AxisEngine.PROP_DOMULTIREFS,"false");
- // AxisProperties.setProperty(AxisEngine.PROP_SEND_XSI,"true");
- // msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION,
- // Boolean.FALSE);
- // msgContext.setProperty(org.apache.axis.
- // AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
- //AxisProperties.setProperty(AxisEngine.PROP_ATTACHMENT_IMPLEMENTATION, AxisEngine.DEFAULT_ATTACHMENT_IMPL);
- soapMessage = msgContext.getCurrentMessage();
-
- ConfigurationProvider configuration = ConfigurationProvider.getInstance();
- new String(soapMessage.getSOAPPartAsBytes());
- Element xmlRequest = null;
- // log.info(soapMessage.getSOAPPartAsString());
- Element soapPart = DOMUtils
- .parseDocument(new ByteArrayInputStream(soapMessage.getSOAPPartAsBytes()), false, null, null)
- .getDocumentElement();
- if (soapPart != null) {
- // TODO: check if DOM Version is intolerant when white spaces
- // are between tags (preceding normalization would be necessary)
- NodeList soapBodies = soapPart.getElementsByTagNameNS(SOAP_NS_URI, "Body");
- if (soapBodies != null && soapBodies.getLength() > 0) {
- xmlRequest = DOMUtils.getElementFromNodeList(soapBodies.item(0).getChildNodes());
- }
- // oder TODO: Evaluierung ob XPATH schneller
- /*
- * HashMap nSMap = new HashMap(); nSMap.put((String)SOAP_PREFIX,
- * SOAP_NS_URI); Element soapBody = (Element)
- * XPathUtils.selectSingleNode(soapPart, nSMap,
- * "/"+SOAP_PREFIX+":Envelope/"+SOAP_PREFIX+":Body"); if
- * (soapBody!=null) { xmlRequest =
- * DOMUtils.getElementFromNodeList(soapBody.getChildNodes()); }
- */
- }
-
- TransactionContext context = new TransactionContext(TransactionIDGenerator.nextID(), clientCert,
- configuration, xmlRequest, null);
-
- String soapAction = (String) request.getHeader(SOAP_ACTION_HEADER);
- if ("\"\"".equals(soapAction)) {
- // if http soap action header is empty
- soapAction = msgContext.getTargetService();
- }
- context.setRequestName(soapAction);
-
- if (soapMessage.getAttachmentsImpl() != null) {
- Logger.info("Attachments is NOT null!");
- Logger.trace(">>> Get AttachmentCount");
- int attachmentCount = soapMessage.getAttachmentsImpl().getAttachmentCount();
- Logger.trace("<<< Finished Get AttachmentCount");
- if (attachmentCount > 0) {
-
- // add SOAP attachments to transaction context
- @SuppressWarnings("rawtypes")
- Iterator iterator = soapMessage.getAttachments();
- while (iterator.hasNext()) {
- AttachmentPart attachment = (AttachmentPart) iterator.next();
- String id = attachment.getContentId();
- String type = attachment.getContentType();
-
- // Now get the InputStream (note: we could also get the
- // content with Object content =
- // attachment.getContent();)
- InputStream is = null;
- javax.activation.DataHandler datahandler = attachment.getDataHandler();
-
- int TYPE = 2;
- switch (TYPE) {
- case 1: {
- org.apache.axis.attachments.ManagedMemoryDataSource mmds = (org.apache.axis.attachments.ManagedMemoryDataSource) datahandler
- .getDataSource();
- context.addAttachment(id, type, mmds);
- break;
- }
- case 2: {
- is = datahandler.getDataSource().getInputStream();
- context.addAttachment(id, type, is, datahandler.getDataSource().getName());
- break;
- }
- }
- debug("handler.06", new Object[] { id, type });
- }
- }
- } else {
- Logger.info("Attachments is null!");
- }
-
- setUpContexts(context);
-
- // log some information about the request
- info("handler.00", new Object[] { context.getTransactionID(), msgContext.getTargetService() });
- info("handler.01", new Object[] { request.getRemoteAddr() });
- if (clientCert != null) {
- info("handler.02", new Object[] { clientCert[0].getSubjectDN(), clientCert[0].getSerialNumber(),
- clientCert[0].getIssuerDN() });
-
- } else {
- info("handler.03", null);
- }
- if (Logger.isTraceEnabled()) {
- // OutputFormat format = new OutputFormat((Document)
- // xmlRequest.getOwnerDocument());
- // format.setLineSeparator("\n");
- // format.setIndenting(false);
- // format.setPreserveSpace(true);
- // format.setOmitXMLDeclaration(false);
- // format.setEncoding("UTF-8");
- // ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // XMLSerializer conSerializer = new XMLSerializer(baos,
- // format);
- // conSerializer.serialize(xmlRequest);
- // Logger.debug(new LogMsg("Request:" + baos.toString()));
-
- String msg = soapMessage.getSOAPPartAsString();
- Logger.trace(new LogMsg(msg));
- }
- } catch (MOASystemException e) {
- MOASystemException se = new MOASystemException("2900", null, e);
- AxisFault fault = AxisFault.makeFault(se);
- fault.setFaultDetail(new Element[] { se.toErrorResponse() });
- throw fault;
-
- } catch (SAXException t ) {
- if (soapMessage != null && soapMessage.getSOAPPartAsBytes() != null) {
- try {
- Logger.debug("Req: " + new String(soapMessage.getSOAPPartAsBytes(), "UTF-8"));
- } catch (UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
-
- }
-
- t.printStackTrace();
- Logger.info(new LogMsg(t.getStackTrace()));
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse() });
- throw fault;
-
- } catch (Throwable t) {
- t.printStackTrace();
- Logger.info(new LogMsg(t.getStackTrace()));
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse() });
- throw fault;
- }
- Logger.trace("---- Leaving Axishandler");
- }
-
- /**
- * This method is called by <code>invoke</code> to handle outgoing
- * responses.
- *
- * @param msgContext
- * The context as provided to <code>invoke</code>.
- * @throws AxisFault
- * An error occurred during processing of the response.
- */
- private void handleResponse(MessageContext msgContext) throws AxisFault {
- String xmlResponseString = null;
- String soapResponseString = null;
-
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- Element xmlResponse = context.getResponse();
-
- if (xmlResponse != null) {
- try {
- xmlResponseString = DOMUtils.serializeNode(xmlResponse, true);
- /*
- * Soll die Antwort nur \n enthalten, so gibt es 2
- * Möglichkeiten: 1.) Xalan Version und xmlResponseString =
- * DOMUtils.serializeNode(xmlResponse, true, "\n"); 2.)
- * OutputFormat serializerFormat = new OutputFormat((Document)
- * xmlResponse.getOwnerDocument());
- * serializerFormat.setLineSeparator("\n");
- * serializerFormat.setIndenting(false);
- * serializerFormat.setPreserveSpace(true);
- * serializerFormat.setOmitXMLDeclaration(true);
- * serializerFormat.setEncoding("UTF-8"); ByteArrayOutputStream
- * serializedBytes = new ByteArrayOutputStream(); XMLSerializer
- * serializer = new XMLSerializer(serializedBytes,
- * serializerFormat); serializer.serialize(xmlResponse);
- * serializedBytes.close(); xmlResponseString =
- * serializedBytes.toString("UTF-8");
- */
- if (Logger.isTraceEnabled()) {
- Logger.trace(new LogMsg(xmlResponseString));
- }
- soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST;
- // override axis response-message
- msgContext.setResponseMessage(new Message(soapResponseString));
- } catch (Throwable t) {
- t.printStackTrace();
- Logger.info(new LogMsg(t.getStackTrace()));
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse() });
- throw fault;
- }
-
- } else {
- // Fallback: if functions do not set the resulting response in the
- // transaction, the original one from axis will be used
- soapResponseString = msgContext.getCurrentMessage().getSOAPPartAsString();
- }
-
- info("handler.04", null);
- if (Logger.isDebugEnabled()) {
- Logger.debug(new LogMsg(soapResponseString));
- }
- tearDownContexts();
- }
-
- /**
- * Called, when the processing of the web service fails.
- *
- * @param msgContext
- * Information about the current request.
- * @see org.apache.axis.Handler#onFault(org.apache.axis.MessageContext)
- */
- public void onFault(MessageContext msgContext) {
- info("handler.05", null);
- tearDownContexts();
- }
-
- /**
- * Set up the thread-local contexts (<code>TransactionContext</code> and
- * <code>LoggingContext</code>).
- *
- * @param context
- * The <code>TransactionContext</code> to set for the current
- * request.
- */
- private void setUpContexts(TransactionContext context) {
- // set the transaction context in the TransactionContextManager
- TransactionContextManager tcm = TransactionContextManager.getInstance();
- tcm.setTransactionContext(context);
-
- // set the logging context in the LoggingContextManager
- LoggingContextManager lcm = LoggingContextManager.getInstance();
- LoggingContext lc = new LoggingContext(context.getTransactionID());
- lcm.setLoggingContext(lc);
- }
-
- /**
- * Tear down the thread-local contexts.
- */
- private void tearDownContexts() {
- TransactionContextManager tcm = TransactionContextManager.getInstance();
-
- // delete temporary files
- TransactionContext context = tcm.getTransactionContext();
- context.cleanAttachmentCache();
-
- // unset the transaction context
- tcm.setTransactionContext(null);
-
- // unset the logging context
- LoggingContextManager lcm = LoggingContextManager.getInstance();
- lcm.setLoggingContext(null);
- }
-
- /**
- * Generate the WSDL into the <code>msgContext</code>.
- *
- * The code of this method is more or less copied from the
- * <code>org.apache.axis.handlers.soap.SOAPService</code> class contained in
- * the 1.1 release of Axis to allow for a missing <code>wsdlFile</code> (so
- * that a resource by the same name is searched for in the classpath). The
- * implementation of this method should be obsolete if Axis 1.1 or higher is
- * used.
- *
- * @param msgContext
- * The <code>MessageContext</code> that will contain the WSDL
- * description of the current web service.
- * @throws AxisFault
- * An error occurred producing the WSDL.
- */
- public void generateWSDL(MessageContext msgContext) throws AxisFault {
- InputStream instream = null;
-
- try {
- String filename = MOA_SPSS_WSDL_RESOURCE_;
-
- File file = new File(filename);
- if (file.exists()) {
- // if this resolves to a file, load it
- instream = new FileInputStream(filename);
- } else {
- // else load a named resource in our classloader.
- instream = this.getClass().getResourceAsStream(filename);
- if (instream == null) {
- String errorText = Messages.getMessage("wsdlFileMissing", filename);
- throw new AxisFault(errorText);
- }
- }
- Document doc = XMLUtils.newDocument(instream);
- msgContext.setProperty("WSDL", doc);
- } catch (Exception e) {
- throw AxisFault.makeFault(e);
- } finally {
- if (instream != null) {
- try {
- instream.close();
- } catch (IOException e) {
- // ok to do nothing here
- }
- }
- }
- }
-
- /**
- * Utility function to issue an info message to the log.
- *
- * @param messageId
- * The ID of the message to log.
- * @param parameters
- * Additional message parameters.
- */
- private static void info(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
-
- Logger.info(new LogMsg(msg.getMessage(messageId, parameters)));
- }
-
- /**
- * Utility function to issue an debug message to the log.
- *
- * @param messageId
- * The ID of the message to log.
- * @param parameters
- * Additional message parameters.
- */
- private static void debug(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
-
- Logger.debug(new LogMsg(msg.getMessage(messageId, parameters)));
- }
-
- // private byte[] toByteArray(AttachmentPart attachment) throws
- // SOAPException, IOException
- // {
- // ByteArrayOutputStream outputStream = new
- // ByteArrayOutputStream(attachment.getSize());
- // InputStream inputStream = (InputStream) attachment.getContent();
- // int currentByte = -1;
- // while ((currentByte = inputStream.read()) != -1)
- // outputStream.write(currentByte);
- //
- // inputStream.close();
- // outputStream.close();
- //
- // return outputStream.toByteArray();
- //
- // }
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2520698947819506866L;
+
+ /** The resource names of the messages to load. */
+ private static final String MOA_SPSS_WSDL_RESOURCE_ = "/resources/wsdl/MOA-SPSS-2.0.0.wsdl";
+
+ /** The property name for accessing the HTTP request. */
+ private static final String REQUEST_PROPERTY = HTTPConstants.MC_HTTP_SERVLETREQUEST;
+
+ /** The property name for accessing the X509 client certificate chain. */
+ private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
+
+ /** The property name for accessing the SOAP action header. */
+ private static final String SOAP_ACTION_HEADER = "soapaction";
+
+ /** URI of the SOAP XML namespace. */
+ public static final String SOAP_NS_URI = "http://schemas.xmlsoap.org/soap/envelope/";
+
+ /** Prefix used for the SOAP XML namespace */
+ public static final String SOAP_PREFIX = "soapenv";
+
+ /** Simple string contains the front part of the enveloping SOAP wrapping */
+ private static final String SOAP_PART_PRE =
+ "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>";
+
+ /** Simple string contains the post part of the enveloping SOAP wrapping */
+ private static final String SOAP_PART_POST = "</soapenv:Body></soapenv:Envelope>";
+
+ /**
+ * Handle an invocation of this handler.
+ *
+ * @param msgContext Information about this request/response.
+ * @throws AxisFault An error occurred during processing of the request.
+ * @see org.apache.axis.Handler#invoke(MessageContext)
+ */
+ @Override
+ public void invoke(MessageContext msgContext) throws AxisFault {
+ if (!msgContext.getPastPivot()) {
+ handleRequest(msgContext);
+ } else {
+ handleResponse(msgContext);
+ }
+ }
+
+ /**
+ * This method is called by <code>invoke</code> to handle incoming requests.
+ *
+ * @param msgContext The context as provided to <code>invoke</code>.
+ * @throws AxisFault An error occurred during processing of the request.
+ */
+ private void handleRequest(MessageContext msgContext) throws AxisFault {
+ Message soapMessage = null;
+ try {
+ Logger.trace("---- Entering Axishandler");
+ // generate a unique transaction id and build the TransactionContext
+ // for this request
+ final HttpServletRequest request = (HttpServletRequest) msgContext.getProperty(REQUEST_PROPERTY);
+
+ final X509Certificate[] clientCert = (X509Certificate[]) request.getAttribute(
+ X509_CERTIFICATE_PROPERTY);
+
+ if (Logger.isTraceEnabled()) {
+ final Enumeration<String> allHeaders = request.getHeaderNames();
+ if (allHeaders != null) {
+ while (allHeaders.hasMoreElements()) {
+ final String header = allHeaders.nextElement();
+ Logger.trace("Header: " + header + " : " + request.getHeader(header));
+
+ }
+ }
+ }
+
+ // Configure Axis
+ // AxisProperties.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
+ // AxisProperties.setProperty(AxisEngine.PROP_DOMULTIREFS,"false");
+ // AxisProperties.setProperty(AxisEngine.PROP_SEND_XSI,"true");
+ // msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION,
+ // Boolean.FALSE);
+ // msgContext.setProperty(org.apache.axis.
+ // AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
+ // AxisProperties.setProperty(AxisEngine.PROP_ATTACHMENT_IMPLEMENTATION,
+ // AxisEngine.DEFAULT_ATTACHMENT_IMPL);
+ soapMessage = msgContext.getCurrentMessage();
+
+ final ConfigurationProvider configuration = ConfigurationProvider.getInstance();
+ new String(soapMessage.getSOAPPartAsBytes());
+ Element xmlRequest = null;
+ // log.info(soapMessage.getSOAPPartAsString());
+ final Element soapPart = DOMUtils
+ .parseDocument(new ByteArrayInputStream(soapMessage.getSOAPPartAsBytes()), false, null, null)
+ .getDocumentElement();
+ if (soapPart != null) {
+ // TODO: check if DOM Version is intolerant when white spaces
+ // are between tags (preceding normalization would be necessary)
+ final NodeList soapBodies = soapPart.getElementsByTagNameNS(SOAP_NS_URI, "Body");
+ if (soapBodies != null && soapBodies.getLength() > 0) {
+ xmlRequest = DOMUtils.getElementFromNodeList(soapBodies.item(0).getChildNodes());
+ }
+ // oder TODO: Evaluierung ob XPATH schneller
+ /*
+ * HashMap nSMap = new HashMap(); nSMap.put((String)SOAP_PREFIX, SOAP_NS_URI);
+ * Element soapBody = (Element) XPathUtils.selectSingleNode(soapPart, nSMap,
+ * "/"+SOAP_PREFIX+":Envelope/"+SOAP_PREFIX+":Body"); if (soapBody!=null) {
+ * xmlRequest = DOMUtils.getElementFromNodeList(soapBody.getChildNodes()); }
+ */
+ }
+
+ final TransactionContext context = new TransactionContext(TransactionIDGenerator.nextID(), clientCert,
+ configuration, xmlRequest, null);
+
+ String soapAction = request.getHeader(SOAP_ACTION_HEADER);
+ if ("\"\"".equals(soapAction)) {
+ // if http soap action header is empty
+ soapAction = msgContext.getTargetService();
+ }
+ context.setRequestName(soapAction);
+
+ if (soapMessage.getAttachmentsImpl() != null) {
+ Logger.info("Attachments is NOT null!");
+ Logger.trace(">>> Get AttachmentCount");
+ final int attachmentCount = soapMessage.getAttachmentsImpl().getAttachmentCount();
+ Logger.trace("<<< Finished Get AttachmentCount");
+ if (attachmentCount > 0) {
+
+ // add SOAP attachments to transaction context
+ @SuppressWarnings("rawtypes")
+ final Iterator iterator = soapMessage.getAttachments();
+ while (iterator.hasNext()) {
+ final AttachmentPart attachment = (AttachmentPart) iterator.next();
+ final String id = attachment.getContentId();
+ final String type = attachment.getContentType();
+
+ // Now get the InputStream (note: we could also get the
+ // content with Object content =
+ // attachment.getContent();)
+ InputStream is = null;
+ final javax.activation.DataHandler datahandler = attachment.getDataHandler();
+
+ final int TYPE = 2;
+ switch (TYPE) {
+ case 1: {
+ final org.apache.axis.attachments.ManagedMemoryDataSource mmds =
+ (org.apache.axis.attachments.ManagedMemoryDataSource) datahandler
+ .getDataSource();
+ context.addAttachment(id, type, mmds);
+ break;
+ }
+ case 2: {
+ is = datahandler.getDataSource().getInputStream();
+ context.addAttachment(id, type, is, datahandler.getDataSource().getName());
+ break;
+ }
+ }
+ debug("handler.06", new Object[] { id, type });
+ }
+ }
+ } else {
+ Logger.info("Attachments is null!");
+ }
+
+ setUpContexts(context);
+
+ // log some information about the request
+ info("handler.00", new Object[] { context.getTransactionID(), msgContext.getTargetService() });
+ info("handler.01", new Object[] { request.getRemoteAddr() });
+ if (clientCert != null) {
+ info("handler.02", new Object[] { clientCert[0].getSubjectDN(), clientCert[0].getSerialNumber(),
+ clientCert[0].getIssuerDN() });
+
+ } else {
+ info("handler.03", null);
+ }
+ if (Logger.isTraceEnabled()) {
+ // OutputFormat format = new OutputFormat((Document)
+ // xmlRequest.getOwnerDocument());
+ // format.setLineSeparator("\n");
+ // format.setIndenting(false);
+ // format.setPreserveSpace(true);
+ // format.setOmitXMLDeclaration(false);
+ // format.setEncoding("UTF-8");
+ // ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // XMLSerializer conSerializer = new XMLSerializer(baos,
+ // format);
+ // conSerializer.serialize(xmlRequest);
+ // Logger.debug(new LogMsg("Request:" + baos.toString()));
+
+ final String msg = soapMessage.getSOAPPartAsString();
+ Logger.trace(new LogMsg(msg));
+ }
+ } catch (final MOASystemException e) {
+ final MOASystemException se = new MOASystemException("2900", null, e);
+ final AxisFault fault = AxisFault.makeFault(se);
+ fault.setFaultDetail(new Element[] { se.toErrorResponse() });
+ throw fault;
+
+ } catch (final SAXException t) {
+ if (soapMessage != null && soapMessage.getSOAPPartAsBytes() != null) {
+ try {
+ Logger.debug("Req: " + new String(soapMessage.getSOAPPartAsBytes(), "UTF-8"));
+ } catch (final UnsupportedEncodingException e1) {
+ e1.printStackTrace();
+ }
+
+ }
+
+ t.printStackTrace();
+ Logger.info(new LogMsg(t.getStackTrace()));
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ throw fault;
+
+ } catch (final Throwable t) {
+ t.printStackTrace();
+ Logger.info(new LogMsg(t.getStackTrace()));
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ throw fault;
+ }
+ Logger.trace("---- Leaving Axishandler");
+ }
+
+ /**
+ * This method is called by <code>invoke</code> to handle outgoing responses.
+ *
+ * @param msgContext The context as provided to <code>invoke</code>.
+ * @throws AxisFault An error occurred during processing of the response.
+ */
+ private void handleResponse(MessageContext msgContext) throws AxisFault {
+ String xmlResponseString = null;
+ String soapResponseString = null;
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final Element xmlResponse = context.getResponse();
+
+ if (xmlResponse != null) {
+ try {
+ xmlResponseString = DOMUtils.serializeNode(xmlResponse, true);
+ /*
+ * Soll die Antwort nur \n enthalten, so gibt es 2 Möglichkeiten: 1.) Xalan
+ * Version und xmlResponseString = DOMUtils.serializeNode(xmlResponse, true,
+ * "\n"); 2.) OutputFormat serializerFormat = new OutputFormat((Document)
+ * xmlResponse.getOwnerDocument()); serializerFormat.setLineSeparator("\n");
+ * serializerFormat.setIndenting(false);
+ * serializerFormat.setPreserveSpace(true);
+ * serializerFormat.setOmitXMLDeclaration(true);
+ * serializerFormat.setEncoding("UTF-8"); ByteArrayOutputStream serializedBytes
+ * = new ByteArrayOutputStream(); XMLSerializer serializer = new
+ * XMLSerializer(serializedBytes, serializerFormat);
+ * serializer.serialize(xmlResponse); serializedBytes.close(); xmlResponseString
+ * = serializedBytes.toString("UTF-8");
+ */
+ if (Logger.isTraceEnabled()) {
+ Logger.trace(new LogMsg(xmlResponseString));
+ }
+ soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST;
+ // override axis response-message
+ msgContext.setResponseMessage(new Message(soapResponseString));
+ } catch (final Throwable t) {
+ t.printStackTrace();
+ Logger.info(new LogMsg(t.getStackTrace()));
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ throw fault;
+ }
+
+ } else {
+ // Fallback: if functions do not set the resulting response in the
+ // transaction, the original one from axis will be used
+ soapResponseString = msgContext.getCurrentMessage().getSOAPPartAsString();
+ }
+
+ info("handler.04", null);
+ if (Logger.isDebugEnabled()) {
+ Logger.debug(new LogMsg(soapResponseString));
+ }
+ tearDownContexts();
+ }
+
+ /**
+ * Called, when the processing of the web service fails.
+ *
+ * @param msgContext Information about the current request.
+ * @see org.apache.axis.Handler#onFault(org.apache.axis.MessageContext)
+ */
+ @Override
+ public void onFault(MessageContext msgContext) {
+ info("handler.05", null);
+ tearDownContexts();
+ }
+
+ /**
+ * Set up the thread-local contexts (<code>TransactionContext</code> and
+ * <code>LoggingContext</code>).
+ *
+ * @param context The <code>TransactionContext</code> to set for the current
+ * request.
+ */
+ private void setUpContexts(TransactionContext context) {
+ // set the transaction context in the TransactionContextManager
+ final TransactionContextManager tcm = TransactionContextManager.getInstance();
+ tcm.setTransactionContext(context);
+
+ // set the logging context in the LoggingContextManager
+ final LoggingContextManager lcm = LoggingContextManager.getInstance();
+ final LoggingContext lc = new LoggingContext(context.getTransactionID());
+ lcm.setLoggingContext(lc);
+ }
+
+ /**
+ * Tear down the thread-local contexts.
+ */
+ private void tearDownContexts() {
+ final TransactionContextManager tcm = TransactionContextManager.getInstance();
+
+ // delete temporary files
+ final TransactionContext context = tcm.getTransactionContext();
+ context.cleanAttachmentCache();
+
+ // unset the transaction context
+ tcm.setTransactionContext(null);
+
+ // unset the logging context
+ final LoggingContextManager lcm = LoggingContextManager.getInstance();
+ lcm.setLoggingContext(null);
+ }
+
+ /**
+ * Generate the WSDL into the <code>msgContext</code>.
+ *
+ * The code of this method is more or less copied from the
+ * <code>org.apache.axis.handlers.soap.SOAPService</code> class contained in the
+ * 1.1 release of Axis to allow for a missing <code>wsdlFile</code> (so that a
+ * resource by the same name is searched for in the classpath). The
+ * implementation of this method should be obsolete if Axis 1.1 or higher is
+ * used.
+ *
+ * @param msgContext The <code>MessageContext</code> that will contain the WSDL
+ * description of the current web service.
+ * @throws AxisFault An error occurred producing the WSDL.
+ */
+ @Override
+ public void generateWSDL(MessageContext msgContext) throws AxisFault {
+ InputStream instream = null;
+
+ try {
+ final String filename = MOA_SPSS_WSDL_RESOURCE_;
+
+ final File file = new File(filename);
+ if (file.exists()) {
+ // if this resolves to a file, load it
+ instream = new FileInputStream(filename);
+ } else {
+ // else load a named resource in our classloader.
+ instream = this.getClass().getResourceAsStream(filename);
+ if (instream == null) {
+ final String errorText = Messages.getMessage("wsdlFileMissing", filename);
+ throw new AxisFault(errorText);
+ }
+ }
+ final Document doc = XMLUtils.newDocument(instream);
+ msgContext.setProperty("WSDL", doc);
+ } catch (final Exception e) {
+ throw AxisFault.makeFault(e);
+ } finally {
+ if (instream != null) {
+ try {
+ instream.close();
+ } catch (final IOException e) {
+ // ok to do nothing here
+ }
+ }
+ }
+ }
+
+ /**
+ * Utility function to issue an info message to the log.
+ *
+ * @param messageId The ID of the message to log.
+ * @param parameters Additional message parameters.
+ */
+ private static void info(String messageId, Object[] parameters) {
+ final MessageProvider msg = MessageProvider.getInstance();
+
+ Logger.info(new LogMsg(msg.getMessage(messageId, parameters)));
+ }
+
+ /**
+ * Utility function to issue an debug message to the log.
+ *
+ * @param messageId The ID of the message to log.
+ * @param parameters Additional message parameters.
+ */
+ private static void debug(String messageId, Object[] parameters) {
+ final MessageProvider msg = MessageProvider.getInstance();
+
+ Logger.debug(new LogMsg(msg.getMessage(messageId, parameters)));
+ }
+
+ // private byte[] toByteArray(AttachmentPart attachment) throws
+ // SOAPException, IOException
+ // {
+ // ByteArrayOutputStream outputStream = new
+ // ByteArrayOutputStream(attachment.getSize());
+ // InputStream inputStream = (InputStream) attachment.getContent();
+ // int currentByte = -1;
+ // while ((currentByte = inputStream.read()) != -1)
+ // outputStream.write(currentByte);
+ //
+ // inputStream.close();
+ // outputStream.close();
+ //
+ // return outputStream.toByteArray();
+ //
+ // }
} \ No newline at end of file
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java
index 43804a2..bc2c3b6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java
@@ -1,9 +1,5 @@
package at.gv.egovernment.moa.spss.server.service;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-
import java.io.IOException;
import java.math.BigInteger;
import java.security.Principal;
@@ -26,155 +22,158 @@ import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry;
import at.gv.egovernment.moa.spss.server.logging.TransactionId;
import at.gv.egovernment.moa.spss.server.transaction.TransactionIDGenerator;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.server.modules.keys.KeyEntryID;
+import iaik.server.modules.keys.KeyModule;
+import iaik.server.modules.keys.KeyModuleFactory;
/**
- *
+ *
* @author Andreas Fitzek
* @version $Id$
*/
public class CertificateProviderServlet extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = -6907582473072190122L;
-
- /** The property name for accessing the X509 client certificate chain. */
- private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
-
- public static final String PARAM_KEYID = "id";
-
- /**
- * Build the set of <code>KeyEntryID</code>s available to the given
- * <code>keyGroupID</code>.
- *
- * @param keyGroupID
- * The keygroup ID for which the available keys should be
- * returned.
- * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the
- * available keys.
- * @throws ConfigurationException
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private Set buildKeySet(String keyGroupID, X509Certificate cert, KeyModule module)
- throws ConfigurationException {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
- Set keyGroupEntries;
-
- // get the KeyGroup entries from the configuration
- if (cert != null) {
- Principal issuer = cert.getIssuerDN();
- BigInteger serialNumber = cert.getSerialNumber();
-
- keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber,
- keyGroupID);
- } else {
- keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
- }
-
- // map the KeyGroup entries to a set of KeyEntryIDs
- if (keyGroupEntries == null) {
- return null;
- } else if (keyGroupEntries.size() == 0) {
- return Collections.EMPTY_SET;
- } else {
-
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
- Set keySet = new HashSet();
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
- KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(),
- entryID.getCertificateIssuer(),
- entryID.getCertificateSerialNumber());
- if (keyGroupEntries.contains(entry)) {
- keySet.add(entryID);
- }
- }
- return keySet;
- }
- }
-
- private X509Certificate getClientCertificate(HttpServletRequest request) {
- X509Certificate[] clientCert = (X509Certificate[]) request
- .getAttribute(X509_CERTIFICATE_PROPERTY);
- if(clientCert != null) {
- return clientCert[0];
- }
- return null;
- }
-
- @SuppressWarnings("rawtypes")
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- try {
- X509Certificate cert = getClientCertificate(request);
- String keyId = request.getParameter(PARAM_KEYID);
-
- if(keyId == null) {
- Logger.warn(PARAM_KEYID + " not provided in Request. Returning: " + HttpServletResponse.SC_BAD_REQUEST);
- response.sendError(HttpServletResponse.SC_BAD_REQUEST);
- return;
- }
-
- String transactionId = TransactionIDGenerator.nextID();
-
- KeyModule module = KeyModuleFactory.getInstance(new TransactionId(
- transactionId));
-
- Set keySet = buildKeySet(keyId, cert, module);
-
- if(keySet == null || keySet.isEmpty()) {
- Logger.warn("No keys available for Key Identifier " + keyId + " and given authentication.");
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
-
-
- if(keySet.size() != 1) {
- Logger.warn("Too many keys available for Key Identifier " + keyId + " and given authentication.");
- response.sendError(HttpServletResponse.SC_CONFLICT);
- return;
- }
-
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keySet.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
-
- List certChain = module.getPrivateKeyEntry(entryID).getCertificateChain();
-
- if(certChain != null && !certChain.isEmpty()) {
- Logger.trace("Returning Certificate!");
- Certificate keyCert = ((Certificate)certChain.get(0));
- byte[] certData = keyCert.getEncoded();
- response.setStatus(HttpServletResponse.SC_OK);
- response.setContentType("application/pkix-cert");
- response.setHeader("Content-disposition","attachment; filename=\"" + keyId + ".cer\"");
- response.getOutputStream().write(certData);
- response.getOutputStream().close();
- return;
- }
-
- break;
- }
-
- // No Certificate could be found!
- Logger.warn("Failed to find keys available for Key Identifier " + keyId + " and given authentication.");
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- } catch(Throwable e) {
- Logger.error("Unhandled Exception when providing certificate", e);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- }
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6907582473072190122L;
+
+ /** The property name for accessing the X509 client certificate chain. */
+ private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
+
+ public static final String PARAM_KEYID = "id";
+
+ /**
+ * Build the set of <code>KeyEntryID</code>s available to the given
+ * <code>keyGroupID</code>.
+ *
+ * @param keyGroupID The keygroup ID for which the available keys should be
+ * returned.
+ * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the
+ * available keys.
+ * @throws ConfigurationException
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ private Set buildKeySet(String keyGroupID, X509Certificate cert, KeyModule module)
+ throws ConfigurationException {
+ final ConfigurationProvider config = ConfigurationProvider.getInstance();
+ Set keyGroupEntries;
+
+ // get the KeyGroup entries from the configuration
+ if (cert != null) {
+ final Principal issuer = cert.getIssuerDN();
+ final BigInteger serialNumber = cert.getSerialNumber();
+
+ keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber,
+ keyGroupID);
+ } else {
+ keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
+ }
+
+ // map the KeyGroup entries to a set of KeyEntryIDs
+ if (keyGroupEntries == null) {
+ return null;
+ } else if (keyGroupEntries.size() == 0) {
+ return Collections.EMPTY_SET;
+ } else {
+
+ final Set keyEntryIDs = module.getPrivateKeyEntryIDs();
+ final Set keySet = new HashSet();
+ Iterator iter;
+
+ // filter out the keys that do not exist in the IAIK configuration
+ // by walking through the key entries and checking if the exist in
+ // the
+ // keyGroupEntries
+ for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
+ final KeyEntryID entryID = (KeyEntryID) iter.next();
+ final KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(),
+ entryID.getCertificateIssuer(),
+ entryID.getCertificateSerialNumber());
+ if (keyGroupEntries.contains(entry)) {
+ keySet.add(entryID);
+ }
+ }
+ return keySet;
+ }
+ }
+
+ private X509Certificate getClientCertificate(HttpServletRequest request) {
+ final X509Certificate[] clientCert = (X509Certificate[]) request
+ .getAttribute(X509_CERTIFICATE_PROPERTY);
+ if (clientCert != null) {
+ return clientCert[0];
+ }
+ return null;
+ }
+
+ @Override
+ @SuppressWarnings("rawtypes")
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ try {
+ final X509Certificate cert = getClientCertificate(request);
+ final String keyId = request.getParameter(PARAM_KEYID);
+
+ if (keyId == null) {
+ Logger.warn(PARAM_KEYID + " not provided in Request. Returning: "
+ + HttpServletResponse.SC_BAD_REQUEST);
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST);
+ return;
+ }
+
+ final String transactionId = TransactionIDGenerator.nextID();
+
+ final KeyModule module = KeyModuleFactory.getInstance(new TransactionId(
+ transactionId));
+
+ final Set keySet = buildKeySet(keyId, cert, module);
+
+ if (keySet == null || keySet.isEmpty()) {
+ Logger.warn("No keys available for Key Identifier " + keyId + " and given authentication.");
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ if (keySet.size() != 1) {
+ Logger.warn("Too many keys available for Key Identifier " + keyId + " and given authentication.");
+ response.sendError(HttpServletResponse.SC_CONFLICT);
+ return;
+ }
+
+ Iterator iter;
+
+ // filter out the keys that do not exist in the IAIK configuration
+ // by walking through the key entries and checking if the exist in
+ // the
+ // keyGroupEntries
+ for (iter = keySet.iterator(); iter.hasNext();) {
+ final KeyEntryID entryID = (KeyEntryID) iter.next();
+
+ final List certChain = module.getPrivateKeyEntry(entryID).getCertificateChain();
+
+ if (certChain != null && !certChain.isEmpty()) {
+ Logger.trace("Returning Certificate!");
+ final Certificate keyCert = (Certificate) certChain.get(0);
+ final byte[] certData = keyCert.getEncoded();
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setContentType("application/pkix-cert");
+ response.setHeader("Content-disposition", "attachment; filename=\"" + keyId + ".cer\"");
+ response.getOutputStream().write(certData);
+ response.getOutputStream().close();
+ return;
+ }
+
+ break;
+ }
+
+ // No Certificate could be found!
+ Logger.warn("Failed to find keys available for Key Identifier " + keyId + " and given authentication.");
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ } catch (final Throwable e) {
+ Logger.error("Unhandled Exception when providing certificate", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java
index 6164154..135d652 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
import java.io.IOException;
@@ -37,7 +36,7 @@ import javax.servlet.http.HttpServletResponse;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
-import at.gv.egovernment.moa.spss.server.init.*;
+import at.gv.egovernment.moa.spss.server.init.SystemInitializer;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
@@ -46,36 +45,38 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager;
/**
* A servlet to initialize and update the MOA configuration.
- *
+ *
* @author Fatemeh Philippi
* @author Patrick Peck
* @version $Id$
*/
public class ConfigurationServlet extends HttpServlet {
/**
- *
- */
- private static final long serialVersionUID = 8372961105222028696L;
-/** The document type of the HTML to generate. */
+ *
+ */
+ private static final long serialVersionUID = 8372961105222028696L;
+ /** The document type of the HTML to generate. */
private static final String DOC_TYPE =
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
/**
- * Handle a HTTP GET request, used to indicated that the MOA
- * configuration needs to be updated (reloaded).
- *
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
+ * Handle a HTTP GET request, used to indicated that the MOA configuration needs
+ * to be updated (reloaded).
+ *
+ * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest,
+ * HttpServletResponse)
*/
+ @Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ throws ServletException, IOException {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
PrintWriter out;
// set up a logging context for logging the reconfiguration
LoggingContextManager.getInstance().setLoggingContext(
- new LoggingContext("configuration update"));
+ new LoggingContext("configuration update"));
response.setContentType("text/html");
out = response.getWriter();
@@ -84,8 +85,8 @@ public class ConfigurationServlet extends HttpServlet {
out.println("<body bgcolor=\"#FFFFFF\">");
try {
// reconfigure the system
- ConfigurationProvider config = ConfigurationProvider.reload();
- IaikConfigurator iaikConfigurator = new IaikConfigurator();
+ final ConfigurationProvider config = ConfigurationProvider.reload();
+ final IaikConfigurator iaikConfigurator = new IaikConfigurator();
iaikConfigurator.configure(config);
@@ -95,12 +96,12 @@ public class ConfigurationServlet extends HttpServlet {
if (!config.getWarnings().isEmpty()) {
// print the warnings
- List allWarnings = new ArrayList();
+ final List allWarnings = new ArrayList();
Iterator iter;
-
+
allWarnings.addAll(config.getWarnings());
allWarnings.addAll(iaikConfigurator.getWarnings());
-
+
out.println("<p><b>" + msg.getMessage("config.29", null) + "</b></p>");
for (iter = allWarnings.iterator(); iter.hasNext();) {
out.println(iter.next() + "<br />");
@@ -108,7 +109,7 @@ public class ConfigurationServlet extends HttpServlet {
out.println("<p><b>" + msg.getMessage("config.28", null) + "</b></p>");
}
- } catch (Throwable t) {
+ } catch (final Throwable t) {
out.println("<p><b>" + msg.getMessage("config.20", null) + "</b></p>");
out.println("<p><b>" + msg.getMessage("config.28", null) + "</b></p>");
Logger.warn(new LogMsg(msg.getMessage("config.20", null)), t);
@@ -117,30 +118,33 @@ public class ConfigurationServlet extends HttpServlet {
out.flush();
out.close();
-
+
// tear down the logging context
LoggingContextManager.getInstance().setLoggingContext(null);
}
/**
* Do the same as <code>doGet</code>.
- *
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
+ *
+ * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest,
+ * HttpServletResponse)
*/
+ @Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ throws ServletException, IOException {
doGet(request, response);
}
/**
* Perform some initial initialization tasks for the MOA web services
* application.
- *
+ *
* Does an initial load of the MOA configuration to test if a working web
* service can be provided.
- *
+ *
* @see javax.servlet.GenericServlet#init()
*/
+ @Override
public void init() throws ServletException {
SystemInitializer.init();
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java
index 1d49cd7..f5350af 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java
@@ -8,36 +8,35 @@ import at.gv.egovernment.moa.spss.server.transaction.DeleteableDataSource;
public class DeleteableDataSourceWrapper implements DeleteableDataSource {
- private org.apache.axis.attachments.ManagedMemoryDataSource wrapped;
-
- public DeleteableDataSourceWrapper(org.apache.axis.attachments.ManagedMemoryDataSource wrapped) {
- this.wrapped = wrapped;
- }
-
- @Override
- public String getContentType() {
- return this.wrapped.getContentType();
- }
-
- @Override
- public InputStream getInputStream() throws IOException {
- return this.wrapped.getInputStream();
- }
-
- @Override
- public String getName() {
- return this.wrapped.getName();
- }
-
- @Override
- public OutputStream getOutputStream() throws IOException {
- return this.wrapped.getOutputStream();
- }
-
- @Override
- public void delete() {
- this.wrapped.delete();
- }
-
-
+ private final org.apache.axis.attachments.ManagedMemoryDataSource wrapped;
+
+ public DeleteableDataSourceWrapper(org.apache.axis.attachments.ManagedMemoryDataSource wrapped) {
+ this.wrapped = wrapped;
+ }
+
+ @Override
+ public String getContentType() {
+ return this.wrapped.getContentType();
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return this.wrapped.getInputStream();
+ }
+
+ @Override
+ public String getName() {
+ return this.wrapped.getName();
+ }
+
+ @Override
+ public OutputStream getOutputStream() throws IOException {
+ return this.wrapped.getOutputStream();
+ }
+
+ @Override
+ public void delete() {
+ this.wrapped.delete();
+ }
+
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java
index 697c69e..c4ad498 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
import java.io.ByteArrayInputStream;
@@ -37,7 +36,7 @@ import at.gv.egovernment.moaspss.util.MOAErrorHandler;
/**
* Helper methods for the Service classes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -45,59 +44,59 @@ public class ServiceUtils {
/**
* Schema-validate a request.
- *
+ *
* @param request The request to validate.
* @throws MOAApplicationException An error occurred validating the requst.
*/
public static void validateRequest(Element[] request)
- throws MOAApplicationException {
+ throws MOAApplicationException {
// validate the request
try {
DOMUtils.validateElement(
- request[0],
- Constants.ALL_SCHEMA_LOCATIONS,
- null,
- new MOASPSSEntityResolver());
- } catch (Exception e) {
+ request[0],
+ Constants.ALL_SCHEMA_LOCATIONS,
+ null,
+ new MOASPSSEntityResolver());
+ } catch (final Exception e) {
throw new MOAApplicationException(
- "1100",
- new Object[] { e.getMessage()},
- e);
+ "1100",
+ new Object[] { e.getMessage() },
+ e);
}
}
/**
* Reparse the request with schema-validation turned on so that ID references
* are resolved.
- *
+ *
* @param request The request to reparse.
* @return The reparsed request.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public static Element reparseRequest(Element request)
- throws MOAApplicationException {
+ throws MOAApplicationException {
try {
- byte[] requestBytes = DOMUtils.serializeNode(request, "UTF-8");
- Document validatedRequest = DOMUtils.parseDocument(new ByteArrayInputStream(requestBytes),
- true,
- Constants.ONLY_MOASIG_SCHEMA_LOCATIONS,
- null,
- new MOASPSSEntityResolver(),
- new MOAErrorHandler());
-
+ final byte[] requestBytes = DOMUtils.serializeNode(request, "UTF-8");
+ final Document validatedRequest = DOMUtils.parseDocument(new ByteArrayInputStream(requestBytes),
+ true,
+ Constants.ONLY_MOASIG_SCHEMA_LOCATIONS,
+ null,
+ new MOASPSSEntityResolver(),
+ new MOAErrorHandler());
+
// DOMUtils.parseDocument(
// new ByteArrayInputStream(requestBytes),
// true,
// Constants.ALL_SCHEMA_LOCATIONS,
// null);
return validatedRequest.getDocumentElement();
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new MOAApplicationException(
- "1100",
- new Object[] { e.getMessage()},
- e);
+ "1100",
+ new Object[] { e.getMessage() },
+ e);
}
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java
index 839d8ba..4030883 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
import java.util.Collections;
@@ -43,7 +42,6 @@ import at.gv.egovernment.moa.spss.api.xmlbind.CreateXMLSignatureResponseBuilder;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;
-import at.gv.egovernment.moa.spss.server.invoke.PDFASInvoker;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
@@ -57,260 +55,261 @@ import at.gv.egovernment.moaspss.util.StreamUtils;
/**
* The service endpoint for the <code>SignatureCreation</code> web service.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SignatureCreationService {
-
- /**
- * Handle a <code>CreatePDFSignatureRequest</code>.
- *
- * @param request The <code>CreatePDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>CreatePDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] CreatePDFSignatureRequest(Element[] request)
- throws AxisFault {
- Logger.trace("---- Entering SignatureCreationService");
- //PDFSignatureCreationInvoker invoker =
- // PDFSignatureCreationInvoker.getInstance();
- Element[] response = new Element[1];
-
- // check that we have a CreateXMLSignatureRequest; if not, create an
- // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
- if (!Constants.MOA_SPSS_CREATE_PDF_REQUEST.equals(request[0].getLocalName()) ||
- !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI()))
- {
- QName qname =
- new QName(request[0].getNamespaceURI(), request[0].getLocalName());
- throw new AxisFault(
- Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse
- }
-
- // handle the request
- try {
-
- // create a parser and builder for binding API objects to/from XML
- CreatePDFSignatureRequestParser requestParser =
- new CreatePDFSignatureRequestParser();
- CreatePDFSignatureResponseBuilder responseBuilder =
- new CreatePDFSignatureResponseBuilder();
- Element reparsedReq;
- CreatePDFRequest requestObj;
- CreatePDFRespone responseObj = null;
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
-
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- Logger.trace(">>> preparsing Request");
- requestObj = requestParser.parse(reparsedReq);
- Logger.trace("<<< preparsed Request");
-
- Logger.trace(">>> creating Signature");
- // invoke the core logic
- //responseObj = PDFASInvoker.getInstance().createPDFSignature(requestObj, context.getTransactionID());
-
- Logger.trace("<<< created Signature");
-
- Logger.trace(">>> building Response");
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
- Logger.trace("<<< built Response");
-
- // save response in transaction
- context.setResponse(response[0]);
- Logger.trace("---- Leaving SignatureCreationService");
-
- //TODO: remove if PDF signatures are supported
- throw new MOASystemException("Create PAdES signatures is currently NOT supported by MOA-SIG", null);
-
- //return response;
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
-
- }
-
- /**
- * Handle a <code>CreateXMLSignatureRequest</code>.
- *
- * @param request The <code>CreateXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>CreateXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] CreateCMSSignatureRequest(Element[] request)
- throws AxisFault {
- Logger.trace("---- Entering SignatureCreationService");
- CMSSignatureCreationInvoker invoker =
- CMSSignatureCreationInvoker.getInstance();
- Element[] response = new Element[1];
-
- // check that we have a CreateXMLSignatureRequest; if not, create an
- // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
- if (!Constants.MOA_SPSS_CREATE_CMS_REQUEST.equals(request[0].getLocalName()) ||
- !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI()))
- {
- QName qname =
- new QName(request[0].getNamespaceURI(), request[0].getLocalName());
- throw new AxisFault(
- Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse
- }
-
- // handle the request
- try {
-
- // create a parser and builder for binding API objects to/from XML
- CreateCMSSignatureRequestParser requestParser =
- new CreateCMSSignatureRequestParser();
- CreateCMSSignatureResponseBuilder responseBuilder =
- new CreateCMSSignatureResponseBuilder();
- Element reparsedReq;
- CreateCMSSignatureRequest requestObj;
- CreateCMSSignatureResponse responseObj;
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
-
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- Logger.trace(">>> preparsing Request");
- requestObj = requestParser.parse(reparsedReq);
- Logger.trace("<<< preparsed Request");
-
- Logger.trace(">>> creating Signature");
- // invoke the core logic
- responseObj = invoker.createCMSSignature(requestObj, Collections.EMPTY_SET);
- Logger.trace("<<< created Signature");
-
- Logger.trace(">>> building Response");
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
- Logger.trace("<<< built Response");
-
- // save response in transaction
- context.setResponse(response[0]);
- Logger.trace("---- Leaving SignatureCreationService");
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
- }
+
+ /**
+ * Handle a <code>CreatePDFSignatureRequest</code>.
+ *
+ * @param request The <code>CreatePDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>CreatePDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] CreatePDFSignatureRequest(Element[] request)
+ throws AxisFault {
+ Logger.trace("---- Entering SignatureCreationService");
+ // PDFSignatureCreationInvoker invoker =
+ // PDFSignatureCreationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ // check that we have a CreateXMLSignatureRequest; if not, create an
+ // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
+ if (!Constants.MOA_SPSS_CREATE_PDF_REQUEST.equals(request[0].getLocalName()) ||
+ !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) {
+ final QName qname =
+ new QName(request[0].getNamespaceURI(), request[0].getLocalName());
+ throw new AxisFault(
+ Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not
+ // make it into the error repsonse
+ }
+
+ // handle the request
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final CreatePDFSignatureRequestParser requestParser =
+ new CreatePDFSignatureRequestParser();
+ final CreatePDFSignatureResponseBuilder responseBuilder =
+ new CreatePDFSignatureResponseBuilder();
+ Element reparsedReq;
+ CreatePDFRequest requestObj;
+ final CreatePDFRespone responseObj = null;
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ Logger.trace(">>> preparsing Request");
+ requestObj = requestParser.parse(reparsedReq);
+ Logger.trace("<<< preparsed Request");
+
+ Logger.trace(">>> creating Signature");
+ // invoke the core logic
+ // responseObj = PDFASInvoker.getInstance().createPDFSignature(requestObj,
+ // context.getTransactionID());
+
+ Logger.trace("<<< created Signature");
+
+ Logger.trace(">>> building Response");
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+ Logger.trace("<<< built Response");
+
+ // save response in transaction
+ context.setResponse(response[0]);
+ Logger.trace("---- Leaving SignatureCreationService");
+
+ // TODO: remove if PDF signatures are supported
+ throw new MOASystemException("Create PAdES signatures is currently NOT supported by MOA-SIG", null);
+
+ // return response;
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ }
/**
* Handle a <code>CreateXMLSignatureRequest</code>.
*
* @param request The <code>CreateXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>CreateXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>CreateXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] CreateCMSSignatureRequest(Element[] request)
+ throws AxisFault {
+ Logger.trace("---- Entering SignatureCreationService");
+ final CMSSignatureCreationInvoker invoker =
+ CMSSignatureCreationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ // check that we have a CreateXMLSignatureRequest; if not, create an
+ // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
+ if (!Constants.MOA_SPSS_CREATE_CMS_REQUEST.equals(request[0].getLocalName()) ||
+ !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) {
+ final QName qname =
+ new QName(request[0].getNamespaceURI(), request[0].getLocalName());
+ throw new AxisFault(
+ Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not
+ // make it into the error repsonse
+ }
+
+ // handle the request
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final CreateCMSSignatureRequestParser requestParser =
+ new CreateCMSSignatureRequestParser();
+ final CreateCMSSignatureResponseBuilder responseBuilder =
+ new CreateCMSSignatureResponseBuilder();
+ Element reparsedReq;
+ CreateCMSSignatureRequest requestObj;
+ CreateCMSSignatureResponse responseObj;
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ Logger.trace(">>> preparsing Request");
+ requestObj = requestParser.parse(reparsedReq);
+ Logger.trace("<<< preparsed Request");
+
+ Logger.trace(">>> creating Signature");
+ // invoke the core logic
+ responseObj = invoker.createCMSSignature(requestObj, Collections.EMPTY_SET);
+ Logger.trace("<<< created Signature");
+
+ Logger.trace(">>> building Response");
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+ Logger.trace("<<< built Response");
+
+ // save response in transaction
+ context.setResponse(response[0]);
+ Logger.trace("---- Leaving SignatureCreationService");
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ return response;
+ }
+
+ /**
+ * Handle a <code>CreateXMLSignatureRequest</code>.
+ *
+ * @param request The <code>CreateXMLSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>CreateXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] CreateXMLSignatureRequest(Element[] request)
- throws AxisFault {
- Logger.trace("---- Entering SignatureCreationService");
- XMLSignatureCreationInvoker invoker =
- XMLSignatureCreationInvoker.getInstance();
- Element[] response = new Element[1];
+ throws AxisFault {
+ Logger.trace("---- Entering SignatureCreationService");
+ final XMLSignatureCreationInvoker invoker =
+ XMLSignatureCreationInvoker.getInstance();
+ final Element[] response = new Element[1];
// check that we have a CreateXMLSignatureRequest; if not, create an
// AxisFault, just like the org.apache.axis.providers.java.MsgProvider
if (!Constants.MOA_SPSS_CREATE_XML_REQUEST.equals(request[0].getLocalName()) ||
- !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI()))
- {
- QName qname =
- new QName(request[0].getNamespaceURI(), request[0].getLocalName());
+ !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) {
+ final QName qname =
+ new QName(request[0].getNamespaceURI(), request[0].getLocalName());
throw new AxisFault(
- Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse
+ Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not
+ // make it into the error repsonse
}
// handle the request
try {
-
+
// create a parser and builder for binding API objects to/from XML
- CreateXMLSignatureRequestParser requestParser =
- new CreateXMLSignatureRequestParser();
- CreateXMLSignatureResponseBuilder responseBuilder =
- new CreateXMLSignatureResponseBuilder();
+ final CreateXMLSignatureRequestParser requestParser =
+ new CreateXMLSignatureRequestParser();
+ final CreateXMLSignatureResponseBuilder responseBuilder =
+ new CreateXMLSignatureResponseBuilder();
Element reparsedReq;
CreateXMLSignatureRequest requestObj;
CreateXMLSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
-
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+
// validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
// convert to API objects
- Logger.trace(">>> preparsing Request");
+ Logger.trace(">>> preparsing Request");
requestObj = requestParser.parse(reparsedReq);
- Logger.trace("<<< preparsed Request");
-
- Logger.trace(">>> creating Signature");
+ Logger.trace("<<< preparsed Request");
+
+ Logger.trace(">>> creating Signature");
// invoke the core logic
responseObj = invoker.createXMLSignature(requestObj, Collections.EMPTY_SET);
- Logger.trace("<<< created Signature");
+ Logger.trace("<<< created Signature");
- Logger.trace(">>> building Response");
+ Logger.trace(">>> building Response");
// map back to XML
response[0] = responseBuilder.build(responseObj).getDocumentElement();
- Logger.trace("<<< built Response");
-
+ Logger.trace("<<< built Response");
+
// save response in transaction
context.setResponse(response[0]);
- Logger.trace("---- Leaving SignatureCreationService");
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ Logger.trace("---- Leaving SignatureCreationService");
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
index e4d93a7..55cc5c6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
@@ -21,21 +21,21 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
+import java.util.List;
+
+import org.apache.axis.AxisFault;
+import org.w3c.dom.Element;
+
import at.gv.egiz.asic.api.ASiC;
import at.gv.egiz.asic.api.ASiCFactory;
-import at.gv.egiz.asic.api.ASiCFormat;
import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egiz.asic.impl.ASiCMOAVerifier;
import at.gv.egiz.asic.xmlbind.VerifyASICSignatureRequestParser;
import at.gv.egiz.asic.xmlbind.VerifyASICSignatureResponseBuilder;
import at.gv.egiz.asic.xmlbind.VerifyASiCRequest;
import at.gv.egovernment.moa.spss.MOAApplicationException;
-import org.apache.axis.AxisFault;
-import org.w3c.dom.Element;
-
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
@@ -54,192 +54,189 @@ import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.StreamUtils;
-import java.io.FileInputStream;
-import java.util.List;
-
/**
* The service endpoint for the <code>SignatureVerification</code> web service.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SignatureVerificationService {
- /**
- * Handle a <code>VerifyPDFSignatureRequest</code>.
- *
- * @param request The <code>VerifyPDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyPDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] VerifyPDFSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
- try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyCMSSignatureRequestParser requestParser =
- new VerifyCMSSignatureRequestParser();
- VerifyPDFSignatureResponseBuilder responseBuilder =
- new VerifyPDFSignatureResponseBuilder();
- Element reparsedReq;
- VerifyCMSSignatureRequest requestObj;
- VerifyCMSSignatureResponse responseObj;
- // create a parser and builder for binding API objects to/from XML
- /*VerifyPDFRequestParser requestParser =
- new VerifyPDFRequestParser();
- VerifyPDFResponseBuilder responseBuilder =
- new VerifyPDFResponseBuilder();
- Element reparsedReq;
- VerifyPDFRequest requestObj;
- VerifyPDFResponse responseObj;*/
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- requestObj = requestParser.parsePDF(reparsedReq);
-
- // invoke the core logic
- responseObj = invoker.verifyCMSSignature(requestObj);
-
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
-
- // save response in transaction
- context.setResponse(response[0]);
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
- }
-
-
- /**
- * Handle a <code>VerifyPDFSignatureRequest</code>.
- *
- * @param request The <code>VerifyPDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyPDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] VerifyASICSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
- try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyASICSignatureRequestParser requestParser =
- new VerifyASICSignatureRequestParser();
- VerifyASICSignatureResponseBuilder responseBuilder =
- new VerifyASICSignatureResponseBuilder();
- Element reparsedReq;
- VerifyASiCRequest requestObj;
- VerifyCMSSignatureResponse responseObj;
- // create a parser and builder for binding API objects to/from XML
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- requestObj = requestParser.parseASIC(reparsedReq);
-
- if(requestObj.getFormat() == null) {
- throw new MOAApplicationException("asic.0006", null);
- }
-
- ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(),
- requestObj.getFormat());
-
- Logger.debug("Got ASiC " + aSiC);
-
- // invoke the core logic
- ASiCMOAVerifier v = new ASiCMOAVerifier();
- List<ASiCVerificationResult> results = v.verify(aSiC,
- requestObj.getTrustProfile(), requestObj.getDate());
-
- // map back to XML
- response[0] = responseBuilder.build(results).getDocumentElement();
-
- // save response in transaction
- context.setResponse(response[0]);
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
+ /**
+ * Handle a <code>VerifyPDFSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyPDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] VerifyPDFSignatureRequest(Element[] request)
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyCMSSignatureRequestParser requestParser =
+ new VerifyCMSSignatureRequestParser();
+ final VerifyPDFSignatureResponseBuilder responseBuilder =
+ new VerifyPDFSignatureResponseBuilder();
+ Element reparsedReq;
+ VerifyCMSSignatureRequest requestObj;
+ VerifyCMSSignatureResponse responseObj;
+ // create a parser and builder for binding API objects to/from XML
+ /*
+ * VerifyPDFRequestParser requestParser = new VerifyPDFRequestParser();
+ * VerifyPDFResponseBuilder responseBuilder = new VerifyPDFResponseBuilder();
+ * Element reparsedReq; VerifyPDFRequest requestObj; VerifyPDFResponse
+ * responseObj;
+ */
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ requestObj = requestParser.parsePDF(reparsedReq);
+
+ // invoke the core logic
+ responseObj = invoker.verifyCMSSignature(requestObj);
+
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+
+ // save response in transaction
+ context.setResponse(response[0]);
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
}
-
+
+ return response;
+ }
+
+ /**
+ * Handle a <code>VerifyPDFSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyPDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] VerifyASICSignatureRequest(Element[] request)
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyASICSignatureRequestParser requestParser =
+ new VerifyASICSignatureRequestParser();
+ final VerifyASICSignatureResponseBuilder responseBuilder =
+ new VerifyASICSignatureResponseBuilder();
+ Element reparsedReq;
+ VerifyASiCRequest requestObj;
+ final VerifyCMSSignatureResponse responseObj;
+ // create a parser and builder for binding API objects to/from XML
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ requestObj = requestParser.parseASIC(reparsedReq);
+
+ if (requestObj.getFormat() == null) {
+ throw new MOAApplicationException("asic.0006", null);
+ }
+
+ final ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(),
+ requestObj.getFormat());
+
+ Logger.debug("Got ASiC " + aSiC);
+
+ // invoke the core logic
+ final ASiCMOAVerifier v = new ASiCMOAVerifier();
+ final List<ASiCVerificationResult> results = v.verify(aSiC,
+ requestObj.getTrustProfile(), requestObj.getDate());
+
+ // map back to XML
+ response[0] = responseBuilder.build(results).getDocumentElement();
+
+ // save response in transaction
+ context.setResponse(response[0]);
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ return response;
+ }
+
/**
* Handle a <code>VerifyCMSSignatureRequest</code>.
- *
+ *
* @param request The <code>VerifyCMSSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyCMSSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyCMSSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] VerifyCMSSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
try {
-
+
// create a parser and builder for binding API objects to/from XML
- VerifyCMSSignatureRequestParser requestParser =
- new VerifyCMSSignatureRequestParser();
- VerifyCMSSignatureResponseBuilder responseBuilder =
- new VerifyCMSSignatureResponseBuilder();
+ final VerifyCMSSignatureRequestParser requestParser =
+ new VerifyCMSSignatureRequestParser();
+ final VerifyCMSSignatureResponseBuilder responseBuilder =
+ new VerifyCMSSignatureResponseBuilder();
Element reparsedReq;
VerifyCMSSignatureRequest requestObj;
VerifyCMSSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
// validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
// convert to API objects
requestObj = requestParser.parse(reparsedReq);
@@ -251,20 +248,19 @@ public class SignatureVerificationService {
// save response in transaction
context.setResponse(response[0]);
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
@@ -273,60 +269,60 @@ public class SignatureVerificationService {
/**
* Handle a <code>VerifyXMLSignatureRequest</code>.
- *
+ *
* @param request The <code>VerifyXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] VerifyXMLSignatureRequest(Element[] request)
- throws AxisFault {
- XMLSignatureVerificationInvoker invoker =
- XMLSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
+ throws AxisFault {
+ final XMLSignatureVerificationInvoker invoker =
+ XMLSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyXMLSignatureRequestParser requestParser =
- new VerifyXMLSignatureRequestParser();
- VerifyXMLSignatureResponseBuilder responseBuilder =
- new VerifyXMLSignatureResponseBuilder();
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyXMLSignatureRequestParser requestParser =
+ new VerifyXMLSignatureRequestParser();
+ final VerifyXMLSignatureResponseBuilder responseBuilder =
+ new VerifyXMLSignatureResponseBuilder();
Element reparsedReq;
VerifyXMLSignatureRequest requestObj;
VerifyXMLSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
// validate the request
reparsedReq = ServiceUtils.reparseRequest(context.getRequest());
-
+
// convert to API objects
requestObj = requestParser.parse(reparsedReq);
-
+
// invoke the core logic
responseObj = invoker.verifyXMLSignature(requestObj);
// map back to XML
response[0] = responseBuilder.build(responseObj).getDocumentElement();
-
+
// save response in transaction
context.setResponse(response[0]);
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java
index d763c44..3bf9a37 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java
@@ -10,72 +10,74 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import at.gv.egovernment.moa.sig.tsl.TslClientFactory;
import at.gv.egovernment.moa.sig.tsl.engine.data.TSLProcessingResultElement;
import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
-import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
public class TSLClientStatusServlet extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
-
- public static final String STATUS_RESP = "'{'\"EUTSLStatus\":\"{0}\", \"EUTSLStatusMsg\":\"{1}\"{2}'}'";
- public static final String DETAIL_INFO = ", \"Details\":'{'{0}'}'";
- //public static final String DETAIL_ENTRY = "\"{0}\":'{'\"verified\":\"{1}\", \"processed\":\"{2}\"'}'";
- public static final String DETAIL_ENTRY = "\"{0}\":'{'\"processed\":\"{2}\"'}'";
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- if (ServiceStatusContainer.getStatus())
- response.setStatus(200);
- else
- response.setStatus(500);
-
- response.setContentType("application/json");
- PrintWriter out = response.getWriter();
- out.println(MessageFormat.format(STATUS_RESP,
- new Object[] {
- String.valueOf(ServiceStatusContainer.getStatus()),
- ServiceStatusContainer.getStatusMsg(),
- getTSLClientDetailInfos()
- }));
- out.flush();
- out.close();
-
- }
-
- private String getTSLClientDetailInfos() {
- String detailInfo = "";
- List<TSLProcessingResultElement> tslDetailStatus = ServiceStatusContainer.getTslDetailStatus();
- if (tslDetailStatus != null) {
- String detailElements = null;
-
- for (TSLProcessingResultElement el : tslDetailStatus) {
- String entry = MessageFormat.format(DETAIL_ENTRY,
- new Object[] {
- el.getCountryCode(),
- String.valueOf(el.isVerified()),
- String.valueOf(el.isProcessed())
- });
- if (detailElements == null)
- detailElements = entry;
- else
- detailElements += ", " + entry;
-
- }
-
- if (detailElements != null)
- detailInfo = MessageFormat.format(DETAIL_INFO,
- new Object[] {
- detailElements
- });
- }
-
- return detailInfo;
- }
+ public static final String STATUS_RESP = "'{'\"EUTSLStatus\":\"{0}\", \"EUTSLStatusMsg\":\"{1}\"{2}'}'";
+ public static final String DETAIL_INFO = ", \"Details\":'{'{0}'}'";
+ // public static final String DETAIL_ENTRY = "\"{0}\":'{'\"verified\":\"{1}\",
+ // \"processed\":\"{2}\"'}'";
+ public static final String DETAIL_ENTRY = "\"{0}\":'{'\"processed\":\"{2}\"'}'";
+
+ @Override
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ if (ServiceStatusContainer.getStatus()) {
+ response.setStatus(200);
+ } else {
+ response.setStatus(500);
+ }
+
+ response.setContentType("application/json");
+ final PrintWriter out = response.getWriter();
+ out.println(MessageFormat.format(STATUS_RESP,
+ new Object[] {
+ String.valueOf(ServiceStatusContainer.getStatus()),
+ ServiceStatusContainer.getStatusMsg(),
+ getTSLClientDetailInfos()
+ }));
+ out.flush();
+ out.close();
+
+ }
+
+ private String getTSLClientDetailInfos() {
+ String detailInfo = "";
+ final List<TSLProcessingResultElement> tslDetailStatus = ServiceStatusContainer.getTslDetailStatus();
+ if (tslDetailStatus != null) {
+ String detailElements = null;
+
+ for (final TSLProcessingResultElement el : tslDetailStatus) {
+ final String entry = MessageFormat.format(DETAIL_ENTRY,
+ new Object[] {
+ el.getCountryCode(),
+ String.valueOf(el.isVerified()),
+ String.valueOf(el.isProcessed())
+ });
+ if (detailElements == null) {
+ detailElements = entry;
+ } else {
+ detailElements += ", " + entry;
+ }
+
+ }
+
+ if (detailElements != null) {
+ detailInfo = MessageFormat.format(DETAIL_INFO,
+ new Object[] {
+ detailElements
+ });
+ }
+ }
+
+ return detailInfo;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java
index c6a1b01..264abd5 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java
@@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
public interface CMSCreateSignatureBinding {
- public at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest buildCMSRequest(
- CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest buildCMSRequest(
+ CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
- public CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response)
- throws MOAApplicationException;
+ CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java
index d878b26..02a838c 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java
@@ -8,16 +8,16 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
public interface CMSVerifySignatureBinding {
- public at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildCMSRequest(
- VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildCMSRequest(
+ VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException;
+
+ at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildPDFRequest(
+ VerifyPDFSignatureRequest verifyPDFSignatureRequest) throws MOAApplicationException;
+
+ VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response)
+ throws MOAApplicationException;
+
+ VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response)
+ throws MOAApplicationException;
- public at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildPDFRequest(
- VerifyPDFSignatureRequest verifyPDFSignatureRequest) throws MOAApplicationException;
-
- public VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response)
- throws MOAApplicationException;
-
- public VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response)
- throws MOAApplicationException;
-
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java
index bb670b7..b5aae78 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java
@@ -7,9 +7,9 @@ import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest;
import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone;
public interface PDFCreateSignatureBinding {
- public CreatePDFRequest buildPDFRequest(
- CreatePDFSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
+ CreatePDFRequest buildPDFRequest(
+ CreatePDFSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
- public CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response)
- throws MOAApplicationException;
+ CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java
index ccfc3fc..bf06ff6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java
@@ -4,21 +4,29 @@ import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
-@WebService(name = "SignatureCreationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
+@WebService(name = "SignatureCreationService",
+ targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
public interface SignatureCreationService {
- @WebMethod(action = "XMLSignatureCreate", operationName = "XMLSignatureCreate")
- public at.gv.egiz.moasig.CreateXMLSignatureResponseType createXMLSignature(
- @WebParam(name = "CreateXMLSignatureRequest") at.gv.egiz.moasig.CreateXMLSignatureRequest createXMLSignatureRequest)
- throws Exception;
-
- @WebMethod(action = "CMSSignatureCreate", operationName = "CMSSignatureCreate")
- public at.gv.egiz.moasig.CreateCMSSignatureResponseType createCMSSignature(
- @WebParam(name = "CreateCMSSignatureRequest") at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest)
- throws Exception;
-
- /*@WebMethod(action = "PDFSignatureCreate", operationName = "PDFSignatureCreate")
- public at.gv.egiz.moasig.CreatePDFSignatureResponseType createPDFSignature(
- @WebParam(name = "CreatePDFSignatureRequest") at.gv.egiz.moasig.CreatePDFSignatureRequest createPDFSignatureRequest)
- throws Exception;*/
+ @WebMethod(action = "XMLSignatureCreate", operationName = "XMLSignatureCreate")
+ at.gv.egiz.moasig.CreateXMLSignatureResponseType createXMLSignature(
+ @WebParam(
+ name = "CreateXMLSignatureRequest") at.gv.egiz.moasig.CreateXMLSignatureRequest createXMLSignatureRequest)
+ throws Exception;
+
+ @WebMethod(action = "CMSSignatureCreate", operationName = "CMSSignatureCreate")
+ at.gv.egiz.moasig.CreateCMSSignatureResponseType createCMSSignature(
+ @WebParam(
+ name = "CreateCMSSignatureRequest") at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest)
+ throws Exception;
+
+ /*
+ * @WebMethod(action = "PDFSignatureCreate", operationName =
+ * "PDFSignatureCreate") public at.gv.egiz.moasig.CreatePDFSignatureResponseType
+ * createPDFSignature(
+ *
+ * @WebParam(name = "CreatePDFSignatureRequest")
+ * at.gv.egiz.moasig.CreatePDFSignatureRequest createPDFSignatureRequest) throws
+ * Exception;
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java
index 65de3bf..b2ee799 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java
@@ -4,22 +4,26 @@ import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
-@WebService(name = "SignatureVerificationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
+@WebService(name = "SignatureVerificationService",
+ targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
public interface SignatureVerificationService {
- @WebMethod(action = "XMLSignatureVerify", operationName = "XMLSignatureVerify")
- public at.gv.egiz.moasig.VerifyXMLSignatureResponseType verifyXMLSignature(
- @WebParam(name = "VerifyXMLSignatureRequest") at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest)
- throws Exception;
-
- @WebMethod(action = "CMSSignatureVerify", operationName = "CMSSignatureVerify")
- public at.gv.egiz.moasig.VerifyCMSSignatureResponseType verifyCMSSignature(
- @WebParam(name = "VerifyCMSSignatureRequest") at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest)
- throws Exception;
-
- @WebMethod(action = "PDFSignatureVerify", operationName = "PDFSignatureVerify")
- public at.gv.egiz.moasig.VerifyPDFSignatureResponseType verifyPDFSignature(
- @WebParam(name = "VerifyPDFSignatureRequest") at.gv.egiz.moasig.VerifyPDFSignatureRequest verifyPDFSignatureRequest)
- throws Exception;
-
+ @WebMethod(action = "XMLSignatureVerify", operationName = "XMLSignatureVerify")
+ at.gv.egiz.moasig.VerifyXMLSignatureResponseType verifyXMLSignature(
+ @WebParam(
+ name = "VerifyXMLSignatureRequest") at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest)
+ throws Exception;
+
+ @WebMethod(action = "CMSSignatureVerify", operationName = "CMSSignatureVerify")
+ at.gv.egiz.moasig.VerifyCMSSignatureResponseType verifyCMSSignature(
+ @WebParam(
+ name = "VerifyCMSSignatureRequest") at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest)
+ throws Exception;
+
+ @WebMethod(action = "PDFSignatureVerify", operationName = "PDFSignatureVerify")
+ at.gv.egiz.moasig.VerifyPDFSignatureResponseType verifyPDFSignature(
+ @WebParam(
+ name = "VerifyPDFSignatureRequest") at.gv.egiz.moasig.VerifyPDFSignatureRequest verifyPDFSignatureRequest)
+ throws Exception;
+
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java
index 149095b..f70f120 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java
@@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
public interface XMLCreateSignatureBinding {
- public at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest(
- CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest(
+ CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException;
- public CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response)
- throws MOAApplicationException;
+ CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java
index 4a6d110..130cf81 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java
@@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;;
public interface XMLVerifySignatureBinding {
- public at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest buildXMLRequest(
- VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest buildXMLRequest(
+ VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException;
- public VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response)
- throws MOAApplicationException;
+ VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java
index 110665c..5628e4b 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java
@@ -4,18 +4,18 @@ import java.util.ArrayList;
import java.util.List;
public class CreatePDFRequest {
- private String keyIdentifier;
- private List<PDFSignatureInfo> signatureInfoList = new ArrayList<PDFSignatureInfo>();
-
- public CreatePDFRequest(String keyIdentifier) {
- this.keyIdentifier = keyIdentifier;
- }
+ private final String keyIdentifier;
+ private final List<PDFSignatureInfo> signatureInfoList = new ArrayList<>();
- public synchronized String getKeyIdentifier() {
- return keyIdentifier;
- }
+ public CreatePDFRequest(String keyIdentifier) {
+ this.keyIdentifier = keyIdentifier;
+ }
- public synchronized List<PDFSignatureInfo> getSignatureInfoList() {
- return signatureInfoList;
- }
+ public synchronized String getKeyIdentifier() {
+ return keyIdentifier;
+ }
+
+ public synchronized List<PDFSignatureInfo> getSignatureInfoList() {
+ return signatureInfoList;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java
index ef7e832..8cabc78 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java
@@ -4,12 +4,12 @@ import java.util.ArrayList;
import java.util.List;
public class CreatePDFRespone {
- private List<SignedPDFInfo> signatureInfoList = new ArrayList<SignedPDFInfo>();
-
- public CreatePDFRespone() {
- }
-
- public synchronized List<SignedPDFInfo> getSignatureInfoList() {
- return signatureInfoList;
- }
+ private final List<SignedPDFInfo> signatureInfoList = new ArrayList<>();
+
+ public CreatePDFRespone() {
+ }
+
+ public synchronized List<SignedPDFInfo> getSignatureInfoList() {
+ return signatureInfoList;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java
index c6b2126..e483db8 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java
@@ -37,106 +37,99 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* A parser to parse <code>CreateCMSSignatureRequest</code> DOM trees into
* <code>CreateCMSSignatureRequest</code> API objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CreatePDFSignatureRequestParser {
- //
- // XPath expresssions to select elements in the CreateCMSSignatureRequest
- //
- private static final String MOA = Constants.MOA_PREFIX + ":";
- private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + "KeyIdentifier";
- private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA
- + "SingleSignatureInfo";
- private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile";
- private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition";
- private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID";
-
- private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument";
-
- /**
- * Create a new <code>CreateCMSSignatureRequestParser</code>.
- */
- public CreatePDFSignatureRequestParser() {
- }
-
- /**
- * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by
- * the MOA schema.
- *
- * @param requestElem
- * The <code>CreateCMSSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema
- * for this method to succeed.
- * @return A <code>CreateCMSSignatureRequest</code> API object containing
- * the data from the DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the request.
- */
- public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException {
-
- String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
-
- CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier);
- parseSingleSignatureInfos(requestElem, createPDFRequest);
-
- return createPDFRequest;
- }
-
- /**
- * Parse all <code>SingleSignatureInfo</code> elements of the
- * <code>CreateCMSSignatureRequest</code>.
- *
- * @param requestElem
- * The <code>CreateCMSSignatureRequest</code> to parse.
- * @return A <code>List</code> of <code>SingleSignatureInfo</code> API
- * objects.
- * @throws MOAApplicationException
- * An error occurred parsing on of the
- * <code>SingleSignatureInfo</code> elements.
- */
- private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest)
- throws MOAApplicationException {
-
- NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
- Element sigInfoElem;
-
- while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
- createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem));
- }
- }
-
- /**
- * Parse a <code>SingleSignatureInfo</code> DOM element.
- *
- * @param sigInfoElem
- * The <code>SingleSignatureInfo</code> DOM element to parse.
- * @return A <code>SingleSignatureInfo</code> API object containing the
- * information of <code>sigInfoElem</code>.
- * @throws MOAApplicationException
- * An error occurred parsing the
- * <code>SingleSignatureInfo</code>.
- */
- private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException {
-
- String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null);
- String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null);
- String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null);
-
-
- Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH);
- String base64Str = DOMUtils.getText(base64ContentElem);
- try {
- byte[] inputPDF = Base64Utils.decode(base64Str, true);
- PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF,
- signatureProfile, signaturePosition, signatureID);
-
- return PDFSignatureInfo;
- } catch (IOException e) {
- throw new MOAApplicationException("2244", null, e);
- }
-
- }
+ //
+ // XPath expresssions to select elements in the CreateCMSSignatureRequest
+ //
+ private static final String MOA = Constants.MOA_PREFIX + ":";
+ private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA
+ + "KeyIdentifier";
+ private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA
+ + "SingleSignatureInfo";
+ private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile";
+ private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition";
+ private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID";
+
+ private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument";
+
+ /**
+ * Create a new <code>CreateCMSSignatureRequestParser</code>.
+ */
+ public CreatePDFSignatureRequestParser() {
+ }
+
+ /**
+ * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
+ * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. The
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>CreateCMSSignatureRequest</code> API object containing the
+ * data from the DOM element.
+ * @throws MOAApplicationException An error occurred parsing the request.
+ */
+ public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException {
+
+ final String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
+
+ final CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier);
+ parseSingleSignatureInfos(requestElem, createPDFRequest);
+
+ return createPDFRequest;
+ }
+
+ /**
+ * Parse all <code>SingleSignatureInfo</code> elements of the
+ * <code>CreateCMSSignatureRequest</code>.
+ *
+ * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse.
+ * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects.
+ * @throws MOAApplicationException An error occurred parsing on of the
+ * <code>SingleSignatureInfo</code> elements.
+ */
+ private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest)
+ throws MOAApplicationException {
+
+ final NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
+ Element sigInfoElem;
+
+ while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
+ createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem));
+ }
+ }
+
+ /**
+ * Parse a <code>SingleSignatureInfo</code> DOM element.
+ *
+ * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse.
+ * @return A <code>SingleSignatureInfo</code> API object containing the
+ * information of <code>sigInfoElem</code>.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>SingleSignatureInfo</code>.
+ */
+ private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException {
+
+ final String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null);
+ final String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null);
+ final String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null);
+
+ final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH);
+ final String base64Str = DOMUtils.getText(base64ContentElem);
+ try {
+ final byte[] inputPDF = Base64Utils.decode(base64Str, true);
+ final PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF,
+ signatureProfile, signaturePosition, signatureID);
+
+ return PDFSignatureInfo;
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2244", null, e);
+ }
+
+ }
} \ No newline at end of file
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java
index bdb9a71..6f9880f 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java
@@ -39,117 +39,114 @@ import at.gv.egovernment.moaspss.util.Constants;
/**
* Convert a <code>CreateCMSSignatureResponse</code> API object into its XML
* representation, according to the MOA XML schema.
- *
+ *
* @version $Id$
*/
public class CreatePDFSignatureResponseBuilder {
- private static final String MOA_NS_URI = Constants.MOA_NS_URI;
-
- private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class);
-
- /** The XML document containing the response element. */
- private Document responseDoc;
- /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
-
- /**
- * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException
- * An error occurred setting up the resulting XML document.
- */
- public CreatePDFSignatureResponseBuilder() throws MOASystemException {
- responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse");
- responseElem = responseDoc.getDocumentElement();
- }
-
- /**
- * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
- * element being the XML representation of the given
- * <code>CreateCMSSignatureResponse</code> API object.
- *
- * @param response
- * The <code>CreateCMSSignatureResponse</code> to convert to XML.
- * @return A document containing the <code>CreateCMSSignatureResponse</code>
- * DOM element.
- */
- public Document build(CreatePDFRespone response) {
- Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator();
-
- while (iter.hasNext()) {
- SignedPDFInfo signedPDFInfo = iter.next();
- addPDFSignature(signedPDFInfo);
- }
-
- return responseDoc;
- }
-
- /**
- * Add a <code>CMSSignature</code> element to the response.
- *
- * @param cmsSignatureResponse
- * The content to put under the <code>CMSSignature</code>
- * element.
- */
- private void addPDFSignature(SignedPDFInfo signedPDFInfo) {
- Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
-
- if(signedPDFInfo.getSignatureID() != null) {
- Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID");
- signatureID.setTextContent(signedPDFInfo.getSignatureID());
- pdfSignature.appendChild(signatureID);
- }
-
- switch (signedPDFInfo.getResponseType()) {
- case SignedPDFInfo.SUCCESS_SIGNATURE:
- pdfSignature.appendChild(addSuccessSignature(signedPDFInfo));
- break;
-
- default:
- pdfSignature.appendChild(addErrorResponse(signedPDFInfo));
- break;
- }
-
- responseElem.appendChild(pdfSignature);
- }
-
- private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) {
- try {
- String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument());
- Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
- cmsSignature.setTextContent(base64Value);
-
- return cmsSignature;
- } catch (IOException e) {
- logger.error("Failed to encode pdf signature", e);
- signedPDFInfo.setErrorCode(2300);
- signedPDFInfo.setErrorInfo("Failed to encode the signed document");
- return addErrorResponse(signedPDFInfo);
- }
-
-
- }
-
- /**
- * Add a <code>ErrorResponse</code> element to the response.
- *
- * @param errorResponse
- * The API object containing the information to put into the
- * <code>ErrorResponse</code> DOM element.
- */
- private Element addErrorResponse(SignedPDFInfo signedPDFInfo) {
- Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
- Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
- Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
- String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode());
-
- errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
- errorElem.appendChild(errorCodeElem);
- infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo()));
- errorElem.appendChild(errorCodeElem);
- errorElem.appendChild(infoElem);
-
- return errorElem;
- }
+ private static final String MOA_NS_URI = Constants.MOA_NS_URI;
+
+ private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class);
+
+ /** The XML document containing the response element. */
+ private final Document responseDoc;
+ /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
+ private final Element responseElem;
+
+ /**
+ * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
+ */
+ public CreatePDFSignatureResponseBuilder() throws MOASystemException {
+ responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse");
+ responseElem = responseDoc.getDocumentElement();
+ }
+
+ /**
+ * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
+ * <code>CreateCMSSignatureResponse</code> API object.
+ *
+ * @param response The <code>CreateCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM
+ * element.
+ */
+ public Document build(CreatePDFRespone response) {
+ final Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator();
+
+ while (iter.hasNext()) {
+ final SignedPDFInfo signedPDFInfo = iter.next();
+ addPDFSignature(signedPDFInfo);
+ }
+
+ return responseDoc;
+ }
+
+ /**
+ * Add a <code>CMSSignature</code> element to the response.
+ *
+ * @param cmsSignatureResponse The content to put under the
+ * <code>CMSSignature</code> element.
+ */
+ private void addPDFSignature(SignedPDFInfo signedPDFInfo) {
+ final Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
+
+ if (signedPDFInfo.getSignatureID() != null) {
+ final Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID");
+ signatureID.setTextContent(signedPDFInfo.getSignatureID());
+ pdfSignature.appendChild(signatureID);
+ }
+
+ switch (signedPDFInfo.getResponseType()) {
+ case SignedPDFInfo.SUCCESS_SIGNATURE:
+ pdfSignature.appendChild(addSuccessSignature(signedPDFInfo));
+ break;
+
+ default:
+ pdfSignature.appendChild(addErrorResponse(signedPDFInfo));
+ break;
+ }
+
+ responseElem.appendChild(pdfSignature);
+ }
+
+ private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) {
+ try {
+ final String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument());
+ final Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
+ cmsSignature.setTextContent(base64Value);
+
+ return cmsSignature;
+ } catch (final IOException e) {
+ logger.error("Failed to encode pdf signature", e);
+ signedPDFInfo.setErrorCode(2300);
+ signedPDFInfo.setErrorInfo("Failed to encode the signed document");
+ return addErrorResponse(signedPDFInfo);
+ }
+
+ }
+
+ /**
+ * Add a <code>ErrorResponse</code> element to the response.
+ *
+ * @param errorResponse The API object containing the information to put into
+ * the <code>ErrorResponse</code> DOM element.
+ */
+ private Element addErrorResponse(SignedPDFInfo signedPDFInfo) {
+ final Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
+ final Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
+ final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
+ final String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode());
+
+ errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
+ errorElem.appendChild(errorCodeElem);
+ infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo()));
+ errorElem.appendChild(errorCodeElem);
+ errorElem.appendChild(infoElem);
+
+ return errorElem;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java
index fd2be7c..3fe8e82 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java
@@ -1,33 +1,33 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
public class PDFSignatureInfo {
- private String signatureProfile = null;
- private String signaturePosition = null;
- private String signatureID = null;
- private byte[] pdfDocument = null;
-
- public PDFSignatureInfo(byte[] pdfDocument,
- String signatureProfile, String signaturePosition,
- String signatureID) {
- this.pdfDocument = pdfDocument;
- this.signatureProfile = signatureProfile;
- this.signaturePosition = signaturePosition;
- this.signatureID = signatureID;
- }
+ private String signatureProfile = null;
+ private String signaturePosition = null;
+ private String signatureID = null;
+ private byte[] pdfDocument = null;
- public synchronized String getSignatureProfile() {
- return signatureProfile;
- }
+ public PDFSignatureInfo(byte[] pdfDocument,
+ String signatureProfile, String signaturePosition,
+ String signatureID) {
+ this.pdfDocument = pdfDocument;
+ this.signatureProfile = signatureProfile;
+ this.signaturePosition = signaturePosition;
+ this.signatureID = signatureID;
+ }
- public synchronized String getSignaturePosition() {
- return signaturePosition;
- }
+ public synchronized String getSignatureProfile() {
+ return signatureProfile;
+ }
- public synchronized String getSignatureID() {
- return signatureID;
- }
+ public synchronized String getSignaturePosition() {
+ return signaturePosition;
+ }
- public synchronized byte[] getPdfDocument() {
- return pdfDocument;
- }
+ public synchronized String getSignatureID() {
+ return signatureID;
+ }
+
+ public synchronized byte[] getPdfDocument() {
+ return pdfDocument;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java
index a950006..b6409f1 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java
@@ -1,53 +1,53 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
public class SignedPDFInfo {
-
- public static final int SUCCESS_SIGNATURE = 0;
- public static final int ERROR_RESPONSE = 1;
-
- private String signatureID = null;
- private byte[] pdfDocument = null;
- private int responseType = ERROR_RESPONSE;
- private int errorCode = 0;
- private String errorInfo = null;
-
- public SignedPDFInfo(String signatureID) {
- this.signatureID = signatureID;
- }
-
- public synchronized void setPdfDocument(byte[] pdfDocument) {
- this.pdfDocument = pdfDocument;
- }
-
- public synchronized String getSignatureID() {
- return signatureID;
- }
-
- public synchronized byte[] getPdfDocument() {
- return pdfDocument;
- }
-
- public synchronized void setResponseType(int responseType) {
- this.responseType = responseType;
- }
-
- public int getResponseType() {
- return this.responseType;
- }
-
- public synchronized int getErrorCode() {
- return errorCode;
- }
-
- public synchronized void setErrorCode(int errorCode) {
- this.errorCode = errorCode;
- }
-
- public synchronized String getErrorInfo() {
- return errorInfo;
- }
-
- public synchronized void setErrorInfo(String errorInfo) {
- this.errorInfo = errorInfo;
- }
+
+ public static final int SUCCESS_SIGNATURE = 0;
+ public static final int ERROR_RESPONSE = 1;
+
+ private String signatureID = null;
+ private byte[] pdfDocument = null;
+ private int responseType = ERROR_RESPONSE;
+ private int errorCode = 0;
+ private String errorInfo = null;
+
+ public SignedPDFInfo(String signatureID) {
+ this.signatureID = signatureID;
+ }
+
+ public synchronized void setPdfDocument(byte[] pdfDocument) {
+ this.pdfDocument = pdfDocument;
+ }
+
+ public synchronized String getSignatureID() {
+ return signatureID;
+ }
+
+ public synchronized byte[] getPdfDocument() {
+ return pdfDocument;
+ }
+
+ public synchronized void setResponseType(int responseType) {
+ this.responseType = responseType;
+ }
+
+ public int getResponseType() {
+ return this.responseType;
+ }
+
+ public synchronized int getErrorCode() {
+ return errorCode;
+ }
+
+ public synchronized void setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public synchronized String getErrorInfo() {
+ return errorInfo;
+ }
+
+ public synchronized void setErrorInfo(String errorInfo) {
+ this.errorInfo = errorInfo;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java
index c9ca89d..59c8c94 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java
@@ -3,34 +3,34 @@ package at.gv.egovernment.moa.spss.server.xmlbind;
import java.util.Date;
public class VerifyPDFRequest {
- private Date dateTime;
- private byte[] signedPDF;
- private String trustProfileID;
-
- public VerifyPDFRequest() {
- }
-
- public synchronized Date getDateTime() {
- return dateTime;
- }
-
- public synchronized void setDateTime(Date dateTime) {
- this.dateTime = dateTime;
- }
-
- public synchronized byte[] getSignedPDF() {
- return signedPDF;
- }
-
- public synchronized void setSignedPDF(byte[] signedPDF) {
- this.signedPDF = signedPDF;
- }
-
- public synchronized String getTrustProfileID() {
- return trustProfileID;
- }
-
- public synchronized void setTrustProfileID(String trustProfileID) {
- this.trustProfileID = trustProfileID;
- }
+ private Date dateTime;
+ private byte[] signedPDF;
+ private String trustProfileID;
+
+ public VerifyPDFRequest() {
+ }
+
+ public synchronized Date getDateTime() {
+ return dateTime;
+ }
+
+ public synchronized void setDateTime(Date dateTime) {
+ this.dateTime = dateTime;
+ }
+
+ public synchronized byte[] getSignedPDF() {
+ return signedPDF;
+ }
+
+ public synchronized void setSignedPDF(byte[] signedPDF) {
+ this.signedPDF = signedPDF;
+ }
+
+ public synchronized String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ public synchronized void setTrustProfileID(String trustProfileID) {
+ this.trustProfileID = trustProfileID;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java
index 66761e4..0581595 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java
@@ -14,47 +14,47 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
public class VerifyPDFRequestParser {
- //
- // XPath expressions for selecting parts of the DOM message
- //
- private static final String MOA = Constants.MOA_PREFIX + ":";
- private static final String DATE_TIME_XPATH = MOA + "DateTime";
- private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature";
- private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
-
- public VerifyPDFRequest parse(Element requestElem) throws MOAApplicationException {
-
- VerifyPDFRequest verifyPDFRequest = new VerifyPDFRequest();
-
- Date dateTime = RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
- byte[] signedPDF = null;
- try {
- signedPDF = parsePDF(requestElem);
- } catch (IOException e) {
- throw new MOAApplicationException("Failed to extract signed pdf data", null, e);
- }
- String trustProfileID = XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
- verifyPDFRequest.setDateTime(dateTime);
- verifyPDFRequest.setSignedPDF(signedPDF);
- verifyPDFRequest.setTrustProfileID(trustProfileID);
-
- return verifyPDFRequest;
- }
-
- /**
- * Parse the content contained in a <code>CMSContentBaseType</code> kind of
- * DOM element.
- *
- * @param contentElem
- * The <code>CMSContentBaseType</code> kind of element to parse.
- * @return A <code>CMSDataObject</code> API object containing the data from
- * the given DOM element.
- * @throws IOException
- */
- private byte[] parsePDF(Element contentElem) throws IOException {
- Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, PDF_SIGNATURE_XPATH);
-
- String base64Str = DOMUtils.getText(base64ContentElem);
- return Base64Utils.decode(base64Str, true);
- }
+ //
+ // XPath expressions for selecting parts of the DOM message
+ //
+ private static final String MOA = Constants.MOA_PREFIX + ":";
+ private static final String DATE_TIME_XPATH = MOA + "DateTime";
+ private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature";
+ private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
+
+ public VerifyPDFRequest parse(Element requestElem) throws MOAApplicationException {
+
+ final VerifyPDFRequest verifyPDFRequest = new VerifyPDFRequest();
+
+ final Date dateTime = RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+ byte[] signedPDF = null;
+ try {
+ signedPDF = parsePDF(requestElem);
+ } catch (final IOException e) {
+ throw new MOAApplicationException("Failed to extract signed pdf data", null, e);
+ }
+ final String trustProfileID = XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
+ verifyPDFRequest.setDateTime(dateTime);
+ verifyPDFRequest.setSignedPDF(signedPDF);
+ verifyPDFRequest.setTrustProfileID(trustProfileID);
+
+ return verifyPDFRequest;
+ }
+
+ /**
+ * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM
+ * element.
+ *
+ * @param contentElem The <code>CMSContentBaseType</code> kind of element to
+ * parse.
+ * @return A <code>CMSDataObject</code> API object containing the data from the
+ * given DOM element.
+ * @throws IOException
+ */
+ private byte[] parsePDF(Element contentElem) throws IOException {
+ final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, PDF_SIGNATURE_XPATH);
+
+ final String base64Str = DOMUtils.getText(base64ContentElem);
+ return Base64Utils.decode(base64Str, true);
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java
index c162529..61304b0 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java
@@ -1,20 +1,17 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
-import java.util.List;
-
//import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
public class VerifyPDFResponse {
- /*private List<VerifyResult> verificationResults = null;
-
- public VerifyPDFResponse() {
- }
-
- public synchronized List<VerifyResult> getVerificationResults() {
- return verificationResults;
- }
-
- public synchronized void setVerificationResults(List<VerifyResult> verificationResults) {
- this.verificationResults = verificationResults;
- }*/
+ /*
+ * private List<VerifyResult> verificationResults = null;
+ *
+ * public VerifyPDFResponse() { }
+ *
+ * public synchronized List<VerifyResult> getVerificationResults() { return
+ * verificationResults; }
+ *
+ * public synchronized void setVerificationResults(List<VerifyResult>
+ * verificationResults) { this.verificationResults = verificationResults; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java
index cb3c66b..b9117e9 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java
@@ -1,110 +1,87 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
-import java.util.Iterator;
-
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-//import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.xmlbind.ResponseBuilderUtils;
-import at.gv.egovernment.moa.spss.server.pdfas.ExtendedVerifyResult;
import at.gv.egovernment.moaspss.util.Constants;
public class VerifyPDFResponseBuilder {
- private static final String MOA_NS_URI = Constants.MOA_NS_URI;
-
- //private static final Logger logger = LoggerFactory.getLogger(VerifyPDFResponseBuilder.class);
-
- /** The XML document containing the response element. */
- private Document responseDoc;
- /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
-
- /**
- * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException
- * An error occurred setting up the resulting XML document.
- */
- public VerifyPDFResponseBuilder() throws MOASystemException {
- responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse");
- responseElem = responseDoc.getDocumentElement();
- }
-
- /**
- * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
- * element being the XML representation of the given
- * <code>CreateCMSSignatureResponse</code> API object.
- *
- * @param response
- * The <code>CreateCMSSignatureResponse</code> to convert to XML.
- * @return A document containing the <code>CreateCMSSignatureResponse</code>
- * DOM element.
- */
- /*public Document build(VerifyPDFResponse response) throws MOAException {
- if(response.getVerificationResults() == null) {
- throw new MOAApplicationException("No verification results available", null);
- }
- Iterator<VerifyResult> iter = response.getVerificationResults().iterator();
+ private static final String MOA_NS_URI = Constants.MOA_NS_URI;
- while (iter.hasNext()) {
- VerifyResult verifyResult = iter.next();
- addVerifyResult(verifyResult);
- }
+ // private static final Logger logger =
+ // LoggerFactory.getLogger(VerifyPDFResponseBuilder.class);
- return responseDoc;
- }
-
- private void addVerifyResult(VerifyResult verifyResult) throws MOAApplicationException {
- Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "SignatureResult");
-
-
- String qcSource = null;
- String publicAuthorityID = null;
- String sscdSource = null;
- boolean isPublicAuthority = false;
- boolean isSSCD = false;
- String issureCountryCode = null;
-
- if(verifyResult instanceof ExtendedVerifyResult) {
- ExtendedVerifyResult extendedVerifyResult = (ExtendedVerifyResult)verifyResult;
-
- qcSource = extendedVerifyResult.getQcSource();
- publicAuthorityID = extendedVerifyResult.getPublicAuthorityID();
- sscdSource = extendedVerifyResult.getQcSource();
- issureCountryCode = extendedVerifyResult.getIssureCountryCode();
-
- isPublicAuthority = extendedVerifyResult.isPublicAuthority();
- isSSCD = extendedVerifyResult.isSSCD();
- }
-
- ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature,
- verifyResult.getSignerCertificate(),
- verifyResult.isQualifiedCertificate(),
- qcSource,
- isPublicAuthority,
- publicAuthorityID,
- isSSCD,
- sscdSource,
- issureCountryCode);
-
- ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- pdfSignature,
- "SignatureCheck",
- verifyResult.getValueCheckCode().getCode(),
- (String)null);
+ /** The XML document containing the response element. */
+ private final Document responseDoc;
+ /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
+ private final Element responseElem;
- ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- pdfSignature,
- "CertificateCheck",
- verifyResult.getCertificateCheck().getCode(),
- (String)null);
+ /**
+ * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
+ */
+ public VerifyPDFResponseBuilder() throws MOASystemException {
+ responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse");
+ responseElem = responseDoc.getDocumentElement();
+ }
- responseElem.appendChild(pdfSignature);
- }*/
+ /**
+ * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
+ * <code>CreateCMSSignatureResponse</code> API object.
+ *
+ * @param response The <code>CreateCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM
+ * element.
+ */
+ /*
+ * public Document build(VerifyPDFResponse response) throws MOAException {
+ * if(response.getVerificationResults() == null) { throw new
+ * MOAApplicationException("No verification results available", null); }
+ * Iterator<VerifyResult> iter = response.getVerificationResults().iterator();
+ *
+ * while (iter.hasNext()) { VerifyResult verifyResult = iter.next();
+ * addVerifyResult(verifyResult); }
+ *
+ * return responseDoc; }
+ *
+ * private void addVerifyResult(VerifyResult verifyResult) throws
+ * MOAApplicationException { Element pdfSignature =
+ * responseDoc.createElementNS(MOA_NS_URI, "SignatureResult");
+ *
+ *
+ * String qcSource = null; String publicAuthorityID = null; String sscdSource =
+ * null; boolean isPublicAuthority = false; boolean isSSCD = false; String
+ * issureCountryCode = null;
+ *
+ * if(verifyResult instanceof ExtendedVerifyResult) { ExtendedVerifyResult
+ * extendedVerifyResult = (ExtendedVerifyResult)verifyResult;
+ *
+ * qcSource = extendedVerifyResult.getQcSource(); publicAuthorityID =
+ * extendedVerifyResult.getPublicAuthorityID(); sscdSource =
+ * extendedVerifyResult.getQcSource(); issureCountryCode =
+ * extendedVerifyResult.getIssureCountryCode();
+ *
+ * isPublicAuthority = extendedVerifyResult.isPublicAuthority(); isSSCD =
+ * extendedVerifyResult.isSSCD(); }
+ *
+ * ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature,
+ * verifyResult.getSignerCertificate(), verifyResult.isQualifiedCertificate(),
+ * qcSource, isPublicAuthority, publicAuthorityID, isSSCD, sscdSource,
+ * issureCountryCode);
+ *
+ * ResponseBuilderUtils.addCodeInfoElement( responseDoc, pdfSignature,
+ * "SignatureCheck", verifyResult.getValueCheckCode().getCode(), (String)null);
+ *
+ * ResponseBuilderUtils.addCodeInfoElement( responseDoc, pdfSignature,
+ * "CertificateCheck", verifyResult.getCertificateCheck().getCode(),
+ * (String)null);
+ *
+ * responseElem.appendChild(pdfSignature); }
+ */
}