");
//
// writer.println("
PDF-AS Amtssignaturen
");
//
// writer.println("
");
// writer.println("
Vorschau: Dokument Prüfen
");
// writer.println("
");
// writer.println("");
//
// writer.println("");
//
// }
public static String renderRequiredKeysJavaScript(
SignatureObject signature_object, String name_prefix)
{
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
String[] rkeys = SignatureTypes.REQUIRED_SIG_KEYS;
for (int key_idx = 0; key_idx < rkeys.length; key_idx++)
{
String key = rkeys[key_idx];
SignatureEntry entry = signature_object.getSigEntry(key);
String value = entry.getValue();
if (SignatureTypes.SIG_ID.equals(key) && value == null)
{
continue;
}
if (SignatureTypes.SIG_KZ.equals(key) && value == null)
{
continue;
}
value = value.replaceAll("\\s", " ");
value = value.replaceAll("\\\"", "\\\"");
String input_key = name_prefix + key;
writer.println(" document.submitform." + input_key + ".value = \"" + value + "\";");
}
return sw.toString();
}
public static String renderRequiredKeys(SignatureObject signature_object,
String name_prefix, boolean write_value)
{
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
writer.println("
");
return sw.toString();
}
public static String renderRequiredKeysText(SignatureObject signature_object)
{
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
writer.println("
");
// just render useful information
String[] rkeys = { SignatureTypes.SIG_NAME, SignatureTypes.SIG_DATE, SignatureTypes.SIG_ISSUER, SignatureTypes.SIG_NUMBER}; // SignatureTypes.REQUIRED_SIG_KEYS;
for (int key_idx = 0; key_idx < rkeys.length; key_idx++)
{
String key = rkeys[key_idx];
SignatureEntry entry = signature_object.getSigEntry(key);
String caption = entry.getCaption();
String value = entry.getValue();
if (caption == null || value == null) {
continue;
}
// if (SignatureTypes.SIG_KZ.equals(key) && value == null)
// {
// continue;
// }
writer.println(" ");
writer.println(" " + caption + ": | ");
writer.println(" ");
value = value.replaceAll("\\s", " ");
value = value.replaceAll("\\\"", "\\\"");
writer.println(" " + value);
writer.println(" | ");
writer.println("
");
}
writer.println("
");
return sw.toString();
}
protected void dispatchToResults(List results, HttpServletRequest request,
HttpServletResponse response, boolean backbutton, String backToListURL) throws ServletException, IOException
{
request.setAttribute("results", results);
request.setAttribute("backbutton", backbutton ? "true" : "false");
request.setAttribute("btlurl", backToListURL);
dispatch(request, response, "/jsp/results.jsp");
}
// public static void formatVerifyResults(List results,
// HttpServletResponse response) throws IOException, SettingNotFoundException
// {
// response.setContentType("text/html");
// response.setCharacterEncoding("UTF-8");
//
// PrintWriter writer = response.getWriter();
//
// writer.println("");
// writer.println("");
// writer.println("");
// writer.println("
");
// writer.println("
PDF-AS Amtssignaturen Resultat");
// writer.println("
");
// writer.println("");
//
// writer.println("");
// writer.println("
");
//
// writer.println("
PDF-AS Amtssignaturen
");
//
// writer.println("
");
// writer.println("
Resultat
");
// writer.println("
");
//
// Iterator it = results.iterator();
// while (it.hasNext())
// {
// SignatureResponse result = (SignatureResponse) it.next();
// formatSignatureResponse(result, writer);
//
// if (it.hasNext())
// {
// writer.println("
");
// }
// }
//
// writer.println("
");
// writer.println("
");
//
// writer.println("
zurück");
//
// writer.println("
");
// writer.println("");
//
// writer.println("");
//
// }
//
// public static void formatSignatureResponse(SignatureResponse result,
// PrintWriter writer) throws SettingNotFoundException
// {
// writer.println("
");
// writer.println("
");
// writer.println("
");
// }
/**
* Form field name prefix for signature table names
*/
public static final String SIG_INPUT_PREFIX = "sig_inp_";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
Object sessionObject = SessionHelper.getSession(request);
VerifySessionInformation si = (VerifySessionInformation)sessionObject;
int verify_which = -1;
boolean preview = false;
{
String str_verify_which = request.getParameter(FormFields.FIELD_VERIFY_WHICH);
logger_.debug("verify_which = " + str_verify_which);
if (str_verify_which.equals(FormFields.VALUE_VERIFY_WHICH_ALL))
{
verify_which = -1;
}
else
{
verify_which = Integer.parseInt(str_verify_which);
}
logger_.debug("verify_which = " + verify_which);
}
{
String preview_string = request.getParameter(FormFields.FIELD_PREVIEW);
if (preview_string.equals("true"))
{
preview = true;
}
}
List holders_to_verify = si.signature_holders;
if (verify_which >= 0)
{
if (verify_which >= si.signature_holders.size())
{
throw new SignatureException(312, "The selected signature to be verified doesn't exist.");
}
SignatureHolder holder = (SignatureHolder) si.signature_holders.get(verify_which);
// si.current_operation = verify_which;
holders_to_verify = new ArrayList();
holders_to_verify.add(holder);
if (preview == true)
{
if (holder instanceof BinarySignatureHolder)
{
BinarySignatureHolder binary_holder = (BinarySignatureHolder) holder;
response.setContentType("application/pdf");
StreamUtils.writeInputStreamToOutputStream(binary_holder.getSignedPdf().createInputStream(), response.getOutputStream());
// response.getOutputStream().write(binary_holder.getSignedPdf(), 0, binary_holder.getSignedPdfLength());
}
else
// if (holder.getSignatureObject().isTextual())
{
// formatPreview(holders_to_verify, si.connector, request,
// response);
// request.setAttribute(FormFields.FIELD_VERIFY_WHICH, new Integer(verify_which));
dispatchToPreview(request, response, verify_which);
}
return;
}
}
if (ConnectorFactory.isConnectorLocal(si.connector))
{
// what is this for? si.signature_holders must not be modified after extraction
// TODO this seems to be buggy bug fixing - remove
// 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;
}
String host = request.getServerName();
URL loc_ref_URL = new URL(LocalRequestHelper.getLocalContextAddress(request, response) + "/RetrieveSignatureData");
String loc_ref_url = response.encodeURL(loc_ref_URL.toString());
List results = PdfAS.verifySignatureHoldersWeb(holders_to_verify, si, loc_ref_url);
boolean backbutton = true;
if (verify_which >= 0)
{
backbutton = false;
}
URL btlURL = new URL(LocalRequestHelper.getLocalContextAddress(request, response) + "/jsp/verifylist.jsp");
String backToListURL = response.encodeURL(btlURL.toString());
dispatchToResults(results, request, response, backbutton, backToListURL);
}
catch (PresentableException e)
{
e.printStackTrace();
SignServlet.prepareDispatchToErrorPage(e, request);
dispatch(request, response, "/jsp/error.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
DiskFileItemFactory fif = new DiskFileItemFactory();
fif.setRepository(SettingsReader.getTemporaryDirectory());
ServletFileUpload sfu = new ServletFileUpload(fif);
try
{
Object sessionObject = SessionHelper.getSession(request);
VerifySessionInformation si = (VerifySessionInformation)sessionObject;
String text_to_be_verified = null;
SignatureObject signature_object = new SignatureObject();
String default_type = SettingsReader.getInstance().getValueFromKey(SignatureTypes.DEFAULT_TYPE);
signature_object.setSigType(default_type);
signature_object.initByType();
int verify_which = -1;
boolean verify = false;
List items = sfu.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext())
{
FileItem item = (FileItem) it.next();
logger_.debug("item = " + item.getFieldName());
if (item.getFieldName().equals(FormFields.FIELD_RAW_DOCUMENT_TEXT))
{
String raw_document_text = item.getString("UTF-8");
text_to_be_verified = PdfAS.normalizeText(raw_document_text);
continue;
}
if (item.getFieldName().equals(FormFields.FIELD_VERIFY_WHICH))
{
String which_str = item.getString("UTF-8");
verify_which = Integer.parseInt(which_str);
continue;
}
if (item.getFieldName().equals("verify"))
{
if (item.getString("UTF-8").equals("true"))
{
verify = true;
}
continue;
}
String key = item.getFieldName();
String value = item.getString("UTF-8");
signature_object.setSigValue(key, value);
logger_.debug("sig_obj_number" + key + " = " + value);
}
SignatureHolder old_holder = (SignatureHolder) si.signature_holders.get(verify_which);
TempDirHelper.deleteDataSourceIfFileBased(old_holder.getDataSource());
TextDataSource tds = TempDirHelper.placeTextIntoTempDir(text_to_be_verified, "_previewholder.utf8.txt");
SignatureHolder new_holder = new TextualSignatureHolder(tds, signature_object);
si.signature_holders.set(verify_which, new_holder);
if (verify == false)
{
dispatchToDataOk(request, response);
return;
}
List holders_to_verify = si.signature_holders;
if (verify_which >= 0)
{
if (verify_which >= si.signature_holders.size())
{
throw new SignatureException(312, "The selected signature to be verified doesn't exist.");
}
SignatureHolder holder = (SignatureHolder) si.signature_holders.get(verify_which);
holders_to_verify = new ArrayList();
holders_to_verify.add(holder);
}
if (ConnectorFactory.isConnectorLocal(si.connector))
{
String dispatch_to = LocalRequestHelper.processLocalVerify(si, holders_to_verify, request, response);
dispatch(request, response, dispatch_to);
return;
}
String host = request.getServerName();
URL loc_ref_URL = new URL(LocalRequestHelper.getLocalContextAddress(request, response) + "/RetrieveSignatureData");
String loc_ref_url = response.encodeURL(loc_ref_URL.toString());
List results = PdfAS.verifySignatureHoldersWeb(holders_to_verify, si, loc_ref_url);
URL btlURL = new URL(LocalRequestHelper.getLocalContextAddress(request, response) + "/jsp/verifylist.jsp");
String backToListURL = response.encodeURL(btlURL.toString());
dispatchToResults(results, request, response, true, backToListURL);
}
catch (FileUploadException e)
{
request.setAttribute("error", "Fehler beim Upload der Daten");
request.setAttribute("cause", "Beim Upload der Daten ist ein Fehler aufgetreten.");
dispatch(request, response, "/jsp/error.jsp");
}
catch (PresentableException e)
{
e.printStackTrace();
SignServlet.prepareDispatchToErrorPage(e, request);
dispatch(request, response, "/jsp/error.jsp");
}
}
}