Switch from OpenSSL 0.9.7d to 0.9.7e.
[dragonfly.git] / secure / lib / libcrypto / man / BIO_f_ssl.3
CommitLineData
74dab6c2
JR
1.rn '' }`
2''' $RCSfile$$Revision$$Date$
3'''
4''' $Log$
5'''
6.de Sh
984263bc
MD
7.br
8.if t .Sp
9.ne 5
10.PP
11\fB\\$1\fR
12.PP
13..
74dab6c2 14.de Sp
984263bc
MD
15.if t .sp .5v
16.if n .sp
17..
74dab6c2 18.de Ip
984263bc
MD
19.br
20.ie \\n(.$>=3 .ne \\$3
21.el .ne 3
22.IP "\\$1" \\$2
23..
74dab6c2 24.de Vb
984263bc
MD
25.ft CW
26.nf
27.ne \\$1
28..
74dab6c2 29.de Ve
984263bc
MD
30.ft R
31
32.fi
33..
74dab6c2
JR
34'''
35'''
36''' Set up \*(-- to give an unbreakable dash;
37''' string Tr holds user defined translation string.
38''' Bell System Logo is used as a dummy character.
39'''
984263bc 40.tr \(*W-|\(bv\*(Tr
984263bc 41.ie n \{\
74dab6c2
JR
42.ds -- \(*W-
43.ds PI pi
44.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
46.ds L" ""
47.ds R" ""
48''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49''' \*(L" and \*(R", except that they are used on ".xx" lines,
50''' such as .IP and .SH, which do another additional levels of
51''' double-quote interpretation
52.ds M" """
53.ds S" """
54.ds N" """""
55.ds T" """""
56.ds L' '
57.ds R' '
58.ds M' '
59.ds S' '
60.ds N' '
61.ds T' '
984263bc
MD
62'br\}
63.el\{\
74dab6c2
JR
64.ds -- \(em\|
65.tr \*(Tr
66.ds L" ``
67.ds R" ''
68.ds M" ``
69.ds S" ''
70.ds N" ``
71.ds T" ''
72.ds L' `
73.ds R' '
74.ds M' `
75.ds S' '
76.ds N' `
77.ds T' '
78.ds PI \(*p
984263bc 79'br\}
74dab6c2
JR
80.\" If the F register is turned on, we'll generate
81.\" index entries out stderr for the following things:
82.\" TH Title
83.\" SH Header
84.\" Sh Subsection
85.\" Ip Item
86.\" X<> Xref (embedded
87.\" Of course, you have to process the output yourself
88.\" in some meaninful fashion.
89.if \nF \{
90.de IX
91.tm Index:\\$1\t\\n%\t"\\$2"
984263bc 92..
74dab6c2
JR
93.nr % 0
94.rr F
984263bc 95.\}
74dab6c2
JR
96.TH BIO_f_ssl 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
97.UC
98.if n .hy 0
984263bc 99.if n .na
74dab6c2
JR
100.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101.de CQ \" put $1 in typewriter font
102.ft CW
103'if n "\c
104'if t \\&\\$1\c
105'if n \\&\\$1\c
106'if n \&"
107\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
108'.ft R
109..
110.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111. \" AM - accent mark definitions
984263bc 112.bd B 3
74dab6c2 113. \" fudge factors for nroff and troff
984263bc 114.if n \{\
74dab6c2
JR
115. ds #H 0
116. ds #V .8m
117. ds #F .3m
118. ds #[ \f1
119. ds #] \fP
984263bc
MD
120.\}
121.if t \{\
74dab6c2
JR
122. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
123. ds #V .6m
124. ds #F 0
125. ds #[ \&
126. ds #] \&
984263bc 127.\}
74dab6c2 128. \" simple accents for nroff and troff
984263bc 129.if n \{\
74dab6c2
JR
130. ds ' \&
131. ds ` \&
132. ds ^ \&
133. ds , \&
134. ds ~ ~
135. ds ? ?
136. ds ! !
137. ds /
138. ds q
984263bc
MD
139.\}
140.if t \{\
74dab6c2
JR
141. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
984263bc 150.\}
74dab6c2 151. \" troff and (daisy-wheel) nroff accents
984263bc
MD
152.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
74dab6c2
JR
154.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
984263bc
MD
158.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163.ds ae a\h'-(\w'a'u*4/10)'e
164.ds Ae A\h'-(\w'A'u*4/10)'E
74dab6c2
JR
165.ds oe o\h'-(\w'o'u*4/10)'e
166.ds Oe O\h'-(\w'O'u*4/10)'E
167. \" corrections for vroff
984263bc
MD
168.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
74dab6c2 170. \" for low resolution devices (crt and lpr)
984263bc
MD
171.if \n(.H>23 .if \n(.V>19 \
172\{\
74dab6c2
JR
173. ds : e
174. ds 8 ss
175. ds v \h'-1'\o'\(aa\(ga'
176. ds _ \h'-1'^
177. ds . \h'-1'.
178. ds 3 3
179. ds o a
180. ds d- d\h'-1'\(ga
181. ds D- D\h'-1'\(hy
182. ds th \o'bp'
183. ds Th \o'LP'
184. ds ae ae
185. ds Ae AE
186. ds oe oe
187. ds Oe OE
984263bc
MD
188.\}
189.rm #[ #] #H #V #F C
984263bc
MD
190.SH "NAME"
191BIO_f_ssl, BIO_set_ssl, BIO_get_ssl, BIO_set_ssl_mode, BIO_set_ssl_renegotiate_bytes,
192BIO_get_num_renegotiates, BIO_set_ssl_renegotiate_timeout, BIO_new_ssl,
193BIO_new_ssl_connect, BIO_new_buffer_ssl_connect, BIO_ssl_copy_session_id,
74dab6c2 194BIO_ssl_shutdown \- SSL BIO
984263bc 195.SH "SYNOPSIS"
74dab6c2 196.PP
984263bc
MD
197.Vb 2
198\& #include <openssl/bio.h>
199\& #include <openssl/ssl.h>
200.Ve
201.Vb 1
202\& BIO_METHOD *BIO_f_ssl(void);
203.Ve
204.Vb 9
205\& #define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)
206\& #define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
207\& #define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
208\& #define BIO_set_ssl_renegotiate_bytes(b,num) \e
209\& BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL);
210\& #define BIO_set_ssl_renegotiate_timeout(b,seconds) \e
211\& BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL);
212\& #define BIO_get_num_renegotiates(b) \e
213\& BIO_ctrl(b,BIO_C_SET_SSL_NUM_RENEGOTIATES,0,NULL);
214.Ve
215.Vb 5
216\& BIO *BIO_new_ssl(SSL_CTX *ctx,int client);
217\& BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
218\& BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
219\& int BIO_ssl_copy_session_id(BIO *to,BIO *from);
220\& void BIO_ssl_shutdown(BIO *bio);
221.Ve
222.Vb 1
223\& #define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
224.Ve
225.SH "DESCRIPTION"
74dab6c2
JR
226\fIBIO_f_ssl()\fR returns the SSL BIO method. This is a filter BIO which
227is a wrapper round the OpenSSL SSL routines adding a BIO \*(L"flavour\*(R" to
228SSL I/O.
984263bc 229.PP
74dab6c2
JR
230I/O performed on an SSL BIO communicates using the SSL protocol with
231the SSLs read and write BIOs. If an SSL connection is not established
984263bc
MD
232then an attempt is made to establish one on the first I/O call.
233.PP
74dab6c2
JR
234If a BIO is appended to an SSL BIO using \fIBIO_push()\fR it is automatically
235used as the SSL BIOs read and write BIOs.
984263bc 236.PP
74dab6c2
JR
237Calling \fIBIO_reset()\fR on an SSL BIO closes down any current SSL connection
238by calling \fISSL_shutdown()\fR. \fIBIO_reset()\fR is then sent to the next BIO in
984263bc 239the chain: this will typically disconnect the underlying transport.
74dab6c2 240The SSL BIO is then reset to the initial accept or connect state.
984263bc 241.PP
74dab6c2
JR
242If the close flag is set when an SSL BIO is freed then the internal
243SSL structure is also freed using \fISSL_free()\fR.
984263bc 244.PP
74dab6c2 245\fIBIO_set_ssl()\fR sets the internal SSL pointer of BIO \fBb\fR to \fBssl\fR using
984263bc
MD
246the close flag \fBc\fR.
247.PP
74dab6c2
JR
248\fIBIO_get_ssl()\fR retrieves the SSL pointer of BIO \fBb\fR, it can then be
249manipulated using the standard SSL library functions.
984263bc 250.PP
74dab6c2 251\fIBIO_set_ssl_mode()\fR sets the SSL BIO mode to \fBclient\fR. If \fBclient\fR
984263bc
MD
252is 1 client mode is set. If \fBclient\fR is 0 server mode is set.
253.PP
74dab6c2 254\fIBIO_set_ssl_renegotiate_bytes()\fR sets the renegotiate byte count
984263bc 255to \fBnum\fR. When set after every \fBnum\fR bytes of I/O (read and write)
74dab6c2 256the SSL session is automatically renegotiated. \fBnum\fR must be at
984263bc
MD
257least 512 bytes.
258.PP
74dab6c2
JR
259\fIBIO_set_ssl_renegotiate_timeout()\fR sets the renegotiate timeout to
260\fBseconds\fR. When the renegotiate timeout elapses the session is
984263bc
MD
261automatically renegotiated.
262.PP
74dab6c2 263\fIBIO_get_num_renegotiates()\fR returns the total number of session
984263bc
MD
264renegotiations due to I/O or timeout.
265.PP
74dab6c2 266\fIBIO_new_ssl()\fR allocates an SSL BIO using SSL_CTX \fBctx\fR and using
984263bc
MD
267client mode if \fBclient\fR is non zero.
268.PP
74dab6c2
JR
269\fIBIO_new_ssl_connect()\fR creates a new BIO chain consisting of an
270SSL BIO (using \fBctx\fR) followed by a connect BIO.
984263bc 271.PP
74dab6c2
JR
272\fIBIO_new_buffer_ssl_connect()\fR creates a new BIO chain consisting
273of a buffering BIO, an SSL BIO (using \fBctx\fR) and a connect
274BIO.
984263bc 275.PP
74dab6c2
JR
276\fIBIO_ssl_copy_session_id()\fR copies an SSL session id between
277BIO chains \fBfrom\fR and \fBto\fR. It does this by locating the
278SSL BIOs in each chain and calling \fISSL_copy_session_id()\fR on
279the internal SSL pointer.
984263bc 280.PP
74dab6c2
JR
281\fIBIO_ssl_shutdown()\fR closes down an SSL connection on BIO
282chain \fBbio\fR. It does this by locating the SSL BIO in the
283chain and calling \fISSL_shutdown()\fR on its internal SSL
984263bc
MD
284pointer.
285.PP
74dab6c2
JR
286\fIBIO_do_handshake()\fR attempts to complete an SSL handshake on the
287supplied BIO and establish the SSL connection. It returns 1
984263bc
MD
288if the connection was established successfully. A zero or negative
289value is returned if the connection could not be established, the
290call \fIBIO_should_retry()\fR should be used for non blocking connect BIOs
74dab6c2 291to determine if the call should be retried. If an SSL connection has
984263bc
MD
292already been established this call has no effect.
293.SH "NOTES"
74dab6c2 294SSL BIOs are exceptional in that if the underlying transport
984263bc
MD
295is non blocking they can still request a retry in exceptional
296circumstances. Specifically this will happen if a session
297renegotiation takes place during a \fIBIO_read()\fR operation, one
74dab6c2 298case where this happens is when SGC or step up occurs.
984263bc 299.PP
74dab6c2 300In OpenSSL 0.9.6 and later the SSL flag SSL_AUTO_RETRY can be
984263bc 301set to disable this behaviour. That is when this flag is set
74dab6c2 302an SSL BIO using a blocking transport will never request a
984263bc
MD
303retry.
304.PP
305Since unknown \fIBIO_ctrl()\fR operations are sent through filter
306BIOs the servers name and port can be set using \fIBIO_set_host()\fR
74dab6c2
JR
307on the BIO returned by \fIBIO_new_ssl_connect()\fR without having
308to locate the connect BIO first.
984263bc
MD
309.PP
310Applications do not have to call \fIBIO_do_handshake()\fR but may wish
311to do so to separate the handshake process from other I/O
312processing.
313.SH "RETURN VALUES"
74dab6c2 314TBA
984263bc 315.SH "EXAMPLE"
74dab6c2
JR
316This SSL/TLS client example, attempts to retrieve a page from an
317SSL/TLS web server. The I/O routines are identical to those of the
984263bc
MD
318unencrypted example in BIO_s_connect(3).
319.PP
320.Vb 5
321\& BIO *sbio, *out;
322\& int len;
323\& char tmpbuf[1024];
324\& SSL_CTX *ctx;
325\& SSL *ssl;
326.Ve
327.Vb 3
328\& ERR_load_crypto_strings();
329\& ERR_load_SSL_strings();
330\& OpenSSL_add_all_algorithms();
331.Ve
332.Vb 3
333\& /* We would seed the PRNG here if the platform didn't
334\& * do it automatically
335\& */
336.Ve
337.Vb 1
338\& ctx = SSL_CTX_new(SSLv23_client_method());
339.Ve
340.Vb 4
341\& /* We'd normally set some stuff like the verify paths and
342\& * mode here because as things stand this will connect to
343\& * any server whose certificate is signed by any CA.
344\& */
345.Ve
346.Vb 1
347\& sbio = BIO_new_ssl_connect(ctx);
348.Ve
349.Vb 1
350\& BIO_get_ssl(sbio, &ssl);
351.Ve
352.Vb 4
353\& if(!ssl) {
354\& fprintf(stderr, "Can't locate SSL pointer\en");
355\& /* whatever ... */
356\& }
357.Ve
358.Vb 2
359\& /* Don't want any retries */
360\& SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
361.Ve
362.Vb 1
363\& /* We might want to do other things with ssl here */
364.Ve
365.Vb 1
366\& BIO_set_conn_hostname(sbio, "localhost:https");
367.Ve
368.Vb 6
369\& out = BIO_new_fp(stdout, BIO_NOCLOSE);
370\& if(BIO_do_connect(sbio) <= 0) {
371\& fprintf(stderr, "Error connecting to server\en");
372\& ERR_print_errors_fp(stderr);
373\& /* whatever ... */
374\& }
375.Ve
376.Vb 5
377\& if(BIO_do_handshake(sbio) <= 0) {
378\& fprintf(stderr, "Error establishing SSL connection\en");
379\& ERR_print_errors_fp(stderr);
380\& /* whatever ... */
381\& }
382.Ve
383.Vb 1
384\& /* Could examine ssl here to get connection info */
385.Ve
386.Vb 8
387\& BIO_puts(sbio, "GET / HTTP/1.0\en\en");
388\& for(;;) {
389\& len = BIO_read(sbio, tmpbuf, 1024);
390\& if(len <= 0) break;
391\& BIO_write(out, tmpbuf, len);
392\& }
393\& BIO_free_all(sbio);
394\& BIO_free(out);
395.Ve
396Here is a simple server example. It makes use of a buffering
74dab6c2 397BIO to allow lines to be read from the SSL BIO using BIO_gets.
984263bc
MD
398It creates a pseudo web page containing the actual request from
399a client and also echoes the request to standard output.
400.PP
401.Vb 5
402\& BIO *sbio, *bbio, *acpt, *out;
403\& int len;
404\& char tmpbuf[1024];
405\& SSL_CTX *ctx;
406\& SSL *ssl;
407.Ve
408.Vb 3
409\& ERR_load_crypto_strings();
410\& ERR_load_SSL_strings();
411\& OpenSSL_add_all_algorithms();
412.Ve
413.Vb 1
414\& /* Might seed PRNG here */
415.Ve
416.Vb 1
417\& ctx = SSL_CTX_new(SSLv23_server_method());
418.Ve
419.Vb 3
420\& if (!SSL_CTX_use_certificate_file(ctx,"server.pem",SSL_FILETYPE_PEM)
421\& || !SSL_CTX_use_PrivateKey_file(ctx,"server.pem",SSL_FILETYPE_PEM)
422\& || !SSL_CTX_check_private_key(ctx)) {
423.Ve
424.Vb 4
425\& fprintf(stderr, "Error setting up SSL_CTX\en");
426\& ERR_print_errors_fp(stderr);
427\& return 0;
428\& }
429.Ve
430.Vb 3
431\& /* Might do other things here like setting verify locations and
432\& * DH and/or RSA temporary key callbacks
433\& */
434.Ve
435.Vb 2
436\& /* New SSL BIO setup as server */
437\& sbio=BIO_new_ssl(ctx,0);
438.Ve
439.Vb 1
440\& BIO_get_ssl(sbio, &ssl);
441.Ve
442.Vb 4
443\& if(!ssl) {
444\& fprintf(stderr, "Can't locate SSL pointer\en");
445\& /* whatever ... */
446\& }
447.Ve
448.Vb 2
449\& /* Don't want any retries */
450\& SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
451.Ve
452.Vb 1
453\& /* Create the buffering BIO */
454.Ve
455.Vb 1
456\& bbio = BIO_new(BIO_f_buffer());
457.Ve
458.Vb 2
459\& /* Add to chain */
460\& sbio = BIO_push(bbio, sbio);
461.Ve
462.Vb 1
463\& acpt=BIO_new_accept("4433");
464.Ve
74dab6c2 465.Vb 7
984263bc
MD
466\& /* By doing this when a new connection is established
467\& * we automatically have sbio inserted into it. The
468\& * BIO chain is now 'swallowed' by the accept BIO and
469\& * will be freed when the accept BIO is freed.
470\& */
74dab6c2 471\&
984263bc
MD
472\& BIO_set_accept_bios(acpt,sbio);
473.Ve
474.Vb 1
475\& out = BIO_new_fp(stdout, BIO_NOCLOSE);
476.Ve
477.Vb 6
478\& /* Setup accept BIO */
479\& if(BIO_do_accept(acpt) <= 0) {
480\& fprintf(stderr, "Error setting up accept BIO\en");
481\& ERR_print_errors_fp(stderr);
482\& return 0;
483\& }
484.Ve
485.Vb 6
486\& /* Now wait for incoming connection */
487\& if(BIO_do_accept(acpt) <= 0) {
488\& fprintf(stderr, "Error in connection\en");
489\& ERR_print_errors_fp(stderr);
490\& return 0;
491\& }
492.Ve
493.Vb 3
494\& /* We only want one connection so remove and free
495\& * accept BIO
496\& */
497.Ve
498.Vb 1
499\& sbio = BIO_pop(acpt);
500.Ve
501.Vb 1
502\& BIO_free_all(acpt);
503.Ve
504.Vb 5
505\& if(BIO_do_handshake(sbio) <= 0) {
506\& fprintf(stderr, "Error in SSL handshake\en");
507\& ERR_print_errors_fp(stderr);
508\& return 0;
509\& }
510.Ve
511.Vb 3
74dab6c2
JR
512\& BIO_puts(sbio, "HTTP/1.0 200 OK\er\enContent-type: text/plain\er\en\er\en");
513\& BIO_puts(sbio, "\er\enConnection Established\er\enRequest headers:\er\en");
984263bc
MD
514\& BIO_puts(sbio, "--------------------------------------------------\er\en");
515.Ve
516.Vb 8
517\& for(;;) {
518\& len = BIO_gets(sbio, tmpbuf, 1024);
519\& if(len <= 0) break;
520\& BIO_write(sbio, tmpbuf, len);
521\& BIO_write(out, tmpbuf, len);
522\& /* Look for blank line signifying end of headers*/
523\& if((tmpbuf[0] == '\er') || (tmpbuf[0] == '\en')) break;
524\& }
525.Ve
526.Vb 2
527\& BIO_puts(sbio, "--------------------------------------------------\er\en");
74dab6c2 528\& BIO_puts(sbio, "\er\en");
984263bc
MD
529.Ve
530.Vb 2
531\& /* Since there is a buffering BIO present we had better flush it */
532\& BIO_flush(sbio);
533.Ve
534.Vb 1
535\& BIO_free_all(sbio);
536.Ve
537.SH "SEE ALSO"
74dab6c2
JR
538TBA
539
540.rn }` ''
541.IX Title "BIO_f_ssl 3"
542.IX Name "BIO_f_ssl, BIO_set_ssl, BIO_get_ssl, BIO_set_ssl_mode, BIO_set_ssl_renegotiate_bytes,
543BIO_get_num_renegotiates, BIO_set_ssl_renegotiate_timeout, BIO_new_ssl,
544BIO_new_ssl_connect, BIO_new_buffer_ssl_connect, BIO_ssl_copy_session_id,
545BIO_ssl_shutdown - SSL BIO"
546
547.IX Header "NAME"
548
549.IX Header "SYNOPSIS"
550
551.IX Header "DESCRIPTION"
552
553.IX Header "NOTES"
554
555.IX Header "RETURN VALUES"
556
557.IX Header "EXAMPLE"
558
984263bc 559.IX Header "SEE ALSO"
74dab6c2 560