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