KRB5_CONTEXT(3)

πŸ’– KRB5_CONTEXT(3) β€” bestie edition πŸ’–

okay so this is the KRB5_CONTEXT(3) page, it lives in the Library Functions Manual, and it's literally the whole ✨lore✨ of how you make, poke at, and delete krb5_context structures. come sit with me 🫢


🌸 NAME 🌸

krb5_add_et_list, krb5_add_extra_addresses, krb5_add_ignore_addresses, krb5_context, krb5_free_config_files, krb5_free_context, krb5_get_default_config_files, krb5_get_dns_canonize_hostname, krb5_get_extra_addresses, krb5_get_fcache_version, krb5_get_ignore_addresses, krb5_get_kdc_sec_offset, krb5_get_max_time_skew, krb5_get_use_admin_kdc krb5_init_context, krb5_init_ets, krb5_prepend_config_files, krb5_prepend_config_files_default, krb5_set_config_files, krb5_set_dns_canonize_hostname, krb5_set_extra_addresses, krb5_set_fcache_version, krb5_set_ignore_addresses, krb5_set_max_time_skew, krb5_set_use_admin_kdc

β€” and what do they all do? create, modify and delete krb5_context structures. that's the whole vibe πŸ’…


πŸ“š LIBRARY πŸ“š

Kerberos 5 Library (libkrb5, -lkrb5)


✨ SYNOPSIS ✨

#include <krb5.h>

struct krb5_context;

krb5_error_code
krb5_init_context(krb5_context *context);

void
krb5_free_context(krb5_context context);

void
krb5_init_ets(krb5_context context);

krb5_error_code
krb5_add_et_list(krb5_context context, void (*func)(struct et_list **));

krb5_error_code
krb5_add_extra_addresses(krb5_context context,
    krb5_addresses *addresses);

krb5_error_code
krb5_set_extra_addresses(krb5_context context,
    const krb5_addresses *addresses);

krb5_error_code
krb5_get_extra_addresses(krb5_context context,
    krb5_addresses *addresses);

krb5_error_code
krb5_add_ignore_addresses(krb5_context context,
    krb5_addresses *addresses);

krb5_error_code
krb5_set_ignore_addresses(krb5_context context,
    const krb5_addresses *addresses);

krb5_error_code
krb5_get_ignore_addresses(krb5_context context,
    krb5_addresses *addresses);

krb5_error_code
krb5_set_fcache_version(krb5_context context, int version);

krb5_error_code
krb5_get_fcache_version(krb5_context context, int *version);

void
krb5_set_dns_canonize_hostname(krb5_context context, krb5_boolean flag);

krb5_boolean
krb5_get_dns_canonize_hostname(krb5_context context);

krb5_error_code
krb5_get_kdc_sec_offset(krb5_context context, int32_t *sec,
    int32_t *usec);

krb5_error_code
krb5_set_config_files(krb5_context context, char **filenames);

krb5_error_code
krb5_prepend_config_files(const char *filelist, char **pq,
    char ***ret_pp);

krb5_error_code
krb5_prepend_config_files_default(const char *filelist,
    char ***pfilenames);

krb5_error_code
krb5_get_default_config_files(char ***pfilenames);

void
krb5_free_config_files(char **filenames);

void
krb5_set_use_admin_kdc(krb5_context context, krb5_boolean flag);

krb5_boolean
krb5_get_use_admin_kdc(krb5_context context);

time_t
krb5_get_max_time_skew(krb5_context context);

krb5_error_code
krb5_set_max_time_skew(krb5_context context, time_t time);

πŸ’œ DESCRIPTION πŸ’œ

okay so the main character here is krb5_init_context(). it initializes the context structure and reads the configuration file /etc/krb5.conf. that's it, that's the job 🌟

and bestie, when you're done with it, you have to free that structure by calling krb5_free_context(). no leaving it lying around, that's not the vibe πŸ™ˆ

krb5_init_context() returns 0 to indicate success. otherwise an errno code comes back at you 😭. a failure means either that something bad happened during initialization (typically [ENOMEM]) or that Kerberos should not be used [ENXIO].

krb5_init_ets() adds all com_err(3) libs to context. this is done by krb5_init_context(). so like, it already happened, but ok go off πŸ‘‘

krb5_add_et_list() adds a com_err(3) error-code handler func to the specified context. and listen, the error handler must be generated by the re-entrant version of the compile_et(1) program. no shortcuts, iykyk.

krb5_add_extra_addresses() add a list of addresses that should be added when requesting tickets.

krb5_add_ignore_addresses() add a list of addresses that should be ignored when requesting tickets.

krb5_get_extra_addresses() get the list of addresses that should be added when requesting tickets.

krb5_get_ignore_addresses() get the list of addresses that should be ignored when requesting tickets.

krb5_set_ignore_addresses() set the list of addresses that should be ignored when requesting tickets.

krb5_set_extra_addresses() set the list of addresses that should be added when requesting tickets.

krb5_set_fcache_version() sets the version of file credentials caches that should be used. πŸ“¦

krb5_get_fcache_version() gets the version of file credentials caches that should be used.

krb5_set_dns_canonize_hostname() sets if the context is configured to canonicalize hostnames using DNS. 🌐

krb5_get_dns_canonize_hostname() returns if the context is configured to canonicalize hostnames using DNS.

krb5_get_kdc_sec_offset() returns the offset between the localtime and the KDC's time. and here's the cute part: sec and usec are both optional arguments and NULL can be passed in. lowkey flexible πŸ’…

krb5_set_config_files() set the list of configuration files to use and re-initialize the configuration from the files.

krb5_prepend_config_files() parse the filelist and prepend the result to the already existing list pq. the result is returned in ret_pp and should be freed with krb5_free_config_files(). don't forget or it's giving memory leak πŸ’€

krb5_prepend_config_files_default() parse the filelist and append that to the default list of configuration files.

krb5_get_default_config_files() get a list of default configuration files.

krb5_free_config_files() free a list of configuration files returned by krb5_get_default_config_files(), krb5_prepend_config_files_default(), or krb5_prepend_config_files(). it's the cleanup bestie, she does all three 🧚

krb5_set_use_admin_kdc() sets if all KDC requests should go admin KDC.

krb5_get_use_admin_kdc() gets if all KDC requests should go admin KDC.

krb5_get_max_time_skew() and krb5_set_max_time_skew() get and sets the maximum allowed time skew between client and server. ⏰


πŸ¦‹ SEE ALSO πŸ¦‹

errno(2), krb5(3), krb5_config(3), krb5_context(3), kerberos(8)


and that's the whole page bestie, you ate it πŸ’…βœ¨

this one came from HEIMDAL and it's dated December 8, 2004 β€” vintage, iconic, no cap πŸŽ€πŸ‘‘

πŸ“¦ where this page comes from