mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8192987: keytool should remember real storetype if it is not provided
Reviewed-by: mullan
This commit is contained in:
parent
7604d1d515
commit
67205081ec
3 changed files with 88 additions and 26 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 2017, 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
|
||||
|
@ -93,8 +93,9 @@ public class KeyStoreUtil {
|
|||
* MSCAPI KeyStores
|
||||
*/
|
||||
public static boolean isWindowsKeyStore(String storetype) {
|
||||
return storetype.equalsIgnoreCase("Windows-MY")
|
||||
|| storetype.equalsIgnoreCase("Windows-ROOT");
|
||||
return storetype != null
|
||||
&& (storetype.equalsIgnoreCase("Windows-MY")
|
||||
|| storetype.equalsIgnoreCase("Windows-ROOT"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -134,8 +134,6 @@ public final class Main {
|
|||
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;
|
||||
|
@ -549,14 +547,12 @@ public final class Main {
|
|||
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);
|
||||
|
@ -708,16 +704,6 @@ public final class Main {
|
|||
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;
|
||||
|
@ -742,11 +728,6 @@ public final class Main {
|
|||
(".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));
|
||||
|
@ -923,9 +904,13 @@ public final class Main {
|
|||
// Create new keystore
|
||||
// Probe for keystore type when filename is available
|
||||
if (ksfile != null && ksStream != null && providerName == null &&
|
||||
hasStoretypeOption == false && !inplaceImport) {
|
||||
storetype == null && !inplaceImport) {
|
||||
keyStore = KeyStore.getInstance(ksfile, storePass);
|
||||
storetype = keyStore.getType();
|
||||
} else {
|
||||
if (storetype == null) {
|
||||
storetype = KeyStore.getDefaultType();
|
||||
}
|
||||
if (providerName == null) {
|
||||
keyStore = KeyStore.getInstance(storetype);
|
||||
} else {
|
||||
|
@ -964,6 +949,11 @@ public final class Main {
|
|||
}
|
||||
}
|
||||
|
||||
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.
|
||||
|
||||
|
@ -2123,9 +2113,13 @@ public final class Main {
|
|||
try {
|
||||
// Probe for keystore type when filename is available
|
||||
if (srcksfile != null && is != null && srcProviderName == null &&
|
||||
hasSrcStoretypeOption == false) {
|
||||
srcstoretype == null) {
|
||||
store = KeyStore.getInstance(srcksfile, srcstorePass);
|
||||
srcstoretype = store.getType();
|
||||
} else {
|
||||
if (srcstoretype == null) {
|
||||
srcstoretype = KeyStore.getDefaultType();
|
||||
}
|
||||
if (srcProviderName == null) {
|
||||
store = KeyStore.getInstance(srcstoretype);
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue