From 535a04fa05f739ec16dd81666e3b0f82dfbd442d Mon Sep 17 00:00:00 2001 From: tknall Date: Wed, 9 Jan 2013 15:41:29 +0000 Subject: pdf-as-lib maven project files moved to pdf-as-lib git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/pdf-as/trunk@926 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- .../knowcenter/wag/egov/egiz/commandline/Main.java | 1149 -------------------- 1 file changed, 1149 deletions(-) delete mode 100644 src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java') diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java b/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java deleted file mode 100644 index 1b66f53..0000000 --- a/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java +++ /dev/null @@ -1,1149 +0,0 @@ -/** - * Copyright 2006 by Know-Center, Graz, Austria - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - * - * $Id: Main.java,v 1.5 2006/10/31 08:06:56 wprinz Exp $ - */ -package at.knowcenter.wag.egov.egiz.commandline; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.pdfas.commandline.CommandlineConnectorChooser; -import at.gv.egiz.pdfas.exceptions.ErrorCode; -import at.gv.egiz.pdfas.exceptions.ErrorCodeHelper; -import at.gv.egiz.pdfas.exceptions.external.ExternalErrorException; -import at.gv.egiz.pdfas.framework.DataSourceHolder; -import at.gv.egiz.pdfas.framework.config.SettingsHelper; -import at.gv.egiz.pdfas.framework.input.DataSource; -import at.gv.egiz.pdfas.framework.input.ExtractionStage; -import at.gv.egiz.pdfas.framework.input.PdfDataSource; -import at.gv.egiz.pdfas.framework.output.DataSink; -import at.gv.egiz.pdfas.framework.vfilter.VerificationFilterParameters; -import at.gv.egiz.pdfas.impl.input.FileBasedPdfDataSourceImpl; -import at.gv.egiz.pdfas.impl.input.TextDataSourceImpl; -import at.gv.egiz.pdfas.impl.output.FileBasedDataSink; -import at.knowcenter.wag.egov.egiz.PdfAS; -import at.knowcenter.wag.egov.egiz.PdfASID; -import at.knowcenter.wag.egov.egiz.cfg.SettingsReader; -import at.knowcenter.wag.egov.egiz.exceptions.ConnectorFactoryException; -import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException; -import at.knowcenter.wag.egov.egiz.exceptions.PlaceholderException; -import at.knowcenter.wag.egov.egiz.exceptions.PresentableException; -import at.knowcenter.wag.egov.egiz.exceptions.SettingNotFoundException; -import at.knowcenter.wag.egov.egiz.exceptions.SignatureException; -import at.knowcenter.wag.egov.egiz.exceptions.SignatureTypesException; -import at.knowcenter.wag.egov.egiz.framework.SignatorFactory; -import at.knowcenter.wag.egov.egiz.pdf.SignatureHolder; -import at.knowcenter.wag.egov.egiz.pdf.TablePos; -import at.knowcenter.wag.egov.egiz.sig.ConnectorFactory; -import at.knowcenter.wag.egov.egiz.sig.ConnectorInformation; -import at.knowcenter.wag.egov.egiz.sig.SignatureResponse; -import at.knowcenter.wag.egov.egiz.sig.SignatureTypes; - -/** - * The main program entry point of the commandline tool. - * - * @author wprinz - */ -public abstract class Main -{ - /** - * Command line parameter setting the application mode sign|verify - */ - protected static final String PARAMETER_MODE = "-mode"; - - /** - * Command line parameter setting the application to connect - */ - protected static final String PARAMETER_CONNECTOR = "-connector"; - - /** - * Command line parameter setting the signature mode. - */ - protected static final String PARAMETER_SIGNATURE_MODE = "-sigmode"; - - /** - * Command line parameter setting the signature type. - */ - protected static final String PARAMETER_SIGNATURE_TYPE = "-sigtype"; - - /** - * Command line parameter setting the username - */ - protected static final String PARAMETER_USER_NAME = "-username"; - - /** - * Command line parameter setting the users password - */ - protected static final String PARAMETER_USER_PASSWORD = "-password"; - - /** - * Command line parameter selecting the position of the signature. - */ - protected static final String PARAMETER_POS = "-pos"; - - /** - * Command line parameter selecting the signature which is going to be - * verified. - */ - protected static final String PARAMETER_VERIFY_WHICH = "-verify_which"; - - /** - * The application mode sign - */ - public static final String VALUE_MODE_SIGN = "sign"; - - /** - * The application mode verify - */ - public static final String VALUE_MODE_VERIFY = "verify"; - - /** - * The application mode sign - */ - public static final String VALUE_SIGNATURE_MODE_BINARY = "binary"; - - /** - * The application mode verify - */ - public static final String VALUE_SIGNATURE_MODE_TEXTUAL = "textual"; - - /** - * The application mode verify - */ - public static final String VALUE_SIGNATURE_MODE_DETACHED = "detached"; - - /** - * The application mode verify - */ - public static final String VALUE_SIGNATURE_MODE_DETACHED_TEXT = "detachedtextual"; - - /** - * The log. - */ - private static final Log logger_ = LogFactory.getLog(Main.class); - - /** - * Main program entry point. - * - * @param args - * The commandline arguments. - * @throws IOException - * - * @deprecated use {@link at.gv.egiz.pdfas.commandline.Main} instead - */ - public static void main(String[] args) throws IOException { - System.out.println("\nWarning: The entry point at.knowcenter.wag.egov.egiz.commandline.Main is deprecated. Use at.gv.egiz.pdfas.commandline.Main instead.\n"); - at.gv.egiz.pdfas.commandline.Main.main(args); - } - - /* - public static void main(String[] args) throws IOException - { - // ConfigLogger.setLevel(Level.DEBUG); - - SettingsReader.initializeForCommandLine(); - PropertyConfigurator.configure(SettingsReader.CONFIG_PATH + "log4j.properties"); - - // printUsage(System.out); - - String mode = null; - String signature_mode = null; - String connector = null; - - String signature_type = null; - String user_name = null; - String user_password = null; - String pos_string = null; - - int verify_which = -1; - - String input = null; - String output = null; - - try - { - - // for (int i = 0; i < args.length; i++) - // { - // logger_.debug("arg[" + i + "] = " + args[i]); - // } - - for (int i = 0; i < args.length; i++) - { - String cur_arg = args[i].trim(); - - if (cur_arg.equals(PARAMETER_MODE)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_MODE); - return; - } - mode = args[i]; - if (!checkMode(mode)) - { - printUnrecognizedValue(PARAMETER_MODE, mode); - return; - } - continue; - } - - if (cur_arg.equals(PARAMETER_CONNECTOR)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_CONNECTOR); - return; - } - connector = args[i]; - if (!checkConnector(connector)) - { - printUnrecognizedValue(PARAMETER_CONNECTOR, connector); - return; - } - continue; - } - - if (cur_arg.equals(PARAMETER_SIGNATURE_MODE)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_SIGNATURE_MODE); - return; - } - signature_mode = args[i]; - if (!checkSignatureMode(signature_mode)) - { - printUnrecognizedValue(PARAMETER_SIGNATURE_MODE, signature_mode); - return; - } - continue; - } - - if (cur_arg.equals(PARAMETER_SIGNATURE_TYPE)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_SIGNATURE_TYPE); - return; - } - signature_type = args[i]; - if (!checkSignatureType(signature_type)) - { - printUnrecognizedValue(PARAMETER_SIGNATURE_TYPE, signature_type); - return; - } - continue; - } - - if (cur_arg.equals(PARAMETER_USER_NAME)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_USER_NAME); - return; - } - user_name = args[i]; - continue; - } - - if (cur_arg.equals(PARAMETER_USER_PASSWORD)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_USER_PASSWORD); - return; - } - user_password = args[i]; - continue; - } - - if (cur_arg.equals(PARAMETER_POS)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_POS); - return; - } - pos_string = args[i]; - continue; - } - - if (cur_arg.equals(PARAMETER_VERIFY_WHICH)) - { - i++; - if (i >= args.length) - { - printNoValue(PARAMETER_VERIFY_WHICH); - return; - } - String str_verify_which = args[i]; - try - { - verify_which = Integer.parseInt(str_verify_which); - } - catch (NumberFormatException e) - { - printUnrecognizedValue(PARAMETER_VERIFY_WHICH, str_verify_which); - return; - } - - continue; - } - - if (cur_arg.charAt(0) == '-') - { - printUnrecognizedOption(cur_arg); - return; - } - - if (input == null) - { - input = cur_arg; - continue; - } - - if (output == null) - { - output = cur_arg; - continue; - } - - printUnrecognizedAdditionalCommandlineArgument(cur_arg); - return; - } - - if (mode == null) - { - printMissingParameter("a mode", PARAMETER_MODE); - return; - } - if (connector == null) - { - printMissingParameter("a connector", PARAMETER_CONNECTOR); - return; - } - if (mode.equals(VALUE_MODE_SIGN)) - { - if (signature_mode == null) - { - printMissingParameter("a signature mode", PARAMETER_SIGNATURE_MODE); - return; - } - if (signature_type == null) - { - SettingsReader settings = SettingsReader.getInstance(); - String default_type = settings.getValueFromKey(SignatureTypes.DEFAULT_TYPE); - signature_type = default_type; - } - if (user_name == null) - { - user_name = ""; - // printMissingParameter("a user name", PARAMETER_USER_NAME); - // return; - } - if (user_password == null) - { - user_password = ""; - // printMissingParameter("a user password", PARAMETER_USER_PASSWORD); - // return; - } - } - - if (input == null) - { - printMissing("an input document"); - return; - } - - File file = new File(input); - if (!file.exists()) - { - System.err.println("The input file '" + input + "' doesn't exist."); - return; - } - - if (mode.equals(VALUE_MODE_SIGN) && output == null) - { - output = generateOutputFileNameFromInput(input, signature_mode); - } - - carryOutCommand(mode, signature_mode, connector, signature_type, user_name, user_password, verify_which, input, output, pos_string); - - } - catch (PresentableException e) - { - printPresentableException(e); - - if (output != null) - { - logger_.debug("Deleting output file on error."); - File oFile = new File(output); - boolean deleted = oFile.delete(); - if (!deleted) - { - logger_.error("Couldn't delete output file " + output); - } - } - } - finally - { - SettingsReader.clearTemporaryDirectory(); - } - } - */ - - protected static void carryOutCommand(final String mode, final String signature_mode, final String connector, final String signature_type, final String user_name, final String user_password, - final int verify_which, final String input, String output, final String pos_string) throws PresentableException - { - // File file = new File(input); - // - // byte[] input_bytes = null; - // try - // { - // FileInputStream fis = new FileInputStream(file); - // input_bytes = new byte[(int) file.length()]; - // fis.read(input_bytes); - // fis.close(); - // } - // catch (IOException e) - // { - // throw new PDFDocumentException(201); - // } - - PrintWriter messageOutput = new PrintWriter(System.out); - - - if (mode.equals(VALUE_MODE_SIGN)) - { - carryOutSign(input, connector, signature_mode, signature_type, pos_string, user_name, user_password, output, messageOutput); - } - else - { - carryOutVerify(input, connector, verify_which, messageOutput); - } - messageOutput.flush(); - } - - public static void carryOutSign(String input, String connector, String signature_mode, String signature_type, String pos_string, String user_name, String user_password, String output, - PrintWriter messageOutput) throws PresentableException - { - messageOutput.println("Signing..."); - - // for performance measurement - long startTime = 0; - long fileSize = 0; - if (logger_.isInfoEnabled()) { - startTime = System.currentTimeMillis(); - } - - PdfDataSource pdfDataSource; - try - { - File file = new File(input); - pdfDataSource = new FileBasedPdfDataSourceImpl(file, (int)file.length()); - if (logger_.isDebugEnabled()) - fileSize = file.length(); - - } - catch (IOException e) - { - throw new PDFDocumentException(201, e); - } - - FileBasedDataSink dataSink = null; - File outputFile = null; - try - { - outputFile = new File(output); - - dataSink = new FileBasedDataSink(outputFile); - } - catch (IOException e) - { - throw new PDFDocumentException(ErrorCode.CANNOT_WRITE_PDF, e); - } - - try { - processSign(pdfDataSource, connector, signature_mode, signature_type, pos_string, dataSink); - } catch (Exception e) { - // Exception caught in order to delete file based datasink - if (outputFile != null && outputFile.exists()) - { - logger_.debug("Deleting output file on error."); - boolean deleted = outputFile.delete(); - if (!deleted) - { - logger_.error("Couldn't delete output file " + output); - } - } - if (e instanceof PresentableException) { - throw (PresentableException)e; - } else { - throw new PresentableException(ErrorCode.UNKNOWN_ERROR, e); - } - } - - // for performance measurement - if (logger_.isInfoEnabled()) { - long endTime = System.currentTimeMillis(); - String toReport = "SIGN;" + signature_mode + ";" + input + ";"+ fileSize + ";" + (endTime - startTime); - logger_.info(toReport); - } - - messageOutput.println("Signing was successful."); - } - - public static void carryOutVerify(String input, String connector, int verify_which, PrintWriter messageOutput) throws PresentableException - { - messageOutput.println("Verifying..."); - - // for performance measurement - long startTime = 0; - long fileSize = 0; - if (logger_.isInfoEnabled()) { - startTime = System.currentTimeMillis(); - } - - DataSource dataSource = null; - try - { - File file = new File(input); - if (logger_.isDebugEnabled()) - fileSize = file.length(); - String extension = extractExtension(input); - if (extension != null && extension.equals("txt")) - { - try - { - FileInputStream fis = new FileInputStream(file); - byte[] input_bytes = new byte[(int) file.length()]; - fis.read(input_bytes); - fis.close(); - - String text = new String(input_bytes, "UTF-8"); - dataSource = new TextDataSourceImpl(text); - } - catch (UnsupportedEncodingException e) - { - throw new RuntimeException("Very strange: UTF-8 character encoding not supported.", e); - } - } - else - { - dataSource = new FileBasedPdfDataSourceImpl(file, (int)file.length()); - } - } - catch (IOException e) - { - throw new PDFDocumentException(ErrorCode.DOCUMENT_CANNOT_BE_READ, e); - } - - List results = processVerify(new DataSourceHolder(dataSource), connector, verify_which); - - messageOutput.println("Verification results:"); - formatVerifyResults(results, messageOutput); - - // for performance measurement - if (logger_.isInfoEnabled()) { - long endTime = System.currentTimeMillis(); - String toReport = "VERIFY;"+ input + ";"+ fileSize + ";" + (endTime - startTime) + ";" + debugVerifyResults(results); - logger_.info(toReport); - } - - - } - - /** - * Extracts the extension from a file name string. - * - *

- * The extension of a file name is whatever text follows the last '.'. - *

- * - * @param file_name - * The file name. - * @return Returns the extension. If the file name ends with the '.', then an - * empty string is returned. If the file name doesn't contain any '.' - * or file_name is null, null is returned. - */ - public static String extractExtension(String file_name) - { - if (file_name == null) - { - return null; - } - - int dot_index = file_name.lastIndexOf('.'); - if (dot_index < 0) - { - return null; - } - return file_name.substring(dot_index + 1); - } - - public static void processSign(PdfDataSource pdfDataSource, String connector, String signature_mode, String signature_type, String pos_string, DataSink dataSink) throws PresentableException - { - pdfDataSource = PdfAS.applyStrictMode(pdfDataSource); - - TablePos pos = null; - if (pos_string != null) - { - try - { - pos = PdfAS.parsePositionFromPosString(pos_string); - } - catch (PDFDocumentException e) - { - printUnrecognizedValue(PARAMETER_POS, pos_string); - return; - - } - } - - PdfASID signatorId = translateSignatureModeToPdfASID(signature_mode); - - // TODO MOA detached signing is not allowed at the commandline -// logger_.debug("Suggested sign algorithm = " + signatorId); - if (connector.equals("moa")) - { - // TODO: possible new implementation of moa where is commandline call - // supported - // it should be checked in config file is it allowed to use MOA detached - // from command line. -// String msg = "Hinweis: Der MOA Detached Connector ist fuer die Kommandozeile nicht geeignet. Die Signatur wird daher im alten Base64 enveloping Format ausgefuehrt."; -// System.out.println(msg); -// logger_.warn(msg); -// -// if (signature_mode.equals(VALUE_SIGNATURE_MODE_BINARY)) -// { -// signatorId = BinarySignator_1_0_0.MY_ID; -// } -// if (signature_mode.equals(VALUE_SIGNATURE_MODE_TEXTUAL)) -// { -// signatorId = TextualSignator_1_0_0.MY_ID; -// } - } -// logger_.debug("Finally used sign algorithm = " + signatorId); - - String connectorId = CommandlineConnectorChooser.chooseCommandlineConnectorForSign(connector); - - PdfAS.signCommandline(pdfDataSource, dataSink, signatorId, connectorId, signature_type, null, pos, null, null); - -// PdfAS.sign(algorithm, pdfDataSource, dataSink, signature_type, connector, pos); - } - - public static List processVerify(DataSourceHolder dataSource, String connector, int verify_which) throws PresentableException - { - VerificationFilterParameters parameters = SettingsHelper.readVerificationFilterParametersFromSettings(); - ExtractionStage es = new ExtractionStage(); - - List signature_holders = es.extractSignatureHolders(dataSource, parameters); - - if (signature_holders.isEmpty()) - { - throw new PDFDocumentException(ErrorCode.DOCUMENT_NOT_SIGNED, "Document is unsigned."); - } - - List holders_to_verify = signature_holders; - - // verify_which - optional argument in command line/web - if (verify_which >= 0) - { - if (verify_which >= signature_holders.size()) - { - throw new SignatureException(312, "The selected signature to be verified doesn't exist."); - } - - SignatureHolder holder = (SignatureHolder) signature_holders.get(verify_which); - holders_to_verify = new ArrayList(); - holders_to_verify.add(holder); - } - - List results = PdfAS.verifySignatureHolders(holders_to_verify, connector, false, null); - - return results; - } - - // TODO old method - remove - // /** - // * Generates a suitable output file name for the output regarding the type - // of - // * the sign_result. - // * - // * @param input - // * The input file name. - // * @param sign_result - // * The sign result. - // * @return Returns the output file name. - // */ - // protected static String generateOutputFileNameFromInput(String input, - // SignResult sign_result) - // { - // String output = input + "_out"; - // if (sign_result.getMimeType().equals(DetachedSignator_1_0_0.MIME_TYPE)) - // { - // output += ".xml"; - // } - // else - // { - // output += ".pdf"; - // } - // - // return output; - // } - - protected static String generateOutputFileNameFromInput(String input, String sig_mode) - { - String output = input + "_out"; - if (sig_mode.equals("detached")) - { - output += ".xml"; - } - else - { - output += ".pdf"; - } - - return output; - } - - /** - * Prints that the provided option was unrecognized. - * - * @param option - * The unrecognized option. - * @throws PresentableException - * Forwarded exception. - */ - protected static void printUnrecognizedOption(final String option) throws PresentableException - { - System.err.println("Unrecognized option '" + option + "'."); - printUsage(System.out); - } - - /** - * Prints that the provided value was unrecognized. - * - * @param parameter - * The parameter, which is missing a value. - * @throws PresentableException - * Forwarded exception. - */ - protected static void printNoValue(final String parameter) throws PresentableException - { - System.err.println("The parameter " + parameter + " requires a value as next argument."); - printUsage(System.out); - } - - /** - * Prints that the provided value was unrecognized. - * - * @param value - * The unrecognized value. - * @throws PresentableException - * Forwarded exception. - */ - protected static void printUnrecognizedValue(final String parameter, final String value) throws PresentableException - { - System.err.println("The parameter " + parameter + " doesn't recognize the provided value '" + value + "'."); - printUsage(System.out); - } - - /** - * Prints that the provided additional commandline argument was unrecognized. - * - * @param argument - * The unrecognized argument. - * @throws PresentableException - * Forwarded exception. - */ - protected static void printUnrecognizedAdditionalCommandlineArgument(final String argument) throws PresentableException - { - System.err.println("Unrecognized additional commandline argument '" + argument + "'."); - printUsage(System.out); - } - - /** - * Prints that a certain parameter was missing. - * - * @param missing_term - * A description of the missing parameter ("e.g. a mode"). - * @param parameter - * The missing parameter itself (e.g. "-mode"). - * @throws PresentableException - * Forwarded exception. - */ - protected static void printMissingParameter(final String missing_term, final String parameter) throws PresentableException - { - printMissing(missing_term + " ('" + parameter + "' parameter)"); - } - - /** - * Prints that something is missing. - * - * @param missing_term - * A descriptive message of the missing thing. - * @throws PresentableException - * Forwarded exception. - */ - protected static void printMissing(final String missing_term) throws PresentableException - { - System.err.println("Please specify " + missing_term + "."); - printUsage(System.out); - } - - /** - * Prints out the ErrorCodeException in a descriptive form. - * - * @param ece - * The ErrorCodeException to be printed. - */ - protected static void printPresentableException(final PresentableException e) - { - if (e.getErrorCode() == ErrorCode.PLACEHOLDER_EXCEPTION) - { - PlaceholderException phe = null; - if (e instanceof PlaceholderException) - { - phe = (PlaceholderException) e; - } - else - { - phe = (PlaceholderException) e.getCause(); - } - - System.err.println("Der Platzhalter des Feldes " + phe.getField() + " ist um " + phe.getMissing() + " Bytes zu kurz. "); - } - - System.err.println("Fehler " + e.getErrorCode() + ": " + ErrorCodeHelper.getMessageForErrorCode(e.getErrorCode())); - - if (e instanceof ExternalErrorException) - { - ExternalErrorException eee = (ExternalErrorException) e; - System.err.println("Externer Fehlergrund: " + eee.getExternalErrorCode() + ": " + eee.getExternalErrorMessage()); - } - - logger_.error(e); - } - - /** - * Prints the usage text. - * - * @param writer - * The writer to print the text to. - * @throws PresentableException - * Forwarded exception. - */ - public static void printUsage(PrintStream writer) throws PresentableException - { - writer.println("Usage: pdf-as [OPTIONS] [output file]"); - writer.println(" Required OPTIONS:"); - - writer.println(" " + PARAMETER_MODE + " <" + VALUE_MODE_SIGN + "|" + VALUE_MODE_VERIFY + ">"); - writer.println(" " + VALUE_MODE_SIGN + " ... signs a document"); - writer.println(" " + VALUE_MODE_VERIFY + " ... verifies a document"); - - writer.print(" " + PARAMETER_CONNECTOR + " "); - ConnectorInformation[] ci = ConnectorFactory.getConnectorInformationArray(); - for (int i = 0; i < ci.length; i++) - { - String id = ci[i].getIdentifier(); - if (!ConnectorFactory.isAvailableForCommandline(id)) - { - continue; - } - writer.print(id); - if (i < ci.length - 1) - { - writer.print("|"); - } - } - writer.println(); - for (int i = 0; i < ci.length; i++) - { - String id = ci[i].getIdentifier(); - if (!ConnectorFactory.isAvailableForCommandline(id)) - { - continue; - } - writer.println(" " + id + " ... " + ci[i].getDescription()); - } - - writer.println(" OPTIONS for signation:"); - - writer.println(" " + PARAMETER_SIGNATURE_MODE + " <" + VALUE_SIGNATURE_MODE_BINARY + "|" + VALUE_SIGNATURE_MODE_TEXTUAL + ">"); - writer.println(" " + VALUE_SIGNATURE_MODE_BINARY + " ... signs the complete binary document"); - writer.println(" " + VALUE_SIGNATURE_MODE_TEXTUAL + " ... signs only the textual portion of the document"); - //writer.println(" " + VALUE_SIGNATURE_MODE_DETACHED + " ... signs the document using the binary mode and returns the xml signature of it."); - writer.println(" " + VALUE_SIGNATURE_MODE_DETACHED_TEXT + " ... signs the document using the textual mode and returns the xml signature of it."); - - writer.print(" " + PARAMETER_SIGNATURE_TYPE + " <"); - SignatureTypes sig_types = SignatureTypes.getInstance(); - SettingsReader settings = SettingsReader.getInstance(); - Set types_array = sig_types.getSignatureTypes(); - Iterator it = types_array.iterator(); - while (it.hasNext()) - { - String type = (String) it.next(); - writer.print(type); - if (it.hasNext()) - { - writer.print("|"); - } - } - writer.println(">"); - writer.println(" ... [optional] the profile to be used. If omitted, the default"); - writer.println(" profile is used."); - String default_type = settings.getValueFromKey(SignatureTypes.DEFAULT_TYPE); - it = types_array.iterator(); - while (it.hasNext()) - { - String type = (String) it.next(); - String descr_key = SignatureTypes.SIG_OBJ + type + "." + SignatureTypes.SIG_DESCR; - String type_descr = settings.getValueFromKey(descr_key); - - writer.println(" " + type + " ... " + (type.equals(default_type) ? "(default) " : "") + type_descr); - } - - writer.println(" " + PARAMETER_USER_NAME + " ... [optional] the user name"); - writer.println(" " + PARAMETER_USER_PASSWORD + " ... [optional] the user password"); - - writer.println(" " + PARAMETER_POS + " ... [optional] the position of the signature block"); - writer.println(" position has the format [x:x_algo];[y:y_algo];[w:w_algo][p:p_algo];[f:f_algo]"); - writer.println(" if not present default is set to x:auto;y:auto;w:auto;p:auto;f:0"); - writer.println(" x_algo:='auto' ... automatic positioning x"); - writer.println(" floatvalue ... absolute x must be >= 0"); - writer.println(" y_algo:='auto' ... automatic positioning y"); - writer.println(" floatvalue ... absolute y must be >= 0"); - writer.println(" w_algo:='auto' ... automatic width"); - writer.println(" floatvalue ... absolute width must be > 0"); - writer.println(" p_algo:='auto' ... automatic last page"); - writer.println(" 'new' ... new page"); - writer.println(" intvalue ... pagenumber must be > 0 if p>number of pages in document p-->handled like p:'new'"); - writer.println(" f_algo floatvalue ... consider footerline must be >= 0 (only if y_algo is auto and p_algo is not 'new')"); - - writer.println(" OPTIONS for verification:"); - writer.println(" " + PARAMETER_VERIFY_WHICH + " ... [optional] zero based number of the signature"); - writer.println(" to be verified. If omitted, all signatures are verified."); - - writer.println(" Example usage:"); - writer.println(" pdf-as " + PARAMETER_MODE + " " + VALUE_MODE_SIGN + " " + PARAMETER_CONNECTOR + " moa some_document.pdf"); - writer.println(" pdf-as " + PARAMETER_MODE + " " + VALUE_MODE_VERIFY + " some_document.pdf_out.pdf"); - } - - /** - * Checks the value for correctness. - * - * @param mode - * The parameter's value. - * @return Returns true, if the value is correct, false otherwise. - */ - protected static boolean checkMode(String mode) - { - return mode.equals(VALUE_MODE_SIGN) || mode.equals(VALUE_MODE_VERIFY); - } - - /** - * Checks the value for correctness. - * - * @param signature_mode - * The parameter's value. - * @return Returns true, if the value is correct, false otherwise. - */ - protected static boolean checkSignatureMode(String signature_mode) - { - return signature_mode.equals(VALUE_SIGNATURE_MODE_BINARY) || signature_mode.equals(VALUE_SIGNATURE_MODE_TEXTUAL) || signature_mode.equals(VALUE_SIGNATURE_MODE_DETACHED) - || signature_mode.equals(VALUE_SIGNATURE_MODE_DETACHED_TEXT); - } - - /** - * Checks the value for correctness. - * - * @param connector - * The parameter's value. - * @return Returns true, if the value is correct, false otherwise. - * @throws ConnectorFactoryException - * F.e. - */ - protected static boolean checkConnector(String connector) throws ConnectorFactoryException - { - return ConnectorFactory.isValidConnectorIdentifier(connector) && ConnectorFactory.isAvailableForCommandline(connector); - } - - /** - * Checks the value for correctness. - * - * @param signature_type - * The parameter's value. - * @return Returns true, if the value is correct, false otherwise. - */ - protected static boolean checkSignatureType(String signature_type) throws SignatureTypesException - { - return SignatureTypes.getInstance().getSignatureTypes().contains(signature_type); - - // exthex: uuuaaaahhhhh WHY??? wprinz again?, dont do that. Use List.contains(o), please - // take a java course and read: http://www.amazon.de/Java-f%C3%BCr-Dummies-Barry-Burd/dp/382662999X -// List types_array = sig_types.getSignatureTypes(); -// Iterator it = types_array.iterator(); -// while (it.hasNext()) -// { -// String type = (String) it.next(); -// if (type.equals(signature_type)) -// { -// return true; -// } -// } -// return false; - } - - /** - * Translates the commandline argument to a PDF-AS-ID. - * - * @param signature_mode - * The signator mode commandline argument. - * @return Returns the corresponding PDFASID. - */ - protected static PdfASID translateSignatureModeToPdfASID(String signature_mode) - { - if (signature_mode.equals(VALUE_SIGNATURE_MODE_BINARY)) - { - return SignatorFactory.MOST_RECENT_BINARY_SIGNATOR_ID; - } - if (signature_mode.equals(VALUE_SIGNATURE_MODE_TEXTUAL)) - { - return SignatorFactory.MOST_RECENT_TEXTUAL_SIGNATOR_ID; - } - if (signature_mode.equals(VALUE_SIGNATURE_MODE_DETACHED)) - { - return SignatorFactory.MOST_RECENT_DETACHED_SIGNATOR_ID; - } - if (signature_mode.equals(VALUE_SIGNATURE_MODE_DETACHED_TEXT)) - { - return SignatorFactory.MOST_RECENT_DETACHEDTEXT_SIGNATOR_ID; - } - return null; - } - - /** - * Formats the verification results. - * - * @param results - * The List of SignatureResponse verification results. - * @param writer - * The output sink to write the formatted text to. - * @throws SettingNotFoundException - * Forwarded exception. - */ - protected static void formatVerifyResults(List results, PrintWriter writer) throws SettingNotFoundException - { - Iterator it = results.iterator(); - while (it.hasNext()) - { - SignatureResponse result = (SignatureResponse) it.next(); - formatSignatureResponse(result, writer); - - if (it.hasNext()) - { - writer.println(); - } - } - } - - /** - * Formats the verification results for debugging. Returns 0 if no error occurs or the sum of all error-codes. - * - * @param results - * - * @param writer - * The output sink to write the formatted text to. - * @throws SettingNotFoundException - * Forwarded exception. - */ - protected static int debugVerifyResults(List results) throws SettingNotFoundException - { - int toreturn = 0; - Iterator it = results.iterator(); - while (it.hasNext()) - { - SignatureResponse result = (SignatureResponse) it.next(); - - toreturn += Integer.valueOf(result.getSignatureCheckCode()).intValue(); - } - return toreturn; - } - - - /** - * Formats the SignatureResponse. - * - * @param result - * The SignatureResponse to be printed. - * @param writer - * The output sink to write the formatted text to. - * @throws SettingNotFoundException - * Forwarded exception. - */ - public static void formatSignatureResponse(SignatureResponse result, PrintWriter writer) throws SettingNotFoundException - { - - writer.println(" Zertifikat:"); - writer.println(" Signator: " + result.getX509SubjectName()); - writer.println(" Aussteller: " + result.getX509IssuerName()); - writer.println(" Seriennummer: " + result.getX509SerialNumber()); - List public_properties = result.getPublicProperties(); - Iterator it = public_properties.iterator(); - while (it.hasNext()) - { - String public_property = (String) it.next(); - writer.println(" Eigenschaft: " + public_property); - } - - writer.println(" Zertifikat-Check:"); - writer.println(" " + result.getCertificateCheckCode() + " - " + result.getCertificateCheckInfo()); - writer.println(" Signatur-Check:"); - writer.println(" " + result.getSignatureCheckCode() + " - " + result.getSignatureCheckInfo()); - writer.println(" Manifest-Check:"); - writer.println(" " + result.getSignatureManifestCheckCode() + " - " + result.getSignatureManifestCheckInfo()); - } - -} -- cgit v1.2.3