Scroll to navigation

SSL_CONNECT(3) Library Functions Manual SSL_CONNECT(3)

NAME

SSL_connectinitiate the TLS/SSL handshake with a TLS/SSL server

SYNOPSIS

#include <openssl/ssl.h>

int
SSL_connect(SSL *ssl);

DESCRIPTION

() initiates the TLS/SSL handshake with a server. The communication channel must already have been set and assigned to the ssl by setting an underlying BIO.

The behaviour of () depends on the underlying BIO.

If the underlying BIO is , () will only return once the handshake has been finished or an error occurred.

If the underlying BIO is , () will also return when the underlying BIO could not satisfy the needs of SSL_connect() to continue the handshake, indicating the problem with the return value −1. In this case a call to SSL_get_error(3) 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(2) 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/SSL handshake was not successful but was shut down controlled and by the specifications of the TLS/SSL protocol. Call SSL_get_error(3) with the return value ret to find out the reason.
1
The TLS/SSL handshake was successfully completed, and a TLS/SSL connection has been established.
<0
The TLS/SSL handshake was not successful, because either a fatal error occurred at the protocol level or a connection failure occurred. The shutdown was not clean. It can also occur if action is needed to continue the operation for non-blocking BIOs. Call SSL_get_error(3) with the return value ret to find out the reason.

SEE ALSO

BIO_new(3), ssl(3), SSL_accept(3), SSL_CTX_new(3), SSL_do_handshake(3), SSL_get_error(3), SSL_set_connect_state(3), SSL_shutdown(3)

HISTORY

SSL_connect() appeared in SSLeay 0.4 or earlier and has been available since OpenBSD 2.4.

March 27, 2018 Linux 6.4.0-150600.23.25-default