mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| =pod
 | |
| 
 | |
| =head1 NAME
 | |
| 
 | |
| SSL_set_bio, SSL_set0_rbio, SSL_set0_wbio - connect the SSL object with a BIO
 | |
| 
 | |
| =head1 SYNOPSIS
 | |
| 
 | |
|  #include <openssl/ssl.h>
 | |
| 
 | |
|  void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
 | |
|  void SSL_set0_rbio(SSL *s, BIO *rbio);
 | |
|  void SSL_set0_wbio(SSL *s, BIO *wbio);
 | |
| 
 | |
| =head1 DESCRIPTION
 | |
| 
 | |
| SSL_set0_rbio() connects the BIO B<rbio> for the read operations of the B<ssl>
 | |
| object. The SSL engine inherits the behaviour of B<rbio>. If the BIO is
 | |
| nonblocking then the B<ssl> object will also have nonblocking behaviour. This
 | |
| function transfers ownership of B<rbio> to B<ssl>. It will be automatically
 | |
| freed using L<BIO_free_all(3)> when the B<ssl> is freed. On calling this
 | |
| function, any existing B<rbio> that was previously set will also be freed via a
 | |
| call to L<BIO_free_all(3)> (this includes the case where the B<rbio> is set to
 | |
| the same value as previously).
 | |
| 
 | |
| SSL_set0_wbio() works in the same as SSL_set0_rbio() except that it connects
 | |
| the BIO B<wbio> for the write operations of the B<ssl> object. Note that if the
 | |
| rbio and wbio are the same then SSL_set0_rbio() and SSL_set0_wbio() each take
 | |
| ownership of one reference. Therefore, it may be necessary to increment the
 | |
| number of references available using L<BIO_up_ref(3)> before calling the set0
 | |
| functions.
 | |
| 
 | |
| SSL_set_bio() is similar to SSL_set0_rbio() and SSL_set0_wbio() except
 | |
| that it connects both the B<rbio> and the B<wbio> at the same time, and
 | |
| transfers the ownership of B<rbio> and B<wbio> to B<ssl> according to
 | |
| the following set of rules:
 | |
| 
 | |
| =over 2
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If neither the B<rbio> or B<wbio> have changed from their previous values
 | |
| then nothing is done.
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If the B<rbio> and B<wbio> parameters are different and both are different
 | |
| to their
 | |
| previously set values then one reference is consumed for the rbio and one
 | |
| reference is consumed for the wbio.
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If the B<rbio> and B<wbio> parameters are the same and the B<rbio> is not
 | |
| the same as the previously set value then one reference is consumed.
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If the B<rbio> and B<wbio> parameters are the same and the B<rbio> is the
 | |
| same as the previously set value, then no additional references are consumed.
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If the B<rbio> and B<wbio> parameters are different and the B<rbio> is the
 | |
| same as the
 | |
| previously set value then one reference is consumed for the B<wbio> and no
 | |
| references are consumed for the B<rbio>.
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If the B<rbio> and B<wbio> parameters are different and the B<wbio> is the
 | |
| same as the previously set value and the old B<rbio> and B<wbio> values
 | |
| were the same as each other then one reference is consumed for the B<rbio>
 | |
| and no references are consumed for the B<wbio>.
 | |
| 
 | |
| =item *
 | |
| 
 | |
| If the B<rbio> and B<wbio> parameters are different and the B<wbio>
 | |
| is the same as the
 | |
| previously set value and the old B<rbio> and B<wbio> values were different
 | |
| to each other, then one reference is consumed for the B<rbio> and one 
 | |
| reference is consumed for the B<wbio>.
 | |
| 
 | |
| =back
 | |
| 
 | |
| Because of this complexity, this function should be avoided;
 | |
| use SSL_set0_rbio() and SSL_set0_wbio() instead.
 | |
| 
 | |
| =head1 RETURN VALUES
 | |
| 
 | |
| SSL_set_bio(), SSL_set0_rbio() and SSL_set0_wbio() cannot fail.
 | |
| 
 | |
| =head1 SEE ALSO
 | |
| 
 | |
| L<SSL_get_rbio(3)>,
 | |
| L<SSL_connect(3)>, L<SSL_accept(3)>,
 | |
| L<SSL_shutdown(3)>, L<ssl(7)>, L<bio(7)>
 | |
| 
 | |
| =head1 HISTORY
 | |
| 
 | |
| SSL_set0_rbio() and SSL_set0_wbio() were added in OpenSSL 1.1.0.
 | |
| 
 | |
| =head1 COPYRIGHT
 | |
| 
 | |
| Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
 | |
| 
 | |
| Licensed under the Apache License 2.0 (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
 |