Class SSLContext
- java.lang.Object
-
- javax.net.ssl.SSLContext
-
public class SSLContext extends Object
The public API for secure socket protocol implementations. It acts as factory forSSLSocketFactory's andSSLEngines.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedSSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)Creates a newSSLContext.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description SSLEnginecreateSSLEngine()Creates anSSLEngineinstance from this context.SSLEnginecreateSSLEngine(String peerHost, int peerPort)Creates anSSLEngineinstance from this context with the specified hostname and port.SSLSessionContextgetClientSessionContext()Returns the SSL session context that encapsulates the set of SSL sessions that can be used for handshake of client-side SSL sockets.static SSLContextgetDefault()Returns the default SSLContext.SSLParametersgetDefaultSSLParameters()Returns the default SSL handshake parameters for SSLSockets created by this SSLContext.static SSLContextgetInstance(String protocol)Creates a newSSLContextinstance for the specified protocol.static SSLContextgetInstance(String protocol, String provider)Creates a newSSLContextinstance for the specified protocol from the specified provider.static SSLContextgetInstance(String protocol, Provider provider)Creates a newSSLContextinstance for the specified protocol from the specified provider.StringgetProtocol()Returns the name of the secure socket protocol of this instance.ProvidergetProvider()Returns the provider of thisSSLContextinstance.SSLSessionContextgetServerSessionContext()Returns the SSL session context that encapsulates the set of SSL sessions that can be used for handshake of server-side SSL sockets.SSLServerSocketFactorygetServerSocketFactory()Returns a server socket factory for this instance.SSLSocketFactorygetSocketFactory()Returns a socket factory for this instance.SSLParametersgetSupportedSSLParameters()Returns SSL handshake parameters for SSLSockets that includes all supported cipher suites and protocols.voidinit(KeyManager[] km, TrustManager[] tm, SecureRandom sr)Initializes thisSSLContextinstance.static voidsetDefault(SSLContext sslContext)Sets the default SSLContext instance as returned bygetDefault()to a non-null initialized value.
-
-
-
Constructor Detail
-
SSLContext
protected SSLContext(SSLContextSpi contextSpi, Provider provider, String protocol)
Creates a newSSLContext.- Parameters:
contextSpi- the implementation delegate.provider- the provider.protocol- the protocol name.
-
-
Method Detail
-
getDefault
public static SSLContext getDefault() throws NoSuchAlgorithmException
Returns the default SSLContext. The default SSL context can be set withsetDefault(javax.net.ssl.SSLContext). If not, one will be created withSSLContext.getInstance("Default"), which will already be initialized.- Throws:
NoSuchAlgorithmException- if there is a problem creating the default instance.- Since:
- 1.6
-
setDefault
public static void setDefault(SSLContext sslContext)
Sets the default SSLContext instance as returned bygetDefault()to a non-null initialized value.- Throws:
NullPointerException- on a null argument- Since:
- 1.6
-
getInstance
public static SSLContext getInstance(String protocol) throws NoSuchAlgorithmException
Creates a newSSLContextinstance for the specified protocol.The following protocols are supported:
Protocol API Levels Default 9+ SSL 9+ SSLv3 9+ TLS 1+ TLSv1 1+ TLSv1.1 16+ TLSv1.2 16+ - Parameters:
protocol- the requested protocol to create a context for.- Returns:
- the created
SSLContextinstance. - Throws:
NoSuchAlgorithmException- if no installed provider can provide the requested protocolNullPointerException- ifprotocolisnull(instead of NoSuchAlgorithmException as in 1.4 release)
-
getInstance
public static SSLContext getInstance(String protocol, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Creates a newSSLContextinstance for the specified protocol from the specified provider.The following combinations are supported:
Protocol Provider API Levels Default AndroidOpenSSL 9+ SSL AndroidOpenSSL 9+ SSL HarmonyJSSE 9-19 SSLv3 AndroidOpenSSL 9+ SSLv3 HarmonyJSSE 9-19 TLS AndroidOpenSSL 9+ TLS HarmonyJSSE 1-19 TLSv1 AndroidOpenSSL 9+ TLSv1 HarmonyJSSE 1-19 TLSv1.1 AndroidOpenSSL 16+ TLSv1.2 AndroidOpenSSL 16+ NOTE: The best practice is to rely on platform defaults rather than explicitly specify a provider.
getDefault()andgetInstance(String)are normally preferred over this method.- Parameters:
protocol- the requested protocol to create a context for.provider- the name of the provider that provides the requested protocol.- Returns:
- an
SSLContextfor the requested protocol. - Throws:
NoSuchAlgorithmException- if the specified provider cannot provider the requested protocol.NoSuchProviderException- if the specified provider does not exits.NullPointerException- ifprotocolisnull(instead of NoSuchAlgorithmException as in 1.4 release)
-
getInstance
public static SSLContext getInstance(String protocol, Provider provider) throws NoSuchAlgorithmException
Creates a newSSLContextinstance for the specified protocol from the specified provider.- Parameters:
protocol- the requested protocol to create a context forprovider- the provider that provides the requested protocol.- Returns:
- an
SSLContextfor the requested protocol. - Throws:
NoSuchAlgorithmException- if the specified provider cannot provide the requested protocol.NullPointerException- ifprotocolisnull(instead of NoSuchAlgorithmException as in 1.4 release)
-
getProtocol
public final String getProtocol()
Returns the name of the secure socket protocol of this instance.- Returns:
- the name of the secure socket protocol of this instance.
-
getProvider
public final Provider getProvider()
Returns the provider of thisSSLContextinstance.- Returns:
- the provider of this
SSLContextinstance.
-
init
public final void init(KeyManager[] km, TrustManager[] tm, SecureRandom sr) throws KeyManagementException
Initializes thisSSLContextinstance. Three aspects of the context can be configured during initialization:- Providers of key material for key exchange and peer authentication
(
KeyManagerinstances), - Providers of trust decisions about peers (
TrustManagerinstances), - Provider of randomness (
SecureRandominstance).
For each type of
KeyManagerorTrustManagerused by this context, only the first matching instance fromkmortmwill be used. For example, only the first instance ofX509TrustManagerfromtmwill be used.For any parameter set to
nulldefaults will be used. In that case, the installed security providers will be searched for the highest priority implementation of the required primitives. Forkmandtm, the highest priority implementation ofKeyManagerFactoryandTrustManagerFactorywill be used to obtain the required types ofKeyManagerandTrustManager. Forsr, the defaultSecureRandomimplementation will be used.- Parameters:
km- the key sources ornullfor default.tm- the trust decision sources ornullfor default.sr- the randomness source ornullfor default.- Throws:
KeyManagementException- if initializing this instance fails.
- Providers of key material for key exchange and peer authentication
(
-
getSocketFactory
public final SSLSocketFactory getSocketFactory()
Returns a socket factory for this instance.- Returns:
- a socket factory for this instance.
-
getServerSocketFactory
public final SSLServerSocketFactory getServerSocketFactory()
Returns a server socket factory for this instance.- Returns:
- a server socket factory for this instance.
-
createSSLEngine
public final SSLEngine createSSLEngine()
Creates anSSLEngineinstance from this context.- Returns:
- an
SSLEngineinstance from this context. - Throws:
UnsupportedOperationException- if the provider does not support the operation.
-
createSSLEngine
public final SSLEngine createSSLEngine(String peerHost, int peerPort)
Creates anSSLEngineinstance from this context with the specified hostname and port.- Parameters:
peerHost- the name of the hostpeerPort- the port- Returns:
- an
SSLEngineinstance from this context. - Throws:
UnsupportedOperationException- if the provider does not support the operation.
-
getServerSessionContext
public final SSLSessionContext getServerSessionContext()
Returns the SSL session context that encapsulates the set of SSL sessions that can be used for handshake of server-side SSL sockets.- Returns:
- the SSL server session context for this context or
nullif the underlying provider does not provide an implementation of theSSLSessionContextinterface.
-
getClientSessionContext
public final SSLSessionContext getClientSessionContext()
Returns the SSL session context that encapsulates the set of SSL sessions that can be used for handshake of client-side SSL sockets.- Returns:
- the SSL client session context for this context or
nullif the underlying provider does not provide an implementation of theSSLSessionContextinterface.
-
getDefaultSSLParameters
public final SSLParameters getDefaultSSLParameters()
Returns the default SSL handshake parameters for SSLSockets created by this SSLContext.- Throws:
UnsupportedOperationException- Since:
- 1.6
-
getSupportedSSLParameters
public final SSLParameters getSupportedSSLParameters()
Returns SSL handshake parameters for SSLSockets that includes all supported cipher suites and protocols.- Throws:
UnsupportedOperationException- Since:
- 1.6
-
-