krb5_kt_ops krb5_keytab_entry krb5_kt_cursor krb5_kt_add_entry krb5_kt_close krb5_kt_compare krb5_kt_copy_entry_contents krb5_kt_default krb5_kt_default_name krb5_kt_end_seq_get krb5_kt_free_entry krb5_kt_get_entry krb5_kt_get_name krb5_kt_get_type krb5_kt_next_entry krb5_kt_read_service_key krb5_kt_register krb5_kt_remove_entry krb5_kt_resolve krb5_kt_start_seq_get - manage keytab (key storage) files
Kerberos 5 Library (libkrb5, -lkrb5)
krb5_error_code Fo krb5_kt_add_entry Fa krb5_context context Fa krb5_keytab id Fa krb5_keytab_entry *entry Fc Ft krb5_error_code Fo krb5_kt_close Fa krb5_context context Fa krb5_keytab id Fc Ft krb5_boolean Fo krb5_kt_compare Fa krb5_context context Fa krb5_keytab_entry *entry Fa krb5_const_principal principal Fa krb5_kvno vno Fa krb5_enctype enctype Fc Ft krb5_error_code Fo krb5_kt_copy_entry_contents Fa krb5_context context Fa const krb5_keytab_entry *in Fa krb5_keytab_entry *out Fc Ft krb5_error_code Fo krb5_kt_default Fa krb5_context context Fa krb5_keytab *id Fc Ft krb5_error_code Fo krb5_kt_default_name Fa krb5_context context Fa char *name Fa size_t namesize Fc Ft krb5_error_code Fo krb5_kt_end_seq_get Fa krb5_context context Fa krb5_keytab id Fa krb5_kt_cursor *cursor Fc Ft krb5_error_code Fo krb5_kt_free_entry Fa krb5_context context Fa krb5_keytab_entry *entry Fc Ft krb5_error_code Fo krb5_kt_get_entry Fa krb5_context context Fa krb5_keytab id Fa krb5_const_principal principal Fa krb5_kvno kvno Fa krb5_enctype enctype Fa krb5_keytab_entry *entry Fc Ft krb5_error_code Fo krb5_kt_get_name Fa krb5_context context Fa krb5_keytab keytab Fa char *name Fa size_t namesize Fc Ft krb5_error_code Fo krb5_kt_get_type Fa krb5_context context Fa krb5_keytab keytab Fa char *prefix Fa size_t prefixsize Fc Ft krb5_error_code Fo krb5_kt_next_entry Fa krb5_context context Fa krb5_keytab id Fa krb5_keytab_entry *entry Fa krb5_kt_cursor *cursor Fc Ft krb5_error_code Fo krb5_kt_read_service_key Fa krb5_context context Fa krb5_pointer keyprocarg Fa krb5_principal principal Fa krb5_kvno vno Fa krb5_enctype enctype Fa krb5_keyblock **key Fc Ft krb5_error_code Fo krb5_kt_register Fa krb5_context context Fa const krb5_kt_ops *ops Fc Ft krb5_error_code Fo krb5_kt_remove_entry Fa krb5_context context Fa krb5_keytab id Fa krb5_keytab_entry *entry Fc Ft krb5_error_code Fo krb5_kt_resolve Fa krb5_context context Fa const char *name Fa krb5_keytab *id Fc Ft krb5_error_code Fo krb5_kt_start_seq_get Fa krb5_context context Fa krb5_keytab id Fa krb5_kt_cursor *cursor Fc
When a keytab-name is resolved, the type is matched with an internal list of keytab types. If there is no matching keytab type, the default keytab is used. The current default type is file The default value can be changed in the configuration file /etc/krb5.conf by setting the variable [defaults]default_keytab_name
The keytab types that are implemented in Heimdal are:
krb5_keytab_entry
holds all data for an entry in a keytab file, like principal name,
key-type, key, key-version number, etc.
krb5_kt_cursor
holds the current position that is used when iterating through a
keytab entry with
krb5_kt_start_seq_get (,);
krb5_kt_next_entry (,);
and
krb5_kt_end_seq_get (.);
krb5_kt_ops contains the different operations that can be done to a keytab. This structure is normally only used when doing a new keytab-type implementation.
krb5_kt_resolve ();
is the equivalent of an
open(2)
on keytab. Resolve the keytab name in
Fa name
into a keytab in
Fa id .
Returns 0 or an error. The opposite of
krb5_kt_resolve ();
is
krb5_kt_close (.);
krb5_kt_close ();
frees all resources allocated to the keytab.
krb5_kt_default ();
sets the argument
Fa id
to the default keytab.
Returns 0 or an error.
krb5_kt_default_name ();
copy the name of the default keytab into
Fa name .
Return 0 or KRB5_CONFIG_NOTENUFSPACE if
Fa namesize
is too short.
krb5_kt_add_entry ();
Add a new
Fa entry
to the keytab
Fa id .
KRB5_KT_NOWRITE
is returned if the keytab is a readonly keytab.
krb5_kt_compare ();
compares the passed in
Fa entry
against
Fa principal ,
Fa vno ,
and
Fa enctype .
Any of
Fa principal ,
Fa vno
or
Fa enctype
might be 0 which acts as a wildcard. Return TRUE if they compare the
same, FALSE otherwise.
krb5_kt_copy_entry_contents ();
copies the contents of
Fa in
into
Fa out .
Returns 0 or an error.
krb5_kt_get_name ();
retrieves the name of the keytab
Fa keytab
into
Fa name ,
Fa namesize .
Returns 0 or an error.
krb5_kt_get_type ();
retrieves the type of the keytab
Fa keytab
and store the prefix/name for type of the keytab into
Fa prefix ,
Fa prefixsize .
The prefix will have the maximum length of
KRB5_KT_PREFIX_MAX_LEN
(including terminating
NUL )
Returns 0 or an error.
krb5_kt_free_entry ();
frees the contents of
Fa entry .
krb5_kt_start_seq_get ();
sets
Fa cursor
to point at the beginning of
Fa id .
Returns 0 or an error.
krb5_kt_next_entry ();
gets the next entry from
Fa id
pointed to by
Fa cursor
and advance the
Fa cursor .
Returns 0 or an error.
krb5_kt_end_seq_get ();
releases all resources associated with
Fa cursor .
krb5_kt_get_entry ();
retrieves the keytab entry for
Fa principal ,
Fa kvno,
Fa enctype
into
Fa entry
from the keytab
Fa id .
Returns 0 or an error.
krb5_kt_read_service_key ();
reads the key identified by
( Fa principal
Fa vno ,
Fa enctype )
from the keytab in
Fa keyprocarg
(the default if == NULL) into
Fa *key .
Returns 0 or an error.
krb5_kt_remove_entry ();
removes the entry
Fa entry
from the keytab
Fa id .
Returns 0 or an error.
krb5_kt_register ();
registers a new keytab type
Fa ops .
Returns 0 or an error.
int main (int argc, char **argv) { krb5_context context; krb5_keytab keytab; krb5_kt_cursor cursor; krb5_keytab_entry entry; krb5_error_code ret; char *principal; if (krb5_init_context (&context) != 0) errx(1, "krb5_context"); ret = krb5_kt_default (context, &keytab); if (ret) krb5_err(context, 1, ret, "krb5_kt_default"); ret = krb5_kt_start_seq_get(context, keytab, &cursor); if (ret) krb5_err(context, 1, ret, "krb5_kt_start_seq_get"); while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){ krb5_unparse_name_short(context, entry.principal, &principal); printf("principal: %s\n", principal); free(principal); krb5_kt_free_entry(context, &entry); } ret = krb5_kt_end_seq_get(context, keytab, &cursor); if (ret) krb5_err(context, 1, ret, "krb5_kt_end_seq_get"); krb5_free_context(context); return 0; }
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |