< prev index next >
src/java.base/share/classes/sun/security/tools/keytool/Main.java
Print this page
rev 48074 : 8192987: keytool should remember real storetype if it is not provided
@@ -132,12 +132,10 @@
// them through the command line.
private Set<Pair <String, String>> providers = null;
private Set<Pair <String, String>> providerClasses = null;
private String storetype = null;
- private boolean hasStoretypeOption = false;
- private boolean hasSrcStoretypeOption = false;
private String srcProviderName = null;
private String providerName = null;
private String pathlist = null;
private char[] storePass = null;
private char[] storePassNew = null;
@@ -547,18 +545,16 @@
collator.compare(flags, "-deststorepass") == 0) {
storePass = getPass(modifier, args[++i]);
passwords.add(storePass);
} else if (collator.compare(flags, "-storetype") == 0 ||
collator.compare(flags, "-deststoretype") == 0) {
- storetype = args[++i];
- hasStoretypeOption = true;
+ storetype = KeyStoreUtil.niceStoreTypeName(args[++i]);
} else if (collator.compare(flags, "-srcstorepass") == 0) {
srcstorePass = getPass(modifier, args[++i]);
passwords.add(srcstorePass);
} else if (collator.compare(flags, "-srcstoretype") == 0) {
- srcstoretype = args[++i];
- hasSrcStoretypeOption = true;
+ srcstoretype = KeyStoreUtil.niceStoreTypeName(args[++i]);
} else if (collator.compare(flags, "-srckeypass") == 0) {
srckeyPass = getPass(modifier, args[++i]);
passwords.add(srckeyPass);
} else if (collator.compare(flags, "-srcprovidername") == 0) {
srcProviderName = args[++i];
@@ -706,20 +702,10 @@
("the.keystore.or.storetype.option.cannot.be.used.with.the.cacerts.option"));
}
ksfname = KeyStoreUtil.getCacerts();
}
- if (storetype == null) {
- storetype = KeyStore.getDefaultType();
- }
- storetype = KeyStoreUtil.niceStoreTypeName(storetype);
-
- if (srcstoretype == null) {
- srcstoretype = KeyStore.getDefaultType();
- }
- srcstoretype = KeyStoreUtil.niceStoreTypeName(srcstoretype);
-
if (P11KEYSTORE.equalsIgnoreCase(storetype) ||
KeyStoreUtil.isWindowsKeyStore(storetype)) {
token = true;
if (ksfname == null) {
ksfname = NONE;
@@ -740,15 +726,10 @@
(command == KEYPASSWD || command == STOREPASSWD)) {
throw new UnsupportedOperationException(MessageFormat.format(rb.getString
(".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}"), storetype));
}
- if (P12KEYSTORE.equalsIgnoreCase(storetype) && command == KEYPASSWD) {
- throw new UnsupportedOperationException(rb.getString
- (".keypasswd.commands.not.supported.if.storetype.is.PKCS12"));
- }
-
if (token && (keyPass != null || newPass != null || destKeyPass != null)) {
throw new IllegalArgumentException(MessageFormat.format(rb.getString
(".keypass.and.new.can.not.be.specified.if.storetype.is.{0}"), storetype));
}
@@ -921,13 +902,17 @@
}
// Create new keystore
// Probe for keystore type when filename is available
if (ksfile != null && ksStream != null && providerName == null &&
- hasStoretypeOption == false && !inplaceImport) {
+ !inplaceImport) {
keyStore = KeyStore.getInstance(ksfile, storePass);
+ storetype = keyStore.getType();
} else {
+ if (storetype == null) {
+ storetype = KeyStore.getDefaultType();
+ }
if (providerName == null) {
keyStore = KeyStore.getInstance(storetype);
} else {
keyStore = KeyStore.getInstance(storetype, providerName);
}
@@ -962,10 +947,15 @@
ksStream.close();
}
}
}
+ if (P12KEYSTORE.equalsIgnoreCase(storetype) && command == KEYPASSWD) {
+ throw new UnsupportedOperationException(rb.getString
+ (".keypasswd.commands.not.supported.if.storetype.is.PKCS12"));
+ }
+
// All commands that create or modify the keystore require a keystore
// password.
if (nullStream && storePass != null) {
keyStore.load(null, storePass);
@@ -2120,14 +2110,17 @@
}
KeyStore store;
try {
// Probe for keystore type when filename is available
- if (srcksfile != null && is != null && srcProviderName == null &&
- hasSrcStoretypeOption == false) {
+ if (srcksfile != null && is != null && srcProviderName == null) {
store = KeyStore.getInstance(srcksfile, srcstorePass);
+ srcstoretype = store.getType();
} else {
+ if (srcstoretype == null) {
+ srcstoretype = KeyStore.getDefaultType();
+ }
if (srcProviderName == null) {
store = KeyStore.getInstance(srcstoretype);
} else {
store = KeyStore.getInstance(srcstoretype, srcProviderName);
}
< prev index next >