SSL_connect (3)
Leading comments
Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) Standard preamble: ========================================================================
NAME
SSL_connect - initiate the TLS/SSL handshake with an TLS/SSL serverSYNOPSIS
#include <openssl/ssl.h> int SSL_connect(SSL *ssl);
DESCRIPTION
SSL_connect() initiates theTLS/SSL
handshake with a server. The communication
channel must already have been set and assigned to the ssl by setting an
underlying BIO
.
NOTES
The behaviour of SSL_connect() depends on the underlyingBIO.
If the underlying
BIO
is blocking, SSL_connect() will only return once the
handshake has been finished or an error occurred.
If the underlying
BIO
is non-blocking, SSL_connect() will also return
when the underlying BIO
could not satisfy the needs of SSL_connect()
to continue the handshake, indicating the problem by the return value -1.
In this case a call to SSL_get_error() with the
return value of SSL_connect() will yield SSL_ERROR_WANT_READ
or
SSL_ERROR_WANT_WRITE
. The calling process then must repeat the call after
taking appropriate action to satisfy the needs of SSL_connect().
The action depends on the underlying BIO.
When using a non-blocking socket,
nothing is to be done, but select() can be used to check for the required
condition. When using a buffering BIO,
like a BIO
pair, data must be written
into or retrieved out of the BIO
before being able to continue.
RETURN VALUES
The following return values can occur:- 0
-
The TLS/SSLhandshake was not successful but was shut down controlled and by the specifications of theTLS/SSLprotocol. Call SSL_get_error() with the return value ret to find out the reason.
- 1
-
The TLS/SSLhandshake was successfully completed, aTLS/SSLconnection has been established.
- <0
-
The TLS/SSLhandshake was not successful, because a fatal error occurred either at the protocol level or a connection failure occurred. The shutdown was not clean. It can also occur of action is need to continue the operation for non-blocking BIOs. Call SSL_get_error() with the return value ret to find out the reason.