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