aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-09-29 11:08:22 +0200
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-09-29 11:08:22 +0200
commit9edd8e334faadcc5e9ef90ad5cbb97024c7a9e02 (patch)
tree7ea5788df432765e94c2a4f9a126ec15e9871eb4
parenta572806e76282c250980a56bfd903c843e873f2a (diff)
downloadpdf-as-4-9edd8e334faadcc5e9ef90ad5cbb97024c7a9e02.tar.gz
pdf-as-4-9edd8e334faadcc5e9ef90ad5cbb97024c7a9e02.tar.bz2
pdf-as-4-9edd8e334faadcc5e9ef90ad5cbb97024c7a9e02.zip
allow external configuration of PDF-AS
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java176
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java7
-rw-r--r--pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java4
3 files changed, 112 insertions, 75 deletions
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java
index 7f8f7e62..1e28ad7a 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/api/PdfAsFactory.java
@@ -23,13 +23,9 @@
******************************************************************************/
package at.gv.egiz.pdfas.lib.api;
-import iaik.cms.ecc.ECCelerateProvider;
import iaik.security.ec.provider.ECCelerate;
import iaik.security.provider.IAIK;
-import java.security.Provider;
-import java.security.Security;
-
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -37,6 +33,8 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.security.Provider;
+import java.security.Security;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -45,6 +43,7 @@ import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.gv.egiz.pdfas.common.settings.ISettings;
import at.gv.egiz.pdfas.lib.api.sign.SignParameter;
import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter;
import at.gv.egiz.pdfas.lib.impl.PdfAsImpl;
@@ -70,7 +69,7 @@ public class PdfAsFactory {
if (Security.getProvider(name) == null) {
// register IAIK provider at first position
try {
- if(position < 0) {
+ if (position < 0) {
// add provider add default position.
Security.addProvider(provider);
} else {
@@ -85,12 +84,13 @@ public class PdfAsFactory {
}
}
-
+
protected static void listRegisteredSecurityProviders() {
Provider[] providers = Security.getProviders();
logger.debug("Registered Security Providers:");
- for(int i = 0; i < providers.length; i++) {
- logger.debug(" {}: {} => {}", i, providers[i].getName(), providers[i].getInfo());
+ for (int i = 0; i < providers.length; i++) {
+ logger.debug(" {}: {} => {}", i, providers[i].getName(),
+ providers[i].getInfo());
}
}
@@ -99,8 +99,8 @@ public class PdfAsFactory {
* PropertyConfigurator.configure(ClassLoader
* .getSystemResourceAsStream("resources/log4j.properties"));
*/
- //IAIK.addAsProvider();
- //ECCelerate.addAsProvider();
+ // IAIK.addAsProvider();
+ // ECCelerate.addAsProvider();
registerProvider(new IAIK(), 1);
registerProvider(new ECCelerate(), -1);
@@ -125,85 +125,117 @@ public class PdfAsFactory {
}
/**
- * Create a new instance of PDF-AS
- *
- * @param configuration
- * The PDF-AS configuration
- * @return
+ * Configure log.
+ *
+ * @param configuration the configuration
*/
- public static PdfAs createPdfAs(File configuration) {
+ private static void configureLog(File configuration) {
if (!log_configured) {
- synchronized (log_mutex) {
- if (!log_configured) {
- if (System.getProperty(DEFAULT_LOG4J_ENV) != null) {
- String file = System.getProperty(DEFAULT_LOG4J_ENV);
- File log4j = new File(file);
- System.out.println("Configuring logging with: "
- + log4j.getAbsolutePath());
- logger.info("Loading log4j configuration: "
+ if (System.getProperty(DEFAULT_LOG4J_ENV) != null) {
+ String file = System.getProperty(DEFAULT_LOG4J_ENV);
+ File log4j = new File(file);
+ System.out.println("Configuring logging with: "
+ + log4j.getAbsolutePath());
+ logger.info("Loading log4j configuration: "
+ + log4j.getAbsolutePath());
+ if (log4j.exists()) {
+ try {
+ //if (configuration != null) {
+ // System.setProperty("pdf-as.work-dir",
+ // configuration.getAbsolutePath());
+ //}
+ PropertyConfigurator.configure(new FileInputStream(
+ log4j));
+ logger.info("Configured Log4j with: "
+ log4j.getAbsolutePath());
- if (log4j.exists()) {
- try {
- System.setProperty("pdf-as.work-dir",
- configuration.getAbsolutePath());
- PropertyConfigurator
- .configure(new FileInputStream(log4j));
- logger.info("Configured Log4j with: "
- + log4j.getAbsolutePath());
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- System.err
- .println("Failed to initialize logging System. Defaulting to basic configuration!");
- BasicConfigurator.configure();
- }
- } else {
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ System.err
+ .println("Failed to initialize logging System. Defaulting to basic configuration!");
+ BasicConfigurator.configure();
+ }
+ } else {
+ System.err
+ .println("Log4j File: "
+ + log4j.getAbsolutePath()
+ + " does not exist! Defaulting to basic configuration!");
+ BasicConfigurator.configure();
+ }
+ } else {
+ if (configuration != null) {
+ File log4j = new File(configuration.getAbsolutePath()
+ + File.separator + "cfg" + File.separator
+ + "log4j.properties");
+ System.out.println("Configuring logging with: "
+ + log4j.getAbsolutePath());
+ logger.info("Loading log4j configuration: "
+ + log4j.getAbsolutePath());
+ if (log4j.exists()) {
+ try {
+ //System.setProperty("pdf-as.work-dir",
+ // configuration.getAbsolutePath());
+ PropertyConfigurator.configure(new FileInputStream(
+ log4j));
+ logger.info("Configured Log4j with: "
+ + log4j.getAbsolutePath());
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
System.err
- .println("Log4j File: "
- + log4j.getAbsolutePath()
- + " does not exist! Defaulting to basic configuration!");
+ .println("Failed to initialize logging System. Defaulting to basic configuration!");
BasicConfigurator.configure();
}
} else {
- File log4j = new File(configuration.getAbsolutePath()
- + File.separator + "cfg" + File.separator
- + "log4j.properties");
- System.out.println("Configuring logging with: "
- + log4j.getAbsolutePath());
- logger.info("Loading log4j configuration: "
- + log4j.getAbsolutePath());
- if (log4j.exists()) {
- try {
- System.setProperty("pdf-as.work-dir",
- configuration.getAbsolutePath());
- PropertyConfigurator
- .configure(new FileInputStream(log4j));
- logger.info("Configured Log4j with: "
- + log4j.getAbsolutePath());
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- System.err
- .println("Failed to initialize logging System. Defaulting to basic configuration!");
- BasicConfigurator.configure();
- }
- } else {
- System.err
- .println("Log4j File: "
- + log4j.getAbsolutePath()
- + " does not exist! Defaulting to basic configuration!");
- BasicConfigurator.configure();
- }
+ System.err
+ .println("Log4j File: "
+ + log4j.getAbsolutePath()
+ + " does not exist! Defaulting to basic configuration!");
+ BasicConfigurator.configure();
}
- log_configured = true;
- listRegisteredSecurityProviders();
+ } else {
+ System.err.println("Failed to initialize logging System. Defaulting to basic configuration!");
+ BasicConfigurator.configure();
}
}
+ log_configured = true;
+ listRegisteredSecurityProviders();
+ }
+ }
+
+ /**
+ * Create a new instance of PDF-AS
+ *
+ * @param configuration
+ * The PDF-AS configuration
+ * @return
+ */
+ public static PdfAs createPdfAs(File configuration) {
+ if (!log_configured) {
+ synchronized (log_mutex) {
+ configureLog(configuration);
+ }
}
return new PdfAsImpl(configuration);
}
/**
+ * Creates a new PdfAs object.
+ *
+ * @param settings the settings
+ * @return the pdf as
+ */
+ public static PdfAs createPdfAs(ISettings settings) {
+ if (!log_configured) {
+ synchronized (log_mutex) {
+ configureLog(null);
+ }
+ }
+
+ return new PdfAsImpl(settings);
+ }
+
+ /**
* Creates a sign parameter
*
* @param configuration
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
index dcf1887a..7fe39ff7 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/PdfAsImpl.java
@@ -94,12 +94,17 @@ public class PdfAsImpl implements PdfAs, IConfigurationConstants {
private static final Logger logger = LoggerFactory
.getLogger(PdfAsImpl.class);
- private Settings settings;
+ private ISettings settings;
public PdfAsImpl(File cfgFile) {
logger.info("Initializing PDF-AS with config: " + cfgFile.getPath());
this.settings = new Settings(cfgFile);
}
+
+ public PdfAsImpl(ISettings cfgObject) {
+ logger.info("Initializing PDF-AS with config: " + cfgObject.getClass().getName());
+ this.settings = cfgObject;
+ }
private void verifySignParameter(SignParameter parameter)
throws PdfAsException {
diff --git a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java
index a553fcd3..60c5683a 100644
--- a/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java
+++ b/pdf-as-lib/src/main/java/at/gv/egiz/pdfas/lib/impl/configuration/ConfigurationImpl.java
@@ -37,9 +37,9 @@ public class ConfigurationImpl implements ISettings, Configuration {
protected Properties overwrittenProperties = new Properties();
- protected Settings settings;
+ protected ISettings settings;
- public ConfigurationImpl(Settings settings) {
+ public ConfigurationImpl(ISettings settings) {
this.settings = settings;
}