FileDocCategorySizeDatePackage
SSLSocketFactory.javaAPI DocAndroid 1.5 API5532Wed May 06 22:41:06 BST 2009javax.net.ssl

SSLSocketFactory

public abstract class SSLSocketFactory extends SocketFactory
The abstract factory implementation to create {@code SSLSocket}s.
since
Android 1.0

Fields Summary
private static SocketFactory
defaultSocketFactory
private static String
defaultName
Constructors Summary
public SSLSocketFactory()
Creates a new {@code SSLSocketFactory}.

since
Android 1.0

        super();
    
Methods Summary
public abstract java.net.SocketcreateSocket(java.net.Socket s, java.lang.String host, int port, boolean autoClose)
Creates an {@code SSLSocket} over the specified socket that is connected to the specified host at the specified port.

param
s the socket.
param
host the host.
param
port the port number.
param
autoClose {@code true} if socket {@code s} should be closed when the created socket is closed, {@code false} if the socket {@code s} should be left open.
return
the creates ssl socket.
throws
IOException if creating the socket fails.
throws
UnknownHostException if the host is unknown.
since
Android 1.0

public static javax.net.SocketFactorygetDefault()
Returns the default {@code SSLSocketFactory} instance. The default is defined by the security property {@code 'ssl.SocketFactory.provider'}.

return
the default ssl socket factory instance.
since
Android 1.0

        synchronized (SSLSocketFactory.class) {
            if (defaultSocketFactory != null) {
                // BEGIN android-added
                log("SSLSocketFactory", "Using factory " + defaultSocketFactory);
                // END android-added
                return defaultSocketFactory;
            }
            if (defaultName == null) {
                AccessController.doPrivileged(new java.security.PrivilegedAction(){
                    public Object run() {
                        defaultName = Security.getProperty("ssl.SocketFactory.provider");
                        if (defaultName != null) {
                            ClassLoader cl = Thread.currentThread().getContextClassLoader();
                            if (cl == null) {
                                cl = ClassLoader.getSystemClassLoader();
                            }
                            try {
                                defaultSocketFactory = (SocketFactory) Class.forName(
                                        defaultName, true, cl).newInstance();
                             } catch (Exception e) {
                                return e;
                            }
                        }
                        return null;
                    }
                });
            }

            if (defaultSocketFactory == null) {
                // Try to find in providers
                SSLContext context = DefaultSSLContext.getContext();
                if (context != null) {
                    defaultSocketFactory = context.getSocketFactory();
                }
            }
            if (defaultSocketFactory == null) {
                // Use internal implementation
                defaultSocketFactory = new DefaultSSLSocketFactory("No SSLSocketFactory installed");
            }
            // BEGIN android-added
            log("SSLSocketFactory", "Using factory " + defaultSocketFactory);
            // END android-added
            return defaultSocketFactory;
        }
    
public abstract java.lang.String[]getDefaultCipherSuites()
Returns the names of the cipher suites that are enabled by default.

return
the names of the cipher suites that are enabled by default.
since
Android 1.0

public abstract java.lang.String[]getSupportedCipherSuites()
Returns the names of the cipher suites that are supported and could be enabled for an SSL connection.

return
the names of the cipher suites that are supported.
since
Android 1.0

private static voidlog(java.lang.String tag, java.lang.String msg)

        Logger.getLogger(tag).info(msg);