public static java.security.KeyStore | getKeyStore(java.net.URL policyUrl, java.lang.String keyStoreName, java.lang.String keyStoreType, java.lang.String keyStoreProvider, java.lang.String storePassURL, sun.security.util.Debug debug)this is intended for use by policytool and the policy parser to
instantiate a KeyStore from the information in the GUI/policy file
if (keyStoreName == null) {
throw new IllegalArgumentException("null KeyStore name");
}
char[] keyStorePassword = null;
try {
KeyStore ks;
if (keyStoreType == null) {
keyStoreType = KeyStore.getDefaultType();
}
if (P11KEYSTORE.equalsIgnoreCase(keyStoreType) &&
!NONE.equals(keyStoreName)) {
throw new IllegalArgumentException
("Invalid value (" +
keyStoreName +
") for keystore URL. If the keystore type is \"" +
P11KEYSTORE +
"\", the keystore url must be \"" +
NONE +
"\"");
}
if (keyStoreProvider != null) {
ks = KeyStore.getInstance(keyStoreType, keyStoreProvider);
} else {
ks = KeyStore.getInstance(keyStoreType);
}
if (storePassURL != null) {
URL passURL;
try {
passURL = new URL(storePassURL);
// absolute URL
} catch (MalformedURLException e) {
// relative URL
if (policyUrl == null) {
throw e;
}
passURL = new URL(policyUrl, storePassURL);
}
if (debug != null) {
debug.println("reading password"+passURL);
}
InputStream in = passURL.openStream();
keyStorePassword = Password.readPassword(in);
in.close();
}
if (NONE.equals(keyStoreName)) {
ks.load(null, keyStorePassword);
return ks;
} else {
/*
* location of keystore is specified as absolute URL in policy
* file, or is relative to URL of policy file
*/
URL keyStoreUrl = null;
try {
keyStoreUrl = new URL(keyStoreName);
// absolute URL
} catch (MalformedURLException e) {
// relative URL
if (policyUrl == null) {
throw e;
}
keyStoreUrl = new URL(policyUrl, keyStoreName);
}
if (debug != null) {
debug.println("reading keystore"+keyStoreUrl);
}
InputStream inStream =
new BufferedInputStream(getInputStream(keyStoreUrl));
ks.load(inStream, keyStorePassword);
inStream.close();
return ks;
}
} finally {
if (keyStorePassword != null) {
Arrays.fill(keyStorePassword, ' ");
}
}
|