




attach-ssl socket-stream &key ssl-ctx ssl-side ctx-configure-callback ssl-configure-callback => ssl
A symbol or a foreign pointer.
One of the keywords :client, :server or :both.
The function attach-ssl attaches SSL to the socket-stream socket-stream.
The allowed values and meaning of the keyword arguments are as described for socket-stream.
Note that attach-ssl is used by
(make-instance 'comm:socket-stream :ssl-ctx ...)
and by
(comm:open-tcp-stream ... :ssl-ctx ...)
but you can also call it explicitly.
Before starting to create objects, attach-ssl ensures the SSL library (by calling ensure-ssl) and calls do-rand-seed to seed the Pseudo Random Number Generator (PRNG), so normally you do not need to worry about these.
If ssl-ctx is a symbol, it creates the SSL_CTX and calls ctx-configure-callback if this is non-nil. If ssl-ctx is not a ssl-pointer, it creates the SSL object, calls ssl-configure-callback if this is non-nil, and sets the ACCEPT/CONNECT state if the value of ssl-side is not :both. Then it uses SSL_set_fd to attach the SSL to the socket, and records this in the socket stream. It returns the SSL.
The default value of ssl-ctx is t and the default value of ssl-side is :server.
When a socket-stream is closed, detach-ssl is called with :retry-count nil, which, if the stream is attached to SSL, calls SSL_shutdown and then frees the object (or objects) that were automatically allocated.
If SSL is already attached to socket-stream then attach-ssl signals an error.
LispWorks User Guide and Reference Manual - 13 Feb 2015