75 lines
4.0 KiB
Diff
75 lines
4.0 KiB
Diff
|
# HG changeset patch
|
||
|
# User andrew
|
||
|
# Date 1352129932 0
|
||
|
# Node ID e9c857dcb964dbfa5eef3a3590244cb4d999cf7a
|
||
|
# Parent 1406789608b76d0906881979335d685855f44190
|
||
|
Allow multiple PKCS11 library initialisation to be a non-critical error.
|
||
|
|
||
|
diff -r 1406789608b7 -r e9c857dcb964 src/share/classes/sun/security/pkcs11/Config.java
|
||
|
--- jdk9/jdk/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java Tue Oct 30 13:05:14 2012 +0000
|
||
|
+++ jdk9/jdk/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/Config.java Mon Nov 05 15:38:52 2012 +0000
|
||
|
@@ -52,6 +52,7 @@
|
||
|
static final int ERR_HALT = 1;
|
||
|
static final int ERR_IGNORE_ALL = 2;
|
||
|
static final int ERR_IGNORE_LIB = 3;
|
||
|
+ static final int ERR_IGNORE_MULTI_INIT = 4;
|
||
|
|
||
|
// same as allowSingleThreadedModules but controlled via a system property
|
||
|
// and applied to all providers. if set to false, no SunPKCS11 instances
|
||
|
@@ -980,6 +981,8 @@
|
||
|
handleStartupErrors = ERR_IGNORE_LIB;
|
||
|
} else if (val.equals("halt")) {
|
||
|
handleStartupErrors = ERR_HALT;
|
||
|
+ } else if (val.equals("ignoreMultipleInitialisation")) {
|
||
|
+ handleStartupErrors = ERR_IGNORE_MULTI_INIT;
|
||
|
} else {
|
||
|
throw excToken("Invalid value for handleStartupErrors:");
|
||
|
}
|
||
|
diff -r 1406789608b7 -r e9c857dcb964 src/share/classes/sun/security/pkcs11/SunPKCS11.java
|
||
|
--- jdk9/jdk/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java Tue Oct 30 13:05:14 2012 +0000
|
||
|
+++ jdk9/jdk/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/SunPKCS11.java Mon Nov 05 15:38:52 2012 +0000
|
||
|
@@ -168,26 +168,37 @@
|
||
|
String nssLibraryDirectory = config.getNssLibraryDirectory();
|
||
|
String nssSecmodDirectory = config.getNssSecmodDirectory();
|
||
|
boolean nssOptimizeSpace = config.getNssOptimizeSpace();
|
||
|
+ int errorHandling = config.getHandleStartupErrors();
|
||
|
|
||
|
if (secmod.isInitialized()) {
|
||
|
if (nssSecmodDirectory != null) {
|
||
|
String s = secmod.getConfigDir();
|
||
|
if ((s != null) &&
|
||
|
(s.equals(nssSecmodDirectory) == false)) {
|
||
|
- throw new ProviderException("Secmod directory "
|
||
|
- + nssSecmodDirectory
|
||
|
- + " invalid, NSS already initialized with "
|
||
|
- + s);
|
||
|
+ String msg = "Secmod directory " + nssSecmodDirectory
|
||
|
+ + " invalid, NSS already initialized with " + s;
|
||
|
+ if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
|
||
|
+ errorHandling == Config.ERR_IGNORE_ALL) {
|
||
|
+ throw new UnsupportedOperationException(msg);
|
||
|
+ } else {
|
||
|
+ throw new ProviderException(msg);
|
||
|
+ }
|
||
|
}
|
||
|
}
|
||
|
if (nssLibraryDirectory != null) {
|
||
|
String s = secmod.getLibDir();
|
||
|
if ((s != null) &&
|
||
|
(s.equals(nssLibraryDirectory) == false)) {
|
||
|
- throw new ProviderException("NSS library directory "
|
||
|
+ String msg = "NSS library directory "
|
||
|
+ nssLibraryDirectory
|
||
|
+ " invalid, NSS already initialized with "
|
||
|
- + s);
|
||
|
+ + s;
|
||
|
+ if (errorHandling == Config.ERR_IGNORE_MULTI_INIT ||
|
||
|
+ errorHandling == Config.ERR_IGNORE_ALL) {
|
||
|
+ throw new UnsupportedOperationException(msg);
|
||
|
+ } else {
|
||
|
+ throw new ProviderException(msg);
|
||
|
+ }
|
||
|
}
|
||
|
}
|
||
|
} else {
|