From 5f15345f30e5afe3f8ce0e55306047eee466400b Mon Sep 17 00:00:00 2001 From: knowcenter Date: Thu, 26 Jul 2007 15:16:35 +0000 Subject: Verification of single signatures now works. Error page (error.jsp) uses CSS formating. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@158 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../wag/egov/egiz/web/LocalRequestHelper.java | 78 ++++++++++++++++++++-- 1 file changed, 72 insertions(+), 6 deletions(-) (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java index b664bc6..fd47cca 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java @@ -20,6 +20,7 @@ package at.knowcenter.wag.egov.egiz.web; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -166,7 +167,7 @@ public abstract class LocalRequestHelper List holders_to_verify, HttpServletRequest request, HttpServletResponse response) throws SignatureException, NormalizeException, IOException, ConnectorFactoryException { - si.requests = new LocalRequest[holders_to_verify.size()]; + si.requests = new LocalRequest[holders_to_verify.size()]; si.response_properties = new Properties[si.requests.length]; si.current_operation = 0; si.finished = false; @@ -204,19 +205,15 @@ public abstract class LocalRequestHelper si.requests[i] = local_request; si.response_properties[i] = null; } - + // TODO read from config String local_request_url = "http://127.0.0.1:3495/http-security-layer-request"; URL data_URL = new URL(request.getScheme(), host, request.getServerPort(), request.getContextPath() + "/DataURL"); String data_url = response.encodeURL(data_URL.toString()); - //URL local_server_url = new URL(request.getScheme(), host, request.getServerPort(), "/"); - //String loc_server_url = response.encodeURL(local_server_url.toString()); - request.setAttribute("local_request_url", local_request_url); request.setAttribute("data_url", data_url); - //request.setAttribute("loc_server_url", loc_server_url); return NULL_REQUEST_PAGE_JSP; @@ -262,6 +259,75 @@ public abstract class LocalRequestHelper // // prepareDispatchToLocalConnectionPage(si.requests[0], request, response); } + + /** + * Sets up the local verify procedure. + * + * @param response + * The HttpServletResponse the local request page is written to. + * @return Returns the JSP location where the calling servlet should dispatch + * to. + * @throws SignatureException + * Forwarded exception. + * @throws NormalizeException + * Forwarded exception. + * @throws IOException + * Forwarded exception. + * @throws ConnectorFactoryException + * Forwarded exception. + */ + public static String processLocalVerifyForSingleSignature(SessionInformation si, + List holders_to_verify, HttpServletRequest request, + HttpServletResponse response) throws SignatureException, NormalizeException, IOException, ConnectorFactoryException + { + si.requests = new LocalRequest[1]; + si.response_properties = new Properties[1]; + si.current_operation = 0; + si.finished = false; + + String host = request.getServerName(); + URL loc_ref_URL = new URL(request.getScheme(), host, request.getServerPort(), request.getContextPath() + "/RetrieveSignatureData"); + String loc_ref_url = response.encodeURL(loc_ref_URL.toString()); + + SignatureHolder holder = (SignatureHolder) holders_to_verify.get(0); + + SignatureObject s = holder.getSignatureObject(); + + // TODO This whole processing is unnecessary here because only the mime + // type is used. + String text_to_be_verified = holder.getSignedText(); + SignatureData sd = null; + + if (holder.getSignatureObject().isBinary()) + { + byte[] data = CodingHelper.decodeBase64(text_to_be_verified); + sd = new SignatureDataImpl(data, "application/pdf"); + } + else + { + sd = new SignatureDataImpl(text_to_be_verified.getBytes("UTF-8"), "text/plain", "UTF-8"); + } + + SignSignatureObject so = SignatureObjectHelper.convertSignatureObjectToSignSignatureObject(s); + + LocalConnector local_conn = ConnectorChooser.chooseLocalConnectorForVerify(si.connector, s.getKZ(), so.id, si.type, loc_ref_url); + String request_string = local_conn.prepareVerifyRequest(sd, so); + + LocalRequest local_request = new LocalRequest("not-needed", request_string); + si.requests[0] = local_request; + si.response_properties[0] = null; + + // TODO read from config + String local_request_url = "http://127.0.0.1:3495/http-security-layer-request"; + + URL data_URL = new URL(request.getScheme(), host, request.getServerPort(), request.getContextPath() + "/DataURL"); + String data_url = response.encodeURL(data_URL.toString()); + + request.setAttribute("local_request_url", local_request_url); + request.setAttribute("data_url", data_url); + + return NULL_REQUEST_PAGE_JSP; + } /** * Formats the OK response from the web application back to the local BKU. -- cgit v1.2.3