Merge branch 'vendor/BIND' into bind_vendor2
[dragonfly.git] / secure / lib / libssl / man / SSL_CTX_set_cert_verify_callback.3
1 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
29 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
30 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
31 .\" nothing in troff, for use with C<>.
32 .tr \(*W-
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" Escape single quotes in literal strings from groff's Unicode transform.
52 .ie \n(.g .ds Aq \(aq
53 .el       .ds Aq '
54 .\"
55 .\" If the F register is turned on, we'll generate index entries on stderr for
56 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
57 .\" entries marked with X<> in POD.  Of course, you'll have to process the
58 .\" output yourself in some meaningful fashion.
59 .ie \nF \{\
60 .    de IX
61 .    tm Index:\\$1\t\\n%\t"\\$2"
62 ..
63 .    nr % 0
64 .    rr F
65 .\}
66 .el \{\
67 .    de IX
68 ..
69 .\}
70 .\"
71 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
72 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
73 .    \" fudge factors for nroff and troff
74 .if n \{\
75 .    ds #H 0
76 .    ds #V .8m
77 .    ds #F .3m
78 .    ds #[ \f1
79 .    ds #] \fP
80 .\}
81 .if t \{\
82 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
83 .    ds #V .6m
84 .    ds #F 0
85 .    ds #[ \&
86 .    ds #] \&
87 .\}
88 .    \" simple accents for nroff and troff
89 .if n \{\
90 .    ds ' \&
91 .    ds ` \&
92 .    ds ^ \&
93 .    ds , \&
94 .    ds ~ ~
95 .    ds /
96 .\}
97 .if t \{\
98 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
99 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
100 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
101 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
102 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
103 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
104 .\}
105 .    \" troff and (daisy-wheel) nroff accents
106 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
107 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
108 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
109 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
110 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
111 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
112 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
113 .ds ae a\h'-(\w'a'u*4/10)'e
114 .ds Ae A\h'-(\w'A'u*4/10)'E
115 .    \" corrections for vroff
116 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
117 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
118 .    \" for low resolution devices (crt and lpr)
119 .if \n(.H>23 .if \n(.V>19 \
120 \{\
121 .    ds : e
122 .    ds 8 ss
123 .    ds o a
124 .    ds d- d\h'-1'\(ga
125 .    ds D- D\h'-1'\(hy
126 .    ds th \o'bp'
127 .    ds Th \o'LP'
128 .    ds ae ae
129 .    ds Ae AE
130 .\}
131 .rm #[ #] #H #V #F C
132 .\" ========================================================================
133 .\"
134 .IX Title "SSL_CTX_set_cert_verify_callback 3"
135 .TH SSL_CTX_set_cert_verify_callback 3 "2009-11-06" "0.9.8l" "OpenSSL"
136 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
137 .\" way too many mistakes in technical documents.
138 .if n .ad l
139 .nh
140 .SH "NAME"
141 SSL_CTX_set_cert_verify_callback \- set peer certificate verification procedure
142 .SH "SYNOPSIS"
143 .IX Header "SYNOPSIS"
144 .Vb 1
145 \& #include <openssl/ssl.h>
146 \&
147 \& void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*callback)(X509_STORE_CTX *,void *), void *arg);
148 .Ve
149 .SH "DESCRIPTION"
150 .IX Header "DESCRIPTION"
151 \&\fISSL_CTX_set_cert_verify_callback()\fR sets the verification callback function for
152 \&\fIctx\fR. \s-1SSL\s0 objects that are created from \fIctx\fR inherit the setting valid at
153 the time when \fISSL_new\fR\|(3) is called.
154 .SH "NOTES"
155 .IX Header "NOTES"
156 Whenever a certificate is verified during a \s-1SSL/TLS\s0 handshake, a verification
157 function is called. If the application does not explicitly specify a
158 verification callback function, the built-in verification function is used.
159 If a verification callback \fIcallback\fR is specified via
160 \&\fISSL_CTX_set_cert_verify_callback()\fR, the supplied callback function is called
161 instead. By setting \fIcallback\fR to \s-1NULL\s0, the default behaviour is restored.
162 .PP
163 When the verification must be performed, \fIcallback\fR will be called with
164 the arguments callback(X509_STORE_CTX *x509_store_ctx, void *arg). The 
165 argument \fIarg\fR is specified by the application when setting \fIcallback\fR.
166 .PP
167 \&\fIcallback\fR should return 1 to indicate verification success and 0 to
168 indicate verification failure. If \s-1SSL_VERIFY_PEER\s0 is set and \fIcallback\fR
169 returns 0, the handshake will fail. As the verification procedure may
170 allow to continue the connection in case of failure (by always returning 1)
171 the verification result must be set in any case using the \fBerror\fR
172 member of \fIx509_store_ctx\fR so that the calling application will be informed
173 about the detailed result of the verification procedure!
174 .PP
175 Within \fIx509_store_ctx\fR, \fIcallback\fR has access to the \fIverify_callback\fR
176 function set using \fISSL_CTX_set_verify\fR\|(3).
177 .SH "WARNINGS"
178 .IX Header "WARNINGS"
179 Do not mix the verification callback described in this function with the
180 \&\fBverify_callback\fR function called during the verification process. The
181 latter is set using the \fISSL_CTX_set_verify\fR\|(3)
182 family of functions.
183 .PP
184 Providing a complete verification procedure including certificate purpose
185 settings etc is a complex task. The built-in procedure is quite powerful
186 and in most cases it should be sufficient to modify its behaviour using
187 the \fBverify_callback\fR function.
188 .SH "BUGS"
189 .IX Header "BUGS"
190 .SH "RETURN VALUES"
191 .IX Header "RETURN VALUES"
192 \&\fISSL_CTX_set_cert_verify_callback()\fR does not provide diagnostic information.
193 .SH "SEE ALSO"
194 .IX Header "SEE ALSO"
195 \&\fIssl\fR\|(3), \fISSL_CTX_set_verify\fR\|(3),
196 \&\fISSL_get_verify_result\fR\|(3),
197 \&\fISSL_CTX_load_verify_locations\fR\|(3)
198 .SH "HISTORY"
199 .IX Header "HISTORY"
200 Previous to OpenSSL 0.9.7, the \fIarg\fR argument to \fBSSL_CTX_set_cert_verify_callback\fR
201 was ignored, and \fIcallback\fR was called simply as
202  int (*callback)(X509_STORE_CTX *)
203 To compile software written for previous versions of OpenSSL, a dummy
204 argument will have to be added to \fIcallback\fR.