< prev index next >
src/share/classes/sun/security/tools/KeyStoreUtil.java
Print this page
rev 1513 : 7194449: String resources for Key Tool and Policy Tool should be in their respective packages
Reviewed-by: alanb, weijun, mullan
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -23,29 +23,40 @@
* questions.
*/
package sun.security.tools;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import java.net.URL;
+
+import java.security.KeyStore;
+
+import java.text.Collator;
+
/**
* <p> This class provides several utilities to <code>KeyStore</code>.
*
* @since 1.6.0
*/
public class KeyStoreUtil {
- // Class and methods marked as public so that they can be
- // accessed by JarSigner, which although lies in a package
- // with the same name, but bundled in tools.jar and loaded
- // by another class loader, hence in a different *runtime*
- // package.
- //
- // See JVM Spec, 5.3 and 5.4.4
-
private KeyStoreUtil() {
// this class is not meant to be instantiated
}
+ private static final String JKS = "jks";
+
+ private static final Collator collator = Collator.getInstance();
+ static {
+ // this is for case insensitive string comparisons
+ collator.setStrength(Collator.PRIMARY);
+ };
/**
* Returns true if KeyStore has a password. This is true except for
* MSCAPI KeyStores
*/
@@ -64,6 +75,84 @@
return "Windows-ROOT";
} else {
return storetype.toUpperCase();
}
}
+
+ /**
+ * Returns the keystore with the configured CA certificates.
+ */
+ public static KeyStore getCacertsKeyStore()
+ throws Exception
+ {
+ String sep = File.separator;
+ File file = new File(System.getProperty("java.home") + sep
+ + "lib" + sep + "security" + sep
+ + "cacerts");
+ if (!file.exists()) {
+ return null;
+ }
+ FileInputStream fis = null;
+ KeyStore caks = null;
+ try {
+ fis = new FileInputStream(file);
+ caks = KeyStore.getInstance(JKS);
+ caks.load(fis, null);
+ } finally {
+ if (fis != null) { fis.close(); }
+ }
+ return caks;
+ }
+
+ public static char[] getPassWithModifier(String modifier, String arg,
+ java.util.ResourceBundle rb) {
+ if (modifier == null) {
+ return arg.toCharArray();
+ } else if (collator.compare(modifier, "env") == 0) {
+ String value = System.getenv(arg);
+ if (value == null) {
+ System.err.println(rb.getString(
+ "Cannot.find.environment.variable.") + arg);
+ return null;
+ } else {
+ return value.toCharArray();
+ }
+ } else if (collator.compare(modifier, "file") == 0) {
+ try {
+ URL url = null;
+ try {
+ url = new URL(arg);
+ } catch (java.net.MalformedURLException mue) {
+ File f = new File(arg);
+ if (f.exists()) {
+ url = f.toURI().toURL();
+ } else {
+ System.err.println(rb.getString(
+ "Cannot.find.file.") + arg);
+ return null;
+ }
+ }
+
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new InputStreamReader(url.openStream()));
+ String value = br.readLine();
+
+ if (value == null) {
+ return new char[0];
+ }
+
+ return value.toCharArray();
+ } finally {
+ if (br != null) { br.close(); }
+ }
+ } catch (IOException ioe) {
+ System.err.println(ioe);
+ return null;
+ }
+ } else {
+ System.err.println(rb.getString("Unknown.password.type.") +
+ modifier);
+ return null;
+ }
+ }
}
< prev index next >