]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/BIO_set_callback.3
MFC: r331627
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / BIO_set_callback.3
1 .\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.35)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "BIO_set_callback 3"
132 .TH BIO_set_callback 3 "2018-03-27" "1.0.2o" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg,
139 BIO_debug_callback \- BIO callback functions
140 .SH "SYNOPSIS"
141 .IX Header "SYNOPSIS"
142 .Vb 1
143 \& #include <openssl/bio.h>
144 \&
145 \& #define BIO_set_callback(b,cb)         ((b)\->callback=(cb))
146 \& #define BIO_get_callback(b)            ((b)\->callback)
147 \& #define BIO_set_callback_arg(b,arg)    ((b)\->cb_arg=(char *)(arg))
148 \& #define BIO_get_callback_arg(b)                ((b)\->cb_arg)
149 \&
150 \& long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
151 \&        long argl,long ret);
152 \&
153 \& typedef long (*callback)(BIO *b, int oper, const char *argp,
154 \&                        int argi, long argl, long retvalue);
155 .Ve
156 .SH "DESCRIPTION"
157 .IX Header "DESCRIPTION"
158 \&\fIBIO_set_callback()\fR and \fIBIO_get_callback()\fR set and retrieve the \s-1BIO\s0 callback,
159 they are both macros. The callback is called during most high level \s-1BIO\s0
160 operations. It can be used for debugging purposes to trace operations on
161 a \s-1BIO\s0 or to modify its operation.
162 .PP
163 \&\fIBIO_set_callback_arg()\fR and \fIBIO_get_callback_arg()\fR are macros which can be
164 used to set and retrieve an argument for use in the callback.
165 .PP
166 \&\fIBIO_debug_callback()\fR is a standard debugging callback which prints
167 out information relating to each \s-1BIO\s0 operation. If the callback
168 argument is set if is interpreted as a \s-1BIO\s0 to send the information
169 to, otherwise stderr is used.
170 .PP
171 \&\fIcallback()\fR is the callback function itself. The meaning of each
172 argument is described below.
173 .PP
174 The \s-1BIO\s0 the callback is attached to is passed in \fBb\fR.
175 .PP
176 \&\fBoper\fR is set to the operation being performed. For some operations
177 the callback is called twice, once before and once after the actual
178 operation, the latter case has \fBoper\fR or'ed with \s-1BIO_CB_RETURN.\s0
179 .PP
180 The meaning of the arguments \fBargp\fR, \fBargi\fR and \fBargl\fR depends on
181 the value of \fBoper\fR, that is the operation being performed.
182 .PP
183 \&\fBretvalue\fR is the return value that would be returned to the
184 application if no callback were present. The actual value returned
185 is the return value of the callback itself. In the case of callbacks
186 called before the actual \s-1BIO\s0 operation 1 is placed in retvalue, if
187 the return value is not positive it will be immediately returned to
188 the application and the \s-1BIO\s0 operation will not be performed.
189 .PP
190 The callback should normally simply return \fBretvalue\fR when it has
191 finished processing, unless if specifically wishes to modify the
192 value returned to the application.
193 .SH "CALLBACK OPERATIONS"
194 .IX Header "CALLBACK OPERATIONS"
195 .IP "\fBBIO_free(b)\fR" 4
196 .IX Item "BIO_free(b)"
197 callback(b, \s-1BIO_CB_FREE, NULL, 0L, 0L, 1L\s0) is called before the
198 free operation.
199 .IP "\fBBIO_read(b, out, outl)\fR" 4
200 .IX Item "BIO_read(b, out, outl)"
201 callback(b, \s-1BIO_CB_READ,\s0 out, outl, 0L, 1L) is called before
202 the read and callback(b, BIO_CB_READ|BIO_CB_RETURN, out, outl, 0L, retvalue)
203 after.
204 .IP "\fBBIO_write(b, in, inl)\fR" 4
205 .IX Item "BIO_write(b, in, inl)"
206 callback(b, \s-1BIO_CB_WRITE,\s0 in, inl, 0L, 1L) is called before
207 the write and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, inl, 0L, retvalue)
208 after.
209 .IP "\fBBIO_gets(b, out, outl)\fR" 4
210 .IX Item "BIO_gets(b, out, outl)"
211 callback(b, \s-1BIO_CB_GETS,\s0 out, outl, 0L, 1L) is called before
212 the operation and callback(b, BIO_CB_GETS|BIO_CB_RETURN, out, outl, 0L, retvalue)
213 after.
214 .IP "\fBBIO_puts(b, in)\fR" 4
215 .IX Item "BIO_puts(b, in)"
216 callback(b, \s-1BIO_CB_WRITE,\s0 in, 0, 0L, 1L) is called before
217 the operation and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, 0, 0L, retvalue)
218 after.
219 .IP "\fBBIO_ctrl(\s-1BIO\s0 *b, int cmd, long larg, void *parg)\fR" 4
220 .IX Item "BIO_ctrl(BIO *b, int cmd, long larg, void *parg)"
221 callback(b,BIO_CB_CTRL,parg,cmd,larg,1L) is called before the call and
222 callback(b,BIO_CB_CTRL|BIO_CB_RETURN,parg,cmd, larg,ret) after.
223 .SH "EXAMPLE"
224 .IX Header "EXAMPLE"
225 The \fIBIO_debug_callback()\fR function is a good example, its source is
226 in crypto/bio/bio_cb.c
227 .SH "SEE ALSO"
228 .IX Header "SEE ALSO"
229 \&\s-1TBA\s0