AI-generated Key Takeaways
- 
          SSLContextSpidefines the Service Provider Interface (SPI) for theSSLContextclass, enabling cryptographic providers to implement specific SSL contexts.
- 
          Each cryptographic service provider must implement all abstract methods within SSLContextSpito provide SSL context implementations.
- 
          SSLContextSpiprovides methods for creatingSSLEngineinstances, obtaining session contexts, and managing SSL parameters and factories.
- 
          It allows initialization of the SSL context with key managers, trust managers, and a secure random source. 
This class defines the Service Provider Interface (SPI)
 for the SSLContext class.
 
All the abstract methods in this class must be implemented by each cryptographic service provider who wishes to supply the implementation of a particular SSL context.
See Also
Public Constructor Summary
Protected Method Summary
| abstract SSLEngine | 
                engineCreateSSLEngine()
                
                 Creates a new  SSLEngineusing this context. | 
| abstract SSLEngine | |
| abstract SSLSessionContext | 
                engineGetClientSessionContext()
                
                 Returns a client  SSLSessionContextobject for
 this context. | 
| SSLParameters | 
                engineGetDefaultSSLParameters()
                
                 Returns a copy of the SSLParameters indicating the default
 settings for this SSL context. | 
| abstract SSLSessionContext | 
                engineGetServerSessionContext()
                
                 Returns a server  SSLSessionContextobject for
 this context. | 
| abstract SSLServerSocketFactory | 
                engineGetServerSocketFactory()
                
                 Returns a  ServerSocketFactoryobject for
 this context. | 
| abstract SSLSocketFactory | 
                engineGetSocketFactory()
                
                 Returns a  SocketFactoryobject for this
 context. | 
| SSLParameters | 
                engineGetSupportedSSLParameters()
                
                 Returns a copy of the SSLParameters indicating the maximum supported
 settings for this SSL context. | 
| abstract void | 
Inherited Method Summary
Public Constructors
public SSLContextSpi ()
Protected Methods
protected abstract SSLEngine engineCreateSSLEngine ()
Creates a new SSLEngine using this context.
 
 Applications using this factory method are providing no hints
 for an internal session reuse strategy. If hints are desired,
 engineCreateSSLEngine(String, int) should be used
 instead.
 
Some cipher suites (such as Kerberos) require remote hostname information, in which case this factory method should not be used.
Returns
- the SSLEngineObject
Throws
| IllegalStateException | if the SSLContextImpl requires
         initialization and the engineInit()has not been called | 
|---|
See Also
protected abstract SSLEngine engineCreateSSLEngine (String host, int port)
Creates a SSLEngine using this context.
 
Applications using this factory method are providing hints for an internal session reuse strategy.
Some cipher suites (such as Kerberos) require remote hostname information, in which case peerHost needs to be specified.
Parameters
| host | the non-authoritative name of the host | 
|---|---|
| port | the non-authoritative port | 
Returns
- the SSLEngineObject
Throws
| IllegalStateException | if the SSLContextImpl requires
         initialization and the engineInit()has not been called | 
|---|
protected abstract SSLSessionContext engineGetClientSessionContext ()
Returns a client SSLSessionContext object for
 this context.
Returns
- the SSLSessionContextobject
See Also
protected SSLParameters engineGetDefaultSSLParameters ()
Returns a copy of the SSLParameters indicating the default settings for this SSL context.
The parameters will always have the ciphersuite and protocols arrays set to non-null values.
The default implementation obtains the parameters from an SSLSocket created by calling the {@linkplain javax.net.SocketFactory#createSocket SocketFactory.createSocket()} method of this context's SocketFactory.
Returns
- a copy of the SSLParameters object with the default settings
Throws
| UnsupportedOperationException | if the default SSL parameters could not be obtained. | 
|---|
protected abstract SSLSessionContext engineGetServerSessionContext ()
Returns a server SSLSessionContext object for
 this context.
Returns
- the SSLSessionContextobject
See Also
protected abstract SSLServerSocketFactory engineGetServerSocketFactory ()
Returns a ServerSocketFactory object for
 this context.
Returns
- the ServerSocketFactoryobject
Throws
| IllegalStateException | if the SSLContextImpl requires
         initialization and the engineInit()has not been called | 
|---|
See Also
protected abstract SSLSocketFactory engineGetSocketFactory ()
Returns a SocketFactory object for this
 context.
Returns
- the SocketFactoryobject
Throws
| IllegalStateException | if the SSLContextImpl requires
         initialization and the engineInit()has not been called | 
|---|
See Also
protected SSLParameters engineGetSupportedSSLParameters ()
Returns a copy of the SSLParameters indicating the maximum supported settings for this SSL context.
The parameters will always have the ciphersuite and protocols arrays set to non-null values.
The default implementation obtains the parameters from an SSLSocket created by calling the {@linkplain javax.net.SocketFactory#createSocket SocketFactory.createSocket()} method of this context's SocketFactory.
Returns
- a copy of the SSLParameters object with the maximum supported settings
Throws
| UnsupportedOperationException | if the supported SSL parameters could not be obtained. | 
|---|
protected abstract void engineInit (KeyManager[] km, TrustManager[] tm, SecureRandom sr)
Initializes this context.
Parameters
| km | the sources of authentication keys | 
|---|---|
| tm | the sources of peer authentication trust decisions | 
| sr | the source of randomness | 
Throws
| KeyManagementException | if this operation fails | 
|---|
