1 | =pod
|
---|
2 |
|
---|
3 | =head1 NAME
|
---|
4 |
|
---|
5 | SSL_set_bio, SSL_set0_rbio, SSL_set0_wbio - connect the SSL object with a BIO
|
---|
6 |
|
---|
7 | =head1 SYNOPSIS
|
---|
8 |
|
---|
9 | #include <openssl/ssl.h>
|
---|
10 |
|
---|
11 | void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
|
---|
12 | void SSL_set0_rbio(SSL *s, BIO *rbio);
|
---|
13 | void SSL_set0_wbio(SSL *s, BIO *wbio);
|
---|
14 |
|
---|
15 | =head1 DESCRIPTION
|
---|
16 |
|
---|
17 | SSL_set0_rbio() connects the BIO B<rbio> for the read operations of the B<ssl>
|
---|
18 | object. The SSL engine inherits the behaviour of B<rbio>. If the BIO is
|
---|
19 | nonblocking then the B<ssl> object will also have nonblocking behaviour. This
|
---|
20 | function transfers ownership of B<rbio> to B<ssl>. It will be automatically
|
---|
21 | freed using L<BIO_free_all(3)> when the B<ssl> is freed. On calling this
|
---|
22 | function, any existing B<rbio> that was previously set will also be freed via a
|
---|
23 | call to L<BIO_free_all(3)> (this includes the case where the B<rbio> is set to
|
---|
24 | the same value as previously).
|
---|
25 |
|
---|
26 | SSL_set0_wbio() works in the same as SSL_set0_rbio() except that it connects
|
---|
27 | the BIO B<wbio> for the write operations of the B<ssl> object. Note that if the
|
---|
28 | rbio and wbio are the same then SSL_set0_rbio() and SSL_set0_wbio() each take
|
---|
29 | ownership of one reference. Therefore, it may be necessary to increment the
|
---|
30 | number of references available using L<BIO_up_ref(3)> before calling the set0
|
---|
31 | functions.
|
---|
32 |
|
---|
33 | SSL_set_bio() is similar to SSL_set0_rbio() and SSL_set0_wbio() except
|
---|
34 | that it connects both the B<rbio> and the B<wbio> at the same time, and
|
---|
35 | transfers the ownership of B<rbio> and B<wbio> to B<ssl> according to
|
---|
36 | the following set of rules:
|
---|
37 |
|
---|
38 | =over 2
|
---|
39 |
|
---|
40 | =item *
|
---|
41 |
|
---|
42 | If neither the B<rbio> or B<wbio> have changed from their previous values
|
---|
43 | then nothing is done.
|
---|
44 |
|
---|
45 | =item *
|
---|
46 |
|
---|
47 | If the B<rbio> and B<wbio> parameters are different and both are different
|
---|
48 | to their
|
---|
49 | previously set values then one reference is consumed for the rbio and one
|
---|
50 | reference is consumed for the wbio.
|
---|
51 |
|
---|
52 | =item *
|
---|
53 |
|
---|
54 | If the B<rbio> and B<wbio> parameters are the same and the B<rbio> is not
|
---|
55 | the same as the previously set value then one reference is consumed.
|
---|
56 |
|
---|
57 | =item *
|
---|
58 |
|
---|
59 | If the B<rbio> and B<wbio> parameters are the same and the B<rbio> is the
|
---|
60 | same as the previously set value, then no additional references are consumed.
|
---|
61 |
|
---|
62 | =item *
|
---|
63 |
|
---|
64 | If the B<rbio> and B<wbio> parameters are different and the B<rbio> is the
|
---|
65 | same as the
|
---|
66 | previously set value then one reference is consumed for the B<wbio> and no
|
---|
67 | references are consumed for the B<rbio>.
|
---|
68 |
|
---|
69 | =item *
|
---|
70 |
|
---|
71 | If the B<rbio> and B<wbio> parameters are different and the B<wbio> is the
|
---|
72 | same as the previously set value and the old B<rbio> and B<wbio> values
|
---|
73 | were the same as each other then one reference is consumed for the B<rbio>
|
---|
74 | and no references are consumed for the B<wbio>.
|
---|
75 |
|
---|
76 | =item *
|
---|
77 |
|
---|
78 | If the B<rbio> and B<wbio> parameters are different and the B<wbio>
|
---|
79 | is the same as the
|
---|
80 | previously set value and the old B<rbio> and B<wbio> values were different
|
---|
81 | to each other, then one reference is consumed for the B<rbio> and one
|
---|
82 | reference is consumed for the B<wbio>.
|
---|
83 |
|
---|
84 | =back
|
---|
85 |
|
---|
86 | Because of this complexity, this function should be avoided;
|
---|
87 | use SSL_set0_rbio() and SSL_set0_wbio() instead.
|
---|
88 |
|
---|
89 | =head1 RETURN VALUES
|
---|
90 |
|
---|
91 | SSL_set_bio(), SSL_set0_rbio() and SSL_set0_wbio() cannot fail.
|
---|
92 |
|
---|
93 | =head1 SEE ALSO
|
---|
94 |
|
---|
95 | L<SSL_get_rbio(3)>,
|
---|
96 | L<SSL_connect(3)>, L<SSL_accept(3)>,
|
---|
97 | L<SSL_shutdown(3)>, L<ssl(7)>, L<bio(7)>
|
---|
98 |
|
---|
99 | =head1 HISTORY
|
---|
100 |
|
---|
101 | SSL_set0_rbio() and SSL_set0_wbio() were added in OpenSSL 1.1.0.
|
---|
102 |
|
---|
103 | =head1 COPYRIGHT
|
---|
104 |
|
---|
105 | Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
|
---|
106 |
|
---|
107 | Licensed under the Apache License 2.0 (the "License"). You may not use
|
---|
108 | this file except in compliance with the License. You can obtain a copy
|
---|
109 | in the file LICENSE in the source distribution or at
|
---|
110 | L<https://www.openssl.org/source/license.html>.
|
---|
111 |
|
---|
112 | =cut
|
---|