24 */
25
26 package sun.security.ssl;
27
28 import sun.security.action.GetPropertyAction;
29
30 import java.io.File;
31 import java.io.FilePermission;
32 import java.io.IOException;
33 import java.security.AccessControlContext;
34 import java.security.AccessController;
35 import java.security.Principal;
36 import java.security.PrivilegedAction;
37 import java.security.SecureRandom;
38 import java.util.*;
39
40 /**
41 * Models a service that provides support for a particular client key exchange
42 * mode. Currently used to implement Kerberos-related cipher suites.
43 *
44 * @since 1.9
45 */
46 public interface ClientKeyExchangeService {
47
48 static class Loader {
49 private static final Map<String,ClientKeyExchangeService>
50 providers = new HashMap<>();
51
52 static {
53 final String key = "java.home";
54 String path = AccessController.doPrivileged(
55 new GetPropertyAction(key), null,
56 new PropertyPermission(key, "read"));
57 ServiceLoader<ClientKeyExchangeService> sc =
58 AccessController.doPrivileged(
59 (PrivilegedAction<ServiceLoader<ClientKeyExchangeService>>)
60 () -> ServiceLoader.loadInstalled(ClientKeyExchangeService.class),
61 null,
62 new FilePermission(new File(path, "-").toString(), "read"));
63 Iterator<ClientKeyExchangeService> iter = sc.iterator();
64 while (iter.hasNext()) {
|
24 */
25
26 package sun.security.ssl;
27
28 import sun.security.action.GetPropertyAction;
29
30 import java.io.File;
31 import java.io.FilePermission;
32 import java.io.IOException;
33 import java.security.AccessControlContext;
34 import java.security.AccessController;
35 import java.security.Principal;
36 import java.security.PrivilegedAction;
37 import java.security.SecureRandom;
38 import java.util.*;
39
40 /**
41 * Models a service that provides support for a particular client key exchange
42 * mode. Currently used to implement Kerberos-related cipher suites.
43 *
44 * @since 9
45 */
46 public interface ClientKeyExchangeService {
47
48 static class Loader {
49 private static final Map<String,ClientKeyExchangeService>
50 providers = new HashMap<>();
51
52 static {
53 final String key = "java.home";
54 String path = AccessController.doPrivileged(
55 new GetPropertyAction(key), null,
56 new PropertyPermission(key, "read"));
57 ServiceLoader<ClientKeyExchangeService> sc =
58 AccessController.doPrivileged(
59 (PrivilegedAction<ServiceLoader<ClientKeyExchangeService>>)
60 () -> ServiceLoader.loadInstalled(ClientKeyExchangeService.class),
61 null,
62 new FilePermission(new File(path, "-").toString(), "read"));
63 Iterator<ClientKeyExchangeService> iter = sc.iterator();
64 while (iter.hasNext()) {
|