diff options
10 files changed, 113 insertions, 56 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java index 8dd6bf8..5aff1f3 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java @@ -20,6 +20,7 @@ package at.knowcenter.wag.egov.egiz; import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -778,10 +779,23 @@ public abstract class PdfAS //String connector, String loc_ref) throws PDFDocumentException, NormalizeException, SignatureException
SessionInformation si, String loc_ref) throws PDFDocumentException, NormalizeException, SignatureException
{
+ List results = new ArrayList();
+
si.current_operation = 0;
-
- List results = new ArrayList();
- for (int i = 0; i < signature_holders.size(); i++)
+
+ if(signature_holders.size() == 1)
+ {
+ List temp_holders = new ArrayList(si.signature_holders);
+ si.signature_holders = signature_holders;
+ SignatureHolder tmp_holder = (SignatureHolder) signature_holders.get(0);
+ SignatureResponse res = verifyWeb(tmp_holder, si.connector, loc_ref);
+ results.add(res);
+ si.signature_holders = temp_holders;
+
+ return results;
+ }
+
+ for (int i = 0; i < signature_holders.size(); i++)
{
SignatureHolder holder = (SignatureHolder) signature_holders.get(i);
@@ -790,6 +804,7 @@ public abstract class PdfAS si.current_operation++;
}
+
return results;
}
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java index 62944e4..a48893c 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/SignatureObject.java @@ -74,7 +74,7 @@ public class SignatureObject implements Serializable /**
* SVUID.
*/
- private static final long serialVersionUID = -3257189232362254713L;
+ private static final long serialVersionUID = -3535189232362254713L;
/**
* The system file separator char
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java index b6e65b3..77303c1 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java @@ -433,8 +433,6 @@ public class DetachedLocRefMOAConnector implements Connector sign_request_filename = getConnectorValueFromProfile(settings, profile, SIGN_REQUEST_TEMPLATE_KEY);
this.sign_request_template = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
}
-
- log.debug("\r\n\r\n" + sign_request_filename + "\r\n\r\n");
//this.sign_request_template = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
if (this.sign_request_template == null)
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.
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionInformation.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionInformation.java index 52a51a3..a85ca52 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionInformation.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/SessionInformation.java @@ -109,6 +109,12 @@ public class SessionInformation implements Serializable * The signature holders.
*/
public List signature_holders;
+
+ /**
+ * Copy of signature holders. It's needed by BKU when we try to verify single by single
+ * signature.
+ */
+ public List copy_of_signature_holders;
/**
* The suggested filename.
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java index 1ab89ed..9d9cc1f 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/web/servlets/VerifyPreviewServlet.java @@ -506,7 +506,7 @@ public class VerifyPreviewServlet extends HttpServlet }
logger_.debug("verify_which = " + verify_which);
}
-
+
{
String preview_string = request.getParameter(FormFields.FIELD_PREVIEW);
if (preview_string.equals("true"))
@@ -525,6 +525,7 @@ public class VerifyPreviewServlet extends HttpServlet }
SignatureHolder holder = (SignatureHolder) si.signature_holders.get(verify_which);
+ si.current_operation = verify_which;
holders_to_verify = new ArrayList();
holders_to_verify.add(holder);
@@ -552,8 +553,14 @@ public class VerifyPreviewServlet extends HttpServlet if (ConnectorFactory.isConnectorLocal(si.connector))
{
- String dispatch_to = LocalRequestHelper.processLocalVerify(si, holders_to_verify, request, response);
+ List temp_holder = new ArrayList(si.signature_holders);
+
+ si.copy_of_signature_holders = temp_holder;
+ si.signature_holders = holders_to_verify;
+
+ String dispatch_to = LocalRequestHelper.processLocalVerify(si, holders_to_verify, request, response);
dispatch(request, response, dispatch_to);
+
return;
}
@@ -646,7 +653,7 @@ public class VerifyPreviewServlet extends HttpServlet verify_which = Integer.parseInt(which_str);
continue;
}
-
+
if (item.getFieldName().equals("verify"))
{
if (item.getString("UTF-8").equals("true"))
diff --git a/webapp/jsp/error.jsp b/webapp/jsp/error.jsp index 0d77ead..e0e0954 100644 --- a/webapp/jsp/error.jsp +++ b/webapp/jsp/error.jsp @@ -1,8 +1,10 @@ +<%@ page import="at.knowcenter.wag.egov.egiz.web.LocalRequestHelper" %>
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>PDF-AS Amtssignaturen Resultat</title>
-<link rel="stylesheet" type="text/css" href="/pdf-as/css/styles.css" />
+<link rel="stylesheet" type="text/css" href="<%=LocalRequestHelper.getLocalServerAddress(request,response)%>pdf-as/css/styles.css" />
</head>
<body>
<%
@@ -20,7 +22,7 @@ <strong><%= cause %></strong>
</div>
</div>
-<a class="big" href="/pdf-as/">Weiter...</a>
+<a class="big" href="<%=LocalRequestHelper.getLocalServerAddress(request,response)%>pdf-as/">Weiter...</a>
</div>
</body>
</html>
\ No newline at end of file diff --git a/webapp/jsp/null_request_page.jsp b/webapp/jsp/null_request_page.jsp index 7bb3541..3299b18 100644 --- a/webapp/jsp/null_request_page.jsp +++ b/webapp/jsp/null_request_page.jsp @@ -10,44 +10,6 @@ <title>PDF-AS Amtssignaturen Lokale Verbindung</title>
<link rel="stylesheet" type="text/css" href="/pdf-as/css/styles.css" />
-<script type="text/javascript">
-
-var req;
-
-function init() {
-
- if (window.XMLHttpRequest) { req = new XMLHttpRequest(); }
- else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); }
-
- var url = "<%= local_request_url %>";
- var formdata = "XMLRequest=<?xml version='1.0' encoding='UTF-8'?><NullOperationRequest xmlns='http://www.buergerkarte.at/namespaces/securitylayer/1.2#'/>";
- formdata += "&DataURL=<%= data_url %>";
-
- req.open("post", url, true);
- req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
- req.onreadystatechange = processXMLResponse;
- req.send(formdata);
-}
-
-function processXMLResponse() {
- try
- {
- //readyState of 4 or 'complete' represents
- //that data has been returned
- if (xmlHttp.readyState == 4 ||
- xmlHttp.readyState == 'complete')
- {
- var response = req.responseText;
- alert(response);
- }
- else
- alert("not ok");
- }
- catch(e){}
-}
-
-</script>
-
</head>
<body onload="document.submitform.submit()">
diff --git a/webapp/jsp/results.jsp b/webapp/jsp/results.jsp index 02e084f..cffe158 100644 --- a/webapp/jsp/results.jsp +++ b/webapp/jsp/results.jsp @@ -89,6 +89,7 @@ <%
}
%>
+
</div>
</body>
</html>
diff --git a/work/cfg/config.properties b/work/cfg/config.properties index b179739..58d055e 100644 --- a/work/cfg/config.properties +++ b/work/cfg/config.properties @@ -20,7 +20,7 @@ strict_mode=false # added by tzefferer
allow_post_sign_modifications=false
-check_old_textual_sigs=true
+check_old_textual_sigs=false
# changes by arian and erno
|