xref: /freebsd/crypto/openssl/doc/man3/SSL_want.pod (revision 6935a639f0f999de98b970a3cf26b0dc80b1798b)
1e71b7053SJung-uk Kim=pod
2e71b7053SJung-uk Kim
3e71b7053SJung-uk Kim=head1 NAME
4e71b7053SJung-uk Kim
5e71b7053SJung-uk KimSSL_want, SSL_want_nothing, SSL_want_read, SSL_want_write, SSL_want_x509_lookup,
6e71b7053SJung-uk KimSSL_want_async, SSL_want_async_job, SSL_want_client_hello_cb - obtain state
7e71b7053SJung-uk Kiminformation TLS/SSL I/O operation
8e71b7053SJung-uk Kim
9e71b7053SJung-uk Kim=head1 SYNOPSIS
10e71b7053SJung-uk Kim
11e71b7053SJung-uk Kim #include <openssl/ssl.h>
12e71b7053SJung-uk Kim
13e71b7053SJung-uk Kim int SSL_want(const SSL *ssl);
14e71b7053SJung-uk Kim int SSL_want_nothing(const SSL *ssl);
15e71b7053SJung-uk Kim int SSL_want_read(const SSL *ssl);
16e71b7053SJung-uk Kim int SSL_want_write(const SSL *ssl);
17e71b7053SJung-uk Kim int SSL_want_x509_lookup(const SSL *ssl);
18e71b7053SJung-uk Kim int SSL_want_async(const SSL *ssl);
19e71b7053SJung-uk Kim int SSL_want_async_job(const SSL *ssl);
20e71b7053SJung-uk Kim int SSL_want_client_hello_cb(const SSL *ssl);
21e71b7053SJung-uk Kim
22e71b7053SJung-uk Kim=head1 DESCRIPTION
23e71b7053SJung-uk Kim
24e71b7053SJung-uk KimSSL_want() returns state information for the SSL object B<ssl>.
25e71b7053SJung-uk Kim
26e71b7053SJung-uk KimThe other SSL_want_*() calls are shortcuts for the possible states returned
27e71b7053SJung-uk Kimby SSL_want().
28e71b7053SJung-uk Kim
29e71b7053SJung-uk Kim=head1 NOTES
30e71b7053SJung-uk Kim
31e71b7053SJung-uk KimSSL_want() examines the internal state information of the SSL object. Its
32e71b7053SJung-uk Kimreturn values are similar to that of L<SSL_get_error(3)>.
33e71b7053SJung-uk KimUnlike L<SSL_get_error(3)>, which also evaluates the
34e71b7053SJung-uk Kimerror queue, the results are obtained by examining an internal state flag
35e71b7053SJung-uk Kimonly. The information must therefore only be used for normal operation under
36e71b7053SJung-uk Kimnon-blocking I/O. Error conditions are not handled and must be treated
37e71b7053SJung-uk Kimusing L<SSL_get_error(3)>.
38e71b7053SJung-uk Kim
39e71b7053SJung-uk KimThe result returned by SSL_want() should always be consistent with
40e71b7053SJung-uk Kimthe result of L<SSL_get_error(3)>.
41e71b7053SJung-uk Kim
42e71b7053SJung-uk Kim=head1 RETURN VALUES
43e71b7053SJung-uk Kim
44e71b7053SJung-uk KimThe following return values can currently occur for SSL_want():
45e71b7053SJung-uk Kim
46e71b7053SJung-uk Kim=over 4
47e71b7053SJung-uk Kim
48e71b7053SJung-uk Kim=item SSL_NOTHING
49e71b7053SJung-uk Kim
50e71b7053SJung-uk KimThere is no data to be written or to be read.
51e71b7053SJung-uk Kim
52e71b7053SJung-uk Kim=item SSL_WRITING
53e71b7053SJung-uk Kim
54e71b7053SJung-uk KimThere are data in the SSL buffer that must be written to the underlying
55e71b7053SJung-uk KimB<BIO> layer in order to complete the actual SSL_*() operation.
56e71b7053SJung-uk KimA call to L<SSL_get_error(3)> should return
57e71b7053SJung-uk KimSSL_ERROR_WANT_WRITE.
58e71b7053SJung-uk Kim
59e71b7053SJung-uk Kim=item SSL_READING
60e71b7053SJung-uk Kim
61e71b7053SJung-uk KimMore data must be read from the underlying B<BIO> layer in order to
62e71b7053SJung-uk Kimcomplete the actual SSL_*() operation.
63e71b7053SJung-uk KimA call to L<SSL_get_error(3)> should return
64e71b7053SJung-uk KimSSL_ERROR_WANT_READ.
65e71b7053SJung-uk Kim
66e71b7053SJung-uk Kim=item SSL_X509_LOOKUP
67e71b7053SJung-uk Kim
68e71b7053SJung-uk KimThe operation did not complete because an application callback set by
69e71b7053SJung-uk KimSSL_CTX_set_client_cert_cb() has asked to be called again.
70e71b7053SJung-uk KimA call to L<SSL_get_error(3)> should return
71e71b7053SJung-uk KimSSL_ERROR_WANT_X509_LOOKUP.
72e71b7053SJung-uk Kim
73e71b7053SJung-uk Kim=item SSL_ASYNC_PAUSED
74e71b7053SJung-uk Kim
75e71b7053SJung-uk KimAn asynchronous operation partially completed and was then paused. See
76e71b7053SJung-uk KimL<SSL_get_all_async_fds(3)>. A call to L<SSL_get_error(3)> should return
77e71b7053SJung-uk KimSSL_ERROR_WANT_ASYNC.
78e71b7053SJung-uk Kim
79e71b7053SJung-uk Kim=item SSL_ASYNC_NO_JOBS
80e71b7053SJung-uk Kim
81e71b7053SJung-uk KimThe asynchronous job could not be started because there were no async jobs
82e71b7053SJung-uk Kimavailable in the pool (see ASYNC_init_thread(3)). A call to L<SSL_get_error(3)>
83e71b7053SJung-uk Kimshould return SSL_ERROR_WANT_ASYNC_JOB.
84e71b7053SJung-uk Kim
85e71b7053SJung-uk Kim=item SSL_CLIENT_HELLO_CB
86e71b7053SJung-uk Kim
87e71b7053SJung-uk KimThe operation did not complete because an application callback set by
88e71b7053SJung-uk KimSSL_CTX_set_client_hello_cb() has asked to be called again.
89e71b7053SJung-uk KimA call to L<SSL_get_error(3)> should return
90e71b7053SJung-uk KimSSL_ERROR_WANT_CLIENT_HELLO_CB.
91e71b7053SJung-uk Kim
92e71b7053SJung-uk Kim=back
93e71b7053SJung-uk Kim
94e71b7053SJung-uk KimSSL_want_nothing(), SSL_want_read(), SSL_want_write(), SSL_want_x509_lookup(),
95e71b7053SJung-uk KimSSL_want_async(), SSL_want_async_job(), and SSL_want_client_hello_cb() return
96e71b7053SJung-uk Kim1, when the corresponding condition is true or 0 otherwise.
97e71b7053SJung-uk Kim
98e71b7053SJung-uk Kim=head1 SEE ALSO
99e71b7053SJung-uk Kim
100e71b7053SJung-uk KimL<ssl(7)>, L<SSL_get_error(3)>
101e71b7053SJung-uk Kim
102e71b7053SJung-uk Kim=head1 HISTORY
103e71b7053SJung-uk Kim
104*6935a639SJung-uk KimThe SSL_want_client_hello_cb() function and the SSL_CLIENT_HELLO_CB return value
105*6935a639SJung-uk Kimwere added in OpenSSL 1.1.1.
106e71b7053SJung-uk Kim
107e71b7053SJung-uk Kim=head1 COPYRIGHT
108e71b7053SJung-uk Kim
109e71b7053SJung-uk KimCopyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved.
110e71b7053SJung-uk Kim
111e71b7053SJung-uk KimLicensed under the OpenSSL license (the "License").  You may not use
112e71b7053SJung-uk Kimthis file except in compliance with the License.  You can obtain a copy
113e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at
114e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>.
115e71b7053SJung-uk Kim
116e71b7053SJung-uk Kim=cut
117