Negotiates a TLS session using an SSL socket factory.
Creates an SSL socket using the supplied SSL socket factory and
attaches it to the existing connection. Performs the TLS handshake
and returns the negotiated session information.
If cipher suites have been set via setEnabledCipherSuites
then they are enabled before the TLS handshake begins.
Hostname verification is performed after the TLS handshake completes.
The default hostname verification performs a match of the server's
hostname against the hostname information found in the server's certificate.
If this verification fails and no callback has been set via
setHostnameVerifier then the negotiation fails.
If this verification fails and a callback has been set via
setHostnameVerifier, then the callback is used to determine whether
the negotiation succeeds.
If an error occurs then the SSL socket is closed and an IOException
is thrown. The underlying connection remains intact.
Returns:
The negotiated SSL session
Parameters:
- factory - The possibly null SSL socket factory to use.
If null, the default SSL socket factory is used.
Throws:
- IOException - If an IO error was encountered while establishing
the TLS session.
See Also:
StartTlsResponse.setEnabledCipherSuites(java.lang.String[])
,
StartTlsResponse.setHostnameVerifier(javax.net.ssl.HostnameVerifier)
,