123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- =pod
- =head1 NAME
- SSL_in_before,
- SSL_in_init,
- SSL_is_init_finished,
- SSL_in_connect_init,
- SSL_in_accept_init,
- SSL_get_state
- - retrieve information about the handshake state machine
- =head1 SYNOPSIS
- #include <openssl/ssl.h>
- int SSL_in_init(SSL *s);
- int SSL_in_before(SSL *s);
- int SSL_is_init_finished(SSL *s);
- int SSL_in_connect_init(SSL *s);
- int SSL_in_accept_init(SSL *s);
- OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl);
- =head1 DESCRIPTION
- SSL_in_init() returns 1 if the SSL/TLS state machine is currently processing or
- awaiting handshake messages, or 0 otherwise.
- SSL_in_before() returns 1 if no SSL/TLS handshake has yet been initiated, or 0
- otherwise.
- SSL_is_init_finished() returns 1 if the SSL/TLS connection is in a state where
- fully protected application data can be transferred or 0 otherwise.
- Note that in some circumstances (such as when early data is being transferred)
- SSL_in_init(), SSL_in_before() and SSL_is_init_finished() can all return 0.
- SSL_in_connect_init() returns 1 if B<s> is acting as a client and SSL_in_init()
- would return 1, or 0 otherwise.
- SSL_in_accept_init() returns 1 if B<s> is acting as a server and SSL_in_init()
- would return 1, or 0 otherwise.
- SSL_in_connect_init() and SSL_in_accept_init() are implemented as macros.
- SSL_get_state() returns a value indicating the current state of the handshake
- state machine. OSSL_HANDSHAKE_STATE is an enumerated type where each value
- indicates a discrete state machine state. Note that future versions of OpenSSL
- may define more states so applications should expect to receive unrecognised
- state values. The naming format is made up of a number of elements as follows:
- B<protocol>_ST_B<role>_B<message>
- B<protocol> is one of TLS or DTLS. DTLS is used where a state is specific to the
- DTLS protocol. Otherwise TLS is used.
- B<role> is one of CR, CW, SR or SW to indicate "client reading",
- "client writing", "server reading" or "server writing" respectively.
- B<message> is the name of a handshake message that is being or has been sent, or
- is being or has been processed.
- Additionally there are some special states that do not conform to the above
- format. These are:
- =over 4
- =item TLS_ST_BEFORE
- No handshake messages have yet been been sent or received.
- =item TLS_ST_OK
- Handshake message sending/processing has completed.
- =item TLS_ST_EARLY_DATA
- Early data is being processed
- =item TLS_ST_PENDING_EARLY_DATA_END
- Awaiting the end of early data processing
- =back
- =head1 RETURN VALUES
- SSL_in_init(), SSL_in_before(), SSL_is_init_finished(), SSL_in_connect_init()
- and SSL_in_accept_init() return values as indicated above.
- SSL_get_state() returns the current handshake state.
- =head1 SEE ALSO
- L<ssl(7)>,
- L<SSL_read_early_data(3)>
- =head1 COPYRIGHT
- Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
- Licensed under the OpenSSL license (the "License"). You may not use
- this file except in compliance with the License. You can obtain a copy
- in the file LICENSE in the source distribution or at
- L<https://www.openssl.org/source/license.html>.
- =cut
|