src/jdk.deploy.osx/macosx/classes/apple/security/AppleProvider.java

Print this page
7191662: JCE providers should be located via ServiceLoader

*** 1,7 **** /* ! * Copyright (c) 2011, 2014, 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 --- 1,7 ---- /* ! * Copyright (c) 2011, 2015, 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
*** 39,60 **** @SuppressWarnings("serial") // JDK implementation class public final class AppleProvider extends Provider { private static final String info = "Apple Provider"; public AppleProvider() { /* We are the Apple provider */ super("Apple", 1.9d, info); ! AccessController.<Object>doPrivileged(new java.security.PrivilegedAction<Object>() { ! public Object run() { ! ! /* ! * KeyStore ! */ ! put("KeyStore.KeychainStore", "apple.security.KeychainStore"); ! return null; } }); } } --- 39,88 ---- @SuppressWarnings("serial") // JDK implementation class public final class AppleProvider extends Provider { private static final String info = "Apple Provider"; + private static final class ProviderService extends Provider.Service { + ProviderService(Provider p, String type, String algo, String cn) { + super(p, type, algo, cn, null, null); + } + + @Override + public Object newInstance(Object ctrParamObj) + throws NoSuchAlgorithmException { + String type = getType(); + if (ctrParamObj != null) { + throw new InvalidParameterException + ("constructorParameter not used with " + type + " engines"); + } + + String algo = getAlgorithm(); + try { + if (type.equals("KeyStore")) { + if (algo.equals("KeychainStore")) { + return new KeychainStore(); + } + } + } catch (Exception ex) { + throw new NoSuchAlgorithmException("Error constructing " + + type + " for " + algo + " using Apple", ex); + } + throw new ProviderException("No impl for " + algo + + " " + type); + } + } + + public AppleProvider() { /* We are the Apple provider */ super("Apple", 1.9d, info); ! final Provider p = this; ! AccessController.doPrivileged(new PrivilegedAction<Void>() { ! public Void run() { ! putService(new ProviderService(p, "KeyStore", ! "KeychainStore", "apple.security.KeychainStore")); return null; } }); } }