Availability::- use_module(library(ssl)).
(can be autoloaded)
[det]ssl_negotiate(+SSL,
+PlainRead, +PlainWrite, -SSLRead, -SSLWrite)Once a connection is established and a read/write stream pair is
available, (PlainRead and PlainWrite), this
predicate can be called to negotiate an SSL session over the
streams. If the negotiation is successful, SSLRead and SSLWrite
are returned.
After a successful handshake and finishing the communication the user
must close SSLRead and SSLWrite, for example using
call_cleanup(close(SSLWrite), close(SSLRead))
. If the SSL
context (created with ssl_context/3
has the option
close_parent(true)
(default false
), closing SSLRead
and
SSLWrite also closes the original PlainRead and PlainWrite
streams. Otherwise these must be closed explicitly by the user.
- Errors
ssl_error(Code, LibName, FuncName, Reason)
is raised if the
negotiation fails. The streams PlainRead and PlainWrite
are not closed, but an unknown amount of data may have been read
and written.