2 krb5 credentials cache (version 3 or 4)
3 specification: https://web.mit.edu/kerberos/krb5-devel/doc/formats/ccache_file_format.html
5 krb5 keytab (version 2)
6 specification: https://web.mit.edu/kerberos/krb5-devel/doc/formats/keytab_file_format.html
12 uuid("1702b695-99ca-4f32-93e4-1e1c4d5ddb53"),
14 pointer_default(unique),
15 helpstring("KRB5 credentials cache")
21 uint32 component_count
;
22 [flag
(STR_SIZE4|STR_NOTERM|STR_UTF8
)] string realm
;
23 [flag
(STR_SIZE4|STR_NOTERM|STR_UTF8
)] string components
[component_count
];
48 AUTHDATUM data
[count
];
64 DATA_BLOB second_ticket
;
68 [value
(0)] int32 kdc_sec_offset
;
69 [value
(0)] int32 kdc_usec_offset
;
72 typedef [nodiscriminant
] union {
73 [case(1)] DELTATIME_TAG deltatime_tag
;
77 [value
(1)] uint16 tag
;
78 [subcontext
(2),switch_is(tag
)] FIELD field
;
84 * We should allow for more than one tag to be properly parsed, but that
85 * would require manual parsing.
87 [flag
(NDR_REMAINING
)] DATA_BLOB further_tags
;
91 [subcontext
(2)] V4TAGS v4tags
;
94 typedef [nodiscriminant
] union {
96 * We don't attempt to support file format versions 1 and 2 as they
97 * assume native CPU byte order, which makes no sense in PIDL.
100 [case(4)] V4HEADER v4header
;
103 /* Public structures. */
105 typedef [flag
(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX
),public] struct {
106 [value
(5),range(5,5)] uint8 pvno
;
107 [value
(4)] uint8
version;
108 [switch_is(version)] OPTIONAL_HEADER optional_header
;
111 [flag
(NDR_REMAINING
)] DATA_BLOB further_creds
;
114 typedef [flag
(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX
),public] struct {
116 [flag
(NDR_REMAINING
)] DATA_BLOB further_creds
;
117 } MULTIPLE_CREDENTIALS
;
125 uint16 component_count
;
126 [flag
(STR_SIZE2|STR_NOTERM|STR_UTF8
)] string realm
;
127 [flag
(STR_SIZE2|STR_NOTERM|STR_UTF8
)] string components
[component_count
];
132 KEYTAB_PRINCIPAL principal
;
137 uint32 full_key_version
; /* We assume modern Heimdal or MIT 1.14 or later */
141 * This parser assumes a fresh keytab without negative lengths
142 * to indicate holes generated by MIT krb5 1.14
144 typedef [flag
(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX
),public] struct {
145 [value
(5),range(5,5)] uint8 pvno
;
146 [value
(2),range(2,2)] uint8
version;
147 [subcontext
(4)] KEYTAB_ENTRY
entry;
148 [flag
(NDR_REMAINING
)] DATA_BLOB further_entry
;
151 typedef [flag
(NDR_NOALIGN|NDR_BIG_ENDIAN|NDR_PAHEX
),public] struct {
152 [subcontext
(4)] KEYTAB_ENTRY
entry;
153 [flag
(NDR_REMAINING
)] DATA_BLOB further_entry
;
154 } MULTIPLE_KEYTAB_ENTRIES
;