Home | History | Annotate | Line # | Download | only in man3
      1      1.1  christos =pod
      2      1.1  christos 
      3      1.1  christos =head1 NAME
      4      1.1  christos 
      5      1.1  christos SSL_read_ex, SSL_read, SSL_peek_ex, SSL_peek
      6      1.1  christos - read bytes from a TLS/SSL connection
      7      1.1  christos 
      8      1.1  christos =head1 SYNOPSIS
      9      1.1  christos 
     10      1.1  christos  #include <openssl/ssl.h>
     11      1.1  christos 
     12      1.1  christos  int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
     13      1.1  christos  int SSL_read(SSL *ssl, void *buf, int num);
     14      1.1  christos 
     15      1.1  christos  int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes);
     16      1.1  christos  int SSL_peek(SSL *ssl, void *buf, int num);
     17      1.1  christos 
     18      1.1  christos =head1 DESCRIPTION
     19      1.1  christos 
     20      1.1  christos SSL_read_ex() and SSL_read() try to read B<num> bytes from the specified B<ssl>
     21      1.1  christos into the buffer B<buf>. On success SSL_read_ex() will store the number of bytes
     22      1.1  christos actually read in B<*readbytes>.
     23      1.1  christos 
     24      1.1  christos SSL_peek_ex() and SSL_peek() are identical to SSL_read_ex() and SSL_read()
     25      1.1  christos respectively except no bytes are actually removed from the underlying BIO during
     26      1.1  christos the read, so that a subsequent call to SSL_read_ex() or SSL_read() will yield
     27      1.1  christos at least the same bytes.
     28      1.1  christos 
     29      1.1  christos =head1 NOTES
     30      1.1  christos 
     31      1.1  christos In the paragraphs below a "read function" is defined as one of SSL_read_ex(),
     32      1.1  christos SSL_read(), SSL_peek_ex() or SSL_peek().
     33      1.1  christos 
     34      1.1  christos If necessary, a read function will negotiate a TLS/SSL session, if not already
     35      1.1  christos explicitly performed by L<SSL_connect(3)> or L<SSL_accept(3)>. If the
     36      1.1  christos peer requests a re-negotiation, it will be performed transparently during
     37      1.1  christos the read function operation. The behaviour of the read functions depends on the
     38      1.1  christos underlying BIO.
     39      1.1  christos 
     40      1.1  christos For the transparent negotiation to succeed, the B<ssl> must have been
     41      1.1  christos initialized to client or server mode. This is being done by calling
     42      1.1  christos L<SSL_set_connect_state(3)> or SSL_set_accept_state() before the first
     43      1.1  christos invocation of a read function.
     44      1.1  christos 
     45      1.1  christos The read functions work based on the SSL/TLS records. The data are received in
     46      1.1  christos records (with a maximum record size of 16kB). Only when a record has been
     47      1.1  christos completely received, can it be processed (decryption and check of integrity).
     48  1.1.1.4  christos Therefore, data that was not retrieved at the last read call can still be
     49      1.1  christos buffered inside the SSL layer and will be retrieved on the next read
     50      1.1  christos call. If B<num> is higher than the number of bytes buffered then the read
     51      1.1  christos functions will return with the bytes buffered. If no more bytes are in the
     52      1.1  christos buffer, the read functions will trigger the processing of the next record.
     53      1.1  christos Only when the record has been received and processed completely will the read
     54      1.1  christos functions return reporting success. At most the contents of one record will
     55      1.1  christos be returned. As the size of an SSL/TLS record may exceed the maximum packet size
     56      1.1  christos of the underlying transport (e.g. TCP), it may be necessary to read several
     57      1.1  christos packets from the transport layer before the record is complete and the read call
     58      1.1  christos can succeed.
     59      1.1  christos 
     60      1.1  christos If B<SSL_MODE_AUTO_RETRY> has been switched off and a non-application data
     61      1.1  christos record has been processed, the read function can return and set the error to
     62      1.1  christos B<SSL_ERROR_WANT_READ>.
     63      1.1  christos In this case there might still be unprocessed data available in the B<BIO>.
     64      1.1  christos If read ahead was set using L<SSL_CTX_set_read_ahead(3)>, there might also still
     65      1.1  christos be unprocessed data available in the B<SSL>.
     66      1.1  christos This behaviour can be controlled using the L<SSL_CTX_set_mode(3)> call.
     67      1.1  christos 
     68      1.1  christos If the underlying BIO is B<blocking>, a read function will only return once the
     69      1.1  christos read operation has been finished or an error occurred, except when a
     70      1.1  christos non-application data record has been processed and B<SSL_MODE_AUTO_RETRY> is
     71      1.1  christos not set.
     72      1.1  christos Note that if B<SSL_MODE_AUTO_RETRY> is set and only non-application data is
     73      1.1  christos available the call will hang.
     74      1.1  christos 
     75  1.1.1.4  christos If the underlying BIO is B<nonblocking>, a read function will also return when
     76      1.1  christos the underlying BIO could not satisfy the needs of the function to continue the
     77      1.1  christos operation.
     78      1.1  christos In this case a call to L<SSL_get_error(3)> with the
     79      1.1  christos return value of the read function will yield B<SSL_ERROR_WANT_READ> or
     80      1.1  christos B<SSL_ERROR_WANT_WRITE>.
     81      1.1  christos As at any time it's possible that non-application data needs to be sent,
     82      1.1  christos a read function can also cause write operations.
     83      1.1  christos The calling process then must repeat the call after taking appropriate action
     84      1.1  christos to satisfy the needs of the read function.
     85      1.1  christos The action depends on the underlying BIO.
     86  1.1.1.4  christos When using a nonblocking socket, nothing is to be done, but select() can be
     87      1.1  christos used to check for the required condition.
     88      1.1  christos When using a buffering BIO, like a BIO pair, data must be written into or
     89      1.1  christos retrieved out of the BIO before being able to continue.
     90      1.1  christos 
     91      1.1  christos L<SSL_pending(3)> can be used to find out whether there
     92      1.1  christos are buffered bytes available for immediate retrieval.
     93      1.1  christos In this case the read function can be called without blocking or actually
     94      1.1  christos receiving new data from the underlying socket.
     95      1.1  christos 
     96      1.1  christos =head1 RETURN VALUES
     97      1.1  christos 
     98      1.1  christos SSL_read_ex() and SSL_peek_ex() will return 1 for success or 0 for failure.
     99      1.1  christos Success means that 1 or more application data bytes have been read from the SSL
    100      1.1  christos connection.
    101      1.1  christos Failure means that no bytes could be read from the SSL connection.
    102      1.1  christos Failures can be retryable (e.g. we are waiting for more bytes to
    103      1.1  christos be delivered by the network) or non-retryable (e.g. a fatal network error).
    104      1.1  christos In the event of a failure call L<SSL_get_error(3)> to find out the reason which
    105      1.1  christos indicates whether the call is retryable or not.
    106      1.1  christos 
    107      1.1  christos For SSL_read() and SSL_peek() the following return values can occur:
    108      1.1  christos 
    109      1.1  christos =over 4
    110      1.1  christos 
    111      1.1  christos =item E<gt> 0
    112      1.1  christos 
    113      1.1  christos The read operation was successful.
    114      1.1  christos The return value is the number of bytes actually read from the TLS/SSL
    115      1.1  christos connection.
    116      1.1  christos 
    117      1.1  christos =item Z<><= 0
    118      1.1  christos 
    119      1.1  christos The read operation was not successful, because either the connection was closed,
    120      1.1  christos an error occurred or action must be taken by the calling process.
    121      1.1  christos Call L<SSL_get_error(3)> with the return value B<ret> to find out the reason.
    122      1.1  christos 
    123      1.1  christos Old documentation indicated a difference between 0 and -1, and that -1 was
    124      1.1  christos retryable.
    125      1.1  christos You should instead call SSL_get_error() to find out if it's retryable.
    126      1.1  christos 
    127      1.1  christos =back
    128      1.1  christos 
    129      1.1  christos =head1 SEE ALSO
    130      1.1  christos 
    131      1.1  christos L<SSL_get_error(3)>, L<SSL_write_ex(3)>,
    132      1.1  christos L<SSL_CTX_set_mode(3)>, L<SSL_CTX_new(3)>,
    133      1.1  christos L<SSL_connect(3)>, L<SSL_accept(3)>
    134      1.1  christos L<SSL_set_connect_state(3)>,
    135      1.1  christos L<SSL_pending(3)>,
    136      1.1  christos L<SSL_shutdown(3)>, L<SSL_set_shutdown(3)>,
    137      1.1  christos L<ssl(7)>, L<bio(7)>
    138      1.1  christos 
    139  1.1.1.3  christos =head1 HISTORY
    140  1.1.1.3  christos 
    141  1.1.1.3  christos The SSL_read_ex() and SSL_peek_ex() functions were added in OpenSSL 1.1.1.
    142  1.1.1.3  christos 
    143      1.1  christos =head1 COPYRIGHT
    144      1.1  christos 
    145  1.1.1.4  christos Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
    146      1.1  christos 
    147  1.1.1.5  christos Licensed under the Apache License 2.0 (the "License").  You may not use
    148      1.1  christos this file except in compliance with the License.  You can obtain a copy
    149      1.1  christos in the file LICENSE in the source distribution or at
    150      1.1  christos L<https://www.openssl.org/source/license.html>.
    151      1.1  christos 
    152      1.1  christos =cut
    153