aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-10-03 10:19:29 +0200
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-10-03 10:19:29 +0200
commitec95a4a9d7aec5d978881719c1bd19d6df4540e5 (patch)
tree420f9ab30e255f40945f9f020c3a6fd52175832e
parent6aabd24f0e39338b63402dd59b006c05997b2658 (diff)
downloadpdf-as-3-ec95a4a9d7aec5d978881719c1bd19d6df4540e5.tar.gz
pdf-as-3-ec95a4a9d7aec5d978881719c1bd19d6df4540e5.tar.bz2
pdf-as-3-ec95a4a9d7aec5d978881719c1bd19d6df4540e5.zip
Register IAIK Providers order
-rw-r--r--pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java33
1 files changed, 31 insertions, 2 deletions
diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java
index 832f952..7473590 100644
--- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java
+++ b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java
@@ -35,6 +35,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
+import java.security.Provider;
import java.security.Security;
import java.util.ArrayList;
import java.util.Enumeration;
@@ -426,8 +427,8 @@ public class SettingsReader implements Serializable
logger_.info(StringUtils.repeat("*", length + 25));
if (registerProvider) {
- IAIK.addAsProvider();
- ECCProvider.addAsProvider();
+ registerProvider(new IAIK(), 1);
+ registerProvider(new ECCProvider(), 2);
} else {
if (Security.getProvider("IAIK") == null) {
logger_.debug("Default IAIK JCE provider not registered.");
@@ -905,6 +906,34 @@ public class SettingsReader implements Serializable
logger_.info("PDF-AS info\n" + paddingString + "\n" + versionString + "\n" + paddingString);
}
+ protected static void registerProvider(Provider provider, int position) {
+ String name = provider.getName();
+ if (Security.getProvider(name) == null) {
+ // register IAIK provider at first position
+ try {
+ if (position < 0) {
+ // add provider add default position.
+ Security.addProvider(provider);
+ } else {
+ Security.insertProviderAt(provider, position);
+ }
+ } catch (SecurityException e) {
+ logger_.info("Failed to register required security Provider.", e);
+ }
+ } else {
+ logger_.info("Required security Provider " + name + " already registered.");
+ }
+
+ }
+
+ 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());
+ }
+ }
+
public Properties getProperties() {
return this.properties_;
}