remove gcc34
[dragonfly.git] / crypto / heimdal-0.6.3 / lib / krb5 / krb5_keytab.cat3
blob301cb1e27c1d884db51ecf519a32c5c0c963eca6
2 KRB5_KEYTAB(3)             UNIX Programmer's Manual             KRB5_KEYTAB(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
13 L\bLI\bIB\bBR\bRA\bAR\bRY\bY
14      Kerberos 5 Library (libkrb5, -lkrb5)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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.
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.
92      The keytab types that are implemented in Heimdal are:
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.
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.
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.
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().
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().
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
173 E\bEX\bXA\bAM\bMP\bPL\bLE\bE
174      This is a minimalistic version of k\bkt\btu\but\bti\bil\bl.
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;
186          if (krb5_init_context (&context) != 0)
187              errx(1, "krb5_context");
189          ret = krb5_kt_default (context, &keytab);
190          if (ret)
191              krb5_err(context, 1, ret, "krb5_kt_default");
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      }
209 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
210      krb5.conf(5),  kerberos(8)
212  HEIMDAL                       February 5, 2001                              4