No empty .Rs/.Re
[netbsd-mini2440.git] / crypto / dist / heimdal / lib / krb5 / krb5_auth_context.3
blobd461f88f89bdfeea54ca470e73f95040b492dcb4
1 .\" Copyright (c) 2001 - 2005 Kungliga Tekniska Högskolan
2 .\" (Royal Institute of Technology, Stockholm, Sweden).
3 .\" All rights reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
7 .\" are met:
8 .\"
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\"
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\"    notice, this list of conditions and the following disclaimer in the
14 .\"    documentation and/or other materials provided with the distribution.
15 .\"
16 .\" 3. Neither the name of the Institute nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\" $Heimdal: krb5_auth_context.3 15240 2005-05-25 13:47:58Z lha $
33 .\" $NetBSD$
34 .\"
35 .Dd May 17, 2005
36 .Dt KRB5_AUTH_CONTEXT 3
37 .Os
38 .Sh NAME
39 .Nm krb5_auth_con_addflags ,
40 .Nm krb5_auth_con_free ,
41 .Nm krb5_auth_con_genaddrs ,
42 .Nm krb5_auth_con_generatelocalsubkey ,
43 .Nm krb5_auth_con_getaddrs ,
44 .Nm krb5_auth_con_getauthenticator ,
45 .Nm krb5_auth_con_getflags ,
46 .Nm krb5_auth_con_getkey ,
47 .Nm krb5_auth_con_getlocalsubkey ,
48 .Nm krb5_auth_con_getrcache ,
49 .Nm krb5_auth_con_getremotesubkey ,
50 .Nm krb5_auth_con_getuserkey ,
51 .Nm krb5_auth_con_init ,
52 .Nm krb5_auth_con_initivector ,
53 .Nm krb5_auth_con_removeflags ,
54 .Nm krb5_auth_con_setaddrs ,
55 .Nm krb5_auth_con_setaddrs_from_fd ,
56 .Nm krb5_auth_con_setflags ,
57 .Nm krb5_auth_con_setivector ,
58 .Nm krb5_auth_con_setkey ,
59 .Nm krb5_auth_con_setlocalsubkey ,
60 .Nm krb5_auth_con_setrcache ,
61 .Nm krb5_auth_con_setremotesubkey ,
62 .Nm krb5_auth_con_setuserkey ,
63 .Nm krb5_auth_context ,
64 .Nm krb5_auth_getcksumtype ,
65 .Nm krb5_auth_getkeytype ,
66 .Nm krb5_auth_getlocalseqnumber ,
67 .Nm krb5_auth_getremoteseqnumber ,
68 .Nm krb5_auth_setcksumtype ,
69 .Nm krb5_auth_setkeytype ,
70 .Nm krb5_auth_setlocalseqnumber ,
71 .Nm krb5_auth_setremoteseqnumber ,
72 .Nm krb5_free_authenticator
73 .Nd manage authentication on connection level
74 .Sh LIBRARY
75 Kerberos 5 Library (libkrb5, -lkrb5)
76 .Sh SYNOPSIS
77 .In krb5/krb5.h
78 .Ft krb5_error_code
79 .Fo krb5_auth_con_init
80 .Fa "krb5_context context"
81 .Fa "krb5_auth_context *auth_context"
82 .Fc
83 .Ft void
84 .Fo krb5_auth_con_free
85 .Fa "krb5_context context"
86 .Fa "krb5_auth_context auth_context"
87 .Fc
88 .Ft krb5_error_code
89 .Fo krb5_auth_con_setflags
90 .Fa "krb5_context context"
91 .Fa "krb5_auth_context auth_context"
92 .Fa "int32_t flags"
93 .Fc
94 .Ft krb5_error_code
95 .Fo krb5_auth_con_getflags
96 .Fa "krb5_context context"
97 .Fa "krb5_auth_context auth_context"
98 .Fa "int32_t *flags"
99 .Fc
100 .Ft krb5_error_code
101 .Fo krb5_auth_con_addflags
102 .Fa "krb5_context context"
103 .Fa "krb5_auth_context auth_context"
104 .Fa "int32_t addflags"
105 .Fa "int32_t *flags"
107 .Ft krb5_error_code
108 .Fo krb5_auth_con_removeflags
109 .Fa "krb5_context context"
110 .Fa "krb5_auth_context auth_context"
111 .Fa "int32_t removelags"
112 .Fa "int32_t *flags"
114 .Ft krb5_error_code
115 .Fo krb5_auth_con_setaddrs
116 .Fa "krb5_context context"
117 .Fa "krb5_auth_context auth_context"
118 .Fa "krb5_address *local_addr"
119 .Fa "krb5_address *remote_addr"
121 .Ft krb5_error_code
122 .Fo krb5_auth_con_getaddrs
123 .Fa "krb5_context context"
124 .Fa "krb5_auth_context auth_context"
125 .Fa "krb5_address **local_addr"
126 .Fa "krb5_address **remote_addr"
128 .Ft krb5_error_code
129 .Fo krb5_auth_con_genaddrs
130 .Fa "krb5_context context"
131 .Fa "krb5_auth_context auth_context"
132 .Fa "int fd"
133 .Fa "int flags"
135 .Ft krb5_error_code
136 .Fo krb5_auth_con_setaddrs_from_fd
137 .Fa "krb5_context context"
138 .Fa "krb5_auth_context auth_context"
139 .Fa "void *p_fd"
141 .Ft krb5_error_code
142 .Fo krb5_auth_con_getkey
143 .Fa "krb5_context context"
144 .Fa "krb5_auth_context auth_context"
145 .Fa "krb5_keyblock **keyblock"
147 .Ft krb5_error_code
148 .Fo krb5_auth_con_getlocalsubkey
149 .Fa "krb5_context context"
150 .Fa "krb5_auth_context auth_context"
151 .Fa "krb5_keyblock **keyblock"
153 .Ft krb5_error_code
154 .Fo krb5_auth_con_getremotesubkey
155 .Fa "krb5_context context"
156 .Fa "krb5_auth_context auth_context"
157 .Fa "krb5_keyblock **keyblock"
159 .Ft krb5_error_code
160 .Fo krb5_auth_con_generatelocalsubkey
161 .Fa "krb5_context context"
162 .Fa "krb5_auth_context auth_context"
163 .Fa krb5_keyblock *key"
165 .Ft krb5_error_code
166 .Fo krb5_auth_con_initivector
167 .Fa "krb5_context context"
168 .Fa "krb5_auth_context auth_context"
170 .Ft krb5_error_code
171 .Fo krb5_auth_con_setivector
172 .Fa "krb5_context context"
173 .Fa "krb5_auth_context *auth_context"
174 .Fa "krb5_pointer ivector"
176 .Ft void
177 .Fo krb5_free_authenticator
178 .Fa "krb5_context context"
179 .Fa "krb5_authenticator *authenticator"
181 .Sh DESCRIPTION
183 .Nm krb5_auth_context
184 structure holds all context related to an authenticated connection, in
185 a similar way to
186 .Nm krb5_context
187 that holds the context for the thread or process.
188 .Nm krb5_auth_context
189 is used by various functions that are directly related to
190 authentication between the server/client. Example of data that this
191 structure contains are various flags, addresses of client and server,
192 port numbers, keyblocks (and subkeys), sequence numbers, replay cache,
193 and checksum-type.
195 .Fn krb5_auth_con_init
196 allocates and initializes the
197 .Nm krb5_auth_context
198 structure. Default values can be changed with
199 .Fn krb5_auth_con_setcksumtype
201 .Fn krb5_auth_con_setflags .
203 .Nm auth_context
204 structure must be freed by
205 .Fn krb5_auth_con_free .
207 .Fn krb5_auth_con_getflags ,
208 .Fn krb5_auth_con_setflags ,
209 .Fn krb5_auth_con_addflags
211 .Fn krb5_auth_con_removeflags
212 gets and modifies the flags for a
213 .Nm krb5_auth_context
214 structure. Possible flags to set are:
215 .Bl -tag -width Ds
216 .It Dv KRB5_AUTH_CONTEXT_DO_SEQUENCE
217 Generate and check sequence-number on each packet.
218 .It Dv KRB5_AUTH_CONTEXT_DO_TIME
219 Check timestamp on incoming packets.
220 .It Dv KRB5_AUTH_CONTEXT_RET_SEQUENCE , Dv KRB5_AUTH_CONTEXT_RET_TIME
221 Return sequence numbers and time stamps in the outdata parameters.
222 .It Dv KRB5_AUTH_CONTEXT_CLEAR_FORWARDED_CRED
223 will force
224 .Fn krb5_get_forwarded_creds
226 .Fn krb5_fwd_tgt_creds
227 to create unencrypted )
228 .Dv ENCTYPE_NULL )
229 credentials.
230 This is for use with old MIT server and JAVA based servers as
231 they can't handle encrypted
232 .Dv KRB-CRED .
233 Note that sending such
234 .Dv KRB-CRED
235 is clear exposes crypto keys and tickets and is insecure,
236 make sure the packet is encrypted in the protocol.
237 .Xr krb5_rd_cred 3 ,
238 .Xr krb5_rd_priv 3 ,
239 .Xr krb5_rd_safe 3 ,
240 .Xr krb5_mk_priv 3
242 .Xr krb5_mk_safe 3 .
243 Setting this flag requires that parameter to be passed to these
244 functions.
246 The flags
247 .Dv KRB5_AUTH_CONTEXT_DO_TIME
248 also modifies the behavior the function
249 .Fn krb5_get_forwarded_creds
250 by removing the timestamp in the forward credential message, this have
251 backward compatibility problems since not all versions of the heimdal
252 supports timeless credentional messages.
253 Is very useful since it always the sender of the message to cache
254 forward message and thus avoiding a round trip to the KDC for each
255 time a credential is forwarded.
256 The same functionality can be obtained by using address-less tickets.
257 .\".It Dv KRB5_AUTH_CONTEXT_PERMIT_ALL
260 .Fn krb5_auth_con_setaddrs ,
261 .Fn krb5_auth_con_setaddrs_from_fd
263 .Fn krb5_auth_con_getaddrs
264 gets and sets the addresses that are checked when a packet is received.
265 It is mandatory to set an address for the remote
266 host. If the local address is not set, it iss deduced from the underlaying
267 operating system.
268 .Fn krb5_auth_con_getaddrs
269 will call
270 .Fn krb5_free_address
271 on any address that is passed in
272 .Fa local_addr
274 .Fa remote_addr .
275 .Fn krb5_auth_con_setaddr
276 allows passing in a
277 .Dv NULL
278 pointer as
279 .Fa local_addr
281 .Fa remote_addr ,
282 in that case it will just not set that address.
284 .Fn krb5_auth_con_setaddrs_from_fd
285 fetches the addresses from a file descriptor.
287 .Fn krb5_auth_con_genaddrs
288 fetches the address information from the given file descriptor
289 .Fa fd
290 depending on the bitmap argument
291 .Fa flags .
293 Possible values on
294 .Fa flags
295 are:
296 .Bl -tag -width Ds
297 .It Va KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR
298 fetches the local address from
299 .Fa fd .
300 .It Va KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR
301 fetches the remote address from
302 .Fa fd .
305 .Fn krb5_auth_con_setkey ,
306 .Fn krb5_auth_con_setuserkey
308 .Fn krb5_auth_con_getkey
309 gets and sets the key used for this auth context. The keyblock returned by
310 .Fn krb5_auth_con_getkey
311 should be freed with
312 .Fn krb5_free_keyblock .
313 The keyblock send into
314 .Fn krb5_auth_con_setkey
315 is copied into the
316 .Nm krb5_auth_context ,
317 and thus no special handling is needed.
318 .Dv NULL
319 is not a valid keyblock to
320 .Fn krb5_auth_con_setkey .
322 .Fn krb5_auth_con_setuserkey
323 is only useful when doing user to user authentication.
324 .Fn krb5_auth_con_setkey
325 is equivalent to
326 .Fn krb5_auth_con_setuserkey .
328 .Fn krb5_auth_con_getlocalsubkey ,
329 .Fn krb5_auth_con_setlocalsubkey ,
330 .Fn krb5_auth_con_getremotesubkey
332 .Fn krb5_auth_con_setremotesubkey
333 gets and sets the keyblock for the local and remote subkey.
334 The keyblock returned by
335 .Fn krb5_auth_con_getlocalsubkey
337 .Fn krb5_auth_con_getremotesubkey
338 must be freed with
339 .Fn krb5_free_keyblock .
341 .Fn krb5_auth_setcksumtype
343 .Fn krb5_auth_getcksumtype
344 sets and gets the checksum type that should be used for this
345 connection.
347 .Fn krb5_auth_con_generatelocalsubkey
348 generates a local subkey that have the same encryption type as
349 .Fa key .
351 .Fn krb5_auth_getremoteseqnumber
352 .Fn krb5_auth_setremoteseqnumber ,
353 .Fn krb5_auth_getlocalseqnumber
355 .Fn krb5_auth_setlocalseqnumber
356 gets and sets the sequence-number for the local and remote
357 sequence-number counter.
359 .Fn krb5_auth_setkeytype
361 .Fn krb5_auth_getkeytype
362 gets and gets the keytype of the keyblock in
363 .Nm krb5_auth_context .
365 .Fn krb5_auth_con_getauthenticator
366 Retrieves the authenticator that was used during mutual
367 authentication. The
368 .Dv authenticator
369 returned should be freed by calling
370 .Fn krb5_free_authenticator .
372 .Fn krb5_auth_con_getrcache
374 .Fn krb5_auth_con_setrcache
375 gets and sets the replay-cache.
377 .Fn krb5_auth_con_initivector
378 allocates memory for and zeros the initial vector in the
379 .Fa auth_context
380 keyblock.
382 .Fn krb5_auth_con_setivector
383 sets the i_vector portion of
384 .Fa auth_context
386 .Fa ivector .
388 .Fn krb5_free_authenticator
389 free the content of
390 .Fa authenticator
392 .Fa authenticator
393 itself.
394 .Sh SEE ALSO
395 .Xr krb5_context 3 ,
396 .Xr kerberos 8