| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-16 23:39:28 +08:00
										 |  |  | SSL_clear - reset SSL object to allow another connection | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/ssl.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-20 07:11:42 +08:00
										 |  |  |  int SSL_clear(SSL *ssl); | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-16 23:39:28 +08:00
										 |  |  | Reset B<ssl> to allow another connection. All settings (method, ciphers, | 
					
						
							| 
									
										
										
										
											2001-02-13 22:00:09 +08:00
										 |  |  | BIOs) are kept. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SSL_clear is used to prepare an SSL object for a new connection. While all | 
					
						
							|  |  |  | settings are kept, a side effect is the handling of the current SSL session. | 
					
						
							|  |  |  | If a session is still B<open>, it is considered bad and will be removed | 
					
						
							|  |  |  | from the session cache, as required by RFC2246. A session is considered open, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | if L<SSL_shutdown(3)> was not called for the connection | 
					
						
							|  |  |  | or at least L<SSL_set_shutdown(3)> was used to | 
					
						
							| 
									
										
										
										
											2001-02-13 22:00:09 +08:00
										 |  |  | set the SSL_SENT_SHUTDOWN state. | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-02-27 16:08:57 +08:00
										 |  |  | If a session was closed cleanly, the session object will be kept and all | 
					
						
							|  |  |  | settings corresponding. This explicitly means, that e.g. the special method | 
					
						
							|  |  |  | used during the session will be kept for the next handshake. So if the | 
					
						
							|  |  |  | session was a TLSv1 session, a SSL client object will use a TLSv1 client | 
					
						
							|  |  |  | method for the next handshake and a SSL server object will use a TLSv1 | 
					
						
							| 
									
										
										
										
											2015-03-31 21:29:53 +08:00
										 |  |  | server method, even if TLS_*_methods were chosen on startup. This | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | will might lead to connection failures (see L<SSL_new(3)>) | 
					
						
							| 
									
										
										
										
											2002-02-27 16:08:57 +08:00
										 |  |  | for a description of the method's properties. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 WARNINGS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SSL_clear() resets the SSL object to allow for another connection. The | 
					
						
							|  |  |  | reset operation however keeps several settings of the last sessions | 
					
						
							|  |  |  | (some of these settings were made automatically during the last | 
					
						
							| 
									
										
										
										
											2011-10-13 21:27:09 +08:00
										 |  |  | handshake). It only makes sense for a new connection with the exact | 
					
						
							|  |  |  | same peer that shares these settings, and may fail if that peer | 
					
						
							|  |  |  | changes its settings between connections. Use the sequence | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<SSL_get_session(3)>; | 
					
						
							|  |  |  | L<SSL_new(3)>; | 
					
						
							|  |  |  | L<SSL_set_session(3)>; | 
					
						
							|  |  |  | L<SSL_free(3)> | 
					
						
							| 
									
										
										
										
											2011-10-13 21:27:09 +08:00
										 |  |  | instead to avoid such failures | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | (or simply L<SSL_free(3)>; L<SSL_new(3)> | 
					
						
							| 
									
										
										
										
											2011-10-13 21:27:09 +08:00
										 |  |  | if session reuse is not desired). | 
					
						
							| 
									
										
										
										
											2002-02-27 16:08:57 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following return values can occur: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-21 17:03:01 +08:00
										 |  |  | =item Z<>0 | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The SSL_clear() operation could not be performed. Check the error stack to | 
					
						
							|  |  |  | find out the reason. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-21 17:03:01 +08:00
										 |  |  | =item Z<>1 | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-16 23:39:28 +08:00
										 |  |  | The SSL_clear() operation was successful. | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<SSL_new(3)>, L<SSL_free(3)>, | 
					
						
							|  |  |  | L<SSL_shutdown(3)>, L<SSL_set_shutdown(3)>, | 
					
						
							| 
									
										
										
										
											2016-11-11 16:33:09 +08:00
										 |  |  | L<SSL_CTX_set_options(3)>, L<ssl(7)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<SSL_CTX_set_client_cert_cb(3)> | 
					
						
							| 
									
										
										
										
											2000-09-14 21:11:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-06 21:04:44 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | 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 |