1/* This is a generated file */
2#ifndef __krb5_protos_h__
3#define __krb5_protos_h__
4#ifndef DOXY
5
6#include <stdarg.h>
7
8#if !defined(__GNUC__) && !defined(__attribute__)
9#define __attribute__(x)
10#endif
11
12#ifndef KRB5_DEPRECATED_FUNCTION
13#ifndef __has_extension
14#define __has_extension(x) 0
15#define KRB5_DEPRECATED_FUNCTIONhas_extension 1
16#endif
17#if __has_extension(attribute_deprecated_with_message)
18#define KRB5_DEPRECATED_FUNCTION(x) __attribute__((__deprecated__(x)))
19#elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 )))
20#define KRB5_DEPRECATED_FUNCTION(X) __attribute__((__deprecated__))
21#else
22#define KRB5_DEPRECATED_FUNCTION(X)
23#endif
24#ifdef KRB5_DEPRECATED_FUNCTIONhas_extension
25#undef __has_extension
26#undef KRB5_DEPRECATED_FUNCTIONhas_extension
27#endif
28#endif /* KRB5_DEPRECATED_FUNCTION */
29
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#ifndef KRB5_LIB
36#ifndef KRB5_LIB_FUNCTION
37#if defined(_WIN32)
38#define KRB5_LIB_FUNCTION __declspec(dllimport)
39#define KRB5_LIB_CALL __stdcall
40#define KRB5_LIB_VARIABLE __declspec(dllimport)
41#else
42#define KRB5_LIB_FUNCTION
43#define KRB5_LIB_CALL
44#define KRB5_LIB_VARIABLE
45#endif
46#endif
47#endif
48/**
49 * Convert the v5 credentials in in_cred to v4-dito in v4creds. This
50 * is done by sending them to the 524 function in the KDC. If
51 * `in_cred' doesn't contain a DES session key, then a new one is
52 * gotten from the KDC and stored in the cred cache `ccache'.
53 *
54 * @param context Kerberos 5 context.
55 * @param in_cred the credential to convert
56 * @param v4creds the converted credential
57 *
58 * @return Returns 0 to indicate success. Otherwise an kerberos et
59 * error code is returned, see krb5_get_error_message().
60 *
61 * @ingroup krb5_v4compat
62 */
63
64KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
65krb524_convert_creds_kdc (
66 krb5_context /*context*/,
67 krb5_creds */*in_cred*/,
68 struct credentials */*v4creds*/)
69 KRB5_DEPRECATED_FUNCTION("Use X instead");
70
71/**
72 * Convert the v5 credentials in in_cred to v4-dito in v4creds,
73 * check the credential cache ccache before checking with the KDC.
74 *
75 * @param context Kerberos 5 context.
76 * @param ccache credential cache used to check for des-ticket.
77 * @param in_cred the credential to convert
78 * @param v4creds the converted credential
79 *
80 * @return Returns 0 to indicate success. Otherwise an kerberos et
81 * error code is returned, see krb5_get_error_message().
82 *
83 * @ingroup krb5_v4compat
84 */
85
86KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
87krb524_convert_creds_kdc_ccache (
88 krb5_context /*context*/,
89 krb5_ccache /*ccache*/,
90 krb5_creds */*in_cred*/,
91 struct credentials */*v4creds*/)
92 KRB5_DEPRECATED_FUNCTION("Use X instead");
93
94/**
95 * Log a warning to the log, default stderr, include the error from
96 * the last failure and then abort.
97 *
98 * @param context A Kerberos 5 context
99 * @param code error code of the last error
100 * @param fmt message to print
101 * @param ... arguments for format string
102 *
103 * @ingroup krb5_error
104 */
105
106KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
107krb5_abort (
108 krb5_context /*context*/,
109 krb5_error_code /*code*/,
110 const char */*fmt*/,
111 ...)
112 __attribute__ ((__noreturn__, __format__ (__printf__, 3, 4)));
113
114/**
115 * Log a warning to the log, default stderr, and then abort.
116 *
117 * @param context A Kerberos 5 context
118 * @param fmt printf format string of message to print
119 * @param ... arguments for format string
120 *
121 * @ingroup krb5_error
122 */
123
124KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
125krb5_abortx (
126 krb5_context /*context*/,
127 const char */*fmt*/,
128 ...)
129 __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
130
131/**
132 * krb5_acl_match_file matches ACL format against each line in a file
133 * using krb5_acl_match_string(). Lines starting with # are treated
134 * like comments and ignored.
135 *
136 * @param context Kerberos 5 context.
137 * @param file file with acl listed in the file.
138 * @param format format to match.
139 * @param ... parameter to format string.
140 *
141 * @return Return an error code or 0.
142 *
143 * @sa krb5_acl_match_string
144 * @ingroup krb5_support
145 */
146
147KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
148krb5_acl_match_file (
149 krb5_context /*context*/,
150 const char */*file*/,
151 const char */*format*/,
152 ...);
153
154/**
155 * krb5_acl_match_string matches ACL format against a string.
156 *
157 * The ACL format has three format specifiers: s, f, and r. Each
158 * specifier will retrieve one argument from the variable arguments
159 * for either matching or storing data. The input string is split up
160 * using " " (space) and "\t" (tab) as a delimiter; multiple and "\t"
161 * in a row are considered to be the same.
162 *
163 * List of format specifiers:
164 * - s Matches a string using strcmp(3) (case sensitive).
165 * - f Matches the string with fnmatch(3). Theflags
166 * argument (the last argument) passed to the fnmatch function is 0.
167 * - r Returns a copy of the string in the char ** passed in; the copy
168 * must be freed with free(3). There is no need to free(3) the
169 * string on error: the function will clean up and set the pointer
170 * to NULL.
171 *
172 * @param context Kerberos 5 context
173 * @param string string to match with
174 * @param format format to match
175 * @param ... parameter to format string
176 *
177 * @return Return an error code or 0.
178 *
179 *
180 * @code
181 * char *s;
182 *
183 * ret = krb5_acl_match_string(context, "foo", "s", "foo");
184 * if (ret)
185 * krb5_errx(context, 1, "acl didn't match");
186 * ret = krb5_acl_match_string(context, "foo foo baz/kaka",
187 * "ss", "foo", &s, "foo/\\*");
188 * if (ret) {
189 * // no need to free(s) on error
190 * assert(s == NULL);
191 * krb5_errx(context, 1, "acl didn't match");
192 * }
193 * free(s);
194 * @endcode
195 *
196 * @sa krb5_acl_match_file
197 * @ingroup krb5_support
198 */
199
200KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
201krb5_acl_match_string (
202 krb5_context /*context*/,
203 const char */*string*/,
204 const char */*format*/,
205 ...);
206
207/**
208 * Add a specified list of error messages to the et list in context.
209 * Call func (probably a comerr-generated function) with a pointer to
210 * the current et_list.
211 *
212 * @param context A kerberos context.
213 * @param func The generated com_err et function.
214 *
215 * @return Returns 0 to indicate success. Otherwise an kerberos et
216 * error code is returned, see krb5_get_error_message().
217 *
218 * @ingroup krb5
219 */
220
221KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
222krb5_add_et_list (
223 krb5_context /*context*/,
224 void (*/*func*/)(struct et_list **));
225
226/**
227 * Add extra address to the address list that the library will add to
228 * the client's address list when communicating with the KDC.
229 *
230 * @param context Kerberos 5 context.
231 * @param addresses addreses to add
232 *
233 * @return Returns 0 to indicate success. Otherwise an kerberos et
234 * error code is returned, see krb5_get_error_message().
235 *
236 * @ingroup krb5
237 */
238
239KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
240krb5_add_extra_addresses (
241 krb5_context /*context*/,
242 krb5_addresses */*addresses*/);
243
244/**
245 * Add extra addresses to ignore when fetching addresses from the
246 * underlaying operating system.
247 *
248 * @param context Kerberos 5 context.
249 * @param addresses addreses to ignore
250 *
251 * @return Returns 0 to indicate success. Otherwise an kerberos et
252 * error code is returned, see krb5_get_error_message().
253 *
254 * @ingroup krb5
255 */
256
257KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
258krb5_add_ignore_addresses (
259 krb5_context /*context*/,
260 krb5_addresses */*addresses*/);
261
262KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
263krb5_addlog_dest (
264 krb5_context /*context*/,
265 krb5_log_facility */*f*/,
266 const char */*orig*/);
267
268KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
269krb5_addlog_func (
270 krb5_context /*context*/,
271 krb5_log_facility */*fac*/,
272 int /*min*/,
273 int /*max*/,
274 krb5_log_log_func_t /*log_func*/,
275 krb5_log_close_func_t /*close_func*/,
276 void */*data*/);
277
278/**
279 * krb5_addr2sockaddr sets the "struct sockaddr sockaddr" from addr
280 * and port. The argument sa_size should initially contain the size of
281 * the sa and after the call, it will contain the actual length of the
282 * address. In case of the sa is too small to fit the whole address,
283 * the up to *sa_size will be stored, and then *sa_size will be set to
284 * the required length.
285 *
286 * @param context a Keberos context
287 * @param addr the address to copy the from
288 * @param sa the struct sockaddr that will be filled in
289 * @param sa_size pointer to length of sa, and after the call, it will
290 * contain the actual length of the address.
291 * @param port set port in sa.
292 *
293 * @return Return an error code or 0. Will return
294 * KRB5_PROG_ATYPE_NOSUPP in case address type is not supported.
295 *
296 * @ingroup krb5_address
297 */
298
299KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
300krb5_addr2sockaddr (
301 krb5_context /*context*/,
302 const krb5_address */*addr*/,
303 struct sockaddr */*sa*/,
304 krb5_socklen_t */*sa_size*/,
305 int /*port*/);
306
307/**
308 * krb5_address_compare compares the addresses addr1 and addr2.
309 * Returns TRUE if the two addresses are the same.
310 *
311 * @param context a Keberos context
312 * @param addr1 address to compare
313 * @param addr2 address to compare
314 *
315 * @return Return an TRUE is the address are the same FALSE if not
316 *
317 * @ingroup krb5_address
318 */
319
320KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
321krb5_address_compare (
322 krb5_context /*context*/,
323 const krb5_address */*addr1*/,
324 const krb5_address */*addr2*/);
325
326/**
327 * krb5_address_order compares the addresses addr1 and addr2 so that
328 * it can be used for sorting addresses. If the addresses are the same
329 * address krb5_address_order will return 0. Behavies like memcmp(2).
330 *
331 * @param context a Keberos context
332 * @param addr1 krb5_address to compare
333 * @param addr2 krb5_address to compare
334 *
335 * @return < 0 if address addr1 in "less" then addr2. 0 if addr1 and
336 * addr2 is the same address, > 0 if addr2 is "less" then addr1.
337 *
338 * @ingroup krb5_address
339 */
340
341KRB5_LIB_FUNCTION int KRB5_LIB_CALL
342krb5_address_order (
343 krb5_context /*context*/,
344 const krb5_address */*addr1*/,
345 const krb5_address */*addr2*/);
346
347/**
348 * Calculate the boundary addresses of `inaddr'/`prefixlen' and store
349 * them in `low' and `high'.
350 *
351 * @param context a Keberos context
352 * @param inaddr address in prefixlen that the bondery searched
353 * @param prefixlen width of boundery
354 * @param low lowest address
355 * @param high highest address
356 *
357 * @return Return an error code or 0.
358 *
359 * @ingroup krb5_address
360 */
361
362KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
363krb5_address_prefixlen_boundary (
364 krb5_context /*context*/,
365 const krb5_address */*inaddr*/,
366 unsigned long /*prefixlen*/,
367 krb5_address */*low*/,
368 krb5_address */*high*/);
369
370/**
371 * krb5_address_search checks if the address addr is a member of the
372 * address set list addrlist .
373 *
374 * @param context a Keberos context.
375 * @param addr address to search for.
376 * @param addrlist list of addresses to look in for addr.
377 *
378 * @return Return an error code or 0.
379 *
380 * @ingroup krb5_address
381 */
382
383KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
384krb5_address_search (
385 krb5_context /*context*/,
386 const krb5_address */*addr*/,
387 const krb5_addresses */*addrlist*/);
388
389/**
390 * Enable or disable all weak encryption types
391 *
392 * @param context Kerberos 5 context
393 * @param enable true to enable, false to disable
394 *
395 * @return Return an error code or 0.
396 *
397 * @ingroup krb5_crypto
398 */
399
400KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
401krb5_allow_weak_crypto (
402 krb5_context /*context*/,
403 krb5_boolean /*enable*/);
404
405/**
406 * Map a principal name to a local username.
407 *
408 * Returns 0 on success, KRB5_NO_LOCALNAME if no mapping was found, or
409 * some Kerberos or system error.
410 *
411 * Inputs:
412 *
413 * @param context A krb5_context
414 * @param aname A principal name
415 * @param lnsize The size of the buffer into which the username will be written
416 * @param lname The buffer into which the username will be written
417 *
418 * @ingroup krb5_support
419 */
420
421KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
422krb5_aname_to_localname (
423 krb5_context /*context*/,
424 krb5_const_principal /*aname*/,
425 size_t /*lnsize*/,
426 char */*lname*/);
427
428/**
429 * krb5_anyaddr fills in a "struct sockaddr sa" that can be used to
430 * bind(2) to. The argument sa_size should initially contain the size
431 * of the sa, and after the call, it will contain the actual length
432 * of the address.
433 *
434 * @param context a Keberos context
435 * @param af address family
436 * @param sa sockaddr
437 * @param sa_size lenght of sa.
438 * @param port for to fill into sa.
439 *
440 * @return Return an error code or 0.
441 *
442 * @ingroup krb5_address
443 */
444
445KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
446krb5_anyaddr (
447 krb5_context /*context*/,
448 int /*af*/,
449 struct sockaddr */*sa*/,
450 krb5_socklen_t */*sa_size*/,
451 int /*port*/);
452
453KRB5_LIB_FUNCTION void KRB5_LIB_CALL
454krb5_appdefault_boolean (
455 krb5_context /*context*/,
456 const char */*appname*/,
457 krb5_const_realm /*realm*/,
458 const char */*option*/,
459 krb5_boolean /*def_val*/,
460 krb5_boolean */*ret_val*/);
461
462KRB5_LIB_FUNCTION void KRB5_LIB_CALL
463krb5_appdefault_string (
464 krb5_context /*context*/,
465 const char */*appname*/,
466 krb5_const_realm /*realm*/,
467 const char */*option*/,
468 const char */*def_val*/,
469 char **/*ret_val*/);
470
471KRB5_LIB_FUNCTION void KRB5_LIB_CALL
472krb5_appdefault_time (
473 krb5_context /*context*/,
474 const char */*appname*/,
475 krb5_const_realm /*realm*/,
476 const char */*option*/,
477 time_t /*def_val*/,
478 time_t */*ret_val*/);
479
480/**
481 * krb5_append_addresses adds the set of addresses in source to
482 * dest. While copying the addresses, duplicates are also sorted out.
483 *
484 * @param context a Keberos context
485 * @param dest destination of copy operation
486 * @param source adresses that are going to be added to dest
487 *
488 * @return Return an error code or 0.
489 *
490 * @ingroup krb5_address
491 */
492
493KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
494krb5_append_addresses (
495 krb5_context /*context*/,
496 krb5_addresses */*dest*/,
497 const krb5_addresses */*source*/);
498
499KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
500krb5_auth_con_add_AuthorizationData (
501 krb5_context /*context*/,
502 krb5_auth_context /*auth_context*/,
503 int /*type*/,
504 krb5_data */*data*/);
505
506KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
507krb5_auth_con_addflags (
508 krb5_context /*context*/,
509 krb5_auth_context /*auth_context*/,
510 int32_t /*addflags*/,
511 int32_t */*flags*/);
512
513/**
514 * Deallocate an authentication context previously initialized with
515 * krb5_auth_con_init().
516 *
517 * @param context A kerberos context.
518 * @param auth_context The authentication context to be deallocated.
519 *
520 * @return An krb5 error code, see krb5_get_error_message().
521 */
522
523KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
524krb5_auth_con_free (
525 krb5_context /*context*/,
526 krb5_auth_context /*auth_context*/);
527
528/**
529 * Update the authentication context \a auth_context with the local
530 * and remote addresses from socket \a fd, according to \a flags.
531 *
532 * @return An krb5 error code, see krb5_get_error_message().
533 */
534
535KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
536krb5_auth_con_genaddrs (
537 krb5_context /*context*/,
538 krb5_auth_context /*auth_context*/,
539 krb5_socket_t /*fd*/,
540 int /*flags*/);
541
542KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
543krb5_auth_con_generatelocalsubkey (
544 krb5_context /*context*/,
545 krb5_auth_context /*auth_context*/,
546 krb5_keyblock */*key*/);
547
548KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
549krb5_auth_con_getaddrs (
550 krb5_context /*context*/,
551 krb5_auth_context /*auth_context*/,
552 krb5_address **/*local_addr*/,
553 krb5_address **/*remote_addr*/);
554
555KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
556krb5_auth_con_getauthenticator (
557 krb5_context /*context*/,
558 krb5_auth_context /*auth_context*/,
559 krb5_authenticator */*authenticator*/);
560
561KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
562krb5_auth_con_getcksumtype (
563 krb5_context /*context*/,
564 krb5_auth_context /*auth_context*/,
565 krb5_cksumtype */*cksumtype*/);
566
567KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
568krb5_auth_con_getflags (
569 krb5_context /*context*/,
570 krb5_auth_context /*auth_context*/,
571 int32_t */*flags*/);
572
573KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
574krb5_auth_con_getkey (
575 krb5_context /*context*/,
576 krb5_auth_context /*auth_context*/,
577 krb5_keyblock **/*keyblock*/);
578
579KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
580krb5_auth_con_getkeytype (
581 krb5_context /*context*/,
582 krb5_auth_context /*auth_context*/,
583 krb5_keytype */*keytype*/);
584
585KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
586krb5_auth_con_getlocalseqnumber (
587 krb5_context /*context*/,
588 krb5_auth_context /*auth_context*/,
589 int32_t */*seqnumber*/);
590
591KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
592krb5_auth_con_getlocalsubkey (
593 krb5_context /*context*/,
594 krb5_auth_context /*auth_context*/,
595 krb5_keyblock **/*keyblock*/);
596
597KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
598krb5_auth_con_getrcache (
599 krb5_context /*context*/,
600 krb5_auth_context /*auth_context*/,
601 krb5_rcache */*rcache*/);
602
603KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
604krb5_auth_con_getrecvsubkey (
605 krb5_context /*context*/,
606 krb5_auth_context /*auth_context*/,
607 krb5_keyblock **/*keyblock*/);
608
609KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
610krb5_auth_con_getremoteseqnumber (
611 krb5_context /*context*/,
612 krb5_auth_context /*auth_context*/,
613 int32_t */*seqnumber*/);
614
615KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
616krb5_auth_con_getremotesubkey (
617 krb5_context /*context*/,
618 krb5_auth_context /*auth_context*/,
619 krb5_keyblock **/*keyblock*/);
620
621KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
622krb5_auth_con_getsendsubkey (
623 krb5_context /*context*/,
624 krb5_auth_context /*auth_context*/,
625 krb5_keyblock **/*keyblock*/);
626
627/**
628 * Allocate and initialize an autentication context.
629 *
630 * @param context A kerberos context.
631 * @param auth_context The authentication context to be initialized.
632 *
633 * Use krb5_auth_con_free() to release the memory when done using the context.
634 *
635 * @return An krb5 error code, see krb5_get_error_message().
636 */
637
638KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
639krb5_auth_con_init (
640 krb5_context /*context*/,
641 krb5_auth_context */*auth_context*/);
642
643KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
644krb5_auth_con_removeflags (
645 krb5_context /*context*/,
646 krb5_auth_context /*auth_context*/,
647 int32_t /*removeflags*/,
648 int32_t */*flags*/);
649
650KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
651krb5_auth_con_setaddrs (
652 krb5_context /*context*/,
653 krb5_auth_context /*auth_context*/,
654 krb5_address */*local_addr*/,
655 krb5_address */*remote_addr*/);
656
657KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
658krb5_auth_con_setaddrs_from_fd (
659 krb5_context /*context*/,
660 krb5_auth_context /*auth_context*/,
661 void */*p_fd*/);
662
663KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
664krb5_auth_con_setcksumtype (
665 krb5_context /*context*/,
666 krb5_auth_context /*auth_context*/,
667 krb5_cksumtype /*cksumtype*/);
668
669KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
670krb5_auth_con_setflags (
671 krb5_context /*context*/,
672 krb5_auth_context /*auth_context*/,
673 int32_t /*flags*/);
674
675KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
676krb5_auth_con_setkey (
677 krb5_context /*context*/,
678 krb5_auth_context /*auth_context*/,
679 krb5_keyblock */*keyblock*/);
680
681KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
682krb5_auth_con_setkeytype (
683 krb5_context /*context*/,
684 krb5_auth_context /*auth_context*/,
685 krb5_keytype /*keytype*/);
686
687KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
688krb5_auth_con_setlocalseqnumber (
689 krb5_context /*context*/,
690 krb5_auth_context /*auth_context*/,
691 int32_t /*seqnumber*/);
692
693KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
694krb5_auth_con_setlocalsubkey (
695 krb5_context /*context*/,
696 krb5_auth_context /*auth_context*/,
697 krb5_keyblock */*keyblock*/);
698
699KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
700krb5_auth_con_setrcache (
701 krb5_context /*context*/,
702 krb5_auth_context /*auth_context*/,
703 krb5_rcache /*rcache*/);
704
705KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
706krb5_auth_con_setrecvsubkey (
707 krb5_context /*context*/,
708 krb5_auth_context /*auth_context*/,
709 krb5_keyblock */*keyblock*/);
710
711KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
712krb5_auth_con_setremoteseqnumber (
713 krb5_context /*context*/,
714 krb5_auth_context /*auth_context*/,
715 int32_t /*seqnumber*/);
716
717KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
718krb5_auth_con_setremotesubkey (
719 krb5_context /*context*/,
720 krb5_auth_context /*auth_context*/,
721 krb5_keyblock */*keyblock*/);
722
723KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
724krb5_auth_con_setsendsubkey (
725 krb5_context /*context*/,
726 krb5_auth_context /*auth_context*/,
727 krb5_keyblock */*keyblock*/);
728
729KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
730krb5_auth_con_setuserkey (
731 krb5_context /*context*/,
732 krb5_auth_context /*auth_context*/,
733 krb5_keyblock */*keyblock*/);
734
735/**
736 * Deprecated: use krb5_auth_con_getremoteseqnumber()
737 *
738 * @ingroup krb5_deprecated
739 */
740
741KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
742krb5_auth_getremoteseqnumber (
743 krb5_context /*context*/,
744 krb5_auth_context /*auth_context*/,
745 int32_t */*seqnumber*/)
746 KRB5_DEPRECATED_FUNCTION("Use X instead");
747
748KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
749krb5_build_ap_req (
750 krb5_context /*context*/,
751 krb5_enctype /*enctype*/,
752 krb5_creds */*cred*/,
753 krb5_flags /*ap_options*/,
754 krb5_data /*authenticator*/,
755 krb5_data */*retdata*/);
756
757/**
758 * Build a principal using vararg style building
759 *
760 * @param context A Kerberos context.
761 * @param principal returned principal
762 * @param rlen length of realm
763 * @param realm realm name
764 * @param ... a list of components ended with NULL.
765 *
766 * @return An krb5 error code, see krb5_get_error_message().
767 *
768 * @ingroup krb5_principal
769 */
770
771KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
772krb5_build_principal (
773 krb5_context /*context*/,
774 krb5_principal */*principal*/,
775 int /*rlen*/,
776 krb5_const_realm /*realm*/,
777 ...);
778
779KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
780krb5_build_principal_ext (
781 krb5_context /*context*/,
782 krb5_principal */*principal*/,
783 int /*rlen*/,
784 krb5_const_realm /*realm*/,
785 ...);
786
787KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
788krb5_build_principal_va (
789 krb5_context /*context*/,
790 krb5_principal */*principal*/,
791 int /*rlen*/,
792 krb5_const_realm /*realm*/,
793 va_list /*ap*/);
794
795KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
796krb5_build_principal_va_ext (
797 krb5_context /*context*/,
798 krb5_principal */*principal*/,
799 int /*rlen*/,
800 krb5_const_realm /*realm*/,
801 va_list /*ap*/);
802
803KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
804krb5_c_block_size (
805 krb5_context /*context*/,
806 krb5_enctype /*enctype*/,
807 size_t */*blocksize*/);
808
809KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
810krb5_c_checksum_length (
811 krb5_context /*context*/,
812 krb5_cksumtype /*cksumtype*/,
813 size_t */*length*/);
814
815KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
816krb5_c_decrypt (
817 krb5_context /*context*/,
818 const krb5_keyblock /*key*/,
819 krb5_keyusage /*usage*/,
820 const krb5_data */*ivec*/,
821 krb5_enc_data */*input*/,
822 krb5_data */*output*/);
823
824KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
825krb5_c_encrypt (
826 krb5_context /*context*/,
827 const krb5_keyblock */*key*/,
828 krb5_keyusage /*usage*/,
829 const krb5_data */*ivec*/,
830 const krb5_data */*input*/,
831 krb5_enc_data */*output*/);
832
833KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
834krb5_c_encrypt_length (
835 krb5_context /*context*/,
836 krb5_enctype /*enctype*/,
837 size_t /*inputlen*/,
838 size_t */*length*/);
839
840/**
841 * Deprecated: keytypes doesn't exists, they are really enctypes.
842 *
843 * @ingroup krb5_deprecated
844 */
845
846KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
847krb5_c_enctype_compare (
848 krb5_context /*context*/,
849 krb5_enctype /*e1*/,
850 krb5_enctype /*e2*/,
851 krb5_boolean */*similar*/)
852 KRB5_DEPRECATED_FUNCTION("Use X instead");
853
854KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
855krb5_c_get_checksum (
856 krb5_context /*context*/,
857 const krb5_checksum */*cksum*/,
858 krb5_cksumtype */*type*/,
859 krb5_data **/*data*/);
860
861KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
862krb5_c_is_coll_proof_cksum (krb5_cksumtype /*ctype*/);
863
864KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
865krb5_c_is_keyed_cksum (krb5_cksumtype /*ctype*/);
866
867KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
868krb5_c_keylengths (
869 krb5_context /*context*/,
870 krb5_enctype /*enctype*/,
871 size_t */*ilen*/,
872 size_t */*keylen*/);
873
874KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
875krb5_c_make_checksum (
876 krb5_context /*context*/,
877 krb5_cksumtype /*cksumtype*/,
878 const krb5_keyblock */*key*/,
879 krb5_keyusage /*usage*/,
880 const krb5_data */*input*/,
881 krb5_checksum */*cksum*/);
882
883KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
884krb5_c_make_random_key (
885 krb5_context /*context*/,
886 krb5_enctype /*enctype*/,
887 krb5_keyblock */*random_key*/);
888
889KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
890krb5_c_prf (
891 krb5_context /*context*/,
892 const krb5_keyblock */*key*/,
893 const krb5_data */*input*/,
894 krb5_data */*output*/);
895
896KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
897krb5_c_prf_length (
898 krb5_context /*context*/,
899 krb5_enctype /*type*/,
900 size_t */*length*/);
901
902KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
903krb5_c_random_make_octets (
904 krb5_context /*context*/,
905 krb5_data * /*data*/);
906
907KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
908krb5_c_set_checksum (
909 krb5_context /*context*/,
910 krb5_checksum */*cksum*/,
911 krb5_cksumtype /*type*/,
912 const krb5_data */*data*/);
913
914KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
915krb5_c_valid_cksumtype (krb5_cksumtype /*ctype*/);
916
917KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
918krb5_c_valid_enctype (krb5_enctype /*etype*/);
919
920KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
921krb5_c_verify_checksum (
922 krb5_context /*context*/,
923 const krb5_keyblock */*key*/,
924 krb5_keyusage /*usage*/,
925 const krb5_data */*data*/,
926 const krb5_checksum */*cksum*/,
927 krb5_boolean */*valid*/);
928
929/**
930 * Destroy the cursor `cursor'.
931 *
932 * @return Return an error code or 0, see krb5_get_error_message().
933 *
934 * @ingroup krb5_ccache
935 */
936
937KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
938krb5_cc_cache_end_seq_get (
939 krb5_context /*context*/,
940 krb5_cc_cache_cursor /*cursor*/);
941
942/**
943 * Start iterating over all caches of specified type. See also
944 * krb5_cccol_cursor_new().
945
946 * @param context A Kerberos 5 context
947 * @param type optional type to iterate over, if NULL, the default cache is used.
948 * @param cursor cursor should be freed with krb5_cc_cache_end_seq_get().
949 *
950 * @return Return an error code or 0, see krb5_get_error_message().
951 *
952 * @ingroup krb5_ccache
953 */
954
955KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
956krb5_cc_cache_get_first (
957 krb5_context /*context*/,
958 const char */*type*/,
959 krb5_cc_cache_cursor */*cursor*/);
960
961/**
962 * Search for a matching credential cache that have the
963 * `principal' as the default principal. On success, `id' needs to be
964 * freed with krb5_cc_close() or krb5_cc_destroy().
965 *
966 * @param context A Kerberos 5 context
967 * @param client The principal to search for
968 * @param id the returned credential cache
969 *
970 * @return On failure, error code is returned and `id' is set to NULL.
971 *
972 * @ingroup krb5_ccache
973 */
974
975KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
976krb5_cc_cache_match (
977 krb5_context /*context*/,
978 krb5_principal /*client*/,
979 krb5_ccache */*id*/);
980
981/**
982 * Retrieve the next cache pointed to by (`cursor') in `id'
983 * and advance `cursor'.
984 *
985 * @param context A Kerberos 5 context
986 * @param cursor the iterator cursor, returned by krb5_cc_cache_get_first()
987 * @param id next ccache
988 *
989 * @return Return 0 or an error code. Returns KRB5_CC_END when the end
990 * of caches is reached, see krb5_get_error_message().
991 *
992 * @ingroup krb5_ccache
993 */
994
995KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
996krb5_cc_cache_next (
997 krb5_context /*context*/,
998 krb5_cc_cache_cursor /*cursor*/,
999 krb5_ccache */*id*/);
1000
1001/**
1002 * Clear `mcreds' so it can be used with krb5_cc_retrieve_cred
1003 *
1004 * @ingroup krb5_ccache
1005 */
1006
1007KRB5_LIB_FUNCTION void KRB5_LIB_CALL
1008krb5_cc_clear_mcred (krb5_creds */*mcred*/);
1009
1010/**
1011 * Stop using the ccache `id' and free the related resources.
1012 *
1013 * @return Return an error code or 0, see krb5_get_error_message().
1014 *
1015 * @ingroup krb5_ccache
1016 */
1017
1018KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1019krb5_cc_close (
1020 krb5_context /*context*/,
1021 krb5_ccache /*id*/);
1022
1023/**
1024 * Just like krb5_cc_copy_match_f(), but copy everything.
1025 *
1026 * @ingroup @krb5_ccache
1027 */
1028
1029KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1030krb5_cc_copy_cache (
1031 krb5_context /*context*/,
1032 const krb5_ccache /*from*/,
1033 krb5_ccache /*to*/);
1034
1035/**
1036 * MIT compat glue
1037 *
1038 * @ingroup krb5_ccache
1039 */
1040
1041KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1042krb5_cc_copy_creds (
1043 krb5_context /*context*/,
1044 const krb5_ccache /*from*/,
1045 krb5_ccache /*to*/);
1046
1047/**
1048 * Copy the contents of `from' to `to' if the given match function
1049 * return true.
1050 *
1051 * @param context A Kerberos 5 context.
1052 * @param from the cache to copy data from.
1053 * @param to the cache to copy data to.
1054 * @param match a match function that should return TRUE if cred argument should be copied, if NULL, all credentials are copied.
1055 * @param matchctx context passed to match function.
1056 * @param matched set to true if there was a credential that matched, may be NULL.
1057 *
1058 * @return Return an error code or 0, see krb5_get_error_message().
1059 *
1060 * @ingroup krb5_ccache
1061 */
1062
1063KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1064krb5_cc_copy_match_f (
1065 krb5_context /*context*/,
1066 const krb5_ccache /*from*/,
1067 krb5_ccache /*to*/,
1068 krb5_boolean (*/*match*/)(krb5_context, void *, const krb5_creds *),
1069 void */*matchctx*/,
1070 unsigned int */*matched*/);
1071
1072/**
1073 * Open the default ccache in `id'.
1074 *
1075 * @return Return an error code or 0, see krb5_get_error_message().
1076 *
1077 * @ingroup krb5_ccache
1078 */
1079
1080KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1081krb5_cc_default (
1082 krb5_context /*context*/,
1083 krb5_ccache */*id*/);
1084
1085/**
1086 * Return a pointer to a context static string containing the default
1087 * ccache name.
1088 *
1089 * @return String to the default credential cache name.
1090 *
1091 * @ingroup krb5_ccache
1092 */
1093
1094KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
1095krb5_cc_default_name (krb5_context /*context*/);
1096
1097/**
1098 * Remove the ccache `id'.
1099 *
1100 * @return Return an error code or 0, see krb5_get_error_message().
1101 *
1102 * @ingroup krb5_ccache
1103 */
1104
1105KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1106krb5_cc_destroy (
1107 krb5_context /*context*/,
1108 krb5_ccache /*id*/);
1109
1110/**
1111 * Destroy the cursor `cursor'.
1112 *
1113 * @ingroup krb5_ccache
1114 */
1115
1116KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1117krb5_cc_end_seq_get (
1118 krb5_context /*context*/,
1119 const krb5_ccache /*id*/,
1120 krb5_cc_cursor */*cursor*/);
1121
1122/**
1123 * Generate a new ccache of type `ops' in `id'.
1124 *
1125 * Deprecated: use krb5_cc_new_unique() instead.
1126 *
1127 * @return Return an error code or 0, see krb5_get_error_message().
1128 *
1129 * @ingroup krb5_ccache
1130 */
1131
1132KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1133krb5_cc_gen_new (
1134 krb5_context /*context*/,
1135 const krb5_cc_ops */*ops*/,
1136 krb5_ccache */*id*/)
1137 KRB5_DEPRECATED_FUNCTION("Use X instead");
1138
1139/**
1140 * Get some configuration for the credential cache in the cache.
1141 *
1142 * @param context a Keberos context
1143 * @param id the credential cache to store the data for
1144 * @param principal configuration for a specific principal, if
1145 * NULL, global for the whole cache.
1146 * @param name name under which the configuraion is stored.
1147 * @param data data to fetched, free with krb5_data_free()
1148 *
1149 * @ingroup krb5_ccache
1150 */
1151
1152KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1153krb5_cc_get_config (
1154 krb5_context /*context*/,
1155 krb5_ccache /*id*/,
1156 krb5_const_principal /*principal*/,
1157 const char */*name*/,
1158 krb5_data */*data*/);
1159
1160/**
1161 * Get the flags of `id', store them in `flags'.
1162 *
1163 * @ingroup krb5_ccache
1164 */
1165
1166KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1167krb5_cc_get_flags (
1168 krb5_context /*context*/,
1169 krb5_ccache /*id*/,
1170 krb5_flags */*flags*/);
1171
1172/**
1173 * Return a friendly name on credential cache. Free the result with krb5_xfree().
1174 *
1175 * @return Return an error code or 0, see krb5_get_error_message().
1176 *
1177 * @ingroup krb5_ccache
1178 */
1179
1180KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1181krb5_cc_get_friendly_name (
1182 krb5_context /*context*/,
1183 krb5_ccache /*id*/,
1184 char **/*name*/);
1185
1186/**
1187 * Return the complete resolvable name the cache
1188
1189 * @param context a Keberos context
1190 * @param id return pointer to a found credential cache
1191 * @param str the returned name of a credential cache, free with krb5_xfree()
1192 *
1193 * @return Returns 0 or an error (and then *str is set to NULL).
1194 *
1195 * @ingroup krb5_ccache
1196 */
1197
1198KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1199krb5_cc_get_full_name (
1200 krb5_context /*context*/,
1201 krb5_ccache /*id*/,
1202 char **/*str*/);
1203
1204/**
1205 * Get the time offset betwen the client and the KDC
1206 *
1207 * If the backend doesn't support KDC offset, use the context global setting.
1208 *
1209 * @param context A Kerberos 5 context.
1210 * @param id a credential cache
1211 * @param offset the offset in seconds
1212 *
1213 * @return Return an error code or 0, see krb5_get_error_message().
1214 *
1215 * @ingroup krb5_ccache
1216 */
1217
1218KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1219krb5_cc_get_kdc_offset (
1220 krb5_context /*context*/,
1221 krb5_ccache /*id*/,
1222 krb5_deltat */*offset*/);
1223
1224/**
1225 * Get the lifetime of the initial ticket in the cache
1226 *
1227 * Get the lifetime of the initial ticket in the cache, if the initial
1228 * ticket was not found, the error code KRB5_CC_END is returned.
1229 *
1230 * @param context A Kerberos 5 context.
1231 * @param id a credential cache
1232 * @param t the relative lifetime of the initial ticket
1233 *
1234 * @return Return an error code or 0, see krb5_get_error_message().
1235 *
1236 * @ingroup krb5_ccache
1237 */
1238
1239KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1240krb5_cc_get_lifetime (
1241 krb5_context /*context*/,
1242 krb5_ccache /*id*/,
1243 time_t */*t*/);
1244
1245/**
1246 * Return the name of the ccache `id'
1247 *
1248 * @ingroup krb5_ccache
1249 */
1250
1251KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
1252krb5_cc_get_name (
1253 krb5_context /*context*/,
1254 krb5_ccache /*id*/);
1255
1256/**
1257 * Return krb5_cc_ops of a the ccache `id'.
1258 *
1259 * @ingroup krb5_ccache
1260 */
1261
1262KRB5_LIB_FUNCTION const krb5_cc_ops * KRB5_LIB_CALL
1263krb5_cc_get_ops (
1264 krb5_context /*context*/,
1265 krb5_ccache /*id*/);
1266
1267/**
1268 * Get the cc ops that is registered in `context' to handle the
1269 * prefix. prefix can be a complete credential cache name or a
1270 * prefix, the function will only use part up to the first colon (:)
1271 * if there is one. If prefix the argument is NULL, the default ccache
1272 * implemtation is returned.
1273 *
1274 * @return Returns NULL if ops not found.
1275 *
1276 * @ingroup krb5_ccache
1277 */
1278
1279KRB5_LIB_FUNCTION const krb5_cc_ops * KRB5_LIB_CALL
1280krb5_cc_get_prefix_ops (
1281 krb5_context /*context*/,
1282 const char */*prefix*/);
1283
1284/**
1285 * Return the principal of `id' in `principal'.
1286 *
1287 * @return Return an error code or 0, see krb5_get_error_message().
1288 *
1289 * @ingroup krb5_ccache
1290 */
1291
1292KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1293krb5_cc_get_principal (
1294 krb5_context /*context*/,
1295 krb5_ccache /*id*/,
1296 krb5_principal */*principal*/);
1297
1298/**
1299 * Return the type of the ccache `id'.
1300 *
1301 * @ingroup krb5_ccache
1302 */
1303
1304KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
1305krb5_cc_get_type (
1306 krb5_context /*context*/,
1307 krb5_ccache /*id*/);
1308
1309/**
1310 * Return the version of `id'.
1311 *
1312 * @ingroup krb5_ccache
1313 */
1314
1315KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1316krb5_cc_get_version (
1317 krb5_context /*context*/,
1318 const krb5_ccache /*id*/);
1319
1320/**
1321 * Create a new ccache in `id' for `primary_principal'.
1322 *
1323 * @return Return an error code or 0, see krb5_get_error_message().
1324 *
1325 * @ingroup krb5_ccache
1326 */
1327
1328KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1329krb5_cc_initialize (
1330 krb5_context /*context*/,
1331 krb5_ccache /*id*/,
1332 krb5_principal /*primary_principal*/);
1333
1334/**
1335 * Return the last time the credential cache was modified.
1336 *
1337 * @param context A Kerberos 5 context
1338 * @param id The credential cache to probe
1339 * @param mtime the last modification time, set to 0 on error.
1340
1341 * @return Return 0 or and error. See krb5_get_error_message().
1342 *
1343 * @ingroup krb5_ccache
1344 */
1345
1346KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1347krb5_cc_last_change_time (
1348 krb5_context /*context*/,
1349 krb5_ccache /*id*/,
1350 krb5_timestamp */*mtime*/);
1351
1352/**
1353 * Move the content from one credential cache to another. The
1354 * operation is an atomic switch.
1355 *
1356 * @param context a Keberos context
1357 * @param from the credential cache to move the content from
1358 * @param to the credential cache to move the content to
1359
1360 * @return On sucess, from is freed. On failure, error code is
1361 * returned and from and to are both still allocated, see krb5_get_error_message().
1362 *
1363 * @ingroup krb5_ccache
1364 */
1365
1366KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1367krb5_cc_move (
1368 krb5_context /*context*/,
1369 krb5_ccache /*from*/,
1370 krb5_ccache /*to*/);
1371
1372/**
1373 * Generates a new unique ccache of `type` in `id'. If `type' is NULL,
1374 * the library chooses the default credential cache type. The supplied
1375 * `hint' (that can be NULL) is a string that the credential cache
1376 * type can use to base the name of the credential on, this is to make
1377 * it easier for the user to differentiate the credentials.
1378 *
1379 * @return Return an error code or 0, see krb5_get_error_message().
1380 *
1381 * @ingroup krb5_ccache
1382 */
1383
1384KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1385krb5_cc_new_unique (
1386 krb5_context /*context*/,
1387 const char */*type*/,
1388 const char */*hint*/,
1389 krb5_ccache */*id*/);
1390
1391/**
1392 * Retrieve the next cred pointed to by (`id', `cursor') in `creds'
1393 * and advance `cursor'.
1394 *
1395 * @return Return an error code or 0, see krb5_get_error_message().
1396 *
1397 * @ingroup krb5_ccache
1398 */
1399
1400KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1401krb5_cc_next_cred (
1402 krb5_context /*context*/,
1403 const krb5_ccache /*id*/,
1404 krb5_cc_cursor */*cursor*/,
1405 krb5_creds */*creds*/);
1406
1407/**
1408 * Add a new ccache type with operations `ops', overwriting any
1409 * existing one if `override'.
1410 *
1411 * @param context a Keberos context
1412 * @param ops type of plugin symbol
1413 * @param override flag to select if the registration is to overide
1414 * an existing ops with the same name.
1415 *
1416 * @return Return an error code or 0, see krb5_get_error_message().
1417 *
1418 * @ingroup krb5_ccache
1419 */
1420
1421KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1422krb5_cc_register (
1423 krb5_context /*context*/,
1424 const krb5_cc_ops */*ops*/,
1425 krb5_boolean /*override*/);
1426
1427/**
1428 * Remove the credential identified by `cred', `which' from `id'.
1429 *
1430 * @ingroup krb5_ccache
1431 */
1432
1433KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1434krb5_cc_remove_cred (
1435 krb5_context /*context*/,
1436 krb5_ccache /*id*/,
1437 krb5_flags /*which*/,
1438 krb5_creds */*cred*/);
1439
1440/**
1441 * Find and allocate a ccache in `id' from the specification in `residual'.
1442 * If the ccache name doesn't contain any colon, interpret it as a file name.
1443 *
1444 * @param context a Keberos context.
1445 * @param name string name of a credential cache.
1446 * @param id return pointer to a found credential cache.
1447 *
1448 * @return Return 0 or an error code. In case of an error, id is set
1449 * to NULL, see krb5_get_error_message().
1450 *
1451 * @ingroup krb5_ccache
1452 */
1453
1454KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1455krb5_cc_resolve (
1456 krb5_context /*context*/,
1457 const char */*name*/,
1458 krb5_ccache */*id*/);
1459
1460/**
1461 * Retrieve the credential identified by `mcreds' (and `whichfields')
1462 * from `id' in `creds'. 'creds' must be free by the caller using
1463 * krb5_free_cred_contents.
1464 *
1465 * @param context A Kerberos 5 context
1466 * @param id a Kerberos 5 credential cache
1467 * @param whichfields what fields to use for matching credentials, same
1468 * flags as whichfields in krb5_compare_creds()
1469 * @param mcreds template credential to use for comparing
1470 * @param creds returned credential, free with krb5_free_cred_contents()
1471 *
1472 * @return Return an error code or 0, see krb5_get_error_message().
1473 *
1474 * @ingroup krb5_ccache
1475 */
1476
1477KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1478krb5_cc_retrieve_cred (
1479 krb5_context /*context*/,
1480 krb5_ccache /*id*/,
1481 krb5_flags /*whichfields*/,
1482 const krb5_creds */*mcreds*/,
1483 krb5_creds */*creds*/);
1484
1485/**
1486 * Store some configuration for the credential cache in the cache.
1487 * Existing configuration under the same name is over-written.
1488 *
1489 * @param context a Keberos context
1490 * @param id the credential cache to store the data for
1491 * @param principal configuration for a specific principal, if
1492 * NULL, global for the whole cache.
1493 * @param name name under which the configuraion is stored.
1494 * @param data data to store, if NULL, configure is removed.
1495 *
1496 * @ingroup krb5_ccache
1497 */
1498
1499KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1500krb5_cc_set_config (
1501 krb5_context /*context*/,
1502 krb5_ccache /*id*/,
1503 krb5_const_principal /*principal*/,
1504 const char */*name*/,
1505 krb5_data */*data*/);
1506
1507/**
1508 * Set the default cc name for `context' to `name'.
1509 *
1510 * @ingroup krb5_ccache
1511 */
1512
1513KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1514krb5_cc_set_default_name (
1515 krb5_context /*context*/,
1516 const char */*name*/);
1517
1518/**
1519 * Set the flags of `id' to `flags'.
1520 *
1521 * @ingroup krb5_ccache
1522 */
1523
1524KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1525krb5_cc_set_flags (
1526 krb5_context /*context*/,
1527 krb5_ccache /*id*/,
1528 krb5_flags /*flags*/);
1529
1530/**
1531 * Set the friendly name on credential cache.
1532 *
1533 * @return Return an error code or 0, see krb5_get_error_message().
1534 *
1535 * @ingroup krb5_ccache
1536 */
1537
1538KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1539krb5_cc_set_friendly_name (
1540 krb5_context /*context*/,
1541 krb5_ccache /*id*/,
1542 const char */*name*/);
1543
1544/**
1545 * Set the time offset betwen the client and the KDC
1546 *
1547 * If the backend doesn't support KDC offset, use the context global setting.
1548 *
1549 * @param context A Kerberos 5 context.
1550 * @param id a credential cache
1551 * @param offset the offset in seconds
1552 *
1553 * @return Return an error code or 0, see krb5_get_error_message().
1554 *
1555 * @ingroup krb5_ccache
1556 */
1557
1558KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1559krb5_cc_set_kdc_offset (
1560 krb5_context /*context*/,
1561 krb5_ccache /*id*/,
1562 krb5_deltat /*offset*/);
1563
1564/**
1565 * Start iterating over `id', `cursor' is initialized to the
1566 * beginning. Caller must free the cursor with krb5_cc_end_seq_get().
1567 *
1568 * @return Return an error code or 0, see krb5_get_error_message().
1569 *
1570 * @ingroup krb5_ccache
1571 */
1572
1573KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1574krb5_cc_start_seq_get (
1575 krb5_context /*context*/,
1576 const krb5_ccache /*id*/,
1577 krb5_cc_cursor */*cursor*/);
1578
1579/**
1580 * Store `creds' in the ccache `id'.
1581 *
1582 * @return Return an error code or 0, see krb5_get_error_message().
1583 *
1584 * @ingroup krb5_ccache
1585 */
1586
1587KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1588krb5_cc_store_cred (
1589 krb5_context /*context*/,
1590 krb5_ccache /*id*/,
1591 krb5_creds */*creds*/);
1592
1593/**
1594 * Return true if the default credential cache support switch
1595 *
1596 * @ingroup krb5_ccache
1597 */
1598
1599KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
1600krb5_cc_support_switch (
1601 krb5_context /*context*/,
1602 const char */*type*/);
1603
1604/**
1605 * Switch the default default credential cache for a specific
1606 * credcache type (and name for some implementations).
1607 *
1608 * @return Return an error code or 0, see krb5_get_error_message().
1609 *
1610 * @ingroup krb5_ccache
1611 */
1612
1613KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1614krb5_cc_switch (
1615 krb5_context /*context*/,
1616 krb5_ccache /*id*/);
1617
1618/**
1619 * End an iteration and free all resources, can be done before end is reached.
1620 *
1621 * @param context A Kerberos 5 context
1622 * @param cursor the iteration cursor to be freed.
1623 *
1624 * @return Return 0 or and error, KRB5_CC_END is returned at the end
1625 * of iteration. See krb5_get_error_message().
1626 *
1627 * @ingroup krb5_ccache
1628 */
1629
1630KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1631krb5_cccol_cursor_free (
1632 krb5_context /*context*/,
1633 krb5_cccol_cursor */*cursor*/);
1634
1635/**
1636 * Get a new cache interation cursor that will interate over all
1637 * credentials caches independent of type.
1638 *
1639 * @param context a Keberos context
1640 * @param cursor passed into krb5_cccol_cursor_next() and free with krb5_cccol_cursor_free().
1641 *
1642 * @return Returns 0 or and error code, see krb5_get_error_message().
1643 *
1644 * @ingroup krb5_ccache
1645 */
1646
1647KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1648krb5_cccol_cursor_new (
1649 krb5_context /*context*/,
1650 krb5_cccol_cursor */*cursor*/);
1651
1652/**
1653 * Get next credential cache from the iteration.
1654 *
1655 * @param context A Kerberos 5 context
1656 * @param cursor the iteration cursor
1657 * @param cache the returned cursor, pointer is set to NULL on failure
1658 * and a cache on success. The returned cache needs to be freed
1659 * with krb5_cc_close() or destroyed with krb5_cc_destroy().
1660 * MIT Kerberos behavies slightly diffrent and sets cache to NULL
1661 * when all caches are iterated over and return 0.
1662 *
1663 * @return Return 0 or and error, KRB5_CC_END is returned at the end
1664 * of iteration. See krb5_get_error_message().
1665 *
1666 * @ingroup krb5_ccache
1667 */
1668
1669KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1670krb5_cccol_cursor_next (
1671 krb5_context /*context*/,
1672 krb5_cccol_cursor /*cursor*/,
1673 krb5_ccache */*cache*/);
1674
1675/**
1676 * Return the last modfication time for a cache collection. The query
1677 * can be limited to a specific cache type. If the function return 0
1678 * and mtime is 0, there was no credentials in the caches.
1679 *
1680 * @param context A Kerberos 5 context
1681 * @param type The credential cache to probe, if NULL, all type are traversed.
1682 * @param mtime the last modification time, set to 0 on error.
1683
1684 * @return Return 0 or and error. See krb5_get_error_message().
1685 *
1686 * @ingroup krb5_ccache
1687 */
1688
1689KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1690krb5_cccol_last_change_time (
1691 krb5_context /*context*/,
1692 const char */*type*/,
1693 krb5_timestamp */*mtime*/);
1694
1695/**
1696 * Deprecated: krb5_change_password() is deprecated, use krb5_set_password().
1697 *
1698 * @param context a Keberos context
1699 * @param creds
1700 * @param newpw
1701 * @param result_code
1702 * @param result_code_string
1703 * @param result_string
1704 *
1705 * @return On sucess password is changed.
1706
1707 * @ingroup @krb5_deprecated
1708 */
1709
1710KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1711krb5_change_password (
1712 krb5_context /*context*/,
1713 krb5_creds */*creds*/,
1714 const char */*newpw*/,
1715 int */*result_code*/,
1716 krb5_data */*result_code_string*/,
1717 krb5_data */*result_string*/)
1718 KRB5_DEPRECATED_FUNCTION("Use X instead");
1719
1720KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1721krb5_check_transited (
1722 krb5_context /*context*/,
1723 krb5_const_realm /*client_realm*/,
1724 krb5_const_realm /*server_realm*/,
1725 krb5_realm */*realms*/,
1726 unsigned int /*num_realms*/,
1727 int */*bad_realm*/);
1728
1729KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1730krb5_check_transited_realms (
1731 krb5_context /*context*/,
1732 const char *const */*realms*/,
1733 unsigned int /*num_realms*/,
1734 int */*bad_realm*/);
1735
1736KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1737krb5_checksum_disable (
1738 krb5_context /*context*/,
1739 krb5_cksumtype /*type*/);
1740
1741KRB5_LIB_FUNCTION void KRB5_LIB_CALL
1742krb5_checksum_free (
1743 krb5_context /*context*/,
1744 krb5_checksum */*cksum*/);
1745
1746KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
1747krb5_checksum_is_collision_proof (
1748 krb5_context /*context*/,
1749 krb5_cksumtype /*type*/);
1750
1751KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
1752krb5_checksum_is_keyed (
1753 krb5_context /*context*/,
1754 krb5_cksumtype /*type*/);
1755
1756KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1757krb5_checksumsize (
1758 krb5_context /*context*/,
1759 krb5_cksumtype /*type*/,
1760 size_t */*size*/);
1761
1762/**
1763 * Return the coresponding encryption type for a checksum type.
1764 *
1765 * @param context Kerberos context
1766 * @param ctype The checksum type to get the result enctype for
1767 * @param etype The returned encryption, when the matching etype is
1768 * not found, etype is set to ETYPE_NULL.
1769 *
1770 * @return Return an error code for an failure or 0 on success.
1771 * @ingroup krb5_crypto
1772 */
1773
1774KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1775krb5_cksumtype_to_enctype (
1776 krb5_context /*context*/,
1777 krb5_cksumtype /*ctype*/,
1778 krb5_enctype */*etype*/);
1779
1780KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1781krb5_cksumtype_valid (
1782 krb5_context /*context*/,
1783 krb5_cksumtype /*ctype*/);
1784
1785/**
1786 * Clears the error message from the Kerberos 5 context.
1787 *
1788 * @param context The Kerberos 5 context to clear
1789 *
1790 * @ingroup krb5_error
1791 */
1792
1793KRB5_LIB_FUNCTION void KRB5_LIB_CALL
1794krb5_clear_error_message (krb5_context /*context*/);
1795
1796/**
1797 * Clear the error message returned by krb5_get_error_string().
1798 *
1799 * Deprecated: use krb5_clear_error_message()
1800 *
1801 * @param context Kerberos context
1802 *
1803 * @ingroup krb5_deprecated
1804 */
1805
1806KRB5_LIB_FUNCTION void KRB5_LIB_CALL
1807krb5_clear_error_string (krb5_context /*context*/)
1808 KRB5_DEPRECATED_FUNCTION("Use X instead");
1809
1810KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1811krb5_closelog (
1812 krb5_context /*context*/,
1813 krb5_log_facility */*fac*/);
1814
1815/**
1816 * Return TRUE if `mcreds' and `creds' are equal (`whichfields'
1817 * determines what equal means).
1818 *
1819 *
1820 * The following flags, set in whichfields affects the comparison:
1821 * - KRB5_TC_MATCH_SRV_NAMEONLY Consider all realms equal when comparing the service principal.
1822 * - KRB5_TC_MATCH_KEYTYPE Compare enctypes.
1823 * - KRB5_TC_MATCH_FLAGS_EXACT Make sure that the ticket flags are identical.
1824 * - KRB5_TC_MATCH_FLAGS Make sure that all ticket flags set in mcreds are also present in creds .
1825 * - KRB5_TC_MATCH_TIMES_EXACT Compares the ticket times exactly.
1826 * - KRB5_TC_MATCH_TIMES Compares only the expiration times of the creds.
1827 * - KRB5_TC_MATCH_AUTHDATA Compares the authdata fields.
1828 * - KRB5_TC_MATCH_2ND_TKT Compares the second tickets (used by user-to-user authentication).
1829 * - KRB5_TC_MATCH_IS_SKEY Compares the existance of the second ticket.
1830 *
1831 * @param context Kerberos 5 context.
1832 * @param whichfields which fields to compare.
1833 * @param mcreds cred to compare with.
1834 * @param creds cred to compare with.
1835 *
1836 * @return return TRUE if mcred and creds are equal, FALSE if not.
1837 *
1838 * @ingroup krb5
1839 */
1840
1841KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
1842krb5_compare_creds (
1843 krb5_context /*context*/,
1844 krb5_flags /*whichfields*/,
1845 const krb5_creds * /*mcreds*/,
1846 const krb5_creds * /*creds*/);
1847
1848/**
1849 * Free configuration file section, the result of
1850 * krb5_config_parse_file() and krb5_config_parse_file_multi().
1851 *
1852 * @param context A Kerberos 5 context
1853 * @param s the configuration section to free
1854 *
1855 * @return returns 0 on successes, otherwise an error code, see
1856 * krb5_get_error_message()
1857 *
1858 * @ingroup krb5_support
1859 */
1860
1861KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
1862krb5_config_file_free (
1863 krb5_context /*context*/,
1864 krb5_config_section */*s*/);
1865
1866/**
1867 * Free the resulting strings from krb5_config-get_strings() and
1868 * krb5_config_vget_strings().
1869 *
1870 * @param strings strings to free
1871 *
1872 * @ingroup krb5_support
1873 */
1874
1875KRB5_LIB_FUNCTION void KRB5_LIB_CALL
1876krb5_config_free_strings (char **/*strings*/);
1877
1878/**
1879 * Like krb5_config_get_bool() but with a va_list list of
1880 * configuration selection.
1881 *
1882 * Configuration value to a boolean value, where yes/true and any
1883 * non-zero number means TRUE and other value is FALSE.
1884 *
1885 * @param context A Kerberos 5 context.
1886 * @param c a configuration section, or NULL to use the section from context
1887 * @param ... a list of names, terminated with NULL.
1888 *
1889 * @return TRUE or FALSE
1890 *
1891 * @ingroup krb5_support
1892 */
1893
1894KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
1895krb5_config_get_bool (
1896 krb5_context /*context*/,
1897 const krb5_config_section */*c*/,
1898 ...);
1899
1900/**
1901 * krb5_config_get_bool_default() will convert the configuration
1902 * option value to a boolean value, where yes/true and any non-zero
1903 * number means TRUE and other value is FALSE.
1904 *
1905 * @param context A Kerberos 5 context.
1906 * @param c a configuration section, or NULL to use the section from context
1907 * @param def_value the default value to return if no configuration
1908 * found in the database.
1909 * @param ... a list of names, terminated with NULL.
1910 *
1911 * @return TRUE or FALSE
1912 *
1913 * @ingroup krb5_support
1914 */
1915
1916KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
1917krb5_config_get_bool_default (
1918 krb5_context /*context*/,
1919 const krb5_config_section */*c*/,
1920 krb5_boolean /*def_value*/,
1921 ...);
1922
1923KRB5_LIB_FUNCTION int KRB5_LIB_CALL
1924krb5_config_get_int (
1925 krb5_context /*context*/,
1926 const krb5_config_section */*c*/,
1927 ...);
1928
1929KRB5_LIB_FUNCTION int KRB5_LIB_CALL
1930krb5_config_get_int_default (
1931 krb5_context /*context*/,
1932 const krb5_config_section */*c*/,
1933 int /*def_value*/,
1934 ...);
1935
1936/**
1937 * Get a list of configuration binding list for more processing
1938 *
1939 * @param context A Kerberos 5 context.
1940 * @param c a configuration section, or NULL to use the section from context
1941 * @param ... a list of names, terminated with NULL.
1942 *
1943 * @return NULL if configuration list is not found, a list otherwise
1944 *
1945 * @ingroup krb5_support
1946 */
1947
1948KRB5_LIB_FUNCTION const krb5_config_binding * KRB5_LIB_CALL
1949krb5_config_get_list (
1950 krb5_context /*context*/,
1951 const krb5_config_section */*c*/,
1952 ...);
1953
1954/**
1955 * Returns a "const char *" to a string in the configuration database.
1956 * The string may not be valid after a reload of the configuration
1957 * database so a caller should make a local copy if it needs to keep
1958 * the string.
1959 *
1960 * @param context A Kerberos 5 context.
1961 * @param c a configuration section, or NULL to use the section from context
1962 * @param ... a list of names, terminated with NULL.
1963 *
1964 * @return NULL if configuration string not found, a string otherwise
1965 *
1966 * @ingroup krb5_support
1967 */
1968
1969KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
1970krb5_config_get_string (
1971 krb5_context /*context*/,
1972 const krb5_config_section */*c*/,
1973 ...);
1974
1975/**
1976 * Like krb5_config_get_string(), but instead of returning NULL,
1977 * instead return a default value.
1978 *
1979 * @param context A Kerberos 5 context.
1980 * @param c a configuration section, or NULL to use the section from context
1981 * @param def_value the default value to return if no configuration
1982 * found in the database.
1983 * @param ... a list of names, terminated with NULL.
1984 *
1985 * @return a configuration string
1986 *
1987 * @ingroup krb5_support
1988 */
1989
1990KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
1991krb5_config_get_string_default (
1992 krb5_context /*context*/,
1993 const krb5_config_section */*c*/,
1994 const char */*def_value*/,
1995 ...);
1996
1997/**
1998 * Get a list of configuration strings, free the result with
1999 * krb5_config_free_strings().
2000 *
2001 * @param context A Kerberos 5 context.
2002 * @param c a configuration section, or NULL to use the section from context
2003 * @param ... a list of names, terminated with NULL.
2004 *
2005 * @return TRUE or FALSE
2006 *
2007 * @ingroup krb5_support
2008 */
2009
2010KRB5_LIB_FUNCTION char** KRB5_LIB_CALL
2011krb5_config_get_strings (
2012 krb5_context /*context*/,
2013 const krb5_config_section */*c*/,
2014 ...);
2015
2016/**
2017 * Get the time from the configuration file using a relative time, for example: 1h30s
2018 *
2019 * @param context A Kerberos 5 context.
2020 * @param c a configuration section, or NULL to use the section from context
2021 * @param ... a list of names, terminated with NULL.
2022 *
2023 * @return parsed the time or -1 on error
2024 *
2025 * @ingroup krb5_support
2026 */
2027
2028KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2029krb5_config_get_time (
2030 krb5_context /*context*/,
2031 const krb5_config_section */*c*/,
2032 ...);
2033
2034/**
2035 * Get the time from the configuration file using a relative time, for example: 1h30s
2036 *
2037 * @param context A Kerberos 5 context.
2038 * @param c a configuration section, or NULL to use the section from context
2039 * @param def_value the default value to return if no configuration
2040 * found in the database.
2041 * @param ... a list of names, terminated with NULL.
2042 *
2043 * @return parsed the time (or def_value on parse error)
2044 *
2045 * @ingroup krb5_support
2046 */
2047
2048KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2049krb5_config_get_time_default (
2050 krb5_context /*context*/,
2051 const krb5_config_section */*c*/,
2052 int /*def_value*/,
2053 ...);
2054
2055/**
2056 * If the fname starts with "~/" parse configuration file in the
2057 * current users home directory. The behavior can be disabled and
2058 * enabled by calling krb5_set_home_dir_access().
2059 */
2060
2061KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2062krb5_config_parse_file (
2063 krb5_context /*context*/,
2064 const char */*fname*/,
2065 krb5_config_section **/*res*/);
2066
2067/**
2068 * Parse a configuration file and add the result into res. This
2069 * interface can be used to parse several configuration files into one
2070 * resulting krb5_config_section by calling it repeatably.
2071 *
2072 * @param context a Kerberos 5 context.
2073 * @param fname a file name to a Kerberos configuration file
2074 * @param res the returned result, must be free with krb5_free_config_files().
2075 * @return Return an error code or 0, see krb5_get_error_message().
2076 *
2077 * @ingroup krb5_support
2078 */
2079
2080KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2081krb5_config_parse_file_multi (
2082 krb5_context /*context*/,
2083 const char */*fname*/,
2084 krb5_config_section **/*res*/);
2085
2086/**
2087 * Deprecated: configuration files are not strings
2088 *
2089 * @ingroup krb5_deprecated
2090 */
2091
2092KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2093krb5_config_parse_string_multi (
2094 krb5_context /*context*/,
2095 const char */*string*/,
2096 krb5_config_section **/*res*/)
2097 KRB5_DEPRECATED_FUNCTION("Use X instead");
2098
2099/**
2100 * krb5_config_get_bool() will convert the configuration
2101 * option value to a boolean value, where yes/true and any non-zero
2102 * number means TRUE and other value is FALSE.
2103 *
2104 * @param context A Kerberos 5 context.
2105 * @param c a configuration section, or NULL to use the section from context
2106 * @param args a va_list of arguments
2107 *
2108 * @return TRUE or FALSE
2109 *
2110 * @ingroup krb5_support
2111 */
2112
2113KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
2114krb5_config_vget_bool (
2115 krb5_context /*context*/,
2116 const krb5_config_section */*c*/,
2117 va_list /*args*/);
2118
2119/**
2120 * Like krb5_config_get_bool_default() but with a va_list list of
2121 * configuration selection.
2122 *
2123 * Configuration value to a boolean value, where yes/true and any
2124 * non-zero number means TRUE and other value is FALSE.
2125 *
2126 * @param context A Kerberos 5 context.
2127 * @param c a configuration section, or NULL to use the section from context
2128 * @param def_value the default value to return if no configuration
2129 * found in the database.
2130 * @param args a va_list of arguments
2131 *
2132 * @return TRUE or FALSE
2133 *
2134 * @ingroup krb5_support
2135 */
2136
2137KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
2138krb5_config_vget_bool_default (
2139 krb5_context /*context*/,
2140 const krb5_config_section */*c*/,
2141 krb5_boolean /*def_value*/,
2142 va_list /*args*/);
2143
2144KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2145krb5_config_vget_int (
2146 krb5_context /*context*/,
2147 const krb5_config_section */*c*/,
2148 va_list /*args*/);
2149
2150KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2151krb5_config_vget_int_default (
2152 krb5_context /*context*/,
2153 const krb5_config_section */*c*/,
2154 int /*def_value*/,
2155 va_list /*args*/);
2156
2157/**
2158 * Get a list of configuration binding list for more processing
2159 *
2160 * @param context A Kerberos 5 context.
2161 * @param c a configuration section, or NULL to use the section from context
2162 * @param args a va_list of arguments
2163 *
2164 * @return NULL if configuration list is not found, a list otherwise
2165 *
2166 * @ingroup krb5_support
2167 */
2168
2169KRB5_LIB_FUNCTION const krb5_config_binding * KRB5_LIB_CALL
2170krb5_config_vget_list (
2171 krb5_context /*context*/,
2172 const krb5_config_section */*c*/,
2173 va_list /*args*/);
2174
2175/**
2176 * Like krb5_config_get_string(), but uses a va_list instead of ...
2177 *
2178 * @param context A Kerberos 5 context.
2179 * @param c a configuration section, or NULL to use the section from context
2180 * @param args a va_list of arguments
2181 *
2182 * @return NULL if configuration string not found, a string otherwise
2183 *
2184 * @ingroup krb5_support
2185 */
2186
2187KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
2188krb5_config_vget_string (
2189 krb5_context /*context*/,
2190 const krb5_config_section */*c*/,
2191 va_list /*args*/);
2192
2193/**
2194 * Like krb5_config_vget_string(), but instead of returning NULL,
2195 * instead return a default value.
2196 *
2197 * @param context A Kerberos 5 context.
2198 * @param c a configuration section, or NULL to use the section from context
2199 * @param def_value the default value to return if no configuration
2200 * found in the database.
2201 * @param args a va_list of arguments
2202 *
2203 * @return a configuration string
2204 *
2205 * @ingroup krb5_support
2206 */
2207
2208KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
2209krb5_config_vget_string_default (
2210 krb5_context /*context*/,
2211 const krb5_config_section */*c*/,
2212 const char */*def_value*/,
2213 va_list /*args*/);
2214
2215/**
2216 * Get a list of configuration strings, free the result with
2217 * krb5_config_free_strings().
2218 *
2219 * @param context A Kerberos 5 context.
2220 * @param c a configuration section, or NULL to use the section from context
2221 * @param args a va_list of arguments
2222 *
2223 * @return TRUE or FALSE
2224 *
2225 * @ingroup krb5_support
2226 */
2227
2228KRB5_LIB_FUNCTION char ** KRB5_LIB_CALL
2229krb5_config_vget_strings (
2230 krb5_context /*context*/,
2231 const krb5_config_section */*c*/,
2232 va_list /*args*/);
2233
2234/**
2235 * Get the time from the configuration file using a relative time, for example: 1h30s
2236 *
2237 * @param context A Kerberos 5 context.
2238 * @param c a configuration section, or NULL to use the section from context
2239 * @param args a va_list of arguments
2240 *
2241 * @return parsed the time or -1 on error
2242 *
2243 * @ingroup krb5_support
2244 */
2245
2246KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2247krb5_config_vget_time (
2248 krb5_context /*context*/,
2249 const krb5_config_section */*c*/,
2250 va_list /*args*/);
2251
2252/**
2253 * Get the time from the configuration file using a relative time.
2254 *
2255 * Like krb5_config_get_time_default() but with a va_list list of
2256 * configuration selection.
2257 *
2258 * @param context A Kerberos 5 context.
2259 * @param c a configuration section, or NULL to use the section from context
2260 * @param def_value the default value to return if no configuration
2261 * found in the database.
2262 * @param args a va_list of arguments
2263 *
2264 * @return parsed the time (or def_value on parse error)
2265 *
2266 * @ingroup krb5_support
2267 */
2268
2269KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2270krb5_config_vget_time_default (
2271 krb5_context /*context*/,
2272 const krb5_config_section */*c*/,
2273 int /*def_value*/,
2274 va_list /*args*/);
2275
2276/**
2277 * krb5_copy_address copies the content of address
2278 * inaddr to outaddr.
2279 *
2280 * @param context a Keberos context
2281 * @param inaddr pointer to source address
2282 * @param outaddr pointer to destination address
2283 *
2284 * @return Return an error code or 0.
2285 *
2286 * @ingroup krb5_address
2287 */
2288
2289KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2290krb5_copy_address (
2291 krb5_context /*context*/,
2292 const krb5_address */*inaddr*/,
2293 krb5_address */*outaddr*/);
2294
2295/**
2296 * krb5_copy_addresses copies the content of addresses
2297 * inaddr to outaddr.
2298 *
2299 * @param context a Keberos context
2300 * @param inaddr pointer to source addresses
2301 * @param outaddr pointer to destination addresses
2302 *
2303 * @return Return an error code or 0.
2304 *
2305 * @ingroup krb5_address
2306 */
2307
2308KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2309krb5_copy_addresses (
2310 krb5_context /*context*/,
2311 const krb5_addresses */*inaddr*/,
2312 krb5_addresses */*outaddr*/);
2313
2314KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2315krb5_copy_checksum (
2316 krb5_context /*context*/,
2317 const krb5_checksum */*old*/,
2318 krb5_checksum **/*new*/);
2319
2320/**
2321 * Make a copy for the Kerberos 5 context, the new krb5_context shoud
2322 * be freed with krb5_free_context().
2323 *
2324 * @param context the Kerberos context to copy
2325 * @param out the copy of the Kerberos, set to NULL error.
2326 *
2327 * @return Returns 0 to indicate success. Otherwise an kerberos et
2328 * error code is returned, see krb5_get_error_message().
2329 *
2330 * @ingroup krb5
2331 */
2332
2333KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2334krb5_copy_context (
2335 krb5_context /*context*/,
2336 krb5_context */*out*/);
2337
2338/**
2339 * Copy krb5_creds.
2340 *
2341 * @param context Kerberos 5 context.
2342 * @param incred source credential
2343 * @param outcred destination credential, free with krb5_free_creds().
2344 *
2345 * @return Returns 0 to indicate success. Otherwise an kerberos et
2346 * error code is returned, see krb5_get_error_message().
2347 *
2348 * @ingroup krb5
2349 */
2350
2351KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2352krb5_copy_creds (
2353 krb5_context /*context*/,
2354 const krb5_creds */*incred*/,
2355 krb5_creds **/*outcred*/);
2356
2357/**
2358 * Copy content of krb5_creds.
2359 *
2360 * @param context Kerberos 5 context.
2361 * @param incred source credential
2362 * @param c destination credential, free with krb5_free_cred_contents().
2363 *
2364 * @return Returns 0 to indicate success. Otherwise an kerberos et
2365 * error code is returned, see krb5_get_error_message().
2366 *
2367 * @ingroup krb5
2368 */
2369
2370KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2371krb5_copy_creds_contents (
2372 krb5_context /*context*/,
2373 const krb5_creds */*incred*/,
2374 krb5_creds */*c*/);
2375
2376/**
2377 * Copy the data into a newly allocated krb5_data.
2378 *
2379 * @param context Kerberos 5 context.
2380 * @param indata the krb5_data data to copy
2381 * @param outdata new krb5_date to copy too. Free with krb5_free_data().
2382 *
2383 * @return Returns 0 to indicate success. Otherwise an kerberos et
2384 * error code is returned.
2385 *
2386 * @ingroup krb5
2387 */
2388
2389KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2390krb5_copy_data (
2391 krb5_context /*context*/,
2392 const krb5_data */*indata*/,
2393 krb5_data **/*outdata*/);
2394
2395/**
2396 * Copy the list of realms from `from' to `to'.
2397 *
2398 * @param context Kerberos 5 context.
2399 * @param from list of realms to copy from.
2400 * @param to list of realms to copy to, free list of krb5_free_host_realm().
2401 *
2402 * @return Returns 0 to indicate success. Otherwise an kerberos et
2403 * error code is returned, see krb5_get_error_message().
2404 *
2405 * @ingroup krb5
2406 */
2407
2408KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2409krb5_copy_host_realm (
2410 krb5_context /*context*/,
2411 const krb5_realm */*from*/,
2412 krb5_realm **/*to*/);
2413
2414/**
2415 * Copy a keyblock, free the output keyblock with
2416 * krb5_free_keyblock().
2417 *
2418 * @param context a Kerberos 5 context
2419 * @param inblock the key to copy
2420 * @param to the output key.
2421 *
2422 * @return 0 on success or a Kerberos 5 error code
2423 *
2424 * @ingroup krb5_crypto
2425 */
2426
2427KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2428krb5_copy_keyblock (
2429 krb5_context /*context*/,
2430 const krb5_keyblock */*inblock*/,
2431 krb5_keyblock **/*to*/);
2432
2433/**
2434 * Copy a keyblock, free the output keyblock with
2435 * krb5_free_keyblock_contents().
2436 *
2437 * @param context a Kerberos 5 context
2438 * @param inblock the key to copy
2439 * @param to the output key.
2440 *
2441 * @return 0 on success or a Kerberos 5 error code
2442 *
2443 * @ingroup krb5_crypto
2444 */
2445
2446KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2447krb5_copy_keyblock_contents (
2448 krb5_context /*context*/,
2449 const krb5_keyblock */*inblock*/,
2450 krb5_keyblock */*to*/);
2451
2452/**
2453 * Copy a principal
2454 *
2455 * @param context A Kerberos context.
2456 * @param inprinc principal to copy
2457 * @param outprinc copied principal, free with krb5_free_principal()
2458 *
2459 * @return An krb5 error code, see krb5_get_error_message().
2460 *
2461 * @ingroup krb5_principal
2462 */
2463
2464KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2465krb5_copy_principal (
2466 krb5_context /*context*/,
2467 krb5_const_principal /*inprinc*/,
2468 krb5_principal */*outprinc*/);
2469
2470/**
2471 * Copy ticket and content
2472 *
2473 * @param context a Kerberos 5 context
2474 * @param from ticket to copy
2475 * @param to new copy of ticket, free with krb5_free_ticket()
2476 *
2477 * @return Returns 0 to indicate success. Otherwise an kerberos et
2478 * error code is returned, see krb5_get_error_message().
2479 *
2480 * @ingroup krb5
2481 */
2482
2483KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2484krb5_copy_ticket (
2485 krb5_context /*context*/,
2486 const krb5_ticket */*from*/,
2487 krb5_ticket **/*to*/);
2488
2489KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2490krb5_create_checksum (
2491 krb5_context /*context*/,
2492 krb5_crypto /*crypto*/,
2493 krb5_key_usage /*usage*/,
2494 int /*type*/,
2495 void */*data*/,
2496 size_t /*len*/,
2497 Checksum */*result*/);
2498
2499/**
2500 * Create a Kerberos message checksum.
2501 *
2502 * @param context Kerberos context
2503 * @param crypto Kerberos crypto context
2504 * @param usage Key usage for this buffer
2505 * @param data array of buffers to process
2506 * @param num_data length of array
2507 * @param type output data
2508 *
2509 * @return Return an error code or 0.
2510 * @ingroup krb5_crypto
2511 */
2512
2513KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2514krb5_create_checksum_iov (
2515 krb5_context /*context*/,
2516 krb5_crypto /*crypto*/,
2517 unsigned /*usage*/,
2518 krb5_crypto_iov */*data*/,
2519 unsigned int /*num_data*/,
2520 krb5_cksumtype */*type*/);
2521
2522/**
2523 * Returns the ticket flags for the credentials in creds.
2524 * See also krb5_ticket_get_flags().
2525 *
2526 * @param creds credential to get ticket flags from
2527 *
2528 * @return ticket flags
2529 *
2530 * @ingroup krb5
2531 */
2532
2533KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL
2534krb5_creds_get_ticket_flags (krb5_creds */*creds*/);
2535
2536/**
2537 * Free a crypto context created by krb5_crypto_init().
2538 *
2539 * @param context Kerberos context
2540 * @param crypto crypto context to free
2541 *
2542 * @return Return an error code or 0.
2543 *
2544 * @ingroup krb5_crypto
2545 */
2546
2547KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2548krb5_crypto_destroy (
2549 krb5_context /*context*/,
2550 krb5_crypto /*crypto*/);
2551
2552/**
2553 * The FX-CF2 key derivation function, used in FAST and preauth framework.
2554 *
2555 * @param context Kerberos 5 context
2556 * @param crypto1 first key to combine
2557 * @param crypto2 second key to combine
2558 * @param pepper1 factor to combine with first key to garante uniqueness
2559 * @param pepper2 factor to combine with second key to garante uniqueness
2560 * @param enctype the encryption type of the resulting key
2561 * @param res allocated key, free with krb5_free_keyblock_contents()
2562 *
2563 * @return Return an error code or 0.
2564 *
2565 * @ingroup krb5_crypto
2566 */
2567
2568KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2569krb5_crypto_fx_cf2 (
2570 krb5_context /*context*/,
2571 const krb5_crypto /*crypto1*/,
2572 const krb5_crypto /*crypto2*/,
2573 krb5_data */*pepper1*/,
2574 krb5_data */*pepper2*/,
2575 krb5_enctype /*enctype*/,
2576 krb5_keyblock */*res*/);
2577
2578KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2579krb5_crypto_get_checksum_type (
2580 krb5_context /*context*/,
2581 krb5_crypto /*crypto*/,
2582 krb5_cksumtype */*type*/);
2583
2584/**
2585 * Return the blocksize used algorithm referenced by the crypto context
2586 *
2587 * @param context Kerberos context
2588 * @param crypto crypto context to query
2589 * @param blocksize the resulting blocksize
2590 *
2591 * @return Return an error code or 0.
2592 *
2593 * @ingroup krb5_crypto
2594 */
2595
2596KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2597krb5_crypto_getblocksize (
2598 krb5_context /*context*/,
2599 krb5_crypto /*crypto*/,
2600 size_t */*blocksize*/);
2601
2602/**
2603 * Return the confounder size used by the crypto context
2604 *
2605 * @param context Kerberos context
2606 * @param crypto crypto context to query
2607 * @param confoundersize the returned confounder size
2608 *
2609 * @return Return an error code or 0.
2610 *
2611 * @ingroup krb5_crypto
2612 */
2613
2614KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2615krb5_crypto_getconfoundersize (
2616 krb5_context /*context*/,
2617 krb5_crypto /*crypto*/,
2618 size_t */*confoundersize*/);
2619
2620/**
2621 * Return the encryption type used by the crypto context
2622 *
2623 * @param context Kerberos context
2624 * @param crypto crypto context to query
2625 * @param enctype the resulting encryption type
2626 *
2627 * @return Return an error code or 0.
2628 *
2629 * @ingroup krb5_crypto
2630 */
2631
2632KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2633krb5_crypto_getenctype (
2634 krb5_context /*context*/,
2635 krb5_crypto /*crypto*/,
2636 krb5_enctype */*enctype*/);
2637
2638/**
2639 * Return the padding size used by the crypto context
2640 *
2641 * @param context Kerberos context
2642 * @param crypto crypto context to query
2643 * @param padsize the return padding size
2644 *
2645 * @return Return an error code or 0.
2646 *
2647 * @ingroup krb5_crypto
2648 */
2649
2650KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2651krb5_crypto_getpadsize (
2652 krb5_context /*context*/,
2653 krb5_crypto /*crypto*/,
2654 size_t */*padsize*/);
2655
2656/**
2657 * Create a crypto context used for all encryption and signature
2658 * operation. The encryption type to use is taken from the key, but
2659 * can be overridden with the enctype parameter. This can be useful
2660 * for encryptions types which is compatiable (DES for example).
2661 *
2662 * To free the crypto context, use krb5_crypto_destroy().
2663 *
2664 * @param context Kerberos context
2665 * @param key the key block information with all key data
2666 * @param etype the encryption type
2667 * @param crypto the resulting crypto context
2668 *
2669 * @return Return an error code or 0.
2670 *
2671 * @ingroup krb5_crypto
2672 */
2673
2674KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2675krb5_crypto_init (
2676 krb5_context /*context*/,
2677 const krb5_keyblock */*key*/,
2678 krb5_enctype /*etype*/,
2679 krb5_crypto */*crypto*/);
2680
2681KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2682krb5_crypto_length (
2683 krb5_context /*context*/,
2684 krb5_crypto /*crypto*/,
2685 int /*type*/,
2686 size_t */*len*/);
2687
2688KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2689krb5_crypto_length_iov (
2690 krb5_context /*context*/,
2691 krb5_crypto /*crypto*/,
2692 krb5_crypto_iov */*data*/,
2693 unsigned int /*num_data*/);
2694
2695KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL
2696krb5_crypto_overhead (
2697 krb5_context /*context*/,
2698 krb5_crypto /*crypto*/);
2699
2700KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2701krb5_crypto_prf (
2702 krb5_context /*context*/,
2703 const krb5_crypto /*crypto*/,
2704 const krb5_data */*input*/,
2705 krb5_data */*output*/);
2706
2707KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2708krb5_crypto_prf_length (
2709 krb5_context /*context*/,
2710 krb5_enctype /*type*/,
2711 size_t */*length*/);
2712
2713/**
2714 * Allocate data of and krb5_data.
2715 *
2716 * @param p krb5_data to allocate.
2717 * @param len size to allocate.
2718 *
2719 * @return Returns 0 to indicate success. Otherwise an kerberos et
2720 * error code is returned.
2721 *
2722 * @ingroup krb5
2723 */
2724
2725KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2726krb5_data_alloc (
2727 krb5_data */*p*/,
2728 int /*len*/);
2729
2730/**
2731 * Compare to data.
2732 *
2733 * @param data1 krb5_data to compare
2734 * @param data2 krb5_data to compare
2735 *
2736 * @return return the same way as memcmp(), useful when sorting.
2737 *
2738 * @ingroup krb5
2739 */
2740
2741KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2742krb5_data_cmp (
2743 const krb5_data */*data1*/,
2744 const krb5_data */*data2*/);
2745
2746/**
2747 * Copy the data of len into the krb5_data.
2748 *
2749 * @param p krb5_data to copy into.
2750 * @param data data to copy..
2751 * @param len new size.
2752 *
2753 * @return Returns 0 to indicate success. Otherwise an kerberos et
2754 * error code is returned.
2755 *
2756 * @ingroup krb5
2757 */
2758
2759KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2760krb5_data_copy (
2761 krb5_data */*p*/,
2762 const void */*data*/,
2763 size_t /*len*/);
2764
2765/**
2766 * Compare to data not exposing timing information from the checksum data
2767 *
2768 * @param data1 krb5_data to compare
2769 * @param data2 krb5_data to compare
2770 *
2771 * @return returns zero for same data, otherwise non zero.
2772 *
2773 * @ingroup krb5
2774 */
2775
2776KRB5_LIB_FUNCTION int KRB5_LIB_CALL
2777krb5_data_ct_cmp (
2778 const krb5_data */*data1*/,
2779 const krb5_data */*data2*/);
2780
2781/**
2782 * Free the content of krb5_data structure, its ok to free a zeroed
2783 * structure (with memset() or krb5_data_zero()). When done, the
2784 * structure will be zeroed. The same function is called
2785 * krb5_free_data_contents() in MIT Kerberos.
2786 *
2787 * @param p krb5_data to free.
2788 *
2789 * @ingroup krb5
2790 */
2791
2792KRB5_LIB_FUNCTION void KRB5_LIB_CALL
2793krb5_data_free (krb5_data */*p*/);
2794
2795/**
2796 * Grow (or shrink) the content of krb5_data to a new size.
2797 *
2798 * @param p krb5_data to free.
2799 * @param len new size.
2800 *
2801 * @return Returns 0 to indicate success. Otherwise an kerberos et
2802 * error code is returned.
2803 *
2804 * @ingroup krb5
2805 */
2806
2807KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2808krb5_data_realloc (
2809 krb5_data */*p*/,
2810 int /*len*/);
2811
2812/**
2813 * Reset the (potentially uninitalized) krb5_data structure.
2814 *
2815 * @param p krb5_data to reset.
2816 *
2817 * @ingroup krb5
2818 */
2819
2820KRB5_LIB_FUNCTION void KRB5_LIB_CALL
2821krb5_data_zero (krb5_data */*p*/);
2822
2823KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2824krb5_decode_Authenticator (
2825 krb5_context /*context*/,
2826 const void */*data*/,
2827 size_t /*length*/,
2828 Authenticator */*t*/,
2829 size_t */*len*/)
2830 KRB5_DEPRECATED_FUNCTION("Use X instead");
2831
2832KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2833krb5_decode_ETYPE_INFO (
2834 krb5_context /*context*/,
2835 const void */*data*/,
2836 size_t /*length*/,
2837 ETYPE_INFO */*t*/,
2838 size_t */*len*/)
2839 KRB5_DEPRECATED_FUNCTION("Use X instead");
2840
2841KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2842krb5_decode_ETYPE_INFO2 (
2843 krb5_context /*context*/,
2844 const void */*data*/,
2845 size_t /*length*/,
2846 ETYPE_INFO2 */*t*/,
2847 size_t */*len*/)
2848 KRB5_DEPRECATED_FUNCTION("Use X instead");
2849
2850KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2851krb5_decode_EncAPRepPart (
2852 krb5_context /*context*/,
2853 const void */*data*/,
2854 size_t /*length*/,
2855 EncAPRepPart */*t*/,
2856 size_t */*len*/)
2857 KRB5_DEPRECATED_FUNCTION("Use X instead");
2858
2859KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2860krb5_decode_EncASRepPart (
2861 krb5_context /*context*/,
2862 const void */*data*/,
2863 size_t /*length*/,
2864 EncASRepPart */*t*/,
2865 size_t */*len*/)
2866 KRB5_DEPRECATED_FUNCTION("Use X instead");
2867
2868KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2869krb5_decode_EncKrbCredPart (
2870 krb5_context /*context*/,
2871 const void */*data*/,
2872 size_t /*length*/,
2873 EncKrbCredPart */*t*/,
2874 size_t */*len*/)
2875 KRB5_DEPRECATED_FUNCTION("Use X instead");
2876
2877KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2878krb5_decode_EncTGSRepPart (
2879 krb5_context /*context*/,
2880 const void */*data*/,
2881 size_t /*length*/,
2882 EncTGSRepPart */*t*/,
2883 size_t */*len*/)
2884 KRB5_DEPRECATED_FUNCTION("Use X instead");
2885
2886KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2887krb5_decode_EncTicketPart (
2888 krb5_context /*context*/,
2889 const void */*data*/,
2890 size_t /*length*/,
2891 EncTicketPart */*t*/,
2892 size_t */*len*/)
2893 KRB5_DEPRECATED_FUNCTION("Use X instead");
2894
2895KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2896krb5_decode_ap_req (
2897 krb5_context /*context*/,
2898 const krb5_data */*inbuf*/,
2899 krb5_ap_req */*ap_req*/);
2900
2901KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2902krb5_decrypt (
2903 krb5_context /*context*/,
2904 krb5_crypto /*crypto*/,
2905 unsigned /*usage*/,
2906 void */*data*/,
2907 size_t /*len*/,
2908 krb5_data */*result*/);
2909
2910KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2911krb5_decrypt_EncryptedData (
2912 krb5_context /*context*/,
2913 krb5_crypto /*crypto*/,
2914 unsigned /*usage*/,
2915 const EncryptedData */*e*/,
2916 krb5_data */*result*/);
2917
2918/**
2919 * Inline decrypt a Kerberos message.
2920 *
2921 * @param context Kerberos context
2922 * @param crypto Kerberos crypto context
2923 * @param usage Key usage for this buffer
2924 * @param data array of buffers to process
2925 * @param num_data length of array
2926 * @param ivec initial cbc/cts vector
2927 *
2928 * @return Return an error code or 0.
2929 * @ingroup krb5_crypto
2930 *
2931 * 1. KRB5_CRYPTO_TYPE_HEADER
2932 * 2. one KRB5_CRYPTO_TYPE_DATA and array [0,...] of KRB5_CRYPTO_TYPE_SIGN_ONLY in
2933 * any order, however the receiver have to aware of the
2934 * order. KRB5_CRYPTO_TYPE_SIGN_ONLY is commonly used unencrypoted
2935 * protocol headers and trailers. The output data will be of same
2936 * size as the input data or shorter.
2937 */
2938
2939KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2940krb5_decrypt_iov_ivec (
2941 krb5_context /*context*/,
2942 krb5_crypto /*crypto*/,
2943 unsigned /*usage*/,
2944 krb5_crypto_iov */*data*/,
2945 unsigned int /*num_data*/,
2946 void */*ivec*/);
2947
2948KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2949krb5_decrypt_ivec (
2950 krb5_context /*context*/,
2951 krb5_crypto /*crypto*/,
2952 unsigned /*usage*/,
2953 void */*data*/,
2954 size_t /*len*/,
2955 krb5_data */*result*/,
2956 void */*ivec*/);
2957
2958KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2959krb5_decrypt_ticket (
2960 krb5_context /*context*/,
2961 Ticket */*ticket*/,
2962 krb5_keyblock */*key*/,
2963 EncTicketPart */*out*/,
2964 krb5_flags /*flags*/);
2965
2966KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2967krb5_derive_key (
2968 krb5_context /*context*/,
2969 const krb5_keyblock */*key*/,
2970 krb5_enctype /*etype*/,
2971 const void */*constant*/,
2972 size_t /*constant_len*/,
2973 krb5_keyblock **/*derived_key*/);
2974
2975KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2976krb5_digest_alloc (
2977 krb5_context /*context*/,
2978 krb5_digest */*digest*/);
2979
2980KRB5_LIB_FUNCTION void KRB5_LIB_CALL
2981krb5_digest_free (krb5_digest /*digest*/);
2982
2983KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
2984krb5_digest_get_client_binding (
2985 krb5_context /*context*/,
2986 krb5_digest /*digest*/,
2987 char **/*type*/,
2988 char **/*binding*/);
2989
2990KRB5_LIB_FUNCTION const char * KRB5_LIB_CALL
2991krb5_digest_get_identifier (
2992 krb5_context /*context*/,
2993 krb5_digest /*digest*/);
2994
2995KRB5_LIB_FUNCTION const char * KRB5_LIB_CALL
2996krb5_digest_get_opaque (
2997 krb5_context /*context*/,
2998 krb5_digest /*digest*/);
2999
3000KRB5_LIB_FUNCTION const char * KRB5_LIB_CALL
3001krb5_digest_get_rsp (
3002 krb5_context /*context*/,
3003 krb5_digest /*digest*/);
3004
3005KRB5_LIB_FUNCTION const char * KRB5_LIB_CALL
3006krb5_digest_get_server_nonce (
3007 krb5_context /*context*/,
3008 krb5_digest /*digest*/);
3009
3010KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3011krb5_digest_get_session_key (
3012 krb5_context /*context*/,
3013 krb5_digest /*digest*/,
3014 krb5_data */*data*/);
3015
3016KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3017krb5_digest_get_tickets (
3018 krb5_context /*context*/,
3019 krb5_digest /*digest*/,
3020 Ticket **/*tickets*/);
3021
3022KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3023krb5_digest_init_request (
3024 krb5_context /*context*/,
3025 krb5_digest /*digest*/,
3026 krb5_realm /*realm*/,
3027 krb5_ccache /*ccache*/);
3028
3029/**
3030 * Get the supported/allowed mechanism for this principal.
3031 *
3032 * @param context A Keberos context.
3033 * @param realm The realm of the KDC.
3034 * @param ccache The credential cache to use when talking to the KDC.
3035 * @param flags The supported mechanism.
3036 *
3037 * @return Return an error code or 0.
3038 *
3039 * @ingroup krb5_digest
3040 */
3041
3042KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3043krb5_digest_probe (
3044 krb5_context /*context*/,
3045 krb5_realm /*realm*/,
3046 krb5_ccache /*ccache*/,
3047 unsigned */*flags*/);
3048
3049KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
3050krb5_digest_rep_get_status (
3051 krb5_context /*context*/,
3052 krb5_digest /*digest*/);
3053
3054KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3055krb5_digest_request (
3056 krb5_context /*context*/,
3057 krb5_digest /*digest*/,
3058 krb5_realm /*realm*/,
3059 krb5_ccache /*ccache*/);
3060
3061KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3062krb5_digest_set_authentication_user (
3063 krb5_context /*context*/,
3064 krb5_digest /*digest*/,
3065 krb5_principal /*authentication_user*/);
3066
3067KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3068krb5_digest_set_authid (
3069 krb5_context /*context*/,
3070 krb5_digest /*digest*/,
3071 const char */*authid*/);
3072
3073KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3074krb5_digest_set_client_nonce (
3075 krb5_context /*context*/,
3076 krb5_digest /*digest*/,
3077 const char */*nonce*/);
3078
3079KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3080krb5_digest_set_digest (
3081 krb5_context /*context*/,
3082 krb5_digest /*digest*/,
3083 const char */*dgst*/);
3084
3085KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3086krb5_digest_set_hostname (
3087 krb5_context /*context*/,
3088 krb5_digest /*digest*/,
3089 const char */*hostname*/);
3090
3091KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3092krb5_digest_set_identifier (
3093 krb5_context /*context*/,
3094 krb5_digest /*digest*/,
3095 const char */*id*/);
3096
3097KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3098krb5_digest_set_method (
3099 krb5_context /*context*/,
3100 krb5_digest /*digest*/,
3101 const char */*method*/);
3102
3103KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3104krb5_digest_set_nonceCount (
3105 krb5_context /*context*/,
3106 krb5_digest /*digest*/,
3107 const char */*nonce_count*/);
3108
3109KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3110krb5_digest_set_opaque (
3111 krb5_context /*context*/,
3112 krb5_digest /*digest*/,
3113 const char */*opaque*/);
3114
3115KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3116krb5_digest_set_qop (
3117 krb5_context /*context*/,
3118 krb5_digest /*digest*/,
3119 const char */*qop*/);
3120
3121KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3122krb5_digest_set_realm (
3123 krb5_context /*context*/,
3124 krb5_digest /*digest*/,
3125 const char */*realm*/);
3126
3127KRB5_LIB_FUNCTION int KRB5_LIB_CALL
3128krb5_digest_set_responseData (
3129 krb5_context /*context*/,
3130 krb5_digest /*digest*/,
3131 const char */*response*/);
3132
3133KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3134krb5_digest_set_server_cb (
3135 krb5_context /*context*/,
3136 krb5_digest /*digest*/,
3137 const char */*type*/,
3138 const char */*binding*/);
3139
3140KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3141krb5_digest_set_server_nonce (
3142 krb5_context /*context*/,
3143 krb5_digest /*digest*/,
3144 const char */*nonce*/);
3145
3146KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3147krb5_digest_set_type (
3148 krb5_context /*context*/,
3149 krb5_digest /*digest*/,
3150 const char */*type*/);
3151
3152KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3153krb5_digest_set_uri (
3154 krb5_context /*context*/,
3155 krb5_digest /*digest*/,
3156 const char */*uri*/);
3157
3158KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3159krb5_digest_set_username (
3160 krb5_context /*context*/,
3161 krb5_digest /*digest*/,
3162 const char */*username*/);
3163
3164KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3165krb5_domain_x500_decode (
3166 krb5_context /*context*/,
3167 krb5_data /*tr*/,
3168 char ***/*realms*/,
3169 unsigned int */*num_realms*/,
3170 const char */*client_realm*/,
3171 const char */*server_realm*/);
3172
3173KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3174krb5_domain_x500_encode (
3175 char **/*realms*/,
3176 unsigned int /*num_realms*/,
3177 krb5_data */*encoding*/);
3178
3179/**
3180 * Convert the getaddrinfo() error code to a Kerberos et error code.
3181 *
3182 * @param eai_errno contains the error code from getaddrinfo().
3183 * @param system_error should have the value of errno after the failed getaddrinfo().
3184 *
3185 * @return Kerberos error code representing the EAI errors.
3186 *
3187 * @ingroup krb5_error
3188 */
3189
3190KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3191krb5_eai_to_heim_errno (
3192 int /*eai_errno*/,
3193 int /*system_error*/);
3194
3195KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3196krb5_encode_Authenticator (
3197 krb5_context /*context*/,
3198 void */*data*/,
3199 size_t /*length*/,
3200 Authenticator */*t*/,
3201 size_t */*len*/)
3202 KRB5_DEPRECATED_FUNCTION("Use X instead");
3203
3204KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3205krb5_encode_ETYPE_INFO (
3206 krb5_context /*context*/,
3207 void */*data*/,
3208 size_t /*length*/,
3209 ETYPE_INFO */*t*/,
3210 size_t */*len*/)
3211 KRB5_DEPRECATED_FUNCTION("Use X instead");
3212
3213KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3214krb5_encode_ETYPE_INFO2 (
3215 krb5_context /*context*/,
3216 void */*data*/,
3217 size_t /*length*/,
3218 ETYPE_INFO2 */*t*/,
3219 size_t */*len*/)
3220 KRB5_DEPRECATED_FUNCTION("Use X instead");
3221
3222KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3223krb5_encode_EncAPRepPart (
3224 krb5_context /*context*/,
3225 void */*data*/,
3226 size_t /*length*/,
3227 EncAPRepPart */*t*/,
3228 size_t */*len*/)
3229 KRB5_DEPRECATED_FUNCTION("Use X instead");
3230
3231KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3232krb5_encode_EncASRepPart (
3233 krb5_context /*context*/,
3234 void */*data*/,
3235 size_t /*length*/,
3236 EncASRepPart */*t*/,
3237 size_t */*len*/)
3238 KRB5_DEPRECATED_FUNCTION("Use X instead");
3239
3240KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3241krb5_encode_EncKrbCredPart (
3242 krb5_context /*context*/,
3243 void */*data*/,
3244 size_t /*length*/,
3245 EncKrbCredPart */*t*/,
3246 size_t */*len*/)
3247 KRB5_DEPRECATED_FUNCTION("Use X instead");
3248
3249KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3250krb5_encode_EncTGSRepPart (
3251 krb5_context /*context*/,
3252 void */*data*/,
3253 size_t /*length*/,
3254 EncTGSRepPart */*t*/,
3255 size_t */*len*/)
3256 KRB5_DEPRECATED_FUNCTION("Use X instead");
3257
3258KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3259krb5_encode_EncTicketPart (
3260 krb5_context /*context*/,
3261 void */*data*/,
3262 size_t /*length*/,
3263 EncTicketPart */*t*/,
3264 size_t */*len*/)
3265 KRB5_DEPRECATED_FUNCTION("Use X instead");
3266
3267KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3268krb5_encrypt (
3269 krb5_context /*context*/,
3270 krb5_crypto /*crypto*/,
3271 unsigned /*usage*/,
3272 const void */*data*/,
3273 size_t /*len*/,
3274 krb5_data */*result*/);
3275
3276KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3277krb5_encrypt_EncryptedData (
3278 krb5_context /*context*/,
3279 krb5_crypto /*crypto*/,
3280 unsigned /*usage*/,
3281 void */*data*/,
3282 size_t /*len*/,
3283 int /*kvno*/,
3284 EncryptedData */*result*/);
3285
3286/**
3287 * Inline encrypt a kerberos message
3288 *
3289 * @param context Kerberos context
3290 * @param crypto Kerberos crypto context
3291 * @param usage Key usage for this buffer
3292 * @param data array of buffers to process
3293 * @param num_data length of array
3294 * @param ivec initial cbc/cts vector
3295 *
3296 * @return Return an error code or 0.
3297 * @ingroup krb5_crypto
3298 *
3299 * Kerberos encrypted data look like this:
3300 *
3301 * 1. KRB5_CRYPTO_TYPE_HEADER
3302 * 2. array [1,...] KRB5_CRYPTO_TYPE_DATA and array [0,...]
3303 * KRB5_CRYPTO_TYPE_SIGN_ONLY in any order, however the receiver
3304 * have to aware of the order. KRB5_CRYPTO_TYPE_SIGN_ONLY is
3305 * commonly used headers and trailers.
3306 * 3. KRB5_CRYPTO_TYPE_PADDING, at least on padsize long if padsize > 1
3307 * 4. KRB5_CRYPTO_TYPE_TRAILER
3308 */
3309
3310KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3311krb5_encrypt_iov_ivec (
3312 krb5_context /*context*/,
3313 krb5_crypto /*crypto*/,
3314 unsigned /*usage*/,
3315 krb5_crypto_iov */*data*/,
3316 int /*num_data*/,
3317 void */*ivec*/);
3318
3319KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3320krb5_encrypt_ivec (
3321 krb5_context /*context*/,
3322 krb5_crypto /*crypto*/,
3323 unsigned /*usage*/,
3324 const void */*data*/,
3325 size_t /*len*/,
3326 krb5_data */*result*/,
3327 void */*ivec*/);
3328
3329/**
3330 * Disable encryption type
3331 *
3332 * @param context Kerberos 5 context
3333 * @param enctype encryption type to disable
3334 *
3335 * @return Return an error code or 0.
3336 *
3337 * @ingroup krb5_crypto
3338 */
3339
3340KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3341krb5_enctype_disable (
3342 krb5_context /*context*/,
3343 krb5_enctype /*enctype*/);
3344
3345/**
3346 * Enable encryption type
3347 *
3348 * @param context Kerberos 5 context
3349 * @param enctype encryption type to enable
3350 *
3351 * @return Return an error code or 0.
3352 *
3353 * @ingroup krb5_crypto
3354 */
3355
3356KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3357krb5_enctype_enable (
3358 krb5_context /*context*/,
3359 krb5_enctype /*enctype*/);
3360
3361KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3362krb5_enctype_keybits (
3363 krb5_context /*context*/,
3364 krb5_enctype /*type*/,
3365 size_t */*keybits*/);
3366
3367KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3368krb5_enctype_keysize (
3369 krb5_context /*context*/,
3370 krb5_enctype /*type*/,
3371 size_t */*keysize*/);
3372
3373KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3374krb5_enctype_to_keytype (
3375 krb5_context /*context*/,
3376 krb5_enctype /*etype*/,
3377 krb5_keytype */*keytype*/);
3378
3379KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3380krb5_enctype_to_string (
3381 krb5_context /*context*/,
3382 krb5_enctype /*etype*/,
3383 char **/*string*/);
3384
3385/**
3386 * Check if a enctype is valid, return 0 if it is.
3387 *
3388 * @param context Kerberos context
3389 * @param etype enctype to check if its valid or not
3390 *
3391 * @return Return an error code for an failure or 0 on success (enctype valid).
3392 * @ingroup krb5_crypto
3393 */
3394
3395KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3396krb5_enctype_valid (
3397 krb5_context /*context*/,
3398 krb5_enctype /*etype*/);
3399
3400/**
3401 * Deprecated: keytypes doesn't exists, they are really enctypes.
3402 *
3403 * @ingroup krb5_deprecated
3404 */
3405
3406KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
3407krb5_enctypes_compatible_keys (
3408 krb5_context /*context*/,
3409 krb5_enctype /*etype1*/,
3410 krb5_enctype /*etype2*/)
3411 KRB5_DEPRECATED_FUNCTION("Use X instead");
3412
3413krb5_error_code
3414krb5_enomem (krb5_context /*context*/);
3415
3416/**
3417 * Log a warning to the log, default stderr, include bthe error from
3418 * the last failure and then exit.
3419 *
3420 * @param context A Kerberos 5 context
3421 * @param eval the exit code to exit with
3422 * @param code error code of the last error
3423 * @param fmt message to print
3424 *
3425 * @ingroup krb5_error
3426 */
3427
3428KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3429krb5_err (
3430 krb5_context /*context*/,
3431 int /*eval*/,
3432 krb5_error_code /*code*/,
3433 const char */*fmt*/,
3434 ...)
3435 __attribute__ ((__noreturn__, __format__ (__printf__, 4, 5)));
3436
3437KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3438krb5_error_from_rd_error (
3439 krb5_context /*context*/,
3440 const krb5_error */*error*/,
3441 const krb5_creds */*creds*/);
3442
3443/**
3444 * Log a warning to the log, default stderr, and then exit.
3445 *
3446 * @param context A Kerberos 5 context
3447 * @param eval the exit code to exit with
3448 * @param fmt message to print
3449 *
3450 * @ingroup krb5_error
3451 */
3452
3453KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3454krb5_errx (
3455 krb5_context /*context*/,
3456 int /*eval*/,
3457 const char */*fmt*/,
3458 ...)
3459 __attribute__ ((__noreturn__, __format__ (__printf__, 3, 4)));
3460
3461/**
3462 * krb5_expand_hostname() tries to make orig_hostname into a more
3463 * canonical one in the newly allocated space returned in
3464 * new_hostname.
3465
3466 * @param context a Keberos context
3467 * @param orig_hostname hostname to canonicalise.
3468 * @param new_hostname output hostname, caller must free hostname with
3469 * krb5_xfree().
3470 *
3471 * @return Return an error code or 0, see krb5_get_error_message().
3472 *
3473 * @ingroup krb5_support
3474 */
3475
3476KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3477krb5_expand_hostname (
3478 krb5_context /*context*/,
3479 const char */*orig_hostname*/,
3480 char **/*new_hostname*/);
3481
3482/**
3483 * krb5_expand_hostname_realms() expands orig_hostname to a name we
3484 * believe to be a hostname in newly allocated space in new_hostname
3485 * and return the realms new_hostname is believed to belong to in
3486 * realms.
3487 *
3488 * @param context a Keberos context
3489 * @param orig_hostname hostname to canonicalise.
3490 * @param new_hostname output hostname, caller must free hostname with
3491 * krb5_xfree().
3492 * @param realms output possible realms, is an array that is terminated
3493 * with NULL. Caller must free with krb5_free_host_realm().
3494 *
3495 * @return Return an error code or 0, see krb5_get_error_message().
3496 *
3497 * @ingroup krb5_support
3498 */
3499
3500KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3501krb5_expand_hostname_realms (
3502 krb5_context /*context*/,
3503 const char */*orig_hostname*/,
3504 char **/*new_hostname*/,
3505 char ***/*realms*/);
3506
3507KRB5_LIB_FUNCTION PA_DATA * KRB5_LIB_CALL
3508krb5_find_padata (
3509 PA_DATA */*val*/,
3510 unsigned /*len*/,
3511 int /*type*/,
3512 int */*idx*/);
3513
3514KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3515krb5_format_time (
3516 krb5_context /*context*/,
3517 time_t /*t*/,
3518 char */*s*/,
3519 size_t /*len*/,
3520 krb5_boolean /*include_time*/);
3521
3522/**
3523 * krb5_free_address frees the data stored in the address that is
3524 * alloced with any of the krb5_address functions.
3525 *
3526 * @param context a Keberos context
3527 * @param address addresss to be freed.
3528 *
3529 * @return Return an error code or 0.
3530 *
3531 * @ingroup krb5_address
3532 */
3533
3534KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3535krb5_free_address (
3536 krb5_context /*context*/,
3537 krb5_address */*address*/);
3538
3539/**
3540 * krb5_free_addresses frees the data stored in the address that is
3541 * alloced with any of the krb5_address functions.
3542 *
3543 * @param context a Keberos context
3544 * @param addresses addressses to be freed.
3545 *
3546 * @return Return an error code or 0.
3547 *
3548 * @ingroup krb5_address
3549 */
3550
3551KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3552krb5_free_addresses (
3553 krb5_context /*context*/,
3554 krb5_addresses */*addresses*/);
3555
3556KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3557krb5_free_ap_rep_enc_part (
3558 krb5_context /*context*/,
3559 krb5_ap_rep_enc_part */*val*/);
3560
3561KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3562krb5_free_authenticator (
3563 krb5_context /*context*/,
3564 krb5_authenticator */*authenticator*/);
3565
3566KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3567krb5_free_checksum (
3568 krb5_context /*context*/,
3569 krb5_checksum */*cksum*/);
3570
3571KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3572krb5_free_checksum_contents (
3573 krb5_context /*context*/,
3574 krb5_checksum */*cksum*/);
3575
3576/**
3577 * Free a list of configuration files.
3578 *
3579 * @param filenames list, terminated with a NULL pointer, to be
3580 * freed. NULL is an valid argument.
3581 *
3582 * @return Returns 0 to indicate success. Otherwise an kerberos et
3583 * error code is returned, see krb5_get_error_message().
3584 *
3585 * @ingroup krb5
3586 */
3587
3588KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3589krb5_free_config_files (char **/*filenames*/);
3590
3591/**
3592 * Frees the krb5_context allocated by krb5_init_context().
3593 *
3594 * @param context context to be freed.
3595 *
3596 * @ingroup krb5
3597 */
3598
3599KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3600krb5_free_context (krb5_context /*context*/);
3601
3602/**
3603 * Free content of krb5_creds.
3604 *
3605 * @param context Kerberos 5 context.
3606 * @param c krb5_creds to free.
3607 *
3608 * @return Returns 0 to indicate success. Otherwise an kerberos et
3609 * error code is returned, see krb5_get_error_message().
3610 *
3611 * @ingroup krb5
3612 */
3613
3614KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3615krb5_free_cred_contents (
3616 krb5_context /*context*/,
3617 krb5_creds */*c*/);
3618
3619/**
3620 * Free krb5_creds.
3621 *
3622 * @param context Kerberos 5 context.
3623 * @param c krb5_creds to free.
3624 *
3625 * @return Returns 0 to indicate success. Otherwise an kerberos et
3626 * error code is returned, see krb5_get_error_message().
3627 *
3628 * @ingroup krb5
3629 */
3630
3631KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3632krb5_free_creds (
3633 krb5_context /*context*/,
3634 krb5_creds */*c*/);
3635
3636/**
3637 * Deprecated: use krb5_free_cred_contents()
3638 *
3639 * @ingroup krb5_deprecated
3640 */
3641
3642KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3643krb5_free_creds_contents (
3644 krb5_context /*context*/,
3645 krb5_creds */*c*/)
3646 KRB5_DEPRECATED_FUNCTION("Use X instead");
3647
3648/**
3649 * Free krb5_data (and its content).
3650 *
3651 * @param context Kerberos 5 context.
3652 * @param p krb5_data to free.
3653 *
3654 * @ingroup krb5
3655 */
3656
3657KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3658krb5_free_data (
3659 krb5_context /*context*/,
3660 krb5_data */*p*/);
3661
3662/**
3663 * Same as krb5_data_free(). MIT compat.
3664 *
3665 * Deprecated: use krb5_data_free().
3666 *
3667 * @param context Kerberos 5 context.
3668 * @param data krb5_data to free.
3669 *
3670 * @ingroup krb5_deprecated
3671 */
3672
3673KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3674krb5_free_data_contents (
3675 krb5_context /*context*/,
3676 krb5_data */*data*/)
3677 KRB5_DEPRECATED_FUNCTION("Use X instead");
3678
3679KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3680krb5_free_default_realm (
3681 krb5_context /*context*/,
3682 krb5_realm /*realm*/);
3683
3684KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3685krb5_free_error (
3686 krb5_context /*context*/,
3687 krb5_error */*error*/);
3688
3689KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3690krb5_free_error_contents (
3691 krb5_context /*context*/,
3692 krb5_error */*error*/);
3693
3694/**
3695 * Free the error message returned by krb5_get_error_message().
3696 *
3697 * @param context Kerberos context
3698 * @param msg error message to free, returned byg
3699 * krb5_get_error_message().
3700 *
3701 * @ingroup krb5_error
3702 */
3703
3704KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3705krb5_free_error_message (
3706 krb5_context /*context*/,
3707 const char */*msg*/);
3708
3709/**
3710 * Free the error message returned by krb5_get_error_string().
3711 *
3712 * Deprecated: use krb5_free_error_message()
3713 *
3714 * @param context Kerberos context
3715 * @param str error message to free
3716 *
3717 * @ingroup krb5_deprecated
3718 */
3719
3720KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3721krb5_free_error_string (
3722 krb5_context /*context*/,
3723 char */*str*/)
3724 KRB5_DEPRECATED_FUNCTION("Use X instead");
3725
3726/**
3727 * Free all memory allocated by `realmlist'
3728 *
3729 * @param context A Kerberos 5 context.
3730 * @param realmlist realmlist to free, NULL is ok
3731 *
3732 * @return a Kerberos error code, always 0.
3733 *
3734 * @ingroup krb5_support
3735 */
3736
3737KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3738krb5_free_host_realm (
3739 krb5_context /*context*/,
3740 krb5_realm */*realmlist*/);
3741
3742/**
3743 * Variable containing the FILE based credential cache implemention.
3744 *
3745 * @ingroup krb5_ccache
3746 */
3747
3748KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3749krb5_free_kdc_rep (
3750 krb5_context /*context*/,
3751 krb5_kdc_rep */*rep*/);
3752
3753/**
3754 * Free a keyblock, also zero out the content of the keyblock, uses
3755 * krb5_free_keyblock_contents() to free the content.
3756 *
3757 * @param context a Kerberos 5 context
3758 * @param keyblock keyblock to free, NULL is valid argument
3759 *
3760 * @ingroup krb5_crypto
3761 */
3762
3763KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3764krb5_free_keyblock (
3765 krb5_context /*context*/,
3766 krb5_keyblock */*keyblock*/);
3767
3768/**
3769 * Free a keyblock's content, also zero out the content of the keyblock.
3770 *
3771 * @param context a Kerberos 5 context
3772 * @param keyblock keyblock content to free, NULL is valid argument
3773 *
3774 * @ingroup krb5_crypto
3775 */
3776
3777KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3778krb5_free_keyblock_contents (
3779 krb5_context /*context*/,
3780 krb5_keyblock */*keyblock*/);
3781
3782KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3783krb5_free_krbhst (
3784 krb5_context /*context*/,
3785 char **/*hostlist*/);
3786
3787/**
3788 * Free a name canonicalization rule iterator.
3789 */
3790
3791KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3792krb5_free_name_canon_iterator (
3793 krb5_context /*context*/,
3794 krb5_name_canon_iterator /*iter*/);
3795
3796/**
3797 * Frees a Kerberos principal allocated by the library with
3798 * krb5_parse_name(), krb5_make_principal() or any other related
3799 * principal functions.
3800 *
3801 * @param context A Kerberos context.
3802 * @param p a principal to free.
3803 *
3804 * @return An krb5 error code, see krb5_get_error_message().
3805 *
3806 * @ingroup krb5_principal
3807 */
3808
3809KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3810krb5_free_principal (
3811 krb5_context /*context*/,
3812 krb5_principal /*p*/);
3813
3814KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3815krb5_free_salt (
3816 krb5_context /*context*/,
3817 krb5_salt /*salt*/);
3818
3819/**
3820 * Free ticket and content
3821 *
3822 * @param context a Kerberos 5 context
3823 * @param ticket ticket to free
3824 *
3825 * @return Returns 0 to indicate success. Otherwise an kerberos et
3826 * error code is returned, see krb5_get_error_message().
3827 *
3828 * @ingroup krb5
3829 */
3830
3831KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3832krb5_free_ticket (
3833 krb5_context /*context*/,
3834 krb5_ticket */*ticket*/);
3835
3836/**
3837 * Deprecated: use krb5_xfree().
3838 *
3839 * @ingroup krb5_deprecated
3840 */
3841
3842KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3843krb5_free_unparsed_name (
3844 krb5_context /*context*/,
3845 char */*str*/)
3846 KRB5_DEPRECATED_FUNCTION("Use X instead");
3847
3848/**
3849 * Forward credentials for client to host hostname , making them
3850 * forwardable if forwardable, and returning the blob of data to sent
3851 * in out_data. If hostname == NULL, pick it from server.
3852 *
3853 * @param context A kerberos 5 context.
3854 * @param auth_context the auth context with the key to encrypt the out_data.
3855 * @param hostname the host to forward the tickets too.
3856 * @param client the client to delegate from.
3857 * @param server the server to delegate the credential too.
3858 * @param ccache credential cache to use.
3859 * @param forwardable make the forwarded ticket forwabledable.
3860 * @param out_data the resulting credential.
3861 *
3862 * @return Return an error code or 0.
3863 *
3864 * @ingroup krb5_credential
3865 */
3866
3867KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3868krb5_fwd_tgt_creds (
3869 krb5_context /*context*/,
3870 krb5_auth_context /*auth_context*/,
3871 const char */*hostname*/,
3872 krb5_principal /*client*/,
3873 krb5_principal /*server*/,
3874 krb5_ccache /*ccache*/,
3875 int /*forwardable*/,
3876 krb5_data */*out_data*/);
3877
3878/**
3879 * Fill buffer buf with len bytes of PRNG randomness that is ok to use
3880 * for key generation, padding and public diclosing the randomness w/o
3881 * disclosing the randomness source.
3882 *
3883 * This function can fail, and callers must check the return value.
3884 *
3885 * @param buf a buffer to fill with randomness
3886 * @param len length of memory that buf points to.
3887 *
3888 * @return return 0 on success or HEIM_ERR_RANDOM_OFFLINE if the
3889 * funcation failed to initialize the randomness source.
3890 *
3891 * @ingroup krb5_crypto
3892 */
3893
3894HEIMDAL_WARN_UNUSED_RESULT_ATTRIBUTE KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3895krb5_generate_random (
3896 void */*buf*/,
3897 size_t /*len*/);
3898
3899/**
3900 * Fill buffer buf with len bytes of PRNG randomness that is ok to use
3901 * for key generation, padding and public diclosing the randomness w/o
3902 * disclosing the randomness source.
3903 *
3904 * This function can NOT fail, instead it will abort() and program will crash.
3905 *
3906 * If this function is called after a successful krb5_init_context(),
3907 * the chance of it failing is low due to that krb5_init_context()
3908 * pulls out some random, and quite commonly the randomness sources
3909 * will not fail once it have started to produce good output,
3910 * /dev/urandom behavies that way.
3911 *
3912 * @param buf a buffer to fill with randomness
3913 * @param len length of memory that buf points to.
3914 *
3915 * @ingroup krb5_crypto
3916 */
3917
3918KRB5_LIB_FUNCTION void KRB5_LIB_CALL
3919krb5_generate_random_block (
3920 void */*buf*/,
3921 size_t /*len*/);
3922
3923KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3924krb5_generate_random_keyblock (
3925 krb5_context /*context*/,
3926 krb5_enctype /*type*/,
3927 krb5_keyblock */*key*/);
3928
3929KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3930krb5_generate_seq_number (
3931 krb5_context /*context*/,
3932 const krb5_keyblock */*key*/,
3933 uint32_t */*seqno*/);
3934
3935/**
3936 * Deprecated: use krb5_generate_subkey_extended()
3937 *
3938 * @ingroup krb5_deprecated
3939 */
3940
3941KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3942krb5_generate_subkey (
3943 krb5_context /*context*/,
3944 const krb5_keyblock */*key*/,
3945 krb5_keyblock **/*subkey*/)
3946 KRB5_DEPRECATED_FUNCTION("Use X instead");
3947
3948/**
3949 * Generate subkey, from keyblock
3950 *
3951 * @param context kerberos context
3952 * @param key session key
3953 * @param etype encryption type of subkey, if ETYPE_NULL, use key's enctype
3954 * @param subkey returned new, free with krb5_free_keyblock().
3955 *
3956 * @return 0 on success or a Kerberos 5 error code
3957 *
3958* @ingroup krb5_crypto
3959 */
3960
3961KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3962krb5_generate_subkey_extended (
3963 krb5_context /*context*/,
3964 const krb5_keyblock */*key*/,
3965 krb5_enctype /*etype*/,
3966 krb5_keyblock **/*subkey*/);
3967
3968KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3969krb5_get_all_client_addrs (
3970 krb5_context /*context*/,
3971 krb5_addresses */*res*/);
3972
3973KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3974krb5_get_all_server_addrs (
3975 krb5_context /*context*/,
3976 krb5_addresses */*res*/);
3977
3978/**
3979 * Deprecated: use krb5_get_credentials_with_flags().
3980 *
3981 * @ingroup krb5_deprecated
3982 */
3983
3984KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
3985krb5_get_cred_from_kdc (
3986 krb5_context /*context*/,
3987 krb5_ccache /*ccache*/,
3988 krb5_creds */*in_creds*/,
3989 krb5_creds **/*out_creds*/,
3990 krb5_creds ***/*ret_tgts*/)
3991 KRB5_DEPRECATED_FUNCTION("Use X instead");
3992
3993/**
3994 * Deprecated: use krb5_get_credentials_with_flags().
3995 *
3996 * @ingroup krb5_deprecated
3997 */
3998
3999KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4000krb5_get_cred_from_kdc_opt (
4001 krb5_context /*context*/,
4002 krb5_ccache /*ccache*/,
4003 krb5_creds */*in_creds*/,
4004 krb5_creds **/*out_creds*/,
4005 krb5_creds ***/*ret_tgts*/,
4006 krb5_flags /*flags*/)
4007 KRB5_DEPRECATED_FUNCTION("Use X instead");
4008
4009KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4010krb5_get_credentials (
4011 krb5_context /*context*/,
4012 krb5_flags /*options*/,
4013 krb5_ccache /*ccache*/,
4014 krb5_creds */*in_creds*/,
4015 krb5_creds **/*out_creds*/);
4016
4017KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4018krb5_get_credentials_with_flags (
4019 krb5_context /*context*/,
4020 krb5_flags /*options*/,
4021 krb5_kdc_flags /*flags*/,
4022 krb5_ccache /*ccache*/,
4023 krb5_creds */*in_creds*/,
4024 krb5_creds **/*out_creds*/);
4025
4026KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4027krb5_get_creds (
4028 krb5_context /*context*/,
4029 krb5_get_creds_opt /*opt*/,
4030 krb5_ccache /*ccache*/,
4031 krb5_const_principal /*inprinc*/,
4032 krb5_creds **/*out_creds*/);
4033
4034KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4035krb5_get_creds_opt_add_options (
4036 krb5_context /*context*/,
4037 krb5_get_creds_opt /*opt*/,
4038 krb5_flags /*options*/);
4039
4040KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4041krb5_get_creds_opt_alloc (
4042 krb5_context /*context*/,
4043 krb5_get_creds_opt */*opt*/);
4044
4045KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4046krb5_get_creds_opt_free (
4047 krb5_context /*context*/,
4048 krb5_get_creds_opt /*opt*/);
4049
4050KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4051krb5_get_creds_opt_set_enctype (
4052 krb5_context /*context*/,
4053 krb5_get_creds_opt /*opt*/,
4054 krb5_enctype /*enctype*/);
4055
4056KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4057krb5_get_creds_opt_set_impersonate (
4058 krb5_context /*context*/,
4059 krb5_get_creds_opt /*opt*/,
4060 krb5_const_principal /*self*/);
4061
4062KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4063krb5_get_creds_opt_set_options (
4064 krb5_context /*context*/,
4065 krb5_get_creds_opt /*opt*/,
4066 krb5_flags /*options*/);
4067
4068KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4069krb5_get_creds_opt_set_ticket (
4070 krb5_context /*context*/,
4071 krb5_get_creds_opt /*opt*/,
4072 const Ticket */*ticket*/);
4073
4074/**
4075 * Get the global configuration list.
4076 *
4077 * @param pfilenames return array of filenames, should be freed with krb5_free_config_files().
4078 *
4079 * @return Returns 0 to indicate success. Otherwise an kerberos et
4080 * error code is returned, see krb5_get_error_message().
4081 *
4082 * @ingroup krb5
4083 */
4084
4085KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4086krb5_get_default_config_files (char ***/*pfilenames*/);
4087
4088/**
4089 * Get the default encryption types that will be use in communcation
4090 * with the KDC, clients and servers.
4091 *
4092 * @param context Kerberos 5 context.
4093 * @param pdu_type request type (AS, TGS or none)
4094 * @param etypes Encryption types, array terminated with
4095 * ETYPE_NULL(0), caller should free array with krb5_xfree():
4096 *
4097 * @return Returns 0 to indicate success. Otherwise an kerberos et
4098 * error code is returned, see krb5_get_error_message().
4099 *
4100 * @ingroup krb5
4101 */
4102
4103KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4104krb5_get_default_in_tkt_etypes (
4105 krb5_context /*context*/,
4106 krb5_pdu /*pdu_type*/,
4107 krb5_enctype **/*etypes*/);
4108
4109KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4110krb5_get_default_principal (
4111 krb5_context /*context*/,
4112 krb5_principal */*princ*/);
4113
4114KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4115krb5_get_default_realm (
4116 krb5_context /*context*/,
4117 krb5_realm */*realm*/);
4118
4119KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4120krb5_get_default_realms (
4121 krb5_context /*context*/,
4122 krb5_realm **/*realms*/);
4123
4124/**
4125 * Get if the library uses DNS to canonicalize hostnames.
4126 *
4127 * @param context Kerberos 5 context.
4128 *
4129 * @return return non zero if the library uses DNS to canonicalize hostnames.
4130 *
4131 * @ingroup krb5
4132 */
4133
4134KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
4135krb5_get_dns_canonicalize_hostname (krb5_context /*context*/);
4136
4137/**
4138 * Return the error string for the error code. The caller must not
4139 * free the string.
4140 *
4141 * This function is deprecated since its not threadsafe.
4142 *
4143 * @param context Kerberos 5 context.
4144 * @param code Kerberos error code.
4145 *
4146 * @return the error message matching code
4147 *
4148 * @ingroup krb5
4149 */
4150
4151KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
4152krb5_get_err_text (
4153 krb5_context /*context*/,
4154 krb5_error_code /*code*/)
4155 KRB5_DEPRECATED_FUNCTION("Use krb5_get_error_message instead");
4156
4157/**
4158 * Return the error message for `code' in context. On memory
4159 * allocation error the function returns NULL.
4160 *
4161 * @param context Kerberos 5 context
4162 * @param code Error code related to the error
4163 *
4164 * @return an error string, needs to be freed with
4165 * krb5_free_error_message(). The functions return NULL on error.
4166 *
4167 * @ingroup krb5_error
4168 */
4169
4170KRB5_LIB_FUNCTION const char * KRB5_LIB_CALL
4171krb5_get_error_message (
4172 krb5_context /*context*/,
4173 krb5_error_code /*code*/);
4174
4175/**
4176 * Return the error message in context. On error or no error string,
4177 * the function returns NULL.
4178 *
4179 * @param context Kerberos 5 context
4180 *
4181 * @return an error string, needs to be freed with
4182 * krb5_free_error_message(). The functions return NULL on error.
4183 *
4184 * @ingroup krb5_error
4185 */
4186
4187KRB5_LIB_FUNCTION char * KRB5_LIB_CALL
4188krb5_get_error_string (krb5_context /*context*/)
4189 KRB5_DEPRECATED_FUNCTION("Use krb5_get_error_message instead");
4190
4191/**
4192 * Get extra address to the address list that the library will add to
4193 * the client's address list when communicating with the KDC.
4194 *
4195 * @param context Kerberos 5 context.
4196 * @param addresses addreses to set
4197 *
4198 * @return Returns 0 to indicate success. Otherwise an kerberos et
4199 * error code is returned, see krb5_get_error_message().
4200 *
4201 * @ingroup krb5
4202 */
4203
4204KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4205krb5_get_extra_addresses (
4206 krb5_context /*context*/,
4207 krb5_addresses */*addresses*/);
4208
4209/**
4210 * Get version of fcache that the library should use.
4211 *
4212 * @param context Kerberos 5 context.
4213 * @param version version number.
4214 *
4215 * @return Returns 0 to indicate success. Otherwise an kerberos et
4216 * error code is returned, see krb5_get_error_message().
4217 *
4218 * @ingroup krb5
4219 */
4220
4221KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4222krb5_get_fcache_version (
4223 krb5_context /*context*/,
4224 int */*version*/);
4225
4226/**
4227 * Gets tickets forwarded to hostname. If the tickets that are
4228 * forwarded are address-less, the forwarded tickets will also be
4229 * address-less.
4230 *
4231 * If the ticket have any address, hostname will be used for figure
4232 * out the address to forward the ticket too. This since this might
4233 * use DNS, its insecure and also doesn't represent configured all
4234 * addresses of the host. For example, the host might have two
4235 * adresses, one IPv4 and one IPv6 address where the later is not
4236 * published in DNS. This IPv6 address might be used communications
4237 * and thus the resulting ticket useless.
4238 *
4239 * @param context A kerberos 5 context.
4240 * @param auth_context the auth context with the key to encrypt the out_data.
4241 * @param ccache credential cache to use
4242 * @param flags the flags to control the resulting ticket flags
4243 * @param hostname the host to forward the tickets too.
4244 * @param in_creds the in client and server ticket names. The client
4245 * and server components forwarded to the remote host.
4246 * @param out_data the resulting credential.
4247 *
4248 * @return Return an error code or 0.
4249 *
4250 * @ingroup krb5_credential
4251 */
4252
4253KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4254krb5_get_forwarded_creds (
4255 krb5_context /*context*/,
4256 krb5_auth_context /*auth_context*/,
4257 krb5_ccache /*ccache*/,
4258 krb5_flags /*flags*/,
4259 const char */*hostname*/,
4260 krb5_creds */*in_creds*/,
4261 krb5_data */*out_data*/);
4262
4263KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4264krb5_get_host_realm (
4265 krb5_context /*context*/,
4266 const char */*targethost*/,
4267 krb5_realm **/*realms*/);
4268
4269/**
4270 * Get extra addresses to ignore when fetching addresses from the
4271 * underlaying operating system.
4272 *
4273 * @param context Kerberos 5 context.
4274 * @param addresses list addreses ignored
4275 *
4276 * @return Returns 0 to indicate success. Otherwise an kerberos et
4277 * error code is returned, see krb5_get_error_message().
4278 *
4279 * @ingroup krb5
4280 */
4281
4282KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4283krb5_get_ignore_addresses (
4284 krb5_context /*context*/,
4285 krb5_addresses */*addresses*/);
4286
4287KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4288krb5_get_in_cred (
4289 krb5_context /*context*/,
4290 krb5_flags /*options*/,
4291 const krb5_addresses */*addrs*/,
4292 const krb5_enctype */*etypes*/,
4293 const krb5_preauthtype */*ptypes*/,
4294 const krb5_preauthdata */*preauth*/,
4295 krb5_key_proc /*key_proc*/,
4296 krb5_const_pointer /*keyseed*/,
4297 krb5_decrypt_proc /*decrypt_proc*/,
4298 krb5_const_pointer /*decryptarg*/,
4299 krb5_creds */*creds*/,
4300 krb5_kdc_rep */*ret_as_reply*/)
4301 KRB5_DEPRECATED_FUNCTION("Use X instead");
4302
4303KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4304krb5_get_in_tkt (
4305 krb5_context /*context*/,
4306 krb5_flags /*options*/,
4307 const krb5_addresses */*addrs*/,
4308 const krb5_enctype */*etypes*/,
4309 const krb5_preauthtype */*ptypes*/,
4310 krb5_key_proc /*key_proc*/,
4311 krb5_const_pointer /*keyseed*/,
4312 krb5_decrypt_proc /*decrypt_proc*/,
4313 krb5_const_pointer /*decryptarg*/,
4314 krb5_creds */*creds*/,
4315 krb5_ccache /*ccache*/,
4316 krb5_kdc_rep */*ret_as_reply*/)
4317 KRB5_DEPRECATED_FUNCTION("Use X instead");
4318
4319/**
4320 * Deprecated: use krb5_get_init_creds() and friends.
4321 *
4322 * @ingroup krb5_deprecated
4323 */
4324
4325KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4326krb5_get_in_tkt_with_keytab (
4327 krb5_context /*context*/,
4328 krb5_flags /*options*/,
4329 krb5_addresses */*addrs*/,
4330 const krb5_enctype */*etypes*/,
4331 const krb5_preauthtype */*pre_auth_types*/,
4332 krb5_keytab /*keytab*/,
4333 krb5_ccache /*ccache*/,
4334 krb5_creds */*creds*/,
4335 krb5_kdc_rep */*ret_as_reply*/)
4336 KRB5_DEPRECATED_FUNCTION("Use X instead");
4337
4338/**
4339 * Deprecated: use krb5_get_init_creds() and friends.
4340 *
4341 * @ingroup krb5_deprecated
4342 */
4343
4344KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4345krb5_get_in_tkt_with_password (
4346 krb5_context /*context*/,
4347 krb5_flags /*options*/,
4348 krb5_addresses */*addrs*/,
4349 const krb5_enctype */*etypes*/,
4350 const krb5_preauthtype */*pre_auth_types*/,
4351 const char */*password*/,
4352 krb5_ccache /*ccache*/,
4353 krb5_creds */*creds*/,
4354 krb5_kdc_rep */*ret_as_reply*/)
4355 KRB5_DEPRECATED_FUNCTION("Use X instead");
4356
4357/**
4358 * Deprecated: use krb5_get_init_creds() and friends.
4359 *
4360 * @ingroup krb5_deprecated
4361 */
4362
4363KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4364krb5_get_in_tkt_with_skey (
4365 krb5_context /*context*/,
4366 krb5_flags /*options*/,
4367 krb5_addresses */*addrs*/,
4368 const krb5_enctype */*etypes*/,
4369 const krb5_preauthtype */*pre_auth_types*/,
4370 const krb5_keyblock */*key*/,
4371 krb5_ccache /*ccache*/,
4372 krb5_creds */*creds*/,
4373 krb5_kdc_rep */*ret_as_reply*/)
4374 KRB5_DEPRECATED_FUNCTION("Use X instead");
4375
4376/**
4377 * Get new credentials using keyblock.
4378 *
4379 * @ingroup krb5_credential
4380 */
4381
4382KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4383krb5_get_init_creds_keyblock (
4384 krb5_context /*context*/,
4385 krb5_creds */*creds*/,
4386 krb5_principal /*client*/,
4387 krb5_keyblock */*keyblock*/,
4388 krb5_deltat /*start_time*/,
4389 const char */*in_tkt_service*/,
4390 krb5_get_init_creds_opt */*options*/);
4391
4392/**
4393 * Get new credentials using keytab.
4394 *
4395 * @ingroup krb5_credential
4396 */
4397
4398KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4399krb5_get_init_creds_keytab (
4400 krb5_context /*context*/,
4401 krb5_creds */*creds*/,
4402 krb5_principal /*client*/,
4403 krb5_keytab /*keytab*/,
4404 krb5_deltat /*start_time*/,
4405 const char */*in_tkt_service*/,
4406 krb5_get_init_creds_opt */*options*/);
4407
4408/**
4409 * Allocate a new krb5_get_init_creds_opt structure, free with
4410 * krb5_get_init_creds_opt_free().
4411 *
4412 * @ingroup krb5_credential
4413 */
4414
4415KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4416krb5_get_init_creds_opt_alloc (
4417 krb5_context /*context*/,
4418 krb5_get_init_creds_opt **/*opt*/);
4419
4420/**
4421 * Free krb5_get_init_creds_opt structure.
4422 *
4423 * @ingroup krb5_credential
4424 */
4425
4426KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4427krb5_get_init_creds_opt_free (
4428 krb5_context /*context*/,
4429 krb5_get_init_creds_opt */*opt*/);
4430
4431/**
4432 * Deprecated: use the new krb5_init_creds_init() and
4433 * krb5_init_creds_get_error().
4434 *
4435 * @ingroup krb5_deprecated
4436 */
4437
4438KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4439krb5_get_init_creds_opt_get_error (
4440 krb5_context /*context*/,
4441 krb5_get_init_creds_opt */*opt*/,
4442 KRB_ERROR **/*error*/)
4443 KRB5_DEPRECATED_FUNCTION("Use X instead");
4444
4445/**
4446 * Deprecated: use krb5_get_init_creds_opt_alloc().
4447 *
4448 * The reason krb5_get_init_creds_opt_init() is deprecated is that
4449 * krb5_get_init_creds_opt is a static structure and for ABI reason it
4450 * can't grow, ie can't add new functionality.
4451 *
4452 * @ingroup krb5_deprecated
4453 */
4454
4455KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4456krb5_get_init_creds_opt_init (krb5_get_init_creds_opt */*opt*/)
4457 KRB5_DEPRECATED_FUNCTION("Use X instead");
4458
4459KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4460krb5_get_init_creds_opt_set_address_list (
4461 krb5_get_init_creds_opt */*opt*/,
4462 krb5_addresses */*addresses*/);
4463
4464KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4465krb5_get_init_creds_opt_set_addressless (
4466 krb5_context /*context*/,
4467 krb5_get_init_creds_opt */*opt*/,
4468 krb5_boolean /*addressless*/);
4469
4470KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4471krb5_get_init_creds_opt_set_anonymous (
4472 krb5_get_init_creds_opt */*opt*/,
4473 int /*anonymous*/);
4474
4475KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4476krb5_get_init_creds_opt_set_canonicalize (
4477 krb5_context /*context*/,
4478 krb5_get_init_creds_opt */*opt*/,
4479 krb5_boolean /*req*/);
4480
4481KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4482krb5_get_init_creds_opt_set_change_password_prompt (
4483 krb5_get_init_creds_opt */*opt*/,
4484 int /*change_password_prompt*/);
4485
4486KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4487krb5_get_init_creds_opt_set_default_flags (
4488 krb5_context /*context*/,
4489 const char */*appname*/,
4490 krb5_const_realm /*realm*/,
4491 krb5_get_init_creds_opt */*opt*/);
4492
4493KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4494krb5_get_init_creds_opt_set_etype_list (
4495 krb5_get_init_creds_opt */*opt*/,
4496 krb5_enctype */*etype_list*/,
4497 int /*etype_list_length*/);
4498
4499KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4500krb5_get_init_creds_opt_set_forwardable (
4501 krb5_get_init_creds_opt */*opt*/,
4502 int /*forwardable*/);
4503
4504KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4505krb5_get_init_creds_opt_set_pa_password (
4506 krb5_context /*context*/,
4507 krb5_get_init_creds_opt */*opt*/,
4508 const char */*password*/,
4509 krb5_s2k_proc /*key_proc*/);
4510
4511KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4512krb5_get_init_creds_opt_set_pac_request (
4513 krb5_context /*context*/,
4514 krb5_get_init_creds_opt */*opt*/,
4515 krb5_boolean /*req_pac*/);
4516
4517KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4518krb5_get_init_creds_opt_set_pkinit (
4519 krb5_context /*context*/,
4520 krb5_get_init_creds_opt */*opt*/,
4521 krb5_principal /*principal*/,
4522 const char */*user_id*/,
4523 const char */*x509_anchors*/,
4524 char * const * /*pool*/,
4525 char * const * /*pki_revoke*/,
4526 int /*flags*/,
4527 krb5_prompter_fct /*prompter*/,
4528 void */*prompter_data*/,
4529 char */*password*/);
4530
4531krb5_error_code KRB5_LIB_FUNCTION
4532krb5_get_init_creds_opt_set_pkinit_user_certs (
4533 krb5_context /*context*/,
4534 krb5_get_init_creds_opt */*opt*/,
4535 struct hx509_certs_data */*certs*/);
4536
4537KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4538krb5_get_init_creds_opt_set_preauth_list (
4539 krb5_get_init_creds_opt */*opt*/,
4540 krb5_preauthtype */*preauth_list*/,
4541 int /*preauth_list_length*/);
4542
4543KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4544krb5_get_init_creds_opt_set_process_last_req (
4545 krb5_context /*context*/,
4546 krb5_get_init_creds_opt */*opt*/,
4547 krb5_gic_process_last_req /*func*/,
4548 void */*ctx*/);
4549
4550KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4551krb5_get_init_creds_opt_set_proxiable (
4552 krb5_get_init_creds_opt */*opt*/,
4553 int /*proxiable*/);
4554
4555KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4556krb5_get_init_creds_opt_set_renew_life (
4557 krb5_get_init_creds_opt */*opt*/,
4558 krb5_deltat /*renew_life*/);
4559
4560KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4561krb5_get_init_creds_opt_set_salt (
4562 krb5_get_init_creds_opt */*opt*/,
4563 krb5_data */*salt*/);
4564
4565KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4566krb5_get_init_creds_opt_set_tkt_life (
4567 krb5_get_init_creds_opt */*opt*/,
4568 krb5_deltat /*tkt_life*/);
4569
4570KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4571krb5_get_init_creds_opt_set_win2k (
4572 krb5_context /*context*/,
4573 krb5_get_init_creds_opt */*opt*/,
4574 krb5_boolean /*req*/);
4575
4576/**
4577 * Get new credentials using password.
4578 *
4579 * @ingroup krb5_credential
4580 */
4581
4582KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4583krb5_get_init_creds_password (
4584 krb5_context /*context*/,
4585 krb5_creds */*creds*/,
4586 krb5_principal /*client*/,
4587 const char */*password*/,
4588 krb5_prompter_fct /*prompter*/,
4589 void */*data*/,
4590 krb5_deltat /*start_time*/,
4591 const char */*in_tkt_service*/,
4592 krb5_get_init_creds_opt */*options*/);
4593
4594KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4595krb5_get_kdc_cred (
4596 krb5_context /*context*/,
4597 krb5_ccache /*id*/,
4598 krb5_kdc_flags /*flags*/,
4599 krb5_addresses */*addresses*/,
4600 Ticket */*second_ticket*/,
4601 krb5_creds */*in_creds*/,
4602 krb5_creds **out_creds );
4603
4604/**
4605 * Get current offset in time to the KDC.
4606 *
4607 * @param context Kerberos 5 context.
4608 * @param sec seconds part of offset.
4609 * @param usec micro seconds part of offset.
4610 *
4611 * @return returns zero
4612 *
4613 * @ingroup krb5
4614 */
4615
4616KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4617krb5_get_kdc_sec_offset (
4618 krb5_context /*context*/,
4619 int32_t */*sec*/,
4620 int32_t */*usec*/);
4621
4622KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4623krb5_get_krb524hst (
4624 krb5_context /*context*/,
4625 const krb5_realm */*realm*/,
4626 char ***/*hostlist*/);
4627
4628KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4629krb5_get_krb_admin_hst (
4630 krb5_context /*context*/,
4631 const krb5_realm */*realm*/,
4632 char ***/*hostlist*/);
4633
4634KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4635krb5_get_krb_changepw_hst (
4636 krb5_context /*context*/,
4637 const krb5_realm */*realm*/,
4638 char ***/*hostlist*/);
4639
4640KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4641krb5_get_krbhst (
4642 krb5_context /*context*/,
4643 const krb5_realm */*realm*/,
4644 char ***/*hostlist*/);
4645
4646/**
4647 * Get max time skew allowed.
4648 *
4649 * @param context Kerberos 5 context.
4650 *
4651 * @return timeskew in seconds.
4652 *
4653 * @ingroup krb5
4654 */
4655
4656KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL
4657krb5_get_max_time_skew (krb5_context /*context*/);
4658
4659/**
4660 * krb5_init_context() will get one random byte to make sure our
4661 * random is alive. Assumption is that once the non blocking
4662 * source allows us to pull bytes, its all seeded and allows us to
4663 * pull more bytes.
4664 *
4665 * Most Kerberos users calls krb5_init_context(), so this is
4666 * useful point where we can do the checking.
4667 */
4668
4669KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4670krb5_get_permitted_enctypes (
4671 krb5_context /*context*/,
4672 krb5_enctype **/*etypes*/);
4673
4674KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4675krb5_get_pw_salt (
4676 krb5_context /*context*/,
4677 krb5_const_principal /*principal*/,
4678 krb5_salt */*salt*/);
4679
4680KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4681krb5_get_renewed_creds (
4682 krb5_context /*context*/,
4683 krb5_creds */*creds*/,
4684 krb5_const_principal /*client*/,
4685 krb5_ccache /*ccache*/,
4686 const char */*in_tkt_service*/);
4687
4688KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4689krb5_get_server_rcache (
4690 krb5_context /*context*/,
4691 const krb5_data */*piece*/,
4692 krb5_rcache */*id*/);
4693
4694/**
4695 * Make the kerberos library default to the admin KDC.
4696 *
4697 * @param context Kerberos 5 context.
4698 *
4699 * @return boolean flag to telling the context will use admin KDC as the default KDC.
4700 *
4701 * @ingroup krb5
4702 */
4703
4704KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
4705krb5_get_use_admin_kdc (krb5_context /*context*/);
4706
4707/**
4708 * Validate the newly fetch credential, see also krb5_verify_init_creds().
4709 *
4710 * @param context a Kerberos 5 context
4711 * @param creds the credentials to verify
4712 * @param client the client name to match up
4713 * @param ccache the credential cache to use
4714 * @param service a service name to use, used with
4715 * krb5_sname_to_principal() to build a hostname to use to
4716 * verify.
4717 *
4718 * @ingroup krb5_ccache
4719 */
4720
4721KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4722krb5_get_validated_creds (
4723 krb5_context /*context*/,
4724 krb5_creds */*creds*/,
4725 krb5_principal /*client*/,
4726 krb5_ccache /*ccache*/,
4727 char */*service*/);
4728
4729/**
4730 * Get the default logging facility.
4731 *
4732 * @param context A Kerberos 5 context
4733 *
4734 * @ingroup krb5_error
4735 */
4736
4737KRB5_LIB_FUNCTION krb5_log_facility * KRB5_LIB_CALL
4738krb5_get_warn_dest (krb5_context /*context*/);
4739
4740KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL
4741krb5_get_wrapped_length (
4742 krb5_context /*context*/,
4743 krb5_crypto /*crypto*/,
4744 size_t /*data_len*/);
4745
4746KRB5_LIB_FUNCTION int KRB5_LIB_CALL
4747krb5_getportbyname (
4748 krb5_context /*context*/,
4749 const char */*service*/,
4750 const char */*proto*/,
4751 int /*default_port*/);
4752
4753/**
4754 * krb5_h_addr2addr works like krb5_h_addr2sockaddr with the exception
4755 * that it operates on a krb5_address instead of a struct sockaddr.
4756 *
4757 * @param context a Keberos context
4758 * @param af address family
4759 * @param haddr host address from struct hostent.
4760 * @param addr returned krb5_address.
4761 *
4762 * @return Return an error code or 0.
4763 *
4764 * @ingroup krb5_address
4765 */
4766
4767KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4768krb5_h_addr2addr (
4769 krb5_context /*context*/,
4770 int /*af*/,
4771 const char */*haddr*/,
4772 krb5_address */*addr*/);
4773
4774/**
4775 * krb5_h_addr2sockaddr initializes a "struct sockaddr sa" from af and
4776 * the "struct hostent" (see gethostbyname(3) ) h_addr_list
4777 * component. The argument sa_size should initially contain the size
4778 * of the sa, and after the call, it will contain the actual length of
4779 * the address.
4780 *
4781 * @param context a Keberos context
4782 * @param af addresses
4783 * @param addr address
4784 * @param sa returned struct sockaddr
4785 * @param sa_size size of sa
4786 * @param port port to set in sa.
4787 *
4788 * @return Return an error code or 0.
4789 *
4790 * @ingroup krb5_address
4791 */
4792
4793KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4794krb5_h_addr2sockaddr (
4795 krb5_context /*context*/,
4796 int /*af*/,
4797 const char */*addr*/,
4798 struct sockaddr */*sa*/,
4799 krb5_socklen_t */*sa_size*/,
4800 int /*port*/);
4801
4802/**
4803 * Convert the gethostname() error code (h_error) to a Kerberos et
4804 * error code.
4805 *
4806 * @param eai_errno contains the error code from gethostname().
4807 *
4808 * @return Kerberos error code representing the gethostname errors.
4809 *
4810 * @ingroup krb5_error
4811 */
4812
4813KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4814krb5_h_errno_to_heim_errno (int /*eai_errno*/);
4815
4816KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
4817krb5_have_error_string (krb5_context /*context*/)
4818 KRB5_DEPRECATED_FUNCTION("Use krb5_get_error_message instead");
4819
4820KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4821krb5_hmac (
4822 krb5_context /*context*/,
4823 krb5_cksumtype /*cktype*/,
4824 const void */*data*/,
4825 size_t /*len*/,
4826 unsigned /*usage*/,
4827 krb5_keyblock */*key*/,
4828 Checksum */*result*/);
4829
4830/**
4831 * Initializes the context structure and reads the configuration file
4832 * /etc/krb5.conf. The structure should be freed by calling
4833 * krb5_free_context() when it is no longer being used.
4834 *
4835 * @param context pointer to returned context
4836 *
4837 * @return Returns 0 to indicate success. Otherwise an errno code is
4838 * returned. Failure means either that something bad happened during
4839 * initialization (typically ENOMEM) or that Kerberos should not be
4840 * used ENXIO. If the function returns HEIM_ERR_RANDOM_OFFLINE, the
4841 * random source is not available and later Kerberos calls might fail.
4842 *
4843 * @ingroup krb5
4844 */
4845
4846KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4847krb5_init_context (krb5_context */*context*/);
4848
4849/**
4850 * Free the krb5_init_creds_context allocated by krb5_init_creds_init().
4851 *
4852 * @param context A Kerberos 5 context.
4853 * @param ctx The krb5_init_creds_context to free.
4854 *
4855 * @ingroup krb5_credential
4856 */
4857
4858KRB5_LIB_FUNCTION void KRB5_LIB_CALL
4859krb5_init_creds_free (
4860 krb5_context /*context*/,
4861 krb5_init_creds_context /*ctx*/);
4862
4863/**
4864 * Get new credentials as setup by the krb5_init_creds_context.
4865 *
4866 * @param context A Kerberos 5 context.
4867 * @param ctx The krb5_init_creds_context to process.
4868 *
4869 * @ingroup krb5_credential
4870 */
4871
4872KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4873krb5_init_creds_get (
4874 krb5_context /*context*/,
4875 krb5_init_creds_context /*ctx*/);
4876
4877/**
4878 * Extract the newly acquired credentials from krb5_init_creds_context
4879 * context.
4880 *
4881 * @param context A Kerberos 5 context.
4882 * @param ctx
4883 * @param cred credentials, free with krb5_free_cred_contents().
4884 *
4885 * @return 0 for sucess or An Kerberos error code, see krb5_get_error_message().
4886 */
4887
4888KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4889krb5_init_creds_get_creds (
4890 krb5_context /*context*/,
4891 krb5_init_creds_context /*ctx*/,
4892 krb5_creds */*cred*/);
4893
4894/**
4895 * Get the last error from the transaction.
4896 *
4897 * @return Returns 0 or an error code
4898 *
4899 * @ingroup krb5_credential
4900 */
4901
4902KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4903krb5_init_creds_get_error (
4904 krb5_context /*context*/,
4905 krb5_init_creds_context /*ctx*/,
4906 KRB_ERROR */*error*/);
4907
4908/**
4909 * Start a new context to get a new initial credential.
4910 *
4911 * @param context A Kerberos 5 context.
4912 * @param client The Kerberos principal to get the credential for, if
4913 * NULL is given, the default principal is used as determined by
4914 * krb5_get_default_principal().
4915 * @param prompter
4916 * @param prompter_data
4917 * @param start_time the time the ticket should start to be valid or 0 for now.
4918 * @param options a options structure, can be NULL for default options.
4919 * @param rctx A new allocated free with krb5_init_creds_free().
4920 *
4921 * @return 0 for success or an Kerberos 5 error code, see krb5_get_error_message().
4922 *
4923 * @ingroup krb5_credential
4924 */
4925
4926KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4927krb5_init_creds_init (
4928 krb5_context /*context*/,
4929 krb5_principal /*client*/,
4930 krb5_prompter_fct /*prompter*/,
4931 void */*prompter_data*/,
4932 krb5_deltat /*start_time*/,
4933 krb5_get_init_creds_opt */*options*/,
4934 krb5_init_creds_context */*rctx*/);
4935
4936KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4937krb5_init_creds_set_fast_ap_armor_service (
4938 krb5_context /*context*/,
4939 krb5_init_creds_context /*ctx*/,
4940 krb5_const_principal /*armor_service*/);
4941
4942KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4943krb5_init_creds_set_fast_ccache (
4944 krb5_context /*context*/,
4945 krb5_init_creds_context /*ctx*/,
4946 krb5_ccache /*fast_ccache*/);
4947
4948KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4949krb5_init_creds_set_keyblock (
4950 krb5_context /*context*/,
4951 krb5_init_creds_context /*ctx*/,
4952 krb5_keyblock */*keyblock*/);
4953
4954/**
4955 * Set the keytab to use for authentication.
4956 *
4957 * @param context a Kerberos 5 context.
4958 * @param ctx ctx krb5_init_creds_context context.
4959 * @param keytab the keytab to read the key from.
4960 *
4961 * @return 0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
4962 * @ingroup krb5_credential
4963 */
4964
4965KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4966krb5_init_creds_set_keytab (
4967 krb5_context /*context*/,
4968 krb5_init_creds_context /*ctx*/,
4969 krb5_keytab /*keytab*/);
4970
4971/**
4972 * Sets the password that will use for the request.
4973 *
4974 * @param context a Kerberos 5 context.
4975 * @param ctx ctx krb5_init_creds_context context.
4976 * @param password the password to use.
4977 *
4978 * @return 0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
4979 * @ingroup krb5_credential
4980 */
4981
4982KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
4983krb5_init_creds_set_password (
4984 krb5_context /*context*/,
4985 krb5_init_creds_context /*ctx*/,
4986 const char */*password*/);
4987
4988/**
4989 * Sets the service that the is requested. This call is only neede for
4990 * special initial tickets, by default the a krbtgt is fetched in the default realm.
4991 *
4992 * @param context a Kerberos 5 context.
4993 * @param ctx a krb5_init_creds_context context.
4994 * @param service the service given as a string, for example
4995 * "kadmind/admin". If NULL, the default krbtgt in the clients
4996 * realm is set.
4997 *
4998 * @return 0 for success, or an Kerberos 5 error code, see krb5_get_error_message().
4999 * @ingroup krb5_credential
5000 */
5001
5002KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5003krb5_init_creds_set_service (
5004 krb5_context /*context*/,
5005 krb5_init_creds_context /*ctx*/,
5006 const char */*service*/);
5007
5008/**
5009 * The core loop if krb5_get_init_creds() function family. Create the
5010 * packets and have the caller send them off to the KDC.
5011 *
5012 * If the caller want all work been done for them, use
5013 * krb5_init_creds_get() instead.
5014 *
5015 * @param context a Kerberos 5 context.
5016 * @param ctx ctx krb5_init_creds_context context.
5017 * @param in input data from KDC, first round it should be reset by krb5_data_zer().
5018 * @param out reply to KDC.
5019 * @param hostinfo KDC address info, first round it can be NULL.
5020 * @param flags status of the round, if
5021 * KRB5_INIT_CREDS_STEP_FLAG_CONTINUE is set, continue one more round.
5022 *
5023 * @return 0 for success, or an Kerberos 5 error code, see
5024 * krb5_get_error_message().
5025 *
5026 * @ingroup krb5_credential
5027 */
5028
5029KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5030krb5_init_creds_step (
5031 krb5_context /*context*/,
5032 krb5_init_creds_context /*ctx*/,
5033 krb5_data */*in*/,
5034 krb5_data */*out*/,
5035 krb5_krbhst_info */*hostinfo*/,
5036 unsigned int */*flags*/);
5037
5038/**
5039 *
5040 * @ingroup krb5_credential
5041 */
5042
5043krb5_error_code
5044krb5_init_creds_store (
5045 krb5_context /*context*/,
5046 krb5_init_creds_context /*ctx*/,
5047 krb5_ccache /*id*/);
5048
5049/**
5050 * Init the built-in ets in the Kerberos library.
5051 *
5052 * @param context kerberos context to add the ets too
5053 *
5054 * @ingroup krb5
5055 */
5056
5057KRB5_LIB_FUNCTION void KRB5_LIB_CALL
5058krb5_init_ets (krb5_context /*context*/);
5059
5060/**
5061 @struct krb5plugin_kuserok_ftable_desc *
5062 * @brief Description of the krb5_kuserok(3) plugin facility.
5063 *
5064 * The krb5_kuserok(3) function is pluggable. The plugin is named
5065 * KRB5_PLUGIN_KUSEROK ("krb5_plugin_kuserok"), with a single minor
5066 * version, KRB5_PLUGIN_KUSEROK_VERSION_0 (0).
5067 *
5068 * The plugin for krb5_kuserok(3) consists of a data symbol referencing
5069 * a structure of type krb5plugin_kuserok_ftable, with four fields:
5070 *
5071 * @param init Plugin initialization function (see krb5-plugin(7))
5072 *
5073 * @param minor_version The plugin minor version number (0)
5074 *
5075 * @param fini Plugin finalization function
5076 *
5077 * @param kuserok Plugin kuserok function
5078 *
5079 * The kuserok field is the plugin entry point that performs the
5080 * traditional kuserok operation however the plugin desires. It is
5081 * invoked in no particular order relative to other kuserok plugins, but
5082 * it has a 'rule' argument that indicates which plugin is intended to
5083 * act on the rule. The plugin kuserok function must return
5084 * KRB5_PLUGIN_NO_HANDLE if the rule is not applicable to it.
5085 *
5086 * The plugin kuserok function has the following arguments, in this
5087 * order:
5088 *
5089 * -# plug_ctx, the context value output by the plugin's init function
5090 * -# context, a krb5_context
5091 * -# rule, the kuserok rule being evaluated (from krb5.conf(5))
5092 * -# flags
5093 * -# k5login_dir, configured location of k5login per-user files if any
5094 * -# luser, name of the local user account to which principal is attempting to access.
5095 * -# principal, the krb5_principal trying to access the luser account
5096 * -# result, a krb5_boolean pointer where the plugin will output its result
5097 *
5098 * @ingroup krb5_support
5099 */
5100
5101KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5102krb5_initlog (
5103 krb5_context /*context*/,
5104 const char */*program*/,
5105 krb5_log_facility **/*fac*/);
5106
5107/**
5108 * Return TRUE (non zero) if the principal is a configuration
5109 * principal (generated part of krb5_cc_set_config()). Returns FALSE
5110 * (zero) if not a configuration principal.
5111 *
5112 * @param context a Keberos context
5113 * @param principal principal to check if it a configuration principal
5114 *
5115 * @ingroup krb5_ccache
5116 */
5117
5118KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
5119krb5_is_config_principal (
5120 krb5_context /*context*/,
5121 krb5_const_principal /*principal*/);
5122
5123/**
5124 * Returns is the encryption is strong or weak
5125 *
5126 * @param context Kerberos 5 context
5127 * @param enctype encryption type to probe
5128 *
5129 * @return Returns true if encryption type is weak or is not supported.
5130 *
5131 * @ingroup krb5_crypto
5132 */
5133
5134KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
5135krb5_is_enctype_weak (
5136 krb5_context /*context*/,
5137 krb5_enctype /*enctype*/);
5138
5139/**
5140 * Runtime check if the Kerberos library was complied with thread support.
5141 *
5142 * @return TRUE if the library was compiled with thread support, FALSE if not.
5143 *
5144 * @ingroup krb5
5145 */
5146
5147KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
5148krb5_is_thread_safe (void);
5149
5150KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5151krb5_kcm_call (
5152 krb5_context /*context*/,
5153 krb5_storage */*request*/,
5154 krb5_storage **/*response_p*/,
5155 krb5_data */*response_data_p*/);
5156
5157KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5158krb5_kcm_storage_request (
5159 krb5_context /*context*/,
5160 uint16_t /*opcode*/,
5161 krb5_storage **/*storage_p*/);
5162
5163/**
5164 * Returns the list of Kerberos encryption types sorted in order of
5165 * most preferred to least preferred encryption type. Note that some
5166 * encryption types might be disabled, so you need to check with
5167 * krb5_enctype_valid() before using the encryption type.
5168 *
5169 * @return list of enctypes, terminated with ETYPE_NULL. Its a static
5170 * array completed into the Kerberos library so the content doesn't
5171 * need to be freed.
5172 *
5173 * @ingroup krb5
5174 */
5175
5176KRB5_LIB_FUNCTION const krb5_enctype * KRB5_LIB_CALL
5177krb5_kerberos_enctypes (krb5_context /*context*/);
5178
5179/**
5180 * Get encryption type of a keyblock.
5181 *
5182 * @ingroup krb5_crypto
5183 */
5184
5185KRB5_LIB_FUNCTION krb5_enctype KRB5_LIB_CALL
5186krb5_keyblock_get_enctype (const krb5_keyblock */*block*/);
5187
5188/**
5189 * Fill in `key' with key data of type `enctype' from `data' of length
5190 * `size'. Key should be freed using krb5_free_keyblock_contents().
5191 *
5192 * @return 0 on success or a Kerberos 5 error code
5193 *
5194 * @ingroup krb5_crypto
5195 */
5196
5197KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5198krb5_keyblock_init (
5199 krb5_context /*context*/,
5200 krb5_enctype /*type*/,
5201 const void */*data*/,
5202 size_t /*size*/,
5203 krb5_keyblock */*key*/);
5204
5205KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5206krb5_keyblock_key_proc (
5207 krb5_context /*context*/,
5208 krb5_keytype /*type*/,
5209 krb5_data */*salt*/,
5210 krb5_const_pointer /*keyseed*/,
5211 krb5_keyblock **/*key*/);
5212
5213/**
5214 * Zero out a keyblock
5215 *
5216 * @param keyblock keyblock to zero out
5217 *
5218 * @ingroup krb5_crypto
5219 */
5220
5221KRB5_LIB_FUNCTION void KRB5_LIB_CALL
5222krb5_keyblock_zero (krb5_keyblock */*keyblock*/);
5223
5224/**
5225 * Deprecated: use krb5_get_init_creds() and friends.
5226 *
5227 * @ingroup krb5_deprecated
5228 */
5229
5230KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV
5231krb5_keytab_key_proc (
5232 krb5_context /*context*/,
5233 krb5_enctype /*enctype*/,
5234 krb5_salt /*salt*/,
5235 krb5_const_pointer /*keyseed*/,
5236 krb5_keyblock **/*key*/)
5237 KRB5_DEPRECATED_FUNCTION("Use X instead");
5238
5239/**
5240 * Deprecated: keytypes doesn't exists, they are really enctypes.
5241 *
5242 * @ingroup krb5_deprecated
5243 */
5244
5245KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5246krb5_keytype_to_enctypes (
5247 krb5_context /*context*/,
5248 krb5_keytype /*keytype*/,
5249 unsigned */*len*/,
5250 krb5_enctype **/*val*/)
5251 KRB5_DEPRECATED_FUNCTION("Use X instead");
5252
5253/**
5254 * Deprecated: keytypes doesn't exists, they are really enctypes.
5255 *
5256 * @ingroup krb5_deprecated
5257 */
5258
5259KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5260krb5_keytype_to_enctypes_default (
5261 krb5_context /*context*/,
5262 krb5_keytype /*keytype*/,
5263 unsigned */*len*/,
5264 krb5_enctype **/*val*/)
5265 KRB5_DEPRECATED_FUNCTION("Use X instead");
5266
5267/**
5268 * Deprecated: keytypes doesn't exists, they are really enctypes in
5269 * most cases, use krb5_enctype_to_string().
5270 *
5271 * @ingroup krb5_deprecated
5272 */
5273
5274KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5275krb5_keytype_to_string (
5276 krb5_context /*context*/,
5277 krb5_keytype /*keytype*/,
5278 char **/*string*/)
5279 KRB5_DEPRECATED_FUNCTION("Use X instead");
5280
5281KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5282krb5_krbhst_format_string (
5283 krb5_context /*context*/,
5284 const krb5_krbhst_info */*host*/,
5285 char */*hostname*/,
5286 size_t /*hostlen*/);
5287
5288KRB5_LIB_FUNCTION void KRB5_LIB_CALL
5289krb5_krbhst_free (
5290 krb5_context /*context*/,
5291 krb5_krbhst_handle /*handle*/);
5292
5293/**
5294 * Return an `struct addrinfo *' for a KDC host.
5295 *
5296 * Returns an the struct addrinfo in in that corresponds to the
5297 * information in `host'. free:ing is handled by krb5_krbhst_free, so
5298 * the returned ai must not be released.
5299 *
5300 * @ingroup krb5
5301 */
5302
5303KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5304krb5_krbhst_get_addrinfo (
5305 krb5_context /*context*/,
5306 krb5_krbhst_info */*host*/,
5307 struct addrinfo **/*ai*/);
5308
5309KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5310krb5_krbhst_init (
5311 krb5_context /*context*/,
5312 const char */*realm*/,
5313 unsigned int /*type*/,
5314 krb5_krbhst_handle */*handle*/);
5315
5316KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5317krb5_krbhst_init_flags (
5318 krb5_context /*context*/,
5319 const char */*realm*/,
5320 unsigned int /*type*/,
5321 int /*flags*/,
5322 krb5_krbhst_handle */*handle*/);
5323
5324KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5325krb5_krbhst_next (
5326 krb5_context /*context*/,
5327 krb5_krbhst_handle /*handle*/,
5328 krb5_krbhst_info **/*host*/);
5329
5330KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5331krb5_krbhst_next_as_string (
5332 krb5_context /*context*/,
5333 krb5_krbhst_handle /*handle*/,
5334 char */*hostname*/,
5335 size_t /*hostlen*/);
5336
5337KRB5_LIB_FUNCTION void KRB5_LIB_CALL
5338krb5_krbhst_reset (
5339 krb5_context /*context*/,
5340 krb5_krbhst_handle /*handle*/);
5341
5342KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5343krb5_krbhst_set_hostname (
5344 krb5_context /*context*/,
5345 krb5_krbhst_handle /*handle*/,
5346 const char */*hostname*/);
5347
5348/**
5349 * Add the entry in `entry' to the keytab `id'.
5350 *
5351 * @param context a Keberos context.
5352 * @param id a keytab.
5353 * @param entry the entry to add
5354 *
5355 * @return Return an error code or 0, see krb5_get_error_message().
5356 *
5357 * @ingroup krb5_keytab
5358 */
5359
5360KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5361krb5_kt_add_entry (
5362 krb5_context /*context*/,
5363 krb5_keytab /*id*/,
5364 krb5_keytab_entry */*entry*/);
5365
5366/**
5367 * Finish using the keytab in `id'. All resources will be released,
5368 * even on errors.
5369 *
5370 * @param context a Keberos context.
5371 * @param id keytab to close.
5372 *
5373 * @return Return an error code or 0, see krb5_get_error_message().
5374 *
5375 * @ingroup krb5_keytab
5376 */
5377
5378KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5379krb5_kt_close (
5380 krb5_context /*context*/,
5381 krb5_keytab /*id*/);
5382
5383/**
5384 * Compare `entry' against `principal, vno, enctype'.
5385 * Any of `principal, vno, enctype' might be 0 which acts as a wildcard.
5386 * Return TRUE if they compare the same, FALSE otherwise.
5387 *
5388 * @param context a Keberos context.
5389 * @param entry an entry to match with.
5390 * @param principal principal to match, NULL matches all principals.
5391 * @param vno key version to match, 0 matches all key version numbers.
5392 * @param enctype encryption type to match, 0 matches all encryption types.
5393 *
5394 * @return Return TRUE or match, FALSE if not matched.
5395 *
5396 * @ingroup krb5_keytab
5397 */
5398
5399KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
5400krb5_kt_compare (
5401 krb5_context /*context*/,
5402 krb5_keytab_entry */*entry*/,
5403 krb5_const_principal /*principal*/,
5404 krb5_kvno /*vno*/,
5405 krb5_enctype /*enctype*/);
5406
5407/**
5408 * Copy the contents of `in' into `out'.
5409 *
5410 * @param context a Keberos context.
5411 * @param in the keytab entry to copy.
5412 * @param out the copy of the keytab entry, free with krb5_kt_free_entry().
5413 *
5414 * @return Return an error code or 0, see krb5_get_error_message().
5415 *
5416 * @ingroup krb5_keytab
5417 */
5418
5419KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5420krb5_kt_copy_entry_contents (
5421 krb5_context /*context*/,
5422 const krb5_keytab_entry */*in*/,
5423 krb5_keytab_entry */*out*/);
5424
5425/**
5426 * Set `id' to the default keytab.
5427 *
5428 * @param context a Keberos context.
5429 * @param id the new default keytab.
5430 *
5431 * @return Return an error code or 0, see krb5_get_error_message().
5432 *
5433 * @ingroup krb5_keytab
5434 */
5435
5436KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5437krb5_kt_default (
5438 krb5_context /*context*/,
5439 krb5_keytab */*id*/);
5440
5441/**
5442 * Copy the name of the default modify keytab into `name'.
5443 *
5444 * @param context a Keberos context.
5445 * @param name buffer where the name will be written
5446 * @param namesize length of name
5447 *
5448 * @return Return an error code or 0, see krb5_get_error_message().
5449 *
5450 * @ingroup krb5_keytab
5451 */
5452
5453KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5454krb5_kt_default_modify_name (
5455 krb5_context /*context*/,
5456 char */*name*/,
5457 size_t /*namesize*/);
5458
5459/**
5460 * copy the name of the default keytab into `name'.
5461 *
5462 * @param context a Keberos context.
5463 * @param name buffer where the name will be written
5464 * @param namesize length of name
5465 *
5466 * @return Return an error code or 0, see krb5_get_error_message().
5467 *
5468 * @ingroup krb5_keytab
5469 */
5470
5471KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5472krb5_kt_default_name (
5473 krb5_context /*context*/,
5474 char */*name*/,
5475 size_t /*namesize*/);
5476
5477/**
5478 * Destroy (remove) the keytab in `id'. All resources will be released,
5479 * even on errors, does the equvalment of krb5_kt_close() on the resources.
5480 *
5481 * @param context a Keberos context.
5482 * @param id keytab to destroy.
5483 *
5484 * @return Return an error code or 0, see krb5_get_error_message().
5485 *
5486 * @ingroup krb5_keytab
5487 */
5488
5489KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5490krb5_kt_destroy (
5491 krb5_context /*context*/,
5492 krb5_keytab /*id*/);
5493
5494/**
5495 * Release all resources associated with `cursor'.
5496 *
5497 * @param context a Keberos context.
5498 * @param id a keytab.
5499 * @param cursor the cursor to free.
5500 *
5501 * @return Return an error code or 0, see krb5_get_error_message().
5502 *
5503 * @ingroup krb5_keytab
5504 */
5505
5506KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5507krb5_kt_end_seq_get (
5508 krb5_context /*context*/,
5509 krb5_keytab /*id*/,
5510 krb5_kt_cursor */*cursor*/);
5511
5512/**
5513 * Free the contents of `entry'.
5514 *
5515 * @param context a Keberos context.
5516 * @param entry the entry to free
5517 *
5518 * @return Return an error code or 0, see krb5_get_error_message().
5519 *
5520 * @ingroup krb5_keytab
5521 */
5522
5523KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5524krb5_kt_free_entry (
5525 krb5_context /*context*/,
5526 krb5_keytab_entry */*entry*/);
5527
5528/**
5529 * Retrieve the keytab entry for `principal, kvno, enctype' into `entry'
5530 * from the keytab `id'. Matching is done like krb5_kt_compare().
5531 *
5532 * @param context a Keberos context.
5533 * @param id a keytab.
5534 * @param principal principal to match, NULL matches all principals.
5535 * @param kvno key version to match, 0 matches all key version numbers.
5536 * @param enctype encryption type to match, 0 matches all encryption types.
5537 * @param entry the returned entry, free with krb5_kt_free_entry().
5538 *
5539 * @return Return an error code or 0, see krb5_get_error_message().
5540 *
5541 * @ingroup krb5_keytab
5542 */
5543
5544KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5545krb5_kt_get_entry (
5546 krb5_context /*context*/,
5547 krb5_keytab /*id*/,
5548 krb5_const_principal /*principal*/,
5549 krb5_kvno /*kvno*/,
5550 krb5_enctype /*enctype*/,
5551 krb5_keytab_entry */*entry*/);
5552
5553/**
5554 * Retrieve the full name of the keytab `keytab' and store the name in
5555 * `str'.
5556 *
5557 * @param context a Keberos context.
5558 * @param keytab keytab to get name for.
5559 * @param str the name of the keytab name, usee krb5_xfree() to free
5560 * the string. On error, *str is set to NULL.
5561 *
5562 * @return Return an error code or 0, see krb5_get_error_message().
5563 *
5564 * @ingroup krb5_keytab
5565 */
5566
5567KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5568krb5_kt_get_full_name (
5569 krb5_context /*context*/,
5570 krb5_keytab /*keytab*/,
5571 char **/*str*/);
5572
5573/**
5574 * Retrieve the name of the keytab `keytab' into `name', `namesize'
5575 *
5576 * @param context a Keberos context.
5577 * @param keytab the keytab to get the name for.
5578 * @param name name buffer.
5579 * @param namesize size of name buffer.
5580 *
5581 * @return Return an error code or 0, see krb5_get_error_message().
5582 *
5583 * @ingroup krb5_keytab
5584 */
5585
5586KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5587krb5_kt_get_name (
5588 krb5_context /*context*/,
5589 krb5_keytab /*keytab*/,
5590 char */*name*/,
5591 size_t /*namesize*/);
5592
5593/**
5594 * Return the type of the `keytab' in the string `prefix of length
5595 * `prefixsize'.
5596 *
5597 * @param context a Keberos context.
5598 * @param keytab the keytab to get the prefix for
5599 * @param prefix prefix buffer
5600 * @param prefixsize length of prefix buffer
5601 *
5602 * @return Return an error code or 0, see krb5_get_error_message().
5603 *
5604 * @ingroup krb5_keytab
5605 */
5606
5607KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5608krb5_kt_get_type (
5609 krb5_context /*context*/,
5610 krb5_keytab /*keytab*/,
5611 char */*prefix*/,
5612 size_t /*prefixsize*/);
5613
5614/**
5615 * Return true if the keytab exists and have entries
5616 *
5617 * @param context a Keberos context.
5618 * @param id a keytab.
5619 *
5620 * @return Return an error code or 0, see krb5_get_error_message().
5621 *
5622 * @ingroup krb5_keytab
5623 */
5624
5625KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5626krb5_kt_have_content (
5627 krb5_context /*context*/,
5628 krb5_keytab /*id*/);
5629
5630/**
5631 * Get the next entry from keytab, advance the cursor. On last entry
5632 * the function will return KRB5_KT_END.
5633 *
5634 * @param context a Keberos context.
5635 * @param id a keytab.
5636 * @param entry the returned entry, free with krb5_kt_free_entry().
5637 * @param cursor the cursor of the iteration.
5638 *
5639 * @return Return an error code or 0, see krb5_get_error_message().
5640 *
5641 * @ingroup krb5_keytab
5642 */
5643
5644KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5645krb5_kt_next_entry (
5646 krb5_context /*context*/,
5647 krb5_keytab /*id*/,
5648 krb5_keytab_entry */*entry*/,
5649 krb5_kt_cursor */*cursor*/);
5650
5651/**
5652 * Read the key identified by `(principal, vno, enctype)' from the
5653 * keytab in `keyprocarg' (the default if == NULL) into `*key'.
5654 *
5655 * @param context a Keberos context.
5656 * @param keyprocarg
5657 * @param principal
5658 * @param vno
5659 * @param enctype
5660 * @param key
5661 *
5662 * @return Return an error code or 0, see krb5_get_error_message().
5663 *
5664 * @ingroup krb5_keytab
5665 */
5666
5667KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5668krb5_kt_read_service_key (
5669 krb5_context /*context*/,
5670 krb5_pointer /*keyprocarg*/,
5671 krb5_principal /*principal*/,
5672 krb5_kvno /*vno*/,
5673 krb5_enctype /*enctype*/,
5674 krb5_keyblock **/*key*/);
5675
5676/**
5677 * Register a new keytab backend.
5678 *
5679 * @param context a Keberos context.
5680 * @param ops a backend to register.
5681 *
5682 * @return Return an error code or 0, see krb5_get_error_message().
5683 *
5684 * @ingroup krb5_keytab
5685 */
5686
5687KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5688krb5_kt_register (
5689 krb5_context /*context*/,
5690 const krb5_kt_ops */*ops*/);
5691
5692/**
5693 * Remove an entry from the keytab, matching is done using
5694 * krb5_kt_compare().
5695
5696 * @param context a Keberos context.
5697 * @param id a keytab.
5698 * @param entry the entry to remove
5699 *
5700 * @return Return an error code or 0, see krb5_get_error_message().
5701 *
5702 * @ingroup krb5_keytab
5703 */
5704
5705KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5706krb5_kt_remove_entry (
5707 krb5_context /*context*/,
5708 krb5_keytab /*id*/,
5709 krb5_keytab_entry */*entry*/);
5710
5711/**
5712 * Resolve the keytab name (of the form `type:residual') in `name'
5713 * into a keytab in `id'.
5714 *
5715 * @param context a Keberos context.
5716 * @param name name to resolve
5717 * @param id resulting keytab, free with krb5_kt_close().
5718 *
5719 * @return Return an error code or 0, see krb5_get_error_message().
5720 *
5721 * @ingroup krb5_keytab
5722 */
5723
5724KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5725krb5_kt_resolve (
5726 krb5_context /*context*/,
5727 const char */*name*/,
5728 krb5_keytab */*id*/);
5729
5730/**
5731 * Set `cursor' to point at the beginning of `id'.
5732 *
5733 * @param context a Keberos context.
5734 * @param id a keytab.
5735 * @param cursor a newly allocated cursor, free with krb5_kt_end_seq_get().
5736 *
5737 * @return Return an error code or 0, see krb5_get_error_message().
5738 *
5739 * @ingroup krb5_keytab
5740 */
5741
5742KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5743krb5_kt_start_seq_get (
5744 krb5_context /*context*/,
5745 krb5_keytab /*id*/,
5746 krb5_kt_cursor */*cursor*/);
5747
5748/**
5749 * This function takes the name of a local user and checks if
5750 * principal is allowed to log in as that user.
5751 *
5752 * The user may have a ~/.k5login file listing principals that are
5753 * allowed to login as that user. If that file does not exist, all
5754 * principals with a only one component that is identical to the
5755 * username, and a realm considered local, are allowed access.
5756 *
5757 * The .k5login file must contain one principal per line, be owned by
5758 * user and not be writable by group or other (but must be readable by
5759 * anyone).
5760 *
5761 * Note that if the file exists, no implicit access rights are given
5762 * to user@@LOCALREALM.
5763 *
5764 * Optionally, a set of files may be put in ~/.k5login.d (a
5765 * directory), in which case they will all be checked in the same
5766 * manner as .k5login. The files may be called anything, but files
5767 * starting with a hash (#) , or ending with a tilde (~) are
5768 * ignored. Subdirectories are not traversed. Note that this directory
5769 * may not be checked by other Kerberos implementations.
5770 *
5771 * If no configuration file exists, match user against local domains,
5772 * ie luser@@LOCAL-REALMS-IN-CONFIGURATION-FILES.
5773 *
5774 * @param context Kerberos 5 context.
5775 * @param principal principal to check if allowed to login
5776 * @param luser local user id
5777 *
5778 * @return returns TRUE if access should be granted, FALSE otherwise.
5779 *
5780 * @ingroup krb5_support
5781 */
5782
5783KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
5784krb5_kuserok (
5785 krb5_context /*context*/,
5786 krb5_principal /*principal*/,
5787 const char */*luser*/);
5788
5789KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5790krb5_log (
5791 krb5_context /*context*/,
5792 krb5_log_facility */*fac*/,
5793 int /*level*/,
5794 const char */*fmt*/,
5795 ...)
5796 __attribute__ ((__format__ (__printf__, 4, 5)));
5797
5798KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5799krb5_log_msg (
5800 krb5_context /*context*/,
5801 krb5_log_facility */*fac*/,
5802 int /*level*/,
5803 char **/*reply*/,
5804 const char */*fmt*/,
5805 ...)
5806 __attribute__ ((__format__ (__printf__, 5, 6)));
5807
5808/**
5809 * Create an address of type KRB5_ADDRESS_ADDRPORT from (addr, port)
5810 *
5811 * @param context a Keberos context
5812 * @param res built address from addr/port
5813 * @param addr address to use
5814 * @param port port to use
5815 *
5816 * @return Return an error code or 0.
5817 *
5818 * @ingroup krb5_address
5819 */
5820
5821KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5822krb5_make_addrport (
5823 krb5_context /*context*/,
5824 krb5_address **/*res*/,
5825 const krb5_address */*addr*/,
5826 int16_t /*port*/);
5827
5828/**
5829 * Build a principal using vararg style building
5830 *
5831 * @param context A Kerberos context.
5832 * @param principal returned principal
5833 * @param realm realm name
5834 * @param ... a list of components ended with NULL.
5835 *
5836 * @return An krb5 error code, see krb5_get_error_message().
5837 *
5838 * @ingroup krb5_principal
5839 */
5840
5841KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5842krb5_make_principal (
5843 krb5_context /*context*/,
5844 krb5_principal */*principal*/,
5845 krb5_const_realm /*realm*/,
5846 ...);
5847
5848/**
5849 * krb5_max_sockaddr_size returns the max size of the .Li struct
5850 * sockaddr that the Kerberos library will return.
5851 *
5852 * @return Return an size_t of the maximum struct sockaddr.
5853 *
5854 * @ingroup krb5_address
5855 */
5856
5857KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL
5858krb5_max_sockaddr_size (void);
5859
5860KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5861krb5_mk_error (
5862 krb5_context /*context*/,
5863 krb5_error_code /*error_code*/,
5864 const char */*e_text*/,
5865 const krb5_data */*e_data*/,
5866 const krb5_principal /*client*/,
5867 const krb5_principal /*server*/,
5868 time_t */*client_time*/,
5869 int */*client_usec*/,
5870 krb5_data */*reply*/);
5871
5872KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5873krb5_mk_error_ext (
5874 krb5_context /*context*/,
5875 krb5_error_code /*error_code*/,
5876 const char */*e_text*/,
5877 const krb5_data */*e_data*/,
5878 const krb5_principal /*server*/,
5879 const PrincipalName */*client_name*/,
5880 const Realm */*client_realm*/,
5881 time_t */*client_time*/,
5882 int */*client_usec*/,
5883 krb5_data */*reply*/);
5884
5885KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5886krb5_mk_priv (
5887 krb5_context /*context*/,
5888 krb5_auth_context /*auth_context*/,
5889 const krb5_data */*userdata*/,
5890 krb5_data */*outbuf*/,
5891 krb5_replay_data */*outdata*/);
5892
5893KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5894krb5_mk_rep (
5895 krb5_context /*context*/,
5896 krb5_auth_context /*auth_context*/,
5897 krb5_data */*outbuf*/);
5898
5899KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5900krb5_mk_req (
5901 krb5_context /*context*/,
5902 krb5_auth_context */*auth_context*/,
5903 const krb5_flags /*ap_req_options*/,
5904 const char */*service*/,
5905 const char */*hostname*/,
5906 krb5_data */*in_data*/,
5907 krb5_ccache /*ccache*/,
5908 krb5_data */*outbuf*/);
5909
5910KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5911krb5_mk_req_exact (
5912 krb5_context /*context*/,
5913 krb5_auth_context */*auth_context*/,
5914 const krb5_flags /*ap_req_options*/,
5915 const krb5_principal /*server*/,
5916 krb5_data */*in_data*/,
5917 krb5_ccache /*ccache*/,
5918 krb5_data */*outbuf*/);
5919
5920KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5921krb5_mk_req_extended (
5922 krb5_context /*context*/,
5923 krb5_auth_context */*auth_context*/,
5924 const krb5_flags /*ap_req_options*/,
5925 krb5_data */*in_data*/,
5926 krb5_creds */*in_creds*/,
5927 krb5_data */*outbuf*/);
5928
5929KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5930krb5_mk_safe (
5931 krb5_context /*context*/,
5932 krb5_auth_context /*auth_context*/,
5933 const krb5_data */*userdata*/,
5934 krb5_data */*outbuf*/,
5935 krb5_replay_data */*outdata*/);
5936
5937/**
5938 * Iteratively apply name canon rules, outputing a principal and rule
5939 * options each time. Iteration completes when the @iter is NULL on
5940 * return or when an error is returned. Callers must free the iterator
5941 * if they abandon it mid-way.
5942 *
5943 * @param context Kerberos context
5944 * @param iter name canon rule iterator (input/output)
5945 * @param try_princ output principal name
5946 * @param rule_opts output rule options
5947 */
5948
5949KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5950krb5_name_canon_iterate (
5951 krb5_context /*context*/,
5952 krb5_name_canon_iterator */*iter*/,
5953 krb5_const_principal */*try_princ*/,
5954 krb5_name_canon_rule_options */*rule_opts*/);
5955
5956/**
5957 * Initialize name canonicalization iterator.
5958 *
5959 * @param context Kerberos context
5960 * @param in_princ principal name to be canonicalized OR
5961 * @param iter output iterator object
5962 */
5963
5964KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
5965krb5_name_canon_iterator_start (
5966 krb5_context /*context*/,
5967 krb5_const_principal /*in_princ*/,
5968 krb5_name_canon_iterator */*iter*/);
5969
5970/**
5971 * Read \a len bytes from socket \a p_fd into buffer \a buf.
5972 * Block until \a len bytes are read or until an error.
5973 *
5974 * @return If successful, the number of bytes read: \a len.
5975 * On end-of-file, 0.
5976 * On error, less than 0 (if single-threaded, the error can be found
5977 * in the errno global variable).
5978 */
5979
5980KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL
5981krb5_net_read (
5982 krb5_context /*context*/,
5983 void */*p_fd*/,
5984 void */*buf*/,
5985 size_t /*len*/);
5986
5987KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL
5988krb5_net_write (
5989 krb5_context /*context*/,
5990 void */*p_fd*/,
5991 const void */*buf*/,
5992 size_t /*len*/);
5993
5994KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL
5995krb5_net_write_block (
5996 krb5_context /*context*/,
5997 void */*p_fd*/,
5998 const void */*buf*/,
5999 size_t /*len*/,
6000 time_t /*timeout*/);
6001
6002KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6003krb5_ntlm_alloc (
6004 krb5_context /*context*/,
6005 krb5_ntlm */*ntlm*/);
6006
6007KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6008krb5_ntlm_free (
6009 krb5_context /*context*/,
6010 krb5_ntlm /*ntlm*/);
6011
6012KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6013krb5_ntlm_init_get_challenge (
6014 krb5_context /*context*/,
6015 krb5_ntlm /*ntlm*/,
6016 krb5_data */*challenge*/);
6017
6018KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6019krb5_ntlm_init_get_flags (
6020 krb5_context /*context*/,
6021 krb5_ntlm /*ntlm*/,
6022 uint32_t */*flags*/);
6023
6024KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6025krb5_ntlm_init_get_opaque (
6026 krb5_context /*context*/,
6027 krb5_ntlm /*ntlm*/,
6028 krb5_data */*opaque*/);
6029
6030KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6031krb5_ntlm_init_get_targetinfo (
6032 krb5_context /*context*/,
6033 krb5_ntlm /*ntlm*/,
6034 krb5_data */*data*/);
6035
6036KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6037krb5_ntlm_init_get_targetname (
6038 krb5_context /*context*/,
6039 krb5_ntlm /*ntlm*/,
6040 char **/*name*/);
6041
6042KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6043krb5_ntlm_init_request (
6044 krb5_context /*context*/,
6045 krb5_ntlm /*ntlm*/,
6046 krb5_realm /*realm*/,
6047 krb5_ccache /*ccache*/,
6048 uint32_t /*flags*/,
6049 const char */*hostname*/,
6050 const char */*domainname*/);
6051
6052KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6053krb5_ntlm_rep_get_sessionkey (
6054 krb5_context /*context*/,
6055 krb5_ntlm /*ntlm*/,
6056 krb5_data */*data*/);
6057
6058KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
6059krb5_ntlm_rep_get_status (
6060 krb5_context /*context*/,
6061 krb5_ntlm /*ntlm*/);
6062
6063KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6064krb5_ntlm_req_set_flags (
6065 krb5_context /*context*/,
6066 krb5_ntlm /*ntlm*/,
6067 uint32_t /*flags*/);
6068
6069KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6070krb5_ntlm_req_set_lm (
6071 krb5_context /*context*/,
6072 krb5_ntlm /*ntlm*/,
6073 void */*hash*/,
6074 size_t /*len*/);
6075
6076KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6077krb5_ntlm_req_set_ntlm (
6078 krb5_context /*context*/,
6079 krb5_ntlm /*ntlm*/,
6080 void */*hash*/,
6081 size_t /*len*/);
6082
6083KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6084krb5_ntlm_req_set_opaque (
6085 krb5_context /*context*/,
6086 krb5_ntlm /*ntlm*/,
6087 krb5_data */*opaque*/);
6088
6089KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6090krb5_ntlm_req_set_session (
6091 krb5_context /*context*/,
6092 krb5_ntlm /*ntlm*/,
6093 void */*sessionkey*/,
6094 size_t /*length*/);
6095
6096KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6097krb5_ntlm_req_set_targetname (
6098 krb5_context /*context*/,
6099 krb5_ntlm /*ntlm*/,
6100 const char */*targetname*/);
6101
6102KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6103krb5_ntlm_req_set_username (
6104 krb5_context /*context*/,
6105 krb5_ntlm /*ntlm*/,
6106 const char */*username*/);
6107
6108KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6109krb5_ntlm_request (
6110 krb5_context /*context*/,
6111 krb5_ntlm /*ntlm*/,
6112 krb5_realm /*realm*/,
6113 krb5_ccache /*ccache*/);
6114
6115KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6116krb5_openlog (
6117 krb5_context /*context*/,
6118 const char */*program*/,
6119 krb5_log_facility **/*fac*/);
6120
6121KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6122krb5_pac_add_buffer (
6123 krb5_context /*context*/,
6124 krb5_pac /*p*/,
6125 uint32_t /*type*/,
6126 const krb5_data */*data*/);
6127
6128KRB5_LIB_FUNCTION void KRB5_LIB_CALL
6129krb5_pac_free (
6130 krb5_context /*context*/,
6131 krb5_pac /*pac*/);
6132
6133/**
6134 * Get the PAC buffer of specific type from the pac.
6135 *
6136 * @param context Kerberos 5 context.
6137 * @param p the pac structure returned by krb5_pac_parse().
6138 * @param type type of buffer to get
6139 * @param data return data, free with krb5_data_free().
6140 *
6141 * @return Returns 0 to indicate success. Otherwise an kerberos et
6142 * error code is returned, see krb5_get_error_message().
6143 *
6144 * @ingroup krb5_pac
6145 */
6146
6147KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6148krb5_pac_get_buffer (
6149 krb5_context /*context*/,
6150 krb5_pac /*p*/,
6151 uint32_t /*type*/,
6152 krb5_data */*data*/);
6153
6154KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6155krb5_pac_get_types (
6156 krb5_context /*context*/,
6157 krb5_pac /*p*/,
6158 size_t */*len*/,
6159 uint32_t **/*types*/);
6160
6161KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6162krb5_pac_init (
6163 krb5_context /*context*/,
6164 krb5_pac */*pac*/);
6165
6166KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6167krb5_pac_parse (
6168 krb5_context /*context*/,
6169 const void */*ptr*/,
6170 size_t /*len*/,
6171 krb5_pac */*pac*/);
6172
6173/**
6174 * Verify the PAC.
6175 *
6176 * @param context Kerberos 5 context.
6177 * @param pac the pac structure returned by krb5_pac_parse().
6178 * @param authtime The time of the ticket the PAC belongs to.
6179 * @param principal the principal to verify.
6180 * @param server The service key, most always be given.
6181 * @param privsvr The KDC key, may be given.
6182
6183 * @return Returns 0 to indicate success. Otherwise an kerberos et
6184 * error code is returned, see krb5_get_error_message().
6185 *
6186 * @ingroup krb5_pac
6187 */
6188
6189KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6190krb5_pac_verify (
6191 krb5_context /*context*/,
6192 const krb5_pac /*pac*/,
6193 time_t /*authtime*/,
6194 krb5_const_principal /*principal*/,
6195 const krb5_keyblock */*server*/,
6196 const krb5_keyblock */*privsvr*/);
6197
6198KRB5_LIB_FUNCTION int KRB5_LIB_CALL
6199krb5_padata_add (
6200 krb5_context /*context*/,
6201 METHOD_DATA */*md*/,
6202 int /*type*/,
6203 void */*buf*/,
6204 size_t /*len*/);
6205
6206/**
6207 * krb5_parse_address returns the resolved hostname in string to the
6208 * krb5_addresses addresses .
6209 *
6210 * @param context a Keberos context
6211 * @param string
6212 * @param addresses
6213 *
6214 * @return Return an error code or 0.
6215 *
6216 * @ingroup krb5_address
6217 */
6218
6219KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6220krb5_parse_address (
6221 krb5_context /*context*/,
6222 const char */*string*/,
6223 krb5_addresses */*addresses*/);
6224
6225/**
6226 * Parse a name into a krb5_principal structure
6227 *
6228 * @param context Kerberos 5 context
6229 * @param name name to parse into a Kerberos principal
6230 * @param principal returned principal, free with krb5_free_principal().
6231 *
6232 * @return An krb5 error code, see krb5_get_error_message().
6233 *
6234 * @ingroup krb5_principal
6235 */
6236
6237KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6238krb5_parse_name (
6239 krb5_context /*context*/,
6240 const char */*name*/,
6241 krb5_principal */*principal*/);
6242
6243/**
6244 * Parse a name into a krb5_principal structure, flags controls the behavior.
6245 *
6246 * @param context Kerberos 5 context
6247 * @param name name to parse into a Kerberos principal
6248 * @param flags flags to control the behavior
6249 * @param principal returned principal, free with krb5_free_principal().
6250 *
6251 * @return An krb5 error code, see krb5_get_error_message().
6252 *
6253 * @ingroup krb5_principal
6254 */
6255
6256KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6257krb5_parse_name_flags (
6258 krb5_context /*context*/,
6259 const char */*name*/,
6260 int /*flags*/,
6261 krb5_principal */*principal*/);
6262
6263/**
6264 * Parse nametype string and return a nametype integer
6265 *
6266 * @ingroup krb5_principal
6267 */
6268
6269KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6270krb5_parse_nametype (
6271 krb5_context /*context*/,
6272 const char */*str*/,
6273 int32_t */*nametype*/);
6274
6275KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6276krb5_passwd_result_to_string (
6277 krb5_context /*context*/,
6278 int /*result*/);
6279
6280/**
6281 * Deprecated: use krb5_get_init_creds() and friends.
6282 *
6283 * @ingroup krb5_deprecated
6284 */
6285
6286KRB5_LIB_FUNCTION krb5_error_code KRB5_CALLCONV
6287krb5_password_key_proc (
6288 krb5_context /*context*/,
6289 krb5_enctype /*type*/,
6290 krb5_salt /*salt*/,
6291 krb5_const_pointer /*keyseed*/,
6292 krb5_keyblock **/*key*/)
6293 KRB5_DEPRECATED_FUNCTION("Use X instead");
6294
6295KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6296krb5_pk_enterprise_cert (
6297 krb5_context /*context*/,
6298 const char */*user_id*/,
6299 krb5_const_realm /*realm*/,
6300 krb5_principal */*principal*/,
6301 struct hx509_certs_data **/*res*/);
6302
6303/**
6304 * Register a plugin symbol name of specific type.
6305 * @param context a Keberos context
6306 * @param type type of plugin symbol
6307 * @param name name of plugin symbol
6308 * @param symbol a pointer to the named symbol
6309 * @return In case of error a non zero error com_err error is returned
6310 * and the Kerberos error string is set.
6311 *
6312 * @ingroup krb5_support
6313 */
6314
6315KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6316krb5_plugin_register (
6317 krb5_context /*context*/,
6318 enum krb5_plugin_type /*type*/,
6319 const char */*name*/,
6320 void */*symbol*/);
6321
6322KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6323krb5_prepend_config_files (
6324 const char */*filelist*/,
6325 char **/*pq*/,
6326 char ***/*ret_pp*/);
6327
6328/**
6329 * Prepend the filename to the global configuration list.
6330 *
6331 * @param filelist a filename to add to the default list of filename
6332 * @param pfilenames return array of filenames, should be freed with krb5_free_config_files().
6333 *
6334 * @return Returns 0 to indicate success. Otherwise an kerberos et
6335 * error code is returned, see krb5_get_error_message().
6336 *
6337 * @ingroup krb5
6338 */
6339
6340KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6341krb5_prepend_config_files_default (
6342 const char */*filelist*/,
6343 char ***/*pfilenames*/);
6344
6345/**
6346 * Prepend the context full error string for a specific error code.
6347 * The error that is stored should be internationalized.
6348 *
6349 * The if context is NULL, no error string is stored.
6350 *
6351 * @param context Kerberos 5 context
6352 * @param ret The error code
6353 * @param fmt Error string for the error code
6354 * @param ... printf(3) style parameters.
6355 *
6356 * @ingroup krb5_error
6357 */
6358
6359KRB5_LIB_FUNCTION void KRB5_LIB_CALL
6360krb5_prepend_error_message (
6361 krb5_context /*context*/,
6362 krb5_error_code /*ret*/,
6363 const char */*fmt*/,
6364 ...)
6365 __attribute__ ((__format__ (__printf__, 3, 4)));
6366
6367/**
6368 * Deprecated: use krb5_principal_get_realm()
6369 *
6370 * @ingroup krb5_deprecated
6371 */
6372
6373KRB5_LIB_FUNCTION krb5_realm * KRB5_LIB_CALL
6374krb5_princ_realm (
6375 krb5_context /*context*/,
6376 krb5_principal /*principal*/)
6377 KRB5_DEPRECATED_FUNCTION("Use X instead");
6378
6379/**
6380 * Deprecated: use krb5_principal_set_realm()
6381 *
6382 * @ingroup krb5_deprecated
6383 */
6384
6385KRB5_LIB_FUNCTION void KRB5_LIB_CALL
6386krb5_princ_set_realm (
6387 krb5_context /*context*/,
6388 krb5_principal /*principal*/,
6389 krb5_realm */*realm*/)
6390 KRB5_DEPRECATED_FUNCTION("Use X instead");
6391
6392/**
6393 * Compares the two principals, including realm of the principals and returns
6394 * TRUE if they are the same and FALSE if not.
6395 *
6396 * @param context Kerberos 5 context
6397 * @param princ1 first principal to compare
6398 * @param princ2 second principal to compare
6399 *
6400 * @ingroup krb5_principal
6401 * @see krb5_principal_compare_any_realm()
6402 * @see krb5_realm_compare()
6403 */
6404
6405KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
6406krb5_principal_compare (
6407 krb5_context /*context*/,
6408 krb5_const_principal /*princ1*/,
6409 krb5_const_principal /*princ2*/);
6410
6411/**
6412 * Return TRUE iff princ1 == princ2 (without considering the realm)
6413 *
6414 * @param context Kerberos 5 context
6415 * @param princ1 first principal to compare
6416 * @param princ2 second principal to compare
6417 *
6418 * @return non zero if equal, 0 if not
6419 *
6420 * @ingroup krb5_principal
6421 * @see krb5_principal_compare()
6422 * @see krb5_realm_compare()
6423 */
6424
6425KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
6426krb5_principal_compare_any_realm (
6427 krb5_context /*context*/,
6428 krb5_const_principal /*princ1*/,
6429 krb5_const_principal /*princ2*/);
6430
6431KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6432krb5_principal_get_comp_string (
6433 krb5_context /*context*/,
6434 krb5_const_principal /*principal*/,
6435 unsigned int /*component*/);
6436
6437/**
6438 * Get number of component is principal.
6439 *
6440 * @param context Kerberos 5 context
6441 * @param principal principal to query
6442 *
6443 * @return number of components in string
6444 *
6445 * @ingroup krb5_principal
6446 */
6447
6448KRB5_LIB_FUNCTION unsigned int KRB5_LIB_CALL
6449krb5_principal_get_num_comp (
6450 krb5_context /*context*/,
6451 krb5_const_principal /*principal*/);
6452
6453/**
6454 * Get the realm of the principal
6455 *
6456 * @param context A Kerberos context.
6457 * @param principal principal to get the realm for
6458 *
6459 * @return realm of the principal, don't free or use after krb5_principal is freed
6460 *
6461 * @ingroup krb5_principal
6462 */
6463
6464KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6465krb5_principal_get_realm (
6466 krb5_context /*context*/,
6467 krb5_const_principal /*principal*/);
6468
6469/**
6470 * Get the type of the principal
6471 *
6472 * @param context A Kerberos context.
6473 * @param principal principal to get the type for
6474 *
6475 * @return the type of principal
6476 *
6477 * @ingroup krb5_principal
6478 */
6479
6480KRB5_LIB_FUNCTION int KRB5_LIB_CALL
6481krb5_principal_get_type (
6482 krb5_context /*context*/,
6483 krb5_const_principal /*principal*/);
6484
6485/**
6486 * Returns true iff name is an WELLKNOWN:ORG.H5L.HOSTBASED-SERVICE
6487 *
6488 * @ingroup krb5_principal
6489 */
6490
6491krb5_boolean KRB5_LIB_FUNCTION
6492krb5_principal_is_gss_hostbased_service (
6493 krb5_context /*context*/,
6494 krb5_const_principal /*principal*/);
6495
6496/**
6497 * Check if the cname part of the principal is a krbtgt principal
6498 *
6499 * @ingroup krb5_principal
6500 */
6501
6502KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
6503krb5_principal_is_krbtgt (
6504 krb5_context /*context*/,
6505 krb5_const_principal /*p*/);
6506
6507/**
6508 * Returns true if name is Kerberos an LKDC realm
6509 *
6510 * @ingroup krb5_principal
6511 */
6512
6513krb5_boolean KRB5_LIB_FUNCTION
6514krb5_principal_is_lkdc (
6515 krb5_context /*context*/,
6516 krb5_const_principal /*principal*/);
6517
6518/**
6519 * Returns true if name is Kerberos NULL name
6520 *
6521 * @ingroup krb5_principal
6522 */
6523
6524krb5_boolean KRB5_LIB_FUNCTION
6525krb5_principal_is_null (
6526 krb5_context /*context*/,
6527 krb5_const_principal /*principal*/);
6528
6529/**
6530 * Returns true if name is Kerberos an LKDC realm
6531 *
6532 * @ingroup krb5_principal
6533 */
6534
6535krb5_boolean KRB5_LIB_FUNCTION
6536krb5_principal_is_pku2u (
6537 krb5_context /*context*/,
6538 krb5_const_principal /*principal*/);
6539
6540/**
6541 * Check if the cname part of the principal is a initial or renewed krbtgt principal
6542 *
6543 * @ingroup krb5_principal
6544 */
6545
6546krb5_boolean KRB5_LIB_FUNCTION
6547krb5_principal_is_root_krbtgt (
6548 krb5_context /*context*/,
6549 krb5_const_principal /*p*/);
6550
6551/**
6552 * return TRUE iff princ matches pattern
6553 *
6554 * @ingroup krb5_principal
6555 */
6556
6557KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
6558krb5_principal_match (
6559 krb5_context /*context*/,
6560 krb5_const_principal /*princ*/,
6561 krb5_const_principal /*pattern*/);
6562
6563KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6564krb5_principal_set_comp_string (
6565 krb5_context /*context*/,
6566 krb5_principal /*principal*/,
6567 unsigned int /*k*/,
6568 const char */*component*/);
6569
6570/**
6571 * Set a new realm for a principal, and as a side-effect free the
6572 * previous realm.
6573 *
6574 * @param context A Kerberos context.
6575 * @param principal principal set the realm for
6576 * @param realm the new realm to set
6577 *
6578 * @return An krb5 error code, see krb5_get_error_message().
6579 *
6580 * @ingroup krb5_principal
6581 */
6582
6583KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6584krb5_principal_set_realm (
6585 krb5_context /*context*/,
6586 krb5_principal /*principal*/,
6587 krb5_const_realm /*realm*/);
6588
6589/**
6590 * Set the type of the principal
6591 *
6592 * @param context A Kerberos context.
6593 * @param principal principal to set the type for
6594 * @param type the new type
6595 *
6596 * @return An krb5 error code, see krb5_get_error_message().
6597 *
6598 * @ingroup krb5_principal
6599 */
6600
6601KRB5_LIB_FUNCTION void KRB5_LIB_CALL
6602krb5_principal_set_type (
6603 krb5_context /*context*/,
6604 krb5_principal /*principal*/,
6605 int /*type*/);
6606
6607/**
6608 * krb5_print_address prints the address in addr to the string string
6609 * that have the length len. If ret_len is not NULL, it will be filled
6610 * with the length of the string if size were unlimited (not including
6611 * the final NUL) .
6612 *
6613 * @param addr address to be printed
6614 * @param str pointer string to print the address into
6615 * @param len length that will fit into area pointed to by "str".
6616 * @param ret_len return length the str.
6617 *
6618 * @return Return an error code or 0.
6619 *
6620 * @ingroup krb5_address
6621 */
6622
6623KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6624krb5_print_address (
6625 const krb5_address */*addr*/,
6626 char */*str*/,
6627 size_t /*len*/,
6628 size_t */*ret_len*/);
6629
6630krb5_error_code
6631krb5_process_last_request (
6632 krb5_context /*context*/,
6633 krb5_get_init_creds_opt */*options*/,
6634 krb5_init_creds_context /*ctx*/);
6635
6636KRB5_LIB_FUNCTION int KRB5_LIB_CALL
6637krb5_program_setup (
6638 krb5_context */*context*/,
6639 int /*argc*/,
6640 char **/*argv*/,
6641 struct getargs */*args*/,
6642 int /*num_args*/,
6643 void (KRB5_LIB_CALL *usage)(int, struct getargs*, int));
6644
6645KRB5_LIB_FUNCTION int KRB5_CALLCONV
6646krb5_prompter_posix (
6647 krb5_context /*context*/,
6648 void */*data*/,
6649 const char */*name*/,
6650 const char */*banner*/,
6651 int /*num_prompts*/,
6652 krb5_prompt prompts[]);
6653
6654/**
6655 * Converts the random bytestring to a protocol key according to
6656 * Kerberos crypto frame work. It may be assumed that all the bits of
6657 * the input string are equally random, even though the entropy
6658 * present in the random source may be limited.
6659 *
6660 * @param context Kerberos 5 context
6661 * @param type the enctype resulting key will be of
6662 * @param data input random data to convert to a key
6663 * @param size size of input random data, at least krb5_enctype_keysize() long
6664 * @param key key, output key, free with krb5_free_keyblock_contents()
6665 *
6666 * @return Return an error code or 0.
6667 *
6668 * @ingroup krb5_crypto
6669 */
6670
6671KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6672krb5_random_to_key (
6673 krb5_context /*context*/,
6674 krb5_enctype /*type*/,
6675 const void */*data*/,
6676 size_t /*size*/,
6677 krb5_keyblock */*key*/);
6678
6679KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6680krb5_rc_close (
6681 krb5_context /*context*/,
6682 krb5_rcache /*id*/);
6683
6684KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6685krb5_rc_default (
6686 krb5_context /*context*/,
6687 krb5_rcache */*id*/);
6688
6689KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6690krb5_rc_default_name (krb5_context /*context*/);
6691
6692KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6693krb5_rc_default_type (krb5_context /*context*/);
6694
6695KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6696krb5_rc_destroy (
6697 krb5_context /*context*/,
6698 krb5_rcache /*id*/);
6699
6700KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6701krb5_rc_expunge (
6702 krb5_context /*context*/,
6703 krb5_rcache /*id*/);
6704
6705KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6706krb5_rc_get_lifespan (
6707 krb5_context /*context*/,
6708 krb5_rcache /*id*/,
6709 krb5_deltat */*auth_lifespan*/);
6710
6711KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6712krb5_rc_get_name (
6713 krb5_context /*context*/,
6714 krb5_rcache /*id*/);
6715
6716KRB5_LIB_FUNCTION const char* KRB5_LIB_CALL
6717krb5_rc_get_type (
6718 krb5_context /*context*/,
6719 krb5_rcache /*id*/);
6720
6721KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6722krb5_rc_initialize (
6723 krb5_context /*context*/,
6724 krb5_rcache /*id*/,
6725 krb5_deltat /*auth_lifespan*/);
6726
6727KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6728krb5_rc_recover (
6729 krb5_context /*context*/,
6730 krb5_rcache /*id*/);
6731
6732KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6733krb5_rc_resolve (
6734 krb5_context /*context*/,
6735 krb5_rcache /*id*/,
6736 const char */*name*/);
6737
6738KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6739krb5_rc_resolve_full (
6740 krb5_context /*context*/,
6741 krb5_rcache */*id*/,
6742 const char */*string_name*/);
6743
6744KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6745krb5_rc_resolve_type (
6746 krb5_context /*context*/,
6747 krb5_rcache */*id*/,
6748 const char */*type*/);
6749
6750KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6751krb5_rc_store (
6752 krb5_context /*context*/,
6753 krb5_rcache /*id*/,
6754 krb5_donot_replay */*rep*/);
6755
6756KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6757krb5_rd_cred (
6758 krb5_context /*context*/,
6759 krb5_auth_context /*auth_context*/,
6760 krb5_data */*in_data*/,
6761 krb5_creds ***/*ret_creds*/,
6762 krb5_replay_data */*outdata*/);
6763
6764KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6765krb5_rd_cred2 (
6766 krb5_context /*context*/,
6767 krb5_auth_context /*auth_context*/,
6768 krb5_ccache /*ccache*/,
6769 krb5_data */*in_data*/);
6770
6771KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6772krb5_rd_error (
6773 krb5_context /*context*/,
6774 const krb5_data */*msg*/,
6775 KRB_ERROR */*result*/);
6776
6777KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6778krb5_rd_priv (
6779 krb5_context /*context*/,
6780 krb5_auth_context /*auth_context*/,
6781 const krb5_data */*inbuf*/,
6782 krb5_data */*outbuf*/,
6783 krb5_replay_data */*outdata*/);
6784
6785KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6786krb5_rd_rep (
6787 krb5_context /*context*/,
6788 krb5_auth_context /*auth_context*/,
6789 const krb5_data */*inbuf*/,
6790 krb5_ap_rep_enc_part **/*repl*/);
6791
6792/**
6793 * Process an AP_REQ message.
6794 *
6795 * @param context Kerberos 5 context.
6796 * @param auth_context authentication context of the peer.
6797 * @param inbuf the AP_REQ message, obtained for example with krb5_read_message().
6798 * @param server server principal.
6799 * @param keytab server keytab.
6800 * @param ap_req_options set to the AP_REQ options. See the AP_OPTS_* defines.
6801 * @param ticket on success, set to the authenticated client credentials.
6802 * Must be deallocated with krb5_free_ticket(). If not
6803 * interested, pass a NULL value.
6804 *
6805 * @return 0 to indicate success. Otherwise a Kerberos error code is
6806 * returned, see krb5_get_error_message().
6807 */
6808
6809KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6810krb5_rd_req (
6811 krb5_context /*context*/,
6812 krb5_auth_context */*auth_context*/,
6813 const krb5_data */*inbuf*/,
6814 krb5_const_principal /*server*/,
6815 krb5_keytab /*keytab*/,
6816 krb5_flags */*ap_req_options*/,
6817 krb5_ticket **/*ticket*/);
6818
6819/**
6820 * The core server function that verify application authentication
6821 * requests from clients.
6822 *
6823 * @param context Keberos 5 context.
6824 * @param auth_context the authentication context, can be NULL, then
6825 * default values for the authentication context will used.
6826 * @param inbuf the (AP-REQ) authentication buffer
6827 *
6828 * @param server the server to authenticate to. If NULL the function
6829 * will try to find any available credential in the keytab
6830 * that will verify the reply. The function will prefer the
6831 * server specified in the AP-REQ, but if
6832 * there is no mach, it will try all keytab entries for a
6833 * match. This has serious performance issues for large keytabs.
6834 *
6835 * @param inctx control the behavior of the function, if NULL, the
6836 * default behavior is used.
6837 * @param outctx the return outctx, free with krb5_rd_req_out_ctx_free().
6838 * @return Kerberos 5 error code, see krb5_get_error_message().
6839 *
6840 * @ingroup krb5_auth
6841 */
6842
6843KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6844krb5_rd_req_ctx (
6845 krb5_context /*context*/,
6846 krb5_auth_context */*auth_context*/,
6847 const krb5_data */*inbuf*/,
6848 krb5_const_principal /*server*/,
6849 krb5_rd_req_in_ctx /*inctx*/,
6850 krb5_rd_req_out_ctx */*outctx*/);
6851
6852/**
6853 * Allocate a krb5_rd_req_in_ctx as an input parameter to
6854 * krb5_rd_req_ctx(). The caller should free the context with
6855 * krb5_rd_req_in_ctx_free() when done with the context.
6856 *
6857 * @param context Keberos 5 context.
6858 * @param ctx in ctx to krb5_rd_req_ctx().
6859 *
6860 * @return Kerberos 5 error code, see krb5_get_error_message().
6861 *
6862 * @ingroup krb5_auth
6863 */
6864
6865KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6866krb5_rd_req_in_ctx_alloc (
6867 krb5_context /*context*/,
6868 krb5_rd_req_in_ctx */*ctx*/);
6869
6870KRB5_LIB_FUNCTION void KRB5_LIB_CALL
6871krb5_rd_req_in_ctx_free (
6872 krb5_context /*context*/,
6873 krb5_rd_req_in_ctx /*ctx*/);
6874
6875KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6876krb5_rd_req_in_set_keyblock (
6877 krb5_context /*context*/,
6878 krb5_rd_req_in_ctx /*in*/,
6879 krb5_keyblock */*keyblock*/);
6880
6881/**
6882 * Set the keytab that krb5_rd_req_ctx() will use.
6883 *
6884 * @param context Keberos 5 context.
6885 * @param in in ctx to krb5_rd_req_ctx().
6886 * @param keytab keytab that krb5_rd_req_ctx() will use, only copy the
6887 * pointer, so the caller must free they keytab after
6888 * krb5_rd_req_in_ctx_free() is called.
6889 *
6890 * @return Kerberos 5 error code, see krb5_get_error_message().
6891 *
6892 * @ingroup krb5_auth
6893 */
6894
6895KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6896krb5_rd_req_in_set_keytab (
6897 krb5_context /*context*/,
6898 krb5_rd_req_in_ctx /*in*/,
6899 krb5_keytab /*keytab*/);
6900
6901/**
6902 * Set if krb5_rq_red() is going to check the Windows PAC or not
6903 *
6904 * @param context Keberos 5 context.
6905 * @param in krb5_rd_req_in_ctx to check the option on.
6906 * @param flag flag to select if to check the pac (TRUE) or not (FALSE).
6907 *
6908 * @return Kerberos 5 error code, see krb5_get_error_message().
6909 *
6910 * @ingroup krb5_auth
6911 */
6912
6913KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6914krb5_rd_req_in_set_pac_check (
6915 krb5_context /*context*/,
6916 krb5_rd_req_in_ctx /*in*/,
6917 krb5_boolean /*flag*/);
6918
6919/**
6920 * Free the krb5_rd_req_out_ctx.
6921 *
6922 * @param context Keberos 5 context.
6923 * @param ctx krb5_rd_req_out_ctx context to free.
6924 *
6925 * @ingroup krb5_auth
6926 */
6927
6928KRB5_LIB_FUNCTION void KRB5_LIB_CALL
6929krb5_rd_req_out_ctx_free (
6930 krb5_context /*context*/,
6931 krb5_rd_req_out_ctx /*ctx*/);
6932
6933KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6934krb5_rd_req_out_get_ap_req_options (
6935 krb5_context /*context*/,
6936 krb5_rd_req_out_ctx /*out*/,
6937 krb5_flags */*ap_req_options*/);
6938
6939KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6940krb5_rd_req_out_get_keyblock (
6941 krb5_context /*context*/,
6942 krb5_rd_req_out_ctx /*out*/,
6943 krb5_keyblock **/*keyblock*/);
6944
6945/**
6946 * Get the principal that was used in the request from the
6947 * client. Might not match whats in the ticket if krb5_rd_req_ctx()
6948 * searched in the keytab for a matching key.
6949 *
6950 * @param context a Kerberos 5 context.
6951 * @param out a krb5_rd_req_out_ctx from krb5_rd_req_ctx().
6952 * @param principal return principal, free with krb5_free_principal().
6953 *
6954 * @ingroup krb5_auth
6955 */
6956
6957KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6958krb5_rd_req_out_get_server (
6959 krb5_context /*context*/,
6960 krb5_rd_req_out_ctx /*out*/,
6961 krb5_principal */*principal*/);
6962
6963KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6964krb5_rd_req_out_get_ticket (
6965 krb5_context /*context*/,
6966 krb5_rd_req_out_ctx /*out*/,
6967 krb5_ticket **/*ticket*/);
6968
6969KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6970krb5_rd_req_with_keyblock (
6971 krb5_context /*context*/,
6972 krb5_auth_context */*auth_context*/,
6973 const krb5_data */*inbuf*/,
6974 krb5_const_principal /*server*/,
6975 krb5_keyblock */*keyblock*/,
6976 krb5_flags */*ap_req_options*/,
6977 krb5_ticket **/*ticket*/);
6978
6979KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6980krb5_rd_safe (
6981 krb5_context /*context*/,
6982 krb5_auth_context /*auth_context*/,
6983 const krb5_data */*inbuf*/,
6984 krb5_data */*outbuf*/,
6985 krb5_replay_data */*outdata*/);
6986
6987KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6988krb5_read_message (
6989 krb5_context /*context*/,
6990 krb5_pointer /*p_fd*/,
6991 krb5_data */*data*/);
6992
6993KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
6994krb5_read_priv_message (
6995 krb5_context /*context*/,
6996 krb5_auth_context /*ac*/,
6997 krb5_pointer /*p_fd*/,
6998 krb5_data */*data*/);
6999
7000KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7001krb5_read_safe_message (
7002 krb5_context /*context*/,
7003 krb5_auth_context /*ac*/,
7004 krb5_pointer /*p_fd*/,
7005 krb5_data */*data*/);
7006
7007/**
7008 * return TRUE iff realm(princ1) == realm(princ2)
7009 *
7010 * @param context Kerberos 5 context
7011 * @param princ1 first principal to compare
7012 * @param princ2 second principal to compare
7013 *
7014 * @ingroup krb5_principal
7015 * @see krb5_principal_compare_any_realm()
7016 * @see krb5_principal_compare()
7017 */
7018
7019KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
7020krb5_realm_compare (
7021 krb5_context /*context*/,
7022 krb5_const_principal /*princ1*/,
7023 krb5_const_principal /*princ2*/);
7024
7025/**
7026 * Returns true if name is Kerberos an LKDC realm
7027 *
7028 * @ingroup krb5_principal
7029 */
7030
7031krb5_boolean KRB5_LIB_FUNCTION
7032krb5_realm_is_lkdc (const char */*realm*/);
7033
7034/**
7035 * Perform the server side of the sendauth protocol.
7036 *
7037 * @param context Kerberos 5 context.
7038 * @param auth_context authentication context of the peer.
7039 * @param p_fd socket associated to the connection.
7040 * @param appl_version server-specific string.
7041 * @param server server principal.
7042 * @param flags if KRB5_RECVAUTH_IGNORE_VERSION is set, skip the sendauth version
7043 * part of the protocol.
7044 * @param keytab server keytab.
7045 * @param ticket on success, set to the authenticated client credentials.
7046 * Must be deallocated with krb5_free_ticket(). If not
7047 * interested, pass a NULL value.
7048 *
7049 * @return 0 to indicate success. Otherwise a Kerberos error code is
7050 * returned, see krb5_get_error_message().
7051 */
7052
7053KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7054krb5_recvauth (
7055 krb5_context /*context*/,
7056 krb5_auth_context */*auth_context*/,
7057 krb5_pointer /*p_fd*/,
7058 const char */*appl_version*/,
7059 krb5_principal /*server*/,
7060 int32_t /*flags*/,
7061 krb5_keytab /*keytab*/,
7062 krb5_ticket **/*ticket*/);
7063
7064/**
7065 * Perform the server side of the sendauth protocol like krb5_recvauth(), but support
7066 * a user-specified callback, \a match_appl_version, to perform the match of the application
7067 * version \a match_data.
7068 */
7069
7070KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7071krb5_recvauth_match_version (
7072 krb5_context /*context*/,
7073 krb5_auth_context */*auth_context*/,
7074 krb5_pointer /*p_fd*/,
7075 krb5_boolean (*/*match_appl_version*/)(const void *, const char*),
7076 const void */*match_data*/,
7077 krb5_principal /*server*/,
7078 int32_t /*flags*/,
7079 krb5_keytab /*keytab*/,
7080 krb5_ticket **/*ticket*/);
7081
7082/**
7083 * Read a address block from the storage.
7084 *
7085 * @param sp the storage buffer to write to
7086 * @param adr the address block read from storage
7087 *
7088 * @return 0 on success, a Kerberos 5 error code on failure.
7089 *
7090 * @ingroup krb5_storage
7091 */
7092
7093KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7094krb5_ret_address (
7095 krb5_storage */*sp*/,
7096 krb5_address */*adr*/);
7097
7098/**
7099 * Read a addresses block from the storage.
7100 *
7101 * @param sp the storage buffer to write to
7102 * @param adr the addresses block read from storage
7103 *
7104 * @return 0 on success, a Kerberos 5 error code on failure.
7105 *
7106 * @ingroup krb5_storage
7107 */
7108
7109KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7110krb5_ret_addrs (
7111 krb5_storage */*sp*/,
7112 krb5_addresses */*adr*/);
7113
7114/**
7115 * Read a auth data from the storage.
7116 *
7117 * @param sp the storage buffer to write to
7118 * @param auth the auth data block read from storage
7119 *
7120 * @return 0 on success, a Kerberos 5 error code on failure.
7121 *
7122 * @ingroup krb5_storage
7123 */
7124
7125KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7126krb5_ret_authdata (
7127 krb5_storage */*sp*/,
7128 krb5_authdata */*auth*/);
7129
7130/**
7131 * Read a credentials block from the storage.
7132 *
7133 * @param sp the storage buffer to write to
7134 * @param creds the credentials block read from storage
7135 *
7136 * @return 0 on success, a Kerberos 5 error code on failure.
7137 *
7138 * @ingroup krb5_storage
7139 */
7140
7141KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7142krb5_ret_creds (
7143 krb5_storage */*sp*/,
7144 krb5_creds */*creds*/);
7145
7146/**
7147 * Read a tagged credentials block from the storage.
7148 *
7149 * @param sp the storage buffer to write to
7150 * @param creds the credentials block read from storage
7151 *
7152 * @return 0 on success, a Kerberos 5 error code on failure.
7153 *
7154 * @ingroup krb5_storage
7155 */
7156
7157KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7158krb5_ret_creds_tag (
7159 krb5_storage */*sp*/,
7160 krb5_creds */*creds*/);
7161
7162/**
7163 * Parse a data from the storage.
7164 *
7165 * @param sp the storage buffer to read from
7166 * @param data the parsed data
7167 *
7168 * @return 0 on success, a Kerberos 5 error code on failure.
7169 *
7170 * @ingroup krb5_storage
7171 */
7172
7173KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7174krb5_ret_data (
7175 krb5_storage */*sp*/,
7176 krb5_data */*data*/);
7177
7178/**
7179 * Read a int16 from storage, byte order is controlled by the settings
7180 * on the storage, see krb5_storage_set_byteorder().
7181 *
7182 * @param sp the storage to write too
7183 * @param value the value read from the buffer
7184 *
7185 * @return 0 for success, or a Kerberos 5 error code on failure.
7186 *
7187 * @ingroup krb5_storage
7188 */
7189
7190KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7191krb5_ret_int16 (
7192 krb5_storage */*sp*/,
7193 int16_t */*value*/);
7194
7195/**
7196 * Read a int32 from storage, byte order is controlled by the settings
7197 * on the storage, see krb5_storage_set_byteorder().
7198 *
7199 * @param sp the storage to write too
7200 * @param value the value read from the buffer
7201 *
7202 * @return 0 for success, or a Kerberos 5 error code on failure.
7203 *
7204 * @ingroup krb5_storage
7205 */
7206
7207KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7208krb5_ret_int32 (
7209 krb5_storage */*sp*/,
7210 int32_t */*value*/);
7211
7212/**
7213 * Read a int64 from storage, byte order is controlled by the settings
7214 * on the storage, see krb5_storage_set_byteorder().
7215 *
7216 * @param sp the storage to write too
7217 * @param value the value read from the buffer
7218 *
7219 * @return 0 for success, or a Kerberos 5 error code on failure.
7220 *
7221 * @ingroup krb5_storage
7222 */
7223
7224KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7225krb5_ret_int64 (
7226 krb5_storage */*sp*/,
7227 int64_t */*value*/);
7228
7229/**
7230 * Read a int8 from storage
7231 *
7232 * @param sp the storage to write too
7233 * @param value the value read from the buffer
7234 *
7235 * @return 0 for success, or a Kerberos 5 error code on failure.
7236 *
7237 * @ingroup krb5_storage
7238 */
7239
7240KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7241krb5_ret_int8 (
7242 krb5_storage */*sp*/,
7243 int8_t */*value*/);
7244
7245/**
7246 * Read a keyblock from the storage.
7247 *
7248 * @param sp the storage buffer to write to
7249 * @param p the keyblock read from storage, free using krb5_free_keyblock()
7250 *
7251 * @return 0 on success, a Kerberos 5 error code on failure.
7252 *
7253 * @ingroup krb5_storage
7254 */
7255
7256KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7257krb5_ret_keyblock (
7258 krb5_storage */*sp*/,
7259 krb5_keyblock */*p*/);
7260
7261/**
7262 * Parse principal from the storage.
7263 *
7264 * @param sp the storage buffer to read from
7265 * @param princ the parsed principal
7266 *
7267 * @return 0 on success, a Kerberos 5 error code on failure.
7268 *
7269 * @ingroup krb5_storage
7270 */
7271
7272KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7273krb5_ret_principal (
7274 krb5_storage */*sp*/,
7275 krb5_principal */*princ*/);
7276
7277/**
7278 * Parse a string from the storage.
7279 *
7280 * @param sp the storage buffer to read from
7281 * @param string the parsed string
7282 *
7283 * @return 0 on success, a Kerberos 5 error code on failure.
7284 *
7285 * @ingroup krb5_storage
7286 */
7287
7288KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7289krb5_ret_string (
7290 krb5_storage */*sp*/,
7291 char **/*string*/);
7292
7293KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7294krb5_ret_stringnl (
7295 krb5_storage */*sp*/,
7296 char **/*string*/);
7297
7298/**
7299 * Parse zero terminated string from the storage.
7300 *
7301 * @param sp the storage buffer to read from
7302 * @param string the parsed string
7303 *
7304 * @return 0 on success, a Kerberos 5 error code on failure.
7305 *
7306 * @ingroup krb5_storage
7307 */
7308
7309KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7310krb5_ret_stringz (
7311 krb5_storage */*sp*/,
7312 char **/*string*/);
7313
7314/**
7315 * Read a times block from the storage.
7316 *
7317 * @param sp the storage buffer to write to
7318 * @param times the times block read from storage
7319 *
7320 * @return 0 on success, a Kerberos 5 error code on failure.
7321 *
7322 * @ingroup krb5_storage
7323 */
7324
7325KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7326krb5_ret_times (
7327 krb5_storage */*sp*/,
7328 krb5_times */*times*/);
7329
7330/**
7331 * Read a int16 from storage, byte order is controlled by the settings
7332 * on the storage, see krb5_storage_set_byteorder().
7333 *
7334 * @param sp the storage to write too
7335 * @param value the value read from the buffer
7336 *
7337 * @return 0 for success, or a Kerberos 5 error code on failure.
7338 *
7339 * @ingroup krb5_storage
7340 */
7341
7342KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7343krb5_ret_uint16 (
7344 krb5_storage */*sp*/,
7345 uint16_t */*value*/);
7346
7347/**
7348 * Read a uint32 from storage, byte order is controlled by the settings
7349 * on the storage, see krb5_storage_set_byteorder().
7350 *
7351 * @param sp the storage to write too
7352 * @param value the value read from the buffer
7353 *
7354 * @return 0 for success, or a Kerberos 5 error code on failure.
7355 *
7356 * @ingroup krb5_storage
7357 */
7358
7359KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7360krb5_ret_uint32 (
7361 krb5_storage */*sp*/,
7362 uint32_t */*value*/);
7363
7364/**
7365 * Read a uint64 from storage, byte order is controlled by the settings
7366 * on the storage, see krb5_storage_set_byteorder().
7367 *
7368 * @param sp the storage to write too
7369 * @param value the value read from the buffer
7370 *
7371 * @return 0 for success, or a Kerberos 5 error code on failure.
7372 *
7373 * @ingroup krb5_storage
7374 */
7375
7376KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7377krb5_ret_uint64 (
7378 krb5_storage */*sp*/,
7379 uint64_t */*value*/);
7380
7381/**
7382 * Read a uint8 from storage
7383 *
7384 * @param sp the storage to write too
7385 * @param value the value read from the buffer
7386 *
7387 * @return 0 for success, or a Kerberos 5 error code on failure.
7388 *
7389 * @ingroup krb5_storage
7390 */
7391
7392KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7393krb5_ret_uint8 (
7394 krb5_storage */*sp*/,
7395 uint8_t */*value*/);
7396
7397KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7398krb5_salttype_to_string (
7399 krb5_context /*context*/,
7400 krb5_enctype /*etype*/,
7401 krb5_salttype /*stype*/,
7402 char **/*string*/);
7403
7404/**
7405 * Perform the client side of the sendauth protocol.
7406 *
7407 * @param context Kerberos 5 context.
7408 * @param auth_context Authentication context of the peer.
7409 * @param p_fd Socket associated to the connection.
7410 * @param appl_version Server-specific string.
7411 * @param client Client principal. If NULL, use the credentials in \a ccache.
7412 * @param server Server principal.
7413 * @param ap_req_options Options for the AP_REQ message. See the AP_OPTS_* defines in krb5.h.
7414 * @param in_data FIXME
7415 * @param in_creds FIXME
7416 * @param ccache Credentials cache. If NULL, use the default credentials cache.
7417 * @param ret_error If not NULL, will be set to the error reported by server, if any.
7418 * Must be deallocated with krb5_free_error_contents().
7419 * @param rep_result If not NULL, will be set to the EncApRepPart of the AP_REP message.
7420 * Must be deallocated with krb5_free_ap_rep_enc_part().
7421 * @param out_creds FIXME If not NULL, will be set to FIXME. Must be deallocated with
7422 * krb5_free_creds().
7423 *
7424 * @return 0 to indicate success. Otherwise a Kerberos error code is
7425 * returned, see krb5_get_error_message().
7426 */
7427
7428KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7429krb5_sendauth (
7430 krb5_context /*context*/,
7431 krb5_auth_context */*auth_context*/,
7432 krb5_pointer /*p_fd*/,
7433 const char */*appl_version*/,
7434 krb5_principal /*client*/,
7435 krb5_principal /*server*/,
7436 krb5_flags /*ap_req_options*/,
7437 krb5_data */*in_data*/,
7438 krb5_creds */*in_creds*/,
7439 krb5_ccache /*ccache*/,
7440 krb5_error **/*ret_error*/,
7441 krb5_ap_rep_enc_part **/*rep_result*/,
7442 krb5_creds **/*out_creds*/);
7443
7444KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7445krb5_sendto (
7446 krb5_context /*context*/,
7447 const krb5_data */*send_data*/,
7448 krb5_krbhst_handle /*handle*/,
7449 krb5_data */*receive*/);
7450
7451KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7452krb5_sendto_context (
7453 krb5_context /*context*/,
7454 krb5_sendto_ctx /*ctx*/,
7455 const krb5_data */*send_data*/,
7456 krb5_const_realm /*realm*/,
7457 krb5_data */*receive*/);
7458
7459KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7460krb5_sendto_ctx_add_flags (
7461 krb5_sendto_ctx /*ctx*/,
7462 int /*flags*/);
7463
7464/**
7465 * @section send_to_kdc Locating and sending packets to the KDC
7466 *
7467 * The send to kdc code is responsible to request the list of KDC from
7468 * the locate-kdc subsystem and then send requests to each of them.
7469 *
7470 * - Each second a new hostname is tried.
7471 * - If the hostname have several addresses, the first will be tried
7472 * directly then in turn the other will be tried every 3 seconds
7473 * (host_timeout).
7474 * - UDP requests are tried 3 times, and it tried with a individual timeout of kdc_timeout / 3.
7475 * - TCP and HTTP requests are tried 1 time.
7476 *
7477 * Total wait time shorter then (number of addresses * 3) + kdc_timeout seconds.
7478 *
7479 */
7480
7481KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7482krb5_sendto_ctx_alloc (
7483 krb5_context /*context*/,
7484 krb5_sendto_ctx */*ctx*/);
7485
7486KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7487krb5_sendto_ctx_free (
7488 krb5_context /*context*/,
7489 krb5_sendto_ctx /*ctx*/);
7490
7491KRB5_LIB_FUNCTION int KRB5_LIB_CALL
7492krb5_sendto_ctx_get_flags (krb5_sendto_ctx /*ctx*/);
7493
7494KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7495krb5_sendto_ctx_set_func (
7496 krb5_sendto_ctx /*ctx*/,
7497 krb5_sendto_ctx_func /*func*/,
7498 void */*data*/);
7499
7500KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7501krb5_sendto_ctx_set_type (
7502 krb5_sendto_ctx /*ctx*/,
7503 int /*type*/);
7504
7505KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7506krb5_sendto_kdc (
7507 krb5_context /*context*/,
7508 const krb5_data */*send_data*/,
7509 const krb5_realm */*realm*/,
7510 krb5_data */*receive*/);
7511
7512KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7513krb5_sendto_kdc_flags (
7514 krb5_context /*context*/,
7515 const krb5_data */*send_data*/,
7516 const krb5_realm */*realm*/,
7517 krb5_data */*receive*/,
7518 int /*flags*/);
7519
7520KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7521krb5_sendto_set_hostname (
7522 krb5_context /*context*/,
7523 krb5_sendto_ctx /*ctx*/,
7524 const char */*hostname*/);
7525
7526/**
7527 * Reinit the context from a new set of filenames.
7528 *
7529 * @param context context to add configuration too.
7530 * @param filenames array of filenames, end of list is indicated with a NULL filename.
7531 *
7532 * @return Returns 0 to indicate success. Otherwise an kerberos et
7533 * error code is returned, see krb5_get_error_message().
7534 *
7535 * @ingroup krb5
7536 */
7537
7538KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7539krb5_set_config_files (
7540 krb5_context /*context*/,
7541 char **/*filenames*/);
7542
7543KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7544krb5_set_debug_dest (
7545 krb5_context /*context*/,
7546 const char */*program*/,
7547 const char */*log_spec*/);
7548
7549/**
7550 * Set the default encryption types that will be use in communcation
7551 * with the KDC, clients and servers.
7552 *
7553 * @param context Kerberos 5 context.
7554 * @param etypes Encryption types, array terminated with ETYPE_NULL (0).
7555 * A value of NULL resets the encryption types to the defaults set in the
7556 * configuration file.
7557 *
7558 * @return Returns 0 to indicate success. Otherwise an kerberos et
7559 * error code is returned, see krb5_get_error_message().
7560 *
7561 * @ingroup krb5
7562 */
7563
7564KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7565krb5_set_default_in_tkt_etypes (
7566 krb5_context /*context*/,
7567 const krb5_enctype */*etypes*/);
7568
7569KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7570krb5_set_default_realm (
7571 krb5_context /*context*/,
7572 const char */*realm*/);
7573
7574/**
7575 * Set if the library should use DNS to canonicalize hostnames.
7576 *
7577 * @param context Kerberos 5 context.
7578 * @param flag if its dns canonicalizion is used or not.
7579 *
7580 * @ingroup krb5
7581 */
7582
7583KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7584krb5_set_dns_canonicalize_hostname (
7585 krb5_context /*context*/,
7586 krb5_boolean /*flag*/);
7587
7588/**
7589 * Set the context full error string for a specific error code.
7590 * The error that is stored should be internationalized.
7591 *
7592 * The if context is NULL, no error string is stored.
7593 *
7594 * @param context Kerberos 5 context
7595 * @param ret The error code
7596 * @param fmt Error string for the error code
7597 * @param ... printf(3) style parameters.
7598 *
7599 * @ingroup krb5_error
7600 */
7601
7602KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7603krb5_set_error_message (
7604 krb5_context /*context*/,
7605 krb5_error_code /*ret*/,
7606 const char */*fmt*/,
7607 ...)
7608 __attribute__ ((__format__ (__printf__, 3, 4)));
7609
7610/**
7611 * Set the error message returned by krb5_get_error_string().
7612 *
7613 * Deprecated: use krb5_get_error_message()
7614 *
7615 * @param context Kerberos context
7616 * @param fmt error message to free
7617 *
7618 * @return Return an error code or 0.
7619 *
7620 * @ingroup krb5_deprecated
7621 */
7622
7623KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7624krb5_set_error_string (
7625 krb5_context /*context*/,
7626 const char */*fmt*/,
7627 ...)
7628 __attribute__ ((__format__ (__printf__, 2, 3))) KRB5_DEPRECATED_FUNCTION("Use X instead");
7629
7630/**
7631 * Set extra address to the address list that the library will add to
7632 * the client's address list when communicating with the KDC.
7633 *
7634 * @param context Kerberos 5 context.
7635 * @param addresses addreses to set
7636 *
7637 * @return Returns 0 to indicate success. Otherwise an kerberos et
7638 * error code is returned, see krb5_get_error_message().
7639 *
7640 * @ingroup krb5
7641 */
7642
7643KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7644krb5_set_extra_addresses (
7645 krb5_context /*context*/,
7646 const krb5_addresses */*addresses*/);
7647
7648/**
7649 * Set version of fcache that the library should use.
7650 *
7651 * @param context Kerberos 5 context.
7652 * @param version version number.
7653 *
7654 * @return Returns 0 to indicate success. Otherwise an kerberos et
7655 * error code is returned, see krb5_get_error_message().
7656 *
7657 * @ingroup krb5
7658 */
7659
7660KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7661krb5_set_fcache_version (
7662 krb5_context /*context*/,
7663 int /*version*/);
7664
7665/**
7666 * Enable and disable home directory access on either the global state
7667 * or the krb5_context state. By calling krb5_set_home_dir_access()
7668 * with context set to NULL, the global state is configured otherwise
7669 * the state for the krb5_context is modified.
7670 *
7671 * For home directory access to be allowed, both the global state and
7672 * the krb5_context state have to be allowed.
7673 *
7674 * @param context a Kerberos 5 context or NULL
7675 * @param allow allow if TRUE home directory
7676 * @return the old value
7677 *
7678 * @ingroup krb5
7679 */
7680
7681KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
7682krb5_set_home_dir_access (
7683 krb5_context /*context*/,
7684 krb5_boolean /*allow*/);
7685
7686/**
7687 * Set extra addresses to ignore when fetching addresses from the
7688 * underlaying operating system.
7689 *
7690 * @param context Kerberos 5 context.
7691 * @param addresses addreses to ignore
7692 *
7693 * @return Returns 0 to indicate success. Otherwise an kerberos et
7694 * error code is returned, see krb5_get_error_message().
7695 *
7696 * @ingroup krb5
7697 */
7698
7699KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7700krb5_set_ignore_addresses (
7701 krb5_context /*context*/,
7702 const krb5_addresses */*addresses*/);
7703
7704/**
7705 * Set current offset in time to the KDC.
7706 *
7707 * @param context Kerberos 5 context.
7708 * @param sec seconds part of offset.
7709 * @param usec micro seconds part of offset.
7710 *
7711 * @return returns zero
7712 *
7713 * @ingroup krb5
7714 */
7715
7716KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7717krb5_set_kdc_sec_offset (
7718 krb5_context /*context*/,
7719 int32_t /*sec*/,
7720 int32_t /*usec*/);
7721
7722/**
7723 * Set max time skew allowed.
7724 *
7725 * @param context Kerberos 5 context.
7726 * @param t timeskew in seconds.
7727 *
7728 * @ingroup krb5
7729 */
7730
7731KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7732krb5_set_max_time_skew (
7733 krb5_context /*context*/,
7734 time_t /*t*/);
7735
7736/**
7737 * Change password using creds.
7738 *
7739 * @param context a Keberos context
7740 * @param creds The initial kadmin/passwd for the principal or an admin principal
7741 * @param newpw The new password to set
7742 * @param targprinc if unset, the default principal is used.
7743 * @param result_code Result code, KRB5_KPASSWD_SUCCESS is when password is changed.
7744 * @param result_code_string binary message from the server, contains
7745 * at least the result_code.
7746 * @param result_string A message from the kpasswd service or the
7747 * library in human printable form. The string is NUL terminated.
7748 *
7749 * @return On sucess and *result_code is KRB5_KPASSWD_SUCCESS, the password is changed.
7750
7751 * @ingroup @krb5
7752 */
7753
7754KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7755krb5_set_password (
7756 krb5_context /*context*/,
7757 krb5_creds */*creds*/,
7758 const char */*newpw*/,
7759 krb5_principal /*targprinc*/,
7760 int */*result_code*/,
7761 krb5_data */*result_code_string*/,
7762 krb5_data */*result_string*/);
7763
7764KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7765krb5_set_password_using_ccache (
7766 krb5_context /*context*/,
7767 krb5_ccache /*ccache*/,
7768 const char */*newpw*/,
7769 krb5_principal /*targprinc*/,
7770 int */*result_code*/,
7771 krb5_data */*result_code_string*/,
7772 krb5_data */*result_string*/);
7773
7774/**
7775 * Set the absolute time that the caller knows the kdc has so the
7776 * kerberos library can calculate the relative diffrence beteen the
7777 * KDC time and local system time.
7778 *
7779 * @param context Keberos 5 context.
7780 * @param sec The applications new of "now" in seconds
7781 * @param usec The applications new of "now" in micro seconds
7782
7783 * @return Kerberos 5 error code, see krb5_get_error_message().
7784 *
7785 * @ingroup krb5
7786 */
7787
7788KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7789krb5_set_real_time (
7790 krb5_context /*context*/,
7791 krb5_timestamp /*sec*/,
7792 int32_t /*usec*/);
7793
7794KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7795krb5_set_send_to_kdc_func (
7796 krb5_context /*context*/,
7797 krb5_send_to_kdc_func /*func*/,
7798 void */*data*/);
7799
7800/**
7801 * Make the kerberos library default to the admin KDC.
7802 *
7803 * @param context Kerberos 5 context.
7804 * @param flag boolean flag to select if the use the admin KDC or not.
7805 *
7806 * @ingroup krb5
7807 */
7808
7809KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7810krb5_set_use_admin_kdc (
7811 krb5_context /*context*/,
7812 krb5_boolean /*flag*/);
7813
7814/**
7815 * Set the default logging facility.
7816 *
7817 * @param context A Kerberos 5 context
7818 * @param fac Facility to use for logging.
7819 *
7820 * @ingroup krb5_error
7821 */
7822
7823KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7824krb5_set_warn_dest (
7825 krb5_context /*context*/,
7826 krb5_log_facility */*fac*/);
7827
7828/**
7829 * Create a principal for the given service running on the given
7830 * hostname. If KRB5_NT_SRV_HST is used, the hostname is canonicalized
7831 * according the configured name canonicalization rules, with
7832 * canonicalization delayed in some cases. One rule involves DNS, which
7833 * is insecure unless DNSSEC is used, but we don't use DNSSEC-capable
7834 * resolver APIs here, so that if DNSSEC is used we wouldn't know it.
7835 *
7836 * Canonicalization is immediate (not delayed) only when there is only
7837 * one canonicalization rule and that rule indicates that we should do a
7838 * host lookup by name (i.e., DNS).
7839 *
7840 * @param context A Kerberos context.
7841 * @param hostname hostname to use
7842 * @param sname Service name to use
7843 * @param type name type of principal, use KRB5_NT_SRV_HST or KRB5_NT_UNKNOWN.
7844 * @param ret_princ return principal, free with krb5_free_principal().
7845 *
7846 * @return An krb5 error code, see krb5_get_error_message().
7847 *
7848 * @ingroup krb5_principal
7849 */
7850
7851KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7852krb5_sname_to_principal (
7853 krb5_context /*context*/,
7854 const char */*hostname*/,
7855 const char */*sname*/,
7856 int32_t /*type*/,
7857 krb5_principal */*ret_princ*/);
7858
7859KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7860krb5_sock_to_principal (
7861 krb5_context /*context*/,
7862 int /*sock*/,
7863 const char */*sname*/,
7864 int32_t /*type*/,
7865 krb5_principal */*ret_princ*/);
7866
7867/**
7868 * krb5_sockaddr2address stores a address a "struct sockaddr" sa in
7869 * the krb5_address addr.
7870 *
7871 * @param context a Keberos context
7872 * @param sa a struct sockaddr to extract the address from
7873 * @param addr an Kerberos 5 address to store the address in.
7874 *
7875 * @return Return an error code or 0.
7876 *
7877 * @ingroup krb5_address
7878 */
7879
7880KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7881krb5_sockaddr2address (
7882 krb5_context /*context*/,
7883 const struct sockaddr */*sa*/,
7884 krb5_address */*addr*/);
7885
7886/**
7887 * krb5_sockaddr2port extracts a port (if possible) from a "struct
7888 * sockaddr.
7889 *
7890 * @param context a Keberos context
7891 * @param sa a struct sockaddr to extract the port from
7892 * @param port a pointer to an int16_t store the port in.
7893 *
7894 * @return Return an error code or 0. Will return
7895 * KRB5_PROG_ATYPE_NOSUPP in case address type is not supported.
7896 *
7897 * @ingroup krb5_address
7898 */
7899
7900KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7901krb5_sockaddr2port (
7902 krb5_context /*context*/,
7903 const struct sockaddr */*sa*/,
7904 int16_t */*port*/);
7905
7906KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
7907krb5_sockaddr_is_loopback (const struct sockaddr */*sa*/);
7908
7909/**
7910 * krb5_sockaddr_uninteresting returns TRUE for all .Fa sa that the
7911 * kerberos library thinks are uninteresting. One example are link
7912 * local addresses.
7913 *
7914 * @param sa pointer to struct sockaddr that might be interesting.
7915 *
7916 * @return Return a non zero for uninteresting addresses.
7917 *
7918 * @ingroup krb5_address
7919 */
7920
7921KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
7922krb5_sockaddr_uninteresting (const struct sockaddr */*sa*/);
7923
7924KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7925krb5_std_usage (
7926 int /*code*/,
7927 struct getargs */*args*/,
7928 int /*num_args*/);
7929
7930/**
7931 * Clear the flags on a storage buffer
7932 *
7933 * @param sp the storage buffer to clear the flags on
7934 * @param flags the flags to clear
7935 *
7936 * @ingroup krb5_storage
7937 */
7938
7939KRB5_LIB_FUNCTION void KRB5_LIB_CALL
7940krb5_storage_clear_flags (
7941 krb5_storage */*sp*/,
7942 krb5_flags /*flags*/);
7943
7944/**
7945 * Create a elastic (allocating) memory storage backend. Memory is
7946 * allocated on demand. Free returned krb5_storage with
7947 * krb5_storage_free().
7948 *
7949 * @return A krb5_storage on success, or NULL on out of memory error.
7950 *
7951 * @ingroup krb5_storage
7952 *
7953 * @sa krb5_storage_from_mem()
7954 * @sa krb5_storage_from_readonly_mem()
7955 * @sa krb5_storage_from_fd()
7956 * @sa krb5_storage_from_data()
7957 * @sa krb5_storage_from_socket()
7958 */
7959
7960KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
7961krb5_storage_emem (void);
7962
7963/**
7964 * Free a krb5 storage.
7965 *
7966 * @param sp the storage to free.
7967 *
7968 * @return An Kerberos 5 error code.
7969 *
7970 * @ingroup krb5_storage
7971 */
7972
7973KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
7974krb5_storage_free (krb5_storage */*sp*/);
7975
7976/**
7977 * Create a fixed size memory storage block
7978 *
7979 * @return A krb5_storage on success, or NULL on out of memory error.
7980 *
7981 * @ingroup krb5_storage
7982 *
7983 * @sa krb5_storage_mem()
7984 * @sa krb5_storage_from_mem()
7985 * @sa krb5_storage_from_readonly_mem()
7986 * @sa krb5_storage_from_fd()
7987 */
7988
7989KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
7990krb5_storage_from_data (krb5_data */*data*/);
7991
7992/**
7993 *
7994 *
7995 * @return A krb5_storage on success, or NULL on out of memory error.
7996 *
7997 * @ingroup krb5_storage
7998 *
7999 * @sa krb5_storage_emem()
8000 * @sa krb5_storage_from_mem()
8001 * @sa krb5_storage_from_readonly_mem()
8002 * @sa krb5_storage_from_data()
8003 * @sa krb5_storage_from_socket()
8004 */
8005
8006KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
8007krb5_storage_from_fd (int /*fd_in*/);
8008
8009/**
8010 * Create a fixed size memory storage block
8011 *
8012 * @return A krb5_storage on success, or NULL on out of memory error.
8013 *
8014 * @ingroup krb5_storage
8015 *
8016 * @sa krb5_storage_mem()
8017 * @sa krb5_storage_from_readonly_mem()
8018 * @sa krb5_storage_from_data()
8019 * @sa krb5_storage_from_fd()
8020 * @sa krb5_storage_from_socket()
8021 */
8022
8023KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
8024krb5_storage_from_mem (
8025 void */*buf*/,
8026 size_t /*len*/);
8027
8028/**
8029 * Create a fixed size memory storage block that is read only
8030 *
8031 * @return A krb5_storage on success, or NULL on out of memory error.
8032 *
8033 * @ingroup krb5_storage
8034 *
8035 * @sa krb5_storage_mem()
8036 * @sa krb5_storage_from_mem()
8037 * @sa krb5_storage_from_data()
8038 * @sa krb5_storage_from_fd()
8039 */
8040
8041KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
8042krb5_storage_from_readonly_mem (
8043 const void */*buf*/,
8044 size_t /*len*/);
8045
8046/**
8047 *
8048 *
8049 * @return A krb5_storage on success, or NULL on out of memory error.
8050 *
8051 * @ingroup krb5_storage
8052 *
8053 * @sa krb5_storage_emem()
8054 * @sa krb5_storage_from_mem()
8055 * @sa krb5_storage_from_readonly_mem()
8056 * @sa krb5_storage_from_data()
8057 * @sa krb5_storage_from_fd()
8058 */
8059
8060KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
8061krb5_storage_from_socket (krb5_socket_t /*sock_in*/);
8062
8063/**
8064 * Sync the storage buffer to its backing store. If there is no
8065 * backing store this function will return success.
8066 *
8067 * @param sp the storage buffer to sync
8068 *
8069 * @return A Kerberos 5 error code
8070 *
8071 * @ingroup krb5_storage
8072 */
8073
8074KRB5_LIB_FUNCTION int KRB5_LIB_CALL
8075krb5_storage_fsync (krb5_storage */*sp*/);
8076
8077/**
8078 * Return the current byteorder for the buffer. See krb5_storage_set_byteorder() for the list or byte order contants.
8079 *
8080 * @ingroup krb5_storage
8081 */
8082
8083KRB5_LIB_FUNCTION krb5_flags KRB5_LIB_CALL
8084krb5_storage_get_byteorder (krb5_storage */*sp*/);
8085
8086/**
8087 * Get the return code that will be used when end of storage is reached.
8088 *
8089 * @param sp the storage
8090 *
8091 * @return storage error code
8092 *
8093 * @ingroup krb5_storage
8094 */
8095
8096KRB5_LIB_FUNCTION int KRB5_LIB_CALL
8097krb5_storage_get_eof_code (krb5_storage */*sp*/);
8098
8099/**
8100 * Return true or false depending on if the storage flags is set or
8101 * not. NB testing for the flag 0 always return true.
8102 *
8103 * @param sp the storage buffer to check flags on
8104 * @param flags The flags to test for
8105 *
8106 * @return true if all the flags are set, false if not.
8107 *
8108 * @ingroup krb5_storage
8109 */
8110
8111KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
8112krb5_storage_is_flags (
8113 krb5_storage */*sp*/,
8114 krb5_flags /*flags*/);
8115
8116/**
8117 * Read to the storage buffer.
8118 *
8119 * @param sp the storage buffer to read from
8120 * @param buf the buffer to store the data in
8121 * @param len the length to read
8122 *
8123 * @return The length of data read (can be shorter then len), or negative on error.
8124 *
8125 * @ingroup krb5_storage
8126 */
8127
8128KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL
8129krb5_storage_read (
8130 krb5_storage */*sp*/,
8131 void */*buf*/,
8132 size_t /*len*/);
8133
8134/**
8135 * Seek to a new offset.
8136 *
8137 * @param sp the storage buffer to seek in.
8138 * @param offset the offset to seek
8139 * @param whence relateive searching, SEEK_CUR from the current
8140 * position, SEEK_END from the end, SEEK_SET absolute from the start.
8141 *
8142 * @return The new current offset
8143 *
8144 * @ingroup krb5_storage
8145 */
8146
8147KRB5_LIB_FUNCTION off_t KRB5_LIB_CALL
8148krb5_storage_seek (
8149 krb5_storage */*sp*/,
8150 off_t /*offset*/,
8151 int /*whence*/);
8152
8153/**
8154 * Set the new byte order of the storage buffer.
8155 *
8156 * @param sp the storage buffer to set the byte order for.
8157 * @param byteorder the new byte order.
8158 *
8159 * The byte order are: KRB5_STORAGE_BYTEORDER_BE,
8160 * KRB5_STORAGE_BYTEORDER_LE and KRB5_STORAGE_BYTEORDER_HOST.
8161 *
8162 * @ingroup krb5_storage
8163 */
8164
8165KRB5_LIB_FUNCTION void KRB5_LIB_CALL
8166krb5_storage_set_byteorder (
8167 krb5_storage */*sp*/,
8168 krb5_flags /*byteorder*/);
8169
8170/**
8171 * Set the return code that will be used when end of storage is reached.
8172 *
8173 * @param sp the storage
8174 * @param code the error code to return on end of storage
8175 *
8176 * @ingroup krb5_storage
8177 */
8178
8179KRB5_LIB_FUNCTION void KRB5_LIB_CALL
8180krb5_storage_set_eof_code (
8181 krb5_storage */*sp*/,
8182 int /*code*/);
8183
8184/**
8185 * Add the flags on a storage buffer by or-ing in the flags to the buffer.
8186 *
8187 * @param sp the storage buffer to set the flags on
8188 * @param flags the flags to set
8189 *
8190 * @ingroup krb5_storage
8191 */
8192
8193KRB5_LIB_FUNCTION void KRB5_LIB_CALL
8194krb5_storage_set_flags (
8195 krb5_storage */*sp*/,
8196 krb5_flags /*flags*/);
8197
8198/**
8199 * Set the max alloc value
8200 *
8201 * @param sp the storage buffer set the max allow for
8202 * @param size maximum size to allocate, use 0 to remove limit
8203 *
8204 * @ingroup krb5_storage
8205 */
8206
8207KRB5_LIB_FUNCTION void KRB5_LIB_CALL
8208krb5_storage_set_max_alloc (
8209 krb5_storage */*sp*/,
8210 size_t /*size*/);
8211
8212/**
8213 * Copy the contnent of storage
8214 *
8215 * @param sp the storage to copy to a data
8216 * @param data the copied data, free with krb5_data_free()
8217 *
8218 * @return 0 for success, or a Kerberos 5 error code on failure.
8219 *
8220 * @ingroup krb5_storage
8221 */
8222
8223KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8224krb5_storage_to_data (
8225 krb5_storage */*sp*/,
8226 krb5_data */*data*/);
8227
8228/**
8229 * Truncate the storage buffer in sp to offset.
8230 *
8231 * @param sp the storage buffer to truncate.
8232 * @param offset the offset to truncate too.
8233 *
8234 * @return An Kerberos 5 error code.
8235 *
8236 * @ingroup krb5_storage
8237 */
8238
8239KRB5_LIB_FUNCTION int KRB5_LIB_CALL
8240krb5_storage_truncate (
8241 krb5_storage */*sp*/,
8242 off_t /*offset*/);
8243
8244/**
8245 * Write to the storage buffer.
8246 *
8247 * @param sp the storage buffer to write to
8248 * @param buf the buffer to write to the storage buffer
8249 * @param len the length to write
8250 *
8251 * @return The length of data written (can be shorter then len), or negative on error.
8252 *
8253 * @ingroup krb5_storage
8254 */
8255
8256KRB5_LIB_FUNCTION krb5_ssize_t KRB5_LIB_CALL
8257krb5_storage_write (
8258 krb5_storage */*sp*/,
8259 const void */*buf*/,
8260 size_t /*len*/);
8261
8262/**
8263 * Write a address block to storage.
8264 *
8265 * @param sp the storage buffer to write to
8266 * @param p the address block to write.
8267 *
8268 * @return 0 on success, a Kerberos 5 error code on failure.
8269 *
8270 * @ingroup krb5_storage
8271 */
8272
8273KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8274krb5_store_address (
8275 krb5_storage */*sp*/,
8276 krb5_address /*p*/);
8277
8278/**
8279 * Write a addresses block to storage.
8280 *
8281 * @param sp the storage buffer to write to
8282 * @param p the addresses block to write.
8283 *
8284 * @return 0 on success, a Kerberos 5 error code on failure.
8285 *
8286 * @ingroup krb5_storage
8287 */
8288
8289KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8290krb5_store_addrs (
8291 krb5_storage */*sp*/,
8292 krb5_addresses /*p*/);
8293
8294/**
8295 * Write a auth data block to storage.
8296 *
8297 * @param sp the storage buffer to write to
8298 * @param auth the auth data block to write.
8299 *
8300 * @return 0 on success, a Kerberos 5 error code on failure.
8301 *
8302 * @ingroup krb5_storage
8303 */
8304
8305KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8306krb5_store_authdata (
8307 krb5_storage */*sp*/,
8308 krb5_authdata /*auth*/);
8309
8310/**
8311 * Write a credentials block to storage.
8312 *
8313 * @param sp the storage buffer to write to
8314 * @param creds the creds block to write.
8315 *
8316 * @return 0 on success, a Kerberos 5 error code on failure.
8317 *
8318 * @ingroup krb5_storage
8319 */
8320
8321KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8322krb5_store_creds (
8323 krb5_storage */*sp*/,
8324 krb5_creds */*creds*/);
8325
8326/**
8327 * Write a tagged credentials block to storage.
8328 *
8329 * @param sp the storage buffer to write to
8330 * @param creds the creds block to write.
8331 *
8332 * @return 0 on success, a Kerberos 5 error code on failure.
8333 *
8334 * @ingroup krb5_storage
8335 */
8336
8337KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8338krb5_store_creds_tag (
8339 krb5_storage */*sp*/,
8340 krb5_creds */*creds*/);
8341
8342/**
8343 * Store a data to the storage. The data is stored with an int32 as
8344 * lenght plus the data (not padded).
8345 *
8346 * @param sp the storage buffer to write to
8347 * @param data the buffer to store.
8348 *
8349 * @return 0 on success, a Kerberos 5 error code on failure.
8350 *
8351 * @ingroup krb5_storage
8352 */
8353
8354KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8355krb5_store_data (
8356 krb5_storage */*sp*/,
8357 krb5_data /*data*/);
8358
8359/**
8360 * Store a int16 to storage, byte order is controlled by the settings
8361 * on the storage, see krb5_storage_set_byteorder().
8362 *
8363 * @param sp the storage to write too
8364 * @param value the value to store
8365 *
8366 * @return 0 for success, or a Kerberos 5 error code on failure.
8367 *
8368 * @ingroup krb5_storage
8369 */
8370
8371KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8372krb5_store_int16 (
8373 krb5_storage */*sp*/,
8374 int16_t /*value*/);
8375
8376/**
8377 * Store a int32 to storage, byte order is controlled by the settings
8378 * on the storage, see krb5_storage_set_byteorder().
8379 *
8380 * @param sp the storage to write too
8381 * @param value the value to store
8382 *
8383 * @return 0 for success, or a Kerberos 5 error code on failure.
8384 *
8385 * @ingroup krb5_storage
8386 */
8387
8388KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8389krb5_store_int32 (
8390 krb5_storage */*sp*/,
8391 int32_t /*value*/);
8392
8393/**
8394 * Store a int64 to storage, byte order is controlled by the settings
8395 * on the storage, see krb5_storage_set_byteorder().
8396 *
8397 * @param sp the storage to write too
8398 * @param value the value to store
8399 *
8400 * @return 0 for success, or a Kerberos 5 error code on failure.
8401 *
8402 * @ingroup krb5_storage
8403 */
8404
8405KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8406krb5_store_int64 (
8407 krb5_storage */*sp*/,
8408 int64_t /*value*/);
8409
8410/**
8411 * Store a int8 to storage.
8412 *
8413 * @param sp the storage to write too
8414 * @param value the value to store
8415 *
8416 * @return 0 for success, or a Kerberos 5 error code on failure.
8417 *
8418 * @ingroup krb5_storage
8419 */
8420
8421KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8422krb5_store_int8 (
8423 krb5_storage */*sp*/,
8424 int8_t /*value*/);
8425
8426/**
8427 * Store a keyblock to the storage.
8428 *
8429 * @param sp the storage buffer to write to
8430 * @param p the keyblock to write
8431 *
8432 * @return 0 on success, a Kerberos 5 error code on failure.
8433 *
8434 * @ingroup krb5_storage
8435 */
8436
8437KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8438krb5_store_keyblock (
8439 krb5_storage */*sp*/,
8440 krb5_keyblock /*p*/);
8441
8442/**
8443 * Write a principal block to storage.
8444 *
8445 * @param sp the storage buffer to write to
8446 * @param p the principal block to write.
8447 *
8448 * @return 0 on success, a Kerberos 5 error code on failure.
8449 *
8450 * @ingroup krb5_storage
8451 */
8452
8453KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8454krb5_store_principal (
8455 krb5_storage */*sp*/,
8456 krb5_const_principal /*p*/);
8457
8458/**
8459 * Store a string to the buffer. The data is formated as an len:uint32
8460 * plus the string itself (not padded).
8461 *
8462 * @param sp the storage buffer to write to
8463 * @param s the string to store.
8464 *
8465 * @return 0 on success, a Kerberos 5 error code on failure.
8466 *
8467 * @ingroup krb5_storage
8468 */
8469
8470KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8471krb5_store_string (
8472 krb5_storage */*sp*/,
8473 const char */*s*/);
8474
8475KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8476krb5_store_stringnl (
8477 krb5_storage */*sp*/,
8478 const char */*s*/);
8479
8480/**
8481 * Store a zero terminated string to the buffer. The data is stored
8482 * one character at a time until a NUL is stored.
8483 *
8484 * @param sp the storage buffer to write to
8485 * @param s the string to store.
8486 *
8487 * @return 0 on success, a Kerberos 5 error code on failure.
8488 *
8489 * @ingroup krb5_storage
8490 */
8491
8492KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8493krb5_store_stringz (
8494 krb5_storage */*sp*/,
8495 const char */*s*/);
8496
8497/**
8498 * Write a times block to storage.
8499 *
8500 * @param sp the storage buffer to write to
8501 * @param times the times block to write.
8502 *
8503 * @return 0 on success, a Kerberos 5 error code on failure.
8504 *
8505 * @ingroup krb5_storage
8506 */
8507
8508KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8509krb5_store_times (
8510 krb5_storage */*sp*/,
8511 krb5_times /*times*/);
8512
8513/**
8514 * Store a uint16 to storage, byte order is controlled by the settings
8515 * on the storage, see krb5_storage_set_byteorder().
8516 *
8517 * @param sp the storage to write too
8518 * @param value the value to store
8519 *
8520 * @return 0 for success, or a Kerberos 5 error code on failure.
8521 *
8522 * @ingroup krb5_storage
8523 */
8524
8525KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8526krb5_store_uint16 (
8527 krb5_storage */*sp*/,
8528 uint16_t /*value*/);
8529
8530/**
8531 * Store a uint32 to storage, byte order is controlled by the settings
8532 * on the storage, see krb5_storage_set_byteorder().
8533 *
8534 * @param sp the storage to write too
8535 * @param value the value to store
8536 *
8537 * @return 0 for success, or a Kerberos 5 error code on failure.
8538 *
8539 * @ingroup krb5_storage
8540 */
8541
8542KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8543krb5_store_uint32 (
8544 krb5_storage */*sp*/,
8545 uint32_t /*value*/);
8546
8547/**
8548 * Store a uint64 to storage, byte order is controlled by the settings
8549 * on the storage, see krb5_storage_set_byteorder().
8550 *
8551 * @param sp the storage to write too
8552 * @param value the value to store
8553 *
8554 * @return 0 for success, or a Kerberos 5 error code on failure.
8555 *
8556 * @ingroup krb5_storage
8557 */
8558
8559KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8560krb5_store_uint64 (
8561 krb5_storage */*sp*/,
8562 uint64_t /*value*/);
8563
8564/**
8565 * Store a uint8 to storage.
8566 *
8567 * @param sp the storage to write too
8568 * @param value the value to store
8569 *
8570 * @return 0 for success, or a Kerberos 5 error code on failure.
8571 *
8572 * @ingroup krb5_storage
8573 */
8574
8575KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8576krb5_store_uint8 (
8577 krb5_storage */*sp*/,
8578 uint8_t /*value*/);
8579
8580KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8581krb5_string_to_deltat (
8582 const char */*string*/,
8583 krb5_deltat */*deltat*/);
8584
8585KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8586krb5_string_to_enctype (
8587 krb5_context /*context*/,
8588 const char */*string*/,
8589 krb5_enctype */*etype*/);
8590
8591KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8592krb5_string_to_key (
8593 krb5_context /*context*/,
8594 krb5_enctype /*enctype*/,
8595 const char */*password*/,
8596 krb5_principal /*principal*/,
8597 krb5_keyblock */*key*/);
8598
8599KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8600krb5_string_to_key_data (
8601 krb5_context /*context*/,
8602 krb5_enctype /*enctype*/,
8603 krb5_data /*password*/,
8604 krb5_principal /*principal*/,
8605 krb5_keyblock */*key*/);
8606
8607KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8608krb5_string_to_key_data_salt (
8609 krb5_context /*context*/,
8610 krb5_enctype /*enctype*/,
8611 krb5_data /*password*/,
8612 krb5_salt /*salt*/,
8613 krb5_keyblock */*key*/);
8614
8615KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8616krb5_string_to_key_data_salt_opaque (
8617 krb5_context /*context*/,
8618 krb5_enctype /*enctype*/,
8619 krb5_data /*password*/,
8620 krb5_salt /*salt*/,
8621 krb5_data /*opaque*/,
8622 krb5_keyblock */*key*/);
8623
8624KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8625krb5_string_to_key_derived (
8626 krb5_context /*context*/,
8627 const void */*str*/,
8628 size_t /*len*/,
8629 krb5_enctype /*etype*/,
8630 krb5_keyblock */*key*/);
8631
8632KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8633krb5_string_to_key_salt (
8634 krb5_context /*context*/,
8635 krb5_enctype /*enctype*/,
8636 const char */*password*/,
8637 krb5_salt /*salt*/,
8638 krb5_keyblock */*key*/);
8639
8640KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8641krb5_string_to_key_salt_opaque (
8642 krb5_context /*context*/,
8643 krb5_enctype /*enctype*/,
8644 const char */*password*/,
8645 krb5_salt /*salt*/,
8646 krb5_data /*opaque*/,
8647 krb5_keyblock */*key*/);
8648
8649/**
8650 * Deprecated: keytypes doesn't exists, they are really enctypes in
8651 * most cases, use krb5_string_to_enctype().
8652 *
8653 * @ingroup krb5_deprecated
8654 */
8655
8656KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8657krb5_string_to_keytype (
8658 krb5_context /*context*/,
8659 const char */*string*/,
8660 krb5_keytype */*keytype*/)
8661 KRB5_DEPRECATED_FUNCTION("Use X instead");
8662
8663KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8664krb5_string_to_salttype (
8665 krb5_context /*context*/,
8666 krb5_enctype /*etype*/,
8667 const char */*string*/,
8668 krb5_salttype */*salttype*/);
8669
8670/**
8671 * Extract the authorization data type of type from the ticket. Store
8672 * the field in data. This function is to use for kerberos
8673 * applications.
8674 *
8675 * @param context a Kerberos 5 context
8676 * @param ticket Kerberos ticket
8677 * @param type type to fetch
8678 * @param data returned data, free with krb5_data_free()
8679 *
8680 * @ingroup krb5
8681 */
8682
8683KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8684krb5_ticket_get_authorization_data_type (
8685 krb5_context /*context*/,
8686 krb5_ticket */*ticket*/,
8687 int /*type*/,
8688 krb5_data */*data*/);
8689
8690/**
8691 * Return client principal in ticket
8692 *
8693 * @param context a Kerberos 5 context
8694 * @param ticket ticket to copy
8695 * @param client client principal, free with krb5_free_principal()
8696 *
8697 * @return Returns 0 to indicate success. Otherwise an kerberos et
8698 * error code is returned, see krb5_get_error_message().
8699 *
8700 * @ingroup krb5
8701 */
8702
8703KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8704krb5_ticket_get_client (
8705 krb5_context /*context*/,
8706 const krb5_ticket */*ticket*/,
8707 krb5_principal */*client*/);
8708
8709/**
8710 * Return end time of ticket
8711 *
8712 * @param context a Kerberos 5 context
8713 * @param ticket ticket to copy
8714 *
8715 * @return end time of ticket
8716 *
8717 * @ingroup krb5
8718 */
8719
8720KRB5_LIB_FUNCTION time_t KRB5_LIB_CALL
8721krb5_ticket_get_endtime (
8722 krb5_context /*context*/,
8723 const krb5_ticket */*ticket*/);
8724
8725/**
8726 * Get the flags from the Kerberos ticket
8727 *
8728 * @param context Kerberos context
8729 * @param ticket Kerberos ticket
8730 *
8731 * @return ticket flags
8732 *
8733 * @ingroup krb5_ticket
8734 */
8735
8736KRB5_LIB_FUNCTION unsigned long KRB5_LIB_CALL
8737krb5_ticket_get_flags (
8738 krb5_context /*context*/,
8739 const krb5_ticket */*ticket*/);
8740
8741/**
8742 * Return server principal in ticket
8743 *
8744 * @param context a Kerberos 5 context
8745 * @param ticket ticket to copy
8746 * @param server server principal, free with krb5_free_principal()
8747 *
8748 * @return Returns 0 to indicate success. Otherwise an kerberos et
8749 * error code is returned, see krb5_get_error_message().
8750 *
8751 * @ingroup krb5
8752 */
8753
8754KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8755krb5_ticket_get_server (
8756 krb5_context /*context*/,
8757 const krb5_ticket */*ticket*/,
8758 krb5_principal */*server*/);
8759
8760/**
8761 * If the caller passes in a negative usec, its assumed to be
8762 * unknown and the function will use the current time usec.
8763 */
8764
8765KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8766krb5_timeofday (
8767 krb5_context /*context*/,
8768 krb5_timestamp */*timeret*/);
8769
8770/**
8771 * Unparse the Kerberos name into a string
8772 *
8773 * @param context Kerberos 5 context
8774 * @param principal principal to query
8775 * @param name resulting string, free with krb5_xfree()
8776 *
8777 * @return An krb5 error code, see krb5_get_error_message().
8778 *
8779 * @ingroup krb5_principal
8780 */
8781
8782KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8783krb5_unparse_name (
8784 krb5_context /*context*/,
8785 krb5_const_principal /*principal*/,
8786 char **/*name*/);
8787
8788/**
8789 * Unparse the principal name to a fixed buffer
8790 *
8791 * @param context A Kerberos context.
8792 * @param principal principal to unparse
8793 * @param name buffer to write name to
8794 * @param len length of buffer
8795 *
8796 * @return An krb5 error code, see krb5_get_error_message().
8797 *
8798 * @ingroup krb5_principal
8799 */
8800
8801KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8802krb5_unparse_name_fixed (
8803 krb5_context /*context*/,
8804 krb5_const_principal /*principal*/,
8805 char */*name*/,
8806 size_t /*len*/);
8807
8808/**
8809 * Unparse the principal name with unparse flags to a fixed buffer.
8810 *
8811 * @param context A Kerberos context.
8812 * @param principal principal to unparse
8813 * @param flags unparse flags
8814 * @param name buffer to write name to
8815 * @param len length of buffer
8816 *
8817 * @return An krb5 error code, see krb5_get_error_message().
8818 *
8819 * @ingroup krb5_principal
8820 */
8821
8822KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8823krb5_unparse_name_fixed_flags (
8824 krb5_context /*context*/,
8825 krb5_const_principal /*principal*/,
8826 int /*flags*/,
8827 char */*name*/,
8828 size_t /*len*/);
8829
8830/**
8831 * Unparse the principal name to a fixed buffer. The realm is skipped
8832 * if its a default realm.
8833 *
8834 * @param context A Kerberos context.
8835 * @param principal principal to unparse
8836 * @param name buffer to write name to
8837 * @param len length of buffer
8838 *
8839 * @return An krb5 error code, see krb5_get_error_message().
8840 *
8841 * @ingroup krb5_principal
8842 */
8843
8844KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8845krb5_unparse_name_fixed_short (
8846 krb5_context /*context*/,
8847 krb5_const_principal /*principal*/,
8848 char */*name*/,
8849 size_t /*len*/);
8850
8851/**
8852 * Unparse the Kerberos name into a string
8853 *
8854 * @param context Kerberos 5 context
8855 * @param principal principal to query
8856 * @param flags flag to determine the behavior
8857 * @param name resulting string, free with krb5_xfree()
8858 *
8859 * @return An krb5 error code, see krb5_get_error_message().
8860 *
8861 * @ingroup krb5_principal
8862 */
8863
8864KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8865krb5_unparse_name_flags (
8866 krb5_context /*context*/,
8867 krb5_const_principal /*principal*/,
8868 int /*flags*/,
8869 char **/*name*/);
8870
8871/**
8872 * Unparse the principal name to a allocated buffer. The realm is
8873 * skipped if its a default realm.
8874 *
8875 * @param context A Kerberos context.
8876 * @param principal principal to unparse
8877 * @param name returned buffer, free with krb5_xfree()
8878 *
8879 * @return An krb5 error code, see krb5_get_error_message().
8880 *
8881 * @ingroup krb5_principal
8882 */
8883
8884KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8885krb5_unparse_name_short (
8886 krb5_context /*context*/,
8887 krb5_const_principal /*principal*/,
8888 char **/*name*/);
8889
8890KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8891krb5_us_timeofday (
8892 krb5_context /*context*/,
8893 krb5_timestamp */*sec*/,
8894 int32_t */*usec*/);
8895
8896/**
8897 * Log a warning to the log, default stderr, include bthe error from
8898 * the last failure and then abort.
8899 *
8900 * @param context A Kerberos 5 context
8901 * @param code error code of the last error
8902 * @param fmt message to print
8903 * @param ap arguments
8904 *
8905 * @ingroup krb5_error
8906 */
8907
8908KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8909krb5_vabort (
8910 krb5_context /*context*/,
8911 krb5_error_code /*code*/,
8912 const char */*fmt*/,
8913 va_list /*ap*/)
8914 __attribute__ ((__noreturn__, __format__ (__printf__, 3, 0)));
8915
8916KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8917krb5_vabortx (
8918 krb5_context /*context*/,
8919 const char */*fmt*/,
8920 va_list /*ap*/)
8921 __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
8922
8923KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8924krb5_verify_ap_req (
8925 krb5_context /*context*/,
8926 krb5_auth_context */*auth_context*/,
8927 krb5_ap_req */*ap_req*/,
8928 krb5_const_principal /*server*/,
8929 krb5_keyblock */*keyblock*/,
8930 krb5_flags /*flags*/,
8931 krb5_flags */*ap_req_options*/,
8932 krb5_ticket **/*ticket*/);
8933
8934KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8935krb5_verify_ap_req2 (
8936 krb5_context /*context*/,
8937 krb5_auth_context */*auth_context*/,
8938 krb5_ap_req */*ap_req*/,
8939 krb5_const_principal /*server*/,
8940 krb5_keyblock */*keyblock*/,
8941 krb5_flags /*flags*/,
8942 krb5_flags */*ap_req_options*/,
8943 krb5_ticket **/*ticket*/,
8944 krb5_key_usage /*usage*/);
8945
8946KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8947krb5_verify_authenticator_checksum (
8948 krb5_context /*context*/,
8949 krb5_auth_context /*ac*/,
8950 void */*data*/,
8951 size_t /*len*/);
8952
8953KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8954krb5_verify_checksum (
8955 krb5_context /*context*/,
8956 krb5_crypto /*crypto*/,
8957 krb5_key_usage /*usage*/,
8958 void */*data*/,
8959 size_t /*len*/,
8960 Checksum */*cksum*/);
8961
8962/**
8963 * Verify a Kerberos message checksum.
8964 *
8965 * @param context Kerberos context
8966 * @param crypto Kerberos crypto context
8967 * @param usage Key usage for this buffer
8968 * @param data array of buffers to process
8969 * @param num_data length of array
8970 * @param type return checksum type if not NULL
8971 *
8972 * @return Return an error code or 0.
8973 * @ingroup krb5_crypto
8974 */
8975
8976KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8977krb5_verify_checksum_iov (
8978 krb5_context /*context*/,
8979 krb5_crypto /*crypto*/,
8980 unsigned /*usage*/,
8981 krb5_crypto_iov */*data*/,
8982 unsigned int /*num_data*/,
8983 krb5_cksumtype */*type*/);
8984
8985KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
8986krb5_verify_init_creds (
8987 krb5_context /*context*/,
8988 krb5_creds */*creds*/,
8989 krb5_principal /*ap_req_server*/,
8990 krb5_keytab /*ap_req_keytab*/,
8991 krb5_ccache */*ccache*/,
8992 krb5_verify_init_creds_opt */*options*/);
8993
8994KRB5_LIB_FUNCTION void KRB5_LIB_CALL
8995krb5_verify_init_creds_opt_init (krb5_verify_init_creds_opt */*options*/);
8996
8997KRB5_LIB_FUNCTION void KRB5_LIB_CALL
8998krb5_verify_init_creds_opt_set_ap_req_nofail (
8999 krb5_verify_init_creds_opt */*options*/,
9000 int /*ap_req_nofail*/);
9001
9002KRB5_LIB_FUNCTION int KRB5_LIB_CALL
9003krb5_verify_opt_alloc (
9004 krb5_context /*context*/,
9005 krb5_verify_opt **/*opt*/);
9006
9007KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9008krb5_verify_opt_free (krb5_verify_opt */*opt*/);
9009
9010KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9011krb5_verify_opt_init (krb5_verify_opt */*opt*/);
9012
9013KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9014krb5_verify_opt_set_ccache (
9015 krb5_verify_opt */*opt*/,
9016 krb5_ccache /*ccache*/);
9017
9018KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9019krb5_verify_opt_set_flags (
9020 krb5_verify_opt */*opt*/,
9021 unsigned int /*flags*/);
9022
9023KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9024krb5_verify_opt_set_keytab (
9025 krb5_verify_opt */*opt*/,
9026 krb5_keytab /*keytab*/);
9027
9028KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9029krb5_verify_opt_set_secure (
9030 krb5_verify_opt */*opt*/,
9031 krb5_boolean /*secure*/);
9032
9033KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9034krb5_verify_opt_set_service (
9035 krb5_verify_opt */*opt*/,
9036 const char */*service*/);
9037
9038KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9039krb5_verify_user (
9040 krb5_context /*context*/,
9041 krb5_principal /*principal*/,
9042 krb5_ccache /*ccache*/,
9043 const char */*password*/,
9044 krb5_boolean /*secure*/,
9045 const char */*service*/);
9046
9047KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9048krb5_verify_user_lrealm (
9049 krb5_context /*context*/,
9050 krb5_principal /*principal*/,
9051 krb5_ccache /*ccache*/,
9052 const char */*password*/,
9053 krb5_boolean /*secure*/,
9054 const char */*service*/);
9055
9056KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9057krb5_verify_user_opt (
9058 krb5_context /*context*/,
9059 krb5_principal /*principal*/,
9060 const char */*password*/,
9061 krb5_verify_opt */*opt*/);
9062
9063/**
9064 * Log a warning to the log, default stderr, include bthe error from
9065 * the last failure and then exit.
9066 *
9067 * @param context A Kerberos 5 context
9068 * @param eval the exit code to exit with
9069 * @param code error code of the last error
9070 * @param fmt message to print
9071 * @param ap arguments
9072 *
9073 * @ingroup krb5_error
9074 */
9075
9076KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9077krb5_verr (
9078 krb5_context /*context*/,
9079 int /*eval*/,
9080 krb5_error_code /*code*/,
9081 const char */*fmt*/,
9082 va_list /*ap*/)
9083 __attribute__ ((__noreturn__, __format__ (__printf__, 4, 0)));
9084
9085/**
9086 * Log a warning to the log, default stderr, and then exit.
9087 *
9088 * @param context A Kerberos 5 context
9089 * @param eval the exit code to exit with
9090 * @param fmt message to print
9091 * @param ap arguments
9092 *
9093 * @ingroup krb5_error
9094 */
9095
9096KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9097krb5_verrx (
9098 krb5_context /*context*/,
9099 int /*eval*/,
9100 const char */*fmt*/,
9101 va_list /*ap*/)
9102 __attribute__ ((__noreturn__, __format__ (__printf__, 3, 0)));
9103
9104KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9105krb5_vlog (
9106 krb5_context /*context*/,
9107 krb5_log_facility */*fac*/,
9108 int /*level*/,
9109 const char */*fmt*/,
9110 va_list /*ap*/)
9111 __attribute__ ((__format__ (__printf__, 4, 0)));
9112
9113KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9114krb5_vlog_msg (
9115 krb5_context /*context*/,
9116 krb5_log_facility */*fac*/,
9117 char **/*reply*/,
9118 int /*level*/,
9119 const char */*fmt*/,
9120 va_list /*ap*/)
9121 __attribute__ ((__format__ (__printf__, 5, 0)));
9122
9123/**
9124 * Prepend the contexts's full error string for a specific error code.
9125 *
9126 * The if context is NULL, no error string is stored.
9127 *
9128 * @param context Kerberos 5 context
9129 * @param ret The error code
9130 * @param fmt Error string for the error code
9131 * @param args printf(3) style parameters.
9132 *
9133 * @ingroup krb5_error
9134 */
9135
9136KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9137krb5_vprepend_error_message (
9138 krb5_context /*context*/,
9139 krb5_error_code /*ret*/,
9140 const char */*fmt*/,
9141 va_list /*args*/)
9142 __attribute__ ((__format__ (__printf__, 3, 0)));
9143
9144/**
9145 * Set the context full error string for a specific error code.
9146 *
9147 * The if context is NULL, no error string is stored.
9148 *
9149 * @param context Kerberos 5 context
9150 * @param ret The error code
9151 * @param fmt Error string for the error code
9152 * @param args printf(3) style parameters.
9153 *
9154 * @ingroup krb5_error
9155 */
9156
9157KRB5_LIB_FUNCTION void KRB5_LIB_CALL
9158krb5_vset_error_message (
9159 krb5_context /*context*/,
9160 krb5_error_code /*ret*/,
9161 const char */*fmt*/,
9162 va_list /*args*/)
9163 __attribute__ ((__format__ (__printf__, 3, 0)));
9164
9165/**
9166 * Set the error message returned by krb5_get_error_string(),
9167 * deprecated, use krb5_set_error_message().
9168 *
9169 * Deprecated: use krb5_vset_error_message()
9170 *
9171 * @param context Kerberos context
9172 * @param fmt error message to free
9173 * @param args variable argument list vector
9174 *
9175 * @return Return an error code or 0.
9176 *
9177 * @ingroup krb5_deprecated
9178 */
9179
9180KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9181krb5_vset_error_string (
9182 krb5_context /*context*/,
9183 const char */*fmt*/,
9184 va_list /*args*/)
9185 __attribute__ ((__format__ (__printf__, 2, 0))) KRB5_DEPRECATED_FUNCTION("Use X instead");
9186
9187/**
9188 * Log a warning to the log, default stderr, include the error from
9189 * the last failure.
9190 *
9191 * @param context A Kerberos 5 context.
9192 * @param code error code of the last error
9193 * @param fmt message to print
9194 * @param ap arguments
9195 *
9196 * @ingroup krb5_error
9197 */
9198
9199KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9200krb5_vwarn (
9201 krb5_context /*context*/,
9202 krb5_error_code /*code*/,
9203 const char */*fmt*/,
9204 va_list /*ap*/)
9205 __attribute__ ((__format__ (__printf__, 3, 0)));
9206
9207/**
9208 * Log a warning to the log, default stderr.
9209 *
9210 * @param context A Kerberos 5 context.
9211 * @param fmt message to print
9212 * @param ap arguments
9213 *
9214 * @ingroup krb5_error
9215 */
9216
9217KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9218krb5_vwarnx (
9219 krb5_context /*context*/,
9220 const char */*fmt*/,
9221 va_list /*ap*/)
9222 __attribute__ ((__format__ (__printf__, 2, 0)));
9223
9224/**
9225 * Log a warning to the log, default stderr, include the error from
9226 * the last failure.
9227 *
9228 * @param context A Kerberos 5 context.
9229 * @param code error code of the last error
9230 * @param fmt message to print
9231 *
9232 * @ingroup krb5_error
9233 */
9234
9235KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9236krb5_warn (
9237 krb5_context /*context*/,
9238 krb5_error_code /*code*/,
9239 const char */*fmt*/,
9240 ...)
9241 __attribute__ ((__format__ (__printf__, 3, 4)));
9242
9243/**
9244 * Log a warning to the log, default stderr.
9245 *
9246 * @param context A Kerberos 5 context.
9247 * @param fmt message to print
9248 *
9249 * @ingroup krb5_error
9250 */
9251
9252KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9253krb5_warnx (
9254 krb5_context /*context*/,
9255 const char */*fmt*/,
9256 ...)
9257 __attribute__ ((__format__ (__printf__, 2, 3)));
9258
9259KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9260krb5_write_message (
9261 krb5_context /*context*/,
9262 krb5_pointer /*p_fd*/,
9263 krb5_data */*data*/);
9264
9265KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9266krb5_write_priv_message (
9267 krb5_context /*context*/,
9268 krb5_auth_context /*ac*/,
9269 krb5_pointer /*p_fd*/,
9270 krb5_data */*data*/);
9271
9272KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9273krb5_write_safe_message (
9274 krb5_context /*context*/,
9275 krb5_auth_context /*ac*/,
9276 krb5_pointer /*p_fd*/,
9277 krb5_data */*data*/);
9278
9279KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
9280krb5_xfree (void */*ptr*/);
9281
9282#ifdef __cplusplus
9283}
9284#endif
9285
9286#undef KRB5_DEPRECATED_FUNCTION
9287
9288#endif /* DOXY */
9289#endif /* __krb5_protos_h__ */
9290