1=pod 2 3=head1 NAME 4 5SSL_set_connect_state, SSL_set_accept_state, SSL_is_server 6- functions for manipulating and examining the client or server mode of an SSL object 7 8=head1 SYNOPSIS 9 10 #include <openssl/ssl.h> 11 12 void SSL_set_connect_state(SSL *ssl); 13 14 void SSL_set_accept_state(SSL *ssl); 15 16 int SSL_is_server(const SSL *ssl); 17 18=head1 DESCRIPTION 19 20SSL_set_connect_state() sets B<ssl> to work in client mode. 21 22SSL_set_accept_state() sets B<ssl> to work in server mode. 23 24SSL_is_server() checks if B<ssl> is working in server mode. 25 26=head1 NOTES 27 28When the SSL_CTX object was created with L<SSL_CTX_new(3)>, 29it was either assigned a dedicated client method, a dedicated server 30method, or a generic method, that can be used for both client and 31server connections. (The method might have been changed with 32L<SSL_CTX_set_ssl_version(3)> or 33L<SSL_set_ssl_method(3)>.) 34 35When beginning a new handshake, the SSL engine must know whether it must 36call the connect (client) or accept (server) routines. Even though it may 37be clear from the method chosen, whether client or server mode was 38requested, the handshake routines must be explicitly set. 39 40When using the L<SSL_connect(3)> or 41L<SSL_accept(3)> routines, the correct handshake 42routines are automatically set. When performing a transparent negotiation 43using L<SSL_write_ex(3)>, L<SSL_write(3)>, L<SSL_read_ex(3)>, or L<SSL_read(3)>, 44the handshake routines must be explicitly set in advance using either 45SSL_set_connect_state() or SSL_set_accept_state(). 46 47If SSL_is_server() is called before SSL_set_connect_state() or 48SSL_set_accept_state() is called (either automatically or explicitly), 49the result depends on what method was used when SSL_CTX was created with 50L<SSL_CTX_new(3)>. If a generic method or a dedicated server method was 51passed to L<SSL_CTX_new(3)>, SSL_is_server() returns 1; otherwise, it returns 0. 52 53=head1 RETURN VALUES 54 55SSL_set_connect_state() and SSL_set_accept_state() do not return diagnostic 56information. 57 58SSL_is_server() returns 1 if B<ssl> is working in server mode or 0 for client mode. 59 60=head1 SEE ALSO 61 62L<ssl(7)>, L<SSL_new(3)>, L<SSL_CTX_new(3)>, 63L<SSL_connect(3)>, L<SSL_accept(3)>, 64L<SSL_write_ex(3)>, L<SSL_write(3)>, L<SSL_read_ex(3)>, L<SSL_read(3)>, 65L<SSL_do_handshake(3)>, 66L<SSL_CTX_set_ssl_version(3)> 67 68=head1 COPYRIGHT 69 70Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. 71 72Licensed under the OpenSSL license (the "License"). You may not use 73this file except in compliance with the License. You can obtain a copy 74in the file LICENSE in the source distribution or at 75L<https://www.openssl.org/source/license.html>. 76 77=cut 78