aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/web/LocalRequestHelper.java191
1 files changed, 149 insertions, 42 deletions
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 2008fdc..723bc90 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
@@ -32,7 +32,13 @@ import at.knowcenter.wag.egov.egiz.exceptions.PresentableException;
import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
import at.knowcenter.wag.egov.egiz.pdf.SignatureHolder;
import at.knowcenter.wag.egov.egiz.sig.ConnectorFactory;
-import at.knowcenter.wag.egov.egiz.sig.LocalConnector;
+import at.knowcenter.wag.egov.egiz.sig.connectors.LocalConnector;
+import at.knowcenter.wag.egov.egiz.sig.SignatureData;
+import at.knowcenter.wag.egov.egiz.sig.SignatureDataImpl;
+import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
+import at.knowcenter.wag.egov.egiz.sig.connectors.bku.LocRefDetachedBKUConnector;
+import at.knowcenter.wag.egov.egiz.sig.connectors.bku.SignSignatureObject;
+import at.knowcenter.wag.egov.egiz.tools.CodingHelper;
/**
* Contains commonly used helper functions for the local request procedure.
@@ -42,15 +48,20 @@ import at.knowcenter.wag.egov.egiz.sig.LocalConnector;
public abstract class LocalRequestHelper
{
/**
+ * The resource of the null request page jsp.
+ */
+ public static final String NULL_REQUEST_PAGE_JSP = "/jsp/null_request_page.jsp";
+
+ /**
* The resource of the local connection page jsp.
*/
public static final String LOCAL_CONNECTION_PAGE_JSP = "/jsp/local_connection_page.jsp";
-
+
/**
* The resource of the redirect refresh page jsp.
*/
public static final String REDIRECT_REFRESH_PAGE_JSP = "/jsp/redirect_refresh_page.jsp";
-
+
/**
* Sets up the local sign procedure.
*
@@ -61,40 +72,72 @@ public abstract class LocalRequestHelper
* @throws PresentableException
* Forwarded exception.
*/
- public static void processLocalSign(SessionInformation si,
+ public static String processLocalSign(SessionInformation si,
HttpServletRequest request, HttpServletResponse response) throws IOException, PresentableException
{
- LocalConnector local_conn = (LocalConnector) ConnectorFactory.createConnector(si.connector);
-
-
- // FIXME refactor WEB
- String document_text = "fixme"; //si.iui.document_text;
- String request_string = local_conn.prepareSignRequest(si.user_name, document_text, si.type);
- String request_url = local_conn.getSignURL(si.type);
-
- LocalRequest local_request = new LocalRequest(request_url, request_string);
- List local_requests = new ArrayList();
- local_requests.add(local_request);
+ String host = request.getServerName(); // "129.27.153.77"
+ URL loc_ref_URL = new URL(request.getScheme(), host, request.getServerPort(), request.getContextPath() + "/RetrieveSignatureData");
+ String loc_ref_url = response.encodeURL(loc_ref_URL.toString());
- // ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // ObjectOutputStream oos = new ObjectOutputStream(baos);
- // oos.writeObject(local_requests);
- // oos.close();
- // baos.close();
+ LocalConnector c = new LocRefDetachedBKUConnector(si.type, loc_ref_url);
+ String sign_request = c.prepareSignRequest(si.iui.signature_data);
+ // TODO local URL
+ String local_request_url = "http://127.0.0.1:3495/http-security-layer-request";
si.requests = new LocalRequest[1];
- si.requests[0] = new LocalRequest(local_conn.getSignURL(si.type), request_string);
+ si.requests[0] = new LocalRequest(local_request_url, sign_request);
si.current_operation = 0;
si.response_properties = new Properties[1];
si.response_properties[0] = null;
- // SessionTable.put(si);
- request.getSession().setAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION, si);
+ URL data_URL = new URL(request.getScheme(), host, request.getServerPort(), request.getContextPath() + "/DataURL");
+ String data_url = response.encodeURL(data_URL.toString());
- // byte [] requests_bytes = baos.toByteArray();
- // String base64 = CodingHelper.encodeBase64(requests_bytes);
+ request.setAttribute("local_request_url", local_request_url);
+ request.setAttribute("data_url", data_url);
- LocalRequestHelper.prepareDispatchToLocalConnectionPage(si.requests[0], request, response);
+ return NULL_REQUEST_PAGE_JSP;
+
+
+ // TODO make better
+ //
+ // LocalConnector local_conn = (LocalConnector)
+ // ConnectorFactory.createConnector(si.connector);
+ //
+ //
+ // // FIXME refactor WEB
+ // String document_text = "fixme"; //si.iui.document_text;
+ // String request_string = local_conn.prepareSignRequest(si.user_name,
+ // document_text, si.type);
+ // String request_url = local_conn.getSignURL(si.type);
+ //
+ // LocalRequest local_request = new LocalRequest(request_url,
+ // request_string);
+ // List local_requests = new ArrayList();
+ // local_requests.add(local_request);
+ //
+ // // ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // // ObjectOutputStream oos = new ObjectOutputStream(baos);
+ // // oos.writeObject(local_requests);
+ // // oos.close();
+ // // baos.close();
+ //
+ // si.requests = new LocalRequest[1];
+ // si.requests[0] = new LocalRequest(local_conn.getSignURL(si.type),
+ // request_string);
+ // si.current_operation = 0;
+ // si.response_properties = new Properties[1];
+ // si.response_properties[0] = null;
+ //
+ // // SessionTable.put(si);
+ // request.getSession().setAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION,
+ // si);
+ //
+ // // byte [] requests_bytes = baos.toByteArray();
+ // // String base64 = CodingHelper.encodeBase64(requests_bytes);
+ //
+ // LocalRequestHelper.prepareDispatchToLocalConnectionPage(si.requests[0],
+ // request, response);
}
/**
@@ -102,6 +145,8 @@ public abstract class LocalRequestHelper
*
* @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
@@ -111,7 +156,7 @@ public abstract class LocalRequestHelper
* @throws ConnectorFactoryException
* Forwarded exception.
*/
- public static void processLocalVerify(SessionInformation si,
+ public static String processLocalVerify(SessionInformation si,
List holders_to_verify, HttpServletRequest request,
HttpServletResponse response) throws SignatureException, NormalizeException, IOException, ConnectorFactoryException
{
@@ -120,36 +165,98 @@ public abstract class LocalRequestHelper
si.current_operation = 0;
si.finished = false;
- request.getSession().setAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION, si);
- // SessionTable.put(si);
+ 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());
- LocalConnector local_conn = (LocalConnector) ConnectorFactory.createConnector(si.connector);
+ LocalConnector local_conn = new LocRefDetachedBKUConnector(si.type, loc_ref_url);
for (int i = 0; i < si.requests.length; i++)
{
SignatureHolder holder = (SignatureHolder) holders_to_verify.get(i);
+ 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();
- // Normalizer normalizer = new Normalizer();
- // String normalized = normalizer.normalize(holder.signed_text);
+ 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 = new SignSignatureObject();
+ so.date = s.getSignationDate();
+ so.signatureValue = s.getSignationValue();
+ so.issuer = s.getSignationIssuer();
+ so.x509Certificate = s.getX509Cert().getX509Certificate();
+ so.id = s.getSignationIds();
+ so.kz = s.getKZ().toString();
- String request_string = local_conn.prepareVerifyRequest(text_to_be_verified, holder.getSignatureObject());
+ String request_string = local_conn.prepareVerifyRequest(sd, so);
- LocalRequest local_request = new LocalRequest(local_conn.getVerifyURL(holder.getSignatureObject().getSignationType()), request_string);
+ LocalRequest local_request = new LocalRequest("not-needed", request_string);
si.requests[i] = local_request;
si.response_properties[i] = null;
}
- // ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // ObjectOutputStream oos = new ObjectOutputStream(baos);
- // oos.writeObject(local_requests);
- // oos.close();
- // baos.close();
+ 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);
- // byte [] requests_bytes = baos.toByteArray();
- // String base64 = CodingHelper.encodeBase64(requests_bytes);
+ return NULL_REQUEST_PAGE_JSP;
- prepareDispatchToLocalConnectionPage(si.requests[0], request, response);
+ // si.requests = new LocalRequest[holders_to_verify.size()];
+ // si.response_properties = new Properties[si.requests.length];
+ // si.current_operation = 0;
+ // si.finished = false;
+ //
+ // request.getSession().setAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION,
+ // si);
+ // // SessionTable.put(si);
+ //
+ // LocalConnector local_conn = (LocalConnector)
+ // ConnectorFactory.createConnector(si.connector);
+ //
+ // for (int i = 0; i < si.requests.length; i++)
+ // {
+ // SignatureHolder holder = (SignatureHolder) holders_to_verify.get(i);
+ //
+ // String text_to_be_verified = holder.getSignedText();
+ // // Normalizer normalizer = new Normalizer();
+ // // String normalized = normalizer.normalize(holder.signed_text);
+ //
+ // String request_string =
+ // local_conn.prepareVerifyRequest(text_to_be_verified,
+ // holder.getSignatureObject());
+ //
+ // LocalRequest local_request = new
+ // LocalRequest(local_conn.getVerifyURL(holder.getSignatureObject().getSignationType()),
+ // request_string);
+ // si.requests[i] = local_request;
+ // si.response_properties[i] = null;
+ // }
+ //
+ // // ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // // ObjectOutputStream oos = new ObjectOutputStream(baos);
+ // // oos.writeObject(local_requests);
+ // // oos.close();
+ // // baos.close();
+ //
+ // // byte [] requests_bytes = baos.toByteArray();
+ // // String base64 = CodingHelper.encodeBase64(requests_bytes);
+ //
+ // prepareDispatchToLocalConnectionPage(si.requests[0], request, response);
}
/**