aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java12
-rw-r--r--pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/BulkRequestThread.java109
-rw-r--r--pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/PerformanceTest.java34
-rw-r--r--pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/SimpleTest.java92
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java11
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java6
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java9
7 files changed, 226 insertions, 47 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
index 68257861..44919b1c 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/signing/pdfbox/PADESPDFBOXSigner.java
@@ -94,7 +94,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
String fisTmpFile = null;
TempFileHelper helper = pdfObject.getStatus().getTempFileHelper();
-
+ PDDocument doc = null;
try {
fisTmpFile = helper.getStaticFilename();
@@ -104,7 +104,7 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
FileInputStream fis = new FileInputStream(new File(fisTmpFile));
- PDDocument doc = pdfObject.getDocument();
+ doc = pdfObject.getDocument();
PDSignature signature = new PDSignature();
signature.setFilter(COSName.getPDFName(signer.getPDFFilter())); // default
@@ -402,6 +402,14 @@ public class PADESPDFBOXSigner implements IPdfSigner, IConfigurationConstants {
logger.error(MessageResolver.resolveMessage("error.pdf.sig.01"), e);
throw new PdfAsException("error.pdf.sig.01", e);
} finally {
+ if(doc != null) {
+ try {
+ doc.close();
+ } catch (IOException e) {
+ logger.debug("Failed to close COS Doc!", e);
+ // Ignore
+ }
+ }
logger.info("Signature done!");
}
diff --git a/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/BulkRequestThread.java b/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/BulkRequestThread.java
new file mode 100644
index 00000000..b9277c09
--- /dev/null
+++ b/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/BulkRequestThread.java
@@ -0,0 +1,109 @@
+package at.gv.egiz.pdfas.web.client.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import sun.misc.IOUtils;
+import at.gv.egiz.pdfas.api.ws.PDFASBulkSignRequest;
+import at.gv.egiz.pdfas.api.ws.PDFASBulkSignResponse;
+import at.gv.egiz.pdfas.api.ws.PDFASSignParameters;
+import at.gv.egiz.pdfas.api.ws.PDFASSignRequest;
+import at.gv.egiz.pdfas.api.ws.PDFASSignResponse;
+import at.gv.egiz.pdfas.api.ws.PDFASSignParameters.Connector;
+import at.gv.egiz.pdfas.web.client.RemotePDFSigner;
+
+public class BulkRequestThread implements Runnable {
+ private Thread t;
+ private String threadName;
+ private RemotePDFSigner signer;
+ PDFASSignParameters signParameters;
+ private byte[] inputData;
+ int bulkSize;
+ int queries;
+
+ public BulkRequestThread(String name, URL endpoint, int queries, int bulkSize)
+ throws IOException {
+ threadName = name;
+ this.queries = queries;
+ this.bulkSize = bulkSize;
+ System.out.println("Creating " + threadName);
+
+ signer = new RemotePDFSigner(endpoint, false);
+
+ FileInputStream fis = new FileInputStream(
+ "/home/afitzek/Documents/arm_arm.pdf");
+ inputData = IOUtils.readFully(fis, -1, true);
+
+ signParameters = new PDFASSignParameters();
+ signParameters.setConnector(Connector.JKS);
+ signParameters.setPosition(null);
+ signParameters.setProfile("SIGNATURBLOCK_DE");
+
+ }
+
+ private PDFASSignRequest getNewRequest() {
+ PDFASSignRequest request = new PDFASSignRequest();
+ request.setInputData(inputData);
+ request.setParameters(signParameters);
+ request.setRequestID(UUID.randomUUID().toString());
+ return request;
+ }
+
+ private PDFASBulkSignRequest getBlukRequest(int count) {
+
+ List<PDFASSignRequest> bulk = new ArrayList<PDFASSignRequest>();
+ for (int i = 0; i < count; i++) {
+ bulk.add(getNewRequest());
+ }
+
+ PDFASBulkSignRequest bulkRequest = new PDFASBulkSignRequest();
+ bulkRequest.setSignRequests(bulk);
+
+ return bulkRequest;
+ }
+
+ public void run() {
+ System.out.println("Running " + threadName);
+ try {
+ for (int i = 0; i < queries; i++) {
+ System.out.println("Thread: " + threadName + ", " + i);
+ PDFASBulkSignResponse responses = signer
+ .signPDFDokument(getBlukRequest(bulkSize));
+
+ for (int j = 0; j < responses.getSignResponses().size(); j++) {
+ PDFASSignResponse bulkresponse = responses
+ .getSignResponses().get(j);
+ System.out.println("Thread: " + threadName + ", " +"ID: " + bulkresponse.getRequestID());
+ if (bulkresponse.getError() != null) {
+ System.out.println("Thread: " + threadName + ", " + "ERROR: " + bulkresponse.getError());
+ } else {
+ System.out.println("Thread: " + threadName + ", " + "OK");
+ }
+ }
+ Thread.sleep(50);
+ }
+ } catch (InterruptedException e) {
+ System.out.println("Thread " + threadName + " interrupted.");
+ }
+ System.out.println("Thread " + threadName + " exiting.");
+ }
+
+ public void start() {
+ System.out.println("Starting " + threadName);
+ if (t == null) {
+ t = new Thread(this, threadName);
+ t.start();
+ }
+ }
+
+ public void join() throws InterruptedException {
+ if(t != null) {
+ t.join();
+ }
+ }
+}
diff --git a/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/PerformanceTest.java b/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/PerformanceTest.java
new file mode 100644
index 00000000..17a98276
--- /dev/null
+++ b/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/PerformanceTest.java
@@ -0,0 +1,34 @@
+package at.gv.egiz.pdfas.web.client.test;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PerformanceTest {
+ public static void main(String[] args) {
+ try {
+ List<BulkRequestThread> threads = new ArrayList<BulkRequestThread>();
+
+ URL endpoint = new URL(
+ "http://localhost:8080/pdf-as-web/wssign?wsdl");
+
+ for (int i = 0; i < 10; i++) {
+ threads.add(new BulkRequestThread("T" + i, endpoint, 10, 10));
+ }
+
+
+ for (int i = 0; i < threads.size(); i++) {
+ threads.get(i).start();
+ }
+
+ for (int i = 0; i < threads.size(); i++) {
+ threads.get(i).join();
+ }
+
+ System.out.println("DONE");
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/SimpleTest.java b/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/SimpleTest.java
index 161e45cc..e7696ceb 100644
--- a/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/SimpleTest.java
+++ b/pdf-as-web-client/src/test/java/at/gv/egiz/pdfas/web/client/test/SimpleTest.java
@@ -20,7 +20,7 @@ public class SimpleTest {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream(
- "/home/afitzek/simple.pdf");
+ "/home/afitzek/Documents/arm_arm.pdf");
byte[] inputData = IOUtils.readFully(fis, -1, true);
PDFASSignParameters signParameters = new PDFASSignParameters();
@@ -33,62 +33,64 @@ public class SimpleTest {
request.setParameters(signParameters);
request.setRequestID("SOME TEST ID");
- URL endpoint = new URL("http://demo.egiz.gv.at/demoportal-pdf_as/wssign?wsdl");
- //URL endpoint = new URL(
- // "http://localhost:8080/pdf-as-web/wssign?wsdl");
+ // URL endpoint = new
+ // URL("http://demo.egiz.gv.at/demoportal-pdf_as/wssign?wsdl");
+ URL endpoint = new URL(
+ "http://localhost:8080/pdf-as-web/wssign?wsdl");
RemotePDFSigner signer = new RemotePDFSigner(endpoint, false);
- System.out.println("Simple Request:");
- byte[] outputFile = signer.signPDFDokument(inputData,
- signParameters);
+ /*
+ * System.out.println("Simple Request:"); byte[] outputFile =
+ * signer.signPDFDokument(inputData, signParameters);
+ *
+ * FileOutputStream fos = new FileOutputStream(
+ * "/home/afitzek/simple_request_signed.pdf");
+ * fos.write(outputFile); fos.close();
+ *
+ * System.out.println("Simple Request Obj:"); PDFASSignResponse
+ * response = signer.signPDFDokument(request);
+ *
+ * if (response.getSignedPDF() != null) { FileOutputStream fos2 =
+ * new FileOutputStream(
+ * "/home/afitzek/simple_request_obj_signed.pdf");
+ * fos2.write(response.getSignedPDF()); fos2.close(); }
+ *
+ * if(response.getError() != null) { System.out.println("ERROR: " +
+ * response.getError()); }
+ */
- FileOutputStream fos = new FileOutputStream(
- "/home/afitzek/simple_request_signed.pdf");
- fos.write(outputFile);
- fos.close();
-
- System.out.println("Simple Request Obj:");
- PDFASSignResponse response = signer.signPDFDokument(request);
-
- if (response.getSignedPDF() != null) {
- FileOutputStream fos2 = new FileOutputStream(
- "/home/afitzek/simple_request_obj_signed.pdf");
- fos2.write(response.getSignedPDF());
- fos2.close();
- }
-
- if(response.getError() != null) {
- System.out.println("ERROR: " + response.getError());
- }
-
List<PDFASSignRequest> bulk = new ArrayList<PDFASSignRequest>();
- for(int i = 0; i < 10; i++) {
+ for (int i = 0; i < 10; i++) {
bulk.add(request);
}
PDFASBulkSignRequest bulkRequest = new PDFASBulkSignRequest();
bulkRequest.setSignRequests(bulk);
-
- System.out.println("Bulk Request:");
- PDFASBulkSignResponse responses = signer.signPDFDokument(bulkRequest);
-
- for(int i = 0; i < responses.getSignResponses().size(); i++) {
- PDFASSignResponse bulkresponse = responses.getSignResponses().get(i);
- System.out.println("ID: " + bulkresponse.getRequestID());
-
- if (bulkresponse.getSignedPDF() != null) {
- FileOutputStream fos2 = new FileOutputStream(
- "/home/afitzek/simple_request_obj_signed_"+ i +".pdf");
- fos2.write(bulkresponse.getSignedPDF());
- fos2.close();
- }
-
- if(bulkresponse.getError() != null) {
- System.out.println("ERROR: " + bulkresponse.getError());
+
+ for (int j = 0; j < 10; j++) {
+ System.out.println("Bulk Request:");
+ PDFASBulkSignResponse responses = signer
+ .signPDFDokument(bulkRequest);
+
+ for (int i = 0; i < responses.getSignResponses().size(); i++) {
+ PDFASSignResponse bulkresponse = responses
+ .getSignResponses().get(i);
+ System.out.println("ID: " + bulkresponse.getRequestID());
+ /*
+ * if (bulkresponse.getSignedPDF() != null) {
+ * FileOutputStream fos2 = new FileOutputStream(
+ * "/home/afitzek/simple_request_obj_signed_"+ i +".pdf");
+ * fos2.write(bulkresponse.getSignedPDF()); fos2.close(); }
+ */
+ if (bulkresponse.getError() != null) {
+ System.out.println("ERROR: " + bulkresponse.getError());
+ } else {
+ System.out.println("OK");
+ }
}
}
-
+
System.out.println("Done!");
} catch (Throwable e) {
e.printStackTrace();
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java
index f073ca56..4555d6a1 100644
--- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java
@@ -44,6 +44,7 @@ public class WebConfiguration {
public static final String PDF_AS_WORK_DIR = "pdfas.dir";
public static final String MOA_SS_ENABLED = "moa.enabled";
+ public static final String SOAP_SIGN_ENABLED = "soap.sign.enabled";
public static final String KEYSTORE_ENABLED = "ks.enabled";
public static final String KEYSTORE_FILE = "ks.file";
@@ -161,6 +162,16 @@ public class WebConfiguration {
return false;
}
+ public static boolean getSoapSignEnabled() {
+ String value = properties.getProperty(SOAP_SIGN_ENABLED);
+ if(value != null) {
+ if(value.equals("true")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public static boolean isShowErrorDetails() {
String value = properties.getProperty(ERROR_DETAILS);
if(value != null) {
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java
index 5c0f94c4..0f33056e 100644
--- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java
@@ -348,8 +348,14 @@ public class PdfAsHelper {
IPlainSigner signer;
if (params.getConnector().equals(Connector.MOA)) {
+ if(!WebConfiguration.getMOASSEnabled()) {
+ throw new PdfAsWebException("MOA connector disabled.");
+ }
signer = new PAdESSigner(new MOAConnector(config));
} else if(params.getConnector().equals(Connector.JKS)) {
+ if(!WebConfiguration.getKeystoreEnabled()) {
+ throw new PdfAsWebException("JKS connector disabled.");
+ }
signer = new PKCS7DetachedSigner(
WebConfiguration.getKeystoreFile(),
WebConfiguration.getKeystoreAlias(),
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java
index c8283d28..07ffd7c4 100644
--- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java
@@ -28,6 +28,7 @@ public class PDFASSigningImpl implements PDFASSigning {
public byte[] signPDFDokument(byte[] inputDocument,
PDFASSignParameters parameters) {
+ checkSoapSignEnabled();
try {
return PdfAsHelper.synchornousServerSignature(inputDocument,
parameters);
@@ -42,6 +43,7 @@ public class PDFASSigningImpl implements PDFASSigning {
}
public PDFASSignResponse signPDFDokument(PDFASSignRequest request) {
+ checkSoapSignEnabled();
if (request == null) {
logger.warn("SOAP Sign Request is null!");
return null;
@@ -62,6 +64,7 @@ public class PDFASSigningImpl implements PDFASSigning {
}
public PDFASBulkSignResponse signPDFDokument(PDFASBulkSignRequest request) {
+ checkSoapSignEnabled();
List<PDFASSignResponse> responses = new ArrayList<PDFASSignResponse>();
if (request.getSignRequests() != null) {
for (int i = 0; i < request.getSignRequests().size(); i++) {
@@ -83,4 +86,10 @@ public class PDFASSigningImpl implements PDFASSigning {
}
}
+ private void checkSoapSignEnabled() {
+ if(!WebConfiguration.getSoapSignEnabled()) {
+ throw new WebServiceException("Service disabled!");
+ }
+ }
+
}