1 /*
2 * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
24 */
25
26 package apple.security;
27
28 import java.security.*;
29
30 /**
31 * The Apple Security Provider.
32 */
33
34 /**
35 * Defines the Apple provider.
36 *
37 * This provider only exists to provide access to the Apple keychain-based KeyStore implementation
38 */
39 @SuppressWarnings("serial") // JDK implementation class
40 public final class AppleProvider extends Provider {
41
42 private static final String info = "Apple Provider";
43
44 public AppleProvider() {
45 /* We are the Apple provider */
46 super("Apple", 1.9d, info);
47
48 AccessController.<Object>doPrivileged(new java.security.PrivilegedAction<Object>() {
49 public Object run() {
50
51 /*
52 * KeyStore
53 */
54 put("KeyStore.KeychainStore", "apple.security.KeychainStore");
55
56 return null;
57 }
58 });
59 }
60 }
|
1 /*
2 * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
24 */
25
26 package apple.security;
27
28 import java.security.*;
29
30 /**
31 * The Apple Security Provider.
32 */
33
34 /**
35 * Defines the Apple provider.
36 *
37 * This provider only exists to provide access to the Apple keychain-based KeyStore implementation
38 */
39 @SuppressWarnings("serial") // JDK implementation class
40 public final class AppleProvider extends Provider {
41
42 private static final String info = "Apple Provider";
43
44 private static final class ProviderService extends Provider.Service {
45 ProviderService(Provider p, String type, String algo, String cn) {
46 super(p, type, algo, cn, null, null);
47 }
48
49 @Override
50 public Object newInstance(Object ctrParamObj)
51 throws NoSuchAlgorithmException {
52 String type = getType();
53 if (ctrParamObj != null) {
54 throw new InvalidParameterException
55 ("constructorParameter not used with " + type + " engines");
56 }
57
58 String algo = getAlgorithm();
59 try {
60 if (type.equals("KeyStore")) {
61 if (algo.equals("KeychainStore")) {
62 return new KeychainStore();
63 }
64 }
65 } catch (Exception ex) {
66 throw new NoSuchAlgorithmException("Error constructing " +
67 type + " for " + algo + " using SunSASL", ex);
68 }
69 throw new ProviderException("No impl for " + algo +
70 " " + type);
71 }
72 }
73
74
75 public AppleProvider() {
76 /* We are the Apple provider */
77 super("Apple", 1.9d, info);
78
79 final Provider p = this;
80 AccessController.doPrivileged(new PrivilegedAction<Void>() {
81 public Void run() {
82 putService(new ProviderService(p, "KeyStore",
83 "KeychainStore", "apple.security.KeychainStore"));
84 return null;
85 }
86 });
87 }
88 }
|