diff options
Diffstat (limited to 'pdf-as-web/src/main')
9 files changed, 300 insertions, 42 deletions
| diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java index 085976f0..c7bb19a0 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java @@ -76,7 +76,7 @@ public class ExceptionCatchFilter implements Filter {  				String name = parameterNames.nextElement();  				String value = httpRequest.getParameter(name);  				request.setAttribute(name, value); -				logger.info("Setting attribute: " + name + " - " + value); +				logger.debug("Setting attribute: " + name + " - " + value);  			}  		} 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 0f33056e..5a452188 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 @@ -56,6 +56,7 @@ import at.gv.egiz.pdfas.lib.api.sign.SignResult;  import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter;  import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;  import at.gv.egiz.pdfas.sigs.pades.PAdESSigner; +import at.gv.egiz.pdfas.sigs.pades.PAdESSignerKeystore;  import at.gv.egiz.pdfas.sigs.pkcs7detached.PKCS7DetachedSigner;  import at.gv.egiz.pdfas.web.config.WebConfiguration;  import at.gv.egiz.pdfas.web.exception.PdfAsWebException; @@ -98,14 +99,14 @@ public class PdfAsHelper {  	private static ObjectFactory of = new ObjectFactory();  	static { -		logger.debug("Creating PDF-AS"); +		logger.info("Creating PDF-AS");  		pdfAs = PdfAsFactory.createPdfAs(new File(WebConfiguration  				.getPdfASDir())); -		logger.debug("Creating PDF-AS done"); +		logger.info("Creating PDF-AS done");  	}  	public static void init() { -		logger.debug("PDF-AS Helper initialized"); +		logger.info("PDF-AS Helper initialized");  	}  	private static void validatePdfSize(HttpServletRequest request, @@ -247,7 +248,7 @@ public class PdfAsHelper {  			}  		} -		logger.error("Verifing Signature index: " + signIdx); +		logger.debug("Verifing Signature index: " + signIdx);  		Configuration config = pdfAs.getConfiguration(); @@ -298,7 +299,7 @@ public class PdfAsHelper {  		if (connector.equals("moa")) {  			signer = new PAdESSigner(new MOAConnector(config));  		} else if(connector.equals("jks")) { -			signer = new PKCS7DetachedSigner( +			signer = new PAdESSignerKeystore(  					WebConfiguration.getKeystoreFile(),  					WebConfiguration.getKeystoreAlias(),  					WebConfiguration.getKeystorePass(), @@ -356,7 +357,7 @@ public class PdfAsHelper {  			if(!WebConfiguration.getKeystoreEnabled()) {  				throw new PdfAsWebException("JKS connector disabled.");  			} -			signer = new PKCS7DetachedSigner( +			signer = new PAdESSignerKeystore(  					WebConfiguration.getKeystoreFile(),  					WebConfiguration.getKeystoreAlias(),  					WebConfiguration.getKeystorePass(), @@ -488,7 +489,7 @@ public class PdfAsHelper {  			CreateCMSSignatureResponseType createCMSSignatureResponseType,  			ServletContext context) throws Exception { -		logger.info("Got CMS Signature Response"); +		logger.debug("Got CMS Signature Response");  		HttpSession session = request.getSession();  		StatusRequest statusRequest = (StatusRequest) session @@ -530,13 +531,8 @@ public class PdfAsHelper {  			BKUSLConnector bkuSLConnector = (BKUSLConnector) session  					.getAttribute(PDF_SL_CONNECTOR); -			// TODO Handle logic for BKU interaction - -//			Configuration config = (Configuration) session -//					.getAttribute(PDF_CONFIG); -  			if (statusRequest.needCertificate()) { -				logger.info("Needing Certificate from BKU"); +				logger.debug("Needing Certificate from BKU");  				// build SL Request to read certificate  				InfoboxReadRequestType readCertificateRequest = bkuSLConnector  						.createInfoboxReadRequest(); @@ -555,7 +551,7 @@ public class PdfAsHelper {  				response.getWriter().write(template);  				response.getWriter().close();  			} else if (statusRequest.needSignature()) { -				logger.info("Needing Signature from BKU"); +				logger.debug("Needing Signature from BKU");  				// build SL Request for cms signature  				RequestPackage pack = bkuSLConnector  						.createCMSRequest(statusRequest.getSignatureData(), @@ -571,7 +567,7 @@ public class PdfAsHelper {  			} else if (statusRequest.isReady()) {  				// TODO: store pdf document redirect to Finish URL -				logger.info("Document ready!"); +				logger.debug("Document ready!");  				SignResult result = pdfAs.finishSign(statusRequest);  				DataSink output = result.getOutputDocument(); @@ -581,14 +577,14 @@ public class PdfAsHelper {  							byteDataSink.getData());  					PdfAsHelper.gotoProvidePdf(context, request, response);  				} else { -					// TODO: no signature data available! +					throw new PdfAsWebException("No Signature data available");  				}  			} else { -				// TODO: invalid state +				throw new PdfAsWebException("Invalid state!");  			}  		} else { -			// TODO Handle logic for +			throw new PdfAsWebException("Invalid connector: " + connector);  		}  	} @@ -716,7 +712,7 @@ public class PdfAsHelper {  			HttpServletResponse response, String url) {  		HttpSession session = request.getSession();  		session.setAttribute(PDF_INVOKE_URL, url); -		logger.info("External Invoke URL: " + url); +		logger.debug("External Invoke URL: " + url);  	}  	public static String getInvokeURL(HttpServletRequest request, @@ -747,7 +743,7 @@ public class PdfAsHelper {  						+ session.getId();  			}  		} -		logger.info("Generated URL: " + dataURL); +		logger.debug("Generated URL: " + dataURL);  		return dataURL;  	} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java index c4acf5a8..730fe9ad 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java @@ -59,9 +59,6 @@ public class PdfAsParameterExtractor {  	public static String getInvokeErrorURL(HttpServletRequest request) {  		String url = (String)request.getAttribute(PARAM_INVOKE_URL_ERROR); -		if(url != null) { -			//TODO validation! -		}  		return url;  	} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java index ac22f6c8..153a69fe 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java @@ -84,8 +84,7 @@ public class ExternSignServlet extends HttpServlet {  		//PdfAsHelper.regenerateSession(request); -		System.out.println("Get signing request"); -		logger.info("Get signing request"); +		logger.debug("Get signing request");  		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request);  		PdfAsHelper.setErrorURL(request, response, errorUrl); @@ -119,8 +118,7 @@ public class ExternSignServlet extends HttpServlet {  		//PdfAsHelper.regenerateSession(request); -		System.out.println("Post signing request"); -		logger.info("Post signing request"); +		logger.debug("Post signing request");  		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request);  		PdfAsHelper.setErrorURL(request, response, errorUrl); diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFSignatureCertificateData.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFSignatureCertificateData.java new file mode 100644 index 00000000..69386478 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFSignatureCertificateData.java @@ -0,0 +1,94 @@ +package at.gv.egiz.pdfas.web.servlets; + +import java.io.IOException; +import java.io.OutputStream; +import java.security.cert.CertificateEncodingException; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; + +public class PDFSignatureCertificateData  extends HttpServlet { + +	private static final long serialVersionUID = 1L; + +	private static final Logger logger = LoggerFactory +			.getLogger(PDFSignatureCertificateData.class); + +	public static final String SIGN_ID = "SIGID"; + +	/** +	 * @see HttpServlet#HttpServlet() +	 */ +	public PDFSignatureCertificateData() { +		super(); +	} + +	/** +	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response); +	} + +	/** +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response); +	} + +	protected void process(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		try { +			if(request.getParameter(SIGN_ID) == null) { +				throw new PdfAsException("Missing Parameter"); +			} +			 +			String sigID = request.getParameter(SIGN_ID); + +			int id = Integer.parseInt(sigID); + +			List<VerifyResult> vResult = PdfAsHelper +					.getVerificationResult(request); + +			if (id < vResult.size()) { +				VerifyResult res =  vResult.get(id); +				 +				response.setHeader( +						"Content-Disposition", +						"inline;filename=cert_" + id + ".cer"); +				response.setContentType("application/pkix-cert"); +				OutputStream os = response.getOutputStream(); +				os.write(res.getSignerCertificate().getEncoded()); +				os.close(); +			} else { +				logger.error("Verification CERT not found! for id " + request.getParameter(SIGN_ID) + " in session " + request.getSession().getId()); +				response.sendError(HttpServletResponse.SC_NOT_FOUND); +			} +		} catch (NumberFormatException e) { +			logger.error("Verification CERT not found! for id " + request.getParameter(SIGN_ID) + " in session " + request.getSession().getId()); +			response.sendError(HttpServletResponse.SC_NOT_FOUND); +		} catch (PdfAsException e) { +			logger.error("Verification CERT not found:", e); +			response.sendError(HttpServletResponse.SC_NOT_FOUND); +		} catch (CertificateEncodingException e) { +			logger.error("Verification CERT invalid:", e); +			response.sendError(HttpServletResponse.SC_NOT_FOUND); +		}  +	} + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFSignatureData.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFSignatureData.java new file mode 100644 index 00000000..a4cee36f --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFSignatureData.java @@ -0,0 +1,90 @@ +package at.gv.egiz.pdfas.web.servlets; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.lib.api.verify.VerifyResult; +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; + +public class PDFSignatureData extends HttpServlet { + +	private static final long serialVersionUID = 1L; + +	private static final Logger logger = LoggerFactory +			.getLogger(PDFSignatureData.class); + +	public static final String SIGN_ID = "SIGID"; + +	/** +	 * @see HttpServlet#HttpServlet() +	 */ +	public PDFSignatureData() { +		super(); +	} + +	/** +	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response); +	} + +	/** +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response); +	} + +	protected void process(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		try { +			if(request.getParameter(SIGN_ID) == null) { +				throw new PdfAsException("Missing Parameter"); +			} +			 +			String sigID = request.getParameter(SIGN_ID); + +			int id = Integer.parseInt(sigID); + +			List<VerifyResult> vResult = PdfAsHelper +					.getVerificationResult(request); + +			if (id < vResult.size()) { +				VerifyResult res =  vResult.get(id); +				 +				response.setHeader( +						"Content-Disposition", +						"inline;filename=signed_data_" + id + ".pdf"); +				response.setContentType("application/pdf"); +				OutputStream os = response.getOutputStream(); +				os.write(res.getSignatureData()); +				os.close(); +			} else { +				logger.error("Verification DATA not found! for id " + request.getParameter(SIGN_ID) + " in session " + request.getSession().getId()); +				response.sendError(HttpServletResponse.SC_NOT_FOUND); +			} +		} catch (NumberFormatException e) { +			logger.error("Verification DATA not found! for id " + request.getParameter(SIGN_ID) + " in session " + request.getSession().getId()); +			response.sendError(HttpServletResponse.SC_NOT_FOUND); +		} catch (PdfAsException e) { +			logger.error("Verification DATA not found:", e); +			response.sendError(HttpServletResponse.SC_NOT_FOUND); +		}  +	} + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java index 42a5175a..912e6efc 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java @@ -23,8 +23,11 @@   ******************************************************************************/  package at.gv.egiz.pdfas.web.servlets; +import iaik.x509.X509Certificate; +  import java.io.File;  import java.io.IOException; +import java.io.OutputStream;  import java.util.List;  import javax.servlet.ServletException; @@ -39,6 +42,7 @@ import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;  import at.gv.egiz.pdfas.web.exception.PdfAsWebException;  import at.gv.egiz.pdfas.web.helper.PdfAsHelper;  import at.gv.egiz.pdfas.web.helper.PdfAsParameterExtractor; @@ -51,7 +55,7 @@ public class VerifyServlet extends HttpServlet {  	private static final long serialVersionUID = 1L;  	private static final Logger logger = LoggerFactory -			.getLogger(ExternSignServlet.class); +			.getLogger(VerifyServlet.class);  	private static final String UPLOAD_PDF_DATA = "pdf-file";  	private static final String UPLOAD_DIRECTORY = "upload"; @@ -72,7 +76,7 @@ public class VerifyServlet extends HttpServlet {  	 */  	protected void doGet(HttpServletRequest request,  			HttpServletResponse response) throws ServletException, IOException { -		System.out.println("Get verify request"); +  		logger.info("Get verify request");  		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request); @@ -91,7 +95,8 @@ public class VerifyServlet extends HttpServlet {  			byte[] pdfData = RemotePDFFetcher.fetchPdfFile(pdfUrl);  			doVerify(request, response, pdfData); -		} catch (Exception e) { +		} catch (Throwable e) { +			logger.error("Generic Error: ", e);  			PdfAsHelper.setSessionException(request, response, e.getMessage(),  					e);  			PdfAsHelper.gotoError(getServletContext(), request, response); @@ -105,8 +110,7 @@ public class VerifyServlet extends HttpServlet {  	protected void doPost(HttpServletRequest request,  			HttpServletResponse response) throws ServletException, IOException { -		System.out.println("Post signing request"); -		logger.info("Post signing request"); +		logger.info("Post verify request");  		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request);  		PdfAsHelper.setErrorURL(request, response, errorUrl); @@ -225,7 +229,8 @@ public class VerifyServlet extends HttpServlet {  			}  			doVerify(request, response, filecontent); -		} catch (Exception e) { +		} catch (Throwable e) { +			logger.error("Generic Error: ", e);  			PdfAsHelper.setSessionException(request, response, e.getMessage(),  					e);  			PdfAsHelper.gotoError(getServletContext(), request, response); @@ -234,9 +239,11 @@ public class VerifyServlet extends HttpServlet {  	protected void doVerify(HttpServletRequest request,  			HttpServletResponse response, byte[] pdfData) throws Exception { -		throw new Exception(""); -		/*List<VerifyResult> results = PdfAsHelper.synchornousVerify(request, +		logger.debug("doVerify"); +		logger.info("Starting verification of pdf dokument"); +		 +		List<VerifyResult> results = PdfAsHelper.synchornousVerify(request,  				response, pdfData);  		PdfAsHelper.setVerificationResult(request, results); @@ -245,11 +252,36 @@ public class VerifyServlet extends HttpServlet {  		// Put these results into the web page  		// Or create a JSON response with the verification results for automated  		// processing +		 +		StringBuilder sb = new StringBuilder(); +		 +		sb.append("<html><head><title></title></head><body>"); +		sb.append("<h3>Verification Results for: " + PdfAsHelper.getPDFFileName(request) + "</h3>"); +		sb.append("<table style=\"width:100%\" border='1' >"); +		 +		sb.append("<tr>"); +		 +		sb.append("<th>Signature</th>"); +		sb.append("<th>Processed</th>"); +		sb.append("<th>Signed By</th>"); +		sb.append("<th>Cert Code</th>"); +		sb.append("<th>Cert Message</th>"); +		sb.append("<th>Value Code</th>"); +		sb.append("<th>Value Message</th>"); +		sb.append("<th>Error</th>"); +		sb.append("<th>Certificate</th>"); +		sb.append("<th>Signed Data</th>"); +		 +		sb.append("</tr>"); +		  		for (int i = 0; i < results.size(); i++) {  			VerifyResult result = results.get(i); - +			sb.append("<tr>"); +			 +			sb.append("<td>" + i + "</td>");			 +			  			if (result.isVerificationDone()) { - +				sb.append("<td>YES</td>");  				int certCode = result.getCertificateCheck().getCode();  				String certMessage = result.getCertificateCheck().getMessage(); @@ -259,11 +291,42 @@ public class VerifyServlet extends HttpServlet {  				Exception e = result.getVerificationException();   				X509Certificate cert = result.getSignerCertificate(); -				byte[] data = result.getSignatureData(); +				sb.append("<td>" + cert.getSubjectDN().getName() + "</td>"); +				sb.append("<td>" + certCode + "</td>"); +				sb.append("<td>" + certMessage + "</td>"); +				sb.append("<td>" + valueCode + "</td>"); +				sb.append("<td>" + valueMessage + "</td>"); +				if(e != null) { +					sb.append("<td>" + e.getMessage() + "</td>"); +				} else { +					sb.append("<td>-</td>"); +				} +				sb.append("<td><a href=\"signCert?SIGID=" + i + "\">here</a></td>"); +				sb.append("<td><a href=\"signData?SIGID=" + i + "\">here</a></td>"); +			} else { +				sb.append("<td>NO</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>"); +				sb.append("<td>-</td>");  			} -		}*/ +			 +			 +			sb.append("</tr>"); +		} +		sb.append("</table>"); +		sb.append("</body></html>"); +		 +		response.setContentType("text/html"); +		OutputStream os = response.getOutputStream(); +		os.write(sb.toString().getBytes()); +		os.close();  	}  } diff --git a/pdf-as-web/src/main/webapp/WEB-INF/web.xml b/pdf-as-web/src/main/webapp/WEB-INF/web.xml index 800c4505..85811ff0 100644 --- a/pdf-as-web/src/main/webapp/WEB-INF/web.xml +++ b/pdf-as-web/src/main/webapp/WEB-INF/web.xml @@ -76,6 +76,18 @@  		<description></description>  		<servlet-class>at.gv.egiz.pdfas.web.servlets.ErrorPage</servlet-class>  	</servlet> +	<servlet> +		<servlet-name>PDFVerifyData</servlet-name> +		<display-name>PDFVerifyData</display-name> +		<description></description> +		<servlet-class>at.gv.egiz.pdfas.web.servlets.PDFSignatureData</servlet-class> +	</servlet> +	<servlet> +		<servlet-name>PDFVerifyCert</servlet-name> +		<display-name>PDFVerifyCert</display-name> +		<description></description> +		<servlet-class>at.gv.egiz.pdfas.web.servlets.PDFSignatureCertificateData</servlet-class> +	</servlet>  	<!-- Define mappings that are used by the servlet container to translate   		a particular request URI (context-relative) to a particular servlet. The  @@ -104,7 +116,7 @@  	</servlet-mapping>  	<servlet-mapping>  		<servlet-name>VerifyServlet</servlet-name> -		<url-pattern>/VerifyServlet</url-pattern> +		<url-pattern>/Verify</url-pattern>  	</servlet-mapping>  	<servlet-mapping>  		<servlet-name>PDFData</servlet-name> @@ -114,6 +126,14 @@  		<servlet-name>ErrorPage</servlet-name>  		<url-pattern>/ErrorPage</url-pattern>  	</servlet-mapping> +	<servlet-mapping> +		<servlet-name>PDFVerifyData</servlet-name> +		<url-pattern>/signData</url-pattern> +	</servlet-mapping> +	<servlet-mapping> +		<servlet-name>PDFVerifyCert</servlet-name> +		<url-pattern>/signCert</url-pattern> +	</servlet-mapping>  	<!-- Define the default session timeout for your application, in minutes.   		From a servlet or JSP page, you can modify the timeout for a particular session  diff --git a/pdf-as-web/src/main/webapp/verifystart.jsp b/pdf-as-web/src/main/webapp/verifystart.jsp index 8a5af476..86795d23 100644 --- a/pdf-as-web/src/main/webapp/verifystart.jsp +++ b/pdf-as-web/src/main/webapp/verifystart.jsp @@ -3,7 +3,7 @@  </head>  <body>  <h1>Verify PDF-Dokument</h1> -<form action="Sign" method="POST" enctype="multipart/form-data"> +<form action="Verify" method="POST" enctype="multipart/form-data">  	<input type="file" name="pdf-file" /> | 
