SSL_read man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

SSL_READ(3)		 BSD Library Functions Manual		   SSL_READ(3)

NAME
     SSL_read — read bytes from a TLS/SSL connection

SYNOPSIS
     #include <openssl/ssl.h>

     int
     SSL_read(SSL *ssl, void *buf, int num);

DESCRIPTION
     SSL_read() tries to read num bytes from the specified ssl into the buffer
     buf.

NOTES
     If necessary, SSL_read() will negotiate a TLS/SSL session, if not already
     explicitly performed by SSL_connect(3) or SSL_accept(3).  If the peer
     requests a re-negotiation, it will be performed transparently during the
     SSL_read() operation.  The behaviour of SSL_read() depends on the under‐
     lying BIO.

     For the transparent negotiation to succeed, the ssl must have been ini‐
     tialized to client or server mode.	 This is being done by calling
     SSL_set_connect_state(3) or SSL_set_accept_state(3) before the first call
     to SSL_read() or SSL_write(3).

     SSL_read() works based on the SSL/TLS records.  The data are received in
     records (with a maximum record size of 16kB for SSLv3/TLSv1).  Only after
     a record has been completely received can it be processed (decrypted and
     checked for integrity).  Therefore data not retrieved at the last call of
     SSL_read() can still be buffered inside the SSL layer and will be
     retrieved on the next call to SSL_read().	If num is higher than the num‐
     ber of bytes buffered, SSL_read() will return with the bytes buffered.
     If no more bytes are in the buffer, SSL_read() will trigger the process‐
     ing of the next record.  Only when the record has been received and pro‐
     cessed completely will SSL_read() return reporting success.  At most the
     contents of the record will be returned.  As the size of an SSL/TLS
     record may exceed the maximum packet size of the underlying transport
     (e.g., TCP), it may be necessary to read several packets from the trans‐
     port layer before the record is complete and SSL_read() can succeed.

     If the underlying BIO is blocking, SSL_read() will only return once the
     read operation has been finished or an error has occurred, except when a
     renegotiation take place, in which case a SSL_ERROR_WANT_READ may occur.
     This behavior can be controlled with the SSL_MODE_AUTO_RETRY flag of the
     SSL_CTX_set_mode(3) call.

     If the underlying BIO is non-blocking, SSL_read() will also return when
     the underlying BIO could not satisfy the needs of SSL_read() to continue
     the operation.  In this case a call to SSL_get_error(3) with the return
     value of SSL_read() will yield SSL_ERROR_WANT_READ or
     SSL_ERROR_WANT_WRITE.  As at any time a re-negotiation is possible, a
     call to SSL_read() can also cause write operations!  The calling process
     then must repeat the call after taking appropriate action to satisfy the
     needs of SSL_read().  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.

     SSL_pending(3) can be used to find out whether there are buffered bytes
     available for immediate retrieval.	 In this case SSL_read() can be called
     without blocking or actually receiving new data from the underlying
     socket.

WARNING
     When an SSL_read() operation has to be repeated because of
     SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE, it must be repeated with the
     same arguments.

RETURN VALUES
     The following return values can occur:

     >0	     The read operation was successful; the return value is the number
	     of bytes actually read from the TLS/SSL connection.

     0	     The read operation was not successful.  The reason may either be
	     a clean shutdown due to a “close notify” alert sent by the peer
	     (in which case the SSL_RECEIVED_SHUTDOWN flag in the ssl shutdown
	     state is set (see SSL_shutdown(3) and SSL_set_shutdown(3)).  It
	     is also possible that the peer simply shut down the underlying
	     transport and the shutdown is incomplete.	Call SSL_get_error()
	     with the return value to find out whether an error occurred or
	     the connection was shut down cleanly (SSL_ERROR_ZERO_RETURN).

	     SSLv2 (deprecated) does not support a shutdown alert protocol, so
	     it can only be detected whether the underlying connection was
	     closed.  It cannot be checked whether the closure was initiated
	     by the peer or by something else.

     <0	     The read operation was not successful, because either an error
	     occurred or action must be taken by the calling process.  Call
	     SSL_get_error() with the return value to find out the reason.

SEE ALSO
     bio(3), ssl(3), SSL_accept(3), SSL_connect(3), SSL_CTX_new(3),
     SSL_CTX_set_mode(3), SSL_get_error(3), SSL_pending(3),
     SSL_set_connect_state(3), SSL_set_shutdown(3), SSL_shutdown(3),
     SSL_write(3)

BSD				April 29, 2024				   BSD
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net