public interface SslEngineFactory extends Configurable, Closeable
SSLEngine
object in a custom way.
For example, you can use this to customize loading your key material and trust material needed for SSLContext
.
This is complementary to the existing Java Security Provider mechanism which allows the entire provider
to be replaced with a custom provider. In scenarios where only the configuration mechanism for SSL engines
need to be updated, this interface provides a convenient method for overriding the default implementation.Modifier and Type | Method and Description |
---|---|
SSLEngine |
createClientSslEngine(String peerHost,
int peerPort,
String endpointIdentification)
Creates a new
SSLEngine object to be used by the client. |
SSLEngine |
createServerSslEngine(String peerHost,
int peerPort)
Creates a new
SSLEngine object to be used by the server. |
KeyStore |
keystore()
Returns keystore configured for this factory.
|
Set<String> |
reconfigurableConfigs()
Returns the names of configs that may be reconfigured.
|
boolean |
shouldBeRebuilt(Map<String,Object> nextConfigs)
Returns true if
SSLEngine needs to be rebuilt. |
KeyStore |
truststore()
Returns truststore configured for this factory.
|
configure
SSLEngine createClientSslEngine(String peerHost, int peerPort, String endpointIdentification)
SSLEngine
object to be used by the client.peerHost
- The peer host to use. This is used in client mode if endpoint validation is enabled.peerPort
- The peer port to use. This is a hint and not used for validation.endpointIdentification
- Endpoint identification algorithm for client mode.SSLEngine
.SSLEngine createServerSslEngine(String peerHost, int peerPort)
SSLEngine
object to be used by the server.peerHost
- The peer host to use. This is a hint and not used for validation.peerPort
- The peer port to use. This is a hint and not used for validation.SSLEngine
.boolean shouldBeRebuilt(Map<String,Object> nextConfigs)
SSLEngine
needs to be rebuilt. This method will be called when reconfiguration is triggered on
the SslFactory
used to create SSL engines. Based on the new configs provided in nextConfigs, this method
will decide whether underlying SSLEngine
object needs to be rebuilt. If this method returns true, the
SslFactory
will create a new instance of this object with nextConfigs and run other
checks before deciding to use the new object for new incoming connection requests. Existing connections
are not impacted by this and will not see any changes done as part of reconfiguration.
For example, if the implementation depends on file-based key material, it can check if the file was updated compared to the previous/last-loaded timestamp and return true.
nextConfigs
- The new configuration we want to use.SSLEngine
object should be rebuilt.Set<String> reconfigurableConfigs()
KeyStore keystore()
KeyStore truststore()