< prev index next >
src/jdk.jartool/share/classes/sun/security/tools/jarsigner/Main.java
Print this page
rev 15253 : 8130302: jarsigner and keytool -providerClass needs be re-examined for modules
*** 116,126 ****
List<String> ckaliases = new ArrayList<>(); // aliases in -verify
char[] storepass; // keystore password
boolean protectedPath; // protected authentication path
String storetype; // keystore type
String providerName; // provider name
! Vector<String> providers = null; // list of providers
// arguments for provider constructors
HashMap<String,String> providerArgs = new HashMap<>();
char[] keypass; // private key password
String sigfile; // name of .SF file
String sigalg; // name of signature algorithm
--- 116,127 ----
List<String> ckaliases = new ArrayList<>(); // aliases in -verify
char[] storepass; // keystore password
boolean protectedPath; // protected authentication path
String storetype; // keystore type
String providerName; // provider name
! List<String> providers = null; // list of provider names
! List<String> providerClasses = null; // list of provider classes
// arguments for provider constructors
HashMap<String,String> providerArgs = new HashMap<>();
char[] keypass; // private key password
String sigfile; // name of .SF file
String sigalg; // name of signature algorithm
*** 171,206 ****
public void run(String args[]) {
try {
args = parseArgs(args);
// Try to load and install the specified providers
if (providers != null) {
ClassLoader cl = ClassLoader.getSystemClassLoader();
! Enumeration<String> e = providers.elements();
! while (e.hasMoreElements()) {
! String provName = e.nextElement();
! Class<?> provClass;
! if (cl != null) {
! provClass = cl.loadClass(provName);
! } else {
! provClass = Class.forName(provName);
}
!
! Object obj = provClass.newInstance();
! if (!(obj instanceof Provider)) {
MessageFormat form = new MessageFormat(rb.getString
("provName.not.a.provider"));
! Object[] source = {provName};
! throw new Exception(form.format(source));
! }
! Provider p = (Provider) obj;
! String provArg = providerArgs.get(provName);
! if (provArg != null) {
! p = p.configure(provArg);
! }
! Security.addProvider(p);
}
}
if (verify) {
try {
loadKeyStore(keystore, false);
--- 172,204 ----
public void run(String args[]) {
try {
args = parseArgs(args);
// Try to load and install the specified providers
+ try {
if (providers != null) {
+ for (String provName: providers) {
+ KeyStoreUtil.loadProviderByName(provName,
+ providerArgs.get(provName), debug);
+ }
+ }
+ if (providerClasses != null) {
ClassLoader cl = ClassLoader.getSystemClassLoader();
! for (String provClass: providerClasses) {
! KeyStoreUtil.loadProviderByClass(provClass,
! providerArgs.get(provClass), cl, debug);
}
! }
! } catch (IllegalArgumentException e) {
MessageFormat form = new MessageFormat(rb.getString
("provName.not.a.provider"));
! Object[] source = {e.getMessage()};
! Exception ex = new Exception(form.format(source));
! if (e.getCause() != null) {
! ex.initCause(e.getCause());
}
+ throw ex;
}
if (verify) {
try {
loadKeyStore(keystore, false);
*** 333,347 ****
if (++n == args.length) usageNoArg();
storetype = args[n];
} else if (collator.compare(flags, "-providerName") ==0) {
if (++n == args.length) usageNoArg();
providerName = args[n];
! } else if ((collator.compare(flags, "-provider") == 0) ||
! (collator.compare(flags, "-providerClass") == 0)) {
if (++n == args.length) usageNoArg();
if (providers == null) {
! providers = new Vector<String>(3);
}
providers.add(args[n]);
if (args.length > (n+1)) {
flags = args[n+1];
--- 331,344 ----
if (++n == args.length) usageNoArg();
storetype = args[n];
} else if (collator.compare(flags, "-providerName") ==0) {
if (++n == args.length) usageNoArg();
providerName = args[n];
! } else if (collator.compare(flags, "-provider") == 0) {
if (++n == args.length) usageNoArg();
if (providers == null) {
! providers = new ArrayList<>(3);
}
providers.add(args[n]);
if (args.length > (n+1)) {
flags = args[n+1];
*** 349,358 ****
--- 346,370 ----
if (args.length == (n+2)) usageNoArg();
providerArgs.put(args[n], args[n+2]);
n += 2;
}
}
+ } else if (collator.compare(flags, "-providerClass") == 0) {
+ if (++n == args.length) usageNoArg();
+ if (providerClasses == null) {
+ providerClasses = new ArrayList<>(3);
+ }
+ providerClasses.add(args[n]);
+
+ if (args.length > (n+1)) {
+ flags = args[n+1];
+ if (collator.compare(flags, "-providerArg") == 0) {
+ if (args.length == (n+2)) usageNoArg();
+ providerArgs.put(args[n], args[n+2]);
+ n += 2;
+ }
+ }
} else if (collator.compare(flags, "-protected") ==0) {
protectedPath = true;
} else if (collator.compare(flags, "-certchain") ==0) {
if (++n == args.length) usageNoArg();
altCertChain = args[n];
*** 582,594 ****
System.out.println();
System.out.println(rb.getString
(".providerName.name.provider.name"));
System.out.println();
System.out.println(rb.getString
! (".providerClass.class.name.of.cryptographic.service.provider.s"));
System.out.println(rb.getString
! (".providerArg.arg.master.class.file.and.constructor.argument"));
System.out.println();
System.out.println(rb.getString
(".strict.treat.warnings.as.errors"));
System.out.println();
System.out.println(rb.getString
--- 594,611 ----
System.out.println();
System.out.println(rb.getString
(".providerName.name.provider.name"));
System.out.println();
System.out.println(rb.getString
! (".provider.option"));
! System.out.println(rb.getString
! (".providerArg.option.1"));
! System.out.println();
! System.out.println(rb.getString
! (".providerClass.option"));
System.out.println(rb.getString
! (".providerArg.option.2"));
System.out.println();
System.out.println(rb.getString
(".strict.treat.warnings.as.errors"));
System.out.println();
System.out.println(rb.getString
< prev index next >