283 }
284 Security.addProvider(p);
285 return;
286 }
287 }
288 throw new IllegalArgumentException("No provider found");
289 }
290
291 /**
292 * Loads a security provider by a fully-qualified class name.
293 *
294 * @param provClass the class name
295 * @param arg optional arg
296 * @param cl optional class loader
297 * @throws IllegalArgumentException if no provider matches the class name
298 * @throws ClassCastException if the class has not extended Provider
299 */
300 public static void loadProviderByClass(
301 String provClass, String arg, ClassLoader cl) {
302
303 // For compatibility, SunPKCS11, OracleUcrypto, and SunMSCAPI
304 // can still be loadable with -providerClass.
305 if (provClass.equals("sun.security.pkcs11.SunPKCS11")) {
306 loadProviderByName("SunPKCS11", arg);
307 return;
308 } else if (provClass.equals("com.oracle.security.crypto.UcryptoProvider")) {
309 loadProviderByName("OracleUcrypto", arg);
310 return;
311 } else if (provClass.equals("sun.security.mscapi.SunMSCAPI")) {
312 loadProviderByName("SunMSCAPI", arg);
313 return;
314 }
315
316 Provider prov;
317 try {
318 Class<?> clazz = Class.forName(provClass, false, cl);
319 prov = (Provider) clazz.getConstructor().newInstance();
320 } catch (ReflectiveOperationException e) {
321 throw new IllegalArgumentException(e);
322 }
323 if (arg != null) {
324 prov = prov.configure(arg);
325 }
326 Security.addProvider(prov);
327 }
328 }
|
283 }
284 Security.addProvider(p);
285 return;
286 }
287 }
288 throw new IllegalArgumentException("No provider found");
289 }
290
291 /**
292 * Loads a security provider by a fully-qualified class name.
293 *
294 * @param provClass the class name
295 * @param arg optional arg
296 * @param cl optional class loader
297 * @throws IllegalArgumentException if no provider matches the class name
298 * @throws ClassCastException if the class has not extended Provider
299 */
300 public static void loadProviderByClass(
301 String provClass, String arg, ClassLoader cl) {
302
303 // For compatibility, SunPKCS11, and SunMSCAPI
304 // can still be loadable with -providerClass.
305 if (provClass.equals("sun.security.pkcs11.SunPKCS11")) {
306 loadProviderByName("SunPKCS11", arg);
307 return;
308 } else if (provClass.equals("sun.security.mscapi.SunMSCAPI")) {
309 loadProviderByName("SunMSCAPI", arg);
310 return;
311 }
312
313 Provider prov;
314 try {
315 Class<?> clazz = Class.forName(provClass, false, cl);
316 prov = (Provider) clazz.getConstructor().newInstance();
317 } catch (ReflectiveOperationException e) {
318 throw new IllegalArgumentException(e);
319 }
320 if (arg != null) {
321 prov = prov.configure(arg);
322 }
323 Security.addProvider(prov);
324 }
325 }
|