Restructure Makefiles to accomodate multiple archs
[dragonfly.git] / crypto / heimdal-0.6.3 / lib / krb5 / krb5_keytab.cat3
1
2 KRB5_KEYTAB(3)             UNIX Programmer's Manual             KRB5_KEYTAB(3)
3
4 N\bNA\bAM\bME\bE
5      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_o\bop\bps\bs, k\bkr\brb\bb5\b5_\b_k\bke\bey\byt\bta\bab\bb_\b_e\ben\bnt\btr\bry\by, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bcu\bur\brs\bso\bor\br, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_a\bad\bdd\bd_\b_e\ben\bnt\btr\bry\by,
6      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bcl\blo\bos\bse\be, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bco\bom\bmp\bpa\bar\bre\be, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bco\bop\bpy\by_\b_e\ben\bnt\btr\bry\by_\b_c\bco\bon\bnt\bte\ben\bnt\bts\bs,
7      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt_\b_n\bna\bam\bme\be, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_e\ben\bnd\bd_\b_s\bse\beq\bq_\b_g\bge\bet\bt,
8      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_f\bfr\bre\bee\be_\b_e\ben\bnt\btr\bry\by, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_e\ben\bnt\btr\bry\by, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_n\bna\bam\bme\be,
9      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_t\bty\byp\bpe\be, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_n\bne\bex\bxt\bt_\b_e\ben\bnt\btr\bry\by, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bea\bad\bd_\b_s\bse\ber\brv\bvi\bic\bce\be_\b_k\bke\bey\by,
10      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\beg\bgi\bis\bst\bte\ber\br, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bem\bmo\bov\bve\be_\b_e\ben\bnt\btr\bry\by, k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bes\bso\bol\blv\bve\be,
11      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_s\bst\bta\bar\brt\bt_\b_s\bse\beq\bq_\b_g\bge\bet\bt - manage keytab (key storage) files
12
13 L\bLI\bIB\bBR\bRA\bAR\bRY\bY
14      Kerberos 5 Library (libkrb5, -lkrb5)
15
16 S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
17      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
18      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_a\bad\bdd\bd_\b_e\ben\bnt\btr\bry\by(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd,
19              _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\be_\bn_\bt_\br_\by)
20
21      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
22      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bcl\blo\bos\bse\be(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd)
23
24      _\bk_\br_\bb_\b5_\b__\bb_\bo_\bo_\bl_\be_\ba_\bn
25      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bco\bom\bmp\bpa\bar\bre\be(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\be_\bn_\bt_\br_\by,
26              _\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bs_\bt_\b__\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl _\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bk_\br_\bb_\b5_\b__\bk_\bv_\bn_\bo _\bv_\bn_\bo,
27              _\bk_\br_\bb_\b5_\b__\be_\bn_\bc_\bt_\by_\bp_\be _\be_\bn_\bc_\bt_\by_\bp_\be)
28
29      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
30      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bco\bop\bpy\by_\b_e\ben\bnt\btr\bry\by_\b_c\bco\bon\bnt\bte\ben\bnt\bts\bs(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt,
31              _\bc_\bo_\bn_\bs_\bt _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\bi_\bn, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\bo_\bu_\bt)
32
33      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
34      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\b*_\bi_\bd)
35
36      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
37      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt_\b_n\bna\bam\bme\be(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bc_\bh_\ba_\br _\b*_\bn_\ba_\bm_\be, _\bs_\bi_\bz_\be_\b__\bt _\bn_\ba_\bm_\be_\bs_\bi_\bz_\be)
38
39      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
40      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_e\ben\bnd\bd_\b_s\bse\beq\bq_\b_g\bge\bet\bt(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd,
41              _\bk_\br_\bb_\b5_\b__\bk_\bt_\b__\bc_\bu_\br_\bs_\bo_\br _\b*_\bc_\bu_\br_\bs_\bo_\br)
42
43      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
44      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_f\bfr\bre\bee\be_\b_e\ben\bnt\btr\bry\by(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\be_\bn_\bt_\br_\by)
45
46      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
47      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_e\ben\bnt\btr\bry\by(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd,
48              _\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bs_\bt_\b__\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl _\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bk_\br_\bb_\b5_\b__\bk_\bv_\bn_\bo _\bk_\bv_\bn_\bo,
49              _\bk_\br_\bb_\b5_\b__\be_\bn_\bc_\bt_\by_\bp_\be _\be_\bn_\bc_\bt_\by_\bp_\be, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\be_\bn_\bt_\br_\by)
50
51      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
52      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_n\bna\bam\bme\be(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bk_\be_\by_\bt_\ba_\bb, _\bc_\bh_\ba_\br _\b*_\bn_\ba_\bm_\be,
53              _\bs_\bi_\bz_\be_\b__\bt _\bn_\ba_\bm_\be_\bs_\bi_\bz_\be)
54
55      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
56      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_t\bty\byp\bpe\be(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bk_\be_\by_\bt_\ba_\bb, _\bc_\bh_\ba_\br _\b*_\bp_\br_\be_\bf_\bi_\bx,
57              _\bs_\bi_\bz_\be_\b__\bt _\bp_\br_\be_\bf_\bi_\bx_\bs_\bi_\bz_\be)
58
59      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
60      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_n\bne\bex\bxt\bt_\b_e\ben\bnt\btr\bry\by(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd,
61              _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\be_\bn_\bt_\br_\by, _\bk_\br_\bb_\b5_\b__\bk_\bt_\b__\bc_\bu_\br_\bs_\bo_\br _\b*_\bc_\bu_\br_\bs_\bo_\br)
62
63      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
64      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bea\bad\bd_\b_s\bse\ber\brv\bvi\bic\bce\be_\b_k\bke\bey\by(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bp_\bo_\bi_\bn_\bt_\be_\br _\bk_\be_\by_\bp_\br_\bo_\bc_\ba_\br_\bg,
65              _\bk_\br_\bb_\b5_\b__\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl _\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bk_\br_\bb_\b5_\b__\bk_\bv_\bn_\bo _\bv_\bn_\bo, _\bk_\br_\bb_\b5_\b__\be_\bn_\bc_\bt_\by_\bp_\be _\be_\bn_\bc_\bt_\by_\bp_\be,
66              _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bb_\bl_\bo_\bc_\bk _\b*_\b*_\bk_\be_\by)
67
68      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
69      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\beg\bgi\bis\bst\bte\ber\br(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bc_\bo_\bn_\bs_\bt _\bk_\br_\bb_\b5_\b__\bk_\bt_\b__\bo_\bp_\bs _\b*_\bo_\bp_\bs)
70
71      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
72      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bem\bmo\bov\bve\be_\b_e\ben\bnt\btr\bry\by(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd,
73              _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb_\b__\be_\bn_\bt_\br_\by _\b*_\be_\bn_\bt_\br_\by)
74
75      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
76      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bes\bso\bol\blv\bve\be(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bn_\ba_\bm_\be, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\b*_\bi_\bd)
77
78      _\bk_\br_\bb_\b5_\b__\be_\br_\br_\bo_\br_\b__\bc_\bo_\bd_\be
79      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_s\bst\bta\bar\brt\bt_\b_s\bse\beq\bq_\b_g\bge\bet\bt(_\bk_\br_\bb_\b5_\b__\bc_\bo_\bn_\bt_\be_\bx_\bt _\bc_\bo_\bn_\bt_\be_\bx_\bt, _\bk_\br_\bb_\b5_\b__\bk_\be_\by_\bt_\ba_\bb _\bi_\bd,
80              _\bk_\br_\bb_\b5_\b__\bk_\bt_\b__\bc_\bu_\br_\bs_\bo_\br _\b*_\bc_\bu_\br_\bs_\bo_\br)
81
82 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
83      A keytab name is on the form type:residual. The residual part is specific
84      to each keytab-type.
85
86      When a keytab-name is resolved, the type is matched with an internal list
87      of keytab types. If there is no matching keytab type, the default keytab
88      is used. The current default type is f\bfi\bil\ble\be. The default value can be
89      changed in the configuration file _\b/_\be_\bt_\bc_\b/_\bk_\br_\bb_\b5_\b._\bc_\bo_\bn_\bf by setting the variable
90      [defaults]default_keytab_name.
91
92      The keytab types that are implemented in Heimdal are:
93
94      f\bfi\bil\ble\be    store the keytab in a file, the type's name is KEYFILE. The
95              residual part is a filename.
96
97      k\bke\bey\byf\bfi\bil\ble\be
98              store the keytab in a AFS keyfile (usually _\b/_\bu_\bs_\br_\b/_\ba_\bf_\bs_\b/_\be_\bt_\bc_\b/_\bK_\be_\by_\bF_\bi_\bl_\be),
99              the type's name is AFSKEYFILE. The residual part is a filename.
100
101      k\bkr\brb\bb4\b4    the keytab is a Kerberos 4 _\bs_\br_\bv_\bt_\ba_\bb that is on-the-fly converted to
102              a keytab. The type's name is krb4. The residual part is a file-
103              name.
104
105      m\bme\bem\bmo\bor\bry\by  The keytab is stored in a memory segment. This allows sensitive
106              and/or temporary data not to be stored on disk. The type's name
107              is MEMORY. There are no residual part, the only pointer back to
108              the keytab is the _\bi_\bd returned by k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bes\bso\bol\blv\bve\be().
109
110      k\bkr\brb\bb5\b5_\b_k\bke\bey\byt\bta\bab\bb_\b_e\ben\bnt\btr\bry\by holds all data for an entry in a keytab file, like
111      principal name, key-type, key, key-version number, etc.  k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bcu\bur\brs\bso\bor\br
112      holds the current position that is used when iterating through a keytab
113      entry with k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_s\bst\bta\bar\brt\bt_\b_s\bse\beq\bq_\b_g\bge\bet\bt(), k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_n\bne\bex\bxt\bt_\b_e\ben\bnt\btr\bry\by(), and
114      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_e\ben\bnd\bd_\b_s\bse\beq\bq_\b_g\bge\bet\bt().
115
116      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_o\bop\bps\bs contains the different operations that can be done to a
117      keytab. This structure is normally only used when doing a new keytab-type
118      implementation.
119
120      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bes\bso\bol\blv\bve\be() is the equivalent of an open(2) on keytab. Resolve the
121      keytab name in _\bn_\ba_\bm_\be into a keytab in _\bi_\bd. Returns 0 or an error. The oppo-
122      site of k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bes\bso\bol\blv\bve\be() is k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bcl\blo\bos\bse\be().  k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bcl\blo\bos\bse\be() frees all
123      resources allocated to the keytab.
124
125      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt() sets the argument _\bi_\bd to the default keytab.  Returns 0
126      or an error.
127
128      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_d\bde\bef\bfa\bau\bul\blt\bt_\b_n\bna\bam\bme\be() copy the name of the default keytab into _\bn_\ba_\bm_\be. Re-
129      turn 0 or KRB5_CONFIG_NOTENUFSPACE if _\bn_\ba_\bm_\be_\bs_\bi_\bz_\be is too short.
130
131
132      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_a\bad\bdd\bd_\b_e\ben\bnt\btr\bry\by() Add a new _\be_\bn_\bt_\br_\by to the keytab _\bi_\bd. KRB5_KT_NOWRITE is
133      returned if the keytab is a readonly keytab.
134
135      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bco\bom\bmp\bpa\bar\bre\be() compares the passed in _\be_\bn_\bt_\br_\by against _\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bv_\bn_\bo,
136      and _\be_\bn_\bc_\bt_\by_\bp_\be. Any of _\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bv_\bn_\bo or _\be_\bn_\bc_\bt_\by_\bp_\be might be 0 which acts as a
137      wildcard. Return TRUE if they compare the same, FALSE otherwise.
138
139      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_c\bco\bop\bpy\by_\b_e\ben\bnt\btr\bry\by_\b_c\bco\bon\bnt\bte\ben\bnt\bts\bs() copies the contents of _\bi_\bn into _\bo_\bu_\bt. Returns
140      0 or an error.
141
142      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_n\bna\bam\bme\be() retrieves the name of the keytab _\bk_\be_\by_\bt_\ba_\bb into _\bn_\ba_\bm_\be,
143      _\bn_\ba_\bm_\be_\bs_\bi_\bz_\be. Returns 0 or an error.
144
145      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_t\bty\byp\bpe\be() retrieves the type of the keytab _\bk_\be_\by_\bt_\ba_\bb and store the
146      prefix/name for type of the keytab into _\bp_\br_\be_\bf_\bi_\bx, _\bp_\br_\be_\bf_\bi_\bx_\bs_\bi_\bz_\be. The prefix
147      will have the maximum length of KRB5_KT_PREFIX_MAX_LEN (including termi-
148      nating NUL). Returns 0 or an error.
149
150      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_f\bfr\bre\bee\be_\b_e\ben\bnt\btr\bry\by() frees the contents of _\be_\bn_\bt_\br_\by.
151
152      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_s\bst\bta\bar\brt\bt_\b_s\bse\beq\bq_\b_g\bge\bet\bt() sets _\bc_\bu_\br_\bs_\bo_\br to point at the beginning of _\bi_\bd. Re-
153      turns 0 or an error.
154
155      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_n\bne\bex\bxt\bt_\b_e\ben\bnt\btr\bry\by() gets the next entry from _\bi_\bd pointed to by _\bc_\bu_\br_\bs_\bo_\br and
156      advance the _\bc_\bu_\br_\bs_\bo_\br. Returns 0 or an error.
157
158      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_e\ben\bnd\bd_\b_s\bse\beq\bq_\b_g\bge\bet\bt() releases all resources associated with _\bc_\bu_\br_\bs_\bo_\br.
159
160      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_g\bge\bet\bt_\b_e\ben\bnt\btr\bry\by() retrieves the keytab entry for _\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bk_\bv_\bn_\bo_\b,
161      _\be_\bn_\bc_\bt_\by_\bp_\be into _\be_\bn_\bt_\br_\by from the keytab _\bi_\bd. Returns 0 or an error.
162
163      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bea\bad\bd_\b_s\bse\ber\brv\bvi\bic\bce\be_\b_k\bke\bey\by() reads the key identified by (_\bp_\br_\bi_\bn_\bc_\bi_\bp_\ba_\bl, _\bv_\bn_\bo,
164      _\be_\bn_\bc_\bt_\by_\bp_\be) from the keytab in _\bk_\be_\by_\bp_\br_\bo_\bc_\ba_\br_\bg (the default if == NULL) into
165      _\b*_\bk_\be_\by. Returns 0 or an error.
166
167      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\bem\bmo\bov\bve\be_\b_e\ben\bnt\btr\bry\by() removes the entry _\be_\bn_\bt_\br_\by from the keytab _\bi_\bd. Re-
168      turns 0 or an error.
169
170      k\bkr\brb\bb5\b5_\b_k\bkt\bt_\b_r\bre\beg\bgi\bis\bst\bte\ber\br() registers a new keytab type _\bo_\bp_\bs. Returns 0 or an er-
171      ror.
172
173 E\bEX\bXA\bAM\bMP\bPL\bLE\bE
174      This is a minimalistic version of k\bkt\btu\but\bti\bil\bl.
175
176      int
177      main (int argc, char **argv)
178      {
179          krb5_context context;
180          krb5_keytab keytab;
181          krb5_kt_cursor cursor;
182          krb5_keytab_entry entry;
183          krb5_error_code ret;
184          char *principal;
185
186          if (krb5_init_context (&context) != 0)
187              errx(1, "krb5_context");
188
189          ret = krb5_kt_default (context, &keytab);
190          if (ret)
191              krb5_err(context, 1, ret, "krb5_kt_default");
192
193          ret = krb5_kt_start_seq_get(context, keytab, &cursor);
194          if (ret)
195              krb5_err(context, 1, ret, "krb5_kt_start_seq_get");
196          while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
197              krb5_unparse_name_short(context, entry.principal, &principal);
198              printf("principal: %s\n", principal);
199              free(principal);
200              krb5_kt_free_entry(context, &entry);
201          }
202          ret = krb5_kt_end_seq_get(context, keytab, &cursor);
203          if (ret)
204              krb5_err(context, 1, ret, "krb5_kt_end_seq_get");
205          krb5_free_context(context);
206          return 0;
207      }
208
209 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
210      krb5.conf(5),  kerberos(8)
211
212  HEIMDAL                       February 5, 2001                              4