Method from javax.net.ssl.SSLSocketFactory Detail: |
abstract public Socket createSocket(Socket s,
String host,
int port,
boolean autoClose) throws IOException
Returns a socket layered over an existing socket connected to the named
host, at the given port. This constructor can be used when tunneling SSL
through a proxy or when negotiating the use of SSL over an existing
socket. The host and port refer to the logical peer destination.
This socket is configured using the socket options established for
this factory. |
public static synchronized SocketFactory getDefault() {
if (theFactory != null) {
return theFactory;
}
if (propertyChecked == false) {
propertyChecked = true;
String clsName = getSecurityProperty("ssl.SocketFactory.provider");
if (clsName != null) {
log("setting up default SSLSocketFactory");
try {
Class cls = null;
try {
cls = Class.forName(clsName);
} catch (ClassNotFoundException e) {
ClassLoader cl = ClassLoader.getSystemClassLoader();
if (cl != null) {
cls = cl.loadClass(clsName);
}
}
log("class " + clsName + " is loaded");
SSLSocketFactory fac = (SSLSocketFactory)cls.newInstance();
log("instantiated an instance of class " + clsName);
theFactory = fac;
return fac;
} catch (Exception e) {
log("SSLSocketFactory instantiation failed: " + e.toString());
theFactory = new DefaultSSLSocketFactory(e);
return theFactory;
}
}
}
try {
return SSLContext.getDefault().getSocketFactory();
} catch (NoSuchAlgorithmException e) {
return new DefaultSSLSocketFactory(e);
}
}
Returns the default SSL socket factory.
The first time this method is called, the security property
"ssl.SocketFactory.provider" is examined. If it is non-null, a class by
that name is loaded and instantiated. If that is successful and the
object is an instance of SSLSocketFactory, it is made the default SSL
socket factory.
Otherwise, this method returns
SSLContext.getDefault().getSocketFactory() . If that
call fails, an inoperative factory is returned. |
abstract public String[] getDefaultCipherSuites()
Returns the list of cipher suites which are enabled by default.
Unless a different list is enabled, handshaking on an SSL connection
will use one of these cipher suites. The minimum quality of service
for these defaults requires confidentiality protection and server
authentication (that is, no anonymous cipher suites). |
static String getSecurityProperty(String name) {
return AccessController.doPrivileged(new PrivilegedAction< String >() {
public String run() {
String s = java.security.Security.getProperty(name);
if (s != null) {
s = s.trim();
if (s.length() == 0) {
s = null;
}
}
return s;
}
});
}
|
abstract public String[] getSupportedCipherSuites()
Returns the names of the cipher suites which could be enabled for use
on an SSL connection. Normally, only a subset of these will actually
be enabled by default, since this list may include cipher suites which
do not meet quality of service requirements for those defaults. Such
cipher suites are useful in specialized applications. |