aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-07-11 13:38:49 +0200
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-07-11 13:38:49 +0200
commit1219abaf9f0029e39f5fbdf342fd4ebf07144b5b (patch)
tree1baeb54030e016158ea287a9c87d70597e0f19f5 /pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java
parent0bfafff409078ef49b2d4a0d71405e8f5b0eb078 (diff)
downloadpdf-as-4-1219abaf9f0029e39f5fbdf342fd4ebf07144b5b.tar.gz
pdf-as-4-1219abaf9f0029e39f5fbdf342fd4ebf07144b5b.tar.bz2
pdf-as-4-1219abaf9f0029e39f5fbdf342fd4ebf07144b5b.zip
added Signature Verification Level
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java')
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/ws/PDFASSigningImpl.java45
1 files changed, 39 insertions, 6 deletions
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 8ade0063..cca66f82 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
@@ -35,11 +35,14 @@ import org.slf4j.LoggerFactory;
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.PDFASSignParameters.Connector;
import at.gv.egiz.pdfas.api.ws.PDFASSignRequest;
import at.gv.egiz.pdfas.api.ws.PDFASSignResponse;
import at.gv.egiz.pdfas.api.ws.PDFASSigning;
-import at.gv.egiz.pdfas.api.ws.PDFASSignParameters.Connector;
+import at.gv.egiz.pdfas.api.ws.PDFASVerificationResponse;
+import at.gv.egiz.pdfas.api.ws.VerificationLevel;
+import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel;
+import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
import at.gv.egiz.pdfas.web.config.WebConfiguration;
import at.gv.egiz.pdfas.web.helper.PdfAsHelper;
import at.gv.egiz.pdfas.web.store.RequestStore;
@@ -51,7 +54,7 @@ public class PDFASSigningImpl implements PDFASSigning {
private static final Logger logger = LoggerFactory
.getLogger(PDFASSigningImpl.class);
- public byte[] signPDFDokument(byte[] inputDocument,
+ /*public byte[] signPDFDokument(byte[] inputDocument,
PDFASSignParameters parameters) {
checkSoapSignEnabled();
try {
@@ -65,7 +68,7 @@ public class PDFASSigningImpl implements PDFASSigning {
throw new WebServiceException("Server Signature failed.");
}
}
- }
+ }*/
public PDFASSignResponse signPDFDokument(PDFASSignRequest request) {
checkSoapSignEnabled();
@@ -78,12 +81,42 @@ public class PDFASSigningImpl implements PDFASSigning {
if(request.getParameters().getConnector().equals(Connector.MOA) ||
request.getParameters().getConnector().equals(Connector.JKS)) {
// Plain server based signatures!!
- response.setSignedPDF(signPDFDokument(request.getInputData(),
- request.getParameters()));
+ response = PdfAsHelper.synchornousServerSignature(request.getInputData(),
+ request.getParameters());
+
+ PDFASVerificationResponse verResponse = new PDFASVerificationResponse();
+ VerifyResult verifyResult = null;
+ if(request.getVerificationLevel().equals(VerificationLevel.FULL_CERT_PATH)) {
+ List<VerifyResult> verResults = PdfAsHelper.synchornousVerify(response.getSignedPDF(), -1,
+ SignatureVerificationLevel.FULL_VERIFICATION);
+
+ if(verResults.size() != 1) {
+ throw new WebServiceException("Document verification failed!");
+ }
+ verifyResult = verResults.get(0);
+ } else {
+ List<VerifyResult> verResults = PdfAsHelper.synchornousVerify(response.getSignedPDF(), -1,
+ SignatureVerificationLevel.INTEGRITY_ONLY_VERIFICATION);
+
+ if(verResults.size() != 1) {
+ throw new WebServiceException("Document verification failed!");
+ }
+ verifyResult = verResults.get(0);
+ }
+
+ verResponse.setCertificateCode(verifyResult.getCertificateCheck().getCode());
+ verResponse.setValueCode(verifyResult.getValueCheckCode().getCode());
+ response.setVerificationResponse(verResponse);
} else {
// Signatures with user interaction!!
String id = RequestStore.getInstance().createNewStoreEntry(request);
+
+ if(id == null) {
+ throw new WebServiceException("Failed to store request");
+ }
+
String userEntryURL = PdfAsHelper.generateUserEntryURL(id);
+
logger.debug("Generated request store: " + id);
logger.debug("Generated UI URL: " + userEntryURL);