2
\def\sphinxdocclass{report}
3
\documentclass[letterpaper,10pt,english]{sphinxmanual}
4
\usepackage[utf8]{inputenc}
5
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
6
\usepackage[T1]{fontenc}
9
\usepackage[Bjarne]{fncychap}
10
\usepackage{longtable}
15
\title{Kerberos Application Developer Guide}
19
\newcommand{\sphinxlogo}{}
20
\renewcommand{\releasename}{Release}
24
\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
25
\let\PYG@ul=\relax \let\PYG@tc=\relax%
26
\let\PYG@bc=\relax \let\PYG@ff=\relax}
27
\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
28
\def\PYG@toks#1+{\ifx\relax#1\empty\else%
29
\PYG@tok{#1}\expandafter\PYG@toks\fi}
30
\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
31
\PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
32
\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
34
\def\PYG@tok@gd{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
35
\def\PYG@tok@gu{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
36
\def\PYG@tok@gt{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.25,0.82}{##1}}}
37
\def\PYG@tok@gs{\let\PYG@bf=\textbf}
38
\def\PYG@tok@gr{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
39
\def\PYG@tok@cm{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
40
\def\PYG@tok@vg{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
41
\def\PYG@tok@m{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
42
\def\PYG@tok@mh{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
43
\def\PYG@tok@cs{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{\colorbox[rgb]{1.00,0.94,0.94}{##1}}}
44
\def\PYG@tok@ge{\let\PYG@it=\textit}
45
\def\PYG@tok@vc{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
46
\def\PYG@tok@il{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
47
\def\PYG@tok@go{\def\PYG@tc##1{\textcolor[rgb]{0.19,0.19,0.19}{##1}}}
48
\def\PYG@tok@cp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
49
\def\PYG@tok@gi{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
50
\def\PYG@tok@gh{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
51
\def\PYG@tok@ni{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}}
52
\def\PYG@tok@nl{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}}
53
\def\PYG@tok@nn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
54
\def\PYG@tok@no{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}}
55
\def\PYG@tok@na{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
56
\def\PYG@tok@nb{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
57
\def\PYG@tok@nc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
58
\def\PYG@tok@nd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
59
\def\PYG@tok@ne{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
60
\def\PYG@tok@nf{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}}
61
\def\PYG@tok@si{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}}
62
\def\PYG@tok@s2{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
63
\def\PYG@tok@vi{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
64
\def\PYG@tok@nt{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}}
65
\def\PYG@tok@nv{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
66
\def\PYG@tok@s1{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
67
\def\PYG@tok@gp{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
68
\def\PYG@tok@sh{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
69
\def\PYG@tok@ow{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
70
\def\PYG@tok@sx{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
71
\def\PYG@tok@bp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
72
\def\PYG@tok@c1{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
73
\def\PYG@tok@kc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
74
\def\PYG@tok@c{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
75
\def\PYG@tok@mf{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
76
\def\PYG@tok@err{\def\PYG@bc##1{\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{##1}}}
77
\def\PYG@tok@kd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
78
\def\PYG@tok@ss{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}}
79
\def\PYG@tok@sr{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}}
80
\def\PYG@tok@mo{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
81
\def\PYG@tok@mi{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
82
\def\PYG@tok@kn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
83
\def\PYG@tok@o{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
84
\def\PYG@tok@kr{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
85
\def\PYG@tok@s{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
86
\def\PYG@tok@kp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
87
\def\PYG@tok@w{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
88
\def\PYG@tok@kt{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}}
89
\def\PYG@tok@sc{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
90
\def\PYG@tok@sb{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
91
\def\PYG@tok@k{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
92
\def\PYG@tok@se{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
93
\def\PYG@tok@sd{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
100
\def\PYGZsh{\char`\#}
101
\def\PYGZpc{\char`\%}
102
\def\PYGZdl{\char`\$}
103
\def\PYGZti{\char`\~}
104
% for compatibility with earlier versions
114
\phantomsection\label{appdev/index::doc}
118
\chapter{Developing with GSSAPI}
119
\label{appdev/gssapi:for-application-developers}\label{appdev/gssapi::doc}\label{appdev/gssapi:developing-with-gssapi}
120
The GSSAPI (Generic Security Services API) allows applications to
121
communicate securely using Kerberos 5 or other security mechanisms.
122
We recommend using the GSSAPI (or a higher-level framework which
123
encompasses GSSAPI, such as SASL) for secure network communication
124
over using the libkrb5 API directly.
126
GSSAPIv2 is specified in \index{RFC!RFC 2743}\href{http://tools.ietf.org/html/rfc2743.html}{\textbf{RFC 2743}} and \index{RFC!RFC 2744}\href{http://tools.ietf.org/html/rfc2744.html}{\textbf{RFC 2744}}. This
127
documentation will describe how various ways of using GSSAPI will
128
behave with the krb5 mechanism as implemented in MIT krb5, as well as
129
krb5-specific extensions to the GSSAPI.
133
\label{appdev/gssapi:name-types}
134
A GSSAPI application can name a local or remote entity by calling
135
\href{http://tools.ietf.org/html/rfc2744.html\#section-5.16}{gss\_import\_name}, specifying a name type and a value. The following
136
name types are supported by the krb5 mechanism:
139
\textbf{GSS\_C\_NT\_HOSTBASED\_SERVICE}: The value should be a string of the
140
form \code{service} or \code{service@hostname}. This is the most common
141
way to name target services when initiating a security context, and
142
is the most likely name type to work across multiple mechanisms.
145
\textbf{GSS\_KRB5\_NT\_PRINCIPAL\_NAME}: The value should be a principal name
146
string. This name type only works with the krb5 mechanism, and is
147
defined in the \code{\textless{}gssapi\_krb5.h\textgreater{}} header.
150
\textbf{GSS\_C\_NT\_USER\_NAME} or \textbf{GSS\_C\_NULL\_OID}: The value is treated
151
as an unparsed principal name string, as above. These name types
152
may work with mechanisms other than krb5, but will have different
153
interpretations in those mechanisms. \textbf{GSS\_C\_NT\_USER\_NAME} is
154
intended to be used with a local username, which will parse into a
155
single-component principal in the default realm.
158
\textbf{GSS\_C\_NT\_ANONYMOUS}: The value is ignored. The anonymous
159
principal is used, allowing a client to authenticate to a server
160
without asserting a particular identity (which may or may not be
161
allowed by a particular server or Kerberos realm).
164
\textbf{GSS\_C\_NT\_MACHINE\_UID\_NAME}: The value is uid\_t object. On
165
Unix-like systems, the username of the uid is looked up in the
166
system user database and the resulting username is parsed as a
170
\textbf{GSS\_C\_NT\_STRING\_UID\_NAME}: As above, but the value is a decimal
171
string representation of the uid.
174
\textbf{GSS\_C\_NT\_EXPORT\_NAME}: The value must be the result of a
175
\href{http://tools.ietf.org/html/rfc2744.html\#section-5.13}{gss\_export\_name} call.
180
\section{Initiator credentials}
181
\label{appdev/gssapi:initiator-credentials}
182
A GSSAPI client application uses \href{http://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} to establish a
183
security context. The \emph{initiator\_cred\_handle} parameter determines
184
what tickets are used to establish the connection. An application can
185
either pass \textbf{GSS\_C\_NO\_CREDENTIAL} to use the default client
186
credential, or it can use \href{http://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} beforehand to acquire an
187
initiator credential. The call to \href{http://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} may include a
188
\emph{desired\_name} parameter, or it may pass \textbf{GSS\_C\_NO\_NAME} if it does
189
not have a specific name preference.
191
If the desired name for a krb5 initiator credential is a host-based
192
name, it is converted to a principal name of the form
193
\code{service/hostname} in the local realm, where \emph{hostname} is the local
194
hostname if not specified. The hostname will be canonicalized using
195
forward name resolution, and possibly also using reverse name
196
resolution depending on the value of the \textbf{rdns} variable in
199
If a desired name is specified in the call to \href{http://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, the
200
krb5 mechanism will attempt to find existing tickets for that client
201
principal name in the default credential cache or collection. If the
202
default cache type does not support a collection, and the default
203
cache contains credentials for a different principal than the desired
204
name, a \textbf{GSS\_S\_CRED\_UNAVAIL} error will be returned with a minor
205
code indicating a mismatch.
207
If no existing tickets are available for the desired name, but the
208
name has an entry in the default client \emph{keytab\_definition}, the
209
krb5 mechanism will acquire initial tickets for the name using the
210
default client keytab.
212
If no desired name is specified, credential acquisition will be
213
deferred until the credential is used in a call to
214
\href{http://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} or \href{http://tools.ietf.org/html/rfc2744.html\#section-5.21}{gss\_inquire\_cred}. If the call is to
215
\href{http://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context}, the target name will be used to choose a client
216
principal name using the credential cache selection facility. (This
217
facility might, for instance, try to choose existing tickets for a
218
client principal in the same realm as the target service). If there
219
are no existing tickets for the chosen principal, but it is present in
220
the default client keytab, the krb5 mechanism will acquire initial
221
tickets using the keytab.
223
If the target name cannot be used to select a client principal
224
(because the credentials are used in a call to \href{http://tools.ietf.org/html/rfc2744.html\#section-5.21}{gss\_inquire\_cred}), or
225
if the credential cache selection facility cannot choose a principal
226
for it, the default credential cache will be selected if it exists and
229
If the default credential cache does not exist, but the default client
230
keytab does, the krb5 mechanism will try to acquire initial tickets
231
for the first principal in the default client keytab.
233
If the krb5 mechanism acquires initial tickets using the default
234
client keytab, the resulting tickets will be stored in the default
235
cache or collection, and will be refreshed by future calls to
236
\href{http://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} as they approach their expire time.
239
\section{Acceptor names}
240
\label{appdev/gssapi:acceptor-names}
241
A GSSAPI server application uses \href{http://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context} to establish
242
a security context based on tokens provided by the client. The
243
\emph{acceptor\_cred\_handle} parameter determines what
244
\emph{keytab\_definition} entries may be authenticated to by the
245
client, if the krb5 mechanism is used.
247
The simplest choice is to pass \textbf{GSS\_C\_NO\_CREDENTIAL} as the acceptor
248
credential. In this case, clients may authenticate to any service
249
principal in the default keytab (typically \emph{DEFKTNAME}, or the value of
250
the \textbf{KRB5\_KTNAME} environment variable). This is the recommended
251
approach if the server application has no specific requirements to the
254
A server may acquire an acceptor credential with \href{http://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} and
255
a \emph{cred\_usage} of \textbf{GSS\_C\_ACCEPT} or \textbf{GSS\_C\_BOTH}. If the
256
\emph{desired\_name} parameter is \textbf{GSS\_C\_NO\_NAME}, then clients will be
257
allowed to authenticate to any service principal in the default
258
keytab, just as if no acceptor credential was supplied.
260
If a server wishes to specify a \emph{desired\_name} to \href{http://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred},
261
the most common choice is a host-based name. If the host-based
262
\emph{desired\_name} contains just a \emph{service}, then clients will be allowed
263
to authenticate to any host-based service principal (that is, a
264
principal of the form \code{service/hostname@REALM}) for the named
265
service, regardless of hostname or realm, as long as it is present in
266
the default keytab. If the input name contains both a \emph{service} and a
267
\emph{hostname}, clients will be allowed to authenticate to any host-based
268
principal for the named service and hostname, regardless of realm.
270
\begin{notice}{note}{Note:}
271
If a \emph{hostname} is specified, it will be canonicalized
272
using forward name resolution, and possibly also using
273
reverse name resolution depending on the value of the
274
\textbf{rdns} variable in \emph{libdefaults}.
277
\begin{notice}{note}{Note:}
278
If the \textbf{ignore\_acceptor\_hostname} variable in
279
\emph{libdefaults} is enabled, then \emph{hostname} will be
280
ignored even if one is specified in the input name.
283
\begin{notice}{note}{Note:}
284
In MIT krb5 versions prior to 1.10, and in Heimdal's
285
implementation of the krb5 mechanism, an input name with
286
just a \emph{service} is treated like an input name of
287
\code{service@localhostname}, where \emph{localhostname} is the
288
string returned by gethostname().
291
If the \emph{desired\_name} is a krb5 principal name or a local system name
292
type which is mapped to a krb5 principal name, clients will only be
293
allowed to authenticate to that principal in the default keytab.
296
\section{Importing and exporting credentials}
297
\label{appdev/gssapi:importing-and-exporting-credentials}
298
The following GSSAPI extensions can be used to import and export
299
credentials (declared in \code{\textless{}gssapi/gssapi\_ext.h\textgreater{}}):
301
\begin{Verbatim}[commandchars=\\\{\}]
302
OM\_uint32 gss\_export\_cred(OM\_uint32 *minor\_status,
303
gss\_cred\_id\_t cred\_handle,
304
gss\_buffer\_t token);
306
OM\_uint32 gss\_import\_cred(OM\_uint32 *minor\_status,
307
gss\_buffer\_t token,
308
gss\_cred\_id\_t *cred\_handle);
311
The first function serializes a GSSAPI credential handle into a
312
buffer; the second unseralizes a buffer into a GSSAPI credential
313
handle. Serializing a credential does not destroy it. If any of the
314
mechanisms used in \emph{cred\_handle} do not support serialization,
315
gss\_export\_cred will return \textbf{GSS\_S\_UNAVAILABLE}. As with other
316
GSSAPI serialization functions, these extensions are only intended to
317
work with a matching implementation on the other side; they do not
318
serialize credentials in a standardized format.
320
A serialized credential may contain secret information such as ticket
321
session keys. The serialization format does not protect this
322
information from eavesdropping or tampering. The calling application
323
must take care to protect the serialized credential when communicating
324
it over an insecure channel or to an untrusted party.
326
A krb5 GSSAPI credential may contain references to a credential cache,
327
a client keytab, an acceptor keytab, and a replay cache. These
328
resources are normally serialized as references to their external
329
locations (such as the filename of the credential cache). Because of
330
this, a serialized krb5 credential can only be imported by a process
331
with similar privileges to the exporter. A serialized credential
332
should not be trusted if it originates from a source with lower
333
privileges than the importer, as it may contain references to external
334
credential cache, keytab, or replay cache resources not accessible to
337
An exception to the above rule applies when a krb5 GSSAPI credential
338
refers to a memory credential cache, as is normally the case for
339
delegated credentials received by \href{http://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}. In this
340
case, the contents of the credential cache are serialized, so that the
341
resulting token may be imported even if the original memory credential
342
cache no longer exists.
345
\chapter{Differences between Heimdal and MIT Kerberos API}
346
\label{appdev/h5l_mit_apidiff:differences-between-heimdal-and-mit-kerberos-api}\label{appdev/h5l_mit_apidiff::doc}
347
\begin{tabulary}{\linewidth}{|l|l|}
350
{\hyperref[appdev/refs/api/krb5_auth_con_getaddrs:krb5_auth_con_getaddrs]{\code{krb5\_auth\_con\_getaddrs()}}}
352
H5l: If either of the pointers to local\_addr
353
and remote\_addr is not NULL, it is freed
354
first and then reallocated before being
355
populated with the content of corresponding
356
address from authentication context.
359
{\hyperref[appdev/refs/api/krb5_auth_con_setaddrs:krb5_auth_con_setaddrs]{\code{krb5\_auth\_con\_setaddrs()}}}
361
H5l: If either address is NULL, the previous
362
address remains in place
365
{\hyperref[appdev/refs/api/krb5_auth_con_setports:krb5_auth_con_setports]{\code{krb5\_auth\_con\_setports()}}}
367
H5l: Not implemented as of version 1.3.3
370
{\hyperref[appdev/refs/api/krb5_auth_con_setrecvsubkey:krb5_auth_con_setrecvsubkey]{\code{krb5\_auth\_con\_setrecvsubkey()}}}
372
H5l: If either port is NULL, the previous
373
port remains in place
376
{\hyperref[appdev/refs/api/krb5_auth_con_setsendsubkey:krb5_auth_con_setsendsubkey]{\code{krb5\_auth\_con\_setsendsubkey()}}}
378
H5l: Not implemented as of version 1.3.3
381
{\hyperref[appdev/refs/api/krb5_cc_set_config:krb5_cc_set_config]{\code{krb5\_cc\_set\_config()}}}
383
MIT: Before version 1.10 it was assumed that
384
the last argument \emph{data} is ALWAYS non-zero.
387
{\hyperref[appdev/refs/api/krb5_cccol_last_change_time:krb5_cccol_last_change_time]{\code{krb5\_cccol\_last\_change\_time()}}}
389
H5l takes 3 arguments: krb5\_context context,
390
const char *type, krb5\_timestamp *change\_time
391
MIT takes two arguments: krb5\_context context,
392
krb5\_timestamp *change\_time
395
{\hyperref[appdev/refs/api/krb5_set_default_realm:krb5_set_default_realm]{\code{krb5\_set\_default\_realm()}}}
397
H5l: Caches the computed default realm context
398
field. If the second argument is NULL,
399
it tries to retrieve it from libdefaults or DNS.
400
MIT: Computes the default realm each time
401
if it wasn't explicitly set in the context
407
\chapter{Initial credentials}
408
\label{appdev/init_creds:initial-credentials}\label{appdev/init_creds::doc}
409
Software that performs tasks such as logging users into a computer
410
when they type their Kerberos password needs to get initial
411
credentials (usually ticket granting tickets) from Kerberos. Such
412
software shares some behavior with the \emph{kinit(1)} program.
414
Whenever a program grants access to a resource (such as a local login
415
session on a desktop computer) based on a user successfully getting
416
initial Kerberos credentials, it must verify those credentials against
417
a secure shared secret (e.g., a host keytab) to ensure that the user
418
credentials actually originate from a legitimate KDC. Failure to
419
perform this verification is a critical vulnerability, because a
420
malicious user can execute the ``Zanarotti attack'': the user constructs
421
a fake response that appears to come from the legitimate KDC, but
422
whose contents come from an attacker-controlled KDC.
424
Some applications read a Kerberos password over the network (ideally
425
over a secure channel), which they then verify against the KDC. While
426
this technique may be the only practical way to integrate Kerberos
427
into some existing legacy systems, its use is contrary to the original
428
design goals of Kerberos.
430
The function {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} will get initial
431
credentials for a client using a password. An application that needs
432
to verify the credentials can call {\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}}.
433
Here is an example of code to obtain and verify TGT credentials, given
434
strings \emph{princname} and \emph{password} for the client principal name and
438
\begin{Verbatim}[commandchars=\\\{\}]
439
krb5\_error\_code ret;
441
krb5\_principal client\_princ = NULL;
443
memset(\&creds, 0, sizeof(creds));
444
ret = krb5\_parse\_name(context, princname, \&client\_princ);
447
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
448
password, NULL, NULL, 0, NULL, NULL);
451
ret = krb5\_verify\_init\_creds(context, \&creds, NULL, NULL, NULL, NULL);
454
krb5\_free\_principal(context, client\_princ);
455
krb5\_free\_cred\_contents(context, \&creds);
461
\section{Options for get\_init\_creds}
462
\label{appdev/init_creds:options-for-get-init-creds}
463
The function {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} takes an options
464
parameter (which can be a null pointer). Use the function
465
{\hyperref[appdev/refs/api/krb5_get_init_creds_opt_alloc:krb5_get_init_creds_opt_alloc]{\code{krb5\_get\_init\_creds\_opt\_alloc()}}} to allocate an options
466
structure, and {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_free:krb5_get_init_creds_opt_free]{\code{krb5\_get\_init\_creds\_opt\_free()}}} to free it. For
470
\begin{Verbatim}[commandchars=\\\{\}]
471
krb5\_error\_code ret;
472
krb5\_get\_init\_creds\_opt *opt = NULL;
475
memset(\&creds, 0, sizeof(creds));
476
ret = krb5\_get\_init\_creds\_opt\_alloc(context, \&opt);
479
krb5\_get\_init\_creds\_opt\_set\_tkt\_life(opt, 24 * 60 * 60);
480
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
481
password, NULL, NULL, 0, NULL, opt);
486
krb5\_get\_init\_creds\_opt\_free(context, opt);
487
krb5\_free\_cred\_contents(context, \&creds);
493
\section{Getting anonymous credentials}
494
\label{appdev/init_creds:getting-anonymous-credentials}
495
As of release 1.8, it is possible to obtain fully anonymous or
496
partially anonymous (realm-exposed) credentials, if the KDC supports
497
it. The MIT KDC supports issuing fully anonymous credentials as of
498
release 1.8 if configured appropriately (see \emph{anonymous\_pkinit}),
499
but does not support issuing realm-exposed anonymous credentials at
502
To obtain fully anonymous credentials, call
503
{\hyperref[appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:krb5_get_init_creds_opt_set_anonymous]{\code{krb5\_get\_init\_creds\_opt\_set\_anonymous()}}} on the options
504
structure to set the anonymous flag, and specify a client principal
505
with the KDC's realm and a single empty data component (the principal
506
obtained by parsing \code{@}\emph{realmname}). Authentication will take
507
place using anonymous PKINIT; if successful, the client principal of
508
the resulting tickets will be
509
\code{WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS}. Here is an example:
512
\begin{Verbatim}[commandchars=\\\{\}]
513
krb5\_get\_init\_creds\_opt\_set\_anonymous(opt, 1);
514
ret = krb5\_build\_principal(context, \&client\_princ, strlen(myrealm),
515
myrealm, "", (char *)NULL);
518
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
519
password, NULL, NULL, 0, NULL, opt);
525
To obtain realm-exposed anonymous credentials, set the anonymous flag
526
on the options structure as above, but specify a normal client
527
principal in order to prove membership in the realm. Authentication
528
will take place as it normally does; if successful, the client
529
principal of the resulting tickets will be \code{WELLKNOWN/ANONYMOUS@}\emph{realmname}.
532
\section{User interaction}
533
\label{appdev/init_creds:user-interaction}
534
Authenticating a user usually requires the entry of secret
535
information, such as a password. A password can be supplied directly
536
to {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} via the \emph{password}
537
parameter, or the application can supply prompter and/or responder
538
callbacks instead. If callbacks are used, the user can also be
539
queried for other secret information such as a PIN, informed of
540
impending password expiration, or prompted to change a password which
544
\subsection{Prompter callback}
545
\label{appdev/init_creds:prompter-callback}
546
A prompter callback can be specified via the \emph{prompter} and \emph{data}
547
parameters to {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}}. The prompter
548
will be invoked each time the krb5 library has a question to ask or
549
information to present. When the prompter callback is invoked, the
550
\emph{banner} argument (if not null) is intended to be displayed to the
551
user, and the questions to be answered are specified in the \emph{prompts}
552
array. Each prompt contains a text question in the \emph{prompt} field, a
553
\emph{hidden} bit to indicate whether the answer should be hidden from
554
display, and a storage area for the answer in the \emph{reply} field. The
555
callback should fill in each question's \code{reply-\textgreater{}data} with the
556
answer, up to a maximum number of \code{reply-\textgreater{}length} bytes, and then
557
reset \code{reply-\textgreater{}length} to the length of the answer.
559
A prompter callback can call {\hyperref[appdev/refs/api/krb5_get_prompt_types:krb5_get_prompt_types]{\code{krb5\_get\_prompt\_types()}}} to get an
560
array of type constants corresponding to the prompts, to get
561
programmatic information about the semantic meaning of the questions.
562
{\hyperref[appdev/refs/api/krb5_get_prompt_types:krb5_get_prompt_types]{\code{krb5\_get\_prompt\_types()}}} may return a null pointer if no prompt
563
type information is available.
565
Text-based applications can use a built-in text prompter
566
implementation by supplying {\hyperref[appdev/refs/api/krb5_prompter_posix:krb5_prompter_posix]{\code{krb5\_prompter\_posix()}}} as the
567
\emph{prompter} parameter and a null pointer as the \emph{data} parameter. For
571
\begin{Verbatim}[commandchars=\\\{\}]
572
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
573
NULL, krb5\_prompter\_posix, NULL, 0,
579
\subsection{Responder callback}
580
\label{appdev/init_creds:responder-callback}
581
A responder callback can be specified through the init\_creds options
582
using the {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_set_responder:krb5_get_init_creds_opt_set_responder]{\code{krb5\_get\_init\_creds\_opt\_set\_responder()}}} function.
583
Responder callbacks can present a more sophisticated user interface
584
for authentication secrets. The responder callback is usually invoked
585
only once per authentication, with a list of questions produced by all
586
of the allowed preauthentication mechanisms.
588
When the responder callback is invoked, the \emph{rctx} argument can be
589
accessed to obtain the list of questions and to answer them. The
590
{\hyperref[appdev/refs/api/krb5_responder_list_questions:krb5_responder_list_questions]{\code{krb5\_responder\_list\_questions()}}} function retrieves an array of
591
question types. For each question type, the
592
{\hyperref[appdev/refs/api/krb5_responder_get_challenge:krb5_responder_get_challenge]{\code{krb5\_responder\_get\_challenge()}}} function retrieves additional
593
information about the question, if applicable, and the
594
{\hyperref[appdev/refs/api/krb5_responder_set_answer:krb5_responder_set_answer]{\code{krb5\_responder\_set\_answer()}}} function sets the answer.
596
Responder question types, challenges, and answers are UTF-8 strings.
597
The question type is a well-known string; the meaning of the challenge
598
and answer depend on the question type. If an application does not
599
understand a question type, it cannot interpret the challenge or
600
provide an answer. Failing to answer a question typically results in
601
the prompter callback being used as a fallback.
604
\subsubsection{Password question}
605
\label{appdev/init_creds:password-question}
606
The \code{KRB5\_RESPONDER\_QUESTION\_PASSWORD} (or \code{"password"})
607
question type requests the user's password. This question does not
608
have a challenge, and the response is simply the password string.
611
\subsubsection{One-time password question}
612
\label{appdev/init_creds:one-time-password-question}
613
The \code{KRB5\_RESPONDER\_QUESTION\_OTP} (or \code{"otp"}) question
614
type requests a choice among one-time password tokens and the PIN and
615
value for the chosen token. The challenge and answer are JSON-encoded
616
strings, but an application can use convenience functions to avoid
617
doing any JSON processing itself.
619
The {\hyperref[appdev/refs/api/krb5_responder_otp_get_challenge:krb5_responder_otp_get_challenge]{\code{krb5\_responder\_otp\_get\_challenge()}}} function decodes the
620
challenge into a krb5\_responder\_otp\_challenge structure. The
621
{\hyperref[appdev/refs/api/krb5_responder_otp_set_answer:krb5_responder_otp_set_answer]{\code{krb5\_responder\_otp\_set\_answer()}}} function selects one of the
622
token information elements from the challenge and supplies the value
623
and pin for that token.
626
\subsubsection{Example}
627
\label{appdev/init_creds:example}
628
Here is an example of using a responder callback:
631
\begin{Verbatim}[commandchars=\\\{\}]
632
static krb5\_error\_code
633
my\_responder(krb5\_context context, void *data,
634
krb5\_responder\_context rctx)
636
krb5\_error\_code ret;
637
krb5\_responder\_otp\_challenge *chl;
639
if (krb5\_responder\_get\_challenge(context, rctx,
640
KRB5\_RESPONDER\_QUESTION\_PASSWORD)) \PYGZob{}
641
ret = krb5\_responder\_set\_answer(context, rctx,
642
KRB5\_RESPONDER\_QUESTION\_PASSWORD,
647
ret = krb5\_responder\_otp\_get\_challenge(context, rctx, \&chl);
648
if (ret == 0 \&\& chl != NULL) \PYGZob{}
649
ret = krb5\_responder\_otp\_set\_answer(context, rctx, 0, "1234",
651
krb5\_responder\_otp\_challenge\_free(context, rctx, chl);
658
static krb5\_error\_code
659
get\_creds(krb5\_context context, krb5\_principal client\_princ)
661
krb5\_error\_code ret;
662
krb5\_get\_init\_creds\_opt *opt = NULL;
665
memset(\&creds, 0, sizeof(creds));
666
ret = krb5\_get\_init\_creds\_opt\_alloc(context, \&opt);
669
ret = krb5\_get\_init\_creds\_opt\_set\_responder(context, opt, my\_responder,
673
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
674
NULL, NULL, NULL, 0, NULL, opt);
677
krb5\_get\_init\_creds\_opt\_free(context, opt);
678
krb5\_free\_cred\_contents(context, \&creds);
685
\section{Verifying initial credentials}
686
\label{appdev/init_creds:verifying-initial-credentials}
687
Use the function {\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}} to verify initial
688
credentials. It takes an options structure (which can be a null
689
pointer). Use {\hyperref[appdev/refs/api/krb5_verify_init_creds_opt_init:krb5_verify_init_creds_opt_init]{\code{krb5\_verify\_init\_creds\_opt\_init()}}} to initialize
690
the caller-allocated options structure, and
691
{\hyperref[appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:krb5_verify_init_creds_opt_set_ap_req_nofail]{\code{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail()}}} to set the
692
``nofail'' option. For example:
695
\begin{Verbatim}[commandchars=\\\{\}]
696
krb5\_verify\_init\_creds\_opt vopt;
698
krb5\_verify\_init\_creds\_opt\_init(\&vopt);
699
krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail(\&vopt, 1);
700
ret = krb5\_verify\_init\_creds(context, \&creds, NULL, NULL, NULL, \&vopt);
704
The confusingly named ``nofail'' option, when set, means that the
705
verification must actually succeed in order for
706
{\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}} to indicate success. The default
707
state of this option (cleared) means that if there is no key material
708
available to verify the user credentials, the verification will
709
succeed anyway. (The default can be changed by a configuration file
712
This accommodates a use case where a large number of unkeyed shared
713
desktop workstations need to allow users to log in using Kerberos.
714
The security risks from this practice are mitigated by the absence of
715
valuable state on the shared workstations---any valuable resources
716
that the users would access reside on networked servers.
719
\chapter{Principal manipulation and parsing}
720
\label{appdev/princ_handle:principal-manipulation-and-parsing}\label{appdev/princ_handle::doc}
721
Kerberos principal structure
723
{\hyperref[appdev/refs/types/krb5_principal_data:krb5_principal_data]{\code{krb5\_principal\_data}}}
725
{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{\code{krb5\_principal}}}
727
Create and free principal
729
{\hyperref[appdev/refs/api/krb5_build_principal:krb5_build_principal]{\code{krb5\_build\_principal()}}}
731
{\hyperref[appdev/refs/api/krb5_build_principal_alloc_va:krb5_build_principal_alloc_va]{\code{krb5\_build\_principal\_alloc\_va()}}}
733
{\hyperref[appdev/refs/api/krb5_build_principal_ext:krb5_build_principal_ext]{\code{krb5\_build\_principal\_ext()}}}
735
{\hyperref[appdev/refs/api/krb5_copy_principal:krb5_copy_principal]{\code{krb5\_copy\_principal()}}}
737
{\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}}
739
{\hyperref[appdev/refs/api/krb5_cc_get_principal:krb5_cc_get_principal]{\code{krb5\_cc\_get\_principal()}}}
743
{\hyperref[appdev/refs/api/krb5_principal_compare:krb5_principal_compare]{\code{krb5\_principal\_compare()}}}
745
{\hyperref[appdev/refs/api/krb5_principal_compare_flags:krb5_principal_compare_flags]{\code{krb5\_principal\_compare\_flags()}}}
747
{\hyperref[appdev/refs/api/krb5_principal_compare_any_realm:krb5_principal_compare_any_realm]{\code{krb5\_principal\_compare\_any\_realm()}}}
749
{\hyperref[appdev/refs/api/krb5_sname_match:krb5_sname_match]{\code{krb5\_sname\_match()}}}
751
{\hyperref[appdev/refs/api/krb5_sname_to_principal:krb5_sname_to_principal]{\code{krb5\_sname\_to\_principal()}}}
755
{\hyperref[appdev/refs/api/krb5_parse_name:krb5_parse_name]{\code{krb5\_parse\_name()}}}
757
{\hyperref[appdev/refs/api/krb5_parse_name_flags:krb5_parse_name_flags]{\code{krb5\_parse\_name\_flags()}}}
759
{\hyperref[appdev/refs/api/krb5_unparse_name:krb5_unparse_name]{\code{krb5\_unparse\_name()}}}
761
{\hyperref[appdev/refs/api/krb5_unparse_name_flags:krb5_unparse_name_flags]{\code{krb5\_unparse\_name\_flags()}}}
765
{\hyperref[appdev/refs/api/krb5_is_config_principal:krb5_is_config_principal]{\code{krb5\_is\_config\_principal()}}}
767
{\hyperref[appdev/refs/api/krb5_kuserok:krb5_kuserok]{\code{krb5\_kuserok()}}}
769
{\hyperref[appdev/refs/api/krb5_set_password:krb5_set_password]{\code{krb5\_set\_password()}}}
771
{\hyperref[appdev/refs/api/krb5_set_password_using_ccache:krb5_set_password_using_ccache]{\code{krb5\_set\_password\_using\_ccache()}}}
773
{\hyperref[appdev/refs/api/krb5_set_principal_realm:krb5_set_principal_realm]{\code{krb5\_set\_principal\_realm()}}}
775
{\hyperref[appdev/refs/api/krb5_realm_compare:krb5_realm_compare]{\code{krb5\_realm\_compare()}}}
778
\chapter{Complete reference - API and datatypes}
779
\label{appdev/refs/index:complete-reference-api-and-datatypes}\label{appdev/refs/index::doc}
782
\label{appdev/refs/api/index:krb5-api}\label{appdev/refs/api/index::doc}
784
\subsection{Frequently used public interfaces}
785
\label{appdev/refs/api/index:frequently-used-public-interfaces}
787
\subsubsection{krb5\_build\_principal - Build a principal name using null-terminated strings.}
788
\label{appdev/refs/api/krb5_build_principal:krb5-build-principal-build-a-principal-name-using-null-terminated-strings}\label{appdev/refs/api/krb5_build_principal::doc}\index{krb5\_build\_principal (C function)}
790
\begin{fulllineitems}
791
\phantomsection\label{appdev/refs/api/krb5_build_principal:krb5_build_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_build\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ princ}, unsigned int\emph{ rlen}, const char *\emph{ realm}, ...}{}
794
\begin{quote}\begin{description}
795
\item[{param}] \leavevmode
796
\textbf{{[}in{]}} \textbf{context} - Library context
798
\textbf{{[}out{]}} \textbf{princ} - Principal name
800
\textbf{{[}in{]}} \textbf{rlen} - Realm name length
802
\textbf{{[}in{]}} \textbf{realm} - Realm name
804
\end{description}\end{quote}
805
\begin{quote}\begin{description}
806
\item[{retval}] \leavevmode\begin{itemize}
812
\item[{return}] \leavevmode\begin{itemize}
818
\end{description}\end{quote}
820
Call {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free \emph{princ} when it is no longer needed.
822
\begin{notice}{note}{Note:}
823
{\hyperref[appdev/refs/api/krb5_build_principal:krb5_build_principal]{\code{krb5\_build\_principal()}}} and {\hyperref[appdev/refs/api/krb5_build_principal_alloc_va:krb5_build_principal_alloc_va]{\code{krb5\_build\_principal\_alloc\_va()}}} perform the same task. {\hyperref[appdev/refs/api/krb5_build_principal:krb5_build_principal]{\code{krb5\_build\_principal()}}} takes variadic arguments. {\hyperref[appdev/refs/api/krb5_build_principal_alloc_va:krb5_build_principal_alloc_va]{\code{krb5\_build\_principal\_alloc\_va()}}} takes a pre-computed \emph{varargs} pointer.
827
\subsubsection{krb5\_build\_principal\_alloc\_va - Build a principal name, using a precomputed variable argument list.}
828
\label{appdev/refs/api/krb5_build_principal_alloc_va:krb5-build-principal-alloc-va-build-a-principal-name-using-a-precomputed-variable-argument-list}\label{appdev/refs/api/krb5_build_principal_alloc_va::doc}\index{krb5\_build\_principal\_alloc\_va (C function)}
830
\begin{fulllineitems}
831
\phantomsection\label{appdev/refs/api/krb5_build_principal_alloc_va:krb5_build_principal_alloc_va}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_build\_principal\_alloc\_va}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ princ}, unsigned int\emph{ rlen}, const char *\emph{ realm}, va\_list\emph{ ap}}{}
834
\begin{quote}\begin{description}
835
\item[{param}] \leavevmode
836
\textbf{{[}in{]}} \textbf{context} - Library context
838
\textbf{{[}out{]}} \textbf{princ} - Principal structure
840
\textbf{{[}in{]}} \textbf{rlen} - Realm name length
842
\textbf{{[}in{]}} \textbf{realm} - Realm name
844
\textbf{{[}in{]}} \textbf{ap} - List of char * components, ending with NULL
846
\end{description}\end{quote}
847
\begin{quote}\begin{description}
848
\item[{retval}] \leavevmode\begin{itemize}
854
\item[{return}] \leavevmode\begin{itemize}
860
\end{description}\end{quote}
862
Similar to {\hyperref[appdev/refs/api/krb5_build_principal:krb5_build_principal]{\code{krb5\_build\_principal()}}} , this function builds a principal name, but its name components are specified as a va\_list.
864
Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to deallocate \emph{princ} when it is no longer needed.
867
\subsubsection{krb5\_build\_principal\_ext - Build a principal name using length-counted strings.}
868
\label{appdev/refs/api/krb5_build_principal_ext:krb5-build-principal-ext-build-a-principal-name-using-length-counted-strings}\label{appdev/refs/api/krb5_build_principal_ext::doc}\index{krb5\_build\_principal\_ext (C function)}
870
\begin{fulllineitems}
871
\phantomsection\label{appdev/refs/api/krb5_build_principal_ext:krb5_build_principal_ext}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_build\_principal\_ext}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ princ}, unsigned int\emph{ rlen}, const char *\emph{ realm}, ...}{}
874
\begin{quote}\begin{description}
875
\item[{param}] \leavevmode
876
\textbf{{[}in{]}} \textbf{context} - Library context
878
\textbf{{[}out{]}} \textbf{princ} - Principal name
880
\textbf{{[}in{]}} \textbf{rlen} - Realm name length
882
\textbf{{[}in{]}} \textbf{realm} - Realm name
884
\end{description}\end{quote}
885
\begin{quote}\begin{description}
886
\item[{retval}] \leavevmode\begin{itemize}
892
\item[{return}] \leavevmode\begin{itemize}
898
\end{description}\end{quote}
900
This function creates a principal from a length-counted string and a variable-length list of length-counted components. The list of components ends with the first 0 length argument (so it is not possible to specify an empty component with this function). Call {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free allocated memory for principal when it is no longer needed.
903
\subsubsection{krb5\_cc\_close - Close a credential cache handle.}
904
\label{appdev/refs/api/krb5_cc_close:krb5-cc-close-close-a-credential-cache-handle}\label{appdev/refs/api/krb5_cc_close::doc}\index{krb5\_cc\_close (C function)}
906
\begin{fulllineitems}
907
\phantomsection\label{appdev/refs/api/krb5_cc_close:krb5_cc_close}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_close}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}}{}
910
\begin{quote}\begin{description}
911
\item[{param}] \leavevmode
912
\textbf{{[}in{]}} \textbf{context} - Library context
914
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
916
\end{description}\end{quote}
917
\begin{quote}\begin{description}
918
\item[{retval}] \leavevmode\begin{itemize}
924
\item[{return}] \leavevmode\begin{itemize}
930
\end{description}\end{quote}
932
This function closes a credential cache handle \emph{cache} without affecting the contents of the cache.
935
\subsubsection{krb5\_cc\_default - Resolve the default crendentials cache name.}
936
\label{appdev/refs/api/krb5_cc_default::doc}\label{appdev/refs/api/krb5_cc_default:krb5-cc-default-resolve-the-default-crendentials-cache-name}\index{krb5\_cc\_default (C function)}
938
\begin{fulllineitems}
939
\phantomsection\label{appdev/refs/api/krb5_cc_default:krb5_cc_default}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_default}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ ccache}}{}
942
\begin{quote}\begin{description}
943
\item[{param}] \leavevmode
944
\textbf{{[}inout{]}} \textbf{context} - Library context
946
\textbf{{[}out{]}} \textbf{ccache} - Pointer to credential cache name
948
\end{description}\end{quote}
949
\begin{quote}\begin{description}
950
\item[{retval}] \leavevmode\begin{itemize}
955
KV5M\_CONTEXT Bad magic number for \_krb5\_context structure
958
KRB5\_FCC\_INTERNAL The name of the default credential cache cannot be obtained
962
\item[{return}] \leavevmode\begin{itemize}
968
\end{description}\end{quote}
971
\subsubsection{krb5\_cc\_default\_name - Return the name of the default credential cache.}
972
\label{appdev/refs/api/krb5_cc_default_name::doc}\label{appdev/refs/api/krb5_cc_default_name:krb5-cc-default-name-return-the-name-of-the-default-credential-cache}\index{krb5\_cc\_default\_name (C function)}
974
\begin{fulllineitems}
975
\phantomsection\label{appdev/refs/api/krb5_cc_default_name:krb5_cc_default_name}\pysiglinewithargsret{const char * \bfcode{krb5\_cc\_default\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}}{}
978
\begin{quote}\begin{description}
979
\item[{param}] \leavevmode
980
\textbf{{[}in{]}} \textbf{context} - Library context
982
\end{description}\end{quote}
983
\begin{quote}\begin{description}
984
\item[{return}] \leavevmode\begin{itemize}
986
Name of default credential cache for the current user.
990
\end{description}\end{quote}
992
Try the environment variable \emph{KRB5CCNAME} first then, if it is not set, fall back on the default ccache name for the OS.
995
\subsubsection{krb5\_cc\_destroy - Destroy a credential cache.}
996
\label{appdev/refs/api/krb5_cc_destroy:krb5-cc-destroy-destroy-a-credential-cache}\label{appdev/refs/api/krb5_cc_destroy::doc}\index{krb5\_cc\_destroy (C function)}
998
\begin{fulllineitems}
999
\phantomsection\label{appdev/refs/api/krb5_cc_destroy:krb5_cc_destroy}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_destroy}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}}{}
1002
\begin{quote}\begin{description}
1003
\item[{param}] \leavevmode
1004
\textbf{{[}in{]}} \textbf{context} - Library context
1006
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
1008
\end{description}\end{quote}
1009
\begin{quote}\begin{description}
1010
\item[{retval}] \leavevmode\begin{itemize}
1016
\item[{return}] \leavevmode\begin{itemize}
1022
\end{description}\end{quote}
1024
This function destroys any existing contents of \emph{cache} and closes the handle to it.
1027
\subsubsection{krb5\_cc\_dup - Duplicate ccache handle.}
1028
\label{appdev/refs/api/krb5_cc_dup:krb5-cc-dup-duplicate-ccache-handle}\label{appdev/refs/api/krb5_cc_dup::doc}\index{krb5\_cc\_dup (C function)}
1030
\begin{fulllineitems}
1031
\phantomsection\label{appdev/refs/api/krb5_cc_dup:krb5_cc_dup}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_dup}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ in}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ out}}{}
1034
\begin{quote}\begin{description}
1035
\item[{param}] \leavevmode
1036
\textbf{{[}in{]}} \textbf{context} - Library context
1038
\textbf{{[}in{]}} \textbf{in} - Credential cache handle to be duplicated
1040
\textbf{{[}out{]}} \textbf{out} - Credential cache handle
1042
\end{description}\end{quote}
1044
Create a new handle referring to the same cache as \emph{in} . The new handle and \emph{in} can be closed independently.
1047
\subsubsection{krb5\_cc\_get\_name - Retrieve the name, but not type of a credential cache.}
1048
\label{appdev/refs/api/krb5_cc_get_name::doc}\label{appdev/refs/api/krb5_cc_get_name:krb5-cc-get-name-retrieve-the-name-but-not-type-of-a-credential-cache}\index{krb5\_cc\_get\_name (C function)}
1050
\begin{fulllineitems}
1051
\phantomsection\label{appdev/refs/api/krb5_cc_get_name:krb5_cc_get_name}\pysiglinewithargsret{const char * \bfcode{krb5\_cc\_get\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}}{}
1054
\begin{quote}\begin{description}
1055
\item[{param}] \leavevmode
1056
\textbf{{[}in{]}} \textbf{context} - Library context
1058
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
1060
\end{description}\end{quote}
1061
\begin{quote}\begin{description}
1062
\item[{return}] \leavevmode\begin{itemize}
1064
On success - the name of the credential cache.
1068
\end{description}\end{quote}
1070
\begin{notice}{warning}{Warning:}
1071
Returns the name of the credential cache. The result is an alias into \emph{cache} and should not be freed or modified by the caller. This name does not include the cache type, so should not be used as input to {\hyperref[appdev/refs/api/krb5_cc_resolve:krb5_cc_resolve]{\code{krb5\_cc\_resolve()}}} .
1075
\subsubsection{krb5\_cc\_get\_principal - Get the default principal of a credential cache.}
1076
\label{appdev/refs/api/krb5_cc_get_principal:krb5-cc-get-principal-get-the-default-principal-of-a-credential-cache}\label{appdev/refs/api/krb5_cc_get_principal::doc}\index{krb5\_cc\_get\_principal (C function)}
1078
\begin{fulllineitems}
1079
\phantomsection\label{appdev/refs/api/krb5_cc_get_principal:krb5_cc_get_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_get\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ principal}}{}
1082
\begin{quote}\begin{description}
1083
\item[{param}] \leavevmode
1084
\textbf{{[}in{]}} \textbf{context} - Library context
1086
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
1088
\textbf{{[}out{]}} \textbf{principal} - Primary principal
1090
\end{description}\end{quote}
1091
\begin{quote}\begin{description}
1092
\item[{retval}] \leavevmode\begin{itemize}
1098
\item[{return}] \leavevmode\begin{itemize}
1100
Kerberos error codes
1104
\end{description}\end{quote}
1106
Returns the default client principal of a credential cache as set by {\hyperref[appdev/refs/api/krb5_cc_initialize:krb5_cc_initialize]{\code{krb5\_cc\_initialize()}}} .
1108
Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free \emph{principal} when it is no longer needed.
1111
\subsubsection{krb5\_cc\_get\_type - Retrieve the type of a credential cache.}
1112
\label{appdev/refs/api/krb5_cc_get_type:krb5-cc-get-type-retrieve-the-type-of-a-credential-cache}\label{appdev/refs/api/krb5_cc_get_type::doc}\index{krb5\_cc\_get\_type (C function)}
1114
\begin{fulllineitems}
1115
\phantomsection\label{appdev/refs/api/krb5_cc_get_type:krb5_cc_get_type}\pysiglinewithargsret{const char * \bfcode{krb5\_cc\_get\_type}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}}{}
1118
\begin{quote}\begin{description}
1119
\item[{param}] \leavevmode
1120
\textbf{{[}in{]}} \textbf{context} - Library context
1122
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
1124
\end{description}\end{quote}
1125
\begin{quote}\begin{description}
1126
\item[{return}] \leavevmode\begin{itemize}
1128
The type of a credential cache as an alias that must not be modified or freed by the caller.
1132
\end{description}\end{quote}
1135
\subsubsection{krb5\_cc\_initialize - Initialize a credential cache.}
1136
\label{appdev/refs/api/krb5_cc_initialize::doc}\label{appdev/refs/api/krb5_cc_initialize:krb5-cc-initialize-initialize-a-credential-cache}\index{krb5\_cc\_initialize (C function)}
1138
\begin{fulllineitems}
1139
\phantomsection\label{appdev/refs/api/krb5_cc_initialize:krb5_cc_initialize}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_initialize}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ principal}}{}
1142
\begin{quote}\begin{description}
1143
\item[{param}] \leavevmode
1144
\textbf{{[}in{]}} \textbf{context} - Library context
1146
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
1148
\textbf{{[}in{]}} \textbf{principal} - Default principal name
1150
\end{description}\end{quote}
1151
\begin{quote}\begin{description}
1152
\item[{retval}] \leavevmode\begin{itemize}
1158
\item[{return}] \leavevmode\begin{itemize}
1160
System errors; Permission errors; Kerberos error codes
1164
\end{description}\end{quote}
1166
Destroy any existing contents of \emph{cache} and initialize it for the default principal \emph{principal} .
1169
\subsubsection{krb5\_cc\_new\_unique - Create a new credential cache of the specified type with a unique name.}
1170
\label{appdev/refs/api/krb5_cc_new_unique:krb5-cc-new-unique-create-a-new-credential-cache-of-the-specified-type-with-a-unique-name}\label{appdev/refs/api/krb5_cc_new_unique::doc}\index{krb5\_cc\_new\_unique (C function)}
1172
\begin{fulllineitems}
1173
\phantomsection\label{appdev/refs/api/krb5_cc_new_unique:krb5_cc_new_unique}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_new\_unique}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ type}, const char *\emph{ hint}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ id}}{}
1176
\begin{quote}\begin{description}
1177
\item[{param}] \leavevmode
1178
\textbf{{[}in{]}} \textbf{context} - Library context
1180
\textbf{{[}in{]}} \textbf{type} - Credential cache type name
1182
\textbf{{[}in{]}} \textbf{hint} - Unused
1184
\textbf{{[}out{]}} \textbf{id} - Credential cache handle
1186
\end{description}\end{quote}
1187
\begin{quote}\begin{description}
1188
\item[{retval}] \leavevmode\begin{itemize}
1194
\item[{return}] \leavevmode\begin{itemize}
1196
Kerberos error codes
1200
\end{description}\end{quote}
1203
\subsubsection{krb5\_cc\_resolve - Resolve a credential cache name.}
1204
\label{appdev/refs/api/krb5_cc_resolve:krb5-cc-resolve-resolve-a-credential-cache-name}\label{appdev/refs/api/krb5_cc_resolve::doc}\index{krb5\_cc\_resolve (C function)}
1206
\begin{fulllineitems}
1207
\phantomsection\label{appdev/refs/api/krb5_cc_resolve:krb5_cc_resolve}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_resolve}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ name}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ cache}}{}
1210
\begin{quote}\begin{description}
1211
\item[{param}] \leavevmode
1212
\textbf{{[}in{]}} \textbf{context} - Library context
1214
\textbf{{[}in{]}} \textbf{name} - Credential cache name to be resolved
1216
\textbf{{[}out{]}} \textbf{cache} - Credential cache handle
1218
\end{description}\end{quote}
1219
\begin{quote}\begin{description}
1220
\item[{retval}] \leavevmode\begin{itemize}
1226
\item[{return}] \leavevmode\begin{itemize}
1228
Kerberos error codes
1232
\end{description}\end{quote}
1234
Fills in \emph{cache} with a \emph{cache} handle that corresponds to the name in \emph{name} . \emph{name} should be of the form \textbf{type:residual} , and \emph{type} must be a type known to the library. If the \emph{name} does not contain a colon, interpret it as a file name.
1237
\subsubsection{krb5\_change\_password - Change a password for an existing Kerberos account.}
1238
\label{appdev/refs/api/krb5_change_password:krb5-change-password-change-a-password-for-an-existing-kerberos-account}\label{appdev/refs/api/krb5_change_password::doc}\index{krb5\_change\_password (C function)}
1240
\begin{fulllineitems}
1241
\phantomsection\label{appdev/refs/api/krb5_change_password:krb5_change_password}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_change\_password}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, char *\emph{ newpw}, int *\emph{ result\_code}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ result\_code\_string}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ result\_string}}{}
1244
\begin{quote}\begin{description}
1245
\item[{param}] \leavevmode
1246
\textbf{{[}in{]}} \textbf{context} - Library context
1248
\textbf{{[}in{]}} \textbf{creds} - Credentials for kadmin/changepw service
1250
\textbf{{[}in{]}} \textbf{newpw} - New password
1252
\textbf{{[}out{]}} \textbf{result\_code} - Numeric error code from server
1254
\textbf{{[}out{]}} \textbf{result\_code\_string} - String equivalent to \emph{result\_code}
1256
\textbf{{[}out{]}} \textbf{result\_string} - Change password response from the KDC
1258
\end{description}\end{quote}
1259
\begin{quote}\begin{description}
1260
\item[{retval}] \leavevmode\begin{itemize}
1262
0 Success; otherwise - Kerberos error codes
1266
\end{description}\end{quote}
1268
Change the password for the existing principal identified by \emph{creds} .
1270
The possible values of the output \emph{result\_code} are:
1273
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS]{\code{KRB5\_KPASSWD\_SUCCESS}}} (0) - success
1276
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED]{\code{KRB5\_KPASSWD\_MALFORMED}}} (1) - Malformed request error
1279
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR]{\code{KRB5\_KPASSWD\_HARDERROR}}} (2) - Server error
1282
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR]{\code{KRB5\_KPASSWD\_AUTHERROR}}} (3) - Authentication error
1285
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR]{\code{KRB5\_KPASSWD\_SOFTERROR}}} (4) - Password change rejected
1290
\subsubsection{krb5\_chpw\_message - Get a result message for changing or setting a password.}
1291
\label{appdev/refs/api/krb5_chpw_message:krb5-chpw-message-get-a-result-message-for-changing-or-setting-a-password}\label{appdev/refs/api/krb5_chpw_message::doc}\index{krb5\_chpw\_message (C function)}
1293
\begin{fulllineitems}
1294
\phantomsection\label{appdev/refs/api/krb5_chpw_message:krb5_chpw_message}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_chpw\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ server\_string}, char **\emph{ message\_out}}{}
1297
\begin{quote}\begin{description}
1298
\item[{param}] \leavevmode
1299
\textbf{{[}in{]}} \textbf{context} - Library context
1301
\textbf{{[}in{]}} \textbf{server\_string} - Data returned from the remote system
1303
\textbf{{[}out{]}} \textbf{message\_out} - A message displayable to the user
1305
\end{description}\end{quote}
1306
\begin{quote}\begin{description}
1307
\item[{retval}] \leavevmode\begin{itemize}
1313
\item[{return}] \leavevmode\begin{itemize}
1315
Kerberos error codes
1319
\end{description}\end{quote}
1321
This function processes the \emph{server\_string} returned in the \emph{result\_string} parameter of {\hyperref[appdev/refs/api/krb5_change_password:krb5_change_password]{\code{krb5\_change\_password()}}} , {\hyperref[appdev/refs/api/krb5_set_password:krb5_set_password]{\code{krb5\_set\_password()}}} , and related functions, and returns a displayable string. If \emph{server\_string} contains Active Directory structured policy information, it will be converted into human-readable text.
1323
Use {\hyperref[appdev/refs/api/krb5_free_string:krb5_free_string]{\code{krb5\_free\_string()}}} to free \emph{message\_out} when it is no longer needed.
1325
\begin{notice}{note}{Note:}
1326
First introduced in 1.11
1330
\subsubsection{krb5\_free\_context - Free a krb5 library context.}
1331
\label{appdev/refs/api/krb5_free_context:krb5-free-context-free-a-krb5-library-context}\label{appdev/refs/api/krb5_free_context::doc}\index{krb5\_free\_context (C function)}
1333
\begin{fulllineitems}
1334
\phantomsection\label{appdev/refs/api/krb5_free_context:krb5_free_context}\pysiglinewithargsret{void \bfcode{krb5\_free\_context}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}}{}
1337
\begin{quote}\begin{description}
1338
\item[{param}] \leavevmode
1339
\textbf{{[}in{]}} \textbf{context} - Library context
1341
\end{description}\end{quote}
1343
This function frees a \emph{context} that was created by {\hyperref[appdev/refs/api/krb5_init_context:krb5_init_context]{\code{krb5\_init\_context()}}} or {\hyperref[appdev/refs/api/krb5_init_secure_context:krb5_init_secure_context]{\code{krb5\_init\_secure\_context()}}} .
1346
\subsubsection{krb5\_free\_error\_message - Free an error message generated by krb5\_get\_error\_message() .}
1347
\label{appdev/refs/api/krb5_free_error_message:krb5-free-error-message-free-an-error-message-generated-by-krb5-get-error-message}\label{appdev/refs/api/krb5_free_error_message::doc}\index{krb5\_free\_error\_message (C function)}
1349
\begin{fulllineitems}
1350
\phantomsection\label{appdev/refs/api/krb5_free_error_message:krb5_free_error_message}\pysiglinewithargsret{void \bfcode{krb5\_free\_error\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, const char *\emph{ msg}}{}
1353
\begin{quote}\begin{description}
1354
\item[{param}] \leavevmode
1355
\textbf{{[}in{]}} \textbf{ctx} - Library context
1357
\textbf{{[}in{]}} \textbf{msg} - Pointer to error message
1359
\end{description}\end{quote}
1362
\subsubsection{krb5\_free\_principal - Free the storage assigned to a principal.}
1363
\label{appdev/refs/api/krb5_free_principal::doc}\label{appdev/refs/api/krb5_free_principal:krb5-free-principal-free-the-storage-assigned-to-a-principal}\index{krb5\_free\_principal (C function)}
1365
\begin{fulllineitems}
1366
\phantomsection\label{appdev/refs/api/krb5_free_principal:krb5_free_principal}\pysiglinewithargsret{void \bfcode{krb5\_free\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ val}}{}
1369
\begin{quote}\begin{description}
1370
\item[{param}] \leavevmode
1371
\textbf{{[}in{]}} \textbf{context} - Library context
1373
\textbf{{[}in{]}} \textbf{val} - Principal to be freed
1375
\end{description}\end{quote}
1378
\subsubsection{krb5\_fwd\_tgt\_creds - Get a forwarded TGT and format a KRB-CRED message.}
1379
\label{appdev/refs/api/krb5_fwd_tgt_creds:krb5-fwd-tgt-creds-get-a-forwarded-tgt-and-format-a-krb-cred-message}\label{appdev/refs/api/krb5_fwd_tgt_creds::doc}\index{krb5\_fwd\_tgt\_creds (C function)}
1381
\begin{fulllineitems}
1382
\phantomsection\label{appdev/refs/api/krb5_fwd_tgt_creds:krb5_fwd_tgt_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_fwd\_tgt\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, char *\emph{ rhost}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cc}, int\emph{ forwardable}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}}{}
1385
\begin{quote}\begin{description}
1386
\item[{param}] \leavevmode
1387
\textbf{{[}in{]}} \textbf{context} - Library context
1389
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
1391
\textbf{{[}in{]}} \textbf{rhost} - Remote host
1393
\textbf{{[}in{]}} \textbf{client} - Client principal of TGT
1395
\textbf{{[}in{]}} \textbf{server} - Principal of server to receive TGT
1397
\textbf{{[}in{]}} \textbf{cc} - Credential cache handle (NULL to use default)
1399
\textbf{{[}in{]}} \textbf{forwardable} - Whether TGT should be forwardable
1401
\textbf{{[}out{]}} \textbf{outbuf} - KRB-CRED message
1403
\end{description}\end{quote}
1404
\begin{quote}\begin{description}
1405
\item[{retval}] \leavevmode\begin{itemize}
1410
ENOMEM Insufficient memory
1413
KRB5\_PRINC\_NOMATCH Requested principal and ticket do not match
1416
KRB5\_NO\_TKT\_SUPPLIED Request did not supply a ticket
1419
KRB5\_CC\_BADNAME Credential cache name or principal name malformed
1423
\item[{return}] \leavevmode\begin{itemize}
1425
Kerberos error codes
1429
\end{description}\end{quote}
1431
Get a TGT for use at the remote host \emph{rhost} and format it into a KRB-CRED message. If \emph{rhost} is NULL and \emph{server} is of type {\hyperref[appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST]{\code{KRB5\_NT\_SRV\_HST}}} , the second component of \emph{server} will be used.
1434
\subsubsection{krb5\_get\_default\_realm - Retrieve the default realm.}
1435
\label{appdev/refs/api/krb5_get_default_realm:krb5-get-default-realm-retrieve-the-default-realm}\label{appdev/refs/api/krb5_get_default_realm::doc}\index{krb5\_get\_default\_realm (C function)}
1437
\begin{fulllineitems}
1438
\phantomsection\label{appdev/refs/api/krb5_get_default_realm:krb5_get_default_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_default\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, char **\emph{ lrealm}}{}
1441
\begin{quote}\begin{description}
1442
\item[{param}] \leavevmode
1443
\textbf{{[}in{]}} \textbf{context} - Library context
1445
\textbf{{[}out{]}} \textbf{lrealm} - Default realm name
1447
\end{description}\end{quote}
1448
\begin{quote}\begin{description}
1449
\item[{retval}] \leavevmode\begin{itemize}
1455
\item[{return}] \leavevmode\begin{itemize}
1457
Kerberos error codes
1461
\end{description}\end{quote}
1463
Retrieves the default realm to be used if no user-specified realm is available.
1465
Use {\hyperref[appdev/refs/api/krb5_free_default_realm:krb5_free_default_realm]{\code{krb5\_free\_default\_realm()}}} to free \emph{lrealm} when it is no longer needed.
1468
\subsubsection{krb5\_get\_error\_message - Get the (possibly extended) error message for a code.}
1469
\label{appdev/refs/api/krb5_get_error_message::doc}\label{appdev/refs/api/krb5_get_error_message:krb5-get-error-message-get-the-possibly-extended-error-message-for-a-code}\index{krb5\_get\_error\_message (C function)}
1471
\begin{fulllineitems}
1472
\phantomsection\label{appdev/refs/api/krb5_get_error_message:krb5_get_error_message}\pysiglinewithargsret{const char * \bfcode{krb5\_get\_error\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}}\emph{ code}}{}
1475
\begin{quote}\begin{description}
1476
\item[{param}] \leavevmode
1477
\textbf{{[}in{]}} \textbf{ctx} - Library context
1479
\textbf{{[}in{]}} \textbf{code} - Error code
1481
\end{description}\end{quote}
1483
The behavior of {\hyperref[appdev/refs/api/krb5_get_error_message:krb5_get_error_message]{\code{krb5\_get\_error\_message()}}} is only defined the first time it is called after a failed call to a krb5 function using the same context, and only when the error code passed in is the same as that returned by the krb5 function.
1485
This function never returns NULL, so its result may be used unconditionally as a C string.
1487
The string returned by this function must be freed using {\hyperref[appdev/refs/api/krb5_free_error_message:krb5_free_error_message]{\code{krb5\_free\_error\_message()}}}
1489
\begin{notice}{note}{Note:}
1490
Future versions may return the same string for the second and following calls.
1494
\subsubsection{krb5\_get\_host\_realm - Get the Kerberos realm names for a host.}
1495
\label{appdev/refs/api/krb5_get_host_realm:krb5-get-host-realm-get-the-kerberos-realm-names-for-a-host}\label{appdev/refs/api/krb5_get_host_realm::doc}\index{krb5\_get\_host\_realm (C function)}
1497
\begin{fulllineitems}
1498
\phantomsection\label{appdev/refs/api/krb5_get_host_realm:krb5_get_host_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_host\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ host}, char ***\emph{ realmsp}}{}
1501
\begin{quote}\begin{description}
1502
\item[{param}] \leavevmode
1503
\textbf{{[}in{]}} \textbf{context} - Library context
1505
\textbf{{[}in{]}} \textbf{host} - Host name (or NULL)
1507
\textbf{{[}out{]}} \textbf{realmsp} - Null-terminated list of realm names
1509
\end{description}\end{quote}
1510
\begin{quote}\begin{description}
1511
\item[{retval}] \leavevmode\begin{itemize}
1516
ENOMEM Insufficient memory
1520
\item[{return}] \leavevmode\begin{itemize}
1522
Kerberos error codes
1526
\end{description}\end{quote}
1528
Fill in \emph{realmsp} with a pointer to a null-terminated list of realm names. If there are no known realms for the host, a list containing the referral (empty) realm is returned.
1530
If \emph{host} is NULL, the local host's realms are determined.
1532
Use {\hyperref[appdev/refs/api/krb5_free_host_realm:krb5_free_host_realm]{\code{krb5\_free\_host\_realm()}}} to release \emph{realmsp} when it is no longer needed.
1535
\subsubsection{krb5\_get\_credentials - Get an additional ticket.}
1536
\label{appdev/refs/api/krb5_get_credentials:krb5-get-credentials-get-an-additional-ticket}\label{appdev/refs/api/krb5_get_credentials::doc}\index{krb5\_get\_credentials (C function)}
1538
\begin{fulllineitems}
1539
\phantomsection\label{appdev/refs/api/krb5_get_credentials:krb5_get_credentials}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_credentials}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ in\_creds}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ out\_creds}}{}
1542
\begin{quote}\begin{description}
1543
\item[{param}] \leavevmode
1544
\textbf{{[}in{]}} \textbf{context} - Library context
1546
\textbf{{[}in{]}} \textbf{options} - Options
1548
\textbf{{[}inout{]}} \textbf{ccache} - Credential cache handle
1550
\textbf{{[}in{]}} \textbf{in\_creds} - Input credentials
1552
\textbf{{[}out{]}} \textbf{out\_creds} - Output updated credentials
1554
\end{description}\end{quote}
1555
\begin{quote}\begin{description}
1556
\item[{retval}] \leavevmode\begin{itemize}
1562
\item[{return}] \leavevmode\begin{itemize}
1564
Kerberos error codes
1568
\end{description}\end{quote}
1570
Use \emph{ccache} or a TGS exchange to get a service ticket matching \emph{in\_creds} .
1572
Valid values for \emph{options} are:
1576
{\hyperref[appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED]{\code{KRB5\_GC\_CACHED}}} Search only credential cache for the ticket
1579
{\hyperref[appdev/refs/macros/KRB5_GC_USER_USER:KRB5_GC_USER_USER]{\code{KRB5\_GC\_USER\_USER}}} Return a user to user authentication ticket
1583
\emph{in\_creds} must be non-null. \emph{in\_creds-\textgreater{}client} and \emph{in\_creds-\textgreater{}server} must be filled in to specify the client and the server respectively. If any authorization data needs to be requested for the service ticket (such as restrictions on how the ticket can be used), specify it in \emph{in\_creds-\textgreater{}authdata} ; otherwise set \emph{in\_creds-\textgreater{}authdata} to NULL. The session key type is specified in \emph{in\_creds-\textgreater{}keyblock.enctype} , if it is nonzero.
1586
The expiration date is specified in \emph{in\_creds-\textgreater{}times.endtime} . The KDC may return tickets with an earlier expiration date. If \emph{in\_creds-\textgreater{}times.endtime} is set to 0, the latest possible expiration date will be requested.
1588
Any returned ticket and intermediate ticket-granting tickets are stored in \emph{ccache} .
1590
Use {\hyperref[appdev/refs/api/krb5_free_creds:krb5_free_creds]{\code{krb5\_free\_creds()}}} to free \emph{out\_creds} when it is no longer needed.
1593
\subsubsection{krb5\_get\_fallback\_host\_realm}
1594
\label{appdev/refs/api/krb5_get_fallback_host_realm:krb5-get-fallback-host-realm}\label{appdev/refs/api/krb5_get_fallback_host_realm::doc}\index{krb5\_get\_fallback\_host\_realm (C function)}
1596
\begin{fulllineitems}
1597
\phantomsection\label{appdev/refs/api/krb5_get_fallback_host_realm:krb5_get_fallback_host_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_fallback\_host\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ hdata}, char ***\emph{ realmsp}}{}
1600
\begin{quote}\begin{description}
1601
\item[{param}] \leavevmode
1602
\textbf{{[}in{]}} \textbf{context} - Library context
1604
\textbf{{[}in{]}} \textbf{hdata} - Host name (or NULL)
1606
\textbf{{[}out{]}} \textbf{realmsp} - Null-terminated list of realm names
1608
\end{description}\end{quote}
1610
Fill in \emph{realmsp} with a pointer to a null-terminated list of realm names obtained through heuristics or insecure resolution methods which have lower priority than KDC referrals.
1612
If \emph{host} is NULL, the local host's realms are determined.
1614
Use {\hyperref[appdev/refs/api/krb5_free_host_realm:krb5_free_host_realm]{\code{krb5\_free\_host\_realm()}}} to release \emph{realmsp} when it is no longer needed.
1617
\subsubsection{krb5\_get\_init\_creds\_keytab - Get initial credentials using a key table.}
1618
\label{appdev/refs/api/krb5_get_init_creds_keytab:krb5-get-init-creds-keytab-get-initial-credentials-using-a-key-table}\label{appdev/refs/api/krb5_get_init_creds_keytab::doc}\index{krb5\_get\_init\_creds\_keytab (C function)}
1620
\begin{fulllineitems}
1621
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_keytab:krb5_get_init_creds_keytab}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_keytab}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ arg\_keytab}, {\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}}\emph{ start\_time}, const char *\emph{ in\_tkt\_service}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ k5\_gic\_options}}{}
1624
\begin{quote}\begin{description}
1625
\item[{param}] \leavevmode
1626
\textbf{{[}in{]}} \textbf{context} - Library context
1628
\textbf{{[}out{]}} \textbf{creds} - New credentials
1630
\textbf{{[}in{]}} \textbf{client} - Client principal
1632
\textbf{{[}in{]}} \textbf{arg\_keytab} - Key table handle
1634
\textbf{{[}in{]}} \textbf{start\_time} - Time when ticket becomes valid (0 for now)
1636
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Service name of initial credentials (or NLUL)
1638
\textbf{{[}in{]}} \textbf{k5\_gic\_options} - Initial credential options
1640
\end{description}\end{quote}
1641
\begin{quote}\begin{description}
1642
\item[{retval}] \leavevmode\begin{itemize}
1648
\item[{return}] \leavevmode\begin{itemize}
1650
Kerberos error codes
1654
\end{description}\end{quote}
1656
This function requests KDC for an initial credentials for \emph{client} using a client key stored in \emph{arg\_keytab} . If \emph{in\_tkt\_service} is specified, it is parsed as a principal name (with the realm ignored) and used as the service principal for the request; otherwise the ticket-granting service is used.
1659
\subsubsection{krb5\_get\_init\_creds\_opt\_alloc - Allocate a new initial credential options structure.}
1660
\label{appdev/refs/api/krb5_get_init_creds_opt_alloc:krb5-get-init-creds-opt-alloc-allocate-a-new-initial-credential-options-structure}\label{appdev/refs/api/krb5_get_init_creds_opt_alloc::doc}\index{krb5\_get\_init\_creds\_opt\_alloc (C function)}
1662
\begin{fulllineitems}
1663
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_alloc:krb5_get_init_creds_opt_alloc}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_alloc}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} **\emph{ opt}}{}
1666
\begin{quote}\begin{description}
1667
\item[{param}] \leavevmode
1668
\textbf{{[}in{]}} \textbf{context} - Library context
1670
\textbf{{[}out{]}} \textbf{opt} - New options structure
1672
\end{description}\end{quote}
1673
\begin{quote}\begin{description}
1674
\item[{retval}] \leavevmode\begin{itemize}
1676
0 - Success; Kerberos errors otherwise.
1680
\end{description}\end{quote}
1682
This function is the preferred way to create an options structure for getting initial credentials, and is required to make use of certain options. Use {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_free:krb5_get_init_creds_opt_free]{\code{krb5\_get\_init\_creds\_opt\_free()}}} to free \emph{opt} when it is no longer needed.
1685
\subsubsection{krb5\_get\_init\_creds\_opt\_free - Free initial credential options.}
1686
\label{appdev/refs/api/krb5_get_init_creds_opt_free::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_free:krb5-get-init-creds-opt-free-free-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_free (C function)}
1688
\begin{fulllineitems}
1689
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_free:krb5_get_init_creds_opt_free}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}}{}
1692
\begin{quote}\begin{description}
1693
\item[{param}] \leavevmode
1694
\textbf{{[}in{]}} \textbf{context} - Library context
1696
\textbf{{[}in{]}} \textbf{opt} - Options structure to free
1698
\end{description}\end{quote}
1704
{\hyperref[appdev/refs/api/krb5_get_init_creds_opt_alloc:krb5_get_init_creds_opt_alloc]{\code{krb5\_get\_init\_creds\_opt\_alloc()}}}
1709
\subsubsection{krb5\_get\_init\_creds\_opt\_get\_fast\_flags - Retrieve FAST flags from initial credential options.}
1710
\label{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags:krb5-get-init-creds-opt-get-fast-flags-retrieve-fast-flags-from-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_get\_fast\_flags (C function)}
1712
\begin{fulllineitems}
1713
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags:krb5_get_init_creds_opt_get_fast_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_get\_fast\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} *\emph{ out\_flags}}{}
1716
\begin{quote}\begin{description}
1717
\item[{param}] \leavevmode
1718
\textbf{{[}in{]}} \textbf{context} - Library context
1720
\textbf{{[}in{]}} \textbf{opt} - Options
1722
\textbf{{[}out{]}} \textbf{out\_flags} - FAST flags
1724
\end{description}\end{quote}
1725
\begin{quote}\begin{description}
1726
\item[{retval}] \leavevmode\begin{itemize}
1728
0 - Success; Kerberos errors otherwise.
1732
\end{description}\end{quote}
1735
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_address\_list - Set address restrictions in initial credential options.}
1736
\label{appdev/refs/api/krb5_get_init_creds_opt_set_address_list:krb5-get-init-creds-opt-set-address-list-set-address-restrictions-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_address_list::doc}\index{krb5\_get\_init\_creds\_opt\_set\_address\_list (C function)}
1738
\begin{fulllineitems}
1739
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_address_list:krb5_get_init_creds_opt_set_address_list}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_address\_list}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} **\emph{ addresses}}{}
1742
\begin{quote}\begin{description}
1743
\item[{param}] \leavevmode
1744
\textbf{{[}in{]}} \textbf{opt} - Options structure
1746
\textbf{{[}in{]}} \textbf{addresses} - Null-terminated array of addresses
1748
\end{description}\end{quote}
1751
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_anonymous - Set or unset the anonymous flag in initial credential options.}
1752
\label{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:krb5-get-init-creds-opt-set-anonymous-set-or-unset-the-anonymous-flag-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous::doc}\index{krb5\_get\_init\_creds\_opt\_set\_anonymous (C function)}
1754
\begin{fulllineitems}
1755
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:krb5_get_init_creds_opt_set_anonymous}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_anonymous}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, int\emph{ anonymous}}{}
1758
\begin{quote}\begin{description}
1759
\item[{param}] \leavevmode
1760
\textbf{{[}in{]}} \textbf{opt} - Options structure
1762
\textbf{{[}in{]}} \textbf{anonymous} - Whether to make an anonymous request
1764
\end{description}\end{quote}
1766
This function may be used to request anonymous credentials from the KDC by setting \emph{anonymous} to non-zero. Note that anonymous credentials are only a request; clients must verify that credentials are anonymous if that is a requirement.
1769
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_canonicalize - Set or unset the canonicalize flag in initial credential options.}
1770
\label{appdev/refs/api/krb5_get_init_creds_opt_set_canonicalize:krb5-get-init-creds-opt-set-canonicalize-set-or-unset-the-canonicalize-flag-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_canonicalize::doc}\index{krb5\_get\_init\_creds\_opt\_set\_canonicalize (C function)}
1772
\begin{fulllineitems}
1773
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_canonicalize:krb5_get_init_creds_opt_set_canonicalize}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_canonicalize}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, int\emph{ canonicalize}}{}
1776
\begin{quote}\begin{description}
1777
\item[{param}] \leavevmode
1778
\textbf{{[}in{]}} \textbf{opt} - Options structure
1780
\textbf{{[}in{]}} \textbf{canonicalize} - Whether to canonicalize client principal
1782
\end{description}\end{quote}
1785
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt - Set or unset change-password-prompt flag in initial credential options.}
1786
\label{appdev/refs/api/krb5_get_init_creds_opt_set_change_password_prompt::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_change_password_prompt:krb5-get-init-creds-opt-set-change-password-prompt-set-or-unset-change-password-prompt-flag-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt (C function)}
1788
\begin{fulllineitems}
1789
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_change_password_prompt:krb5_get_init_creds_opt_set_change_password_prompt}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, int\emph{ prompt}}{}
1792
\begin{quote}\begin{description}
1793
\item[{param}] \leavevmode
1794
\textbf{{[}in{]}} \textbf{opt} - Options structure
1796
\textbf{{[}in{]}} \textbf{prompt} - Whether to prompt to change password
1798
\end{description}\end{quote}
1800
This flag is on by default. It controls whether {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} will react to an expired-password error by prompting for a new password and attempting to change the old one.
1803
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_etype\_list - Set allowable encryption types in initial credential options.}
1804
\label{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list:krb5-get-init-creds-opt-set-etype-list-set-allowable-encryption-types-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list::doc}\index{krb5\_get\_init\_creds\_opt\_set\_etype\_list (C function)}
1806
\begin{fulllineitems}
1807
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list:krb5_get_init_creds_opt_set_etype_list}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_etype\_list}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} *\emph{ etype\_list}, int\emph{ etype\_list\_length}}{}
1810
\begin{quote}\begin{description}
1811
\item[{param}] \leavevmode
1812
\textbf{{[}in{]}} \textbf{opt} - Options structure
1814
\textbf{{[}in{]}} \textbf{etype\_list} - Array of encryption types
1816
\textbf{{[}in{]}} \textbf{etype\_list\_length} - Length of \emph{etype\_list}
1818
\end{description}\end{quote}
1821
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_expire\_callback - Set an expiration callback in initial credential options.}
1822
\label{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback:krb5-get-init-creds-opt-set-expire-callback-set-an-expiration-callback-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_expire\_callback (C function)}
1824
\begin{fulllineitems}
1825
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback:krb5_get_init_creds_opt_set_expire_callback}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_expire\_callback}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_expire_callback_func:krb5_expire_callback_func]{krb5\_expire\_callback\_func}}\emph{ cb}, void *\emph{ data}}{}
1828
\begin{quote}\begin{description}
1829
\item[{param}] \leavevmode
1830
\textbf{{[}in{]}} \textbf{context} - Library context
1832
\textbf{{[}in{]}} \textbf{opt} - Options structure
1834
\textbf{{[}in{]}} \textbf{cb} - Callback function
1836
\textbf{{[}in{]}} \textbf{data} - Callback argument
1838
\end{description}\end{quote}
1840
Set a callback to receive password and account expiration times.
1842
This option only applies to {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} . \emph{cb} will be invoked if and only if credentials are successfully acquired. The callback will receive the \emph{context} from the {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} call and the \emph{data} argument supplied with this API. The remaining arguments should be interpreted as follows:
1844
If \emph{is\_last\_req} is true, then the KDC reply contained last-req entries which unambiguously indicated the password expiration, account expiration, or both. (If either value was not present, the corresponding argument will be 0.) Furthermore, a non-zero \emph{password\_expiration} should be taken as a suggestion from the KDC that a warning be displayed.
1846
If \emph{is\_last\_req} is false, then \emph{account\_expiration} will be 0 and \emph{password\_expiration} will contain the expiration time of either the password or account, or 0 if no expiration time was indicated in the KDC reply. The callback should independently decide whether to display a password expiration warning.
1848
Note that \emph{cb} may be invoked even if credentials are being acquired for the kadmin/changepw service in order to change the password. It is the caller's responsibility to avoid displaying a password expiry warning in this case.
1850
\begin{notice}{warning}{Warning:}
1851
Setting an expire callback with this API will cause {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} not to send password expiry warnings to the prompter, as it ordinarily may.
1854
\begin{notice}{note}{Note:}
1855
First introduced in 1.9
1859
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache - Set FAST armor cache in initial credential options.}
1860
\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache:krb5-get-init-creds-opt-set-fast-ccache-set-fast-armor-cache-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache (C function)}
1862
\begin{fulllineitems}
1863
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache:krb5_get_init_creds_opt_set_fast_ccache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}}{}
1866
\begin{quote}\begin{description}
1867
\item[{param}] \leavevmode
1868
\textbf{{[}in{]}} \textbf{context} - Library context
1870
\textbf{{[}in{]}} \textbf{opt} - Options
1872
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
1874
\end{description}\end{quote}
1876
This function is similar to {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name:krb5_get_init_creds_opt_set_fast_ccache_name]{\code{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name()}}} , but uses a credential cache handle instead of a name.
1878
\begin{notice}{note}{Note:}
1879
First introduced in 1.9
1883
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name - Set location of FAST armor ccache in initial credential options.}
1884
\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name:krb5-get-init-creds-opt-set-fast-ccache-name-set-location-of-fast-armor-ccache-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name::doc}\index{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name (C function)}
1886
\begin{fulllineitems}
1887
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name:krb5_get_init_creds_opt_set_fast_ccache_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, const char *\emph{ fast\_ccache\_name}}{}
1890
\begin{quote}\begin{description}
1891
\item[{param}] \leavevmode
1892
\textbf{{[}in{]}} \textbf{context} - Library context
1894
\textbf{{[}in{]}} \textbf{opt} - Options
1896
\textbf{{[}in{]}} \textbf{fast\_ccache\_name} - Credential cache name
1898
\end{description}\end{quote}
1900
Sets the location of a credential cache containing an armor ticket to protect an initial credential exchange using the FAST protocol extension.
1902
In version 1.7, setting an armor ccache requires that FAST be used for the exchange. In version 1.8 or later, setting the armor ccache causes FAST to be used if the KDC supports it; {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags:krb5_get_init_creds_opt_set_fast_flags]{\code{krb5\_get\_init\_creds\_opt\_set\_fast\_flags()}}} must be used to require that FAST be used.
1905
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_flags - Set FAST flags in initial credential options.}
1906
\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags:krb5-get-init-creds-opt-set-fast-flags-set-fast-flags-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags::doc}\index{krb5\_get\_init\_creds\_opt\_set\_fast\_flags (C function)}
1908
\begin{fulllineitems}
1909
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags:krb5_get_init_creds_opt_set_fast_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_fast\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ flags}}{}
1912
\begin{quote}\begin{description}
1913
\item[{param}] \leavevmode
1914
\textbf{{[}in{]}} \textbf{context} - Library context
1916
\textbf{{[}in{]}} \textbf{opt} - Options
1918
\textbf{{[}in{]}} \textbf{flags} - FAST flags
1920
\end{description}\end{quote}
1921
\begin{quote}\begin{description}
1922
\item[{retval}] \leavevmode\begin{itemize}
1924
0 - Success; Kerberos errors otherwise.
1928
\end{description}\end{quote}
1930
The following flag values are valid:
1933
{\hyperref[appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED]{\code{KRB5\_FAST\_REQUIRED}}} - Require FAST to be used
1938
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_forwardable - Set or unset the forwardable flag in initial credential options.}
1939
\label{appdev/refs/api/krb5_get_init_creds_opt_set_forwardable:krb5-get-init-creds-opt-set-forwardable-set-or-unset-the-forwardable-flag-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_forwardable::doc}\index{krb5\_get\_init\_creds\_opt\_set\_forwardable (C function)}
1941
\begin{fulllineitems}
1942
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_forwardable:krb5_get_init_creds_opt_set_forwardable}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_forwardable}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, int\emph{ forwardable}}{}
1945
\begin{quote}\begin{description}
1946
\item[{param}] \leavevmode
1947
\textbf{{[}in{]}} \textbf{opt} - Options structure
1949
\textbf{{[}in{]}} \textbf{forwardable} - Whether credentials should be forwardable
1951
\end{description}\end{quote}
1954
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_in\_ccache - Set an input credential cache in initial credential options.}
1955
\label{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache:krb5-get-init-creds-opt-set-in-ccache-set-an-input-credential-cache-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_in\_ccache (C function)}
1957
\begin{fulllineitems}
1958
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache:krb5_get_init_creds_opt_set_in_ccache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_in\_ccache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}}{}
1961
\begin{quote}\begin{description}
1962
\item[{param}] \leavevmode
1963
\textbf{{[}in{]}} \textbf{context} - Library context
1965
\textbf{{[}in{]}} \textbf{opt} - Options
1967
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
1969
\end{description}\end{quote}
1971
If an input credential cache is set, then the krb5\_get\_init\_creds family of APIs will read settings from it. Setting an input ccache is desirable when the application wishes to perform authentication in the same way (using the same preauthentication mechanisms, and making the same non-security- sensitive choices) as the previous authentication attempt, which stored information in the passed-in ccache.
1973
\begin{notice}{note}{Note:}
1974
First introduced in 1.11
1978
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_out\_ccache - Set an output credential cache in initial credential options.}
1979
\label{appdev/refs/api/krb5_get_init_creds_opt_set_out_ccache:krb5-get-init-creds-opt-set-out-ccache-set-an-output-credential-cache-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_out_ccache::doc}\index{krb5\_get\_init\_creds\_opt\_set\_out\_ccache (C function)}
1981
\begin{fulllineitems}
1982
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_out_ccache:krb5_get_init_creds_opt_set_out_ccache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_out\_ccache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}}{}
1985
\begin{quote}\begin{description}
1986
\item[{param}] \leavevmode
1987
\textbf{{[}in{]}} \textbf{context} - Library context
1989
\textbf{{[}in{]}} \textbf{opt} - Options
1991
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
1993
\end{description}\end{quote}
1995
If an output credential cache is set, then the krb5\_get\_init\_creds family of APIs will write credentials to it. Setting an output ccache is desirable both because it simplifies calling code and because it permits the krb5\_get\_init\_creds APIs to write out configuration information about the realm to the ccache.
1998
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_pa - Supply options for preauthentication in initial credential options.}
1999
\label{appdev/refs/api/krb5_get_init_creds_opt_set_pa::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_pa:krb5-get-init-creds-opt-set-pa-supply-options-for-preauthentication-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_pa (C function)}
2001
\begin{fulllineitems}
2002
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_pa:krb5_get_init_creds_opt_set_pa}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_pa}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, const char *\emph{ attr}, const char *\emph{ value}}{}
2005
\begin{quote}\begin{description}
2006
\item[{param}] \leavevmode
2007
\textbf{{[}in{]}} \textbf{context} - Library context
2009
\textbf{{[}in{]}} \textbf{opt} - Options structure
2011
\textbf{{[}in{]}} \textbf{attr} - Preauthentication option name
2013
\textbf{{[}in{]}} \textbf{value} - Preauthentication option value
2015
\end{description}\end{quote}
2017
This function allows the caller to supply options for preauthentication. The values of \emph{attr} and \emph{value} are supplied to each preauthentication module available within \emph{context} .
2020
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_preauth\_list - Set preauthentication types in initial credential options.}
2021
\label{appdev/refs/api/krb5_get_init_creds_opt_set_preauth_list:krb5-get-init-creds-opt-set-preauth-list-set-preauthentication-types-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_preauth_list::doc}\index{krb5\_get\_init\_creds\_opt\_set\_preauth\_list (C function)}
2023
\begin{fulllineitems}
2024
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_preauth_list:krb5_get_init_creds_opt_set_preauth_list}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_preauth\_list}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_preauthtype:krb5_preauthtype]{krb5\_preauthtype}} *\emph{ preauth\_list}, int\emph{ preauth\_list\_length}}{}
2027
\begin{quote}\begin{description}
2028
\item[{param}] \leavevmode
2029
\textbf{{[}in{]}} \textbf{opt} - Options structure
2031
\textbf{{[}in{]}} \textbf{preauth\_list} - Array of preauthentication types
2033
\textbf{{[}in{]}} \textbf{preauth\_list\_length} - Length of \emph{preauth\_list}
2035
\end{description}\end{quote}
2037
This function can be used to perform optimistic preauthentication when getting initial credentials, in combination with {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_set_salt:krb5_get_init_creds_opt_set_salt]{\code{krb5\_get\_init\_creds\_opt\_set\_salt()}}} and {\hyperref[appdev/refs/api/krb5_get_init_creds_opt_set_pa:krb5_get_init_creds_opt_set_pa]{\code{krb5\_get\_init\_creds\_opt\_set\_pa()}}} .
2040
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_proxiable - Set or unset the proxiable flag in initial credential options.}
2041
\label{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable:krb5-get-init-creds-opt-set-proxiable-set-or-unset-the-proxiable-flag-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_proxiable (C function)}
2043
\begin{fulllineitems}
2044
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable:krb5_get_init_creds_opt_set_proxiable}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_proxiable}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, int\emph{ proxiable}}{}
2047
\begin{quote}\begin{description}
2048
\item[{param}] \leavevmode
2049
\textbf{{[}in{]}} \textbf{opt} - Options structure
2051
\textbf{{[}in{]}} \textbf{proxiable} - Whether credentials should be proxiable
2053
\end{description}\end{quote}
2056
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_renew\_life - Set the ticket renewal lifetime in initial credential options.}
2057
\label{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life::doc}\label{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life:krb5-get-init-creds-opt-set-renew-life-set-the-ticket-renewal-lifetime-in-initial-credential-options}\index{krb5\_get\_init\_creds\_opt\_set\_renew\_life (C function)}
2059
\begin{fulllineitems}
2060
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life:krb5_get_init_creds_opt_set_renew_life}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_renew\_life}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}}\emph{ renew\_life}}{}
2063
\begin{quote}\begin{description}
2064
\item[{param}] \leavevmode
2065
\textbf{{[}in{]}} \textbf{opt} - Pointer to \emph{options} field
2067
\textbf{{[}in{]}} \textbf{renew\_life} - Ticket renewal lifetime
2069
\end{description}\end{quote}
2072
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_responder - Set the responder function in initial credential options.}
2073
\label{appdev/refs/api/krb5_get_init_creds_opt_set_responder:krb5-get-init-creds-opt-set-responder-set-the-responder-function-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_responder::doc}\index{krb5\_get\_init\_creds\_opt\_set\_responder (C function)}
2075
\begin{fulllineitems}
2076
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_responder:krb5_get_init_creds_opt_set_responder}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_opt\_set\_responder}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_responder_fn:krb5_responder_fn]{krb5\_responder\_fn}}\emph{ responder}, void *\emph{ data}}{}
2079
\begin{quote}\begin{description}
2080
\item[{param}] \leavevmode
2081
\textbf{{[}in{]}} \textbf{context} - Library context
2083
\textbf{{[}in{]}} \textbf{opt} - Options structure
2085
\textbf{{[}in{]}} \textbf{responder} - Responder function
2087
\textbf{{[}in{]}} \textbf{data} - Responder data argument
2089
\end{description}\end{quote}
2091
\begin{notice}{note}{Note:}
2092
First introduced in 1.11
2096
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_salt - Set salt for optimistic preauthentication in initial credential options.}
2097
\label{appdev/refs/api/krb5_get_init_creds_opt_set_salt:krb5-get-init-creds-opt-set-salt-set-salt-for-optimistic-preauthentication-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_salt::doc}\index{krb5\_get\_init\_creds\_opt\_set\_salt (C function)}
2099
\begin{fulllineitems}
2100
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_salt:krb5_get_init_creds_opt_set_salt}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_salt}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ salt}}{}
2103
\begin{quote}\begin{description}
2104
\item[{param}] \leavevmode
2105
\textbf{{[}in{]}} \textbf{opt} - Options structure
2107
\textbf{{[}in{]}} \textbf{salt} - Salt data
2109
\end{description}\end{quote}
2111
When getting initial credentials with a password, a salt string it used to convert the password to a key. Normally this salt is obtained from the first KDC reply, but when performing optimistic preauthentication, the client may need to supply the salt string with this function.
2114
\subsubsection{krb5\_get\_init\_creds\_opt\_set\_tkt\_life - Set the ticket lifetime in initial credential options.}
2115
\label{appdev/refs/api/krb5_get_init_creds_opt_set_tkt_life:krb5-get-init-creds-opt-set-tkt-life-set-the-ticket-lifetime-in-initial-credential-options}\label{appdev/refs/api/krb5_get_init_creds_opt_set_tkt_life::doc}\index{krb5\_get\_init\_creds\_opt\_set\_tkt\_life (C function)}
2117
\begin{fulllineitems}
2118
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_set_tkt_life:krb5_get_init_creds_opt_set_tkt_life}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_set\_tkt\_life}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}, {\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}}\emph{ tkt\_life}}{}
2121
\begin{quote}\begin{description}
2122
\item[{param}] \leavevmode
2123
\textbf{{[}in{]}} \textbf{opt} - Options structure
2125
\textbf{{[}in{]}} \textbf{tkt\_life} - Ticket lifetime
2127
\end{description}\end{quote}
2130
\subsubsection{krb5\_get\_init\_creds\_password - Get initial credentials using a password.}
2131
\label{appdev/refs/api/krb5_get_init_creds_password::doc}\label{appdev/refs/api/krb5_get_init_creds_password:krb5-get-init-creds-password-get-initial-credentials-using-a-password}\index{krb5\_get\_init\_creds\_password (C function)}
2133
\begin{fulllineitems}
2134
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_init\_creds\_password}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, const char *\emph{ password}, {\hyperref[appdev/refs/types/krb5_prompter_fct:krb5_prompter_fct]{krb5\_prompter\_fct}}\emph{ prompter}, void *\emph{ data}, {\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}}\emph{ start\_time}, const char *\emph{ in\_tkt\_service}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ k5\_gic\_options}}{}
2137
\begin{quote}\begin{description}
2138
\item[{param}] \leavevmode
2139
\textbf{{[}in{]}} \textbf{context} - Library context
2141
\textbf{{[}out{]}} \textbf{creds} - New credentials
2143
\textbf{{[}in{]}} \textbf{client} - Client principal
2145
\textbf{{[}in{]}} \textbf{password} - Password (or NULL)
2147
\textbf{{[}in{]}} \textbf{prompter} - Prompter function
2149
\textbf{{[}in{]}} \textbf{data} - Prompter callback data
2151
\textbf{{[}in{]}} \textbf{start\_time} - Time when ticket becomes valid (0 for now)
2153
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Service name of initial credentials (or NULL)
2155
\textbf{{[}in{]}} \textbf{k5\_gic\_options} - Initial credential options
2157
\end{description}\end{quote}
2158
\begin{quote}\begin{description}
2159
\item[{retval}] \leavevmode\begin{itemize}
2164
EINVAL Invalid argument
2167
KRB5\_KDC\_UNREACH Cannot contact any KDC for requested realm
2170
KRB5\_PREAUTH\_FAILED Generic Pre-athentication failure
2173
KRB5\_LIBOS\_PWDINTR Password read interrupted
2176
KRB5\_REALM\_CANT\_RESOLVE Cannot resolve network address for KDC in requested realm
2179
KRB5KDC\_ERR\_KEY\_EXP Password has expired
2182
KRB5\_LIBOS\_BADPWDMATCH Password mismatch
2185
KRB5\_CHPW\_PWDNULL New password cannot be zero length
2188
KRB5\_CHPW\_FAIL Password change failed
2192
\item[{return}] \leavevmode\begin{itemize}
2194
Kerberos error codes
2198
\end{description}\end{quote}
2200
This function requests KDC for an initial credentials for \emph{client} using \emph{password} . If \emph{password} is NULL, a password will be prompted for using \emph{prompter} if necessary. If \emph{in\_tkt\_service} is specified, it is parsed as a principal name (with the realm ignored) and used as the service principal for the request; otherwise the ticket-granting service is used.
2203
\subsubsection{krb5\_get\_profile - Retrieve configuration profile from the context.}
2204
\label{appdev/refs/api/krb5_get_profile::doc}\label{appdev/refs/api/krb5_get_profile:krb5-get-profile-retrieve-configuration-profile-from-the-context}\index{krb5\_get\_profile (C function)}
2206
\begin{fulllineitems}
2207
\phantomsection\label{appdev/refs/api/krb5_get_profile:krb5_get_profile}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_profile}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, struct \_profile\_t **\emph{ profile}}{}
2210
\begin{quote}\begin{description}
2211
\item[{param}] \leavevmode
2212
\textbf{{[}in{]}} \textbf{context} - Library context
2214
\textbf{{[}out{]}} \textbf{profile} - Pointer to data read from a configuration file
2216
\end{description}\end{quote}
2217
\begin{quote}\begin{description}
2218
\item[{retval}] \leavevmode\begin{itemize}
2224
\item[{return}] \leavevmode\begin{itemize}
2226
Kerberos error codes
2230
\end{description}\end{quote}
2232
This function creates a new \emph{profile} object that reflects profile in the supplied \emph{context} .
2234
The \emph{profile} object may be freed with profile\_release() function. See profile.h and profile API for more details.
2237
\subsubsection{krb5\_get\_prompt\_types - Get prompt types array from a context.}
2238
\label{appdev/refs/api/krb5_get_prompt_types::doc}\label{appdev/refs/api/krb5_get_prompt_types:krb5-get-prompt-types-get-prompt-types-array-from-a-context}\index{krb5\_get\_prompt\_types (C function)}
2240
\begin{fulllineitems}
2241
\phantomsection\label{appdev/refs/api/krb5_get_prompt_types:krb5_get_prompt_types}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_prompt_type:krb5_prompt_type]{krb5\_prompt\_type}} * \bfcode{krb5\_get\_prompt\_types}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}}{}
2244
\begin{quote}\begin{description}
2245
\item[{param}] \leavevmode
2246
\textbf{{[}in{]}} \textbf{context} - Library context
2248
\end{description}\end{quote}
2249
\begin{quote}\begin{description}
2250
\item[{return}] \leavevmode\begin{itemize}
2252
Pointer to an array of prompt types corresponding to the prompter's prompts arguments. Each type has one of the following values: KRB5\_PROMPT\_TYPE\_PASSWORD KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN KRB5\_PROMPT\_TYPE\_PREAUTH
2256
\end{description}\end{quote}
2259
\subsubsection{krb5\_get\_renewed\_creds - Get renewed credential from KDC using an existing credential.}
2260
\label{appdev/refs/api/krb5_get_renewed_creds:krb5-get-renewed-creds-get-renewed-credential-from-kdc-using-an-existing-credential}\label{appdev/refs/api/krb5_get_renewed_creds::doc}\index{krb5\_get\_renewed\_creds (C function)}
2262
\begin{fulllineitems}
2263
\phantomsection\label{appdev/refs/api/krb5_get_renewed_creds:krb5_get_renewed_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_renewed\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, const char *\emph{ in\_tkt\_service}}{}
2266
\begin{quote}\begin{description}
2267
\item[{param}] \leavevmode
2268
\textbf{{[}in{]}} \textbf{context} - Library context
2270
\textbf{{[}out{]}} \textbf{creds} - Renewed credentials
2272
\textbf{{[}in{]}} \textbf{client} - Client principal name
2274
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
2276
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Server principal string (or NULL)
2278
\end{description}\end{quote}
2279
\begin{quote}\begin{description}
2280
\item[{retval}] \leavevmode\begin{itemize}
2286
\item[{return}] \leavevmode\begin{itemize}
2288
Kerberos error codes
2292
\end{description}\end{quote}
2294
This function gets a renewed credential using an existing one from \emph{ccache} . If \emph{in\_tkt\_service} is specified, it is parsed (with the realm part ignored) and used as the server principal of the credential; otherwise, the ticket-granting service is used.
2296
If successful, the renewed credential is placed in \emph{creds} .
2299
\subsubsection{krb5\_get\_validated\_creds - Get validated credentials from the KDC.}
2300
\label{appdev/refs/api/krb5_get_validated_creds:krb5-get-validated-creds-get-validated-credentials-from-the-kdc}\label{appdev/refs/api/krb5_get_validated_creds::doc}\index{krb5\_get\_validated\_creds (C function)}
2302
\begin{fulllineitems}
2303
\phantomsection\label{appdev/refs/api/krb5_get_validated_creds:krb5_get_validated_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_validated\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, const char *\emph{ in\_tkt\_service}}{}
2306
\begin{quote}\begin{description}
2307
\item[{param}] \leavevmode
2308
\textbf{{[}in{]}} \textbf{context} - Library context
2310
\textbf{{[}out{]}} \textbf{creds} - Validated credentials
2312
\textbf{{[}in{]}} \textbf{client} - Client principal name
2314
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
2316
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Server principal string (or NULL)
2318
\end{description}\end{quote}
2319
\begin{quote}\begin{description}
2320
\item[{retval}] \leavevmode\begin{itemize}
2325
KRB5\_NO\_2ND\_TKT Request missing second ticket
2328
KRB5\_NO\_TKT\_SUPPLIED Request did not supply a ticket
2331
KRB5\_PRINC\_NOMATCH Requested principal and ticket do not match
2334
KRB5\_KDCREP\_MODIFIED KDC reply did not match expectations
2337
KRB5\_KDCREP\_SKEW Clock skew too great in KDC reply
2341
\item[{return}] \leavevmode\begin{itemize}
2343
Kerberos error codes
2347
\end{description}\end{quote}
2349
This function gets a validated credential using a postdated credential from \emph{ccache} . If \emph{in\_tkt\_service} is specified, it is parsed (with the realm part ignored) and used as the server principal of the credential; otherwise, the ticket-granting service is used.
2351
If successful, the validated credential is placed in \emph{creds} .
2354
\subsubsection{krb5\_init\_context - Create a krb5 library context.}
2355
\label{appdev/refs/api/krb5_init_context:krb5-init-context-create-a-krb5-library-context}\label{appdev/refs/api/krb5_init_context::doc}\index{krb5\_init\_context (C function)}
2357
\begin{fulllineitems}
2358
\phantomsection\label{appdev/refs/api/krb5_init_context:krb5_init_context}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_context}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}} *\emph{ context}}{}
2361
\begin{quote}\begin{description}
2362
\item[{param}] \leavevmode
2363
\textbf{{[}out{]}} \textbf{context} - Library context
2365
\end{description}\end{quote}
2366
\begin{quote}\begin{description}
2367
\item[{retval}] \leavevmode\begin{itemize}
2373
\item[{return}] \leavevmode\begin{itemize}
2375
Kerberos error codes
2379
\end{description}\end{quote}
2381
The \emph{context} must be released by calling {\hyperref[appdev/refs/api/krb5_free_context:krb5_free_context]{\code{krb5\_free\_context()}}} when it is no longer needed.
2383
\begin{notice}{warning}{Warning:}
2384
Any program or module that needs the Kerberos code to not trust the environment must use {\hyperref[appdev/refs/api/krb5_init_secure_context:krb5_init_secure_context]{\code{krb5\_init\_secure\_context()}}} , or clean out the environment.
2388
\subsubsection{krb5\_init\_secure\_context - Create a krb5 library context using only configuration files.}
2389
\label{appdev/refs/api/krb5_init_secure_context::doc}\label{appdev/refs/api/krb5_init_secure_context:krb5-init-secure-context-create-a-krb5-library-context-using-only-configuration-files}\index{krb5\_init\_secure\_context (C function)}
2391
\begin{fulllineitems}
2392
\phantomsection\label{appdev/refs/api/krb5_init_secure_context:krb5_init_secure_context}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_secure\_context}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}} *\emph{ context}}{}
2395
\begin{quote}\begin{description}
2396
\item[{param}] \leavevmode
2397
\textbf{{[}out{]}} \textbf{context} - Library context
2399
\end{description}\end{quote}
2400
\begin{quote}\begin{description}
2401
\item[{retval}] \leavevmode\begin{itemize}
2407
\item[{return}] \leavevmode\begin{itemize}
2409
Kerberos error codes
2413
\end{description}\end{quote}
2415
Create a context structure, using only system configuration files. All information passed through the environment variables is ignored.
2417
The \emph{context} must be released by calling {\hyperref[appdev/refs/api/krb5_free_context:krb5_free_context]{\code{krb5\_free\_context()}}} when it is no longer needed.
2420
\subsubsection{krb5\_is\_config\_principal - Test whether a principal is a configuration principal.}
2421
\label{appdev/refs/api/krb5_is_config_principal:krb5-is-config-principal-test-whether-a-principal-is-a-configuration-principal}\label{appdev/refs/api/krb5_is_config_principal::doc}\index{krb5\_is\_config\_principal (C function)}
2423
\begin{fulllineitems}
2424
\phantomsection\label{appdev/refs/api/krb5_is_config_principal:krb5_is_config_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_is\_config\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}}{}
2427
\begin{quote}\begin{description}
2428
\item[{param}] \leavevmode
2429
\textbf{{[}in{]}} \textbf{context} - Library context
2431
\textbf{{[}in{]}} \textbf{principal} - Principal to check
2433
\end{description}\end{quote}
2434
\begin{quote}\begin{description}
2435
\item[{return}] \leavevmode\begin{itemize}
2437
TRUE if the principal is a configuration principal (generated part of krb5\_cc\_set\_config() ); FALSE otherwise.
2441
\end{description}\end{quote}
2444
\subsubsection{krb5\_is\_thread\_safe - Test whether the Kerberos library was built with multithread support.}
2445
\label{appdev/refs/api/krb5_is_thread_safe::doc}\label{appdev/refs/api/krb5_is_thread_safe:krb5-is-thread-safe-test-whether-the-kerberos-library-was-built-with-multithread-support}\index{krb5\_is\_thread\_safe (C function)}
2447
\begin{fulllineitems}
2448
\phantomsection\label{appdev/refs/api/krb5_is_thread_safe:krb5_is_thread_safe}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_is\_thread\_safe}}{void\emph{ None}}{}
2451
\begin{quote}\begin{description}
2452
\item[{param}] \leavevmode
2455
\end{description}\end{quote}
2456
\begin{quote}\begin{description}
2457
\item[{retval}] \leavevmode\begin{itemize}
2459
TRUE if the library is threadsafe; FALSE otherwise
2463
\end{description}\end{quote}
2466
\subsubsection{krb5\_kt\_close - Close a key table handle.}
2467
\label{appdev/refs/api/krb5_kt_close:krb5-kt-close-close-a-key-table-handle}\label{appdev/refs/api/krb5_kt_close::doc}\index{krb5\_kt\_close (C function)}
2469
\begin{fulllineitems}
2470
\phantomsection\label{appdev/refs/api/krb5_kt_close:krb5_kt_close}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_close}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}}{}
2473
\begin{quote}\begin{description}
2474
\item[{param}] \leavevmode
2475
\textbf{{[}in{]}} \textbf{context} - Library context
2477
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
2479
\end{description}\end{quote}
2480
\begin{quote}\begin{description}
2481
\item[{retval}] \leavevmode\begin{itemize}
2487
\end{description}\end{quote}
2490
\subsubsection{krb5\_kt\_client\_default - Resolve the default client key table.}
2491
\label{appdev/refs/api/krb5_kt_client_default::doc}\label{appdev/refs/api/krb5_kt_client_default:krb5-kt-client-default-resolve-the-default-client-key-table}\index{krb5\_kt\_client\_default (C function)}
2493
\begin{fulllineitems}
2494
\phantomsection\label{appdev/refs/api/krb5_kt_client_default:krb5_kt_client_default}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_client\_default}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}} *\emph{ keytab\_out}}{}
2497
\begin{quote}\begin{description}
2498
\item[{param}] \leavevmode
2499
\textbf{{[}in{]}} \textbf{context} - Library context
2501
\textbf{{[}out{]}} \textbf{keytab\_out} - Key table handle
2503
\end{description}\end{quote}
2504
\begin{quote}\begin{description}
2505
\item[{retval}] \leavevmode\begin{itemize}
2511
\item[{return}] \leavevmode\begin{itemize}
2513
Kerberos error codes
2517
\end{description}\end{quote}
2519
Fill \emph{keytab\_out} with a handle to the default client key table.
2521
\begin{notice}{note}{Note:}
2522
First introduced in 1.11
2526
\subsubsection{krb5\_kt\_default - Resolve the default key table.}
2527
\label{appdev/refs/api/krb5_kt_default:krb5-kt-default-resolve-the-default-key-table}\label{appdev/refs/api/krb5_kt_default::doc}\index{krb5\_kt\_default (C function)}
2529
\begin{fulllineitems}
2530
\phantomsection\label{appdev/refs/api/krb5_kt_default:krb5_kt_default}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_default}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}} *\emph{ id}}{}
2533
\begin{quote}\begin{description}
2534
\item[{param}] \leavevmode
2535
\textbf{{[}in{]}} \textbf{context} - Library context
2537
\textbf{{[}out{]}} \textbf{id} - Key table handle
2539
\end{description}\end{quote}
2540
\begin{quote}\begin{description}
2541
\item[{retval}] \leavevmode\begin{itemize}
2547
\item[{return}] \leavevmode\begin{itemize}
2549
Kerberos error codes
2553
\end{description}\end{quote}
2555
Set \emph{id} to a handle to the default key table. The key table is not opened.
2558
\subsubsection{krb5\_kt\_default\_name - Get the default key table name.}
2559
\label{appdev/refs/api/krb5_kt_default_name::doc}\label{appdev/refs/api/krb5_kt_default_name:krb5-kt-default-name-get-the-default-key-table-name}\index{krb5\_kt\_default\_name (C function)}
2561
\begin{fulllineitems}
2562
\phantomsection\label{appdev/refs/api/krb5_kt_default_name:krb5_kt_default_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_default\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, char *\emph{ name}, int\emph{ name\_size}}{}
2565
\begin{quote}\begin{description}
2566
\item[{param}] \leavevmode
2567
\textbf{{[}in{]}} \textbf{context} - Library context
2569
\textbf{{[}out{]}} \textbf{name} - Default key table name
2571
\textbf{{[}in{]}} \textbf{name\_size} - Space available in \emph{name}
2573
\end{description}\end{quote}
2574
\begin{quote}\begin{description}
2575
\item[{retval}] \leavevmode\begin{itemize}
2580
KRB5\_CONFIG\_NOTENUFSPACE Buffer is too short
2584
\item[{return}] \leavevmode\begin{itemize}
2586
Kerberos error codes
2590
\end{description}\end{quote}
2592
Fill \emph{name} with the name of the default key table for \emph{context} .
2595
\subsubsection{krb5\_kt\_get\_name - Get a key table name.}
2596
\label{appdev/refs/api/krb5_kt_get_name::doc}\label{appdev/refs/api/krb5_kt_get_name:krb5-kt-get-name-get-a-key-table-name}\index{krb5\_kt\_get\_name (C function)}
2598
\begin{fulllineitems}
2599
\phantomsection\label{appdev/refs/api/krb5_kt_get_name:krb5_kt_get_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_get\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, char *\emph{ name}, unsigned int\emph{ namelen}}{}
2602
\begin{quote}\begin{description}
2603
\item[{param}] \leavevmode
2604
\textbf{{[}in{]}} \textbf{context} - Library context
2606
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
2608
\textbf{{[}out{]}} \textbf{name} - Key table name
2610
\textbf{{[}in{]}} \textbf{namelen} - Maximum length to fill in name
2612
\end{description}\end{quote}
2613
\begin{quote}\begin{description}
2614
\item[{retval}] \leavevmode\begin{itemize}
2619
KRB5\_KT\_NAME\_TOOLONG Key table name does not fit in namelen bytes
2623
\item[{return}] \leavevmode\begin{itemize}
2625
Kerberos error codes
2629
\end{description}\end{quote}
2631
Fill \emph{name} with the name of \emph{keytab} including the type and delimiter.
2634
\subsubsection{krb5\_kt\_get\_type - Return the type of a key table.}
2635
\label{appdev/refs/api/krb5_kt_get_type:krb5-kt-get-type-return-the-type-of-a-key-table}\label{appdev/refs/api/krb5_kt_get_type::doc}\index{krb5\_kt\_get\_type (C function)}
2637
\begin{fulllineitems}
2638
\phantomsection\label{appdev/refs/api/krb5_kt_get_type:krb5_kt_get_type}\pysiglinewithargsret{const char * \bfcode{krb5\_kt\_get\_type}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}}{}
2641
\begin{quote}\begin{description}
2642
\item[{param}] \leavevmode
2643
\textbf{{[}in{]}} \textbf{context} - Library context
2645
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
2647
\end{description}\end{quote}
2648
\begin{quote}\begin{description}
2649
\item[{return}] \leavevmode\begin{itemize}
2651
The type of a key table as an alias that must not be modified or freed by the caller.
2655
\end{description}\end{quote}
2658
\subsubsection{krb5\_kt\_resolve - Get a handle for a key table.}
2659
\label{appdev/refs/api/krb5_kt_resolve:krb5-kt-resolve-get-a-handle-for-a-key-table}\label{appdev/refs/api/krb5_kt_resolve::doc}\index{krb5\_kt\_resolve (C function)}
2661
\begin{fulllineitems}
2662
\phantomsection\label{appdev/refs/api/krb5_kt_resolve:krb5_kt_resolve}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_resolve}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ name}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}} *\emph{ ktid}}{}
2665
\begin{quote}\begin{description}
2666
\item[{param}] \leavevmode
2667
\textbf{{[}in{]}} \textbf{context} - Library context
2669
\textbf{{[}in{]}} \textbf{name} - Name of the key table
2671
\textbf{{[}out{]}} \textbf{ktid} - Key table handle
2673
\end{description}\end{quote}
2674
\begin{quote}\begin{description}
2675
\item[{retval}] \leavevmode\begin{itemize}
2681
\item[{return}] \leavevmode\begin{itemize}
2683
Kerberos error codes
2687
\end{description}\end{quote}
2689
Resolve the key table name \emph{name} and set \emph{ktid} to a handle identifying the key table. The key table is not opened.
2691
\begin{notice}{note}{Note:}
2692
\emph{name} must be of the form \textbf{type:residual} , where \emph{type} must be a type known to the library and \emph{residual} portion should be specific to the particular keytab type.
2696
\subsubsection{krb5\_kuserok - Determine if a principal is authorized to log in as a local user.}
2697
\label{appdev/refs/api/krb5_kuserok:krb5-kuserok-determine-if-a-principal-is-authorized-to-log-in-as-a-local-user}\label{appdev/refs/api/krb5_kuserok::doc}\index{krb5\_kuserok (C function)}
2699
\begin{fulllineitems}
2700
\phantomsection\label{appdev/refs/api/krb5_kuserok:krb5_kuserok}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_kuserok}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ principal}, const char *\emph{ luser}}{}
2703
\begin{quote}\begin{description}
2704
\item[{param}] \leavevmode
2705
\textbf{{[}in{]}} \textbf{context} - Library context
2707
\textbf{{[}in{]}} \textbf{principal} - Principal name
2709
\textbf{{[}in{]}} \textbf{luser} - Local username
2711
\end{description}\end{quote}
2712
\begin{quote}\begin{description}
2713
\item[{retval}] \leavevmode\begin{itemize}
2715
TRUE Principal is authorized to log in as user; FALSE otherwise.
2719
\end{description}\end{quote}
2721
Determine whether \emph{principal} is authorized to log in as a local user \emph{luser} .
2724
\subsubsection{krb5\_parse\_name - Convert a string principal name to a krb5\_principal structure.}
2725
\label{appdev/refs/api/krb5_parse_name::doc}\label{appdev/refs/api/krb5_parse_name:krb5-parse-name-convert-a-string-principal-name-to-a-krb5-principal-structure}\index{krb5\_parse\_name (C function)}
2727
\begin{fulllineitems}
2728
\phantomsection\label{appdev/refs/api/krb5_parse_name:krb5_parse_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_parse\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ name}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ principal\_out}}{}
2731
\begin{quote}\begin{description}
2732
\item[{param}] \leavevmode
2733
\textbf{{[}in{]}} \textbf{context} - Library context
2735
\textbf{{[}in{]}} \textbf{name} - String representation of a principal name
2737
\textbf{{[}out{]}} \textbf{principal\_out} - New principal
2739
\end{description}\end{quote}
2740
\begin{quote}\begin{description}
2741
\item[{retval}] \leavevmode\begin{itemize}
2747
\item[{return}] \leavevmode\begin{itemize}
2749
Kerberos error codes
2753
\end{description}\end{quote}
2755
Convert a string representation of a principal name to a krb5\_principal structure.
2757
A string representation of a Kerberos name consists of one or more principal name components, separated by slashes, optionally followed by the @ character and a realm name. If the realm name is not specified, the local realm is used.
2759
To use the slash and @ symbols as part of a component (quoted) instead of using them as a component separator or as a realm prefix), put a backslash () character in front of the symbol. Similarly, newline, tab, backspace, and NULL characters can be included in a component by using \textbf{n} , \textbf{t} , \textbf{b} or \textbf{0} , respectively.
2761
Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free \emph{principal\_out} when it is no longer needed.
2763
\begin{notice}{note}{Note:}
2764
The realm in a Kerberos \emph{name} cannot contain slash, colon, or NULL characters.
2768
\subsubsection{krb5\_parse\_name\_flags - Convert a string principal name to a krb5\_principal with flags.}
2769
\label{appdev/refs/api/krb5_parse_name_flags:krb5-parse-name-flags-convert-a-string-principal-name-to-a-krb5-principal-with-flags}\label{appdev/refs/api/krb5_parse_name_flags::doc}\index{krb5\_parse\_name\_flags (C function)}
2771
\begin{fulllineitems}
2772
\phantomsection\label{appdev/refs/api/krb5_parse_name_flags:krb5_parse_name_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_parse\_name\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ name}, int\emph{ flags}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ principal\_out}}{}
2775
\begin{quote}\begin{description}
2776
\item[{param}] \leavevmode
2777
\textbf{{[}in{]}} \textbf{context} - Library context
2779
\textbf{{[}in{]}} \textbf{name} - String representation of a principal name
2781
\textbf{{[}in{]}} \textbf{flags} - Flag
2783
\textbf{{[}out{]}} \textbf{principal\_out} - New principal
2785
\end{description}\end{quote}
2786
\begin{quote}\begin{description}
2787
\item[{retval}] \leavevmode\begin{itemize}
2793
\item[{return}] \leavevmode\begin{itemize}
2795
Kerberos error codes
2799
\end{description}\end{quote}
2801
Similar to {\hyperref[appdev/refs/api/krb5_parse_name:krb5_parse_name]{\code{krb5\_parse\_name()}}} , this function converts a single-string representation of a principal name to a krb5\_principal structure.
2803
The following flags are valid:
2807
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:KRB5_PRINCIPAL_PARSE_NO_REALM]{\code{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}}} - no realm must be present in \emph{name}
2810
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:KRB5_PRINCIPAL_PARSE_REQUIRE_REALM]{\code{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}}} - realm must be present in \emph{name}
2813
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:KRB5_PRINCIPAL_PARSE_ENTERPRISE]{\code{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}}} - create single-component enterprise principal
2816
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:KRB5_PRINCIPAL_PARSE_IGNORE_REALM]{\code{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}}} - ignore realm if present in \emph{name}
2820
If \textbf{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM} or \textbf{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM} is specified in \emph{flags} , the realm of the new principal will be empty. Otherwise, the default realm for \emph{context} will be used if \emph{name} does not specify a realm.
2823
Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free \emph{principal\_out} when it is no longer needed.
2826
\subsubsection{krb5\_principal\_compare - Compare two principals.}
2827
\label{appdev/refs/api/krb5_principal_compare:krb5-principal-compare-compare-two-principals}\label{appdev/refs/api/krb5_principal_compare::doc}\index{krb5\_principal\_compare (C function)}
2829
\begin{fulllineitems}
2830
\phantomsection\label{appdev/refs/api/krb5_principal_compare:krb5_principal_compare}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_principal\_compare}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ1}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ2}}{}
2833
\begin{quote}\begin{description}
2834
\item[{param}] \leavevmode
2835
\textbf{{[}in{]}} \textbf{context} - Library context
2837
\textbf{{[}in{]}} \textbf{princ1} - First principal
2839
\textbf{{[}in{]}} \textbf{princ2} - Second principal
2841
\end{description}\end{quote}
2842
\begin{quote}\begin{description}
2843
\item[{retval}] \leavevmode\begin{itemize}
2845
TRUE if the principals are the same; FALSE otherwise
2849
\end{description}\end{quote}
2852
\subsubsection{krb5\_principal\_compare\_any\_realm - Compare two principals ignoring realm components.}
2853
\label{appdev/refs/api/krb5_principal_compare_any_realm:krb5-principal-compare-any-realm-compare-two-principals-ignoring-realm-components}\label{appdev/refs/api/krb5_principal_compare_any_realm::doc}\index{krb5\_principal\_compare\_any\_realm (C function)}
2855
\begin{fulllineitems}
2856
\phantomsection\label{appdev/refs/api/krb5_principal_compare_any_realm:krb5_principal_compare_any_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_principal\_compare\_any\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ1}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ2}}{}
2859
\begin{quote}\begin{description}
2860
\item[{param}] \leavevmode
2861
\textbf{{[}in{]}} \textbf{context} - Library context
2863
\textbf{{[}in{]}} \textbf{princ1} - First principal
2865
\textbf{{[}in{]}} \textbf{princ2} - Second principal
2867
\end{description}\end{quote}
2868
\begin{quote}\begin{description}
2869
\item[{retval}] \leavevmode\begin{itemize}
2871
TRUE if the principals are the same; FALSE otherwise
2875
\end{description}\end{quote}
2877
Similar to {\hyperref[appdev/refs/api/krb5_principal_compare:krb5_principal_compare]{\code{krb5\_principal\_compare()}}} , but do not compare the realm components of the principals.
2880
\subsubsection{krb5\_principal\_compare\_flags - Compare two principals with additional flags.}
2881
\label{appdev/refs/api/krb5_principal_compare_flags:krb5-principal-compare-flags-compare-two-principals-with-additional-flags}\label{appdev/refs/api/krb5_principal_compare_flags::doc}\index{krb5\_principal\_compare\_flags (C function)}
2883
\begin{fulllineitems}
2884
\phantomsection\label{appdev/refs/api/krb5_principal_compare_flags:krb5_principal_compare_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_principal\_compare\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ1}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ2}, int\emph{ flags}}{}
2887
\begin{quote}\begin{description}
2888
\item[{param}] \leavevmode
2889
\textbf{{[}in{]}} \textbf{context} - Library context
2891
\textbf{{[}in{]}} \textbf{princ1} - First principal
2893
\textbf{{[}in{]}} \textbf{princ2} - Second principal
2895
\textbf{{[}in{]}} \textbf{flags} - Flags
2897
\end{description}\end{quote}
2898
\begin{quote}\begin{description}
2899
\item[{retval}] \leavevmode\begin{itemize}
2901
TRUE if the principal names are the same; FALSE otherwise
2905
\end{description}\end{quote}
2910
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:KRB5_PRINCIPAL_COMPARE_IGNORE_REALM]{\code{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}}} - ignore realm component
2913
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:KRB5_PRINCIPAL_COMPARE_ENTERPRISE]{\code{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}}} - UPNs as real principals
2916
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:KRB5_PRINCIPAL_COMPARE_CASEFOLD]{\code{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}}} case-insensitive
2919
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:KRB5_PRINCIPAL_COMPARE_UTF8]{\code{KRB5\_PRINCIPAL\_COMPARE\_UTF8}}} - treat principals as UTF-8
2927
{\hyperref[appdev/refs/api/krb5_principal_compare:krb5_principal_compare]{\code{krb5\_principal\_compare()}}}
2932
\subsubsection{krb5\_prompter\_posix - Prompt user for password.}
2933
\label{appdev/refs/api/krb5_prompter_posix:krb5-prompter-posix-prompt-user-for-password}\label{appdev/refs/api/krb5_prompter_posix::doc}\index{krb5\_prompter\_posix (C function)}
2935
\begin{fulllineitems}
2936
\phantomsection\label{appdev/refs/api/krb5_prompter_posix:krb5_prompter_posix}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_prompter\_posix}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, void *\emph{ data}, const char *\emph{ name}, const char *\emph{ banner}, int\emph{ num\_prompts}, {\hyperref[appdev/refs/types/krb5_prompt:krb5_prompt]{krb5\_prompt}}\emph{ prompts}}{}
2939
\begin{quote}\begin{description}
2940
\item[{param}] \leavevmode
2941
\textbf{{[}in{]}} \textbf{context} - Library context
2943
\textbf{data} - Unused (callback argument)
2945
\textbf{{[}in{]}} \textbf{name} - Name to output during prompt
2947
\textbf{{[}in{]}} \textbf{banner} - Banner to output during prompt
2949
\textbf{{[}in{]}} \textbf{num\_prompts} - Number of prompts in \emph{prompts}
2951
\textbf{{[}inout{]}} \textbf{prompts} - Array of output prompts and replies
2953
\end{description}\end{quote}
2954
\begin{quote}\begin{description}
2955
\item[{retval}] \leavevmode\begin{itemize}
2961
\item[{return}] \leavevmode\begin{itemize}
2963
Kerberos error codes
2967
\end{description}\end{quote}
2969
This function is intended to be used as a prompter callback for {\hyperref[appdev/refs/api/krb5_get_init_creds_password:krb5_get_init_creds_password]{\code{krb5\_get\_init\_creds\_password()}}} or {\hyperref[appdev/refs/api/krb5_init_creds_init:krb5_init_creds_init]{\code{krb5\_init\_creds\_init()}}} .
2971
Writes \emph{name} and \emph{banner} to stdout, each followed by a newline, then writes each prompt field in the \emph{prompts} array, followed by'':'', and sets the reply field of the entry to a line of input read from stdin. If the hidden flag is set for a prompt, then terminal echoing is turned off when input is read.
2974
\subsubsection{krb5\_realm\_compare - Compare the realms of two principals.}
2975
\label{appdev/refs/api/krb5_realm_compare::doc}\label{appdev/refs/api/krb5_realm_compare:krb5-realm-compare-compare-the-realms-of-two-principals}\index{krb5\_realm\_compare (C function)}
2977
\begin{fulllineitems}
2978
\phantomsection\label{appdev/refs/api/krb5_realm_compare:krb5_realm_compare}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_realm\_compare}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ1}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ2}}{}
2981
\begin{quote}\begin{description}
2982
\item[{param}] \leavevmode
2983
\textbf{{[}in{]}} \textbf{context} - Library context
2985
\textbf{{[}in{]}} \textbf{princ1} - First principal
2987
\textbf{{[}in{]}} \textbf{princ2} - Second principal
2989
\end{description}\end{quote}
2990
\begin{quote}\begin{description}
2991
\item[{retval}] \leavevmode\begin{itemize}
2993
TRUE if the realm names are the same; FALSE otherwise
2997
\end{description}\end{quote}
3000
\subsubsection{krb5\_responder\_get\_challenge - Retrieve the challenge data for a given question in the responder context.}
3001
\label{appdev/refs/api/krb5_responder_get_challenge:krb5-responder-get-challenge-retrieve-the-challenge-data-for-a-given-question-in-the-responder-context}\label{appdev/refs/api/krb5_responder_get_challenge::doc}\index{krb5\_responder\_get\_challenge (C function)}
3003
\begin{fulllineitems}
3004
\phantomsection\label{appdev/refs/api/krb5_responder_get_challenge:krb5_responder_get_challenge}\pysiglinewithargsret{const char * \bfcode{krb5\_responder\_get\_challenge}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, krb5\_responder\_context\emph{ rctx}, const char *\emph{ question}}{}
3007
\begin{quote}\begin{description}
3008
\item[{param}] \leavevmode
3009
\textbf{{[}in{]}} \textbf{ctx} - Library context
3011
\textbf{{[}in{]}} \textbf{rctx} - Responder context
3013
\textbf{{[}in{]}} \textbf{question} - Question name
3015
\end{description}\end{quote}
3017
\begin{notice}{note}{Note:}
3018
First introduced in 1.11
3022
\subsubsection{krb5\_responder\_list\_questions - List the question names contained in the responder context.}
3023
\label{appdev/refs/api/krb5_responder_list_questions::doc}\label{appdev/refs/api/krb5_responder_list_questions:krb5-responder-list-questions-list-the-question-names-contained-in-the-responder-context}\index{krb5\_responder\_list\_questions (C function)}
3025
\begin{fulllineitems}
3026
\phantomsection\label{appdev/refs/api/krb5_responder_list_questions:krb5_responder_list_questions}\pysiglinewithargsret{const char *const * \bfcode{krb5\_responder\_list\_questions}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, krb5\_responder\_context\emph{ rctx}}{}
3029
\begin{quote}\begin{description}
3030
\item[{param}] \leavevmode
3031
\textbf{{[}in{]}} \textbf{ctx} - Library context
3033
\textbf{{[}in{]}} \textbf{rctx} - Responder context
3035
\end{description}\end{quote}
3037
\begin{notice}{note}{Note:}
3038
First introduced in 1.11
3042
\subsubsection{krb5\_responder\_set\_answer - Answer a named question in the responder context.}
3043
\label{appdev/refs/api/krb5_responder_set_answer:krb5-responder-set-answer-answer-a-named-question-in-the-responder-context}\label{appdev/refs/api/krb5_responder_set_answer::doc}\index{krb5\_responder\_set\_answer (C function)}
3045
\begin{fulllineitems}
3046
\phantomsection\label{appdev/refs/api/krb5_responder_set_answer:krb5_responder_set_answer}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_responder\_set\_answer}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, krb5\_responder\_context\emph{ rctx}, const char *\emph{ question}, const char *\emph{ answer}}{}
3049
\begin{quote}\begin{description}
3050
\item[{param}] \leavevmode
3051
\textbf{{[}in{]}} \textbf{ctx} - Library context
3053
\textbf{{[}in{]}} \textbf{rctx} - Responder context
3055
\textbf{{[}in{]}} \textbf{question} - Question name
3057
\textbf{{[}in{]}} \textbf{answer} - The string to set (MUST be printable UTF-8)
3059
\end{description}\end{quote}
3061
\begin{notice}{note}{Note:}
3062
First introduced in 1.11
3066
\subsubsection{krb5\_responder\_otp\_get\_challenge - Decode the KRB5\_RESPONDER\_QUESTION\_OTP to a C struct.}
3067
\label{appdev/refs/api/krb5_responder_otp_get_challenge:krb5-responder-otp-get-challenge-decode-the-krb5-responder-question-otp-to-a-c-struct}\label{appdev/refs/api/krb5_responder_otp_get_challenge::doc}\index{krb5\_responder\_otp\_get\_challenge (C function)}
3069
\begin{fulllineitems}
3070
\phantomsection\label{appdev/refs/api/krb5_responder_otp_get_challenge:krb5_responder_otp_get_challenge}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_responder\_otp\_get\_challenge}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, krb5\_responder\_context\emph{ rctx}, {\hyperref[appdev/refs/types/krb5_responder_otp_challenge:krb5_responder_otp_challenge]{krb5\_responder\_otp\_challenge}} **\emph{ chl}}{}
3073
\begin{quote}\begin{description}
3074
\item[{param}] \leavevmode
3075
\textbf{{[}in{]}} \textbf{ctx} - Library context
3077
\textbf{{[}in{]}} \textbf{rctx} - Responder context
3079
\textbf{{[}out{]}} \textbf{chl} - Challenge structure
3081
\end{description}\end{quote}
3083
A convenience function which parses the KRB5\_RESPONDER\_QUESTION\_OTP question challenge data, making it available in native C. The main feature of this function is the ability to interact with OTP tokens without parsing the JSON.
3085
The returned value must be passed to {\hyperref[appdev/refs/api/krb5_responder_otp_challenge_free:krb5_responder_otp_challenge_free]{\code{krb5\_responder\_otp\_challenge\_free()}}} to be freed.
3087
\begin{notice}{note}{Note:}
3088
First introduced in 1.11
3092
\subsubsection{krb5\_responder\_otp\_set\_answer - Answer the KRB5\_RESPONDER\_QUESTION\_OTP question.}
3093
\label{appdev/refs/api/krb5_responder_otp_set_answer:krb5-responder-otp-set-answer-answer-the-krb5-responder-question-otp-question}\label{appdev/refs/api/krb5_responder_otp_set_answer::doc}\index{krb5\_responder\_otp\_set\_answer (C function)}
3095
\begin{fulllineitems}
3096
\phantomsection\label{appdev/refs/api/krb5_responder_otp_set_answer:krb5_responder_otp_set_answer}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_responder\_otp\_set\_answer}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, krb5\_responder\_context\emph{ rctx}, size\_t\emph{ ti}, const char *\emph{ value}, const char *\emph{ pin}}{}
3099
\begin{quote}\begin{description}
3100
\item[{param}] \leavevmode
3101
\textbf{{[}in{]}} \textbf{ctx} - Library context
3103
\textbf{{[}in{]}} \textbf{rctx} - Responder context
3105
\textbf{{[}in{]}} \textbf{ti} - The index of the tokeninfo selected
3107
\textbf{{[}in{]}} \textbf{value} - The value to set, or NULL for none
3109
\textbf{{[}in{]}} \textbf{pin} - The pin to set, or NULL for none
3111
\end{description}\end{quote}
3113
\begin{notice}{note}{Note:}
3114
First introduced in 1.11
3118
\subsubsection{krb5\_responder\_otp\_challenge\_free - Free the value returned by krb5\_responder\_otp\_get\_challenge() .}
3119
\label{appdev/refs/api/krb5_responder_otp_challenge_free:krb5-responder-otp-challenge-free-free-the-value-returned-by-krb5-responder-otp-get-challenge}\label{appdev/refs/api/krb5_responder_otp_challenge_free::doc}\index{krb5\_responder\_otp\_challenge\_free (C function)}
3121
\begin{fulllineitems}
3122
\phantomsection\label{appdev/refs/api/krb5_responder_otp_challenge_free:krb5_responder_otp_challenge_free}\pysiglinewithargsret{void \bfcode{krb5\_responder\_otp\_challenge\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, krb5\_responder\_context\emph{ rctx}, {\hyperref[appdev/refs/types/krb5_responder_otp_challenge:krb5_responder_otp_challenge]{krb5\_responder\_otp\_challenge}} *\emph{ chl}}{}
3125
\begin{quote}\begin{description}
3126
\item[{param}] \leavevmode
3127
\textbf{{[}in{]}} \textbf{ctx} - Library context
3129
\textbf{{[}in{]}} \textbf{rctx} - Responder context
3131
\textbf{{[}in{]}} \textbf{chl} - The challenge to free
3133
\end{description}\end{quote}
3135
\begin{notice}{note}{Note:}
3136
First introduced in 1.11
3140
\subsubsection{krb5\_set\_default\_realm - Override the default realm for the specified context.}
3141
\label{appdev/refs/api/krb5_set_default_realm::doc}\label{appdev/refs/api/krb5_set_default_realm:krb5-set-default-realm-override-the-default-realm-for-the-specified-context}\index{krb5\_set\_default\_realm (C function)}
3143
\begin{fulllineitems}
3144
\phantomsection\label{appdev/refs/api/krb5_set_default_realm:krb5_set_default_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_default\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ lrealm}}{}
3147
\begin{quote}\begin{description}
3148
\item[{param}] \leavevmode
3149
\textbf{{[}in{]}} \textbf{context} - Library context
3151
\textbf{{[}in{]}} \textbf{lrealm} - Realm name for the default realm
3153
\end{description}\end{quote}
3154
\begin{quote}\begin{description}
3155
\item[{retval}] \leavevmode\begin{itemize}
3161
\item[{return}] \leavevmode\begin{itemize}
3163
Kerberos error codes
3167
\end{description}\end{quote}
3169
If \emph{lrealm} is NULL, clear the default realm setting.
3172
\subsubsection{krb5\_set\_password - Set a password for a principal using specified credentials.}
3173
\label{appdev/refs/api/krb5_set_password:krb5-set-password-set-a-password-for-a-principal-using-specified-credentials}\label{appdev/refs/api/krb5_set_password::doc}\index{krb5\_set\_password (C function)}
3175
\begin{fulllineitems}
3176
\phantomsection\label{appdev/refs/api/krb5_set_password:krb5_set_password}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_password}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, char *\emph{ newpw}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ change\_password\_for}, int *\emph{ result\_code}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ result\_code\_string}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ result\_string}}{}
3179
\begin{quote}\begin{description}
3180
\item[{param}] \leavevmode
3181
\textbf{{[}in{]}} \textbf{context} - Library context
3183
\textbf{{[}in{]}} \textbf{creds} - Credentials for kadmin/changepw service
3185
\textbf{{[}in{]}} \textbf{newpw} - New password
3187
\textbf{{[}in{]}} \textbf{change\_password\_for} - Change the password for this principal
3189
\textbf{{[}out{]}} \textbf{result\_code} - Numeric error code from server
3191
\textbf{{[}out{]}} \textbf{result\_code\_string} - String equivalent to \emph{result\_code}
3193
\textbf{{[}out{]}} \textbf{result\_string} - Data returned from the remote system
3195
\end{description}\end{quote}
3196
\begin{quote}\begin{description}
3197
\item[{retval}] \leavevmode\begin{itemize}
3199
0 Success and result\_code is set to KRB5\_KPASSWD\_SUCCESS .
3203
\item[{return}] \leavevmode\begin{itemize}
3205
Kerberos error codes.
3209
\end{description}\end{quote}
3211
This function uses the credentials \emph{creds} to set the password \emph{newpw} for the principal \emph{change\_password\_for} . It implements the set password operation of RFC 3244, for interoperability with Microsoft Windows implementations.
3213
The error code and strings are returned in \emph{result\_code} , \emph{result\_code\_string} and \emph{result\_string} .
3215
\begin{notice}{note}{Note:}
3216
If \emph{change\_password\_for} is NULL, the change is performed on the current principal. If \emph{change\_password\_for} is non-null, the change is performed on the principal name passed in \emph{change\_password\_for} .
3220
\subsubsection{krb5\_set\_password\_using\_ccache - Set a password for a principal using cached credentials.}
3221
\label{appdev/refs/api/krb5_set_password_using_ccache:krb5-set-password-using-ccache-set-a-password-for-a-principal-using-cached-credentials}\label{appdev/refs/api/krb5_set_password_using_ccache::doc}\index{krb5\_set\_password\_using\_ccache (C function)}
3223
\begin{fulllineitems}
3224
\phantomsection\label{appdev/refs/api/krb5_set_password_using_ccache:krb5_set_password_using_ccache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_password\_using\_ccache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, char *\emph{ newpw}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ change\_password\_for}, int *\emph{ result\_code}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ result\_code\_string}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ result\_string}}{}
3227
\begin{quote}\begin{description}
3228
\item[{param}] \leavevmode
3229
\textbf{{[}in{]}} \textbf{context} - Library context
3231
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
3233
\textbf{{[}in{]}} \textbf{newpw} - New password
3235
\textbf{{[}in{]}} \textbf{change\_password\_for} - Change the password for this principal
3237
\textbf{{[}out{]}} \textbf{result\_code} - Numeric error code from server
3239
\textbf{{[}out{]}} \textbf{result\_code\_string} - String equivalent to \emph{result\_code}
3241
\textbf{{[}out{]}} \textbf{result\_string} - Data returned from the remote system
3243
\end{description}\end{quote}
3244
\begin{quote}\begin{description}
3245
\item[{retval}] \leavevmode\begin{itemize}
3251
\item[{return}] \leavevmode\begin{itemize}
3253
Kerberos error codes
3257
\end{description}\end{quote}
3259
This function uses the cached credentials from \emph{ccache} to set the password \emph{newpw} for the principal \emph{change\_password\_for} . It implements RFC 3244 set password operation (interoperable with MS Windows implementations) using the credential cache.
3261
The error code and strings are returned in \emph{result\_code} , \emph{result\_code\_string} and \emph{result\_string} .
3263
\begin{notice}{note}{Note:}
3264
If \emph{change\_password\_for} is set to NULL, the change is performed on the default principal in \emph{ccache} . If \emph{change\_password\_for} is non null, the change is performed on the specified principal.
3268
\subsubsection{krb5\_set\_principal\_realm - Set the realm field of a principal.}
3269
\label{appdev/refs/api/krb5_set_principal_realm::doc}\label{appdev/refs/api/krb5_set_principal_realm:krb5-set-principal-realm-set-the-realm-field-of-a-principal}\index{krb5\_set\_principal\_realm (C function)}
3271
\begin{fulllineitems}
3272
\phantomsection\label{appdev/refs/api/krb5_set_principal_realm:krb5_set_principal_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_principal\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ principal}, const char *\emph{ realm}}{}
3275
\begin{quote}\begin{description}
3276
\item[{param}] \leavevmode
3277
\textbf{{[}inout{]}} \textbf{context} - Library context
3279
\textbf{{[}in{]}} \textbf{principal} - Principal name
3281
\textbf{{[}in{]}} \textbf{realm} - Realm name
3283
\end{description}\end{quote}
3284
\begin{quote}\begin{description}
3285
\item[{retval}] \leavevmode\begin{itemize}
3291
\item[{return}] \leavevmode\begin{itemize}
3293
Kerberos error codes
3297
\end{description}\end{quote}
3299
Set the realm name part of \emph{principal} to \emph{realm} , overwriting the previous realm.
3302
\subsubsection{krb5\_set\_trace\_callback - Specify a callback function for trace events.}
3303
\label{appdev/refs/api/krb5_set_trace_callback:krb5-set-trace-callback-specify-a-callback-function-for-trace-events}\label{appdev/refs/api/krb5_set_trace_callback::doc}\index{krb5\_set\_trace\_callback (C function)}
3305
\begin{fulllineitems}
3306
\phantomsection\label{appdev/refs/api/krb5_set_trace_callback:krb5_set_trace_callback}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_trace\_callback}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_trace_callback:krb5_trace_callback]{krb5\_trace\_callback}}\emph{ fn}, void *\emph{ cb\_data}}{}
3309
\begin{quote}\begin{description}
3310
\item[{param}] \leavevmode
3311
\textbf{{[}in{]}} \textbf{context} - Library context
3313
\textbf{{[}in{]}} \textbf{fn} - Callback function
3315
\textbf{{[}in{]}} \textbf{cb\_data} - Callback data
3317
\end{description}\end{quote}
3318
\begin{quote}\begin{description}
3319
\item[{return}] \leavevmode\begin{itemize}
3321
Returns KRB5\_TRACE\_NOSUPP if tracing is not supported in the library (unless fn is NULL).
3325
\end{description}\end{quote}
3327
Specify a callback for trace events occurring in krb5 operations performed within \emph{context} . \emph{fn} will be invoked with \emph{context} as the first argument, \emph{cb\_data} as the last argument, and a pointer to a krb5\_trace\_info as the second argument. If the trace callback is reset via this function or \emph{context} is destroyed, \emph{fn} will be invoked with a NULL second argument so it can clean up \emph{cb\_data} . Supply a NULL value for \emph{fn} to disable trace callbacks within \emph{context} .
3329
\begin{notice}{note}{Note:}
3330
This function overrides the information passed through the \emph{KRB5\_TRACE} environment variable.
3333
\begin{notice}{note}{Note:}
3334
First introduced in 1.9
3338
\subsubsection{krb5\_set\_trace\_filename - Specify a file name for directing trace events.}
3339
\label{appdev/refs/api/krb5_set_trace_filename:krb5-set-trace-filename-specify-a-file-name-for-directing-trace-events}\label{appdev/refs/api/krb5_set_trace_filename::doc}\index{krb5\_set\_trace\_filename (C function)}
3341
\begin{fulllineitems}
3342
\phantomsection\label{appdev/refs/api/krb5_set_trace_filename:krb5_set_trace_filename}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_trace\_filename}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ filename}}{}
3345
\begin{quote}\begin{description}
3346
\item[{param}] \leavevmode
3347
\textbf{{[}in{]}} \textbf{context} - Library context
3349
\textbf{{[}in{]}} \textbf{filename} - File name
3351
\end{description}\end{quote}
3352
\begin{quote}\begin{description}
3353
\item[{retval}] \leavevmode\begin{itemize}
3355
KRB5\_TRACE\_NOSUPP Tracing is not supported in the library.
3359
\end{description}\end{quote}
3361
Open \emph{filename} for appending (creating it, if necessary) and set up a callback to write trace events to it.
3363
\begin{notice}{note}{Note:}
3364
This function overrides the information passed through the \emph{KRB5\_TRACE} environment variable.
3367
\begin{notice}{note}{Note:}
3368
First introduced in 1.9
3372
\subsubsection{krb5\_sname\_match - Test whether a principal matches a matching principal.}
3373
\label{appdev/refs/api/krb5_sname_match::doc}\label{appdev/refs/api/krb5_sname_match:krb5-sname-match-test-whether-a-principal-matches-a-matching-principal}\index{krb5\_sname\_match (C function)}
3375
\begin{fulllineitems}
3376
\phantomsection\label{appdev/refs/api/krb5_sname_match:krb5_sname_match}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_sname\_match}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ matching}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ}}{}
3379
\begin{quote}\begin{description}
3380
\item[{param}] \leavevmode
3381
\textbf{{[}in{]}} \textbf{context} - Library context
3383
\textbf{{[}in{]}} \textbf{matching} - Matching principal
3385
\textbf{{[}in{]}} \textbf{princ} - Principal to test
3387
\end{description}\end{quote}
3388
\begin{quote}\begin{description}
3389
\item[{return}] \leavevmode\begin{itemize}
3391
TRUE if princ matches matching , FALSE otherwise.
3395
\end{description}\end{quote}
3397
If \emph{matching} is NULL, return TRUE. If \emph{matching} is not a matching principal, return the value of krb5\_principal\_compare(context, matching, princ).
3399
\begin{notice}{note}{Note:}
3400
A matching principal is a host-based principal with an empty realm and/or second data component (hostname). Profile configuration may cause the hostname to be ignored even if it is present. A principal matches a matching principal if the former has the same non-empty (and non-ignored) components of the latter.
3404
\subsubsection{krb5\_sname\_to\_principal - Generate a full principal name from a service name.}
3405
\label{appdev/refs/api/krb5_sname_to_principal:krb5-sname-to-principal-generate-a-full-principal-name-from-a-service-name}\label{appdev/refs/api/krb5_sname_to_principal::doc}\index{krb5\_sname\_to\_principal (C function)}
3407
\begin{fulllineitems}
3408
\phantomsection\label{appdev/refs/api/krb5_sname_to_principal:krb5_sname_to_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_sname\_to\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ hostname}, const char *\emph{ sname}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}}\emph{ type}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ ret\_princ}}{}
3411
\begin{quote}\begin{description}
3412
\item[{param}] \leavevmode
3413
\textbf{{[}in{]}} \textbf{context} - Library context
3415
\textbf{{[}in{]}} \textbf{hostname} - Host name, or NULL to use local host
3417
\textbf{{[}in{]}} \textbf{sname} - Service name, or NULL to use \textbf{``host''}
3419
\textbf{{[}in{]}} \textbf{type} - Principal type
3421
\textbf{{[}out{]}} \textbf{ret\_princ} - Generated principal
3423
\end{description}\end{quote}
3424
\begin{quote}\begin{description}
3425
\item[{retval}] \leavevmode\begin{itemize}
3431
\item[{return}] \leavevmode\begin{itemize}
3433
Kerberos error codes
3437
\end{description}\end{quote}
3439
This function converts a \emph{hostname} and \emph{sname} into \emph{krb5\_principal} structure \emph{ret\_princ} . The returned principal will be of the form \emph{sname/hostname@REALM} where REALM is determined by {\hyperref[appdev/refs/api/krb5_get_host_realm:krb5_get_host_realm]{\code{krb5\_get\_host\_realm()}}} . In some cases this may be the referral (empty) realm.
3441
The \emph{type} can be one of the following:
3445
{\hyperref[appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST]{\code{KRB5\_NT\_SRV\_HST}}} canonicalizes the host name before looking up the realm and generating the principal.
3448
{\hyperref[appdev/refs/macros/KRB5_NT_UNKNOWN:KRB5_NT_UNKNOWN]{\code{KRB5\_NT\_UNKNOWN}}} accepts the hostname as given, and does not canonicalize it.
3452
Use krb5\_free\_principal to free \emph{ret\_princ} when it is no longer needed.
3456
\subsubsection{krb5\_unparse\_name - Convert a krb5\_principal structure to a string representation.}
3457
\label{appdev/refs/api/krb5_unparse_name:krb5-unparse-name-convert-a-krb5-principal-structure-to-a-string-representation}\label{appdev/refs/api/krb5_unparse_name::doc}\index{krb5\_unparse\_name (C function)}
3459
\begin{fulllineitems}
3460
\phantomsection\label{appdev/refs/api/krb5_unparse_name:krb5_unparse_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_unparse\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, register char **\emph{ name}}{}
3463
\begin{quote}\begin{description}
3464
\item[{param}] \leavevmode
3465
\textbf{{[}in{]}} \textbf{context} - Library context
3467
\textbf{{[}in{]}} \textbf{principal} - Principal
3469
\textbf{{[}out{]}} \textbf{name} - String representation of principal name
3471
\end{description}\end{quote}
3472
\begin{quote}\begin{description}
3473
\item[{retval}] \leavevmode\begin{itemize}
3479
\item[{return}] \leavevmode\begin{itemize}
3481
Kerberos error codes
3485
\end{description}\end{quote}
3487
The resulting string representation uses the format and quoting conventions described for {\hyperref[appdev/refs/api/krb5_parse_name:krb5_parse_name]{\code{krb5\_parse\_name()}}} .
3489
Use {\hyperref[appdev/refs/api/krb5_free_unparsed_name:krb5_free_unparsed_name]{\code{krb5\_free\_unparsed\_name()}}} to free \emph{name} when it is no longer needed.
3492
\subsubsection{krb5\_unparse\_name\_ext - Convert krb5\_principal structure to string and length.}
3493
\label{appdev/refs/api/krb5_unparse_name_ext:krb5-unparse-name-ext-convert-krb5-principal-structure-to-string-and-length}\label{appdev/refs/api/krb5_unparse_name_ext::doc}\index{krb5\_unparse\_name\_ext (C function)}
3495
\begin{fulllineitems}
3496
\phantomsection\label{appdev/refs/api/krb5_unparse_name_ext:krb5_unparse_name_ext}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_unparse\_name\_ext}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, char **\emph{ name}, unsigned int *\emph{ size}}{}
3499
\begin{quote}\begin{description}
3500
\item[{param}] \leavevmode
3501
\textbf{{[}in{]}} \textbf{context} - Library context
3503
\textbf{{[}in{]}} \textbf{principal} - Principal
3505
\textbf{{[}inout{]}} \textbf{name} - String representation of principal name
3507
\textbf{{[}inout{]}} \textbf{size} - Size of unparsed name
3509
\end{description}\end{quote}
3510
\begin{quote}\begin{description}
3511
\item[{retval}] \leavevmode\begin{itemize}
3517
\item[{return}] \leavevmode\begin{itemize}
3519
Kerberos error codes. On failure name is set to NULL
3523
\end{description}\end{quote}
3525
This function is similar to {\hyperref[appdev/refs/api/krb5_unparse_name:krb5_unparse_name]{\code{krb5\_unparse\_name()}}} , but allows the use of an existing buffer for the result. If size is not NULL, then \emph{name} must point to either NULL or an existing buffer of at least the size pointed to by \emph{size} . The buffer will be allocated or resized if necessary, with the new pointer stored into \emph{name} . Whether or not the buffer is resized, the necessary space for the result, including null terminator, will be stored into \emph{size} .
3527
If size is NULL, this function behaves exactly as {\hyperref[appdev/refs/api/krb5_unparse_name:krb5_unparse_name]{\code{krb5\_unparse\_name()}}} .
3530
\subsubsection{krb5\_unparse\_name\_flags - Convert krb5\_principal structure to a string with flags.}
3531
\label{appdev/refs/api/krb5_unparse_name_flags::doc}\label{appdev/refs/api/krb5_unparse_name_flags:krb5-unparse-name-flags-convert-krb5-principal-structure-to-a-string-with-flags}\index{krb5\_unparse\_name\_flags (C function)}
3533
\begin{fulllineitems}
3534
\phantomsection\label{appdev/refs/api/krb5_unparse_name_flags:krb5_unparse_name_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_unparse\_name\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, int\emph{ flags}, char **\emph{ name}}{}
3537
\begin{quote}\begin{description}
3538
\item[{param}] \leavevmode
3539
\textbf{{[}in{]}} \textbf{context} - Library context
3541
\textbf{{[}in{]}} \textbf{principal} - Principal
3543
\textbf{{[}in{]}} \textbf{flags} - Flags
3545
\textbf{{[}out{]}} \textbf{name} - String representation of principal name
3547
\end{description}\end{quote}
3548
\begin{quote}\begin{description}
3549
\item[{retval}] \leavevmode\begin{itemize}
3555
\item[{return}] \leavevmode\begin{itemize}
3557
Kerberos error codes. On failure name is set to NULL
3561
\end{description}\end{quote}
3563
Similar to {\hyperref[appdev/refs/api/krb5_unparse_name:krb5_unparse_name]{\code{krb5\_unparse\_name()}}} , this function converts a krb5\_principal structure to a string representation.
3565
The following flags are valid:
3569
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:KRB5_PRINCIPAL_UNPARSE_SHORT]{\code{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}}} - omit realm if it is the local realm
3572
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:KRB5_PRINCIPAL_UNPARSE_NO_REALM]{\code{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}}} - omit realm
3575
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:KRB5_PRINCIPAL_UNPARSE_DISPLAY]{\code{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}}} - do not quote special characters
3579
Use {\hyperref[appdev/refs/api/krb5_free_unparsed_name:krb5_free_unparsed_name]{\code{krb5\_free\_unparsed\_name()}}} to free \emph{name} when it is no longer needed.
3583
\subsubsection{krb5\_unparse\_name\_flags\_ext - Convert krb5\_principal structure to string format with flags.}
3584
\label{appdev/refs/api/krb5_unparse_name_flags_ext:krb5-unparse-name-flags-ext-convert-krb5-principal-structure-to-string-format-with-flags}\label{appdev/refs/api/krb5_unparse_name_flags_ext::doc}\index{krb5\_unparse\_name\_flags\_ext (C function)}
3586
\begin{fulllineitems}
3587
\phantomsection\label{appdev/refs/api/krb5_unparse_name_flags_ext:krb5_unparse_name_flags_ext}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_unparse\_name\_flags\_ext}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, int\emph{ flags}, char **\emph{ name}, unsigned int *\emph{ size}}{}
3590
\begin{quote}\begin{description}
3591
\item[{param}] \leavevmode
3592
\textbf{{[}in{]}} \textbf{context} - Library context
3594
\textbf{{[}in{]}} \textbf{principal} - Principal
3596
\textbf{{[}in{]}} \textbf{flags} - Flags
3598
\textbf{{[}out{]}} \textbf{name} - Single string format of principal name
3600
\textbf{{[}out{]}} \textbf{size} - Size of unparsed name buffer
3602
\end{description}\end{quote}
3603
\begin{quote}\begin{description}
3604
\item[{retval}] \leavevmode\begin{itemize}
3610
\item[{return}] \leavevmode\begin{itemize}
3612
Kerberos error codes. On failure name is set to NULL
3616
\end{description}\end{quote}
3619
\subsubsection{krb5\_us\_timeofday - Retrieve the system time of day, in sec and ms, since the epoch.}
3620
\label{appdev/refs/api/krb5_us_timeofday:krb5-us-timeofday-retrieve-the-system-time-of-day-in-sec-and-ms-since-the-epoch}\label{appdev/refs/api/krb5_us_timeofday::doc}\index{krb5\_us\_timeofday (C function)}
3622
\begin{fulllineitems}
3623
\phantomsection\label{appdev/refs/api/krb5_us_timeofday:krb5_us_timeofday}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_us\_timeofday}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} *\emph{ seconds}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} *\emph{ microseconds}}{}
3626
\begin{quote}\begin{description}
3627
\item[{param}] \leavevmode
3628
\textbf{{[}in{]}} \textbf{context} - Library context
3630
\textbf{{[}out{]}} \textbf{seconds} - System timeofday, seconds portion
3632
\textbf{{[}out{]}} \textbf{microseconds} - System timeofday, microseconds portion
3634
\end{description}\end{quote}
3635
\begin{quote}\begin{description}
3636
\item[{retval}] \leavevmode\begin{itemize}
3642
\item[{return}] \leavevmode\begin{itemize}
3644
Kerberos error codes
3648
\end{description}\end{quote}
3650
This function retrieves the system time of day with the context specific time offset adjustment.
3653
\subsubsection{krb5\_verify\_authdata\_kdc\_issued - Unwrap and verify AD-KDCIssued authorization data.}
3654
\label{appdev/refs/api/krb5_verify_authdata_kdc_issued:krb5-verify-authdata-kdc-issued-unwrap-and-verify-ad-kdcissued-authorization-data}\label{appdev/refs/api/krb5_verify_authdata_kdc_issued::doc}\index{krb5\_verify\_authdata\_kdc\_issued (C function)}
3656
\begin{fulllineitems}
3657
\phantomsection\label{appdev/refs/api/krb5_verify_authdata_kdc_issued:krb5_verify_authdata_kdc_issued}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_verify\_authdata\_kdc\_issued}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, const {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *\emph{ ad\_kdcissued}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ issuer}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ authdata}}{}
3660
\begin{quote}\begin{description}
3661
\item[{param}] \leavevmode
3662
\textbf{{[}in{]}} \textbf{context} - Library context
3664
\textbf{{[}in{]}} \textbf{key} - Session key
3666
\textbf{{[}in{]}} \textbf{ad\_kdcissued} - AD-KDCIssued authorization data to be unwrapped
3668
\textbf{{[}out{]}} \textbf{issuer} - Name of issuing principal (or NULL)
3670
\textbf{{[}out{]}} \textbf{authdata} - Unwrapped list of authorization data
3672
\end{description}\end{quote}
3674
This function unwraps an AD-KDCIssued authdatum (see RFC 4120 section 5.2.6.2) and verifies its signature against \emph{key} . The issuer field of the authdatum element is returned in \emph{issuer} , and the unwrapped list of authdata is returned in \emph{authdata} .
3677
\subsection{Rarely used public interfaces}
3678
\label{appdev/refs/api/index:rarely-used-public-interfaces}
3680
\subsubsection{krb5\_425\_conv\_principal - Convert a Kerberos V4 principal to a Kerberos V5 principal.}
3681
\label{appdev/refs/api/krb5_425_conv_principal:krb5-425-conv-principal-convert-a-kerberos-v4-principal-to-a-kerberos-v5-principal}\label{appdev/refs/api/krb5_425_conv_principal::doc}\index{krb5\_425\_conv\_principal (C function)}
3683
\begin{fulllineitems}
3684
\phantomsection\label{appdev/refs/api/krb5_425_conv_principal:krb5_425_conv_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_425\_conv\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ name}, const char *\emph{ instance}, const char *\emph{ realm}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ princ}}{}
3687
\begin{quote}\begin{description}
3688
\item[{param}] \leavevmode
3689
\textbf{{[}in{]}} \textbf{context} - Library context
3691
\textbf{{[}in{]}} \textbf{name} - V4 name
3693
\textbf{{[}in{]}} \textbf{instance} - V4 instance
3695
\textbf{{[}in{]}} \textbf{realm} - Realm
3697
\textbf{{[}out{]}} \textbf{princ} - V5 principal
3699
\end{description}\end{quote}
3700
\begin{quote}\begin{description}
3701
\item[{retval}] \leavevmode\begin{itemize}
3703
0 Success; otherwise - Kerberos error codes
3707
\end{description}\end{quote}
3709
This function builds a \emph{princ} from V4 specification based on given input \emph{name.instance@realm} .
3711
Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free \emph{princ} when it is no longer needed.
3714
\subsubsection{krb5\_524\_conv\_principal - Convert a Kerberos V5 principal to a Kerberos V4 principal.}
3715
\label{appdev/refs/api/krb5_524_conv_principal:krb5-524-conv-principal-convert-a-kerberos-v5-principal-to-a-kerberos-v4-principal}\label{appdev/refs/api/krb5_524_conv_principal::doc}\index{krb5\_524\_conv\_principal (C function)}
3717
\begin{fulllineitems}
3718
\phantomsection\label{appdev/refs/api/krb5_524_conv_principal:krb5_524_conv_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_524\_conv\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ princ}, char *\emph{ name}, char *\emph{ inst}, char *\emph{ realm}}{}
3721
\begin{quote}\begin{description}
3722
\item[{param}] \leavevmode
3723
\textbf{{[}in{]}} \textbf{context} - Library context
3725
\textbf{{[}in{]}} \textbf{princ} - V5 Principal
3727
\textbf{{[}out{]}} \textbf{name} - V4 principal's name to be filled in
3729
\textbf{{[}out{]}} \textbf{inst} - V4 principal's instance name to be filled in
3731
\textbf{{[}out{]}} \textbf{realm} - Principal's realm name to be filled in
3733
\end{description}\end{quote}
3734
\begin{quote}\begin{description}
3735
\item[{retval}] \leavevmode\begin{itemize}
3740
KRB5\_INVALID\_PRINCIPAL Invalid principal name
3743
KRB5\_CONFIG\_CANTOPEN Can't open or find Kerberos configuration file
3747
\item[{return}] \leavevmode\begin{itemize}
3749
Kerberos error codes
3753
\end{description}\end{quote}
3755
This function separates a V5 principal \emph{princ} into \emph{name} , \emph{instance} , and \emph{realm} .
3758
\subsubsection{krb5\_address\_compare - Compare two Kerberos addresses.}
3759
\label{appdev/refs/api/krb5_address_compare:krb5-address-compare-compare-two-kerberos-addresses}\label{appdev/refs/api/krb5_address_compare::doc}\index{krb5\_address\_compare (C function)}
3761
\begin{fulllineitems}
3762
\phantomsection\label{appdev/refs/api/krb5_address_compare:krb5_address_compare}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_address\_compare}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ addr1}, const {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ addr2}}{}
3765
\begin{quote}\begin{description}
3766
\item[{param}] \leavevmode
3767
\textbf{{[}in{]}} \textbf{context} - Library context
3769
\textbf{{[}in{]}} \textbf{addr1} - First address to be compared
3771
\textbf{{[}in{]}} \textbf{addr2} - Second address to be compared
3773
\end{description}\end{quote}
3774
\begin{quote}\begin{description}
3775
\item[{return}] \leavevmode\begin{itemize}
3777
TRUE if the addresses are the same, FALSE otherwise
3781
\end{description}\end{quote}
3784
\subsubsection{krb5\_address\_order - Return an ordering of the specified addresses.}
3785
\label{appdev/refs/api/krb5_address_order:krb5-address-order-return-an-ordering-of-the-specified-addresses}\label{appdev/refs/api/krb5_address_order::doc}\index{krb5\_address\_order (C function)}
3787
\begin{fulllineitems}
3788
\phantomsection\label{appdev/refs/api/krb5_address_order:krb5_address_order}\pysiglinewithargsret{int \bfcode{krb5\_address\_order}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ addr1}, const {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ addr2}}{}
3791
\begin{quote}\begin{description}
3792
\item[{param}] \leavevmode
3793
\textbf{{[}in{]}} \textbf{context} - Library context
3795
\textbf{{[}in{]}} \textbf{addr1} - First address
3797
\textbf{{[}in{]}} \textbf{addr2} - Second address
3799
\end{description}\end{quote}
3800
\begin{quote}\begin{description}
3801
\item[{retval}] \leavevmode\begin{itemize}
3803
0 The two addresses are the same
3806
\textless{} 0 First address is less than second
3809
\textgreater{} 0 First address is greater than second
3813
\end{description}\end{quote}
3816
\subsubsection{krb5\_address\_search - Search a list of addresses for a specified address.}
3817
\label{appdev/refs/api/krb5_address_search:krb5-address-search-search-a-list-of-addresses-for-a-specified-address}\label{appdev/refs/api/krb5_address_search::doc}\index{krb5\_address\_search (C function)}
3819
\begin{fulllineitems}
3820
\phantomsection\label{appdev/refs/api/krb5_address_search:krb5_address_search}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_address\_search}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ addr}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *const *\emph{ addrlist}}{}
3823
\begin{quote}\begin{description}
3824
\item[{param}] \leavevmode
3825
\textbf{{[}in{]}} \textbf{context} - Library context
3827
\textbf{{[}in{]}} \textbf{addr} - Address to search for
3829
\textbf{{[}in{]}} \textbf{addrlist} - Address list to be searched (or NULL)
3831
\end{description}\end{quote}
3832
\begin{quote}\begin{description}
3833
\item[{return}] \leavevmode\begin{itemize}
3835
TRUE if addr is listed in addrlist , or addrlist is NULL; FALSE otherwise
3839
\end{description}\end{quote}
3841
\begin{notice}{note}{Note:}
3842
If \emph{addrlist} contains only a NetBIOS addresses, it will be treated as a null list.
3846
\subsubsection{krb5\_allow\_weak\_crypto - Allow the appplication to override the profile's allow\_weak\_crypto setting.}
3847
\label{appdev/refs/api/krb5_allow_weak_crypto::doc}\label{appdev/refs/api/krb5_allow_weak_crypto:krb5-allow-weak-crypto-allow-the-appplication-to-override-the-profile-s-allow-weak-crypto-setting}\index{krb5\_allow\_weak\_crypto (C function)}
3849
\begin{fulllineitems}
3850
\phantomsection\label{appdev/refs/api/krb5_allow_weak_crypto:krb5_allow_weak_crypto}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_allow\_weak\_crypto}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}}\emph{ enable}}{}
3853
\begin{quote}\begin{description}
3854
\item[{param}] \leavevmode
3855
\textbf{{[}in{]}} \textbf{context} - Library context
3857
\textbf{{[}in{]}} \textbf{enable} - Boolean flag
3859
\end{description}\end{quote}
3860
\begin{quote}\begin{description}
3861
\item[{retval}] \leavevmode\begin{itemize}
3867
\end{description}\end{quote}
3869
This function allows an application to override the allow\_weak\_crypto setting. It is primarily for use by aklog.
3872
\subsubsection{krb5\_aname\_to\_localname - Convert a principal name to a local name.}
3873
\label{appdev/refs/api/krb5_aname_to_localname::doc}\label{appdev/refs/api/krb5_aname_to_localname:krb5-aname-to-localname-convert-a-principal-name-to-a-local-name}\index{krb5\_aname\_to\_localname (C function)}
3875
\begin{fulllineitems}
3876
\phantomsection\label{appdev/refs/api/krb5_aname_to_localname:krb5_aname_to_localname}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_aname\_to\_localname}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ aname}, int\emph{ lnsize\_in}, char *\emph{ lname}}{}
3879
\begin{quote}\begin{description}
3880
\item[{param}] \leavevmode
3881
\textbf{{[}in{]}} \textbf{context} - Library context
3883
\textbf{{[}in{]}} \textbf{aname} - Principal name
3885
\textbf{{[}in{]}} \textbf{lnsize\_in} - Space available in \emph{lname}
3887
\textbf{{[}out{]}} \textbf{lname} - Local name buffer to be filled in
3889
\end{description}\end{quote}
3890
\begin{quote}\begin{description}
3891
\item[{retval}] \leavevmode\begin{itemize}
3900
\item[{return}] \leavevmode\begin{itemize}
3902
Kerberos error codes
3906
\end{description}\end{quote}
3908
If \emph{aname} does not correspond to any local account, KRB5\_LNAME\_NOTRANS is returned. If \emph{lnsize\_in} is too small for the local name, KRB5\_CONFIG\_NOTENUFSPACE is returned.
3910
Local names, rather than principal names, can be used by programs that translate to an environment-specific name (for example, a user account name).
3913
\subsubsection{krb5\_anonymous\_principal - Build an anonymous principal.}
3914
\label{appdev/refs/api/krb5_anonymous_principal:krb5-anonymous-principal-build-an-anonymous-principal}\label{appdev/refs/api/krb5_anonymous_principal::doc}\index{krb5\_anonymous\_principal (C function)}
3916
\begin{fulllineitems}
3917
\phantomsection\label{appdev/refs/api/krb5_anonymous_principal:krb5_anonymous_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}} \bfcode{krb5\_anonymous\_principal}}{void\emph{ None}}{}
3920
\begin{quote}\begin{description}
3921
\item[{param}] \leavevmode
3924
\end{description}\end{quote}
3926
This function returns constant storage that must not be freed.
3932
{\hyperref[appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR]{\code{KRB5\_ANONYMOUS\_PRINCSTR}}}
3937
\subsubsection{krb5\_anonymous\_realm - Return an anonymous realm data.}
3938
\label{appdev/refs/api/krb5_anonymous_realm::doc}\label{appdev/refs/api/krb5_anonymous_realm:krb5-anonymous-realm-return-an-anonymous-realm-data}\index{krb5\_anonymous\_realm (C function)}
3940
\begin{fulllineitems}
3941
\phantomsection\label{appdev/refs/api/krb5_anonymous_realm:krb5_anonymous_realm}\pysiglinewithargsret{const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_anonymous\_realm}}{void\emph{ None}}{}
3944
\begin{quote}\begin{description}
3945
\item[{param}] \leavevmode
3948
\end{description}\end{quote}
3950
This function returns constant storage that must not be freed.
3956
{\hyperref[appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR]{\code{KRB5\_ANONYMOUS\_REALMSTR}}}
3961
\subsubsection{krb5\_appdefault\_boolean - Retrieve a boolean value from the appdefaults section of krb5.conf.}
3962
\label{appdev/refs/api/krb5_appdefault_boolean::doc}\label{appdev/refs/api/krb5_appdefault_boolean:krb5-appdefault-boolean-retrieve-a-boolean-value-from-the-appdefaults-section-of-krb5-conf}\index{krb5\_appdefault\_boolean (C function)}
3964
\begin{fulllineitems}
3965
\phantomsection\label{appdev/refs/api/krb5_appdefault_boolean:krb5_appdefault_boolean}\pysiglinewithargsret{void \bfcode{krb5\_appdefault\_boolean}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ appname}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ realm}, const char *\emph{ option}, int\emph{ default\_value}, int *\emph{ ret\_value}}{}
3968
\begin{quote}\begin{description}
3969
\item[{param}] \leavevmode
3970
\textbf{{[}in{]}} \textbf{context} - Library context
3972
\textbf{{[}in{]}} \textbf{appname} - Application name
3974
\textbf{{[}in{]}} \textbf{realm} - Realm name
3976
\textbf{{[}in{]}} \textbf{option} - Option to be checked
3978
\textbf{{[}in{]}} \textbf{default\_value} - Default value to return if no match is found
3980
\textbf{{[}out{]}} \textbf{ret\_value} - Boolean value of \emph{option}
3982
\end{description}\end{quote}
3984
This function gets the application defaults for \emph{option} based on the given \emph{appname} and/or \emph{realm} .
3990
{\hyperref[appdev/refs/api/krb5_appdefault_string:krb5_appdefault_string]{\code{krb5\_appdefault\_string()}}}
3995
\subsubsection{krb5\_appdefault\_string - Retrieve a string value from the appdefaults section of krb5.conf.}
3996
\label{appdev/refs/api/krb5_appdefault_string::doc}\label{appdev/refs/api/krb5_appdefault_string:krb5-appdefault-string-retrieve-a-string-value-from-the-appdefaults-section-of-krb5-conf}\index{krb5\_appdefault\_string (C function)}
3998
\begin{fulllineitems}
3999
\phantomsection\label{appdev/refs/api/krb5_appdefault_string:krb5_appdefault_string}\pysiglinewithargsret{void \bfcode{krb5\_appdefault\_string}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ appname}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ realm}, const char *\emph{ option}, const char *\emph{ default\_value}, char **\emph{ ret\_value}}{}
4002
\begin{quote}\begin{description}
4003
\item[{param}] \leavevmode
4004
\textbf{{[}in{]}} \textbf{context} - Library context
4006
\textbf{{[}in{]}} \textbf{appname} - Application name
4008
\textbf{{[}in{]}} \textbf{realm} - Realm name
4010
\textbf{{[}in{]}} \textbf{option} - Option to be checked
4012
\textbf{{[}in{]}} \textbf{default\_value} - Default value to return if no match is found
4014
\textbf{{[}out{]}} \textbf{ret\_value} - String value of \emph{option}
4016
\end{description}\end{quote}
4018
This function gets the application defaults for \emph{option} based on the given \emph{appname} and/or \emph{realm} .
4024
{\hyperref[appdev/refs/api/krb5_appdefault_boolean:krb5_appdefault_boolean]{\code{krb5\_appdefault\_boolean()}}}
4029
\subsubsection{krb5\_auth\_con\_free - Free a krb5\_auth\_context structure.}
4030
\label{appdev/refs/api/krb5_auth_con_free:krb5-auth-con-free-free-a-krb5-auth-context-structure}\label{appdev/refs/api/krb5_auth_con_free::doc}\index{krb5\_auth\_con\_free (C function)}
4032
\begin{fulllineitems}
4033
\phantomsection\label{appdev/refs/api/krb5_auth_con_free:krb5_auth_con_free}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}}{}
4036
\begin{quote}\begin{description}
4037
\item[{param}] \leavevmode
4038
\textbf{{[}in{]}} \textbf{context} - Library context
4040
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context to be freed
4042
\end{description}\end{quote}
4043
\begin{quote}\begin{description}
4044
\item[{retval}] \leavevmode\begin{itemize}
4050
\end{description}\end{quote}
4052
This function frees an auth context allocated by {\hyperref[appdev/refs/api/krb5_auth_con_init:krb5_auth_con_init]{\code{krb5\_auth\_con\_init()}}} .
4055
\subsubsection{krb5\_auth\_con\_genaddrs - Generate auth context addresses from a connected socket.}
4056
\label{appdev/refs/api/krb5_auth_con_genaddrs::doc}\label{appdev/refs/api/krb5_auth_con_genaddrs:krb5-auth-con-genaddrs-generate-auth-context-addresses-from-a-connected-socket}\index{krb5\_auth\_con\_genaddrs (C function)}
4058
\begin{fulllineitems}
4059
\phantomsection\label{appdev/refs/api/krb5_auth_con_genaddrs:krb5_auth_con_genaddrs}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_genaddrs}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, int\emph{ infd}, int\emph{ flags}}{}
4062
\begin{quote}\begin{description}
4063
\item[{param}] \leavevmode
4064
\textbf{{[}in{]}} \textbf{context} - Library context
4066
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4068
\textbf{{[}in{]}} \textbf{infd} - Connected socket descriptor
4070
\textbf{{[}in{]}} \textbf{flags} - Flags
4072
\end{description}\end{quote}
4073
\begin{quote}\begin{description}
4074
\item[{retval}] \leavevmode\begin{itemize}
4076
0 Success; otherwise - Kerberos error codes
4080
\end{description}\end{quote}
4082
This function sets the local and/or remote addresses in \emph{auth\_context} based on the local and remote endpoints of the socket \emph{infd} . The following flags determine the operations performed:
4085
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR]{\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}}} Generate local address.
4088
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR]{\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}}} Generate remote address.
4091
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR]{\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}}} Generate local address and port.
4094
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR]{\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}}} Generate remote address and port.
4099
\subsubsection{krb5\_auth\_con\_get\_checksum\_func - Get the checksum callback from an auth context.}
4100
\label{appdev/refs/api/krb5_auth_con_get_checksum_func::doc}\label{appdev/refs/api/krb5_auth_con_get_checksum_func:krb5-auth-con-get-checksum-func-get-the-checksum-callback-from-an-auth-context}\index{krb5\_auth\_con\_get\_checksum\_func (C function)}
4102
\begin{fulllineitems}
4103
\phantomsection\label{appdev/refs/api/krb5_auth_con_get_checksum_func:krb5_auth_con_get_checksum_func}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_get\_checksum\_func}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_mk_req_checksum_func:krb5_mk_req_checksum_func]{krb5\_mk\_req\_checksum\_func}} *\emph{ func}, void **\emph{ data}}{}
4106
\begin{quote}\begin{description}
4107
\item[{param}] \leavevmode
4108
\textbf{{[}in{]}} \textbf{context} - Library context
4110
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4112
\textbf{{[}out{]}} \textbf{func} - Checksum callback
4114
\textbf{{[}out{]}} \textbf{data} - Callback argument
4116
\end{description}\end{quote}
4117
\begin{quote}\begin{description}
4118
\item[{retval}] \leavevmode\begin{itemize}
4124
\end{description}\end{quote}
4127
\subsubsection{krb5\_auth\_con\_getaddrs - Retrieve address fields from an auth context.}
4128
\label{appdev/refs/api/krb5_auth_con_getaddrs:krb5-auth-con-getaddrs-retrieve-address-fields-from-an-auth-context}\label{appdev/refs/api/krb5_auth_con_getaddrs::doc}\index{krb5\_auth\_con\_getaddrs (C function)}
4130
\begin{fulllineitems}
4131
\phantomsection\label{appdev/refs/api/krb5_auth_con_getaddrs:krb5_auth_con_getaddrs}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getaddrs}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} **\emph{ local\_addr}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} **\emph{ remote\_addr}}{}
4134
\begin{quote}\begin{description}
4135
\item[{param}] \leavevmode
4136
\textbf{{[}in{]}} \textbf{context} - Library context
4138
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4140
\textbf{{[}out{]}} \textbf{local\_addr} - Local address (NULL if not needed)
4142
\textbf{{[}out{]}} \textbf{remote\_addr} - Remote address (NULL if not needed)
4144
\end{description}\end{quote}
4145
\begin{quote}\begin{description}
4146
\item[{retval}] \leavevmode\begin{itemize}
4148
0 Success; otherwise - Kerberos error codes
4152
\end{description}\end{quote}
4155
\subsubsection{krb5\_auth\_con\_getauthenticator - Retrieve the authenticator from an auth context.}
4156
\label{appdev/refs/api/krb5_auth_con_getauthenticator:krb5-auth-con-getauthenticator-retrieve-the-authenticator-from-an-auth-context}\label{appdev/refs/api/krb5_auth_con_getauthenticator::doc}\index{krb5\_auth\_con\_getauthenticator (C function)}
4158
\begin{fulllineitems}
4159
\phantomsection\label{appdev/refs/api/krb5_auth_con_getauthenticator:krb5_auth_con_getauthenticator}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getauthenticator}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_authenticator:krb5_authenticator]{krb5\_authenticator}} **\emph{ authenticator}}{}
4162
\begin{quote}\begin{description}
4163
\item[{param}] \leavevmode
4164
\textbf{{[}in{]}} \textbf{context} - Library context
4166
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4168
\textbf{{[}out{]}} \textbf{authenticator} - Authenticator
4170
\end{description}\end{quote}
4171
\begin{quote}\begin{description}
4172
\item[{retval}] \leavevmode\begin{itemize}
4174
0 Success. Otherwise - Kerberos error codes
4178
\end{description}\end{quote}
4180
Use {\hyperref[appdev/refs/api/krb5_free_authenticator:krb5_free_authenticator]{\code{krb5\_free\_authenticator()}}} to free \emph{authenticator} when it is no longer needed.
4183
\subsubsection{krb5\_auth\_con\_getflags - Retrieve flags from a krb5\_auth\_context structure.}
4184
\label{appdev/refs/api/krb5_auth_con_getflags:krb5-auth-con-getflags-retrieve-flags-from-a-krb5-auth-context-structure}\label{appdev/refs/api/krb5_auth_con_getflags::doc}\index{krb5\_auth\_con\_getflags (C function)}
4186
\begin{fulllineitems}
4187
\phantomsection\label{appdev/refs/api/krb5_auth_con_getflags:krb5_auth_con_getflags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getflags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} *\emph{ flags}}{}
4190
\begin{quote}\begin{description}
4191
\item[{param}] \leavevmode
4192
\textbf{{[}in{]}} \textbf{context} - Library context
4194
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4196
\textbf{{[}out{]}} \textbf{flags} - Flags bit mask
4198
\end{description}\end{quote}
4199
\begin{quote}\begin{description}
4200
\item[{retval}] \leavevmode\begin{itemize}
4206
\end{description}\end{quote}
4208
Valid values for \emph{flags} are:
4211
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} Use timestamps
4214
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} Save timestamps
4217
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} Use sequence numbers
4220
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} Save sequence numbers
4225
\subsubsection{krb5\_auth\_con\_getkey - Retrieve the session key from an auth context as a keyblock.}
4226
\label{appdev/refs/api/krb5_auth_con_getkey::doc}\label{appdev/refs/api/krb5_auth_con_getkey:krb5-auth-con-getkey-retrieve-the-session-key-from-an-auth-context-as-a-keyblock}\index{krb5\_auth\_con\_getkey (C function)}
4228
\begin{fulllineitems}
4229
\phantomsection\label{appdev/refs/api/krb5_auth_con_getkey:krb5_auth_con_getkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ keyblock}}{}
4232
\begin{quote}\begin{description}
4233
\item[{param}] \leavevmode
4234
\textbf{{[}in{]}} \textbf{context} - Library context
4236
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4238
\textbf{{[}out{]}} \textbf{keyblock} - Session key
4240
\end{description}\end{quote}
4241
\begin{quote}\begin{description}
4242
\item[{retval}] \leavevmode\begin{itemize}
4244
0 Success. Otherwise - Kerberos error codes
4248
\end{description}\end{quote}
4250
This function creates a keyblock containing the session key from \emph{auth\_context} . Use {\hyperref[appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock]{\code{krb5\_free\_keyblock()}}} to free \emph{keyblock} when it is no longer needed
4253
\subsubsection{krb5\_auth\_con\_getkey\_k - Retrieve the session key from an auth context.}
4254
\label{appdev/refs/api/krb5_auth_con_getkey_k:krb5-auth-con-getkey-k-retrieve-the-session-key-from-an-auth-context}\label{appdev/refs/api/krb5_auth_con_getkey_k::doc}\index{krb5\_auth\_con\_getkey\_k (C function)}
4256
\begin{fulllineitems}
4257
\phantomsection\label{appdev/refs/api/krb5_auth_con_getkey_k:krb5_auth_con_getkey_k}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getkey\_k}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}} *\emph{ key}}{}
4260
\begin{quote}\begin{description}
4261
\item[{param}] \leavevmode
4262
\textbf{{[}in{]}} \textbf{context} - Library context
4264
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4266
\textbf{{[}out{]}} \textbf{key} - Session key
4268
\end{description}\end{quote}
4269
\begin{quote}\begin{description}
4270
\item[{retval}] \leavevmode\begin{itemize}
4276
\end{description}\end{quote}
4278
This function sets \emph{key} to the session key from \emph{auth\_context} . Use {\hyperref[appdev/refs/api/krb5_k_free_key:krb5_k_free_key]{\code{krb5\_k\_free\_key()}}} to release \emph{key} when it is no longer needed.
4281
\subsubsection{krb5\_auth\_con\_getlocalseqnumber - Retrieve the local sequence number from an auth context.}
4282
\label{appdev/refs/api/krb5_auth_con_getlocalseqnumber::doc}\label{appdev/refs/api/krb5_auth_con_getlocalseqnumber:krb5-auth-con-getlocalseqnumber-retrieve-the-local-sequence-number-from-an-auth-context}\index{krb5\_auth\_con\_getlocalseqnumber (C function)}
4284
\begin{fulllineitems}
4285
\phantomsection\label{appdev/refs/api/krb5_auth_con_getlocalseqnumber:krb5_auth_con_getlocalseqnumber}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getlocalseqnumber}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} *\emph{ seqnumber}}{}
4288
\begin{quote}\begin{description}
4289
\item[{param}] \leavevmode
4290
\textbf{{[}in{]}} \textbf{context} - Library context
4292
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4294
\textbf{{[}out{]}} \textbf{seqnumber} - Local sequence number
4296
\end{description}\end{quote}
4297
\begin{quote}\begin{description}
4298
\item[{retval}] \leavevmode\begin{itemize}
4300
0 Success; otherwise - Kerberos error codes
4304
\end{description}\end{quote}
4306
Retrieve the local sequence number from \emph{auth\_context} and return it in \emph{seqnumber} . The {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} flag must be set in \emph{auth\_context} for this function to be useful.
4309
\subsubsection{krb5\_auth\_con\_getrcache - Retrieve the replay cache from an auth context.}
4310
\label{appdev/refs/api/krb5_auth_con_getrcache:krb5-auth-con-getrcache-retrieve-the-replay-cache-from-an-auth-context}\label{appdev/refs/api/krb5_auth_con_getrcache::doc}\index{krb5\_auth\_con\_getrcache (C function)}
4312
\begin{fulllineitems}
4313
\phantomsection\label{appdev/refs/api/krb5_auth_con_getrcache:krb5_auth_con_getrcache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getrcache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_rcache:krb5_rcache]{krb5\_rcache}} *\emph{ rcache}}{}
4316
\begin{quote}\begin{description}
4317
\item[{param}] \leavevmode
4318
\textbf{{[}in{]}} \textbf{context} - Library context
4320
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4322
\textbf{{[}out{]}} \textbf{rcache} - Replay cache handle
4324
\end{description}\end{quote}
4325
\begin{quote}\begin{description}
4326
\item[{retval}] \leavevmode\begin{itemize}
4332
\end{description}\end{quote}
4334
This function fetches the replay cache from \emph{auth\_context} . The caller should not close \emph{rcache} .
4337
\subsubsection{krb5\_auth\_con\_getrecvsubkey - Retrieve the receiving subkey from an auth context as a keyblock.}
4338
\label{appdev/refs/api/krb5_auth_con_getrecvsubkey:krb5-auth-con-getrecvsubkey-retrieve-the-receiving-subkey-from-an-auth-context-as-a-keyblock}\label{appdev/refs/api/krb5_auth_con_getrecvsubkey::doc}\index{krb5\_auth\_con\_getrecvsubkey (C function)}
4340
\begin{fulllineitems}
4341
\phantomsection\label{appdev/refs/api/krb5_auth_con_getrecvsubkey:krb5_auth_con_getrecvsubkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getrecvsubkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ keyblock}}{}
4344
\begin{quote}\begin{description}
4345
\item[{param}] \leavevmode
4346
\textbf{{[}in{]}} \textbf{ctx} - Library context
4348
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4350
\textbf{{[}out{]}} \textbf{keyblock} - Receiving subkey
4352
\end{description}\end{quote}
4353
\begin{quote}\begin{description}
4354
\item[{retval}] \leavevmode\begin{itemize}
4356
0 Success; otherwise - Kerberos error codes
4360
\end{description}\end{quote}
4362
This function creates a keyblock containing the receiving subkey from \emph{auth\_context} . Use {\hyperref[appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock]{\code{krb5\_free\_keyblock()}}} to free \emph{keyblock} when it is no longer needed.
4365
\subsubsection{krb5\_auth\_con\_getrecvsubkey\_k - Retrieve the receiving subkey from an auth context as a keyblock.}
4366
\label{appdev/refs/api/krb5_auth_con_getrecvsubkey_k:krb5-auth-con-getrecvsubkey-k-retrieve-the-receiving-subkey-from-an-auth-context-as-a-keyblock}\label{appdev/refs/api/krb5_auth_con_getrecvsubkey_k::doc}\index{krb5\_auth\_con\_getrecvsubkey\_k (C function)}
4368
\begin{fulllineitems}
4369
\phantomsection\label{appdev/refs/api/krb5_auth_con_getrecvsubkey_k:krb5_auth_con_getrecvsubkey_k}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getrecvsubkey\_k}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}} *\emph{ key}}{}
4372
\begin{quote}\begin{description}
4373
\item[{param}] \leavevmode
4374
\textbf{{[}in{]}} \textbf{ctx} - Library context
4376
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4378
\textbf{{[}out{]}} \textbf{key} - Receiving subkey
4380
\end{description}\end{quote}
4381
\begin{quote}\begin{description}
4382
\item[{retval}] \leavevmode\begin{itemize}
4384
0 Success; otherwise - Kerberos error codes
4388
\end{description}\end{quote}
4390
This function sets \emph{key} to the receiving subkey from \emph{auth\_context} . Use {\hyperref[appdev/refs/api/krb5_k_free_key:krb5_k_free_key]{\code{krb5\_k\_free\_key()}}} to release \emph{key} when it is no longer needed.
4393
\subsubsection{krb5\_auth\_con\_getremoteseqnumber - Retrieve the remote sequence number from an auth context.}
4394
\label{appdev/refs/api/krb5_auth_con_getremoteseqnumber:krb5-auth-con-getremoteseqnumber-retrieve-the-remote-sequence-number-from-an-auth-context}\label{appdev/refs/api/krb5_auth_con_getremoteseqnumber::doc}\index{krb5\_auth\_con\_getremoteseqnumber (C function)}
4396
\begin{fulllineitems}
4397
\phantomsection\label{appdev/refs/api/krb5_auth_con_getremoteseqnumber:krb5_auth_con_getremoteseqnumber}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getremoteseqnumber}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} *\emph{ seqnumber}}{}
4400
\begin{quote}\begin{description}
4401
\item[{param}] \leavevmode
4402
\textbf{{[}in{]}} \textbf{context} - Library context
4404
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4406
\textbf{{[}out{]}} \textbf{seqnumber} - Remote sequence number
4408
\end{description}\end{quote}
4409
\begin{quote}\begin{description}
4410
\item[{retval}] \leavevmode\begin{itemize}
4412
0 Success; otherwise - Kerberos error codes
4416
\end{description}\end{quote}
4418
Retrieve the remote sequence number from \emph{auth\_context} and return it in \emph{seqnumber} . The {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} flag must be set in \emph{auth\_context} for this function to be useful.
4421
\subsubsection{krb5\_auth\_con\_getsendsubkey - Retrieve the send subkey from an auth context as a keyblock.}
4422
\label{appdev/refs/api/krb5_auth_con_getsendsubkey:krb5-auth-con-getsendsubkey-retrieve-the-send-subkey-from-an-auth-context-as-a-keyblock}\label{appdev/refs/api/krb5_auth_con_getsendsubkey::doc}\index{krb5\_auth\_con\_getsendsubkey (C function)}
4424
\begin{fulllineitems}
4425
\phantomsection\label{appdev/refs/api/krb5_auth_con_getsendsubkey:krb5_auth_con_getsendsubkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getsendsubkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ keyblock}}{}
4428
\begin{quote}\begin{description}
4429
\item[{param}] \leavevmode
4430
\textbf{{[}in{]}} \textbf{ctx} - Library context
4432
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4434
\textbf{{[}out{]}} \textbf{keyblock} - Send subkey
4436
\end{description}\end{quote}
4437
\begin{quote}\begin{description}
4438
\item[{retval}] \leavevmode\begin{itemize}
4440
0 Success; otherwise - Kerberos error codes
4444
\end{description}\end{quote}
4446
This function creates a keyblock containing the send subkey from \emph{auth\_context} . Use {\hyperref[appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock]{\code{krb5\_free\_keyblock()}}} to free \emph{keyblock} when it is no longer needed.
4449
\subsubsection{krb5\_auth\_con\_getsendsubkey\_k - Retrieve the send subkey from an auth context.}
4450
\label{appdev/refs/api/krb5_auth_con_getsendsubkey_k:krb5-auth-con-getsendsubkey-k-retrieve-the-send-subkey-from-an-auth-context}\label{appdev/refs/api/krb5_auth_con_getsendsubkey_k::doc}\index{krb5\_auth\_con\_getsendsubkey\_k (C function)}
4452
\begin{fulllineitems}
4453
\phantomsection\label{appdev/refs/api/krb5_auth_con_getsendsubkey_k:krb5_auth_con_getsendsubkey_k}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getsendsubkey\_k}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}} *\emph{ key}}{}
4456
\begin{quote}\begin{description}
4457
\item[{param}] \leavevmode
4458
\textbf{{[}in{]}} \textbf{ctx} - Library context
4460
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4462
\textbf{{[}out{]}} \textbf{key} - Send subkey
4464
\end{description}\end{quote}
4465
\begin{quote}\begin{description}
4466
\item[{retval}] \leavevmode\begin{itemize}
4468
0 Success; otherwise - Kerberos error codes
4472
\end{description}\end{quote}
4474
This function sets \emph{key} to the send subkey from \emph{auth\_context} . Use {\hyperref[appdev/refs/api/krb5_k_free_key:krb5_k_free_key]{\code{krb5\_k\_free\_key()}}} to release \emph{key} when it is no longer needed.
4477
\subsubsection{krb5\_auth\_con\_init - Create and initialize an authentication context.}
4478
\label{appdev/refs/api/krb5_auth_con_init:krb5-auth-con-init-create-and-initialize-an-authentication-context}\label{appdev/refs/api/krb5_auth_con_init::doc}\index{krb5\_auth\_con\_init (C function)}
4480
\begin{fulllineitems}
4481
\phantomsection\label{appdev/refs/api/krb5_auth_con_init:krb5_auth_con_init}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_init}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}}{}
4484
\begin{quote}\begin{description}
4485
\item[{param}] \leavevmode
4486
\textbf{{[}in{]}} \textbf{context} - Library context
4488
\textbf{{[}out{]}} \textbf{auth\_context} - Authentication context
4490
\end{description}\end{quote}
4491
\begin{quote}\begin{description}
4492
\item[{retval}] \leavevmode\begin{itemize}
4494
0 Success; otherwise - Kerberos error codes
4498
\end{description}\end{quote}
4500
This function creates an authentication context to hold configuration and state relevant to krb5 functions for authenticating principals and protecting messages once authentication has occurred.
4502
By default, flags for the context are set to enable the use of the replay cache ( {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} ), but not sequence numbers. Use {\hyperref[appdev/refs/api/krb5_auth_con_setflags:krb5_auth_con_setflags]{\code{krb5\_auth\_con\_setflags()}}} to change the flags.
4504
The allocated \emph{auth\_context} must be freed with {\hyperref[appdev/refs/api/krb5_auth_con_free:krb5_auth_con_free]{\code{krb5\_auth\_con\_free()}}} when it is no longer needed.
4507
\subsubsection{krb5\_auth\_con\_set\_checksum\_func - Set a checksum callback in an auth context.}
4508
\label{appdev/refs/api/krb5_auth_con_set_checksum_func:krb5-auth-con-set-checksum-func-set-a-checksum-callback-in-an-auth-context}\label{appdev/refs/api/krb5_auth_con_set_checksum_func::doc}\index{krb5\_auth\_con\_set\_checksum\_func (C function)}
4510
\begin{fulllineitems}
4511
\phantomsection\label{appdev/refs/api/krb5_auth_con_set_checksum_func:krb5_auth_con_set_checksum_func}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_set\_checksum\_func}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_mk_req_checksum_func:krb5_mk_req_checksum_func]{krb5\_mk\_req\_checksum\_func}}\emph{ func}, void *\emph{ data}}{}
4514
\begin{quote}\begin{description}
4515
\item[{param}] \leavevmode
4516
\textbf{{[}in{]}} \textbf{context} - Library context
4518
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4520
\textbf{{[}in{]}} \textbf{func} - Checksum callback
4522
\textbf{{[}in{]}} \textbf{data} - Callback argument
4524
\end{description}\end{quote}
4525
\begin{quote}\begin{description}
4526
\item[{retval}] \leavevmode\begin{itemize}
4532
\end{description}\end{quote}
4534
Set a callback to obtain checksum data in {\hyperref[appdev/refs/api/krb5_mk_req:krb5_mk_req]{\code{krb5\_mk\_req()}}} . The callback will be invoked after the subkey and local sequence number are stored in \emph{auth\_context} .
4537
\subsubsection{krb5\_auth\_con\_set\_req\_cksumtype - Set checksum type in an an auth context.}
4538
\label{appdev/refs/api/krb5_auth_con_set_req_cksumtype:krb5-auth-con-set-req-cksumtype-set-checksum-type-in-an-an-auth-context}\label{appdev/refs/api/krb5_auth_con_set_req_cksumtype::doc}\index{krb5\_auth\_con\_set\_req\_cksumtype (C function)}
4540
\begin{fulllineitems}
4541
\phantomsection\label{appdev/refs/api/krb5_auth_con_set_req_cksumtype:krb5_auth_con_set_req_cksumtype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_set\_req\_cksumtype}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}}{}
4544
\begin{quote}\begin{description}
4545
\item[{param}] \leavevmode
4546
\textbf{{[}in{]}} \textbf{context} - Library context
4548
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4550
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type
4552
\end{description}\end{quote}
4553
\begin{quote}\begin{description}
4554
\item[{retval}] \leavevmode\begin{itemize}
4556
0 Success. Otherwise - Kerberos error codes
4560
\end{description}\end{quote}
4562
This function sets the checksum type in \emph{auth\_context} to be used by {\hyperref[appdev/refs/api/krb5_mk_req:krb5_mk_req]{\code{krb5\_mk\_req()}}} for the authenticator checksum.
4565
\subsubsection{krb5\_auth\_con\_setaddrs - Set the local and remote addresses in an auth context.}
4566
\label{appdev/refs/api/krb5_auth_con_setaddrs::doc}\label{appdev/refs/api/krb5_auth_con_setaddrs:krb5-auth-con-setaddrs-set-the-local-and-remote-addresses-in-an-auth-context}\index{krb5\_auth\_con\_setaddrs (C function)}
4568
\begin{fulllineitems}
4569
\phantomsection\label{appdev/refs/api/krb5_auth_con_setaddrs:krb5_auth_con_setaddrs}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setaddrs}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ local\_addr}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ remote\_addr}}{}
4572
\begin{quote}\begin{description}
4573
\item[{param}] \leavevmode
4574
\textbf{{[}in{]}} \textbf{context} - Library context
4576
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4578
\textbf{{[}in{]}} \textbf{local\_addr} - Local address
4580
\textbf{{[}in{]}} \textbf{remote\_addr} - Remote address
4582
\end{description}\end{quote}
4583
\begin{quote}\begin{description}
4584
\item[{retval}] \leavevmode\begin{itemize}
4586
0 Success; otherwise - Kerberos error codes
4590
\end{description}\end{quote}
4592
This function releases the storage assigned to the contents of the local and remote addresses of \emph{auth\_context} and then sets them to \emph{local\_addr} and \emph{remote\_addr} respectively.
4598
{\hyperref[appdev/refs/api/krb5_auth_con_genaddrs:krb5_auth_con_genaddrs]{\code{krb5\_auth\_con\_genaddrs()}}}
4603
\subsubsection{krb5\_auth\_con\_setflags - Set a flags field in a krb5\_auth\_context structure.}
4604
\label{appdev/refs/api/krb5_auth_con_setflags:krb5-auth-con-setflags-set-a-flags-field-in-a-krb5-auth-context-structure}\label{appdev/refs/api/krb5_auth_con_setflags::doc}\index{krb5\_auth\_con\_setflags (C function)}
4606
\begin{fulllineitems}
4607
\phantomsection\label{appdev/refs/api/krb5_auth_con_setflags:krb5_auth_con_setflags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setflags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}}\emph{ flags}}{}
4610
\begin{quote}\begin{description}
4611
\item[{param}] \leavevmode
4612
\textbf{{[}in{]}} \textbf{context} - Library context
4614
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
4616
\textbf{{[}in{]}} \textbf{flags} - Flags bit mask
4618
\end{description}\end{quote}
4619
\begin{quote}\begin{description}
4620
\item[{retval}] \leavevmode\begin{itemize}
4626
\end{description}\end{quote}
4628
Valid values for \emph{flags} are:
4631
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} Use timestamps
4634
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} Save timestamps
4637
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} Use sequence numbers
4640
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} Save sequence numbers
4645
\subsubsection{krb5\_auth\_con\_setports - Set local and remote port fields in an auth context.}
4646
\label{appdev/refs/api/krb5_auth_con_setports:krb5-auth-con-setports-set-local-and-remote-port-fields-in-an-auth-context}\label{appdev/refs/api/krb5_auth_con_setports::doc}\index{krb5\_auth\_con\_setports (C function)}
4648
\begin{fulllineitems}
4649
\phantomsection\label{appdev/refs/api/krb5_auth_con_setports:krb5_auth_con_setports}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setports}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ local\_port}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *\emph{ remote\_port}}{}
4652
\begin{quote}\begin{description}
4653
\item[{param}] \leavevmode
4654
\textbf{{[}in{]}} \textbf{context} - Library context
4656
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4658
\textbf{{[}in{]}} \textbf{local\_port} - Local port
4660
\textbf{{[}in{]}} \textbf{remote\_port} - Remote port
4662
\end{description}\end{quote}
4663
\begin{quote}\begin{description}
4664
\item[{retval}] \leavevmode\begin{itemize}
4666
0 Success; otherwise - Kerberos error codes
4670
\end{description}\end{quote}
4672
This function releases the storage assigned to the contents of the local and remote ports of \emph{auth\_context} and then sets them to \emph{local\_port} and \emph{remote\_port} respectively.
4678
{\hyperref[appdev/refs/api/krb5_auth_con_genaddrs:krb5_auth_con_genaddrs]{\code{krb5\_auth\_con\_genaddrs()}}}
4683
\subsubsection{krb5\_auth\_con\_setrcache - Set the replay cache in an auth context.}
4684
\label{appdev/refs/api/krb5_auth_con_setrcache::doc}\label{appdev/refs/api/krb5_auth_con_setrcache:krb5-auth-con-setrcache-set-the-replay-cache-in-an-auth-context}\index{krb5\_auth\_con\_setrcache (C function)}
4686
\begin{fulllineitems}
4687
\phantomsection\label{appdev/refs/api/krb5_auth_con_setrcache:krb5_auth_con_setrcache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setrcache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_rcache:krb5_rcache]{krb5\_rcache}}\emph{ rcache}}{}
4690
\begin{quote}\begin{description}
4691
\item[{param}] \leavevmode
4692
\textbf{{[}in{]}} \textbf{context} - Library context
4694
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4696
\textbf{{[}in{]}} \textbf{rcache} - Replay cache haddle
4698
\end{description}\end{quote}
4699
\begin{quote}\begin{description}
4700
\item[{retval}] \leavevmode\begin{itemize}
4702
0 Success; otherwise - Kerberos error codes
4706
\end{description}\end{quote}
4708
This function sets the replay cache in \emph{auth\_context} to \emph{rcache} . \emph{rcache} will be closed when \emph{auth\_context} is freed, so the caller should relinguish that responsibility.
4711
\subsubsection{krb5\_auth\_con\_setrecvsubkey - Set the receiving subkey in an auth context with a keyblock.}
4712
\label{appdev/refs/api/krb5_auth_con_setrecvsubkey:krb5-auth-con-setrecvsubkey-set-the-receiving-subkey-in-an-auth-context-with-a-keyblock}\label{appdev/refs/api/krb5_auth_con_setrecvsubkey::doc}\index{krb5\_auth\_con\_setrecvsubkey (C function)}
4714
\begin{fulllineitems}
4715
\phantomsection\label{appdev/refs/api/krb5_auth_con_setrecvsubkey:krb5_auth_con_setrecvsubkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setrecvsubkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}}{}
4718
\begin{quote}\begin{description}
4719
\item[{param}] \leavevmode
4720
\textbf{{[}in{]}} \textbf{ctx} - Library context
4722
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4724
\textbf{{[}in{]}} \textbf{keyblock} - Receiving subkey
4726
\end{description}\end{quote}
4727
\begin{quote}\begin{description}
4728
\item[{retval}] \leavevmode\begin{itemize}
4730
0 Success; otherwise - Kerberos error codes
4734
\end{description}\end{quote}
4736
This function sets the receiving subkey in \emph{ac} to a copy of \emph{keyblock} .
4739
\subsubsection{krb5\_auth\_con\_setrecvsubkey\_k - Set the receiving subkey in an auth context.}
4740
\label{appdev/refs/api/krb5_auth_con_setrecvsubkey_k::doc}\label{appdev/refs/api/krb5_auth_con_setrecvsubkey_k:krb5-auth-con-setrecvsubkey-k-set-the-receiving-subkey-in-an-auth-context}\index{krb5\_auth\_con\_setrecvsubkey\_k (C function)}
4742
\begin{fulllineitems}
4743
\phantomsection\label{appdev/refs/api/krb5_auth_con_setrecvsubkey_k:krb5_auth_con_setrecvsubkey_k}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setrecvsubkey\_k}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}}{}
4746
\begin{quote}\begin{description}
4747
\item[{param}] \leavevmode
4748
\textbf{{[}in{]}} \textbf{ctx} - Library context
4750
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4752
\textbf{{[}in{]}} \textbf{key} - Receiving subkey
4754
\end{description}\end{quote}
4755
\begin{quote}\begin{description}
4756
\item[{retval}] \leavevmode\begin{itemize}
4758
0 Success; otherwise - Kerberos error codes
4762
\end{description}\end{quote}
4764
This function sets the receiving subkey in \emph{ac} to \emph{key} , incrementing its reference count.
4766
\begin{notice}{note}{Note:}
4767
First introduced in 1.9
4771
\subsubsection{krb5\_auth\_con\_setsendsubkey - Set the send subkey in an auth context with a keyblock.}
4772
\label{appdev/refs/api/krb5_auth_con_setsendsubkey::doc}\label{appdev/refs/api/krb5_auth_con_setsendsubkey:krb5-auth-con-setsendsubkey-set-the-send-subkey-in-an-auth-context-with-a-keyblock}\index{krb5\_auth\_con\_setsendsubkey (C function)}
4774
\begin{fulllineitems}
4775
\phantomsection\label{appdev/refs/api/krb5_auth_con_setsendsubkey:krb5_auth_con_setsendsubkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setsendsubkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}}{}
4778
\begin{quote}\begin{description}
4779
\item[{param}] \leavevmode
4780
\textbf{{[}in{]}} \textbf{ctx} - Library context
4782
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4784
\textbf{{[}in{]}} \textbf{keyblock} - Send subkey
4786
\end{description}\end{quote}
4787
\begin{quote}\begin{description}
4788
\item[{retval}] \leavevmode\begin{itemize}
4790
0 Success. Otherwise - Kerberos error codes
4794
\end{description}\end{quote}
4796
This function sets the send subkey in \emph{ac} to a copy of \emph{keyblock} .
4799
\subsubsection{krb5\_auth\_con\_setsendsubkey\_k - Set the send subkey in an auth context.}
4800
\label{appdev/refs/api/krb5_auth_con_setsendsubkey_k:krb5-auth-con-setsendsubkey-k-set-the-send-subkey-in-an-auth-context}\label{appdev/refs/api/krb5_auth_con_setsendsubkey_k::doc}\index{krb5\_auth\_con\_setsendsubkey\_k (C function)}
4802
\begin{fulllineitems}
4803
\phantomsection\label{appdev/refs/api/krb5_auth_con_setsendsubkey_k:krb5_auth_con_setsendsubkey_k}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setsendsubkey\_k}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ ac}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}}{}
4806
\begin{quote}\begin{description}
4807
\item[{param}] \leavevmode
4808
\textbf{{[}in{]}} \textbf{ctx} - Library context
4810
\textbf{{[}in{]}} \textbf{ac} - Authentication context
4812
\textbf{{[}out{]}} \textbf{key} - Send subkey
4814
\end{description}\end{quote}
4815
\begin{quote}\begin{description}
4816
\item[{retval}] \leavevmode\begin{itemize}
4818
0 Success; otherwise - Kerberos error codes
4822
\end{description}\end{quote}
4824
This function sets the send subkey in \emph{ac} to \emph{key} , incrementing its reference count.
4826
\begin{notice}{note}{Note:}
4827
First introduced in 1.9
4831
\subsubsection{krb5\_auth\_con\_setuseruserkey - Set the session key in an auth context.}
4832
\label{appdev/refs/api/krb5_auth_con_setuseruserkey::doc}\label{appdev/refs/api/krb5_auth_con_setuseruserkey:krb5-auth-con-setuseruserkey-set-the-session-key-in-an-auth-context}\index{krb5\_auth\_con\_setuseruserkey (C function)}
4834
\begin{fulllineitems}
4835
\phantomsection\label{appdev/refs/api/krb5_auth_con_setuseruserkey:krb5_auth_con_setuseruserkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_setuseruserkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}}{}
4838
\begin{quote}\begin{description}
4839
\item[{param}] \leavevmode
4840
\textbf{{[}in{]}} \textbf{context} - Library context
4842
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
4844
\textbf{{[}in{]}} \textbf{keyblock} - User key
4846
\end{description}\end{quote}
4847
\begin{quote}\begin{description}
4848
\item[{retval}] \leavevmode\begin{itemize}
4850
0 Success; otherwise - Kerberos error codes
4854
\end{description}\end{quote}
4857
\subsubsection{krb5\_cc\_cache\_match - Find a credential cache with a specified client principal.}
4858
\label{appdev/refs/api/krb5_cc_cache_match:krb5-cc-cache-match-find-a-credential-cache-with-a-specified-client-principal}\label{appdev/refs/api/krb5_cc_cache_match::doc}\index{krb5\_cc\_cache\_match (C function)}
4860
\begin{fulllineitems}
4861
\phantomsection\label{appdev/refs/api/krb5_cc_cache_match:krb5_cc_cache_match}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_cache\_match}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ cache\_out}}{}
4864
\begin{quote}\begin{description}
4865
\item[{param}] \leavevmode
4866
\textbf{{[}in{]}} \textbf{context} - Library context
4868
\textbf{{[}in{]}} \textbf{client} - Client principal
4870
\textbf{{[}out{]}} \textbf{cache\_out} - Credential cache handle
4872
\end{description}\end{quote}
4873
\begin{quote}\begin{description}
4874
\item[{retval}] \leavevmode\begin{itemize}
4879
KRB5\_CC\_NOTFOUND None
4883
\end{description}\end{quote}
4885
Find a cache within the collection whose default principal is \emph{client} . Use \emph{krb5\_cc\_close} to close \emph{ccache} when it is no longer needed.
4887
\begin{notice}{note}{Note:}
4888
First introduced in 1.10
4892
\subsubsection{krb5\_cc\_copy\_creds - Copy a credential cache.}
4893
\label{appdev/refs/api/krb5_cc_copy_creds::doc}\label{appdev/refs/api/krb5_cc_copy_creds:krb5-cc-copy-creds-copy-a-credential-cache}\index{krb5\_cc\_copy\_creds (C function)}
4895
\begin{fulllineitems}
4896
\phantomsection\label{appdev/refs/api/krb5_cc_copy_creds:krb5_cc_copy_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_copy\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ incc}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ outcc}}{}
4899
\begin{quote}\begin{description}
4900
\item[{param}] \leavevmode
4901
\textbf{{[}in{]}} \textbf{context} - Library context
4903
\textbf{{[}in{]}} \textbf{incc} - Credential cache to be copied
4905
\textbf{{[}out{]}} \textbf{outcc} - Copy of credential cache to be filled in
4907
\end{description}\end{quote}
4908
\begin{quote}\begin{description}
4909
\item[{retval}] \leavevmode\begin{itemize}
4911
0 Success; otherwise - Kerberos error codes
4915
\end{description}\end{quote}
4918
\subsubsection{krb5\_cc\_end\_seq\_get - Finish a series of sequential processing credential cache entries.}
4919
\label{appdev/refs/api/krb5_cc_end_seq_get:krb5-cc-end-seq-get-finish-a-series-of-sequential-processing-credential-cache-entries}\label{appdev/refs/api/krb5_cc_end_seq_get::doc}\index{krb5\_cc\_end\_seq\_get (C function)}
4921
\begin{fulllineitems}
4922
\phantomsection\label{appdev/refs/api/krb5_cc_end_seq_get:krb5_cc_end_seq_get}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_end\_seq\_get}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_cc_cursor:krb5_cc_cursor]{krb5\_cc\_cursor}} *\emph{ cursor}}{}
4925
\begin{quote}\begin{description}
4926
\item[{param}] \leavevmode
4927
\textbf{{[}in{]}} \textbf{context} - Library context
4929
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
4931
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
4933
\end{description}\end{quote}
4934
\begin{quote}\begin{description}
4935
\item[{retval}] \leavevmode\begin{itemize}
4941
\end{description}\end{quote}
4943
This function finishes processing credential cache entries and invalidates \emph{cursor} .
4949
{\hyperref[appdev/refs/api/krb5_cc_start_seq_get:krb5_cc_start_seq_get]{\code{krb5\_cc\_start\_seq\_get()}}} , {\hyperref[appdev/refs/api/krb5_cc_next_cred:krb5_cc_next_cred]{\code{krb5\_cc\_next\_cred()}}}
4954
\subsubsection{krb5\_cc\_get\_config - Get a configuration value from a credential cache.}
4955
\label{appdev/refs/api/krb5_cc_get_config:krb5-cc-get-config-get-a-configuration-value-from-a-credential-cache}\label{appdev/refs/api/krb5_cc_get_config::doc}\index{krb5\_cc\_get\_config (C function)}
4957
\begin{fulllineitems}
4958
\phantomsection\label{appdev/refs/api/krb5_cc_get_config:krb5_cc_get_config}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_get\_config}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ id}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, const char *\emph{ key}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
4961
\begin{quote}\begin{description}
4962
\item[{param}] \leavevmode
4963
\textbf{{[}in{]}} \textbf{context} - Library context
4965
\textbf{{[}in{]}} \textbf{id} - Credential cache handle
4967
\textbf{{[}in{]}} \textbf{principal} - Configuration for this principal; if NULL, global for the whole cache
4969
\textbf{{[}in{]}} \textbf{key} - Name of config variable
4971
\textbf{{[}out{]}} \textbf{data} - Data to be fetched
4973
\end{description}\end{quote}
4974
\begin{quote}\begin{description}
4975
\item[{retval}] \leavevmode\begin{itemize}
4981
\item[{return}] \leavevmode\begin{itemize}
4983
Kerberos error codes
4987
\end{description}\end{quote}
4989
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{data} when it is no longer needed.
4992
\subsubsection{krb5\_cc\_get\_flags - Retrieve flags from a credential cache structure.}
4993
\label{appdev/refs/api/krb5_cc_get_flags:krb5-cc-get-flags-retrieve-flags-from-a-credential-cache-structure}\label{appdev/refs/api/krb5_cc_get_flags::doc}\index{krb5\_cc\_get\_flags (C function)}
4995
\begin{fulllineitems}
4996
\phantomsection\label{appdev/refs/api/krb5_cc_get_flags:krb5_cc_get_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_get\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} *\emph{ flags}}{}
4999
\begin{quote}\begin{description}
5000
\item[{param}] \leavevmode
5001
\textbf{{[}in{]}} \textbf{context} - Library context
5003
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5005
\textbf{{[}out{]}} \textbf{flags} - Flag bit mask
5007
\end{description}\end{quote}
5008
\begin{quote}\begin{description}
5009
\item[{retval}] \leavevmode\begin{itemize}
5011
0 Success; otherwise - Kerberos error codes
5015
\end{description}\end{quote}
5017
\begin{notice}{warning}{Warning:}
5018
For memory credential cache always returns a flag mask of 0.
5022
\subsubsection{krb5\_cc\_get\_full\_name - Retrieve the full name of a credential cache.}
5023
\label{appdev/refs/api/krb5_cc_get_full_name::doc}\label{appdev/refs/api/krb5_cc_get_full_name:krb5-cc-get-full-name-retrieve-the-full-name-of-a-credential-cache}\index{krb5\_cc\_get\_full\_name (C function)}
5025
\begin{fulllineitems}
5026
\phantomsection\label{appdev/refs/api/krb5_cc_get_full_name:krb5_cc_get_full_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_get\_full\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, char **\emph{ fullname\_out}}{}
5029
\begin{quote}\begin{description}
5030
\item[{param}] \leavevmode
5031
\textbf{{[}in{]}} \textbf{context} - Library context
5033
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5035
\textbf{{[}out{]}} \textbf{fullname\_out} - Full name of cache
5037
\end{description}\end{quote}
5039
Use {\hyperref[appdev/refs/api/krb5_free_string:krb5_free_string]{\code{krb5\_free\_string()}}} to free \emph{fullname\_out} when it is no longer needed.
5041
\begin{notice}{note}{Note:}
5042
First introduced in 1.10
5046
\subsubsection{krb5\_cc\_last\_change\_time - Return a timestamp of the last modification to a credential cache.}
5047
\label{appdev/refs/api/krb5_cc_last_change_time:krb5-cc-last-change-time-return-a-timestamp-of-the-last-modification-to-a-credential-cache}\label{appdev/refs/api/krb5_cc_last_change_time::doc}\index{krb5\_cc\_last\_change\_time (C function)}
5049
\begin{fulllineitems}
5050
\phantomsection\label{appdev/refs/api/krb5_cc_last_change_time:krb5_cc_last_change_time}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_last\_change\_time}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} *\emph{ change\_time}}{}
5053
\begin{quote}\begin{description}
5054
\item[{param}] \leavevmode
5055
\textbf{{[}in{]}} \textbf{context} - Library context
5057
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
5059
\textbf{{[}out{]}} \textbf{change\_time} - The last change time of \emph{ccache}
5061
\end{description}\end{quote}
5063
If an error occurs, \emph{change\_time} is set to 0.
5066
\subsubsection{krb5\_cc\_lock - Lock a credential cache.}
5067
\label{appdev/refs/api/krb5_cc_lock:krb5-cc-lock-lock-a-credential-cache}\label{appdev/refs/api/krb5_cc_lock::doc}\index{krb5\_cc\_lock (C function)}
5069
\begin{fulllineitems}
5070
\phantomsection\label{appdev/refs/api/krb5_cc_lock:krb5_cc_lock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_lock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}}{}
5073
\begin{quote}\begin{description}
5074
\item[{param}] \leavevmode
5075
\textbf{{[}in{]}} \textbf{context} - Library context
5077
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
5079
\end{description}\end{quote}
5080
\begin{quote}\begin{description}
5081
\item[{retval}] \leavevmode\begin{itemize}
5083
0 Success; otherwise - Kerberos error codes
5087
\end{description}\end{quote}
5089
Use {\hyperref[appdev/refs/api/krb5_cc_unlock:krb5_cc_unlock]{\code{krb5\_cc\_unlock()}}} to unlock the lock.
5092
\subsubsection{krb5\_cc\_move - Move a credential cache.}
5093
\label{appdev/refs/api/krb5_cc_move:krb5-cc-move-move-a-credential-cache}\label{appdev/refs/api/krb5_cc_move::doc}\index{krb5\_cc\_move (C function)}
5095
\begin{fulllineitems}
5096
\phantomsection\label{appdev/refs/api/krb5_cc_move:krb5_cc_move}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_move}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ src}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ dst}}{}
5099
\begin{quote}\begin{description}
5100
\item[{param}] \leavevmode
5101
\textbf{{[}in{]}} \textbf{context} - Library context
5103
\textbf{{[}in{]}} \textbf{src} - The credential cache to move the content from
5105
\textbf{{[}in{]}} \textbf{dst} - The credential cache to move the content to
5107
\end{description}\end{quote}
5108
\begin{quote}\begin{description}
5109
\item[{retval}] \leavevmode\begin{itemize}
5111
0 Success; src is closed.
5115
\item[{return}] \leavevmode\begin{itemize}
5117
Kerberos error codes; src is still allocated.
5121
\end{description}\end{quote}
5123
This function reinitializes \emph{dst} and populates it with the credentials and default principal of \emph{src} ; then, if successful, destroys \emph{src} .
5126
\subsubsection{krb5\_cc\_next\_cred - Retrieve the next entry from the credential cache.}
5127
\label{appdev/refs/api/krb5_cc_next_cred::doc}\label{appdev/refs/api/krb5_cc_next_cred:krb5-cc-next-cred-retrieve-the-next-entry-from-the-credential-cache}\index{krb5\_cc\_next\_cred (C function)}
5129
\begin{fulllineitems}
5130
\phantomsection\label{appdev/refs/api/krb5_cc_next_cred:krb5_cc_next_cred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_next\_cred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_cc_cursor:krb5_cc_cursor]{krb5\_cc\_cursor}} *\emph{ cursor}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}}{}
5133
\begin{quote}\begin{description}
5134
\item[{param}] \leavevmode
5135
\textbf{{[}in{]}} \textbf{context} - Library context
5137
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5139
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
5141
\textbf{{[}out{]}} \textbf{creds} - Next credential cache entry
5143
\end{description}\end{quote}
5144
\begin{quote}\begin{description}
5145
\item[{retval}] \leavevmode\begin{itemize}
5147
0 Success; otherwise - Kerberos error codes
5151
\end{description}\end{quote}
5153
This function fills in \emph{creds} with the next entry in \emph{cache} and advances \emph{cursor} .
5155
Use {\hyperref[appdev/refs/api/krb5_free_cred_contents:krb5_free_cred_contents]{\code{krb5\_free\_cred\_contents()}}} to free \emph{creds} when it is no longer needed.
5161
{\hyperref[appdev/refs/api/krb5_cc_start_seq_get:krb5_cc_start_seq_get]{\code{krb5\_cc\_start\_seq\_get()}}} , krb5\_end\_seq\_get()
5166
\subsubsection{krb5\_cc\_remove\_cred - Remove credentials from a credential cache.}
5167
\label{appdev/refs/api/krb5_cc_remove_cred:krb5-cc-remove-cred-remove-credentials-from-a-credential-cache}\label{appdev/refs/api/krb5_cc_remove_cred::doc}\index{krb5\_cc\_remove\_cred (C function)}
5169
\begin{fulllineitems}
5170
\phantomsection\label{appdev/refs/api/krb5_cc_remove_cred:krb5_cc_remove_cred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_remove\_cred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ flags}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}}{}
5173
\begin{quote}\begin{description}
5174
\item[{param}] \leavevmode
5175
\textbf{{[}in{]}} \textbf{context} - Library context
5177
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5179
\textbf{{[}in{]}} \textbf{flags} - Bitwise-ORed search flags
5181
\textbf{{[}in{]}} \textbf{creds} - Credentials to be matched
5183
\end{description}\end{quote}
5184
\begin{quote}\begin{description}
5185
\item[{retval}] \leavevmode\begin{itemize}
5187
KRB5\_CC\_NOSUPP Not implemented for this cache type
5191
\item[{return}] \leavevmode\begin{itemize}
5193
No matches found; Data cannot be deleted; Kerberos error codes
5197
\end{description}\end{quote}
5199
This function accepts the same flag values as {\hyperref[appdev/refs/api/krb5_cc_retrieve_cred:krb5_cc_retrieve_cred]{\code{krb5\_cc\_retrieve\_cred()}}} .
5201
\begin{notice}{warning}{Warning:}
5202
This function is not implemented for some cache types.
5206
\subsubsection{krb5\_cc\_retrieve\_cred - Retrieve a specified credentials from a credential cache.}
5207
\label{appdev/refs/api/krb5_cc_retrieve_cred:krb5-cc-retrieve-cred-retrieve-a-specified-credentials-from-a-credential-cache}\label{appdev/refs/api/krb5_cc_retrieve_cred::doc}\index{krb5\_cc\_retrieve\_cred (C function)}
5209
\begin{fulllineitems}
5210
\phantomsection\label{appdev/refs/api/krb5_cc_retrieve_cred:krb5_cc_retrieve_cred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_retrieve\_cred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ flags}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ mcreds}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}}{}
5213
\begin{quote}\begin{description}
5214
\item[{param}] \leavevmode
5215
\textbf{{[}in{]}} \textbf{context} - Library context
5217
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5219
\textbf{{[}in{]}} \textbf{flags} - Flags bit mask
5221
\textbf{{[}in{]}} \textbf{mcreds} - Credentials to match
5223
\textbf{{[}out{]}} \textbf{creds} - Credentials matching the requested value
5225
\end{description}\end{quote}
5226
\begin{quote}\begin{description}
5227
\item[{retval}] \leavevmode\begin{itemize}
5229
0 Success; otherwise - Kerberos error codes
5233
\end{description}\end{quote}
5235
This function searches a credential cache for credentials matching \emph{mcreds} and returns it if found.
5237
Valid values for \emph{flags} are:
5241
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_TIMES:KRB5_TC_MATCH_TIMES]{\code{KRB5\_TC\_MATCH\_TIMES}}} The requested lifetime must be at least as great as in \emph{mcreds} .
5244
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:KRB5_TC_MATCH_IS_SKEY]{\code{KRB5\_TC\_MATCH\_IS\_SKEY}}} The \emph{is\_skey} field much match exactly.
5247
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_FLAGS:KRB5_TC_MATCH_FLAGS]{\code{KRB5\_TC\_MATCH\_FLAGS}}} Flags set in \emph{mcreds} must be set.
5250
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:KRB5_TC_MATCH_TIMES_EXACT]{\code{KRB5\_TC\_MATCH\_TIMES\_EXACT}}} The requested lifetime must match exactly.
5253
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:KRB5_TC_MATCH_FLAGS_EXACT]{\code{KRB5\_TC\_MATCH\_FLAGS\_EXACT}}} Flags must match exactly.
5256
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:KRB5_TC_MATCH_AUTHDATA]{\code{KRB5\_TC\_MATCH\_AUTHDATA}}} The authorization data must match.
5259
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:KRB5_TC_MATCH_SRV_NAMEONLY]{\code{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}}} Only the name portion of the principal name must match, not the realm.
5262
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:KRB5_TC_MATCH_2ND_TKT]{\code{KRB5\_TC\_MATCH\_2ND\_TKT}}} The second tickets must match.
5265
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_KTYPE:KRB5_TC_MATCH_KTYPE]{\code{KRB5\_TC\_MATCH\_KTYPE}}} The encryption key types must match.
5268
{\hyperref[appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:KRB5_TC_SUPPORTED_KTYPES]{\code{KRB5\_TC\_SUPPORTED\_KTYPES}}} Check all matching entries that have any supported encryption type and return the one with the encryption type listed earliest.
5272
Use {\hyperref[appdev/refs/api/krb5_free_cred_contents:krb5_free_cred_contents]{\code{krb5\_free\_cred\_contents()}}} to free \emph{creds} when it is no longer needed.
5276
\subsubsection{krb5\_cc\_select - Select a credential cache to use with a server principal.}
5277
\label{appdev/refs/api/krb5_cc_select::doc}\label{appdev/refs/api/krb5_cc_select:krb5-cc-select-select-a-credential-cache-to-use-with-a-server-principal}\index{krb5\_cc\_select (C function)}
5279
\begin{fulllineitems}
5280
\phantomsection\label{appdev/refs/api/krb5_cc_select:krb5_cc_select}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_select}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ cache\_out}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ princ\_out}}{}
5283
\begin{quote}\begin{description}
5284
\item[{param}] \leavevmode
5285
\textbf{{[}in{]}} \textbf{context} - Library context
5287
\textbf{{[}in{]}} \textbf{server} - Server principal
5289
\textbf{{[}out{]}} \textbf{cache\_out} - Credential cache handle
5291
\textbf{{[}out{]}} \textbf{princ\_out} - Client principal
5293
\end{description}\end{quote}
5294
\begin{quote}\begin{description}
5295
\item[{return}] \leavevmode\begin{itemize}
5297
If an appropriate cache is found, 0 is returned, cache\_out is set to the selected cache, and princ\_out is set to the default principal of that cache.
5301
\end{description}\end{quote}
5303
Select a cache within the collection containing credentials most appropriate for use with \emph{server} , according to configured rules and heuristics.
5305
Use {\hyperref[appdev/refs/api/krb5_cc_close:krb5_cc_close]{\code{krb5\_cc\_close()}}} to release \emph{cache\_out} when it is no longer needed. Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to release \emph{princ\_out} when it is no longer needed. Note that \emph{princ\_out} is set in some error conditions.
5307
If the appropriate client principal can be authoritatively determined but the cache collection contains no credentials for that principal, then KRB5\_CC\_NOTFOUND is returned, \emph{cache\_out} is set to NULL, and \emph{princ\_out} is set to the appropriate client principal.
5309
If no configured mechanism can determine the appropriate cache or principal, KRB5\_CC\_NOTFOUND is returned and \emph{cache\_out} and \emph{princ\_out} are set to NULL.
5311
Any other error code indicates a fatal error in the processing of a cache selection mechanism.
5313
\begin{notice}{note}{Note:}
5314
First introduced in 1.10
5318
\subsubsection{krb5\_cc\_set\_config - Store a configuration value in a credential cache.}
5319
\label{appdev/refs/api/krb5_cc_set_config::doc}\label{appdev/refs/api/krb5_cc_set_config:krb5-cc-set-config-store-a-configuration-value-in-a-credential-cache}\index{krb5\_cc\_set\_config (C function)}
5321
\begin{fulllineitems}
5322
\phantomsection\label{appdev/refs/api/krb5_cc_set_config:krb5_cc_set_config}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_set\_config}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ id}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, const char *\emph{ key}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
5325
\begin{quote}\begin{description}
5326
\item[{param}] \leavevmode
5327
\textbf{{[}in{]}} \textbf{context} - Library context
5329
\textbf{{[}in{]}} \textbf{id} - Credential cache handle
5331
\textbf{{[}in{]}} \textbf{principal} - Configuration for a specific principal; if NULL, global for the whole cache
5333
\textbf{{[}in{]}} \textbf{key} - Name of config variable
5335
\textbf{{[}in{]}} \textbf{data} - Data to store, or NULL to remove
5337
\end{description}\end{quote}
5338
\begin{quote}\begin{description}
5339
\item[{retval}] \leavevmode\begin{itemize}
5345
\item[{return}] \leavevmode\begin{itemize}
5347
Kerberos error codes
5351
\end{description}\end{quote}
5353
\begin{notice}{warning}{Warning:}
5354
Before version 1.10 \emph{data} was assumed to be always non-null.
5357
\begin{notice}{note}{Note:}
5358
Existing configuration under the same key is over-written.
5362
\subsubsection{krb5\_cc\_set\_default\_name - Set the default credential cache name.}
5363
\label{appdev/refs/api/krb5_cc_set_default_name:krb5-cc-set-default-name-set-the-default-credential-cache-name}\label{appdev/refs/api/krb5_cc_set_default_name::doc}\index{krb5\_cc\_set\_default\_name (C function)}
5365
\begin{fulllineitems}
5366
\phantomsection\label{appdev/refs/api/krb5_cc_set_default_name:krb5_cc_set_default_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_set\_default\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ name}}{}
5369
\begin{quote}\begin{description}
5370
\item[{param}] \leavevmode
5371
\textbf{{[}inout{]}} \textbf{context} - Library context
5373
\textbf{{[}in{]}} \textbf{name} - Default credential cache name
5375
\end{description}\end{quote}
5376
\begin{quote}\begin{description}
5377
\item[{retval}] \leavevmode\begin{itemize}
5382
KV5M\_CONTEXT Bad magic number for \_krb5\_context structure
5386
\item[{return}] \leavevmode\begin{itemize}
5388
Kerberos error codes
5392
\end{description}\end{quote}
5394
This function frees the old default credential cache name and then sets it to \emph{name} .
5397
\subsubsection{krb5\_cc\_set\_flags - Set options flags on a credential cache.}
5398
\label{appdev/refs/api/krb5_cc_set_flags:krb5-cc-set-flags-set-options-flags-on-a-credential-cache}\label{appdev/refs/api/krb5_cc_set_flags::doc}\index{krb5\_cc\_set\_flags (C function)}
5400
\begin{fulllineitems}
5401
\phantomsection\label{appdev/refs/api/krb5_cc_set_flags:krb5_cc_set_flags}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_set\_flags}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ flags}}{}
5404
\begin{quote}\begin{description}
5405
\item[{param}] \leavevmode
5406
\textbf{{[}in{]}} \textbf{context} - Library context
5408
\textbf{{[}inout{]}} \textbf{cache} - Credential cache handle
5410
\textbf{{[}in{]}} \textbf{flags} - Flag bit mask
5412
\end{description}\end{quote}
5413
\begin{quote}\begin{description}
5414
\item[{retval}] \leavevmode\begin{itemize}
5416
0 Success; otherwise - Kerberos error codes
5420
\end{description}\end{quote}
5422
This function resets \emph{cache} flags to \emph{flags} .
5425
\subsubsection{krb5\_cc\_start\_seq\_get - Prepare to sequentially read every credential in a credential cache.}
5426
\label{appdev/refs/api/krb5_cc_start_seq_get::doc}\label{appdev/refs/api/krb5_cc_start_seq_get:krb5-cc-start-seq-get-prepare-to-sequentially-read-every-credential-in-a-credential-cache}\index{krb5\_cc\_start\_seq\_get (C function)}
5428
\begin{fulllineitems}
5429
\phantomsection\label{appdev/refs/api/krb5_cc_start_seq_get:krb5_cc_start_seq_get}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_start\_seq\_get}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_cc_cursor:krb5_cc_cursor]{krb5\_cc\_cursor}} *\emph{ cursor}}{}
5432
\begin{quote}\begin{description}
5433
\item[{param}] \leavevmode
5434
\textbf{{[}in{]}} \textbf{context} - Library context
5436
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5438
\textbf{{[}out{]}} \textbf{cursor} - Cursor
5440
\end{description}\end{quote}
5441
\begin{quote}\begin{description}
5442
\item[{retval}] \leavevmode\begin{itemize}
5444
0 Success; otherwise - Kerberos error codes
5448
\end{description}\end{quote}
5451
{\hyperref[appdev/refs/api/krb5_cc_end_seq_get:krb5_cc_end_seq_get]{\code{krb5\_cc\_end\_seq\_get()}}} must be called to complete the retrieve operation.
5454
\begin{notice}{note}{Note:}
5455
If \emph{cache} is modified between the time of the call to this function and the time of the final {\hyperref[appdev/refs/api/krb5_cc_end_seq_get:krb5_cc_end_seq_get]{\code{krb5\_cc\_end\_seq\_get()}}} , the results are undefined.
5459
\subsubsection{krb5\_cc\_store\_cred - Store credentials in a credential cache.}
5460
\label{appdev/refs/api/krb5_cc_store_cred:krb5-cc-store-cred-store-credentials-in-a-credential-cache}\label{appdev/refs/api/krb5_cc_store_cred::doc}\index{krb5\_cc\_store\_cred (C function)}
5462
\begin{fulllineitems}
5463
\phantomsection\label{appdev/refs/api/krb5_cc_store_cred:krb5_cc_store_cred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_store\_cred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}}{}
5466
\begin{quote}\begin{description}
5467
\item[{param}] \leavevmode
5468
\textbf{{[}in{]}} \textbf{context} - Library context
5470
\textbf{{[}inout{]}} \textbf{cache} - Credential cache handle
5472
\textbf{{[}in{]}} \textbf{creds} - Credentials to be stored in cache
5474
\end{description}\end{quote}
5475
\begin{quote}\begin{description}
5476
\item[{retval}] \leavevmode\begin{itemize}
5482
\item[{return}] \leavevmode\begin{itemize}
5484
Permission errors; storage failure errors; Kerberos error codes
5488
\end{description}\end{quote}
5490
This function stores \emph{creds} into \emph{cache} . If \emph{creds-\textgreater{}server} and the server in the decoded ticket \emph{creds-\textgreater{}ticket} differ, the credentials will be stored under both server principal names.
5493
\subsubsection{krb5\_cc\_support\_switch - Determine whether a credential cache type supports switching.}
5494
\label{appdev/refs/api/krb5_cc_support_switch::doc}\label{appdev/refs/api/krb5_cc_support_switch:krb5-cc-support-switch-determine-whether-a-credential-cache-type-supports-switching}\index{krb5\_cc\_support\_switch (C function)}
5496
\begin{fulllineitems}
5497
\phantomsection\label{appdev/refs/api/krb5_cc_support_switch:krb5_cc_support_switch}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_cc\_support\_switch}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ type}}{}
5500
\begin{quote}\begin{description}
5501
\item[{param}] \leavevmode
5502
\textbf{{[}in{]}} \textbf{context} - Library context
5504
\textbf{{[}in{]}} \textbf{type} - Credential cache type
5506
\end{description}\end{quote}
5507
\begin{quote}\begin{description}
5508
\item[{retval}] \leavevmode\begin{itemize}
5510
TRUE if type supports switching
5513
FALSE if it does not or is not a valid credential cache type.
5517
\end{description}\end{quote}
5519
\begin{notice}{note}{Note:}
5520
First introduced in 1.10
5524
\subsubsection{krb5\_cc\_switch - Make a credential cache the primary cache for its collection.}
5525
\label{appdev/refs/api/krb5_cc_switch::doc}\label{appdev/refs/api/krb5_cc_switch:krb5-cc-switch-make-a-credential-cache-the-primary-cache-for-its-collection}\index{krb5\_cc\_switch (C function)}
5527
\begin{fulllineitems}
5528
\phantomsection\label{appdev/refs/api/krb5_cc_switch:krb5_cc_switch}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_switch}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ cache}}{}
5531
\begin{quote}\begin{description}
5532
\item[{param}] \leavevmode
5533
\textbf{{[}in{]}} \textbf{context} - Library context
5535
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
5537
\end{description}\end{quote}
5538
\begin{quote}\begin{description}
5539
\item[{retval}] \leavevmode\begin{itemize}
5541
0 Success, or the type of cache doesn't support switching
5545
\item[{return}] \leavevmode\begin{itemize}
5547
Kerberos error codes
5551
\end{description}\end{quote}
5553
If the type of \emph{cache} supports it, set \emph{cache} to be the primary credential cache for the collection it belongs to.
5556
\subsubsection{krb5\_cc\_unlock - Unlock a credential cache.}
5557
\label{appdev/refs/api/krb5_cc_unlock:krb5-cc-unlock-unlock-a-credential-cache}\label{appdev/refs/api/krb5_cc_unlock::doc}\index{krb5\_cc\_unlock (C function)}
5559
\begin{fulllineitems}
5560
\phantomsection\label{appdev/refs/api/krb5_cc_unlock:krb5_cc_unlock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_unlock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}}{}
5563
\begin{quote}\begin{description}
5564
\item[{param}] \leavevmode
5565
\textbf{{[}in{]}} \textbf{context} - Library context
5567
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
5569
\end{description}\end{quote}
5570
\begin{quote}\begin{description}
5571
\item[{retval}] \leavevmode\begin{itemize}
5573
0 Success; otherwise - Kerberos error codes
5577
\end{description}\end{quote}
5579
This function unlocks the \emph{ccache} locked by {\hyperref[appdev/refs/api/krb5_cc_lock:krb5_cc_lock]{\code{krb5\_cc\_lock()}}} .
5582
\subsubsection{krb5\_cccol\_cursor\_free - Free a credential cache collection cursor.}
5583
\label{appdev/refs/api/krb5_cccol_cursor_free::doc}\label{appdev/refs/api/krb5_cccol_cursor_free:krb5-cccol-cursor-free-free-a-credential-cache-collection-cursor}\index{krb5\_cccol\_cursor\_free (C function)}
5585
\begin{fulllineitems}
5586
\phantomsection\label{appdev/refs/api/krb5_cccol_cursor_free:krb5_cccol_cursor_free}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_cursor\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cccol_cursor:krb5_cccol_cursor]{krb5\_cccol\_cursor}} *\emph{ cursor}}{}
5589
\begin{quote}\begin{description}
5590
\item[{param}] \leavevmode
5591
\textbf{{[}in{]}} \textbf{context} - Library context
5593
\textbf{{[}in{]}} \textbf{cursor} - Cursor
5595
\end{description}\end{quote}
5596
\begin{quote}\begin{description}
5597
\item[{retval}] \leavevmode\begin{itemize}
5599
0 Success; otherwise - Kerberos error codes
5603
\end{description}\end{quote}
5609
{\hyperref[appdev/refs/api/krb5_cccol_cursor_new:krb5_cccol_cursor_new]{\code{krb5\_cccol\_cursor\_new()}}} , {\hyperref[appdev/refs/api/krb5_cccol_cursor_next:krb5_cccol_cursor_next]{\code{krb5\_cccol\_cursor\_next()}}}
5614
\subsubsection{krb5\_cccol\_cursor\_new - Prepare to iterate over the collection of known credential caches.}
5615
\label{appdev/refs/api/krb5_cccol_cursor_new::doc}\label{appdev/refs/api/krb5_cccol_cursor_new:krb5-cccol-cursor-new-prepare-to-iterate-over-the-collection-of-known-credential-caches}\index{krb5\_cccol\_cursor\_new (C function)}
5617
\begin{fulllineitems}
5618
\phantomsection\label{appdev/refs/api/krb5_cccol_cursor_new:krb5_cccol_cursor_new}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_cursor\_new}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cccol_cursor:krb5_cccol_cursor]{krb5\_cccol\_cursor}} *\emph{ cursor}}{}
5621
\begin{quote}\begin{description}
5622
\item[{param}] \leavevmode
5623
\textbf{{[}in{]}} \textbf{context} - Library context
5625
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
5627
\end{description}\end{quote}
5628
\begin{quote}\begin{description}
5629
\item[{retval}] \leavevmode\begin{itemize}
5631
0 Success; otherwise - Kerberos error codes
5635
\end{description}\end{quote}
5637
Get a new cache iteration \emph{cursor} that will iterate over all known credential caches independent of type.
5639
Use {\hyperref[appdev/refs/api/krb5_cccol_cursor_free:krb5_cccol_cursor_free]{\code{krb5\_cccol\_cursor\_free()}}} to release \emph{cursor} when it is no longer needed.
5645
{\hyperref[appdev/refs/api/krb5_cccol_cursor_next:krb5_cccol_cursor_next]{\code{krb5\_cccol\_cursor\_next()}}}
5650
\subsubsection{krb5\_cccol\_cursor\_next - Get the next credential cache in the collection.}
5651
\label{appdev/refs/api/krb5_cccol_cursor_next::doc}\label{appdev/refs/api/krb5_cccol_cursor_next:krb5-cccol-cursor-next-get-the-next-credential-cache-in-the-collection}\index{krb5\_cccol\_cursor\_next (C function)}
5653
\begin{fulllineitems}
5654
\phantomsection\label{appdev/refs/api/krb5_cccol_cursor_next:krb5_cccol_cursor_next}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_cursor\_next}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cccol_cursor:krb5_cccol_cursor]{krb5\_cccol\_cursor}}\emph{ cursor}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ ccache}}{}
5657
\begin{quote}\begin{description}
5658
\item[{param}] \leavevmode
5659
\textbf{{[}in{]}} \textbf{context} - Library context
5661
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
5663
\textbf{{[}out{]}} \textbf{ccache} - Credential cache handle
5665
\end{description}\end{quote}
5666
\begin{quote}\begin{description}
5667
\item[{retval}] \leavevmode\begin{itemize}
5669
0 Success; otherwise - Kerberos error codes
5673
\end{description}\end{quote}
5675
Use {\hyperref[appdev/refs/api/krb5_cc_close:krb5_cc_close]{\code{krb5\_cc\_close()}}} to close \emph{ccache} when it is no longer needed.
5681
{\hyperref[appdev/refs/api/krb5_cccol_cursor_new:krb5_cccol_cursor_new]{\code{krb5\_cccol\_cursor\_new()}}} , {\hyperref[appdev/refs/api/krb5_cccol_cursor_free:krb5_cccol_cursor_free]{\code{krb5\_cccol\_cursor\_free()}}}
5685
\begin{notice}{note}{Note:}
5686
When all caches are iterated over and the end of the list is reached, \emph{ccache} is set to NULL.
5690
\subsubsection{krb5\_cccol\_have\_content - Check if the credential cache collection contains any credentials.}
5691
\label{appdev/refs/api/krb5_cccol_have_content:krb5-cccol-have-content-check-if-the-credential-cache-collection-contains-any-credentials}\label{appdev/refs/api/krb5_cccol_have_content::doc}\index{krb5\_cccol\_have\_content (C function)}
5693
\begin{fulllineitems}
5694
\phantomsection\label{appdev/refs/api/krb5_cccol_have_content:krb5_cccol_have_content}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_have\_content}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}}{}
5697
\begin{quote}\begin{description}
5698
\item[{param}] \leavevmode
5699
\textbf{{[}in{]}} \textbf{context} - Library context
5701
\end{description}\end{quote}
5702
\begin{quote}\begin{description}
5703
\item[{retval}] \leavevmode\begin{itemize}
5705
0 Credentials are available in the collection
5708
KRB5\_CC\_NOTFOUND The collection contains no credentials
5712
\end{description}\end{quote}
5714
\begin{notice}{note}{Note:}
5715
First introduced in 1.11
5719
\subsubsection{krb5\_cccol\_last\_change\_time - Return a timestamp of the last modification of any known credential cache.}
5720
\label{appdev/refs/api/krb5_cccol_last_change_time:krb5-cccol-last-change-time-return-a-timestamp-of-the-last-modification-of-any-known-credential-cache}\label{appdev/refs/api/krb5_cccol_last_change_time::doc}\index{krb5\_cccol\_last\_change\_time (C function)}
5722
\begin{fulllineitems}
5723
\phantomsection\label{appdev/refs/api/krb5_cccol_last_change_time:krb5_cccol_last_change_time}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_last\_change\_time}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} *\emph{ change\_time}}{}
5726
\begin{quote}\begin{description}
5727
\item[{param}] \leavevmode
5728
\textbf{{[}in{]}} \textbf{context} - Library context
5730
\textbf{{[}out{]}} \textbf{change\_time} - Last modification timestamp
5732
\end{description}\end{quote}
5733
\begin{quote}\begin{description}
5734
\item[{retval}] \leavevmode\begin{itemize}
5736
0 Success; otherwise - Kerberos error codes
5740
\end{description}\end{quote}
5742
This function returns the most recent modification time of any known credential cache, ignoring any caches which cannot supply a last modification time.
5744
If there are no known credential caches, \emph{change\_time} is set to 0.
5747
\subsubsection{krb5\_cccol\_lock - Acquire a global lock for credential caches.}
5748
\label{appdev/refs/api/krb5_cccol_lock::doc}\label{appdev/refs/api/krb5_cccol_lock:krb5-cccol-lock-acquire-a-global-lock-for-credential-caches}\index{krb5\_cccol\_lock (C function)}
5750
\begin{fulllineitems}
5751
\phantomsection\label{appdev/refs/api/krb5_cccol_lock:krb5_cccol_lock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_lock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}}{}
5754
\begin{quote}\begin{description}
5755
\item[{param}] \leavevmode
5756
\textbf{{[}in{]}} \textbf{context} - Library context
5758
\end{description}\end{quote}
5759
\begin{quote}\begin{description}
5760
\item[{retval}] \leavevmode\begin{itemize}
5762
0 Success; otherwise - Kerberos error codes
5766
\end{description}\end{quote}
5768
This function locks the global credential cache collection, ensuring that no ccaches are added to or removed from it until the collection lock is released.
5770
Use {\hyperref[appdev/refs/api/krb5_cccol_unlock:krb5_cccol_unlock]{\code{krb5\_cccol\_unlock()}}} to unlock the lock.
5773
\subsubsection{krb5\_cccol\_unlock - Release a global lock for credential caches.}
5774
\label{appdev/refs/api/krb5_cccol_unlock:krb5-cccol-unlock-release-a-global-lock-for-credential-caches}\label{appdev/refs/api/krb5_cccol_unlock::doc}\index{krb5\_cccol\_unlock (C function)}
5776
\begin{fulllineitems}
5777
\phantomsection\label{appdev/refs/api/krb5_cccol_unlock:krb5_cccol_unlock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cccol\_unlock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}}{}
5780
\begin{quote}\begin{description}
5781
\item[{param}] \leavevmode
5782
\textbf{{[}in{]}} \textbf{context} - Library context
5784
\end{description}\end{quote}
5785
\begin{quote}\begin{description}
5786
\item[{retval}] \leavevmode\begin{itemize}
5788
0 Success; otherwise - Kerberos error codes
5792
\end{description}\end{quote}
5794
This function unlocks the lock from {\hyperref[appdev/refs/api/krb5_cccol_lock:krb5_cccol_lock]{\code{krb5\_cccol\_lock()}}} .
5797
\subsubsection{krb5\_clear\_error\_message - Clear the extended error message in a context.}
5798
\label{appdev/refs/api/krb5_clear_error_message:krb5-clear-error-message-clear-the-extended-error-message-in-a-context}\label{appdev/refs/api/krb5_clear_error_message::doc}\index{krb5\_clear\_error\_message (C function)}
5800
\begin{fulllineitems}
5801
\phantomsection\label{appdev/refs/api/krb5_clear_error_message:krb5_clear_error_message}\pysiglinewithargsret{void \bfcode{krb5\_clear\_error\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}}{}
5804
\begin{quote}\begin{description}
5805
\item[{param}] \leavevmode
5806
\textbf{{[}in{]}} \textbf{ctx} - Library context
5808
\end{description}\end{quote}
5810
This function unsets the extended error message in a context, to ensure that it is not mistakenly applied to another occurrence of the same error code.
5813
\subsubsection{krb5\_check\_clockskew - Check if a timestamp is within the allowed clock skew of the current time.}
5814
\label{appdev/refs/api/krb5_check_clockskew:krb5-check-clockskew-check-if-a-timestamp-is-within-the-allowed-clock-skew-of-the-current-time}\label{appdev/refs/api/krb5_check_clockskew::doc}\index{krb5\_check\_clockskew (C function)}
5816
\begin{fulllineitems}
5817
\phantomsection\label{appdev/refs/api/krb5_check_clockskew:krb5_check_clockskew}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_check\_clockskew}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}}\emph{ date}}{}
5820
\begin{quote}\begin{description}
5821
\item[{param}] \leavevmode
5822
\textbf{{[}in{]}} \textbf{context} - Library context
5824
\textbf{{[}in{]}} \textbf{date} - Timestamp to check
5826
\end{description}\end{quote}
5827
\begin{quote}\begin{description}
5828
\item[{retval}] \leavevmode\begin{itemize}
5833
KRB5KRB\_AP\_ERR\_SKEW date is not within allowable clock skew
5837
\end{description}\end{quote}
5839
This function checks if \emph{date} is close enough to the current time according to the configured allowable clock skew.
5841
\begin{notice}{note}{Note:}
5842
First introduced in 1.10
5846
\subsubsection{krb5\_copy\_addresses - Copy an array of addresses.}
5847
\label{appdev/refs/api/krb5_copy_addresses:krb5-copy-addresses-copy-an-array-of-addresses}\label{appdev/refs/api/krb5_copy_addresses::doc}\index{krb5\_copy\_addresses (C function)}
5849
\begin{fulllineitems}
5850
\phantomsection\label{appdev/refs/api/krb5_copy_addresses:krb5_copy_addresses}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_addresses}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *const *\emph{ inaddr}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ***\emph{ outaddr}}{}
5853
\begin{quote}\begin{description}
5854
\item[{param}] \leavevmode
5855
\textbf{{[}in{]}} \textbf{context} - Library context
5857
\textbf{{[}in{]}} \textbf{inaddr} - Array of addresses to be copied
5859
\textbf{{[}out{]}} \textbf{outaddr} - Copy of array of addresses
5861
\end{description}\end{quote}
5862
\begin{quote}\begin{description}
5863
\item[{retval}] \leavevmode\begin{itemize}
5865
0 Success; otherwise - Kerberos error codes
5869
\end{description}\end{quote}
5871
This function creates a new address array containing a copy of \emph{inaddr} . Use {\hyperref[appdev/refs/api/krb5_free_addresses:krb5_free_addresses]{\code{krb5\_free\_addresses()}}} to free \emph{outaddr} when it is no longer needed.
5874
\subsubsection{krb5\_copy\_authdata - Copy an authorization data list.}
5875
\label{appdev/refs/api/krb5_copy_authdata:krb5-copy-authdata-copy-an-authorization-data-list}\label{appdev/refs/api/krb5_copy_authdata::doc}\index{krb5\_copy\_authdata (C function)}
5877
\begin{fulllineitems}
5878
\phantomsection\label{appdev/refs/api/krb5_copy_authdata:krb5_copy_authdata}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_authdata}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ in\_authdat}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ out}}{}
5881
\begin{quote}\begin{description}
5882
\item[{param}] \leavevmode
5883
\textbf{{[}in{]}} \textbf{context} - Library context
5885
\textbf{{[}in{]}} \textbf{in\_authdat} - List of \emph{krb5\_authdata} structures
5887
\textbf{{[}out{]}} \textbf{out} - New array of \emph{krb5\_authdata} structures
5889
\end{description}\end{quote}
5890
\begin{quote}\begin{description}
5891
\item[{retval}] \leavevmode\begin{itemize}
5893
0 Success; otherwise - Kerberos error codes
5897
\end{description}\end{quote}
5899
This function creates a new authorization data list containing a copy of \emph{in\_authdat} , which must be null-terminated. Use {\hyperref[appdev/refs/api/krb5_free_authdata:krb5_free_authdata]{\code{krb5\_free\_authdata()}}} to free \emph{out} when it is no longer needed.
5901
\begin{notice}{note}{Note:}
5902
The last array entry in \emph{in\_authdat} must be a NULL pointer.
5906
\subsubsection{krb5\_copy\_authenticator - Copy a krb5\_authenticator structure.}
5907
\label{appdev/refs/api/krb5_copy_authenticator:krb5-copy-authenticator-copy-a-krb5-authenticator-structure}\label{appdev/refs/api/krb5_copy_authenticator::doc}\index{krb5\_copy\_authenticator (C function)}
5909
\begin{fulllineitems}
5910
\phantomsection\label{appdev/refs/api/krb5_copy_authenticator:krb5_copy_authenticator}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_authenticator}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_authenticator:krb5_authenticator]{krb5\_authenticator}} *\emph{ authfrom}, {\hyperref[appdev/refs/types/krb5_authenticator:krb5_authenticator]{krb5\_authenticator}} **\emph{ authto}}{}
5913
\begin{quote}\begin{description}
5914
\item[{param}] \leavevmode
5915
\textbf{{[}in{]}} \textbf{context} - Library context
5917
\textbf{{[}in{]}} \textbf{authfrom} - krb5\_authenticator structure to be copied
5919
\textbf{{[}out{]}} \textbf{authto} - Copy of krb5\_authenticator structure
5921
\end{description}\end{quote}
5922
\begin{quote}\begin{description}
5923
\item[{retval}] \leavevmode\begin{itemize}
5925
0 Success; otherwise - Kerberos error codes
5929
\end{description}\end{quote}
5931
This function creates a new krb5\_authenticator structure with the content of \emph{authfrom} . Use {\hyperref[appdev/refs/api/krb5_free_authenticator:krb5_free_authenticator]{\code{krb5\_free\_authenticator()}}} to free \emph{authto} when it is no longer needed.
5934
\subsubsection{krb5\_copy\_checksum - Copy a krb5\_checksum structure.}
5935
\label{appdev/refs/api/krb5_copy_checksum:krb5-copy-checksum-copy-a-krb5-checksum-structure}\label{appdev/refs/api/krb5_copy_checksum::doc}\index{krb5\_copy\_checksum (C function)}
5937
\begin{fulllineitems}
5938
\phantomsection\label{appdev/refs/api/krb5_copy_checksum:krb5_copy_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ ckfrom}, {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} **\emph{ ckto}}{}
5941
\begin{quote}\begin{description}
5942
\item[{param}] \leavevmode
5943
\textbf{{[}in{]}} \textbf{context} - Library context
5945
\textbf{{[}in{]}} \textbf{ckfrom} - Checksum to be copied
5947
\textbf{{[}out{]}} \textbf{ckto} - Copy of krb5\_checksum structure
5949
\end{description}\end{quote}
5950
\begin{quote}\begin{description}
5951
\item[{retval}] \leavevmode\begin{itemize}
5953
0 Success; otherwise - Kerberos error codes
5957
\end{description}\end{quote}
5959
This function creates a new krb5\_checksum structure with the contents of \emph{ckfrom} . Use {\hyperref[appdev/refs/api/krb5_free_checksum:krb5_free_checksum]{\code{krb5\_free\_checksum()}}} to free \emph{ckto} when it is no longer needed.
5962
\subsubsection{krb5\_copy\_context - Copy a krb5\_context structure.}
5963
\label{appdev/refs/api/krb5_copy_context:krb5-copy-context-copy-a-krb5-context-structure}\label{appdev/refs/api/krb5_copy_context::doc}\index{krb5\_copy\_context (C function)}
5965
\begin{fulllineitems}
5966
\phantomsection\label{appdev/refs/api/krb5_copy_context:krb5_copy_context}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_context}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}} *\emph{ nctx\_out}}{}
5969
\begin{quote}\begin{description}
5970
\item[{param}] \leavevmode
5971
\textbf{{[}in{]}} \textbf{ctx} - Library context
5973
\textbf{{[}out{]}} \textbf{nctx\_out} - New context structure
5975
\end{description}\end{quote}
5976
\begin{quote}\begin{description}
5977
\item[{retval}] \leavevmode\begin{itemize}
5983
\item[{return}] \leavevmode\begin{itemize}
5985
Kerberos error codes
5989
\end{description}\end{quote}
5991
The newly created context must be released by calling {\hyperref[appdev/refs/api/krb5_free_context:krb5_free_context]{\code{krb5\_free\_context()}}} when it is no longer needed.
5994
\subsubsection{krb5\_copy\_creds - Copy a krb5\_creds structure.}
5995
\label{appdev/refs/api/krb5_copy_creds:krb5-copy-creds-copy-a-krb5-creds-structure}\label{appdev/refs/api/krb5_copy_creds::doc}\index{krb5\_copy\_creds (C function)}
5997
\begin{fulllineitems}
5998
\phantomsection\label{appdev/refs/api/krb5_copy_creds:krb5_copy_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ incred}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ outcred}}{}
6001
\begin{quote}\begin{description}
6002
\item[{param}] \leavevmode
6003
\textbf{{[}in{]}} \textbf{context} - Library context
6005
\textbf{{[}in{]}} \textbf{incred} - Credentials structure to be copied
6007
\textbf{{[}out{]}} \textbf{outcred} - Copy of \emph{incred}
6009
\end{description}\end{quote}
6010
\begin{quote}\begin{description}
6011
\item[{retval}] \leavevmode\begin{itemize}
6013
0 Success; otherwise - Kerberos error codes
6017
\end{description}\end{quote}
6019
This function creates a new credential with the contents of \emph{incred} . Use {\hyperref[appdev/refs/api/krb5_free_creds:krb5_free_creds]{\code{krb5\_free\_creds()}}} to free \emph{outcred} when it is no longer needed.
6022
\subsubsection{krb5\_copy\_data - Copy a krb5\_data object.}
6023
\label{appdev/refs/api/krb5_copy_data:krb5-copy-data-copy-a-krb5-data-object}\label{appdev/refs/api/krb5_copy_data::doc}\index{krb5\_copy\_data (C function)}
6025
\begin{fulllineitems}
6026
\phantomsection\label{appdev/refs/api/krb5_copy_data:krb5_copy_data}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_data}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ indata}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} **\emph{ outdata}}{}
6029
\begin{quote}\begin{description}
6030
\item[{param}] \leavevmode
6031
\textbf{{[}in{]}} \textbf{context} - Library context
6033
\textbf{{[}in{]}} \textbf{indata} - Data object to be copied
6035
\textbf{{[}out{]}} \textbf{outdata} - Copy of \emph{indata}
6037
\end{description}\end{quote}
6038
\begin{quote}\begin{description}
6039
\item[{retval}] \leavevmode\begin{itemize}
6041
0 Success; otherwise - Kerberos error codes
6045
\end{description}\end{quote}
6047
This function creates a new krb5\_data object with the contents of \emph{indata} . Use {\hyperref[appdev/refs/api/krb5_free_data:krb5_free_data]{\code{krb5\_free\_data()}}} to free \emph{outdata} when it is no longer needed.
6050
\subsubsection{krb5\_copy\_error\_message - Copy the most recent extended error message from one context to another.}
6051
\label{appdev/refs/api/krb5_copy_error_message:krb5-copy-error-message-copy-the-most-recent-extended-error-message-from-one-context-to-another}\label{appdev/refs/api/krb5_copy_error_message::doc}\index{krb5\_copy\_error\_message (C function)}
6053
\begin{fulllineitems}
6054
\phantomsection\label{appdev/refs/api/krb5_copy_error_message:krb5_copy_error_message}\pysiglinewithargsret{void \bfcode{krb5\_copy\_error\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ dest\_ctx}, {\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ src\_ctx}}{}
6057
\begin{quote}\begin{description}
6058
\item[{param}] \leavevmode
6059
\textbf{{[}in{]}} \textbf{dest\_ctx} - Library context to copy message to
6061
\textbf{{[}in{]}} \textbf{src\_ctx} - Library context with current message
6063
\end{description}\end{quote}
6066
\subsubsection{krb5\_copy\_keyblock - Copy a keyblock.}
6067
\label{appdev/refs/api/krb5_copy_keyblock:krb5-copy-keyblock-copy-a-keyblock}\label{appdev/refs/api/krb5_copy_keyblock::doc}\index{krb5\_copy\_keyblock (C function)}
6069
\begin{fulllineitems}
6070
\phantomsection\label{appdev/refs/api/krb5_copy_keyblock:krb5_copy_keyblock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_keyblock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ from}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ to}}{}
6073
\begin{quote}\begin{description}
6074
\item[{param}] \leavevmode
6075
\textbf{{[}in{]}} \textbf{context} - Library context
6077
\textbf{{[}in{]}} \textbf{from} - Keyblock to be copied
6079
\textbf{{[}out{]}} \textbf{to} - Copy of keyblock \emph{from}
6081
\end{description}\end{quote}
6082
\begin{quote}\begin{description}
6083
\item[{retval}] \leavevmode\begin{itemize}
6085
0 Success; otherwise - Kerberos error codes
6089
\end{description}\end{quote}
6091
This function creates a new keyblock with the same contents as \emph{from} . Use {\hyperref[appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock]{\code{krb5\_free\_keyblock()}}} to free \emph{to} when it is no longer needed.
6094
\subsubsection{krb5\_copy\_keyblock\_contents - Copy the contents of a keyblock.}
6095
\label{appdev/refs/api/krb5_copy_keyblock_contents:krb5-copy-keyblock-contents-copy-the-contents-of-a-keyblock}\label{appdev/refs/api/krb5_copy_keyblock_contents::doc}\index{krb5\_copy\_keyblock\_contents (C function)}
6097
\begin{fulllineitems}
6098
\phantomsection\label{appdev/refs/api/krb5_copy_keyblock_contents:krb5_copy_keyblock_contents}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_keyblock\_contents}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ from}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ to}}{}
6101
\begin{quote}\begin{description}
6102
\item[{param}] \leavevmode
6103
\textbf{{[}in{]}} \textbf{context} - Library context
6105
\textbf{{[}in{]}} \textbf{from} - Key to be copied
6107
\textbf{{[}out{]}} \textbf{to} - Output key
6109
\end{description}\end{quote}
6110
\begin{quote}\begin{description}
6111
\item[{retval}] \leavevmode\begin{itemize}
6113
0 Success; otherwise - Kerberos error codes
6117
\end{description}\end{quote}
6119
This function copies the contents of \emph{from} to \emph{to} . Use {\hyperref[appdev/refs/api/krb5_free_keyblock_contents:krb5_free_keyblock_contents]{\code{krb5\_free\_keyblock\_contents()}}} to free \emph{to} when it is no longer needed.
6122
\subsubsection{krb5\_copy\_principal - Copy a principal.}
6123
\label{appdev/refs/api/krb5_copy_principal:krb5-copy-principal-copy-a-principal}\label{appdev/refs/api/krb5_copy_principal::doc}\index{krb5\_copy\_principal (C function)}
6125
\begin{fulllineitems}
6126
\phantomsection\label{appdev/refs/api/krb5_copy_principal:krb5_copy_principal}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_principal}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ inprinc}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} *\emph{ outprinc}}{}
6129
\begin{quote}\begin{description}
6130
\item[{param}] \leavevmode
6131
\textbf{{[}in{]}} \textbf{context} - Library context
6133
\textbf{{[}in{]}} \textbf{inprinc} - Principal to be copied
6135
\textbf{{[}out{]}} \textbf{outprinc} - Copy of \emph{inprinc}
6137
\end{description}\end{quote}
6138
\begin{quote}\begin{description}
6139
\item[{retval}] \leavevmode\begin{itemize}
6141
0 Success; otherwise - Kerberos error codes
6145
\end{description}\end{quote}
6147
This function creates a new principal structure with the contents of \emph{inprinc} . Use {\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}} to free \emph{outprinc} when it is no longer needed.
6150
\subsubsection{krb5\_copy\_ticket - Copy a krb5\_ticket structure.}
6151
\label{appdev/refs/api/krb5_copy_ticket:krb5-copy-ticket-copy-a-krb5-ticket-structure}\label{appdev/refs/api/krb5_copy_ticket::doc}\index{krb5\_copy\_ticket (C function)}
6153
\begin{fulllineitems}
6154
\phantomsection\label{appdev/refs/api/krb5_copy_ticket:krb5_copy_ticket}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_copy\_ticket}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} *\emph{ from}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} **\emph{ pto}}{}
6157
\begin{quote}\begin{description}
6158
\item[{param}] \leavevmode
6159
\textbf{{[}in{]}} \textbf{context} - Library context
6161
\textbf{{[}in{]}} \textbf{from} - Ticket to be copied
6163
\textbf{{[}out{]}} \textbf{pto} - Copy of ticket
6165
\end{description}\end{quote}
6166
\begin{quote}\begin{description}
6167
\item[{retval}] \leavevmode\begin{itemize}
6169
0 Success; otherwise - Kerberos error codes
6173
\end{description}\end{quote}
6175
This function creates a new krb5\_ticket structure containing the contents of \emph{from} . Use {\hyperref[appdev/refs/api/krb5_free_ticket:krb5_free_ticket]{\code{krb5\_free\_ticket()}}} to free \emph{pto} when it is no longer needed.
6178
\subsubsection{krb5\_find\_authdata - Find authorization data elements.}
6179
\label{appdev/refs/api/krb5_find_authdata:krb5-find-authdata-find-authorization-data-elements}\label{appdev/refs/api/krb5_find_authdata::doc}\index{krb5\_find\_authdata (C function)}
6181
\begin{fulllineitems}
6182
\phantomsection\label{appdev/refs/api/krb5_find_authdata:krb5_find_authdata}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_find\_authdata}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ ticket\_authdata}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ ap\_req\_authdata}, {\hyperref[appdev/refs/types/krb5_authdatatype:krb5_authdatatype]{krb5\_authdatatype}}\emph{ ad\_type}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ results}}{}
6185
\begin{quote}\begin{description}
6186
\item[{param}] \leavevmode
6187
\textbf{{[}in{]}} \textbf{context} - Library context
6189
\textbf{{[}in{]}} \textbf{ticket\_authdata} - Authorization data list from ticket
6191
\textbf{{[}in{]}} \textbf{ap\_req\_authdata} - Authorization data list from AP request
6193
\textbf{{[}in{]}} \textbf{ad\_type} - Authorization data type to find
6195
\textbf{{[}out{]}} \textbf{results} - List of matching entries
6197
\end{description}\end{quote}
6199
This function searches \emph{ticket\_authdata} and \emph{ap\_req\_authdata} for elements of type \emph{ad\_type} . Either input list may be NULL, in which case it will not be searched; otherwise, the input lists must be terminated by NULL entries. This function will search inside AD-IF-RELEVANT containers if found in either list. Use {\hyperref[appdev/refs/api/krb5_free_authdata:krb5_free_authdata]{\code{krb5\_free\_authdata()}}} to free \emph{results} when it is no longer needed.
6201
\begin{notice}{note}{Note:}
6202
First introduced in 1.10
6206
\subsubsection{krb5\_free\_addresses - Free the data stored in array of addresses.}
6207
\label{appdev/refs/api/krb5_free_addresses:krb5-free-addresses-free-the-data-stored-in-array-of-addresses}\label{appdev/refs/api/krb5_free_addresses::doc}\index{krb5\_free\_addresses (C function)}
6209
\begin{fulllineitems}
6210
\phantomsection\label{appdev/refs/api/krb5_free_addresses:krb5_free_addresses}\pysiglinewithargsret{void \bfcode{krb5\_free\_addresses}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} **\emph{ val}}{}
6213
\begin{quote}\begin{description}
6214
\item[{param}] \leavevmode
6215
\textbf{{[}in{]}} \textbf{context} - Library context
6217
\textbf{{[}in{]}} \textbf{val} - Array of addresses to be freed
6219
\end{description}\end{quote}
6221
This function frees the contents of \emph{val} and the array itself.
6223
\begin{notice}{note}{Note:}
6224
The last entry in the array must be a NULL pointer.
6228
\subsubsection{krb5\_free\_ap\_rep\_enc\_part - Free a krb5\_ap\_rep\_enc\_part structure.}
6229
\label{appdev/refs/api/krb5_free_ap_rep_enc_part:krb5-free-ap-rep-enc-part-free-a-krb5-ap-rep-enc-part-structure}\label{appdev/refs/api/krb5_free_ap_rep_enc_part::doc}\index{krb5\_free\_ap\_rep\_enc\_part (C function)}
6231
\begin{fulllineitems}
6232
\phantomsection\label{appdev/refs/api/krb5_free_ap_rep_enc_part:krb5_free_ap_rep_enc_part}\pysiglinewithargsret{void \bfcode{krb5\_free\_ap\_rep\_enc\_part}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part]{krb5\_ap\_rep\_enc\_part}} *\emph{ val}}{}
6235
\begin{quote}\begin{description}
6236
\item[{param}] \leavevmode
6237
\textbf{{[}in{]}} \textbf{context} - Library context
6239
\textbf{{[}in{]}} \textbf{val} - AP-REP enc part to be freed
6241
\end{description}\end{quote}
6243
This function frees the contents of \emph{val} and the structure itself.
6246
\subsubsection{krb5\_free\_authdata - Free the storage assigned to array of authentication data.}
6247
\label{appdev/refs/api/krb5_free_authdata::doc}\label{appdev/refs/api/krb5_free_authdata:krb5-free-authdata-free-the-storage-assigned-to-array-of-authentication-data}\index{krb5\_free\_authdata (C function)}
6249
\begin{fulllineitems}
6250
\phantomsection\label{appdev/refs/api/krb5_free_authdata:krb5_free_authdata}\pysiglinewithargsret{void \bfcode{krb5\_free\_authdata}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} **\emph{ val}}{}
6253
\begin{quote}\begin{description}
6254
\item[{param}] \leavevmode
6255
\textbf{{[}in{]}} \textbf{context} - Library context
6257
\textbf{{[}in{]}} \textbf{val} - Array of authentication data to be freed
6259
\end{description}\end{quote}
6261
This function frees the contents of \emph{val} and the array itself.
6263
\begin{notice}{note}{Note:}
6264
The last entry in the array must be a NULL pointer.
6268
\subsubsection{krb5\_free\_authenticator - Free a krb5\_authenticator structure.}
6269
\label{appdev/refs/api/krb5_free_authenticator:krb5-free-authenticator-free-a-krb5-authenticator-structure}\label{appdev/refs/api/krb5_free_authenticator::doc}\index{krb5\_free\_authenticator (C function)}
6271
\begin{fulllineitems}
6272
\phantomsection\label{appdev/refs/api/krb5_free_authenticator:krb5_free_authenticator}\pysiglinewithargsret{void \bfcode{krb5\_free\_authenticator}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authenticator:krb5_authenticator]{krb5\_authenticator}} *\emph{ val}}{}
6275
\begin{quote}\begin{description}
6276
\item[{param}] \leavevmode
6277
\textbf{{[}in{]}} \textbf{context} - Library context
6279
\textbf{{[}in{]}} \textbf{val} - Authenticator structure to be freed
6281
\end{description}\end{quote}
6283
This function frees the contents of \emph{val} and the structure itself.
6286
\subsubsection{krb5\_free\_cred\_contents - Free the contents of a krb5\_creds structure.}
6287
\label{appdev/refs/api/krb5_free_cred_contents::doc}\label{appdev/refs/api/krb5_free_cred_contents:krb5-free-cred-contents-free-the-contents-of-a-krb5-creds-structure}\index{krb5\_free\_cred\_contents (C function)}
6289
\begin{fulllineitems}
6290
\phantomsection\label{appdev/refs/api/krb5_free_cred_contents:krb5_free_cred_contents}\pysiglinewithargsret{void \bfcode{krb5\_free\_cred\_contents}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ val}}{}
6293
\begin{quote}\begin{description}
6294
\item[{param}] \leavevmode
6295
\textbf{{[}in{]}} \textbf{context} - Library context
6297
\textbf{{[}in{]}} \textbf{val} - Credential structure to free contents of
6299
\end{description}\end{quote}
6301
This function frees the contents of \emph{val} , but not the structure itself.
6304
\subsubsection{krb5\_free\_creds - Free a krb5\_creds structure.}
6305
\label{appdev/refs/api/krb5_free_creds::doc}\label{appdev/refs/api/krb5_free_creds:krb5-free-creds-free-a-krb5-creds-structure}\index{krb5\_free\_creds (C function)}
6307
\begin{fulllineitems}
6308
\phantomsection\label{appdev/refs/api/krb5_free_creds:krb5_free_creds}\pysiglinewithargsret{void \bfcode{krb5\_free\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ val}}{}
6311
\begin{quote}\begin{description}
6312
\item[{param}] \leavevmode
6313
\textbf{{[}in{]}} \textbf{context} - Library context
6315
\textbf{{[}in{]}} \textbf{val} - Credential structure to be freed.
6317
\end{description}\end{quote}
6319
This function frees the contents of \emph{val} and the structure itself.
6322
\subsubsection{krb5\_free\_data - Free a krb5\_data structure.}
6323
\label{appdev/refs/api/krb5_free_data:krb5-free-data-free-a-krb5-data-structure}\label{appdev/refs/api/krb5_free_data::doc}\index{krb5\_free\_data (C function)}
6325
\begin{fulllineitems}
6326
\phantomsection\label{appdev/refs/api/krb5_free_data:krb5_free_data}\pysiglinewithargsret{void \bfcode{krb5\_free\_data}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ val}}{}
6329
\begin{quote}\begin{description}
6330
\item[{param}] \leavevmode
6331
\textbf{{[}in{]}} \textbf{context} - Library context
6333
\textbf{{[}in{]}} \textbf{val} - Data structure to be freed
6335
\end{description}\end{quote}
6337
This function frees the contents of \emph{val} and the structure itself.
6340
\subsubsection{krb5\_free\_data\_contents - Free the contents of a krb5\_data structure and zero the data field.}
6341
\label{appdev/refs/api/krb5_free_data_contents:krb5-free-data-contents-free-the-contents-of-a-krb5-data-structure-and-zero-the-data-field}\label{appdev/refs/api/krb5_free_data_contents::doc}\index{krb5\_free\_data\_contents (C function)}
6343
\begin{fulllineitems}
6344
\phantomsection\label{appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents}\pysiglinewithargsret{void \bfcode{krb5\_free\_data\_contents}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ val}}{}
6347
\begin{quote}\begin{description}
6348
\item[{param}] \leavevmode
6349
\textbf{{[}in{]}} \textbf{context} - Library context
6351
\textbf{{[}in{]}} \textbf{val} - Data structure to free contents of
6353
\end{description}\end{quote}
6355
This function frees the contents of \emph{val} , but not the structure itself.
6358
\subsubsection{krb5\_free\_default\_realm - Free a default realm string returned by krb5\_get\_default\_realm() .}
6359
\label{appdev/refs/api/krb5_free_default_realm:krb5-free-default-realm-free-a-default-realm-string-returned-by-krb5-get-default-realm}\label{appdev/refs/api/krb5_free_default_realm::doc}\index{krb5\_free\_default\_realm (C function)}
6361
\begin{fulllineitems}
6362
\phantomsection\label{appdev/refs/api/krb5_free_default_realm:krb5_free_default_realm}\pysiglinewithargsret{void \bfcode{krb5\_free\_default\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, char *\emph{ lrealm}}{}
6365
\begin{quote}\begin{description}
6366
\item[{param}] \leavevmode
6367
\textbf{{[}in{]}} \textbf{context} - Library context
6369
\textbf{{[}in{]}} \textbf{lrealm} - Realm to be freed
6371
\end{description}\end{quote}
6374
\subsubsection{krb5\_free\_error - Free an error allocated by krb5\_read\_error() or krb5\_sendauth() .}
6375
\label{appdev/refs/api/krb5_free_error::doc}\label{appdev/refs/api/krb5_free_error:krb5-free-error-free-an-error-allocated-by-krb5-read-error-or-krb5-sendauth}\index{krb5\_free\_error (C function)}
6377
\begin{fulllineitems}
6378
\phantomsection\label{appdev/refs/api/krb5_free_error:krb5_free_error}\pysiglinewithargsret{void \bfcode{krb5\_free\_error}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_error:krb5_error]{krb5\_error}} *\emph{ val}}{}
6381
\begin{quote}\begin{description}
6382
\item[{param}] \leavevmode
6383
\textbf{{[}in{]}} \textbf{context} - Library context
6385
\textbf{{[}in{]}} \textbf{val} - Error data structure to be freed
6387
\end{description}\end{quote}
6389
This function frees the contents of \emph{val} and the structure itself.
6392
\subsubsection{krb5\_free\_host\_realm - Free the memory allocated by krb5\_get\_host\_realm() .}
6393
\label{appdev/refs/api/krb5_free_host_realm::doc}\label{appdev/refs/api/krb5_free_host_realm:krb5-free-host-realm-free-the-memory-allocated-by-krb5-get-host-realm}\index{krb5\_free\_host\_realm (C function)}
6395
\begin{fulllineitems}
6396
\phantomsection\label{appdev/refs/api/krb5_free_host_realm:krb5_free_host_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_free\_host\_realm}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, char *const *\emph{ realmlist}}{}
6399
\begin{quote}\begin{description}
6400
\item[{param}] \leavevmode
6401
\textbf{{[}in{]}} \textbf{context} - Library context
6403
\textbf{{[}in{]}} \textbf{realmlist} - List of realm names to be released
6405
\end{description}\end{quote}
6406
\begin{quote}\begin{description}
6407
\item[{retval}] \leavevmode\begin{itemize}
6413
\item[{return}] \leavevmode\begin{itemize}
6415
Kerberos error codes
6419
\end{description}\end{quote}
6422
\subsubsection{krb5\_free\_keyblock - Free a krb5\_keyblock structure.}
6423
\label{appdev/refs/api/krb5_free_keyblock:krb5-free-keyblock-free-a-krb5-keyblock-structure}\label{appdev/refs/api/krb5_free_keyblock::doc}\index{krb5\_free\_keyblock (C function)}
6425
\begin{fulllineitems}
6426
\phantomsection\label{appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock}\pysiglinewithargsret{void \bfcode{krb5\_free\_keyblock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ val}}{}
6429
\begin{quote}\begin{description}
6430
\item[{param}] \leavevmode
6431
\textbf{{[}in{]}} \textbf{context} - Library context
6433
\textbf{{[}in{]}} \textbf{val} - Keyblock to be freed
6435
\end{description}\end{quote}
6437
This function frees the contents of \emph{val} and the structure itself.
6440
\subsubsection{krb5\_free\_keyblock\_contents - Free the contents of a krb5\_keyblock structure.}
6441
\label{appdev/refs/api/krb5_free_keyblock_contents::doc}\label{appdev/refs/api/krb5_free_keyblock_contents:krb5-free-keyblock-contents-free-the-contents-of-a-krb5-keyblock-structure}\index{krb5\_free\_keyblock\_contents (C function)}
6443
\begin{fulllineitems}
6444
\phantomsection\label{appdev/refs/api/krb5_free_keyblock_contents:krb5_free_keyblock_contents}\pysiglinewithargsret{void \bfcode{krb5\_free\_keyblock\_contents}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}}{}
6447
\begin{quote}\begin{description}
6448
\item[{param}] \leavevmode
6449
\textbf{{[}in{]}} \textbf{context} - Library context
6451
\textbf{{[}in{]}} \textbf{key} - Keyblock to be freed
6453
\end{description}\end{quote}
6455
This function frees the contents of \emph{key} , but not the structure itself.
6458
\subsubsection{krb5\_free\_keytab\_entry\_contents - Free the contents of a key table entry.}
6459
\label{appdev/refs/api/krb5_free_keytab_entry_contents:krb5-free-keytab-entry-contents-free-the-contents-of-a-key-table-entry}\label{appdev/refs/api/krb5_free_keytab_entry_contents::doc}\index{krb5\_free\_keytab\_entry\_contents (C function)}
6461
\begin{fulllineitems}
6462
\phantomsection\label{appdev/refs/api/krb5_free_keytab_entry_contents:krb5_free_keytab_entry_contents}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_free\_keytab\_entry\_contents}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry]{krb5\_keytab\_entry}} *\emph{ entry}}{}
6465
\begin{quote}\begin{description}
6466
\item[{param}] \leavevmode
6467
\textbf{{[}in{]}} \textbf{context} - Library context
6469
\textbf{{[}in{]}} \textbf{entry} - Key table entry whose contents are to be freed
6471
\end{description}\end{quote}
6472
\begin{quote}\begin{description}
6473
\item[{retval}] \leavevmode\begin{itemize}
6475
0 Success; otherwise - Kerberos error codes
6479
\end{description}\end{quote}
6481
\begin{notice}{note}{Note:}
6482
The pointer is not freed.
6486
\subsubsection{krb5\_free\_string - Free a string allocated by a krb5 function.}
6487
\label{appdev/refs/api/krb5_free_string:krb5-free-string-free-a-string-allocated-by-a-krb5-function}\label{appdev/refs/api/krb5_free_string::doc}\index{krb5\_free\_string (C function)}
6489
\begin{fulllineitems}
6490
\phantomsection\label{appdev/refs/api/krb5_free_string:krb5_free_string}\pysiglinewithargsret{void \bfcode{krb5\_free\_string}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, char *\emph{ val}}{}
6493
\begin{quote}\begin{description}
6494
\item[{param}] \leavevmode
6495
\textbf{{[}in{]}} \textbf{context} - Library context
6497
\textbf{{[}in{]}} \textbf{val} - String to be freed
6499
\end{description}\end{quote}
6501
\begin{notice}{note}{Note:}
6502
First introduced in 1.10
6506
\subsubsection{krb5\_free\_ticket - Free a ticket.}
6507
\label{appdev/refs/api/krb5_free_ticket:krb5-free-ticket-free-a-ticket}\label{appdev/refs/api/krb5_free_ticket::doc}\index{krb5\_free\_ticket (C function)}
6509
\begin{fulllineitems}
6510
\phantomsection\label{appdev/refs/api/krb5_free_ticket:krb5_free_ticket}\pysiglinewithargsret{void \bfcode{krb5\_free\_ticket}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} *\emph{ val}}{}
6513
\begin{quote}\begin{description}
6514
\item[{param}] \leavevmode
6515
\textbf{{[}in{]}} \textbf{context} - Library context
6517
\textbf{{[}in{]}} \textbf{val} - Ticket to be freed
6519
\end{description}\end{quote}
6521
This function frees the contents of \emph{val} and the structure itself.
6524
\subsubsection{krb5\_free\_unparsed\_name - Free a string representation of a principal.}
6525
\label{appdev/refs/api/krb5_free_unparsed_name::doc}\label{appdev/refs/api/krb5_free_unparsed_name:krb5-free-unparsed-name-free-a-string-representation-of-a-principal}\index{krb5\_free\_unparsed\_name (C function)}
6527
\begin{fulllineitems}
6528
\phantomsection\label{appdev/refs/api/krb5_free_unparsed_name:krb5_free_unparsed_name}\pysiglinewithargsret{void \bfcode{krb5\_free\_unparsed\_name}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, char *\emph{ val}}{}
6531
\begin{quote}\begin{description}
6532
\item[{param}] \leavevmode
6533
\textbf{{[}in{]}} \textbf{context} - Library context
6535
\textbf{{[}in{]}} \textbf{val} - Name string to be freed
6537
\end{description}\end{quote}
6540
\subsubsection{krb5\_get\_permitted\_enctypes - Return a list of encryption types permitted for session keys.}
6541
\label{appdev/refs/api/krb5_get_permitted_enctypes:krb5-get-permitted-enctypes-return-a-list-of-encryption-types-permitted-for-session-keys}\label{appdev/refs/api/krb5_get_permitted_enctypes::doc}\index{krb5\_get\_permitted\_enctypes (C function)}
6543
\begin{fulllineitems}
6544
\phantomsection\label{appdev/refs/api/krb5_get_permitted_enctypes:krb5_get_permitted_enctypes}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_permitted\_enctypes}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} **\emph{ ktypes}}{}
6547
\begin{quote}\begin{description}
6548
\item[{param}] \leavevmode
6549
\textbf{{[}in{]}} \textbf{context} - Library context
6551
\textbf{{[}out{]}} \textbf{ktypes} - Zero-terminated list of encryption types
6553
\end{description}\end{quote}
6554
\begin{quote}\begin{description}
6555
\item[{retval}] \leavevmode\begin{itemize}
6557
0 Success; otherwise - Kerberos error codes
6561
\end{description}\end{quote}
6563
This function returns the list of encryption types permitted for session keys within \emph{context} , as determined by configuration or by a previous call to {\hyperref[appdev/refs/api/krb5_set_default_tgs_enctypes:krb5_set_default_tgs_enctypes]{\code{krb5\_set\_default\_tgs\_enctypes()}}} .
6566
\subsubsection{krb5\_get\_server\_rcache - Generate a replay cache object for server use and open it.}
6567
\label{appdev/refs/api/krb5_get_server_rcache:krb5-get-server-rcache-generate-a-replay-cache-object-for-server-use-and-open-it}\label{appdev/refs/api/krb5_get_server_rcache::doc}\index{krb5\_get\_server\_rcache (C function)}
6569
\begin{fulllineitems}
6570
\phantomsection\label{appdev/refs/api/krb5_get_server_rcache:krb5_get_server_rcache}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_server\_rcache}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ piece}, {\hyperref[appdev/refs/types/krb5_rcache:krb5_rcache]{krb5\_rcache}} *\emph{ rcptr}}{}
6573
\begin{quote}\begin{description}
6574
\item[{param}] \leavevmode
6575
\textbf{{[}in{]}} \textbf{context} - Library context
6577
\textbf{{[}in{]}} \textbf{piece} - Unique identifier for replay cache
6579
\textbf{{[}out{]}} \textbf{rcptr} - Handle to an open rcache
6581
\end{description}\end{quote}
6582
\begin{quote}\begin{description}
6583
\item[{retval}] \leavevmode\begin{itemize}
6585
0 Success; otherwise - Kerberos error codes
6589
\end{description}\end{quote}
6591
This function generates a replay cache name based on \emph{piece} and opens a handle to it. Typically \emph{piece} is the first component of the service principal name. Use krb5\_rc\_close() to close \emph{rcptr} when it is no longer needed.
6594
\subsubsection{krb5\_get\_time\_offsets - Return the time offsets from the os context.}
6595
\label{appdev/refs/api/krb5_get_time_offsets:krb5-get-time-offsets-return-the-time-offsets-from-the-os-context}\label{appdev/refs/api/krb5_get_time_offsets::doc}\index{krb5\_get\_time\_offsets (C function)}
6597
\begin{fulllineitems}
6598
\phantomsection\label{appdev/refs/api/krb5_get_time_offsets:krb5_get_time_offsets}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_time\_offsets}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} *\emph{ seconds}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} *\emph{ microseconds}}{}
6601
\begin{quote}\begin{description}
6602
\item[{param}] \leavevmode
6603
\textbf{{[}in{]}} \textbf{context} - Library context
6605
\textbf{{[}out{]}} \textbf{seconds} - Time offset, seconds portion
6607
\textbf{{[}out{]}} \textbf{microseconds} - Time offset, microseconds portion
6609
\end{description}\end{quote}
6610
\begin{quote}\begin{description}
6611
\item[{retval}] \leavevmode\begin{itemize}
6613
0 Success; otherwise - Kerberos error codes
6617
\end{description}\end{quote}
6619
This function returns the time offsets in \emph{context} .
6622
\subsubsection{krb5\_init\_context\_profile - Create a krb5 library context using a specified profile.}
6623
\label{appdev/refs/api/krb5_init_context_profile:krb5-init-context-profile-create-a-krb5-library-context-using-a-specified-profile}\label{appdev/refs/api/krb5_init_context_profile::doc}\index{krb5\_init\_context\_profile (C function)}
6625
\begin{fulllineitems}
6626
\phantomsection\label{appdev/refs/api/krb5_init_context_profile:krb5_init_context_profile}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_context\_profile}}{struct \_profile\_t *\emph{ profile}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ flags}, {\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}} *\emph{ context}}{}
6629
\begin{quote}\begin{description}
6630
\item[{param}] \leavevmode
6631
\textbf{{[}in{]}} \textbf{profile} - Profile object (NULL to create default profile)
6633
\textbf{{[}in{]}} \textbf{flags} - Context initialization flags
6635
\textbf{{[}out{]}} \textbf{context} - Library context
6637
\end{description}\end{quote}
6639
Create a context structure, optionally using a specified profile and initialization flags. If \emph{profile} is NULL, the default profile will be created from config files. If \emph{profile} is non-null, a copy of it will be made for the new context; the caller should still clean up its copy. Valid flag values are:
6642
{\hyperref[appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:KRB5_INIT_CONTEXT_SECURE]{\code{KRB5\_INIT\_CONTEXT\_SECURE}}} Ignore environment variables
6645
{\hyperref[appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:KRB5_INIT_CONTEXT_KDC]{\code{KRB5\_INIT\_CONTEXT\_KDC}}} Use KDC configuration if creating profile
6650
\subsubsection{krb5\_init\_creds\_free - Free an initial credentials context.}
6651
\label{appdev/refs/api/krb5_init_creds_free::doc}\label{appdev/refs/api/krb5_init_creds_free:krb5-init-creds-free-free-an-initial-credentials-context}\index{krb5\_init\_creds\_free (C function)}
6653
\begin{fulllineitems}
6654
\phantomsection\label{appdev/refs/api/krb5_init_creds_free:krb5_init_creds_free}\pysiglinewithargsret{void \bfcode{krb5\_init\_creds\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}}{}
6657
\begin{quote}\begin{description}
6658
\item[{param}] \leavevmode
6659
\textbf{{[}in{]}} \textbf{context} - Library context
6661
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6663
\end{description}\end{quote}
6666
\subsubsection{krb5\_init\_creds\_get - Acquire credentials using an initial credentials context.}
6667
\label{appdev/refs/api/krb5_init_creds_get::doc}\label{appdev/refs/api/krb5_init_creds_get:krb5-init-creds-get-acquire-credentials-using-an-initial-credentials-context}\index{krb5\_init\_creds\_get (C function)}
6669
\begin{fulllineitems}
6670
\phantomsection\label{appdev/refs/api/krb5_init_creds_get:krb5_init_creds_get}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_get}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}}{}
6673
\begin{quote}\begin{description}
6674
\item[{param}] \leavevmode
6675
\textbf{{[}in{]}} \textbf{context} - Library context
6677
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6679
\end{description}\end{quote}
6680
\begin{quote}\begin{description}
6681
\item[{retval}] \leavevmode\begin{itemize}
6683
0 Success; otherwise - Kerberos error codes
6687
\end{description}\end{quote}
6689
This function synchronously obtains credentials using a context created by {\hyperref[appdev/refs/api/krb5_init_creds_init:krb5_init_creds_init]{\code{krb5\_init\_creds\_init()}}} . On successful return, the credentials can be retrieved with {\hyperref[appdev/refs/api/krb5_init_creds_get_creds:krb5_init_creds_get_creds]{\code{krb5\_init\_creds\_get\_creds()}}} .
6692
\subsubsection{krb5\_init\_creds\_get\_creds - Retrieve acquired credentials from an initial credentials context.}
6693
\label{appdev/refs/api/krb5_init_creds_get_creds::doc}\label{appdev/refs/api/krb5_init_creds_get_creds:krb5-init-creds-get-creds-retrieve-acquired-credentials-from-an-initial-credentials-context}\index{krb5\_init\_creds\_get\_creds (C function)}
6695
\begin{fulllineitems}
6696
\phantomsection\label{appdev/refs/api/krb5_init_creds_get_creds:krb5_init_creds_get_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_get\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}}{}
6699
\begin{quote}\begin{description}
6700
\item[{param}] \leavevmode
6701
\textbf{{[}in{]}} \textbf{context} - Library context
6703
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6705
\textbf{{[}out{]}} \textbf{creds} - Acquired credentials
6707
\end{description}\end{quote}
6708
\begin{quote}\begin{description}
6709
\item[{retval}] \leavevmode\begin{itemize}
6711
0 Success; otherwise - Kerberos error codes
6715
\end{description}\end{quote}
6717
This function copies the acquired initial credentials from \emph{ctx} into \emph{creds} , after the successful completion of {\hyperref[appdev/refs/api/krb5_init_creds_get:krb5_init_creds_get]{\code{krb5\_init\_creds\_get()}}} or {\hyperref[appdev/refs/api/krb5_init_creds_step:krb5_init_creds_step]{\code{krb5\_init\_creds\_step()}}} . Use {\hyperref[appdev/refs/api/krb5_free_cred_contents:krb5_free_cred_contents]{\code{krb5\_free\_cred\_contents()}}} to free \emph{creds} when it is no longer needed.
6720
\subsubsection{krb5\_init\_creds\_get\_error - Get the last error from KDC from an initial credentials context.}
6721
\label{appdev/refs/api/krb5_init_creds_get_error:krb5-init-creds-get-error-get-the-last-error-from-kdc-from-an-initial-credentials-context}\label{appdev/refs/api/krb5_init_creds_get_error::doc}\index{krb5\_init\_creds\_get\_error (C function)}
6723
\begin{fulllineitems}
6724
\phantomsection\label{appdev/refs/api/krb5_init_creds_get_error:krb5_init_creds_get_error}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_get\_error}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_error:krb5_error]{krb5\_error}} **\emph{ error}}{}
6727
\begin{quote}\begin{description}
6728
\item[{param}] \leavevmode
6729
\textbf{{[}in{]}} \textbf{context} - Library context
6731
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6733
\textbf{{[}out{]}} \textbf{error} - Error from KDC, or NULL if none was received
6735
\end{description}\end{quote}
6736
\begin{quote}\begin{description}
6737
\item[{retval}] \leavevmode\begin{itemize}
6739
0 Success; otherwise - Kerberos error codes
6743
\end{description}\end{quote}
6746
\subsubsection{krb5\_init\_creds\_get\_times - Retrieve ticket times from an initial credentials context.}
6747
\label{appdev/refs/api/krb5_init_creds_get_times::doc}\label{appdev/refs/api/krb5_init_creds_get_times:krb5-init-creds-get-times-retrieve-ticket-times-from-an-initial-credentials-context}\index{krb5\_init\_creds\_get\_times (C function)}
6749
\begin{fulllineitems}
6750
\phantomsection\label{appdev/refs/api/krb5_init_creds_get_times:krb5_init_creds_get_times}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_get\_times}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_ticket_times:krb5_ticket_times]{krb5\_ticket\_times}} *\emph{ times}}{}
6753
\begin{quote}\begin{description}
6754
\item[{param}] \leavevmode
6755
\textbf{{[}in{]}} \textbf{context} - Library context
6757
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6759
\textbf{{[}out{]}} \textbf{times} - Ticket times for acquired credentials
6761
\end{description}\end{quote}
6762
\begin{quote}\begin{description}
6763
\item[{retval}] \leavevmode\begin{itemize}
6765
0 Success; otherwise - Kerberos error codes
6769
\end{description}\end{quote}
6771
The initial credentials context must have completed obtaining credentials via either {\hyperref[appdev/refs/api/krb5_init_creds_get:krb5_init_creds_get]{\code{krb5\_init\_creds\_get()}}} or {\hyperref[appdev/refs/api/krb5_init_creds_step:krb5_init_creds_step]{\code{krb5\_init\_creds\_step()}}} .
6774
\subsubsection{krb5\_init\_creds\_init - Create a context for acquiring initial credentials.}
6775
\label{appdev/refs/api/krb5_init_creds_init::doc}\label{appdev/refs/api/krb5_init_creds_init:krb5-init-creds-init-create-a-context-for-acquiring-initial-credentials}\index{krb5\_init\_creds\_init (C function)}
6777
\begin{fulllineitems}
6778
\phantomsection\label{appdev/refs/api/krb5_init_creds_init:krb5_init_creds_init}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_init}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_prompter_fct:krb5_prompter_fct]{krb5\_prompter\_fct}}\emph{ prompter}, void *\emph{ data}, {\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}}\emph{ start\_time}, {\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ options}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}} *\emph{ ctx}}{}
6781
\begin{quote}\begin{description}
6782
\item[{param}] \leavevmode
6783
\textbf{{[}in{]}} \textbf{context} - Library context
6785
\textbf{{[}in{]}} \textbf{client} - Client principal to get initial creds for
6787
\textbf{{[}in{]}} \textbf{prompter} - Prompter callback
6789
\textbf{{[}in{]}} \textbf{data} - Prompter callback argument
6791
\textbf{{[}in{]}} \textbf{start\_time} - Time when credentials become valid (0 for now)
6793
\textbf{{[}in{]}} \textbf{options} - Options structure (NULL for default)
6795
\textbf{{[}out{]}} \textbf{ctx} - New initial credentials context
6797
\end{description}\end{quote}
6798
\begin{quote}\begin{description}
6799
\item[{retval}] \leavevmode\begin{itemize}
6801
0 Success; otherwise - Kerberos error codes
6805
\end{description}\end{quote}
6807
This function creates a new context for acquiring initial credentials. Use {\hyperref[appdev/refs/api/krb5_init_creds_free:krb5_init_creds_free]{\code{krb5\_init\_creds\_free()}}} to free \emph{ctx} when it is no longer needed.
6810
\subsubsection{krb5\_init\_creds\_set\_keytab - Specify a keytab to use for acquiring initial credentials.}
6811
\label{appdev/refs/api/krb5_init_creds_set_keytab:krb5-init-creds-set-keytab-specify-a-keytab-to-use-for-acquiring-initial-credentials}\label{appdev/refs/api/krb5_init_creds_set_keytab::doc}\index{krb5\_init\_creds\_set\_keytab (C function)}
6813
\begin{fulllineitems}
6814
\phantomsection\label{appdev/refs/api/krb5_init_creds_set_keytab:krb5_init_creds_set_keytab}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_set\_keytab}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}}{}
6817
\begin{quote}\begin{description}
6818
\item[{param}] \leavevmode
6819
\textbf{{[}in{]}} \textbf{context} - Library context
6821
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6823
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
6825
\end{description}\end{quote}
6826
\begin{quote}\begin{description}
6827
\item[{retval}] \leavevmode\begin{itemize}
6829
0 Success; otherwise - Kerberos error codes
6833
\end{description}\end{quote}
6835
This function supplies a keytab containing the client key for an initial credentials request.
6838
\subsubsection{krb5\_init\_creds\_set\_password - Set a password for acquiring initial credentials.}
6839
\label{appdev/refs/api/krb5_init_creds_set_password:krb5-init-creds-set-password-set-a-password-for-acquiring-initial-credentials}\label{appdev/refs/api/krb5_init_creds_set_password::doc}\index{krb5\_init\_creds\_set\_password (C function)}
6841
\begin{fulllineitems}
6842
\phantomsection\label{appdev/refs/api/krb5_init_creds_set_password:krb5_init_creds_set_password}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_set\_password}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, const char *\emph{ password}}{}
6845
\begin{quote}\begin{description}
6846
\item[{param}] \leavevmode
6847
\textbf{{[}in{]}} \textbf{context} - Library context
6849
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6851
\textbf{{[}in{]}} \textbf{password} - Password
6853
\end{description}\end{quote}
6854
\begin{quote}\begin{description}
6855
\item[{retval}] \leavevmode\begin{itemize}
6857
0 Success; otherwise - Kerberos error codes
6861
\end{description}\end{quote}
6863
This function supplies a password to be used to construct the client key for an initial credentials request.
6866
\subsubsection{krb5\_init\_creds\_set\_service - Specify a service principal for acquiring initial credentials.}
6867
\label{appdev/refs/api/krb5_init_creds_set_service::doc}\label{appdev/refs/api/krb5_init_creds_set_service:krb5-init-creds-set-service-specify-a-service-principal-for-acquiring-initial-credentials}\index{krb5\_init\_creds\_set\_service (C function)}
6869
\begin{fulllineitems}
6870
\phantomsection\label{appdev/refs/api/krb5_init_creds_set_service:krb5_init_creds_set_service}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_set\_service}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, const char *\emph{ service}}{}
6873
\begin{quote}\begin{description}
6874
\item[{param}] \leavevmode
6875
\textbf{{[}in{]}} \textbf{context} - Library context
6877
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6879
\textbf{{[}in{]}} \textbf{service} - Service principal string
6881
\end{description}\end{quote}
6882
\begin{quote}\begin{description}
6883
\item[{retval}] \leavevmode\begin{itemize}
6885
0 Success; otherwise - Kerberos error codes
6889
\end{description}\end{quote}
6891
This function supplies a service principal string to acquire initial credentials for instead of the default krbtgt service. \emph{service} is parsed as a principal name; any realm part is ignored.
6894
\subsubsection{krb5\_init\_creds\_step - Get the next KDC request for acquiring initial credentials.}
6895
\label{appdev/refs/api/krb5_init_creds_step::doc}\label{appdev/refs/api/krb5_init_creds_step:krb5-init-creds-step-get-the-next-kdc-request-for-acquiring-initial-credentials}\index{krb5\_init\_creds\_step (C function)}
6897
\begin{fulllineitems}
6898
\phantomsection\label{appdev/refs/api/krb5_init_creds_step:krb5_init_creds_step}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_creds\_step}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context]{krb5\_init\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ in}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ out}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ realm}, unsigned int *\emph{ flags}}{}
6901
\begin{quote}\begin{description}
6902
\item[{param}] \leavevmode
6903
\textbf{{[}in{]}} \textbf{context} - Library context
6905
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
6907
\textbf{{[}in{]}} \textbf{in} - KDC response (empty on the first call)
6909
\textbf{{[}out{]}} \textbf{out} - Next KDC request
6911
\textbf{{[}out{]}} \textbf{realm} - Realm for next KDC request
6913
\textbf{{[}out{]}} \textbf{flags} - Output flags
6915
\end{description}\end{quote}
6916
\begin{quote}\begin{description}
6917
\item[{retval}] \leavevmode\begin{itemize}
6919
0 Success; otherwise - Kerberos error codes
6923
\end{description}\end{quote}
6925
This function constructs the next KDC request in an initial credential exchange, allowing the caller to control the transport of KDC requests and replies. On the first call, \emph{in} should be set to an empty buffer; on subsequent calls, it should be set to the KDC's reply to the previous request.
6927
If more requests are needed, \emph{flags} will be set to {\hyperref[appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE]{\code{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}}} and the next request will be placed in \emph{out} . If no more requests are needed, \emph{flags} will not contain {\hyperref[appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE]{\code{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}}} and \emph{out} will be empty.
6929
If this function returns \textbf{KRB5KRB\_ERR\_RESPONSE\_TOO\_BIG} , the caller should transmit the next request using TCP rather than UDP. If this function returns any other error, the initial credential exchange has failed.
6932
\subsubsection{krb5\_init\_keyblock - Initialize an empty krb5\_keyblock .}
6933
\label{appdev/refs/api/krb5_init_keyblock:krb5-init-keyblock-initialize-an-empty-krb5-keyblock}\label{appdev/refs/api/krb5_init_keyblock::doc}\index{krb5\_init\_keyblock (C function)}
6935
\begin{fulllineitems}
6936
\phantomsection\label{appdev/refs/api/krb5_init_keyblock:krb5_init_keyblock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_keyblock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, size\_t\emph{ length}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ out}}{}
6939
\begin{quote}\begin{description}
6940
\item[{param}] \leavevmode
6941
\textbf{{[}in{]}} \textbf{context} - Library context
6943
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
6945
\textbf{{[}in{]}} \textbf{length} - Length of keyblock (or 0)
6947
\textbf{{[}out{]}} \textbf{out} - New keyblock structure
6949
\end{description}\end{quote}
6950
\begin{quote}\begin{description}
6951
\item[{retval}] \leavevmode\begin{itemize}
6953
0 Success; otherwise - Kerberos error codes
6957
\end{description}\end{quote}
6959
Initialize a new keyblock and allocate storage for the contents of the key. It is legal to pass in a length of 0, in which case contents are left unallocated. Use {\hyperref[appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock]{\code{krb5\_free\_keyblock()}}} to free \emph{out} when it is no longer needed.
6961
\begin{notice}{note}{Note:}
6962
If \emph{length} is set to 0, contents are left unallocated.
6966
\subsubsection{krb5\_is\_referral\_realm - Check for a match with KRB5\_REFERRAL\_REALM.}
6967
\label{appdev/refs/api/krb5_is_referral_realm:krb5-is-referral-realm-check-for-a-match-with-krb5-referral-realm}\label{appdev/refs/api/krb5_is_referral_realm::doc}\index{krb5\_is\_referral\_realm (C function)}
6969
\begin{fulllineitems}
6970
\phantomsection\label{appdev/refs/api/krb5_is_referral_realm:krb5_is_referral_realm}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_is\_referral\_realm}}{const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ r}}{}
6973
\begin{quote}\begin{description}
6974
\item[{param}] \leavevmode
6975
\textbf{{[}in{]}} \textbf{r} - Realm to check
6977
\end{description}\end{quote}
6978
\begin{quote}\begin{description}
6979
\item[{return}] \leavevmode\begin{itemize}
6981
TRUE if r is zero-length, FALSE otherwise
6985
\end{description}\end{quote}
6988
\subsubsection{krb5\_kt\_add\_entry - Add a new entry to a key table.}
6989
\label{appdev/refs/api/krb5_kt_add_entry:krb5-kt-add-entry-add-a-new-entry-to-a-key-table}\label{appdev/refs/api/krb5_kt_add_entry::doc}\index{krb5\_kt\_add\_entry (C function)}
6991
\begin{fulllineitems}
6992
\phantomsection\label{appdev/refs/api/krb5_kt_add_entry:krb5_kt_add_entry}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_add\_entry}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ id}, {\hyperref[appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry]{krb5\_keytab\_entry}} *\emph{ entry}}{}
6995
\begin{quote}\begin{description}
6996
\item[{param}] \leavevmode
6997
\textbf{{[}in{]}} \textbf{context} - Library context
6999
\textbf{{[}in{]}} \textbf{id} - Key table handle
7001
\textbf{{[}in{]}} \textbf{entry} - Entry to be added
7003
\end{description}\end{quote}
7004
\begin{quote}\begin{description}
7005
\item[{retval}] \leavevmode\begin{itemize}
7010
ENOMEM Insufficient memory
7013
KRB5\_KT\_NOWRITE Key table is not writeable
7017
\item[{return}] \leavevmode\begin{itemize}
7019
Kerberos error codes
7023
\end{description}\end{quote}
7026
\subsubsection{krb5\_kt\_end\_seq\_get - Release a keytab cursor.}
7027
\label{appdev/refs/api/krb5_kt_end_seq_get::doc}\label{appdev/refs/api/krb5_kt_end_seq_get:krb5-kt-end-seq-get-release-a-keytab-cursor}\index{krb5\_kt\_end\_seq\_get (C function)}
7029
\begin{fulllineitems}
7030
\phantomsection\label{appdev/refs/api/krb5_kt_end_seq_get:krb5_kt_end_seq_get}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_end\_seq\_get}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_kt_cursor:krb5_kt_cursor]{krb5\_kt\_cursor}} *\emph{ cursor}}{}
7033
\begin{quote}\begin{description}
7034
\item[{param}] \leavevmode
7035
\textbf{{[}in{]}} \textbf{context} - Library context
7037
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
7039
\textbf{{[}out{]}} \textbf{cursor} - Cursor
7041
\end{description}\end{quote}
7042
\begin{quote}\begin{description}
7043
\item[{retval}] \leavevmode\begin{itemize}
7049
\item[{return}] \leavevmode\begin{itemize}
7051
Kerberos error codes
7055
\end{description}\end{quote}
7057
This function should be called to release the cursor created by {\hyperref[appdev/refs/api/krb5_kt_start_seq_get:krb5_kt_start_seq_get]{\code{krb5\_kt\_start\_seq\_get()}}} .
7060
\subsubsection{krb5\_kt\_get\_entry - Get an entry from a key table.}
7061
\label{appdev/refs/api/krb5_kt_get_entry:krb5-kt-get-entry-get-an-entry-from-a-key-table}\label{appdev/refs/api/krb5_kt_get_entry::doc}\index{krb5\_kt\_get\_entry (C function)}
7063
\begin{fulllineitems}
7064
\phantomsection\label{appdev/refs/api/krb5_kt_get_entry:krb5_kt_get_entry}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_get\_entry}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, {\hyperref[appdev/refs/types/krb5_kvno:krb5_kvno]{krb5\_kvno}}\emph{ vno}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry]{krb5\_keytab\_entry}} *\emph{ entry}}{}
7067
\begin{quote}\begin{description}
7068
\item[{param}] \leavevmode
7069
\textbf{{[}in{]}} \textbf{context} - Library context
7071
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
7073
\textbf{{[}in{]}} \textbf{principal} - Principal name
7075
\textbf{{[}in{]}} \textbf{vno} - Key version number (0 for highest available)
7077
\textbf{{[}in{]}} \textbf{enctype} - Encryption type (0 zero for any enctype)
7079
\textbf{{[}out{]}} \textbf{entry} - Returned entry from key table
7081
\end{description}\end{quote}
7082
\begin{quote}\begin{description}
7083
\item[{retval}] \leavevmode\begin{itemize}
7088
Kerberos error codes on failure
7092
\end{description}\end{quote}
7094
Retrieve an entry from a key table which matches the \emph{keytab} , \emph{principal} , \emph{vno} , and \emph{enctype} . If \emph{vno} is zero, retrieve the highest-numbered kvno matching the other fields. If \emph{enctype} is 0, match any enctype.
7096
Use {\hyperref[appdev/refs/api/krb5_free_keytab_entry_contents:krb5_free_keytab_entry_contents]{\code{krb5\_free\_keytab\_entry\_contents()}}} to free \emph{entry} when it is no longer needed.
7098
\begin{notice}{note}{Note:}
7099
If \emph{vno} is zero, the function retrieves the highest-numbered-kvno entry that matches the specified principal.
7103
\subsubsection{krb5\_kt\_have\_content - Check if a keytab exists and contains entries.}
7104
\label{appdev/refs/api/krb5_kt_have_content::doc}\label{appdev/refs/api/krb5_kt_have_content:krb5-kt-have-content-check-if-a-keytab-exists-and-contains-entries}\index{krb5\_kt\_have\_content (C function)}
7106
\begin{fulllineitems}
7107
\phantomsection\label{appdev/refs/api/krb5_kt_have_content:krb5_kt_have_content}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_have\_content}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}}{}
7110
\begin{quote}\begin{description}
7111
\item[{param}] \leavevmode
7112
\textbf{{[}in{]}} \textbf{context} - Library context
7114
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
7116
\end{description}\end{quote}
7117
\begin{quote}\begin{description}
7118
\item[{retval}] \leavevmode\begin{itemize}
7120
0 Keytab exists and contains entries
7123
KRB5\_KT\_NOTFOUND Keytab does not contain entries
7127
\end{description}\end{quote}
7129
\begin{notice}{note}{Note:}
7130
First introduced in 1.11
7134
\subsubsection{krb5\_kt\_next\_entry - Retrieve the next entry from the key table.}
7135
\label{appdev/refs/api/krb5_kt_next_entry:krb5-kt-next-entry-retrieve-the-next-entry-from-the-key-table}\label{appdev/refs/api/krb5_kt_next_entry::doc}\index{krb5\_kt\_next\_entry (C function)}
7137
\begin{fulllineitems}
7138
\phantomsection\label{appdev/refs/api/krb5_kt_next_entry:krb5_kt_next_entry}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_next\_entry}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry]{krb5\_keytab\_entry}} *\emph{ entry}, {\hyperref[appdev/refs/types/krb5_kt_cursor:krb5_kt_cursor]{krb5\_kt\_cursor}} *\emph{ cursor}}{}
7141
\begin{quote}\begin{description}
7142
\item[{param}] \leavevmode
7143
\textbf{{[}in{]}} \textbf{context} - Library context
7145
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
7147
\textbf{{[}out{]}} \textbf{entry} - Returned key table entry
7149
\textbf{{[}inout{]}} \textbf{cursor} - Key table cursor
7151
\end{description}\end{quote}
7152
\begin{quote}\begin{description}
7153
\item[{retval}] \leavevmode\begin{itemize}
7158
KRB5\_KT\_END - if the last entry was reached
7162
\item[{return}] \leavevmode\begin{itemize}
7164
Kerberos error codes
7168
\end{description}\end{quote}
7170
Return the next sequential entry in \emph{keytab} and advance \emph{cursor} .
7173
\subsubsection{krb5\_kt\_read\_service\_key - Retrieve a service key from a key table.}
7174
\label{appdev/refs/api/krb5_kt_read_service_key::doc}\label{appdev/refs/api/krb5_kt_read_service_key:krb5-kt-read-service-key-retrieve-a-service-key-from-a-key-table}\index{krb5\_kt\_read\_service\_key (C function)}
7176
\begin{fulllineitems}
7177
\phantomsection\label{appdev/refs/api/krb5_kt_read_service_key:krb5_kt_read_service_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_read\_service\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ keyprocarg}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ principal}, {\hyperref[appdev/refs/types/krb5_kvno:krb5_kvno]{krb5\_kvno}}\emph{ vno}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ key}}{}
7180
\begin{quote}\begin{description}
7181
\item[{param}] \leavevmode
7182
\textbf{{[}in{]}} \textbf{context} - Library context
7184
\textbf{{[}in{]}} \textbf{keyprocarg} - Name of a key table (NULL to use default name)
7186
\textbf{{[}in{]}} \textbf{principal} - Service principal
7188
\textbf{{[}in{]}} \textbf{vno} - Key version number (0 for highest available)
7190
\textbf{{[}in{]}} \textbf{enctype} - Encryption type (0 for any type)
7192
\textbf{{[}out{]}} \textbf{key} - Service key from key table
7194
\end{description}\end{quote}
7195
\begin{quote}\begin{description}
7196
\item[{retval}] \leavevmode\begin{itemize}
7202
\item[{return}] \leavevmode\begin{itemize}
7204
Kerberos error code if not found or keyprocarg is invalid.
7208
\end{description}\end{quote}
7210
Open and search the specified key table for the entry identified by \emph{principal} , \emph{enctype} , and \emph{vno} . If no key is found, return an error code.
7212
The default key table is used, unless \emph{keyprocarg} is non-null. \emph{keyprocarg} designates a specific key table.
7214
Use {\hyperref[appdev/refs/api/krb5_free_keyblock:krb5_free_keyblock]{\code{krb5\_free\_keyblock()}}} to free \emph{key} when it is no longer needed.
7217
\subsubsection{krb5\_kt\_remove\_entry - Remove an entry from a key table.}
7218
\label{appdev/refs/api/krb5_kt_remove_entry::doc}\label{appdev/refs/api/krb5_kt_remove_entry:krb5-kt-remove-entry-remove-an-entry-from-a-key-table}\index{krb5\_kt\_remove\_entry (C function)}
7220
\begin{fulllineitems}
7221
\phantomsection\label{appdev/refs/api/krb5_kt_remove_entry:krb5_kt_remove_entry}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_remove\_entry}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ id}, {\hyperref[appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry]{krb5\_keytab\_entry}} *\emph{ entry}}{}
7224
\begin{quote}\begin{description}
7225
\item[{param}] \leavevmode
7226
\textbf{{[}in{]}} \textbf{context} - Library context
7228
\textbf{{[}in{]}} \textbf{id} - Key table handle
7230
\textbf{{[}in{]}} \textbf{entry} - Entry to remove from key table
7232
\end{description}\end{quote}
7233
\begin{quote}\begin{description}
7234
\item[{retval}] \leavevmode\begin{itemize}
7239
KRB5\_KT\_NOWRITE Key table is not writable
7243
\item[{return}] \leavevmode\begin{itemize}
7245
Kerberos error codes
7249
\end{description}\end{quote}
7252
\subsubsection{krb5\_kt\_start\_seq\_get - Start a sequential retrieval of key table entries.}
7253
\label{appdev/refs/api/krb5_kt_start_seq_get:krb5-kt-start-seq-get-start-a-sequential-retrieval-of-key-table-entries}\label{appdev/refs/api/krb5_kt_start_seq_get::doc}\index{krb5\_kt\_start\_seq\_get (C function)}
7255
\begin{fulllineitems}
7256
\phantomsection\label{appdev/refs/api/krb5_kt_start_seq_get:krb5_kt_start_seq_get}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_start\_seq\_get}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_kt_cursor:krb5_kt_cursor]{krb5\_kt\_cursor}} *\emph{ cursor}}{}
7259
\begin{quote}\begin{description}
7260
\item[{param}] \leavevmode
7261
\textbf{{[}in{]}} \textbf{context} - Library context
7263
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
7265
\textbf{{[}out{]}} \textbf{cursor} - Cursor
7267
\end{description}\end{quote}
7268
\begin{quote}\begin{description}
7269
\item[{retval}] \leavevmode\begin{itemize}
7275
\item[{return}] \leavevmode\begin{itemize}
7277
Kerberos error codes
7281
\end{description}\end{quote}
7283
Prepare to read sequentially every key in the specified key table. Use {\hyperref[appdev/refs/api/krb5_kt_end_seq_get:krb5_kt_end_seq_get]{\code{krb5\_kt\_end\_seq\_get()}}} to release the cursor when it is no longer needed.
7286
\subsubsection{krb5\_make\_authdata\_kdc\_issued - Encode and sign AD-KDCIssued authorization data.}
7287
\label{appdev/refs/api/krb5_make_authdata_kdc_issued:krb5-make-authdata-kdc-issued-encode-and-sign-ad-kdcissued-authorization-data}\label{appdev/refs/api/krb5_make_authdata_kdc_issued::doc}\index{krb5\_make\_authdata\_kdc\_issued (C function)}
7289
\begin{fulllineitems}
7290
\phantomsection\label{appdev/refs/api/krb5_make_authdata_kdc_issued:krb5_make_authdata_kdc_issued}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_make\_authdata\_kdc\_issued}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ issuer}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ authdata}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ ad\_kdcissued}}{}
7293
\begin{quote}\begin{description}
7294
\item[{param}] \leavevmode
7295
\textbf{{[}in{]}} \textbf{context} - Library context
7297
\textbf{{[}in{]}} \textbf{key} - Session key
7299
\textbf{{[}in{]}} \textbf{issuer} - The name of the issuing principal
7301
\textbf{{[}in{]}} \textbf{authdata} - List of authorization data to be signed
7303
\textbf{{[}out{]}} \textbf{ad\_kdcissued} - List containing AD-KDCIssued authdata
7305
\end{description}\end{quote}
7307
This function wraps a list of authorization data entries \emph{authdata} in an AD-KDCIssued container (see RFC 4120 section 5.2.6.2) signed with \emph{key} . The result is returned in \emph{ad\_kdcissued} as a single-element list.
7310
\subsubsection{krb5\_merge\_authdata - Merge two authorization data lists into a new list.}
7311
\label{appdev/refs/api/krb5_merge_authdata:krb5-merge-authdata-merge-two-authorization-data-lists-into-a-new-list}\label{appdev/refs/api/krb5_merge_authdata::doc}\index{krb5\_merge\_authdata (C function)}
7313
\begin{fulllineitems}
7314
\phantomsection\label{appdev/refs/api/krb5_merge_authdata:krb5_merge_authdata}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_merge\_authdata}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ inauthdat1}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ inauthdat2}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ outauthdat}}{}
7317
\begin{quote}\begin{description}
7318
\item[{param}] \leavevmode
7319
\textbf{{[}in{]}} \textbf{context} - Library context
7321
\textbf{{[}in{]}} \textbf{inauthdat1} - First list of \emph{krb5\_authdata} structures
7323
\textbf{{[}in{]}} \textbf{inauthdat2} - Second list of \emph{krb5\_authdata} structures
7325
\textbf{{[}out{]}} \textbf{outauthdat} - Merged list of \emph{krb5\_authdata} structures
7327
\end{description}\end{quote}
7328
\begin{quote}\begin{description}
7329
\item[{retval}] \leavevmode\begin{itemize}
7331
0 Success; otherwise - Kerberos error codes
7335
\end{description}\end{quote}
7337
Merge two authdata arrays, such as the array from a ticket and authenticator. Use {\hyperref[appdev/refs/api/krb5_free_authdata:krb5_free_authdata]{\code{krb5\_free\_authdata()}}} to free \emph{outauthdat} when it is no longer needed.
7339
\begin{notice}{note}{Note:}
7340
The last array entry in \emph{inauthdat1} and \emph{inauthdat2} must be a NULL pointer.
7344
\subsubsection{krb5\_mk\_1cred - Format a KRB-CRED message for a single set of credentials.}
7345
\label{appdev/refs/api/krb5_mk_1cred:krb5-mk-1cred-format-a-krb-cred-message-for-a-single-set-of-credentials}\label{appdev/refs/api/krb5_mk_1cred::doc}\index{krb5\_mk\_1cred (C function)}
7347
\begin{fulllineitems}
7348
\phantomsection\label{appdev/refs/api/krb5_mk_1cred:krb5_mk_1cred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_1cred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ pcreds}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} **\emph{ ppdata}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
7351
\begin{quote}\begin{description}
7352
\item[{param}] \leavevmode
7353
\textbf{{[}in{]}} \textbf{context} - Library context
7355
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
7357
\textbf{{[}in{]}} \textbf{pcreds} - Pointer to credentials
7359
\textbf{{[}out{]}} \textbf{ppdata} - Encoded credentials
7361
\textbf{{[}out{]}} \textbf{outdata} - Replay cache data (NULL if not needed)
7363
\end{description}\end{quote}
7364
\begin{quote}\begin{description}
7365
\item[{retval}] \leavevmode\begin{itemize}
7370
ENOMEM Insufficient memory
7373
KRB5\_RC\_REQUIRED Message replay detection requires rcache parameter
7377
\item[{return}] \leavevmode\begin{itemize}
7379
Kerberos error codes
7383
\end{description}\end{quote}
7385
This is a convenience function that calls {\hyperref[appdev/refs/api/krb5_mk_ncred:krb5_mk_ncred]{\code{krb5\_mk\_ncred()}}} with a single set of credentials.
7388
\subsubsection{krb5\_mk\_error - Format and encode a KRB\_ERROR message.}
7389
\label{appdev/refs/api/krb5_mk_error:krb5-mk-error-format-and-encode-a-krb-error-message}\label{appdev/refs/api/krb5_mk_error::doc}\index{krb5\_mk\_error (C function)}
7391
\begin{fulllineitems}
7392
\phantomsection\label{appdev/refs/api/krb5_mk_error:krb5_mk_error}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_error}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_error:krb5_error]{krb5\_error}} *\emph{ dec\_err}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ enc\_err}}{}
7395
\begin{quote}\begin{description}
7396
\item[{param}] \leavevmode
7397
\textbf{{[}in{]}} \textbf{context} - Library context
7399
\textbf{{[}in{]}} \textbf{dec\_err} - Error structure to be encoded
7401
\textbf{{[}out{]}} \textbf{enc\_err} - Encoded error structure
7403
\end{description}\end{quote}
7404
\begin{quote}\begin{description}
7405
\item[{retval}] \leavevmode\begin{itemize}
7407
0 Success; otherwise - Kerberos error codes
7411
\end{description}\end{quote}
7413
This function creates a \textbf{KRB\_ERROR} message in \emph{enc\_err} . Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{enc\_err} when it is no longer needed.
7416
\subsubsection{krb5\_mk\_ncred - Format a KRB-CRED message for an array of credentials.}
7417
\label{appdev/refs/api/krb5_mk_ncred::doc}\label{appdev/refs/api/krb5_mk_ncred:krb5-mk-ncred-format-a-krb-cred-message-for-an-array-of-credentials}\index{krb5\_mk\_ncred (C function)}
7419
\begin{fulllineitems}
7420
\phantomsection\label{appdev/refs/api/krb5_mk_ncred:krb5_mk_ncred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_ncred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ ppcreds}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} **\emph{ ppdata}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
7423
\begin{quote}\begin{description}
7424
\item[{param}] \leavevmode
7425
\textbf{{[}in{]}} \textbf{context} - Library context
7427
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
7429
\textbf{{[}in{]}} \textbf{ppcreds} - Null-terminated array of credentials
7431
\textbf{{[}out{]}} \textbf{ppdata} - Encoded credentials
7433
\textbf{{[}out{]}} \textbf{outdata} - Replay cache information (NULL if not needed)
7435
\end{description}\end{quote}
7436
\begin{quote}\begin{description}
7437
\item[{retval}] \leavevmode\begin{itemize}
7442
ENOMEM Insufficient memory
7445
KRB5\_RC\_REQUIRED Message replay detection requires rcache parameter
7449
\item[{return}] \leavevmode\begin{itemize}
7451
Kerberos error codes
7455
\end{description}\end{quote}
7457
This function takes an array of credentials \emph{ppcreds} and formats a \textbf{KRB-CRED} message \emph{ppdata} to pass to {\hyperref[appdev/refs/api/krb5_rd_cred:krb5_rd_cred]{\code{krb5\_rd\_cred()}}} .
7459
The message will be encrypted using the send subkey of \emph{auth\_context} if it is present, or the session key otherwise.
7461
\begin{notice}{note}{Note:}
7462
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} flag is set in \emph{auth\_context} , \emph{outdata} is required.
7466
\subsubsection{krb5\_mk\_priv - Format a KRB-PRIV message.}
7467
\label{appdev/refs/api/krb5_mk_priv:krb5-mk-priv-format-a-krb-priv-message}\label{appdev/refs/api/krb5_mk_priv::doc}\index{krb5\_mk\_priv (C function)}
7469
\begin{fulllineitems}
7470
\phantomsection\label{appdev/refs/api/krb5_mk_priv:krb5_mk_priv}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_priv}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ userdata}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
7473
\begin{quote}\begin{description}
7474
\item[{param}] \leavevmode
7475
\textbf{{[}in{]}} \textbf{context} - Library context
7477
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
7479
\textbf{{[}in{]}} \textbf{userdata} - User data for \textbf{KRB-PRIV} message
7481
\textbf{{[}out{]}} \textbf{outbuf} - Formatted \textbf{KRB-PRIV} message
7483
\textbf{{[}out{]}} \textbf{outdata} - Replay cache handle (NULL if not needed)
7485
\end{description}\end{quote}
7486
\begin{quote}\begin{description}
7487
\item[{retval}] \leavevmode\begin{itemize}
7489
0 Success; otherwise - Kerberos error codes
7493
\end{description}\end{quote}
7495
This function is similar to {\hyperref[appdev/refs/api/krb5_mk_safe:krb5_mk_safe]{\code{krb5\_mk\_safe()}}} , but the message is encrypted and integrity-protected, not just integrity-protected.
7497
The local address in \emph{auth\_context} must be set, and is used to form the sender address used in the KRB-SAFE message. The remote address is optional; if specified, it will be used to form the receiver address used in the message.
7500
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} - Use timestamps in \emph{outdata}
7503
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} - Copy timestamp to \emph{outdata} .
7506
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} - Use local sequence numbers from \emph{auth\_context} in replay cache.
7509
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} - Use local sequence numbers from \emph{auth\_context} as a sequence number in the encrypted message \emph{outbuf} .
7513
\begin{notice}{note}{Note:}
7514
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} flag is set in \emph{auth\_context} , the \emph{outdata} is required.
7516
The flags from \emph{auth\_context} specify whether sequence numbers or timestamps will be used to identify the message. Valid values are:
7520
\subsubsection{krb5\_mk\_rep - Format and encrypt a KRB\_AP\_REP message.}
7521
\label{appdev/refs/api/krb5_mk_rep:krb5-mk-rep-format-and-encrypt-a-krb-ap-rep-message}\label{appdev/refs/api/krb5_mk_rep::doc}\index{krb5\_mk\_rep (C function)}
7523
\begin{fulllineitems}
7524
\phantomsection\label{appdev/refs/api/krb5_mk_rep:krb5_mk_rep}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_rep}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}}{}
7527
\begin{quote}\begin{description}
7528
\item[{param}] \leavevmode
7529
\textbf{{[}in{]}} \textbf{context} - Library context
7531
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
7533
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REP} message
7535
\end{description}\end{quote}
7536
\begin{quote}\begin{description}
7537
\item[{retval}] \leavevmode\begin{itemize}
7539
0 Success; otherwise - Kerberos error codes
7543
\end{description}\end{quote}
7545
This function fills in \emph{outbuf} with an AP-REP message using information from \emph{auth\_context} .
7547
If the flags in \emph{auth\_context} indicate that a sequence number should be used (either {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} ) and the local sequence number in \emph{auth\_context} is 0, a new number will be generated with krb5\_generate\_seq\_number().
7549
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{outbuf} when it is no longer needed.
7552
\subsubsection{krb5\_mk\_rep\_dce - Format and encrypt a KRB\_AP\_REP message for DCE RPC.}
7553
\label{appdev/refs/api/krb5_mk_rep_dce:krb5-mk-rep-dce-format-and-encrypt-a-krb-ap-rep-message-for-dce-rpc}\label{appdev/refs/api/krb5_mk_rep_dce::doc}\index{krb5\_mk\_rep\_dce (C function)}
7555
\begin{fulllineitems}
7556
\phantomsection\label{appdev/refs/api/krb5_mk_rep_dce:krb5_mk_rep_dce}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_rep\_dce}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}}{}
7559
\begin{quote}\begin{description}
7560
\item[{param}] \leavevmode
7561
\textbf{{[}in{]}} \textbf{context} - Library context
7563
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
7565
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REP} message
7567
\end{description}\end{quote}
7568
\begin{quote}\begin{description}
7569
\item[{retval}] \leavevmode\begin{itemize}
7571
0 Success; otherwise - Kerberos error codes
7575
\end{description}\end{quote}
7577
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{outbuf} when it is no longer needed.
7580
\subsubsection{krb5\_mk\_req - Create a KRB\_AP\_REQ message.}
7581
\label{appdev/refs/api/krb5_mk_req:krb5-mk-req-create-a-krb-ap-req-message}\label{appdev/refs/api/krb5_mk_req::doc}\index{krb5\_mk\_req (C function)}
7583
\begin{fulllineitems}
7584
\phantomsection\label{appdev/refs/api/krb5_mk_req:krb5_mk_req}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_req}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ ap\_req\_options}, char *\emph{ service}, char *\emph{ hostname}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ in\_data}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}}{}
7587
\begin{quote}\begin{description}
7588
\item[{param}] \leavevmode
7589
\textbf{{[}in{]}} \textbf{context} - Library context
7591
\textbf{{[}inout{]}} \textbf{auth\_context} - Pre-existing or newly created auth context
7593
\textbf{{[}in{]}} \textbf{ap\_req\_options} - \code{AP\_OPTS} options
7595
\textbf{{[}in{]}} \textbf{service} - Service name, or NULL to use \textbf{``host''}
7597
\textbf{{[}in{]}} \textbf{hostname} - Host name, or NULL to use local hostname
7599
\textbf{{[}in{]}} \textbf{in\_data} - Application data to be checksummed in the authenticator, or NULL
7601
\textbf{{[}in{]}} \textbf{ccache} - Credential cache used to obtain credentials for the desired service.
7603
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REQ} message
7605
\end{description}\end{quote}
7606
\begin{quote}\begin{description}
7607
\item[{retval}] \leavevmode\begin{itemize}
7609
0 Success; otherwise - Kerberos error codes
7613
\end{description}\end{quote}
7615
This function is similar to {\hyperref[appdev/refs/api/krb5_mk_req_extended:krb5_mk_req_extended]{\code{krb5\_mk\_req\_extended()}}} except that it uses a given \emph{hostname} , \emph{service} , and \emph{ccache} to construct a service principal name and obtain credentials.
7617
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{outbuf} when it is no longer needed.
7620
\subsubsection{krb5\_mk\_req\_extended - Create a KRB\_AP\_REQ message using supplied credentials.}
7621
\label{appdev/refs/api/krb5_mk_req_extended::doc}\label{appdev/refs/api/krb5_mk_req_extended:krb5-mk-req-extended-create-a-krb-ap-req-message-using-supplied-credentials}\index{krb5\_mk\_req\_extended (C function)}
7623
\begin{fulllineitems}
7624
\phantomsection\label{appdev/refs/api/krb5_mk_req_extended:krb5_mk_req_extended}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_req\_extended}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ ap\_req\_options}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ in\_data}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ in\_creds}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}}{}
7627
\begin{quote}\begin{description}
7628
\item[{param}] \leavevmode
7629
\textbf{{[}in{]}} \textbf{context} - Library context
7631
\textbf{{[}inout{]}} \textbf{auth\_context} - Pre-existing or newly created auth context
7633
\textbf{{[}in{]}} \textbf{ap\_req\_options} - \code{AP\_OPTS} options
7635
\textbf{{[}in{]}} \textbf{in\_data} - Application data to be checksummed in the authenticator, or NULL
7637
\textbf{{[}in{]}} \textbf{in\_creds} - Credentials for the service with valid ticket and key
7639
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REQ} message
7641
\end{description}\end{quote}
7642
\begin{quote}\begin{description}
7643
\item[{retval}] \leavevmode\begin{itemize}
7645
0 Success; otherwise - Kerberos error codes
7649
\end{description}\end{quote}
7651
Valid \emph{ap\_req\_options} are:
7655
{\hyperref[appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:AP_OPTS_USE_SESSION_KEY]{\code{AP\_OPTS\_USE\_SESSION\_KEY}}} - Use the session key when creating the request used for user to user authentication.
7658
{\hyperref[appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED]{\code{AP\_OPTS\_MUTUAL\_REQUIRED}}} - Request a mutual authentication packet from the reciever.
7661
{\hyperref[appdev/refs/macros/AP_OPTS_USE_SUBKEY:AP_OPTS_USE_SUBKEY]{\code{AP\_OPTS\_USE\_SUBKEY}}} - Generate a subsession key from the current session key obtained from the credentials.
7665
This function creates a KRB\_AP\_REQ message using supplied credentials \emph{in\_creds} . \emph{auth\_context} may point to an existing auth context or to NULL, in which case a new one will be created. If \emph{in\_data} is non-null, a checksum of it will be included in the authenticator contained in the KRB\_AP\_REQ message. Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{outbuf} when it is no longer needed.
7668
On successful return, the authenticator is stored in \emph{auth\_context} with the \emph{client} and \emph{checksum} fields nulled out. (This is to prevent pointer-sharing problems; the caller should not need these fields anyway, since the caller supplied them.)
7674
{\hyperref[appdev/refs/api/krb5_mk_req:krb5_mk_req]{\code{krb5\_mk\_req()}}}
7679
\subsubsection{krb5\_mk\_safe - Format a KRB-SAFE message.}
7680
\label{appdev/refs/api/krb5_mk_safe:krb5-mk-safe-format-a-krb-safe-message}\label{appdev/refs/api/krb5_mk_safe::doc}\index{krb5\_mk\_safe (C function)}
7682
\begin{fulllineitems}
7683
\phantomsection\label{appdev/refs/api/krb5_mk_safe:krb5_mk_safe}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_mk\_safe}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ userdata}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
7686
\begin{quote}\begin{description}
7687
\item[{param}] \leavevmode
7688
\textbf{{[}in{]}} \textbf{context} - Library context
7690
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
7692
\textbf{{[}in{]}} \textbf{userdata} - User data in the message
7694
\textbf{{[}out{]}} \textbf{outbuf} - Formatted \textbf{KRB-SAFE} buffer
7696
\textbf{{[}out{]}} \textbf{outdata} - Replay data. Specify NULL if not needed
7698
\end{description}\end{quote}
7699
\begin{quote}\begin{description}
7700
\item[{retval}] \leavevmode\begin{itemize}
7702
0 Success; otherwise - Kerberos error codes
7706
\end{description}\end{quote}
7708
This function creates an integrity protected \textbf{KRB-SAFE} message using data supplied by the application.
7710
Fields in \emph{auth\_context} specify the checksum type, the keyblock that can be used to seed the checksum, full addresses (host and port) for the sender and receiver, and \code{KRB5\_AUTH\_CONTEXT} flags.
7712
The local address in \emph{auth\_context} must be set, and is used to form the sender address used in the KRB-SAFE message. The remote address is optional; if specified, it will be used to form the receiver address used in the message.
7714
If {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} flag is set in the \emph{auth\_context} , an entry describing the message is entered in the replay cache \emph{auth\_context-\textgreater{}rcache} which enables the caller to detect if this message is reflected by an attacker. If {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} is not set, the replay cache is not used.
7716
If either {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} is set, the \emph{auth\_context} local sequence number will be placed in \emph{outdata} as its sequence number.
7718
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{outbuf} when it is no longer needed.
7720
\begin{notice}{note}{Note:}
7721
The \emph{outdata} argument is required if {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} flag is set in the \emph{auth\_context} .
7725
\subsubsection{krb5\_os\_localaddr - Return all interface addresses for this host.}
7726
\label{appdev/refs/api/krb5_os_localaddr:krb5-os-localaddr-return-all-interface-addresses-for-this-host}\label{appdev/refs/api/krb5_os_localaddr::doc}\index{krb5\_os\_localaddr (C function)}
7728
\begin{fulllineitems}
7729
\phantomsection\label{appdev/refs/api/krb5_os_localaddr:krb5_os_localaddr}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_os\_localaddr}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ***\emph{ addr}}{}
7732
\begin{quote}\begin{description}
7733
\item[{param}] \leavevmode
7734
\textbf{{[}in{]}} \textbf{context} - Library context
7736
\textbf{{[}out{]}} \textbf{addr} - Array of krb5\_address pointers, ending with NULL
7738
\end{description}\end{quote}
7739
\begin{quote}\begin{description}
7740
\item[{retval}] \leavevmode\begin{itemize}
7742
0 Success; otherwise - Kerberos error codes
7746
\end{description}\end{quote}
7748
Use {\hyperref[appdev/refs/api/krb5_free_addresses:krb5_free_addresses]{\code{krb5\_free\_addresses()}}} to free \emph{addr} when it is no longer needed.
7751
\subsubsection{krb5\_pac\_add\_buffer - Add a buffer to a PAC handle.}
7752
\label{appdev/refs/api/krb5_pac_add_buffer:krb5-pac-add-buffer-add-a-buffer-to-a-pac-handle}\label{appdev/refs/api/krb5_pac_add_buffer::doc}\index{krb5\_pac\_add\_buffer (C function)}
7754
\begin{fulllineitems}
7755
\phantomsection\label{appdev/refs/api/krb5_pac_add_buffer:krb5_pac_add_buffer}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_add\_buffer}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}}\emph{ pac}, {\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}}\emph{ type}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
7758
\begin{quote}\begin{description}
7759
\item[{param}] \leavevmode
7760
\textbf{{[}in{]}} \textbf{context} - Library context
7762
\textbf{{[}in{]}} \textbf{pac} - PAC handle
7764
\textbf{{[}in{]}} \textbf{type} - Buffer type
7766
\textbf{{[}in{]}} \textbf{data} - contents
7768
\end{description}\end{quote}
7769
\begin{quote}\begin{description}
7770
\item[{retval}] \leavevmode\begin{itemize}
7772
0 Success; otherwise - Kerberos error codes
7776
\end{description}\end{quote}
7778
This function adds a buffer of type \emph{type} and contents \emph{data} to \emph{pac} if there isn't already a buffer of this type present.
7780
The valid values of \emph{type} is one of the following:
7783
{\hyperref[appdev/refs/macros/KRB5_PAC_LOGON_INFO:KRB5_PAC_LOGON_INFO]{\code{KRB5\_PAC\_LOGON\_INFO}}} - Logon information
7786
{\hyperref[appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:KRB5_PAC_CREDENTIALS_INFO]{\code{KRB5\_PAC\_CREDENTIALS\_INFO}}} - Credentials information
7789
{\hyperref[appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:KRB5_PAC_SERVER_CHECKSUM]{\code{KRB5\_PAC\_SERVER\_CHECKSUM}}} - Server checksum
7792
{\hyperref[appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:KRB5_PAC_PRIVSVR_CHECKSUM]{\code{KRB5\_PAC\_PRIVSVR\_CHECKSUM}}} - KDC checksum
7795
{\hyperref[appdev/refs/macros/KRB5_PAC_CLIENT_INFO:KRB5_PAC_CLIENT_INFO]{\code{KRB5\_PAC\_CLIENT\_INFO}}} - Client name and ticket information
7798
{\hyperref[appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:KRB5_PAC_DELEGATION_INFO]{\code{KRB5\_PAC\_DELEGATION\_INFO}}} - Constrained delegation information
7801
{\hyperref[appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:KRB5_PAC_UPN_DNS_INFO]{\code{KRB5\_PAC\_UPN\_DNS\_INFO}}} - User principal name and DNS information
7806
\subsubsection{krb5\_pac\_free - Free a PAC handle.}
7807
\label{appdev/refs/api/krb5_pac_free:krb5-pac-free-free-a-pac-handle}\label{appdev/refs/api/krb5_pac_free::doc}\index{krb5\_pac\_free (C function)}
7809
\begin{fulllineitems}
7810
\phantomsection\label{appdev/refs/api/krb5_pac_free:krb5_pac_free}\pysiglinewithargsret{void \bfcode{krb5\_pac\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}}\emph{ pac}}{}
7813
\begin{quote}\begin{description}
7814
\item[{param}] \leavevmode
7815
\textbf{{[}in{]}} \textbf{context} - Library context
7817
\textbf{{[}in{]}} \textbf{pac} - PAC to be freed
7819
\end{description}\end{quote}
7821
This function frees the contents of \emph{pac} and the structure itself.
7824
\subsubsection{krb5\_pac\_get\_buffer - Retrieve a buffer value from a PAC.}
7825
\label{appdev/refs/api/krb5_pac_get_buffer::doc}\label{appdev/refs/api/krb5_pac_get_buffer:krb5-pac-get-buffer-retrieve-a-buffer-value-from-a-pac}\index{krb5\_pac\_get\_buffer (C function)}
7827
\begin{fulllineitems}
7828
\phantomsection\label{appdev/refs/api/krb5_pac_get_buffer:krb5_pac_get_buffer}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_get\_buffer}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}}\emph{ pac}, {\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}}\emph{ type}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
7831
\begin{quote}\begin{description}
7832
\item[{param}] \leavevmode
7833
\textbf{{[}in{]}} \textbf{context} - Library context
7835
\textbf{{[}in{]}} \textbf{pac} - PAC handle
7837
\textbf{{[}in{]}} \textbf{type} - Type of buffer to retrieve
7839
\textbf{{[}out{]}} \textbf{data} - Buffer value
7841
\end{description}\end{quote}
7842
\begin{quote}\begin{description}
7843
\item[{retval}] \leavevmode\begin{itemize}
7845
0 Success; otherwise - Kerberos error codes
7849
\end{description}\end{quote}
7851
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{data} when it is no longer needed.
7854
\subsubsection{krb5\_pac\_get\_types - Return an array of buffer types in a PAC handle.}
7855
\label{appdev/refs/api/krb5_pac_get_types:krb5-pac-get-types-return-an-array-of-buffer-types-in-a-pac-handle}\label{appdev/refs/api/krb5_pac_get_types::doc}\index{krb5\_pac\_get\_types (C function)}
7857
\begin{fulllineitems}
7858
\phantomsection\label{appdev/refs/api/krb5_pac_get_types:krb5_pac_get_types}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_get\_types}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}}\emph{ pac}, size\_t *\emph{ len}, {\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}} **\emph{ types}}{}
7861
\begin{quote}\begin{description}
7862
\item[{param}] \leavevmode
7863
\textbf{{[}in{]}} \textbf{context} - Library context
7865
\textbf{{[}in{]}} \textbf{pac} - PAC handle
7867
\textbf{{[}out{]}} \textbf{len} - Number of entries in \emph{types}
7869
\textbf{{[}out{]}} \textbf{types} - Array of buffer types
7871
\end{description}\end{quote}
7872
\begin{quote}\begin{description}
7873
\item[{retval}] \leavevmode\begin{itemize}
7875
0 Success; otherwise - Kerberos error codes
7879
\end{description}\end{quote}
7882
\subsubsection{krb5\_pac\_init - Create an empty Privilege Attribute Certificate (PAC) handle.}
7883
\label{appdev/refs/api/krb5_pac_init:krb5-pac-init-create-an-empty-privilege-attribute-certificate-pac-handle}\label{appdev/refs/api/krb5_pac_init::doc}\index{krb5\_pac\_init (C function)}
7885
\begin{fulllineitems}
7886
\phantomsection\label{appdev/refs/api/krb5_pac_init:krb5_pac_init}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_init}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}} *\emph{ pac}}{}
7889
\begin{quote}\begin{description}
7890
\item[{param}] \leavevmode
7891
\textbf{{[}in{]}} \textbf{context} - Library context
7893
\textbf{{[}out{]}} \textbf{pac} - New PAC handle
7895
\end{description}\end{quote}
7896
\begin{quote}\begin{description}
7897
\item[{retval}] \leavevmode\begin{itemize}
7899
0 Success; otherwise - Kerberos error codes
7903
\end{description}\end{quote}
7905
Use {\hyperref[appdev/refs/api/krb5_pac_free:krb5_pac_free]{\code{krb5\_pac\_free()}}} to free \emph{pac} when it is no longer needed.
7908
\subsubsection{krb5\_pac\_parse - Unparse an encoded PAC into a new handle.}
7909
\label{appdev/refs/api/krb5_pac_parse:krb5-pac-parse-unparse-an-encoded-pac-into-a-new-handle}\label{appdev/refs/api/krb5_pac_parse::doc}\index{krb5\_pac\_parse (C function)}
7911
\begin{fulllineitems}
7912
\phantomsection\label{appdev/refs/api/krb5_pac_parse:krb5_pac_parse}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_parse}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const void *\emph{ ptr}, size\_t\emph{ len}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}} *\emph{ pac}}{}
7915
\begin{quote}\begin{description}
7916
\item[{param}] \leavevmode
7917
\textbf{{[}in{]}} \textbf{context} - Library context
7919
\textbf{{[}in{]}} \textbf{ptr} - PAC buffer
7921
\textbf{{[}in{]}} \textbf{len} - Length of \emph{ptr}
7923
\textbf{{[}out{]}} \textbf{pac} - PAC handle
7925
\end{description}\end{quote}
7926
\begin{quote}\begin{description}
7927
\item[{retval}] \leavevmode\begin{itemize}
7929
0 Success; otherwise - Kerberos error codes
7933
\end{description}\end{quote}
7935
Use {\hyperref[appdev/refs/api/krb5_pac_free:krb5_pac_free]{\code{krb5\_pac\_free()}}} to free \emph{pac} when it is no longer needed.
7938
\subsubsection{krb5\_pac\_sign - Sign a PAC.}
7939
\label{appdev/refs/api/krb5_pac_sign:krb5-pac-sign-sign-a-pac}\label{appdev/refs/api/krb5_pac_sign::doc}\index{krb5\_pac\_sign (C function)}
7941
\begin{fulllineitems}
7942
\phantomsection\label{appdev/refs/api/krb5_pac_sign:krb5_pac_sign}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_sign}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}}\emph{ pac}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}}\emph{ authtime}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ server\_key}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ privsvr\_key}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
7945
\begin{quote}\begin{description}
7946
\item[{param}] \leavevmode
7947
\textbf{{[}in{]}} \textbf{context} - Library context
7949
\textbf{{[}in{]}} \textbf{pac} - PAC handle
7951
\textbf{{[}in{]}} \textbf{authtime} - Expected timestamp
7953
\textbf{{[}in{]}} \textbf{principal} - Expected principal name (or NULL)
7955
\textbf{{[}in{]}} \textbf{server\_key} - Key for server checksum
7957
\textbf{{[}in{]}} \textbf{privsvr\_key} - Key for KDC checksum
7959
\textbf{{[}out{]}} \textbf{data} - Signed PAC encoding
7961
\end{description}\end{quote}
7963
This function signs \emph{pac} using the keys \emph{server\_key} and \emph{privsvr\_key} and returns the signed encoding in \emph{data} . \emph{pac} is modified to include the server and KDC checksum buffers. Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{data} when it is no longer needed.
7965
\begin{notice}{note}{Note:}
7966
First introduced in 1.10
7970
\subsubsection{krb5\_pac\_verify - Verify a PAC.}
7971
\label{appdev/refs/api/krb5_pac_verify::doc}\label{appdev/refs/api/krb5_pac_verify:krb5-pac-verify-verify-a-pac}\index{krb5\_pac\_verify (C function)}
7973
\begin{fulllineitems}
7974
\phantomsection\label{appdev/refs/api/krb5_pac_verify:krb5_pac_verify}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_pac\_verify}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_pac:krb5_pac]{krb5\_pac}}\emph{ pac}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}}\emph{ authtime}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ principal}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ server}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ privsvr}}{}
7977
\begin{quote}\begin{description}
7978
\item[{param}] \leavevmode
7979
\textbf{{[}in{]}} \textbf{context} - Library context
7981
\textbf{{[}in{]}} \textbf{pac} - PAC handle
7983
\textbf{{[}in{]}} \textbf{authtime} - Expected timestamp
7985
\textbf{{[}in{]}} \textbf{principal} - Expected principal name (or NULL)
7987
\textbf{{[}in{]}} \textbf{server} - Key to validate server checksum (or NULL)
7989
\textbf{{[}in{]}} \textbf{privsvr} - Key to validate KDC checksum (or NULL)
7991
\end{description}\end{quote}
7992
\begin{quote}\begin{description}
7993
\item[{retval}] \leavevmode\begin{itemize}
7995
0 Success; otherwise - Kerberos error codes
7999
\end{description}\end{quote}
8001
This function validates \emph{pac} against the supplied \emph{server} , \emph{privsvr} , \emph{principal} and \emph{authtime} . If \emph{principal} is NULL, the principal and authtime are not verified. If \emph{server} or \emph{privsvr} is NULL, the corresponding checksum is not verified.
8003
If successful, \emph{pac} is marked as verified.
8005
\begin{notice}{note}{Note:}
8006
A checksum mismatch can occur if the PAC was copied from a cross-realm TGT by an ignorant KDC; also Apple Mac OS X Server Open Directory (as of 10.6) generates PACs with no server checksum at all. One should consider not failing the whole authentication because of this reason, but, instead, treating the ticket as if it did not contain a PAC or marking the PAC information as non-verified.
8010
\subsubsection{krb5\_principal2salt - Convert a principal name into the default salt for that principal.}
8011
\label{appdev/refs/api/krb5_principal2salt:krb5-principal2salt-convert-a-principal-name-into-the-default-salt-for-that-principal}\label{appdev/refs/api/krb5_principal2salt::doc}\index{krb5\_principal2salt (C function)}
8013
\begin{fulllineitems}
8014
\phantomsection\label{appdev/refs/api/krb5_principal2salt:krb5_principal2salt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_principal2salt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ pr}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ ret}}{}
8017
\begin{quote}\begin{description}
8018
\item[{param}] \leavevmode
8019
\textbf{{[}in{]}} \textbf{context} - Library context
8021
\textbf{{[}in{]}} \textbf{pr} - Principal name
8023
\textbf{{[}out{]}} \textbf{ret} - Default salt for \emph{pr} to be filled in
8025
\end{description}\end{quote}
8026
\begin{quote}\begin{description}
8027
\item[{retval}] \leavevmode\begin{itemize}
8029
0 Success; otherwise - Kerberos error codes
8033
\end{description}\end{quote}
8036
\subsubsection{krb5\_rd\_cred - Read and validate a KRB-CRED message.}
8037
\label{appdev/refs/api/krb5_rd_cred:krb5-rd-cred-read-and-validate-a-krb-cred-message}\label{appdev/refs/api/krb5_rd_cred::doc}\index{krb5\_rd\_cred (C function)}
8039
\begin{fulllineitems}
8040
\phantomsection\label{appdev/refs/api/krb5_rd_cred:krb5_rd_cred}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_cred}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ pcreddata}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} ***\emph{ pppcreds}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
8043
\begin{quote}\begin{description}
8044
\item[{param}] \leavevmode
8045
\textbf{{[}in{]}} \textbf{context} - Library context
8047
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
8049
\textbf{{[}in{]}} \textbf{pcreddata} - \textbf{KRB-CRED} message
8051
\textbf{{[}out{]}} \textbf{pppcreds} - Null-terminated array of forwarded credentials
8053
\textbf{{[}out{]}} \textbf{outdata} - Replay data (NULL if not needed)
8055
\end{description}\end{quote}
8056
\begin{quote}\begin{description}
8057
\item[{retval}] \leavevmode\begin{itemize}
8059
0 Success; otherwise - Kerberos error codes
8063
\end{description}\end{quote}
8066
\emph{pcreddata} will be decrypted using the receiving subkey if it is present in \emph{auth\_context} , or the session key if the receiving subkey is not present or fails to decrypt the message.
8069
Use {\hyperref[appdev/refs/api/krb5_free_tgt_creds:krb5_free_tgt_creds]{\code{krb5\_free\_tgt\_creds()}}} to free \emph{pppcreds} when it is no longer needed.
8071
\begin{notice}{note}{Note:}
8072
The \emph{outdata} argument is required if {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} flag is set in the \emph{auth\_context} .{}`
8076
\subsubsection{krb5\_rd\_error - Decode a KRB-ERROR message.}
8077
\label{appdev/refs/api/krb5_rd_error:krb5-rd-error-decode-a-krb-error-message}\label{appdev/refs/api/krb5_rd_error::doc}\index{krb5\_rd\_error (C function)}
8079
\begin{fulllineitems}
8080
\phantomsection\label{appdev/refs/api/krb5_rd_error:krb5_rd_error}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_error}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ enc\_errbuf}, {\hyperref[appdev/refs/types/krb5_error:krb5_error]{krb5\_error}} **\emph{ dec\_error}}{}
8083
\begin{quote}\begin{description}
8084
\item[{param}] \leavevmode
8085
\textbf{{[}in{]}} \textbf{context} - Library context
8087
\textbf{{[}in{]}} \textbf{enc\_errbuf} - Encoded error message
8089
\textbf{{[}out{]}} \textbf{dec\_error} - Decoded error message
8091
\end{description}\end{quote}
8092
\begin{quote}\begin{description}
8093
\item[{retval}] \leavevmode\begin{itemize}
8095
0 Success; otherwise - Kerberos error codes
8099
\end{description}\end{quote}
8101
This function processes \textbf{KRB-ERROR} message \emph{enc\_errbuf} and returns an allocated structure \emph{dec\_error} containing the error message. Use {\hyperref[appdev/refs/api/krb5_free_error:krb5_free_error]{\code{krb5\_free\_error()}}} to free \emph{dec\_error} when it is no longer needed.
8104
\subsubsection{krb5\_rd\_priv - Process a KRB-PRIV message.}
8105
\label{appdev/refs/api/krb5_rd_priv:krb5-rd-priv-process-a-krb-priv-message}\label{appdev/refs/api/krb5_rd_priv::doc}\index{krb5\_rd\_priv (C function)}
8107
\begin{fulllineitems}
8108
\phantomsection\label{appdev/refs/api/krb5_rd_priv:krb5_rd_priv}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_priv}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ inbuf}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
8111
\begin{quote}\begin{description}
8112
\item[{param}] \leavevmode
8113
\textbf{{[}in{]}} \textbf{context} - Library context
8115
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication structure
8117
\textbf{{[}in{]}} \textbf{inbuf} - \textbf{KRB-PRIV} message to be parsed
8119
\textbf{{[}out{]}} \textbf{outbuf} - Data parsed from \textbf{KRB-PRIV} message
8121
\textbf{{[}out{]}} \textbf{outdata} - Replay data. Specify NULL if not needed
8123
\end{description}\end{quote}
8124
\begin{quote}\begin{description}
8125
\item[{retval}] \leavevmode\begin{itemize}
8127
0 Success; otherwise - Kerberos error codes
8131
\end{description}\end{quote}
8133
This function parses a \textbf{KRB-PRIV} message, verifies its integrity, and stores its unencrypted data into \emph{outbuf} .
8135
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} flag is set in \emph{auth\_context} , the sequence number of the KRB-SAFE message is checked against the remote sequence number field of \emph{auth\_context} . Otherwise, the sequence number is not used.
8137
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} flag is set in \emph{auth\_context} , then two additional checks are performed:
8140
The timestamp in the message must be within the permitted clock skew (which is usually five minutes).
8143
The message must not be a replayed message field in \emph{auth\_context} .
8147
\begin{notice}{note}{Note:}
8148
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} flag is set in \emph{auth\_context} , \emph{outdata} is required.
8150
\emph{auth\_context} must have a remote address set. This address will be used to verify the sender address in the KRB-PRIV message. If \emph{auth\_context} has a local address set, it will be used to verify the receiver address in the KRB-PRIV message if the message contains one. Both addresses must use type \textbf{ADDRTYPE\_ADDRPORT} .
8154
\subsubsection{krb5\_rd\_rep - Parse and decrypt a KRB\_AP\_REP message.}
8155
\label{appdev/refs/api/krb5_rd_rep::doc}\label{appdev/refs/api/krb5_rd_rep:krb5-rd-rep-parse-and-decrypt-a-krb-ap-rep-message}\index{krb5\_rd\_rep (C function)}
8157
\begin{fulllineitems}
8158
\phantomsection\label{appdev/refs/api/krb5_rd_rep:krb5_rd_rep}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_rep}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ inbuf}, {\hyperref[appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part]{krb5\_ap\_rep\_enc\_part}} **\emph{ repl}}{}
8161
\begin{quote}\begin{description}
8162
\item[{param}] \leavevmode
8163
\textbf{{[}in{]}} \textbf{context} - Library context
8165
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
8167
\textbf{{[}in{]}} \textbf{inbuf} - AP-REP message
8169
\textbf{{[}out{]}} \textbf{repl} - Decrypted reply message
8171
\end{description}\end{quote}
8172
\begin{quote}\begin{description}
8173
\item[{retval}] \leavevmode\begin{itemize}
8175
0 Success; otherwise - Kerberos error codes
8179
\end{description}\end{quote}
8181
This function parses, decrypts and verifies a message from \emph{inbuf} and fills in \emph{repl} with a pointer to allocated memory containing the fields from the encrypted response.
8183
Use {\hyperref[appdev/refs/api/krb5_free_ap_rep_enc_part:krb5_free_ap_rep_enc_part]{\code{krb5\_free\_ap\_rep\_enc\_part()}}} to free \emph{repl} when it is no longer needed.
8186
\subsubsection{krb5\_rd\_rep\_dce - Parse and decrypt a KRB\_AP\_REP message for DCE RPC.}
8187
\label{appdev/refs/api/krb5_rd_rep_dce::doc}\label{appdev/refs/api/krb5_rd_rep_dce:krb5-rd-rep-dce-parse-and-decrypt-a-krb-ap-rep-message-for-dce-rpc}\index{krb5\_rd\_rep\_dce (C function)}
8189
\begin{fulllineitems}
8190
\phantomsection\label{appdev/refs/api/krb5_rd_rep_dce:krb5_rd_rep_dce}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_rep\_dce}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ inbuf}, {\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}} *\emph{ nonce}}{}
8193
\begin{quote}\begin{description}
8194
\item[{param}] \leavevmode
8195
\textbf{{[}in{]}} \textbf{context} - Library context
8197
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
8199
\textbf{{[}in{]}} \textbf{inbuf} - AP-REP message
8201
\textbf{{[}out{]}} \textbf{nonce} - Sequence number from the decrypted reply
8203
\end{description}\end{quote}
8204
\begin{quote}\begin{description}
8205
\item[{retval}] \leavevmode\begin{itemize}
8207
0 Success; otherwise - Kerberos error codes
8211
\end{description}\end{quote}
8213
This function parses, decrypts and verifies a message from \emph{inbuf} and fills in \emph{nonce} with a decrypted reply sequence number.
8216
\subsubsection{krb5\_rd\_req - Parse and decrypt a KRB\_AP\_REQ message.}
8217
\label{appdev/refs/api/krb5_rd_req::doc}\label{appdev/refs/api/krb5_rd_req:krb5-rd-req-parse-and-decrypt-a-krb-ap-req-message}\index{krb5\_rd\_req (C function)}
8219
\begin{fulllineitems}
8220
\phantomsection\label{appdev/refs/api/krb5_rd_req:krb5_rd_req}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_req}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ inbuf}, {\hyperref[appdev/refs/types/krb5_const_principal:krb5_const_principal]{krb5\_const\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} *\emph{ ap\_req\_options}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} **\emph{ ticket}}{}
8223
\begin{quote}\begin{description}
8224
\item[{param}] \leavevmode
8225
\textbf{{[}in{]}} \textbf{context} - Library context
8227
\textbf{{[}inout{]}} \textbf{auth\_context} - Pre-existing or newly created auth context
8229
\textbf{{[}in{]}} \textbf{inbuf} - AP-REQ message to be parsed
8231
\textbf{{[}in{]}} \textbf{server} - Matching principal for server, or NULL to allow any principal in keytab
8233
\textbf{{[}in{]}} \textbf{keytab} - Key table, or NULL to use the default
8235
\textbf{{[}out{]}} \textbf{ap\_req\_options} - If non-null, the AP-REQ flags on output
8237
\textbf{{[}out{]}} \textbf{ticket} - If non-null, ticket from the AP-REQ message
8239
\end{description}\end{quote}
8240
\begin{quote}\begin{description}
8241
\item[{retval}] \leavevmode\begin{itemize}
8243
0 Success; otherwise - Kerberos error codes
8247
\end{description}\end{quote}
8249
This function parses, decrypts and verifies a AP-REQ message from \emph{inbuf} and stores the authenticator in \emph{auth\_context} .
8251
If a keyblock was specified in \emph{auth\_context} using {\hyperref[appdev/refs/api/krb5_auth_con_setuseruserkey:krb5_auth_con_setuseruserkey]{\code{krb5\_auth\_con\_setuseruserkey()}}} , that key is used to decrypt the ticket in AP-REQ message and \emph{keytab} is ignored. In this case, \emph{server} should be specified as a complete principal name to allow for proper transited-path checking and replay cache selection.
8253
Otherwise, the decryption key is obtained from \emph{keytab} , or from the default keytab if it is NULL. In this case, \emph{server} may be a complete principal name, a matching principal (see {\hyperref[appdev/refs/api/krb5_sname_match:krb5_sname_match]{\code{krb5\_sname\_match()}}} ), or NULL to match any principal name. The keys tried against the encrypted part of the ticket are determined as follows:
8256
If \emph{server} is a complete principal name, then its entry in \emph{keytab} is tried.
8259
Otherwise, if \emph{keytab} is iterable, then all entries in \emph{keytab} which match \emph{server} are tried.
8262
Otherwise, the server principal in the ticket must match \emph{server} , and its entry in \emph{keytab} is tried.
8266
The client specified in the decrypted authenticator must match the client specified in the decrypted ticket.
8268
If the \emph{remote\_addr} field of \emph{auth\_context} is set, the request must come from that address.
8270
If a replay cache handle is provided in the \emph{auth\_context} , the authenticator and ticket are verified against it. If no conflict is found, the new authenticator is then stored in the replay cache of \emph{auth\_context} .
8272
Various other checks are performed on the decoded data, including cross-realm policy, clockskew, and ticket validation times.
8274
On success the authenticator, subkey, and remote sequence number of the request are stored in \emph{auth\_context} . If the {\hyperref[appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED]{\code{AP\_OPTS\_MUTUAL\_REQUIRED}}} bit is set, the local sequence number is XORed with the remote sequence number in the request.
8276
Use {\hyperref[appdev/refs/api/krb5_free_ticket:krb5_free_ticket]{\code{krb5\_free\_ticket()}}} to free \emph{ticket} when it is no longer needed.
8279
\subsubsection{krb5\_rd\_safe - Process KRB-SAFE message.}
8280
\label{appdev/refs/api/krb5_rd_safe:krb5-rd-safe-process-krb-safe-message}\label{appdev/refs/api/krb5_rd_safe::doc}\index{krb5\_rd\_safe (C function)}
8282
\begin{fulllineitems}
8283
\phantomsection\label{appdev/refs/api/krb5_rd_safe:krb5_rd_safe}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_rd\_safe}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ inbuf}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ outbuf}, {\hyperref[appdev/refs/types/krb5_replay_data:krb5_replay_data]{krb5\_replay\_data}} *\emph{ outdata}}{}
8286
\begin{quote}\begin{description}
8287
\item[{param}] \leavevmode
8288
\textbf{{[}in{]}} \textbf{context} - Library context
8290
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication structure
8292
\textbf{{[}in{]}} \textbf{inbuf} - \textbf{KRB-SAFE} message to be parsed
8294
\textbf{{[}out{]}} \textbf{outbuf} - Data parsed from \textbf{KRB-SAFE} message
8296
\textbf{{[}out{]}} \textbf{outdata} - Replay data. Specify NULL if not needed
8298
\end{description}\end{quote}
8299
\begin{quote}\begin{description}
8300
\item[{retval}] \leavevmode\begin{itemize}
8302
0 Success; otherwise - Kerberos error codes
8306
\end{description}\end{quote}
8308
This function parses a \textbf{KRB-SAFE} message, verifies its integrity, and stores its data into \emph{outbuf} .
8310
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} flag is set in \emph{auth\_context} , the sequence number of the KRB-SAFE message is checked against the remote sequence number field of \emph{auth\_context} . Otherwise, the sequence number is not used.
8312
If the {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} flag is set in \emph{auth\_context} , then two additional checks are performed:
8316
The timestamp in the message must be within the permitted clock skew (which is usually five minutes).
8319
The message must not be a replayed message field in \emph{auth\_context} .
8323
Use {\hyperref[appdev/refs/api/krb5_free_data_contents:krb5_free_data_contents]{\code{krb5\_free\_data\_contents()}}} to free \emph{outbuf} when it is no longer needed.
8326
\begin{notice}{note}{Note:}
8327
The \emph{outdata} argument is required if {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} or {\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} flag is set in the \emph{auth\_context} .
8329
\emph{auth\_context} must have a remote address set. This address will be used to verify the sender address in the KRB-SAFE message. If \emph{auth\_context} has a local address set, it will be used to verify the receiver address in the KRB-SAFE message if the message contains one. Both addresses must use type \textbf{ADDRTYPE\_ADDRPORT} .
8333
\subsubsection{krb5\_read\_password - Read a password from keyboard input.}
8334
\label{appdev/refs/api/krb5_read_password:krb5-read-password-read-a-password-from-keyboard-input}\label{appdev/refs/api/krb5_read_password::doc}\index{krb5\_read\_password (C function)}
8336
\begin{fulllineitems}
8337
\phantomsection\label{appdev/refs/api/krb5_read_password:krb5_read_password}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_read\_password}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const char *\emph{ prompt}, const char *\emph{ prompt2}, char *\emph{ return\_pwd}, unsigned int *\emph{ size\_return}}{}
8340
\begin{quote}\begin{description}
8341
\item[{param}] \leavevmode
8342
\textbf{{[}in{]}} \textbf{context} - Library context
8344
\textbf{{[}in{]}} \textbf{prompt} - First user prompt when reading password
8346
\textbf{{[}in{]}} \textbf{prompt2} - Second user prompt (NULL to prompt only once)
8348
\textbf{{[}out{]}} \textbf{return\_pwd} - Returned password
8350
\textbf{{[}inout{]}} \textbf{size\_return} - On input, maximum size of password; on output, size of password read
8352
\end{description}\end{quote}
8353
\begin{quote}\begin{description}
8354
\item[{retval}] \leavevmode\begin{itemize}
8360
\item[{return}] \leavevmode\begin{itemize}
8362
Error in reading or verifying the password Kerberos error codes
8366
\end{description}\end{quote}
8368
This function reads a password from keyboard input and stores it in \emph{return\_pwd} . \emph{size\_return} should be set by the caller to the amount of storage space available in \emph{return\_pwd} ; on successful return, it will be set to the length of the password read.
8371
\emph{prompt} is printed to the terminal, followed by'':'', and then a password is read from the keyboard.
8374
If \emph{prompt2} is NULL, the password is read only once. Otherwise, \emph{prompt2} is printed to the terminal and a second password is read. If the two passwords entered are not identical, KRB5\_LIBOS\_BADPWDMATCH is returned.
8376
Echoing is turned off when the password is read.
8379
\subsubsection{krb5\_salttype\_to\_string - Convert a salt type to a string.}
8380
\label{appdev/refs/api/krb5_salttype_to_string::doc}\label{appdev/refs/api/krb5_salttype_to_string:krb5-salttype-to-string-convert-a-salt-type-to-a-string}\index{krb5\_salttype\_to\_string (C function)}
8382
\begin{fulllineitems}
8383
\phantomsection\label{appdev/refs/api/krb5_salttype_to_string:krb5_salttype_to_string}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_salttype\_to\_string}}{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}}\emph{ salttype}, char *\emph{ buffer}, size\_t\emph{ buflen}}{}
8386
\begin{quote}\begin{description}
8387
\item[{param}] \leavevmode
8388
\textbf{{[}in{]}} \textbf{salttype} - Salttype to convert
8390
\textbf{{[}out{]}} \textbf{buffer} - Buffer to receive the converted string
8392
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
8394
\end{description}\end{quote}
8395
\begin{quote}\begin{description}
8396
\item[{retval}] \leavevmode\begin{itemize}
8398
0 Success; otherwise - Kerberos error codes
8402
\end{description}\end{quote}
8405
\subsubsection{krb5\_server\_decrypt\_ticket\_keytab - Decrypt a ticket using the specified key table.}
8406
\label{appdev/refs/api/krb5_server_decrypt_ticket_keytab:krb5-server-decrypt-ticket-keytab-decrypt-a-ticket-using-the-specified-key-table}\label{appdev/refs/api/krb5_server_decrypt_ticket_keytab::doc}\index{krb5\_server\_decrypt\_ticket\_keytab (C function)}
8408
\begin{fulllineitems}
8409
\phantomsection\label{appdev/refs/api/krb5_server_decrypt_ticket_keytab:krb5_server_decrypt_ticket_keytab}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_server\_decrypt\_ticket\_keytab}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ kt}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} *\emph{ ticket}}{}
8412
\begin{quote}\begin{description}
8413
\item[{param}] \leavevmode
8414
\textbf{{[}in{]}} \textbf{context} - Library context
8416
\textbf{{[}in{]}} \textbf{kt} - Key table
8418
\textbf{{[}inout{]}} \textbf{ticket} - Ticket to be decrypted
8420
\end{description}\end{quote}
8421
\begin{quote}\begin{description}
8422
\item[{retval}] \leavevmode\begin{itemize}
8424
0 Success; otherwise - Kerberos error codes
8428
\end{description}\end{quote}
8430
This function takes a \emph{ticket} as input and decrypts it using key data from \emph{kt} . The result is placed into \emph{ticket-\textgreater{}enc\_part2} .
8433
\subsubsection{krb5\_set\_default\_tgs\_enctypes - Set default TGS encryption types in a krb5\_context structure.}
8434
\label{appdev/refs/api/krb5_set_default_tgs_enctypes::doc}\label{appdev/refs/api/krb5_set_default_tgs_enctypes:krb5-set-default-tgs-enctypes-set-default-tgs-encryption-types-in-a-krb5-context-structure}\index{krb5\_set\_default\_tgs\_enctypes (C function)}
8436
\begin{fulllineitems}
8437
\phantomsection\label{appdev/refs/api/krb5_set_default_tgs_enctypes:krb5_set_default_tgs_enctypes}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_default\_tgs\_enctypes}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} *\emph{ etypes}}{}
8440
\begin{quote}\begin{description}
8441
\item[{param}] \leavevmode
8442
\textbf{{[}inout{]}} \textbf{context} - Library context
8444
\textbf{{[}in{]}} \textbf{etypes} - Encryption type(s) to set
8446
\end{description}\end{quote}
8447
\begin{quote}\begin{description}
8448
\item[{retval}] \leavevmode\begin{itemize}
8453
KRB5\_PROG\_ETYPE\_NOSUPP Program lacks support for encryption type
8457
\item[{return}] \leavevmode\begin{itemize}
8459
Kerberos error codes
8463
\end{description}\end{quote}
8465
This function sets the default enctype list for TGS requests made using \emph{context} to \emph{etypes} .
8467
\begin{notice}{note}{Note:}
8468
This overrides the default list (from config file or built-in).
8472
\subsubsection{krb5\_set\_error\_message - Set an extended error message for an error code.}
8473
\label{appdev/refs/api/krb5_set_error_message::doc}\label{appdev/refs/api/krb5_set_error_message:krb5-set-error-message-set-an-extended-error-message-for-an-error-code}\index{krb5\_set\_error\_message (C function)}
8475
\begin{fulllineitems}
8476
\phantomsection\label{appdev/refs/api/krb5_set_error_message:krb5_set_error_message}\pysiglinewithargsret{void \bfcode{krb5\_set\_error\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}}\emph{ code}, const char *\emph{ fmt}, ...}{}
8479
\begin{quote}\begin{description}
8480
\item[{param}] \leavevmode
8481
\textbf{{[}in{]}} \textbf{ctx} - Library context
8483
\textbf{{[}in{]}} \textbf{code} - Error code
8485
\textbf{{[}in{]}} \textbf{fmt} - Error string for the error code
8487
\end{description}\end{quote}
8490
\subsubsection{krb5\_set\_real\_time - Set time offset field in a krb5\_context structure.}
8491
\label{appdev/refs/api/krb5_set_real_time::doc}\label{appdev/refs/api/krb5_set_real_time:krb5-set-real-time-set-time-offset-field-in-a-krb5-context-structure}\index{krb5\_set\_real\_time (C function)}
8493
\begin{fulllineitems}
8494
\phantomsection\label{appdev/refs/api/krb5_set_real_time:krb5_set_real_time}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_set\_real\_time}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}}\emph{ seconds}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}}\emph{ microseconds}}{}
8497
\begin{quote}\begin{description}
8498
\item[{param}] \leavevmode
8499
\textbf{{[}in{]}} \textbf{context} - Library context
8501
\textbf{{[}in{]}} \textbf{seconds} - Real time, seconds portion
8503
\textbf{{[}in{]}} \textbf{microseconds} - Real time, microseconds portion
8505
\end{description}\end{quote}
8506
\begin{quote}\begin{description}
8507
\item[{retval}] \leavevmode\begin{itemize}
8509
0 Success; otherwise - Kerberos error codes
8513
\end{description}\end{quote}
8515
This function sets the time offset in \emph{context} to the difference between the system time and the real time as determined by \emph{seconds} and \emph{microseconds} .
8518
\subsubsection{krb5\_string\_to\_cksumtype - Convert a string to a checksum type.}
8519
\label{appdev/refs/api/krb5_string_to_cksumtype:krb5-string-to-cksumtype-convert-a-string-to-a-checksum-type}\label{appdev/refs/api/krb5_string_to_cksumtype::doc}\index{krb5\_string\_to\_cksumtype (C function)}
8521
\begin{fulllineitems}
8522
\phantomsection\label{appdev/refs/api/krb5_string_to_cksumtype:krb5_string_to_cksumtype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_string\_to\_cksumtype}}{char *\emph{ string}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}} *\emph{ cksumtypep}}{}
8525
\begin{quote}\begin{description}
8526
\item[{param}] \leavevmode
8527
\textbf{{[}in{]}} \textbf{string} - String to be converted
8529
\textbf{{[}out{]}} \textbf{cksumtypep} - Checksum type to be filled in
8531
\end{description}\end{quote}
8532
\begin{quote}\begin{description}
8533
\item[{retval}] \leavevmode\begin{itemize}
8535
0 Success; otherwise - EINVAL
8539
\end{description}\end{quote}
8542
\subsubsection{krb5\_string\_to\_deltat - Convert a string to a delta time value.}
8543
\label{appdev/refs/api/krb5_string_to_deltat::doc}\label{appdev/refs/api/krb5_string_to_deltat:krb5-string-to-deltat-convert-a-string-to-a-delta-time-value}\index{krb5\_string\_to\_deltat (C function)}
8545
\begin{fulllineitems}
8546
\phantomsection\label{appdev/refs/api/krb5_string_to_deltat:krb5_string_to_deltat}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_string\_to\_deltat}}{char *\emph{ string}, {\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}} *\emph{ deltatp}}{}
8549
\begin{quote}\begin{description}
8550
\item[{param}] \leavevmode
8551
\textbf{{[}in{]}} \textbf{string} - String to be converted
8553
\textbf{{[}out{]}} \textbf{deltatp} - Delta time to be filled in
8555
\end{description}\end{quote}
8556
\begin{quote}\begin{description}
8557
\item[{retval}] \leavevmode\begin{itemize}
8559
0 Success; otherwise - KRB5\_DELTAT\_BADFORMAT
8563
\end{description}\end{quote}
8566
\subsubsection{krb5\_string\_to\_enctype - Convert a string to an encryption type.}
8567
\label{appdev/refs/api/krb5_string_to_enctype::doc}\label{appdev/refs/api/krb5_string_to_enctype:krb5-string-to-enctype-convert-a-string-to-an-encryption-type}\index{krb5\_string\_to\_enctype (C function)}
8569
\begin{fulllineitems}
8570
\phantomsection\label{appdev/refs/api/krb5_string_to_enctype:krb5_string_to_enctype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_string\_to\_enctype}}{char *\emph{ string}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} *\emph{ enctypep}}{}
8573
\begin{quote}\begin{description}
8574
\item[{param}] \leavevmode
8575
\textbf{{[}in{]}} \textbf{string} - String to convert to an encryption type
8577
\textbf{{[}out{]}} \textbf{enctypep} - Encryption type
8579
\end{description}\end{quote}
8580
\begin{quote}\begin{description}
8581
\item[{retval}] \leavevmode\begin{itemize}
8583
0 Success; otherwise - EINVAL
8587
\end{description}\end{quote}
8590
\subsubsection{krb5\_string\_to\_salttype - Convert a string to a salt type.}
8591
\label{appdev/refs/api/krb5_string_to_salttype:krb5-string-to-salttype-convert-a-string-to-a-salt-type}\label{appdev/refs/api/krb5_string_to_salttype::doc}\index{krb5\_string\_to\_salttype (C function)}
8593
\begin{fulllineitems}
8594
\phantomsection\label{appdev/refs/api/krb5_string_to_salttype:krb5_string_to_salttype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_string\_to\_salttype}}{char *\emph{ string}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} *\emph{ salttypep}}{}
8597
\begin{quote}\begin{description}
8598
\item[{param}] \leavevmode
8599
\textbf{{[}in{]}} \textbf{string} - String to convert to an encryption type
8601
\textbf{{[}out{]}} \textbf{salttypep} - Salt type to be filled in
8603
\end{description}\end{quote}
8604
\begin{quote}\begin{description}
8605
\item[{retval}] \leavevmode\begin{itemize}
8607
0 Success; otherwise - EINVAL
8611
\end{description}\end{quote}
8614
\subsubsection{krb5\_string\_to\_timestamp - Convert a string to a timestamp.}
8615
\label{appdev/refs/api/krb5_string_to_timestamp::doc}\label{appdev/refs/api/krb5_string_to_timestamp:krb5-string-to-timestamp-convert-a-string-to-a-timestamp}\index{krb5\_string\_to\_timestamp (C function)}
8617
\begin{fulllineitems}
8618
\phantomsection\label{appdev/refs/api/krb5_string_to_timestamp:krb5_string_to_timestamp}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_string\_to\_timestamp}}{char *\emph{ string}, {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} *\emph{ timestampp}}{}
8621
\begin{quote}\begin{description}
8622
\item[{param}] \leavevmode
8623
\textbf{{[}in{]}} \textbf{string} - String to be converted
8625
\textbf{{[}out{]}} \textbf{timestampp} - Pointer to timestamp
8627
\end{description}\end{quote}
8628
\begin{quote}\begin{description}
8629
\item[{retval}] \leavevmode\begin{itemize}
8631
0 Success; otherwise - EINVAL
8635
\end{description}\end{quote}
8638
\subsubsection{krb5\_timeofday - Retrieve the current time with context specific time offset adjustment.}
8639
\label{appdev/refs/api/krb5_timeofday:krb5-timeofday-retrieve-the-current-time-with-context-specific-time-offset-adjustment}\label{appdev/refs/api/krb5_timeofday::doc}\index{krb5\_timeofday (C function)}
8641
\begin{fulllineitems}
8642
\phantomsection\label{appdev/refs/api/krb5_timeofday:krb5_timeofday}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_timeofday}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} *\emph{ timeret}}{}
8645
\begin{quote}\begin{description}
8646
\item[{param}] \leavevmode
8647
\textbf{{[}in{]}} \textbf{context} - Library context
8649
\textbf{{[}inout{]}} \textbf{timeret} - Timestamp to fill in
8651
\end{description}\end{quote}
8652
\begin{quote}\begin{description}
8653
\item[{retval}] \leavevmode\begin{itemize}
8659
\item[{return}] \leavevmode\begin{itemize}
8661
Kerberos error codes
8665
\end{description}\end{quote}
8667
This function retrieves the system time of day with the context specific time offset adjustment.
8670
\subsubsection{krb5\_timestamp\_to\_sfstring - Convert a timestamp to a string, with optional output padding.}
8671
\label{appdev/refs/api/krb5_timestamp_to_sfstring:krb5-timestamp-to-sfstring-convert-a-timestamp-to-a-string-with-optional-output-padding}\label{appdev/refs/api/krb5_timestamp_to_sfstring::doc}\index{krb5\_timestamp\_to\_sfstring (C function)}
8673
\begin{fulllineitems}
8674
\phantomsection\label{appdev/refs/api/krb5_timestamp_to_sfstring:krb5_timestamp_to_sfstring}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_timestamp\_to\_sfstring}}{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}}\emph{ timestamp}, char *\emph{ buffer}, size\_t\emph{ buflen}, char *\emph{ pad}}{}
8677
\begin{quote}\begin{description}
8678
\item[{param}] \leavevmode
8679
\textbf{{[}in{]}} \textbf{timestamp} - Timestamp to convert
8681
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold the converted timestamp
8683
\textbf{{[}in{]}} \textbf{buflen} - Length of buffer
8685
\textbf{{[}in{]}} \textbf{pad} - Optional value to pad \emph{buffer} if converted timestamp does not fill it
8687
\end{description}\end{quote}
8688
\begin{quote}\begin{description}
8689
\item[{retval}] \leavevmode\begin{itemize}
8691
0 Success; otherwise - Kerberos error codes
8695
\end{description}\end{quote}
8697
If \emph{pad} is not NULL, \emph{buffer} is padded out to \emph{buflen} - 1 characters with the value of * \emph{pad} .
8700
\subsubsection{krb5\_timestamp\_to\_string - Convert a timestamp to a string.}
8701
\label{appdev/refs/api/krb5_timestamp_to_string::doc}\label{appdev/refs/api/krb5_timestamp_to_string:krb5-timestamp-to-string-convert-a-timestamp-to-a-string}\index{krb5\_timestamp\_to\_string (C function)}
8703
\begin{fulllineitems}
8704
\phantomsection\label{appdev/refs/api/krb5_timestamp_to_string:krb5_timestamp_to_string}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_timestamp\_to\_string}}{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}}\emph{ timestamp}, char *\emph{ buffer}, size\_t\emph{ buflen}}{}
8707
\begin{quote}\begin{description}
8708
\item[{param}] \leavevmode
8709
\textbf{{[}in{]}} \textbf{timestamp} - Timestamp to convert
8711
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold converted timestamp
8713
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
8715
\end{description}\end{quote}
8716
\begin{quote}\begin{description}
8717
\item[{retval}] \leavevmode\begin{itemize}
8719
0 Success; otherwise - Kerberos error codes
8723
\end{description}\end{quote}
8725
The string is returned in the locale's appropriate date and time representation.
8728
\subsubsection{krb5\_tkt\_creds\_free - Free a TGS request context.}
8729
\label{appdev/refs/api/krb5_tkt_creds_free::doc}\label{appdev/refs/api/krb5_tkt_creds_free:krb5-tkt-creds-free-free-a-tgs-request-context}\index{krb5\_tkt\_creds\_free (C function)}
8731
\begin{fulllineitems}
8732
\phantomsection\label{appdev/refs/api/krb5_tkt_creds_free:krb5_tkt_creds_free}\pysiglinewithargsret{void \bfcode{krb5\_tkt\_creds\_free}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context]{krb5\_tkt\_creds\_context}}\emph{ ctx}}{}
8735
\begin{quote}\begin{description}
8736
\item[{param}] \leavevmode
8737
\textbf{{[}in{]}} \textbf{context} - Library context
8739
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
8741
\end{description}\end{quote}
8743
\begin{notice}{note}{Note:}
8744
First introduced in 1.9
8748
\subsubsection{krb5\_tkt\_creds\_get - Synchronously obtain credentials using a TGS request context.}
8749
\label{appdev/refs/api/krb5_tkt_creds_get:krb5-tkt-creds-get-synchronously-obtain-credentials-using-a-tgs-request-context}\label{appdev/refs/api/krb5_tkt_creds_get::doc}\index{krb5\_tkt\_creds\_get (C function)}
8751
\begin{fulllineitems}
8752
\phantomsection\label{appdev/refs/api/krb5_tkt_creds_get:krb5_tkt_creds_get}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_tkt\_creds\_get}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context]{krb5\_tkt\_creds\_context}}\emph{ ctx}}{}
8755
\begin{quote}\begin{description}
8756
\item[{param}] \leavevmode
8757
\textbf{{[}in{]}} \textbf{context} - Library context
8759
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
8761
\end{description}\end{quote}
8762
\begin{quote}\begin{description}
8763
\item[{retval}] \leavevmode\begin{itemize}
8765
0 Success; otherwise - Kerberos error codes
8769
\end{description}\end{quote}
8771
This function synchronously obtains credentials using a context created by {\hyperref[appdev/refs/api/krb5_tkt_creds_init:krb5_tkt_creds_init]{\code{krb5\_tkt\_creds\_init()}}} . On successful return, the credentials can be retrieved with {\hyperref[appdev/refs/api/krb5_tkt_creds_get_creds:krb5_tkt_creds_get_creds]{\code{krb5\_tkt\_creds\_get\_creds()}}} .
8773
\begin{notice}{note}{Note:}
8774
First introduced in 1.9
8778
\subsubsection{krb5\_tkt\_creds\_get\_creds - Retrieve acquired credentials from a TGS request context.}
8779
\label{appdev/refs/api/krb5_tkt_creds_get_creds:krb5-tkt-creds-get-creds-retrieve-acquired-credentials-from-a-tgs-request-context}\label{appdev/refs/api/krb5_tkt_creds_get_creds::doc}\index{krb5\_tkt\_creds\_get\_creds (C function)}
8781
\begin{fulllineitems}
8782
\phantomsection\label{appdev/refs/api/krb5_tkt_creds_get_creds:krb5_tkt_creds_get_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_tkt\_creds\_get\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context]{krb5\_tkt\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}}{}
8785
\begin{quote}\begin{description}
8786
\item[{param}] \leavevmode
8787
\textbf{{[}in{]}} \textbf{context} - Library context
8789
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
8791
\textbf{{[}out{]}} \textbf{creds} - Acquired credentials
8793
\end{description}\end{quote}
8794
\begin{quote}\begin{description}
8795
\item[{retval}] \leavevmode\begin{itemize}
8797
0 Success; otherwise - Kerberos error codes
8801
\end{description}\end{quote}
8803
This function copies the acquired initial credentials from \emph{ctx} into \emph{creds} , after the successful completion of {\hyperref[appdev/refs/api/krb5_tkt_creds_get:krb5_tkt_creds_get]{\code{krb5\_tkt\_creds\_get()}}} or {\hyperref[appdev/refs/api/krb5_tkt_creds_step:krb5_tkt_creds_step]{\code{krb5\_tkt\_creds\_step()}}} . Use {\hyperref[appdev/refs/api/krb5_free_cred_contents:krb5_free_cred_contents]{\code{krb5\_free\_cred\_contents()}}} to free \emph{creds} when it is no longer needed.
8805
\begin{notice}{note}{Note:}
8806
First introduced in 1.9
8810
\subsubsection{krb5\_tkt\_creds\_get\_times - Retrieve ticket times from a TGS request context.}
8811
\label{appdev/refs/api/krb5_tkt_creds_get_times:krb5-tkt-creds-get-times-retrieve-ticket-times-from-a-tgs-request-context}\label{appdev/refs/api/krb5_tkt_creds_get_times::doc}\index{krb5\_tkt\_creds\_get\_times (C function)}
8813
\begin{fulllineitems}
8814
\phantomsection\label{appdev/refs/api/krb5_tkt_creds_get_times:krb5_tkt_creds_get_times}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_tkt\_creds\_get\_times}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context]{krb5\_tkt\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_ticket_times:krb5_ticket_times]{krb5\_ticket\_times}} *\emph{ times}}{}
8817
\begin{quote}\begin{description}
8818
\item[{param}] \leavevmode
8819
\textbf{{[}in{]}} \textbf{context} - Library context
8821
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
8823
\textbf{{[}out{]}} \textbf{times} - Ticket times for acquired credentials
8825
\end{description}\end{quote}
8826
\begin{quote}\begin{description}
8827
\item[{retval}] \leavevmode\begin{itemize}
8829
0 Success; otherwise - Kerberos error codes
8833
\end{description}\end{quote}
8835
The TGS request context must have completed obtaining credentials via either {\hyperref[appdev/refs/api/krb5_tkt_creds_get:krb5_tkt_creds_get]{\code{krb5\_tkt\_creds\_get()}}} or {\hyperref[appdev/refs/api/krb5_tkt_creds_step:krb5_tkt_creds_step]{\code{krb5\_tkt\_creds\_step()}}} .
8837
\begin{notice}{note}{Note:}
8838
First introduced in 1.9
8842
\subsubsection{krb5\_tkt\_creds\_init - Create a context to get credentials from a KDC's Ticket Granting Service.}
8843
\label{appdev/refs/api/krb5_tkt_creds_init:krb5-tkt-creds-init-create-a-context-to-get-credentials-from-a-kdc-s-ticket-granting-service}\label{appdev/refs/api/krb5_tkt_creds_init::doc}\index{krb5\_tkt\_creds\_init (C function)}
8845
\begin{fulllineitems}
8846
\phantomsection\label{appdev/refs/api/krb5_tkt_creds_init:krb5_tkt_creds_init}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_tkt\_creds\_init}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context]{krb5\_tkt\_creds\_context}} *\emph{ ctx}}{}
8849
\begin{quote}\begin{description}
8850
\item[{param}] \leavevmode
8851
\textbf{{[}in{]}} \textbf{context} - Library context
8853
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
8855
\textbf{{[}in{]}} \textbf{creds} - Input credentials
8857
\textbf{{[}in{]}} \textbf{options} - \code{KRB5\_GC} options for this request.
8859
\textbf{{[}out{]}} \textbf{ctx} - New TGS request context
8861
\end{description}\end{quote}
8862
\begin{quote}\begin{description}
8863
\item[{retval}] \leavevmode\begin{itemize}
8865
0 Success; otherwise - Kerberos error codes
8869
\end{description}\end{quote}
8871
This function prepares to obtain credentials matching \emph{creds} , either by retrieving them from \emph{ccache} or by making requests to ticket-granting services beginning with a ticket-granting ticket for the client principal's realm.
8873
The resulting TGS acquisition context can be used asynchronously with {\hyperref[appdev/refs/api/krb5_tkt_creds_step:krb5_tkt_creds_step]{\code{krb5\_tkt\_creds\_step()}}} or synchronously with {\hyperref[appdev/refs/api/krb5_tkt_creds_get:krb5_tkt_creds_get]{\code{krb5\_tkt\_creds\_get()}}} . See also {\hyperref[appdev/refs/api/krb5_get_credentials:krb5_get_credentials]{\code{krb5\_get\_credentials()}}} for synchronous use.
8875
Use {\hyperref[appdev/refs/api/krb5_tkt_creds_free:krb5_tkt_creds_free]{\code{krb5\_tkt\_creds\_free()}}} to free \emph{ctx} when it is no longer needed.
8877
\begin{notice}{note}{Note:}
8878
First introduced in 1.9
8882
\subsubsection{krb5\_tkt\_creds\_step - Get the next KDC request in a TGS exchange.}
8883
\label{appdev/refs/api/krb5_tkt_creds_step:krb5-tkt-creds-step-get-the-next-kdc-request-in-a-tgs-exchange}\label{appdev/refs/api/krb5_tkt_creds_step::doc}\index{krb5\_tkt\_creds\_step (C function)}
8885
\begin{fulllineitems}
8886
\phantomsection\label{appdev/refs/api/krb5_tkt_creds_step:krb5_tkt_creds_step}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_tkt\_creds\_step}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context]{krb5\_tkt\_creds\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ in}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ out}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ realm}, unsigned int *\emph{ flags}}{}
8889
\begin{quote}\begin{description}
8890
\item[{param}] \leavevmode
8891
\textbf{{[}in{]}} \textbf{context} - Library context
8893
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
8895
\textbf{{[}in{]}} \textbf{in} - KDC response (empty on the first call)
8897
\textbf{{[}out{]}} \textbf{out} - Next KDC request
8899
\textbf{{[}out{]}} \textbf{realm} - Realm for next KDC request
8901
\textbf{{[}out{]}} \textbf{flags} - Output flags
8903
\end{description}\end{quote}
8904
\begin{quote}\begin{description}
8905
\item[{retval}] \leavevmode\begin{itemize}
8907
0 Success; otherwise - Kerberos error codes
8911
\end{description}\end{quote}
8913
This function constructs the next KDC request for a TGS exchange, allowing the caller to control the transport of KDC requests and replies. On the first call, \emph{in} should be set to an empty buffer; on subsequent calls, it should be set to the KDC's reply to the previous request.
8915
If more requests are needed, \emph{flags} will be set to {\hyperref[appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE]{\code{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}}} and the next request will be placed in \emph{out} . If no more requests are needed, \emph{flags} will not contain {\hyperref[appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE]{\code{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}}} and \emph{out} will be empty.
8917
If this function returns \textbf{KRB5KRB\_ERR\_RESPONSE\_TOO\_BIG} , the caller should transmit the next request using TCP rather than UDP. If this function returns any other error, the TGS exchange has failed.
8919
\begin{notice}{note}{Note:}
8920
First introduced in 1.9
8924
\subsubsection{krb5\_verify\_init\_creds - Verify initial credentials against a keytab.}
8925
\label{appdev/refs/api/krb5_verify_init_creds:krb5-verify-init-creds-verify-initial-credentials-against-a-keytab}\label{appdev/refs/api/krb5_verify_init_creds::doc}\index{krb5\_verify\_init\_creds (C function)}
8927
\begin{fulllineitems}
8928
\phantomsection\label{appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_verify\_init\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_verify_init_creds_opt:krb5_verify_init_creds_opt]{krb5\_verify\_init\_creds\_opt}} *\emph{ options}}{}
8931
\begin{quote}\begin{description}
8932
\item[{param}] \leavevmode
8933
\textbf{{[}in{]}} \textbf{context} - Library context
8935
\textbf{{[}in{]}} \textbf{creds} - Initial credentials to be verified
8937
\textbf{{[}in{]}} \textbf{server} - Server principal (or NULL)
8939
\textbf{{[}in{]}} \textbf{keytab} - Key table (NULL to use default keytab)
8941
\textbf{{[}inout{]}} \textbf{ccache} - Credential cache for fetched creds (or NULL)
8943
\textbf{{[}in{]}} \textbf{options} - Verification options (NULL for default options)
8945
\end{description}\end{quote}
8946
\begin{quote}\begin{description}
8947
\item[{retval}] \leavevmode\begin{itemize}
8949
0 Success; otherwise - Kerberos error codes
8953
\end{description}\end{quote}
8955
This function attempts to verify that \emph{creds} were obtained from a KDC with knowledge of a key in \emph{keytab} , or the default keytab if \emph{keytab} is NULL. If \emph{server} is provided, the highest-kvno key entry for that principal name is used to verify the credentials; otherwise, all unique''host''service principals in the keytab are tried.
8957
If the specified keytab does not exist, or is empty, or cannot be read, or does not contain an entry for \emph{server} , then credential verification may be skipped unless configuration demands that it succeed. The caller can control this behavior by providing a verification options structure; see {\hyperref[appdev/refs/api/krb5_verify_init_creds_opt_init:krb5_verify_init_creds_opt_init]{\code{krb5\_verify\_init\_creds\_opt\_init()}}} and {\hyperref[appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:krb5_verify_init_creds_opt_set_ap_req_nofail]{\code{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail()}}} .
8959
If \emph{ccache} is NULL, any additional credentials fetched during the verification process will be destroyed. If \emph{ccache} points to NULL, a memory ccache will be created for the additional credentials and returned in \emph{ccache} . If \emph{ccache} points to a valid credential cache handle, the additional credentials will be stored in that cache.
8962
\subsubsection{krb5\_verify\_init\_creds\_opt\_init - Initialize a credential verification options structure.}
8963
\label{appdev/refs/api/krb5_verify_init_creds_opt_init:krb5-verify-init-creds-opt-init-initialize-a-credential-verification-options-structure}\label{appdev/refs/api/krb5_verify_init_creds_opt_init::doc}\index{krb5\_verify\_init\_creds\_opt\_init (C function)}
8965
\begin{fulllineitems}
8966
\phantomsection\label{appdev/refs/api/krb5_verify_init_creds_opt_init:krb5_verify_init_creds_opt_init}\pysiglinewithargsret{void \bfcode{krb5\_verify\_init\_creds\_opt\_init}}{{\hyperref[appdev/refs/types/krb5_verify_init_creds_opt:krb5_verify_init_creds_opt]{krb5\_verify\_init\_creds\_opt}} *\emph{ k5\_vic\_options}}{}
8969
\begin{quote}\begin{description}
8970
\item[{param}] \leavevmode
8971
\textbf{{[}in{]}} \textbf{k5\_vic\_options} - Verification options structure
8973
\end{description}\end{quote}
8976
\subsubsection{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail - Set whether credential verification is required.}
8977
\label{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail::doc}\label{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:krb5-verify-init-creds-opt-set-ap-req-nofail-set-whether-credential-verification-is-required}\index{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail (C function)}
8979
\begin{fulllineitems}
8980
\phantomsection\label{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:krb5_verify_init_creds_opt_set_ap_req_nofail}\pysiglinewithargsret{void \bfcode{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail}}{{\hyperref[appdev/refs/types/krb5_verify_init_creds_opt:krb5_verify_init_creds_opt]{krb5\_verify\_init\_creds\_opt}} *\emph{ k5\_vic\_options}, int\emph{ ap\_req\_nofail}}{}
8983
\begin{quote}\begin{description}
8984
\item[{param}] \leavevmode
8985
\textbf{{[}in{]}} \textbf{k5\_vic\_options} - Verification options structure
8987
\textbf{{[}in{]}} \textbf{ap\_req\_nofail} - Whether to require successful verification
8989
\end{description}\end{quote}
8991
This function determines how {\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}} behaves if no keytab information is available. If \emph{ap\_req\_nofail} is \textbf{FALSE} , verification will be skipped in this case and {\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}} will return successfully. If \emph{ap\_req\_nofail} is \textbf{TRUE} , {\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}} will not return successfully unless verification can be performed.
8993
If this function is not used, the behavior of {\hyperref[appdev/refs/api/krb5_verify_init_creds:krb5_verify_init_creds]{\code{krb5\_verify\_init\_creds()}}} is determined through configuration.
8996
\subsubsection{krb5\_vset\_error\_message - Set an extended error message for an error code using a va\_list.}
8997
\label{appdev/refs/api/krb5_vset_error_message:krb5-vset-error-message-set-an-extended-error-message-for-an-error-code-using-a-va-list}\label{appdev/refs/api/krb5_vset_error_message::doc}\index{krb5\_vset\_error\_message (C function)}
8999
\begin{fulllineitems}
9000
\phantomsection\label{appdev/refs/api/krb5_vset_error_message:krb5_vset_error_message}\pysiglinewithargsret{void \bfcode{krb5\_vset\_error\_message}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ ctx}, {\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}}\emph{ code}, const char *\emph{ fmt}, va\_list\emph{ args}}{}
9003
\begin{quote}\begin{description}
9004
\item[{param}] \leavevmode
9005
\textbf{{[}in{]}} \textbf{ctx} - Library context
9007
\textbf{{[}in{]}} \textbf{code} - Error code
9009
\textbf{{[}in{]}} \textbf{fmt} - Error string for the error code
9011
\textbf{{[}in{]}} \textbf{args} - List of vprintf(3) style arguments
9013
\end{description}\end{quote}
9016
\subsection{Public interfaces that should not be called directly}
9017
\label{appdev/refs/api/index:public-interfaces-that-should-not-be-called-directly}
9019
\subsubsection{krb5\_c\_block\_size - Return cipher block size.}
9020
\label{appdev/refs/api/krb5_c_block_size:krb5-c-block-size-return-cipher-block-size}\label{appdev/refs/api/krb5_c_block_size::doc}\index{krb5\_c\_block\_size (C function)}
9022
\begin{fulllineitems}
9023
\phantomsection\label{appdev/refs/api/krb5_c_block_size:krb5_c_block_size}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_block\_size}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, size\_t *\emph{ blocksize}}{}
9026
\begin{quote}\begin{description}
9027
\item[{param}] \leavevmode
9028
\textbf{{[}in{]}} \textbf{context} - Library context
9030
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9032
\textbf{{[}out{]}} \textbf{blocksize} - Block size for \emph{enctype}
9034
\end{description}\end{quote}
9035
\begin{quote}\begin{description}
9036
\item[{retval}] \leavevmode\begin{itemize}
9038
0 Success; otherwise - Kerberos error codes
9042
\end{description}\end{quote}
9045
\subsubsection{krb5\_c\_checksum\_length - Return the length of checksums for a checksum type.}
9046
\label{appdev/refs/api/krb5_c_checksum_length:krb5-c-checksum-length-return-the-length-of-checksums-for-a-checksum-type}\label{appdev/refs/api/krb5_c_checksum_length::doc}\index{krb5\_c\_checksum\_length (C function)}
9048
\begin{fulllineitems}
9049
\phantomsection\label{appdev/refs/api/krb5_c_checksum_length:krb5_c_checksum_length}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_checksum\_length}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, size\_t *\emph{ length}}{}
9052
\begin{quote}\begin{description}
9053
\item[{param}] \leavevmode
9054
\textbf{{[}in{]}} \textbf{context} - Library context
9056
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type
9058
\textbf{{[}out{]}} \textbf{length} - Checksum length
9060
\end{description}\end{quote}
9061
\begin{quote}\begin{description}
9062
\item[{retval}] \leavevmode\begin{itemize}
9064
0 Success; otherwise - Kerberos error codes
9068
\end{description}\end{quote}
9071
\subsubsection{krb5\_c\_crypto\_length - Return a length of a message field specific to the encryption type.}
9072
\label{appdev/refs/api/krb5_c_crypto_length:krb5-c-crypto-length-return-a-length-of-a-message-field-specific-to-the-encryption-type}\label{appdev/refs/api/krb5_c_crypto_length::doc}\index{krb5\_c\_crypto\_length (C function)}
9074
\begin{fulllineitems}
9075
\phantomsection\label{appdev/refs/api/krb5_c_crypto_length:krb5_c_crypto_length}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_crypto\_length}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_cryptotype:krb5_cryptotype]{krb5\_cryptotype}}\emph{ type}, unsigned int *\emph{ size}}{}
9078
\begin{quote}\begin{description}
9079
\item[{param}] \leavevmode
9080
\textbf{{[}in{]}} \textbf{context} - Library context
9082
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9084
\textbf{{[}in{]}} \textbf{type} - Type field (See \code{KRB5\_CRYPTO\_TYPE} types)
9086
\textbf{{[}out{]}} \textbf{size} - Length of the \emph{type} specific to \emph{enctype}
9088
\end{description}\end{quote}
9089
\begin{quote}\begin{description}
9090
\item[{retval}] \leavevmode\begin{itemize}
9092
0 Success; otherwise - Kerberos error codes
9096
\end{description}\end{quote}
9099
\subsubsection{krb5\_c\_crypto\_length\_iov - Fill in lengths for header, trailer and padding in a IOV array.}
9100
\label{appdev/refs/api/krb5_c_crypto_length_iov:krb5-c-crypto-length-iov-fill-in-lengths-for-header-trailer-and-padding-in-a-iov-array}\label{appdev/refs/api/krb5_c_crypto_length_iov::doc}\index{krb5\_c\_crypto\_length\_iov (C function)}
9102
\begin{fulllineitems}
9103
\phantomsection\label{appdev/refs/api/krb5_c_crypto_length_iov:krb5_c_crypto_length_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_crypto\_length\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
9106
\begin{quote}\begin{description}
9107
\item[{param}] \leavevmode
9108
\textbf{{[}in{]}} \textbf{context} - Library context
9110
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9112
\textbf{{[}inout{]}} \textbf{data} - IOV array
9114
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
9116
\end{description}\end{quote}
9117
\begin{quote}\begin{description}
9118
\item[{retval}] \leavevmode\begin{itemize}
9120
0 Success; otherwise - Kerberos error codes
9124
\end{description}\end{quote}
9126
Padding is set to the actual padding required based on the provided \emph{data} buffers. Typically this API is used after setting up the data buffers and {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY]{\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}} buffers, but before actually allocating header, trailer and padding.
9129
\subsubsection{krb5\_c\_decrypt - Decrypt data using a key (operates on keyblock).}
9130
\label{appdev/refs/api/krb5_c_decrypt::doc}\label{appdev/refs/api/krb5_c_decrypt:krb5-c-decrypt-decrypt-data-using-a-key-operates-on-keyblock}\index{krb5\_c\_decrypt (C function)}
9132
\begin{fulllineitems}
9133
\phantomsection\label{appdev/refs/api/krb5_c_decrypt:krb5_c_decrypt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_decrypt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, const {\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ output}}{}
9136
\begin{quote}\begin{description}
9137
\item[{param}] \leavevmode
9138
\textbf{{[}in{]}} \textbf{context} - Library context
9140
\textbf{{[}in{]}} \textbf{key} - Encryption key
9142
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9144
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
9146
\textbf{{[}in{]}} \textbf{input} - Encrypted data
9148
\textbf{{[}out{]}} \textbf{output} - Decrypted data
9150
\end{description}\end{quote}
9151
\begin{quote}\begin{description}
9152
\item[{retval}] \leavevmode\begin{itemize}
9154
0 Success; otherwise - Kerberos error codes
9158
\end{description}\end{quote}
9160
This function decrypts the data block \emph{input} and stores the output into \emph{output} . The actual decryption key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the decryption operation, and is updated with the state to be passed as input to the next operation.
9162
\begin{notice}{note}{Note:}
9163
The caller must initialize \emph{output} and allocate at least enough space for the result. The usual practice is to allocate an output buffer as long as the ciphertext, and let {\hyperref[appdev/refs/api/krb5_c_decrypt:krb5_c_decrypt]{\code{krb5\_c\_decrypt()}}} trim \emph{output-\textgreater{}length} . For some enctypes, the resulting \emph{output-\textgreater{}length} may include padding bytes.
9167
\subsubsection{krb5\_c\_decrypt\_iov - Decrypt data in place supporting AEAD (operates on keyblock).}
9168
\label{appdev/refs/api/krb5_c_decrypt_iov:krb5-c-decrypt-iov-decrypt-data-in-place-supporting-aead-operates-on-keyblock}\label{appdev/refs/api/krb5_c_decrypt_iov::doc}\index{krb5\_c\_decrypt\_iov (C function)}
9170
\begin{fulllineitems}
9171
\phantomsection\label{appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_decrypt\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
9174
\begin{quote}\begin{description}
9175
\item[{param}] \leavevmode
9176
\textbf{{[}in{]}} \textbf{context} - Library context
9178
\textbf{{[}in{]}} \textbf{keyblock} - Encryption key
9180
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9182
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
9184
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
9186
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
9188
\end{description}\end{quote}
9189
\begin{quote}\begin{description}
9190
\item[{retval}] \leavevmode\begin{itemize}
9192
0 Success; otherwise - Kerberos error codes
9196
\end{description}\end{quote}
9198
This function decrypts the data block \emph{data} and stores the output in-place. The actual decryption key will be derived from \emph{keyblock} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the decryption operation, and is updated with the state to be passed as input to the next operation. The caller must allocate the right number of krb5\_crypto\_iov structures before calling into this API.
9204
{\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}}
9208
\begin{notice}{note}{Note:}
9209
On return from a {\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}} call, the \emph{data-\textgreater{}length} in the iov structure are adjusted to reflect actual lengths of the ciphertext used. For example, if the padding length is too large, the length will be reduced. Lengths are never increased.
9211
This function is similar to {\hyperref[appdev/refs/api/krb5_k_decrypt_iov:krb5_k_decrypt_iov]{\code{krb5\_k\_decrypt\_iov()}}} , but operates on keyblock \emph{keyblock} .
9215
\subsubsection{krb5\_c\_encrypt - Encrypt data using a key (operates on keyblock).}
9216
\label{appdev/refs/api/krb5_c_encrypt::doc}\label{appdev/refs/api/krb5_c_encrypt:krb5-c-encrypt-encrypt-data-using-a-key-operates-on-keyblock}\index{krb5\_c\_encrypt (C function)}
9218
\begin{fulllineitems}
9219
\phantomsection\label{appdev/refs/api/krb5_c_encrypt:krb5_c_encrypt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_encrypt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} *\emph{ output}}{}
9222
\begin{quote}\begin{description}
9223
\item[{param}] \leavevmode
9224
\textbf{{[}in{]}} \textbf{context} - Library context
9226
\textbf{{[}in{]}} \textbf{key} - Encryption key
9228
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9230
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
9232
\textbf{{[}in{]}} \textbf{input} - Data to be encrypted
9234
\textbf{{[}out{]}} \textbf{output} - Encrypted data
9236
\end{description}\end{quote}
9237
\begin{quote}\begin{description}
9238
\item[{retval}] \leavevmode\begin{itemize}
9240
0 Success; otherwise - Kerberos error codes
9244
\end{description}\end{quote}
9246
This function encrypts the data block \emph{input} and stores the output into \emph{output} . The actual encryption key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the encryption operation, and is updated with the state to be passed as input to the next operation.
9248
\begin{notice}{note}{Note:}
9249
The caller must initialize \emph{output} and allocate at least enough space for the result (using {\hyperref[appdev/refs/api/krb5_c_encrypt_length:krb5_c_encrypt_length]{\code{krb5\_c\_encrypt\_length()}}} to determine the amount of space needed). \emph{output-\textgreater{}length} will be set to the actual length of the ciphertext.
9253
\subsubsection{krb5\_c\_encrypt\_iov - Encrypt data in place supporting AEAD (operates on keyblock).}
9254
\label{appdev/refs/api/krb5_c_encrypt_iov:krb5-c-encrypt-iov-encrypt-data-in-place-supporting-aead-operates-on-keyblock}\label{appdev/refs/api/krb5_c_encrypt_iov::doc}\index{krb5\_c\_encrypt\_iov (C function)}
9256
\begin{fulllineitems}
9257
\phantomsection\label{appdev/refs/api/krb5_c_encrypt_iov:krb5_c_encrypt_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_encrypt\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
9260
\begin{quote}\begin{description}
9261
\item[{param}] \leavevmode
9262
\textbf{{[}in{]}} \textbf{context} - Library context
9264
\textbf{{[}in{]}} \textbf{keyblock} - Encryption key
9266
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9268
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
9270
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
9272
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
9274
\end{description}\end{quote}
9275
\begin{quote}\begin{description}
9276
\item[{retval}] \leavevmode\begin{itemize}
9278
0 Success; otherwise - Kerberos error codes
9282
\end{description}\end{quote}
9284
This function encrypts the data block \emph{data} and stores the output in-place. The actual encryption key will be derived from \emph{keyblock} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the encryption operation, and is updated with the state to be passed as input to the next operation. The caller must allocate the right number of krb5\_crypto\_iov structures before calling into this API.
9290
{\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}}
9294
\begin{notice}{note}{Note:}
9295
On return from a {\hyperref[appdev/refs/api/krb5_c_encrypt_iov:krb5_c_encrypt_iov]{\code{krb5\_c\_encrypt\_iov()}}} call, the \emph{data-\textgreater{}length} in the iov structure are adjusted to reflect actual lengths of the ciphertext used. For example, if the padding length is too large, the length will be reduced. Lengths are never increased.
9297
This function is similar to {\hyperref[appdev/refs/api/krb5_k_encrypt_iov:krb5_k_encrypt_iov]{\code{krb5\_k\_encrypt\_iov()}}} , but operates on keyblock \emph{keyblock} .
9301
\subsubsection{krb5\_c\_encrypt\_length - Compute encrypted data length.}
9302
\label{appdev/refs/api/krb5_c_encrypt_length:krb5-c-encrypt-length-compute-encrypted-data-length}\label{appdev/refs/api/krb5_c_encrypt_length::doc}\index{krb5\_c\_encrypt\_length (C function)}
9304
\begin{fulllineitems}
9305
\phantomsection\label{appdev/refs/api/krb5_c_encrypt_length:krb5_c_encrypt_length}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_encrypt\_length}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, size\_t\emph{ inputlen}, size\_t *\emph{ length}}{}
9308
\begin{quote}\begin{description}
9309
\item[{param}] \leavevmode
9310
\textbf{{[}in{]}} \textbf{context} - Library context
9312
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9314
\textbf{{[}in{]}} \textbf{inputlen} - Length of the data to be encrypted
9316
\textbf{{[}out{]}} \textbf{length} - Length of the encrypted data
9318
\end{description}\end{quote}
9319
\begin{quote}\begin{description}
9320
\item[{retval}] \leavevmode\begin{itemize}
9322
0 Success; otherwise - Kerberos error codes
9326
\end{description}\end{quote}
9328
This function computes the length of the ciphertext produced by encrypting \emph{inputlen} bytes including padding, confounder, and checksum.
9331
\subsubsection{krb5\_c\_enctype\_compare - Compare two encryption types.}
9332
\label{appdev/refs/api/krb5_c_enctype_compare::doc}\label{appdev/refs/api/krb5_c_enctype_compare:krb5-c-enctype-compare-compare-two-encryption-types}\index{krb5\_c\_enctype\_compare (C function)}
9334
\begin{fulllineitems}
9335
\phantomsection\label{appdev/refs/api/krb5_c_enctype_compare:krb5_c_enctype_compare}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_enctype\_compare}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ e1}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ e2}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} *\emph{ similar}}{}
9338
\begin{quote}\begin{description}
9339
\item[{param}] \leavevmode
9340
\textbf{{[}in{]}} \textbf{context} - Library context
9342
\textbf{{[}in{]}} \textbf{e1} - First encryption type
9344
\textbf{{[}in{]}} \textbf{e2} - Second encryption type
9346
\textbf{{[}out{]}} \textbf{similar} - \textbf{TRUE} if types are similar, \textbf{FALSE} if not
9348
\end{description}\end{quote}
9349
\begin{quote}\begin{description}
9350
\item[{retval}] \leavevmode\begin{itemize}
9352
0 Success; otherwise - Kerberos error codes
9356
\end{description}\end{quote}
9358
This function determines whether two encryption types use the same kind of keys.
9361
\subsubsection{krb5\_c\_free\_state - Free a cipher state previously allocated by krb5\_c\_init\_state() .}
9362
\label{appdev/refs/api/krb5_c_free_state:krb5-c-free-state-free-a-cipher-state-previously-allocated-by-krb5-c-init-state}\label{appdev/refs/api/krb5_c_free_state::doc}\index{krb5\_c\_free\_state (C function)}
9364
\begin{fulllineitems}
9365
\phantomsection\label{appdev/refs/api/krb5_c_free_state:krb5_c_free_state}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_free\_state}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ state}}{}
9368
\begin{quote}\begin{description}
9369
\item[{param}] \leavevmode
9370
\textbf{{[}in{]}} \textbf{context} - Library context
9372
\textbf{{[}in{]}} \textbf{key} - Key
9374
\textbf{{[}in{]}} \textbf{state} - Cipher state to be freed
9376
\end{description}\end{quote}
9377
\begin{quote}\begin{description}
9378
\item[{retval}] \leavevmode\begin{itemize}
9380
0 Success; otherwise - Kerberos error codes
9384
\end{description}\end{quote}
9387
\subsubsection{krb5\_c\_fx\_cf2\_simple - Compute the KRB-FX-CF2 combination of two keys and pepper strings.}
9388
\label{appdev/refs/api/krb5_c_fx_cf2_simple:krb5-c-fx-cf2-simple-compute-the-krb-fx-cf2-combination-of-two-keys-and-pepper-strings}\label{appdev/refs/api/krb5_c_fx_cf2_simple::doc}\index{krb5\_c\_fx\_cf2\_simple (C function)}
9390
\begin{fulllineitems}
9391
\phantomsection\label{appdev/refs/api/krb5_c_fx_cf2_simple:krb5_c_fx_cf2_simple}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_fx\_cf2\_simple}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ k1}, const char *\emph{ pepper1}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ k2}, const char *\emph{ pepper2}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ out}}{}
9394
\begin{quote}\begin{description}
9395
\item[{param}] \leavevmode
9396
\textbf{{[}in{]}} \textbf{context} - Library context
9398
\textbf{{[}in{]}} \textbf{k1} - KDC contribution key
9400
\textbf{{[}in{]}} \textbf{pepper1} - String''PKINIT''
9402
\textbf{{[}in{]}} \textbf{k2} - Reply key
9404
\textbf{{[}in{]}} \textbf{pepper2} - String''KeyExchange''
9406
\textbf{{[}out{]}} \textbf{out} - Output key
9408
\end{description}\end{quote}
9409
\begin{quote}\begin{description}
9410
\item[{retval}] \leavevmode\begin{itemize}
9412
0 Success; otherwise - Kerberos error codes
9416
\end{description}\end{quote}
9418
This function computes the KRB-FX-CF2 function over its inputs and places the results in a newly allocated keyblock. This function is simple in that it assumes that \emph{pepper1} and \emph{pepper2} are C strings with no internal nulls and that the enctype of the result will be the same as that of \emph{k1} . \emph{k1} and \emph{k2} may be of different enctypes.
9421
\subsubsection{krb5\_c\_init\_state - Initialize a new cipher state.}
9422
\label{appdev/refs/api/krb5_c_init_state:krb5-c-init-state-initialize-a-new-cipher-state}\label{appdev/refs/api/krb5_c_init_state::doc}\index{krb5\_c\_init\_state (C function)}
9424
\begin{fulllineitems}
9425
\phantomsection\label{appdev/refs/api/krb5_c_init_state:krb5_c_init_state}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_init\_state}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ new\_state}}{}
9428
\begin{quote}\begin{description}
9429
\item[{param}] \leavevmode
9430
\textbf{{[}in{]}} \textbf{context} - Library context
9432
\textbf{{[}in{]}} \textbf{key} - Key
9434
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9436
\textbf{{[}out{]}} \textbf{new\_state} - New cipher state
9438
\end{description}\end{quote}
9439
\begin{quote}\begin{description}
9440
\item[{retval}] \leavevmode\begin{itemize}
9442
0 Success; otherwise - Kerberos error codes
9446
\end{description}\end{quote}
9449
\subsubsection{krb5\_c\_is\_coll\_proof\_cksum - Test whether a checksum type is collision-proof.}
9450
\label{appdev/refs/api/krb5_c_is_coll_proof_cksum:krb5-c-is-coll-proof-cksum-test-whether-a-checksum-type-is-collision-proof}\label{appdev/refs/api/krb5_c_is_coll_proof_cksum::doc}\index{krb5\_c\_is\_coll\_proof\_cksum (C function)}
9452
\begin{fulllineitems}
9453
\phantomsection\label{appdev/refs/api/krb5_c_is_coll_proof_cksum:krb5_c_is_coll_proof_cksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_c\_is\_coll\_proof\_cksum}}{{\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ ctype}}{}
9456
\begin{quote}\begin{description}
9457
\item[{param}] \leavevmode
9458
\textbf{{[}in{]}} \textbf{ctype} - Checksum type
9460
\end{description}\end{quote}
9461
\begin{quote}\begin{description}
9462
\item[{return}] \leavevmode\begin{itemize}
9464
TRUE if ctype is collision-proof, FALSE if it is not collision-proof or not a valid checksum type.
9468
\end{description}\end{quote}
9471
\subsubsection{krb5\_c\_is\_keyed\_cksum - Test whether a checksum type is keyed.}
9472
\label{appdev/refs/api/krb5_c_is_keyed_cksum::doc}\label{appdev/refs/api/krb5_c_is_keyed_cksum:krb5-c-is-keyed-cksum-test-whether-a-checksum-type-is-keyed}\index{krb5\_c\_is\_keyed\_cksum (C function)}
9474
\begin{fulllineitems}
9475
\phantomsection\label{appdev/refs/api/krb5_c_is_keyed_cksum:krb5_c_is_keyed_cksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_c\_is\_keyed\_cksum}}{{\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ ctype}}{}
9478
\begin{quote}\begin{description}
9479
\item[{param}] \leavevmode
9480
\textbf{{[}in{]}} \textbf{ctype} - Checksum type
9482
\end{description}\end{quote}
9483
\begin{quote}\begin{description}
9484
\item[{return}] \leavevmode\begin{itemize}
9486
TRUE if ctype is a keyed checksum type, FALSE otherwise.
9490
\end{description}\end{quote}
9493
\subsubsection{krb5\_c\_keyed\_checksum\_types - Return a list of keyed checksum types usable with an encryption type.}
9494
\label{appdev/refs/api/krb5_c_keyed_checksum_types::doc}\label{appdev/refs/api/krb5_c_keyed_checksum_types:krb5-c-keyed-checksum-types-return-a-list-of-keyed-checksum-types-usable-with-an-encryption-type}\index{krb5\_c\_keyed\_checksum\_types (C function)}
9496
\begin{fulllineitems}
9497
\phantomsection\label{appdev/refs/api/krb5_c_keyed_checksum_types:krb5_c_keyed_checksum_types}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_keyed\_checksum\_types}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, unsigned int *\emph{ count}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}} **\emph{ cksumtypes}}{}
9500
\begin{quote}\begin{description}
9501
\item[{param}] \leavevmode
9502
\textbf{{[}in{]}} \textbf{context} - Library context
9504
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9506
\textbf{{[}out{]}} \textbf{count} - Count of allowable checksum types
9508
\textbf{{[}out{]}} \textbf{cksumtypes} - Array of allowable checksum types
9510
\end{description}\end{quote}
9511
\begin{quote}\begin{description}
9512
\item[{retval}] \leavevmode\begin{itemize}
9514
0 Success; otherwise - Kerberos error codes
9518
\end{description}\end{quote}
9520
Use {\hyperref[appdev/refs/api/krb5_free_cksumtypes:krb5_free_cksumtypes]{\code{krb5\_free\_cksumtypes()}}} to free \emph{cksumtypes} when it is no longer needed.
9523
\subsubsection{krb5\_c\_keylengths - Return length of the specified key in bytes.}
9524
\label{appdev/refs/api/krb5_c_keylengths::doc}\label{appdev/refs/api/krb5_c_keylengths:krb5-c-keylengths-return-length-of-the-specified-key-in-bytes}\index{krb5\_c\_keylengths (C function)}
9526
\begin{fulllineitems}
9527
\phantomsection\label{appdev/refs/api/krb5_c_keylengths:krb5_c_keylengths}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_keylengths}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, size\_t *\emph{ keybytes}, size\_t *\emph{ keylength}}{}
9530
\begin{quote}\begin{description}
9531
\item[{param}] \leavevmode
9532
\textbf{{[}in{]}} \textbf{context} - Library context
9534
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9536
\textbf{{[}out{]}} \textbf{keybytes} - Number of bytes required to make a key
9538
\textbf{{[}out{]}} \textbf{keylength} - Length of final key
9540
\end{description}\end{quote}
9541
\begin{quote}\begin{description}
9542
\item[{retval}] \leavevmode\begin{itemize}
9544
0 Success; otherwise - Kerberos error codes
9548
\end{description}\end{quote}
9551
\subsubsection{krb5\_c\_make\_checksum - Compute a checksum (operates on keyblock).}
9552
\label{appdev/refs/api/krb5_c_make_checksum::doc}\label{appdev/refs/api/krb5_c_make_checksum:krb5-c-make-checksum-compute-a-checksum-operates-on-keyblock}\index{krb5\_c\_make\_checksum (C function)}
9554
\begin{fulllineitems}
9555
\phantomsection\label{appdev/refs/api/krb5_c_make_checksum:krb5_c_make_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_make\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ cksum}}{}
9558
\begin{quote}\begin{description}
9559
\item[{param}] \leavevmode
9560
\textbf{{[}in{]}} \textbf{context} - Library context
9562
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
9564
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
9566
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9568
\textbf{{[}in{]}} \textbf{input} - Input data
9570
\textbf{{[}out{]}} \textbf{cksum} - Generated checksum
9572
\end{description}\end{quote}
9573
\begin{quote}\begin{description}
9574
\item[{retval}] \leavevmode\begin{itemize}
9576
0 Success; otherwise - Kerberos error codes
9580
\end{description}\end{quote}
9582
This function computes a checksum of type \emph{cksumtype} over \emph{input} , using \emph{key} if the checksum type is a keyed checksum. If \emph{cksumtype} is 0 and \emph{key} is non-null, the checksum type will be the mandatory-to-implement checksum type for the key's encryption type. The actual checksum key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the checksum type. The newly created \emph{cksum} must be released by calling {\hyperref[appdev/refs/api/krb5_free_checksum_contents:krb5_free_checksum_contents]{\code{krb5\_free\_checksum\_contents()}}} when it is no longer needed.
9588
{\hyperref[appdev/refs/api/krb5_c_verify_checksum:krb5_c_verify_checksum]{\code{krb5\_c\_verify\_checksum()}}}
9592
\begin{notice}{note}{Note:}
9593
This function is similar to {\hyperref[appdev/refs/api/krb5_k_make_checksum:krb5_k_make_checksum]{\code{krb5\_k\_make\_checksum()}}} , but operates on keyblock \emph{key} .
9597
\subsubsection{krb5\_c\_make\_checksum\_iov - Fill in a checksum element in IOV array (operates on keyblock)}
9598
\label{appdev/refs/api/krb5_c_make_checksum_iov:krb5-c-make-checksum-iov-fill-in-a-checksum-element-in-iov-array-operates-on-keyblock}\label{appdev/refs/api/krb5_c_make_checksum_iov::doc}\index{krb5\_c\_make\_checksum\_iov (C function)}
9600
\begin{fulllineitems}
9601
\phantomsection\label{appdev/refs/api/krb5_c_make_checksum_iov:krb5_c_make_checksum_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_make\_checksum\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
9604
\begin{quote}\begin{description}
9605
\item[{param}] \leavevmode
9606
\textbf{{[}in{]}} \textbf{context} - Library context
9608
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
9610
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
9612
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
9614
\textbf{{[}inout{]}} \textbf{data} - IOV array
9616
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
9618
\end{description}\end{quote}
9619
\begin{quote}\begin{description}
9620
\item[{retval}] \leavevmode\begin{itemize}
9622
0 Success; otherwise - Kerberos error codes
9626
\end{description}\end{quote}
9628
Create a checksum in the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM]{\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} element over {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA]{\code{KRB5\_CRYPTO\_TYPE\_DATA}}} and {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY]{\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}} chunks in \emph{data} . Only the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM]{\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} region is modified.
9634
{\hyperref[appdev/refs/api/krb5_c_verify_checksum_iov:krb5_c_verify_checksum_iov]{\code{krb5\_c\_verify\_checksum\_iov()}}}
9638
\begin{notice}{note}{Note:}
9639
This function is similar to {\hyperref[appdev/refs/api/krb5_k_make_checksum_iov:krb5_k_make_checksum_iov]{\code{krb5\_k\_make\_checksum\_iov()}}} , but operates on keyblock \emph{key} .
9643
\subsubsection{krb5\_c\_make\_random\_key - Generate an enctype-specific random encryption key.}
9644
\label{appdev/refs/api/krb5_c_make_random_key:krb5-c-make-random-key-generate-an-enctype-specific-random-encryption-key}\label{appdev/refs/api/krb5_c_make_random_key::doc}\index{krb5\_c\_make\_random\_key (C function)}
9646
\begin{fulllineitems}
9647
\phantomsection\label{appdev/refs/api/krb5_c_make_random_key:krb5_c_make_random_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_make\_random\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ k5\_random\_key}}{}
9650
\begin{quote}\begin{description}
9651
\item[{param}] \leavevmode
9652
\textbf{{[}in{]}} \textbf{context} - Library context
9654
\textbf{{[}in{]}} \textbf{enctype} - Encryption type of the generated key
9656
\textbf{{[}out{]}} \textbf{k5\_random\_key} - An allocated and initialized keyblock
9658
\end{description}\end{quote}
9659
\begin{quote}\begin{description}
9660
\item[{retval}] \leavevmode\begin{itemize}
9662
0 Success; otherwise - Kerberos error codes
9666
\end{description}\end{quote}
9668
Use {\hyperref[appdev/refs/api/krb5_free_keyblock_contents:krb5_free_keyblock_contents]{\code{krb5\_free\_keyblock\_contents()}}} to free \emph{k5\_random\_key} when no longer needed.
9671
\subsubsection{krb5\_c\_padding\_length - Return a number of padding octets.}
9672
\label{appdev/refs/api/krb5_c_padding_length:krb5-c-padding-length-return-a-number-of-padding-octets}\label{appdev/refs/api/krb5_c_padding_length::doc}\index{krb5\_c\_padding\_length (C function)}
9674
\begin{fulllineitems}
9675
\phantomsection\label{appdev/refs/api/krb5_c_padding_length:krb5_c_padding_length}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_padding\_length}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, size\_t\emph{ data\_length}, unsigned int *\emph{ size}}{}
9678
\begin{quote}\begin{description}
9679
\item[{param}] \leavevmode
9680
\textbf{{[}in{]}} \textbf{context} - Library context
9682
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9684
\textbf{{[}in{]}} \textbf{data\_length} - Length of the plaintext to pad
9686
\textbf{{[}out{]}} \textbf{size} - Number of padding octets
9688
\end{description}\end{quote}
9689
\begin{quote}\begin{description}
9690
\item[{retval}] \leavevmode\begin{itemize}
9692
0 Success; otherwise - KRB5\_BAD\_ENCTYPE
9696
\end{description}\end{quote}
9698
This function returns the number of the padding octets required to pad \emph{data\_length} octets of plaintext.
9701
\subsubsection{krb5\_c\_prf - Generate enctype-specific pseudo-random bytes.}
9702
\label{appdev/refs/api/krb5_c_prf:krb5-c-prf-generate-enctype-specific-pseudo-random-bytes}\label{appdev/refs/api/krb5_c_prf::doc}\index{krb5\_c\_prf (C function)}
9704
\begin{fulllineitems}
9705
\phantomsection\label{appdev/refs/api/krb5_c_prf:krb5_c_prf}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_prf}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ output}}{}
9708
\begin{quote}\begin{description}
9709
\item[{param}] \leavevmode
9710
\textbf{{[}in{]}} \textbf{context} - Library context
9712
\textbf{{[}in{]}} \textbf{keyblock} - Key
9714
\textbf{{[}in{]}} \textbf{input} - Input data
9716
\textbf{{[}out{]}} \textbf{output} - Output data
9718
\end{description}\end{quote}
9719
\begin{quote}\begin{description}
9720
\item[{retval}] \leavevmode\begin{itemize}
9722
0 Success; otherwise - Kerberos error codes
9726
\end{description}\end{quote}
9728
This function selects a pseudo-random function based on \emph{keyblock} and computes its value over \emph{input} , placing the result into \emph{output} . The caller must preinitialize \emph{output} and allocate space for the result, using {\hyperref[appdev/refs/api/krb5_c_prf_length:krb5_c_prf_length]{\code{krb5\_c\_prf\_length()}}} to determine the required length.
9731
\subsubsection{krb5\_c\_prf\_length - Get the output length of pseudo-random functions for an encryption type.}
9732
\label{appdev/refs/api/krb5_c_prf_length::doc}\label{appdev/refs/api/krb5_c_prf_length:krb5-c-prf-length-get-the-output-length-of-pseudo-random-functions-for-an-encryption-type}\index{krb5\_c\_prf\_length (C function)}
9734
\begin{fulllineitems}
9735
\phantomsection\label{appdev/refs/api/krb5_c_prf_length:krb5_c_prf_length}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_prf\_length}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, size\_t *\emph{ len}}{}
9738
\begin{quote}\begin{description}
9739
\item[{param}] \leavevmode
9740
\textbf{{[}in{]}} \textbf{context} - Library context
9742
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9744
\textbf{{[}out{]}} \textbf{len} - Length of PRF output
9746
\end{description}\end{quote}
9747
\begin{quote}\begin{description}
9748
\item[{retval}] \leavevmode\begin{itemize}
9750
0 Success; otherwise - Kerberos error codes
9754
\end{description}\end{quote}
9757
\subsubsection{krb5\_c\_random\_add\_entropy - Add entropy to the pseudo-random number generator.}
9758
\label{appdev/refs/api/krb5_c_random_add_entropy::doc}\label{appdev/refs/api/krb5_c_random_add_entropy:krb5-c-random-add-entropy-add-entropy-to-the-pseudo-random-number-generator}\index{krb5\_c\_random\_add\_entropy (C function)}
9760
\begin{fulllineitems}
9761
\phantomsection\label{appdev/refs/api/krb5_c_random_add_entropy:krb5_c_random_add_entropy}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_random\_add\_entropy}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, unsigned int\emph{ randsource}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
9764
\begin{quote}\begin{description}
9765
\item[{param}] \leavevmode
9766
\textbf{{[}in{]}} \textbf{context} - Library context
9768
\textbf{{[}in{]}} \textbf{randsource} - Entropy source (see KRB5\_RANDSOURCE types)
9770
\textbf{{[}in{]}} \textbf{data} - Data
9772
\end{description}\end{quote}
9773
\begin{quote}\begin{description}
9774
\item[{retval}] \leavevmode\begin{itemize}
9776
0 Success; otherwise - Kerberos error codes
9780
\end{description}\end{quote}
9782
Contribute entropy to the PRNG used by krb5 crypto operations. This may or may not affect the output of the next crypto operation requiring random data.
9785
\subsubsection{krb5\_c\_random\_make\_octets - Generate pseudo-random bytes.}
9786
\label{appdev/refs/api/krb5_c_random_make_octets::doc}\label{appdev/refs/api/krb5_c_random_make_octets:krb5-c-random-make-octets-generate-pseudo-random-bytes}\index{krb5\_c\_random\_make\_octets (C function)}
9788
\begin{fulllineitems}
9789
\phantomsection\label{appdev/refs/api/krb5_c_random_make_octets:krb5_c_random_make_octets}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_random\_make\_octets}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
9792
\begin{quote}\begin{description}
9793
\item[{param}] \leavevmode
9794
\textbf{{[}in{]}} \textbf{context} - Library context
9796
\textbf{{[}out{]}} \textbf{data} - Random data
9798
\end{description}\end{quote}
9799
\begin{quote}\begin{description}
9800
\item[{retval}] \leavevmode\begin{itemize}
9802
0 Success; otherwise - Kerberos error codes
9806
\end{description}\end{quote}
9808
Fills in \emph{data} with bytes from the PRNG used by krb5 crypto operations. The caller must preinitialize \emph{data} and allocate the desired amount of space.
9811
\subsubsection{krb5\_c\_random\_os\_entropy - Collect entropy from the OS if possible.}
9812
\label{appdev/refs/api/krb5_c_random_os_entropy:krb5-c-random-os-entropy-collect-entropy-from-the-os-if-possible}\label{appdev/refs/api/krb5_c_random_os_entropy::doc}\index{krb5\_c\_random\_os\_entropy (C function)}
9814
\begin{fulllineitems}
9815
\phantomsection\label{appdev/refs/api/krb5_c_random_os_entropy:krb5_c_random_os_entropy}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_random\_os\_entropy}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, int\emph{ strong}, int *\emph{ success}}{}
9818
\begin{quote}\begin{description}
9819
\item[{param}] \leavevmode
9820
\textbf{{[}in{]}} \textbf{context} - Library context
9822
\textbf{{[}in{]}} \textbf{strong} - Strongest available source of entropy
9824
\textbf{{[}out{]}} \textbf{success} - 1 if OS provides entropy, 0 otherwise
9826
\end{description}\end{quote}
9827
\begin{quote}\begin{description}
9828
\item[{retval}] \leavevmode\begin{itemize}
9830
0 Success; otherwise - Kerberos error codes
9834
\end{description}\end{quote}
9836
If \emph{strong} is non-zero, this function attempts to use the strongest available source of entropy. Setting this flag may cause the function to block on some operating systems. Good uses include seeding the PRNG for kadmind and realm setup.
9839
\subsubsection{krb5\_c\_random\_to\_key - Generate an enctype-specific key from random data.}
9840
\label{appdev/refs/api/krb5_c_random_to_key:krb5-c-random-to-key-generate-an-enctype-specific-key-from-random-data}\label{appdev/refs/api/krb5_c_random_to_key::doc}\index{krb5\_c\_random\_to\_key (C function)}
9842
\begin{fulllineitems}
9843
\phantomsection\label{appdev/refs/api/krb5_c_random_to_key:krb5_c_random_to_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_random\_to\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ random\_data}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ k5\_random\_key}}{}
9846
\begin{quote}\begin{description}
9847
\item[{param}] \leavevmode
9848
\textbf{{[}in{]}} \textbf{context} - Library context
9850
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9852
\textbf{{[}in{]}} \textbf{random\_data} - Random input data
9854
\textbf{{[}out{]}} \textbf{k5\_random\_key} - Resulting key
9856
\end{description}\end{quote}
9857
\begin{quote}\begin{description}
9858
\item[{retval}] \leavevmode\begin{itemize}
9860
0 Success; otherwise - Kerberos error codes
9864
\end{description}\end{quote}
9866
This function takes random input data \emph{random\_data} and produces a valid key \emph{k5\_random\_key} for a given \emph{enctype} .
9872
{\hyperref[appdev/refs/api/krb5_c_keylengths:krb5_c_keylengths]{\code{krb5\_c\_keylengths()}}}
9876
\begin{notice}{note}{Note:}
9877
It is assumed that \emph{k5\_random\_key} has already been initialized and \emph{k5\_random\_key-\textgreater{}contents} has been allocated with the correct length.
9881
\subsubsection{krb5\_c\_string\_to\_key - Convert a string (such a password) to a key.}
9882
\label{appdev/refs/api/krb5_c_string_to_key:krb5-c-string-to-key-convert-a-string-such-a-password-to-a-key}\label{appdev/refs/api/krb5_c_string_to_key::doc}\index{krb5\_c\_string\_to\_key (C function)}
9884
\begin{fulllineitems}
9885
\phantomsection\label{appdev/refs/api/krb5_c_string_to_key:krb5_c_string_to_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_string\_to\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ string}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ salt}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}}{}
9888
\begin{quote}\begin{description}
9889
\item[{param}] \leavevmode
9890
\textbf{{[}in{]}} \textbf{context} - Library context
9892
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9894
\textbf{{[}in{]}} \textbf{string} - String to be converted
9896
\textbf{{[}in{]}} \textbf{salt} - Salt value
9898
\textbf{{[}out{]}} \textbf{key} - Generated key
9900
\end{description}\end{quote}
9901
\begin{quote}\begin{description}
9902
\item[{retval}] \leavevmode\begin{itemize}
9904
0 Success; otherwise - Kerberos error codes
9908
\end{description}\end{quote}
9910
This function converts \emph{string} to a \emph{key} of encryption type \emph{enctype} , using the specified \emph{salt} . The newly created \emph{key} must be released by calling {\hyperref[appdev/refs/api/krb5_free_keyblock_contents:krb5_free_keyblock_contents]{\code{krb5\_free\_keyblock\_contents()}}} when it is no longer needed.
9913
\subsubsection{krb5\_c\_string\_to\_key\_with\_params - Convert a string (such as a password) to a key with additional parameters.}
9914
\label{appdev/refs/api/krb5_c_string_to_key_with_params::doc}\label{appdev/refs/api/krb5_c_string_to_key_with_params:krb5-c-string-to-key-with-params-convert-a-string-such-as-a-password-to-a-key-with-additional-parameters}\index{krb5\_c\_string\_to\_key\_with\_params (C function)}
9916
\begin{fulllineitems}
9917
\phantomsection\label{appdev/refs/api/krb5_c_string_to_key_with_params:krb5_c_string_to_key_with_params}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_string\_to\_key\_with\_params}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ string}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ salt}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ params}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}}{}
9920
\begin{quote}\begin{description}
9921
\item[{param}] \leavevmode
9922
\textbf{{[}in{]}} \textbf{context} - Library context
9924
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
9926
\textbf{{[}in{]}} \textbf{string} - String to be converted
9928
\textbf{{[}in{]}} \textbf{salt} - Salt value
9930
\textbf{{[}in{]}} \textbf{params} - Parameters
9932
\textbf{{[}out{]}} \textbf{key} - Generated key
9934
\end{description}\end{quote}
9935
\begin{quote}\begin{description}
9936
\item[{retval}] \leavevmode\begin{itemize}
9938
0 Success; otherwise - Kerberos error codes
9942
\end{description}\end{quote}
9944
This function is similar to {\hyperref[appdev/refs/api/krb5_c_string_to_key:krb5_c_string_to_key]{\code{krb5\_c\_string\_to\_key()}}} , but also takes parameters which may affect the algorithm in an enctype-dependent way. The newly created \emph{key} must be released by calling {\hyperref[appdev/refs/api/krb5_free_keyblock_contents:krb5_free_keyblock_contents]{\code{krb5\_free\_keyblock\_contents()}}} when it is no longer needed.
9947
\subsubsection{krb5\_c\_valid\_cksumtype - Verify that specified checksum type is a valid Kerberos checksum type.}
9948
\label{appdev/refs/api/krb5_c_valid_cksumtype:krb5-c-valid-cksumtype-verify-that-specified-checksum-type-is-a-valid-kerberos-checksum-type}\label{appdev/refs/api/krb5_c_valid_cksumtype::doc}\index{krb5\_c\_valid\_cksumtype (C function)}
9950
\begin{fulllineitems}
9951
\phantomsection\label{appdev/refs/api/krb5_c_valid_cksumtype:krb5_c_valid_cksumtype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_c\_valid\_cksumtype}}{{\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ ctype}}{}
9954
\begin{quote}\begin{description}
9955
\item[{param}] \leavevmode
9956
\textbf{{[}in{]}} \textbf{ctype} - Checksum type
9958
\end{description}\end{quote}
9959
\begin{quote}\begin{description}
9960
\item[{return}] \leavevmode\begin{itemize}
9962
TRUE if ctype is valid, FALSE if not
9966
\end{description}\end{quote}
9969
\subsubsection{krb5\_c\_valid\_enctype - Verify that a specified encryption type is a valid Kerberos encryption type.}
9970
\label{appdev/refs/api/krb5_c_valid_enctype:krb5-c-valid-enctype-verify-that-a-specified-encryption-type-is-a-valid-kerberos-encryption-type}\label{appdev/refs/api/krb5_c_valid_enctype::doc}\index{krb5\_c\_valid\_enctype (C function)}
9972
\begin{fulllineitems}
9973
\phantomsection\label{appdev/refs/api/krb5_c_valid_enctype:krb5_c_valid_enctype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_c\_valid\_enctype}}{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ ktype}}{}
9976
\begin{quote}\begin{description}
9977
\item[{param}] \leavevmode
9978
\textbf{{[}in{]}} \textbf{ktype} - Encryption type
9980
\end{description}\end{quote}
9981
\begin{quote}\begin{description}
9982
\item[{return}] \leavevmode\begin{itemize}
9984
TRUE if ktype is valid, FALSE if not
9988
\end{description}\end{quote}
9991
\subsubsection{krb5\_c\_verify\_checksum - Verify a checksum (operates on keyblock).}
9992
\label{appdev/refs/api/krb5_c_verify_checksum:krb5-c-verify-checksum-verify-a-checksum-operates-on-keyblock}\label{appdev/refs/api/krb5_c_verify_checksum::doc}\index{krb5\_c\_verify\_checksum (C function)}
9994
\begin{fulllineitems}
9995
\phantomsection\label{appdev/refs/api/krb5_c_verify_checksum:krb5_c_verify_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_verify\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}, const {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ cksum}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} *\emph{ valid}}{}
9998
\begin{quote}\begin{description}
9999
\item[{param}] \leavevmode
10000
\textbf{{[}in{]}} \textbf{context} - Library context
10002
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
10004
\textbf{{[}in{]}} \textbf{usage} - \emph{key} usage
10006
\textbf{{[}in{]}} \textbf{data} - Data to be used to compute a new checksum using \emph{key} to compare \emph{cksum} against
10008
\textbf{{[}in{]}} \textbf{cksum} - Checksum to be verified
10010
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
10012
\end{description}\end{quote}
10013
\begin{quote}\begin{description}
10014
\item[{retval}] \leavevmode\begin{itemize}
10016
0 Success; otherwise - Kerberos error codes
10020
\end{description}\end{quote}
10022
This function verifies that \emph{cksum} is a valid checksum for \emph{data} . If the checksum type of \emph{cksum} is a keyed checksum, \emph{key} is used to verify the checksum. The actual checksum key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the checksum type.
10024
\begin{notice}{note}{Note:}
10025
This function is similar to {\hyperref[appdev/refs/api/krb5_k_verify_checksum:krb5_k_verify_checksum]{\code{krb5\_k\_verify\_checksum()}}} , but operates on keyblock \emph{key} .
10029
\subsubsection{krb5\_c\_verify\_checksum\_iov - Validate a checksum element in IOV array (operates on keyblock).}
10030
\label{appdev/refs/api/krb5_c_verify_checksum_iov::doc}\label{appdev/refs/api/krb5_c_verify_checksum_iov:krb5-c-verify-checksum-iov-validate-a-checksum-element-in-iov-array-operates-on-keyblock}\index{krb5\_c\_verify\_checksum\_iov (C function)}
10032
\begin{fulllineitems}
10033
\phantomsection\label{appdev/refs/api/krb5_c_verify_checksum_iov:krb5_c_verify_checksum_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_verify\_checksum\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} *\emph{ valid}}{}
10034
\end{fulllineitems}
10036
\begin{quote}\begin{description}
10037
\item[{param}] \leavevmode
10038
\textbf{{[}in{]}} \textbf{context} - Library context
10040
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
10042
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
10044
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10046
\textbf{{[}in{]}} \textbf{data} - IOV array
10048
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
10050
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
10052
\end{description}\end{quote}
10053
\begin{quote}\begin{description}
10054
\item[{retval}] \leavevmode\begin{itemize}
10056
0 Success; otherwise - Kerberos error codes
10060
\end{description}\end{quote}
10062
Confirm that the checksum in the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM]{\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} element is a valid checksum of the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA]{\code{KRB5\_CRYPTO\_TYPE\_DATA}}} and {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY]{\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}} regions in the iov.
10068
{\hyperref[appdev/refs/api/krb5_c_make_checksum_iov:krb5_c_make_checksum_iov]{\code{krb5\_c\_make\_checksum\_iov()}}}
10072
\begin{notice}{note}{Note:}
10073
This function is similar to {\hyperref[appdev/refs/api/krb5_k_verify_checksum_iov:krb5_k_verify_checksum_iov]{\code{krb5\_k\_verify\_checksum\_iov()}}} , but operates on keyblock \emph{key} .
10077
\subsubsection{krb5\_cksumtype\_to\_string - Convert a checksum type to a string.}
10078
\label{appdev/refs/api/krb5_cksumtype_to_string::doc}\label{appdev/refs/api/krb5_cksumtype_to_string:krb5-cksumtype-to-string-convert-a-checksum-type-to-a-string}\index{krb5\_cksumtype\_to\_string (C function)}
10080
\begin{fulllineitems}
10081
\phantomsection\label{appdev/refs/api/krb5_cksumtype_to_string:krb5_cksumtype_to_string}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cksumtype\_to\_string}}{{\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, char *\emph{ buffer}, size\_t\emph{ buflen}}{}
10082
\end{fulllineitems}
10084
\begin{quote}\begin{description}
10085
\item[{param}] \leavevmode
10086
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type
10088
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold converted checksum type
10090
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
10092
\end{description}\end{quote}
10093
\begin{quote}\begin{description}
10094
\item[{retval}] \leavevmode\begin{itemize}
10096
0 Success; otherwise - Kerberos error codes
10100
\end{description}\end{quote}
10103
\subsubsection{krb5\_decode\_authdata\_container - Unwrap authorization data.}
10104
\label{appdev/refs/api/krb5_decode_authdata_container::doc}\label{appdev/refs/api/krb5_decode_authdata_container:krb5-decode-authdata-container-unwrap-authorization-data}\index{krb5\_decode\_authdata\_container (C function)}
10106
\begin{fulllineitems}
10107
\phantomsection\label{appdev/refs/api/krb5_decode_authdata_container:krb5_decode_authdata_container}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_decode\_authdata\_container}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authdatatype:krb5_authdatatype]{krb5\_authdatatype}}\emph{ type}, const {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *\emph{ container}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ authdata}}{}
10108
\end{fulllineitems}
10110
\begin{quote}\begin{description}
10111
\item[{param}] \leavevmode
10112
\textbf{{[}in{]}} \textbf{context} - Library context
10114
\textbf{{[}in{]}} \textbf{type} - \code{KRB5\_AUTHDATA} type of \emph{container}
10116
\textbf{{[}in{]}} \textbf{container} - Authorization data to be decoded
10118
\textbf{{[}out{]}} \textbf{authdata} - List of decoded authorization data
10120
\end{description}\end{quote}
10121
\begin{quote}\begin{description}
10122
\item[{retval}] \leavevmode\begin{itemize}
10124
0 Success; otherwise - Kerberos error codes
10128
\end{description}\end{quote}
10134
{\hyperref[appdev/refs/api/krb5_encode_authdata_container:krb5_encode_authdata_container]{\code{krb5\_encode\_authdata\_container()}}}
10139
\subsubsection{krb5\_decode\_ticket - Decode an ASN.1-formatted ticket.}
10140
\label{appdev/refs/api/krb5_decode_ticket::doc}\label{appdev/refs/api/krb5_decode_ticket:krb5-decode-ticket-decode-an-asn-1-formatted-ticket}\index{krb5\_decode\_ticket (C function)}
10142
\begin{fulllineitems}
10143
\phantomsection\label{appdev/refs/api/krb5_decode_ticket:krb5_decode_ticket}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_decode\_ticket}}{const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ code}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} **\emph{ rep}}{}
10144
\end{fulllineitems}
10146
\begin{quote}\begin{description}
10147
\item[{param}] \leavevmode
10148
\textbf{{[}in{]}} \textbf{code} - ASN.1-formatted ticket
10150
\textbf{{[}out{]}} \textbf{rep} - Decoded ticket information
10152
\end{description}\end{quote}
10153
\begin{quote}\begin{description}
10154
\item[{retval}] \leavevmode\begin{itemize}
10156
0 Success; otherwise - Kerberos error codes
10160
\end{description}\end{quote}
10163
\subsubsection{krb5\_deltat\_to\_string - Convert a relative time value to a string.}
10164
\label{appdev/refs/api/krb5_deltat_to_string::doc}\label{appdev/refs/api/krb5_deltat_to_string:krb5-deltat-to-string-convert-a-relative-time-value-to-a-string}\index{krb5\_deltat\_to\_string (C function)}
10166
\begin{fulllineitems}
10167
\phantomsection\label{appdev/refs/api/krb5_deltat_to_string:krb5_deltat_to_string}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_deltat\_to\_string}}{{\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}}\emph{ deltat}, char *\emph{ buffer}, size\_t\emph{ buflen}}{}
10168
\end{fulllineitems}
10170
\begin{quote}\begin{description}
10171
\item[{param}] \leavevmode
10172
\textbf{{[}in{]}} \textbf{deltat} - Relative time value to convert
10174
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold time string
10176
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
10178
\end{description}\end{quote}
10179
\begin{quote}\begin{description}
10180
\item[{retval}] \leavevmode\begin{itemize}
10182
0 Success; otherwise - Kerberos error codes
10186
\end{description}\end{quote}
10189
\subsubsection{krb5\_encode\_authdata\_container - Wrap authorization data in a container.}
10190
\label{appdev/refs/api/krb5_encode_authdata_container::doc}\label{appdev/refs/api/krb5_encode_authdata_container:krb5-encode-authdata-container-wrap-authorization-data-in-a-container}\index{krb5\_encode\_authdata\_container (C function)}
10192
\begin{fulllineitems}
10193
\phantomsection\label{appdev/refs/api/krb5_encode_authdata_container:krb5_encode_authdata_container}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_encode\_authdata\_container}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_authdatatype:krb5_authdatatype]{krb5\_authdatatype}}\emph{ type}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} *const *\emph{ authdata}, {\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ***\emph{ container}}{}
10194
\end{fulllineitems}
10196
\begin{quote}\begin{description}
10197
\item[{param}] \leavevmode
10198
\textbf{{[}in{]}} \textbf{context} - Library context
10200
\textbf{{[}in{]}} \textbf{type} - \code{KRB5\_AUTHDATA} type of \emph{container}
10202
\textbf{{[}in{]}} \textbf{authdata} - List of authorization data to be encoded
10204
\textbf{{[}out{]}} \textbf{container} - List of encoded authorization data
10206
\end{description}\end{quote}
10207
\begin{quote}\begin{description}
10208
\item[{retval}] \leavevmode\begin{itemize}
10210
0 Success; otherwise - Kerberos error codes
10214
\end{description}\end{quote}
10216
The result is returned in \emph{container} as a single-element list.
10222
{\hyperref[appdev/refs/api/krb5_decode_authdata_container:krb5_decode_authdata_container]{\code{krb5\_decode\_authdata\_container()}}}
10227
\subsubsection{krb5\_enctype\_to\_name - Convert an encryption type to a name or alias.}
10228
\label{appdev/refs/api/krb5_enctype_to_name::doc}\label{appdev/refs/api/krb5_enctype_to_name:krb5-enctype-to-name-convert-an-encryption-type-to-a-name-or-alias}\index{krb5\_enctype\_to\_name (C function)}
10230
\begin{fulllineitems}
10231
\phantomsection\label{appdev/refs/api/krb5_enctype_to_name:krb5_enctype_to_name}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_enctype\_to\_name}}{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}}\emph{ shortest}, char *\emph{ buffer}, size\_t\emph{ buflen}}{}
10232
\end{fulllineitems}
10234
\begin{quote}\begin{description}
10235
\item[{param}] \leavevmode
10236
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
10238
\textbf{{[}in{]}} \textbf{shortest} - Flag
10240
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold encryption type string
10242
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
10244
\end{description}\end{quote}
10245
\begin{quote}\begin{description}
10246
\item[{retval}] \leavevmode\begin{itemize}
10248
0 Success; otherwise - Kerberos error codes
10252
\end{description}\end{quote}
10254
If \emph{shortest} is FALSE, this function returns the enctype's canonical name (like''aes128-cts-hmac-sha1-96''). If \emph{shortest} is TRUE, it return the enctype's shortest alias (like''aes128-cts'').
10256
\begin{notice}{note}{Note:}
10257
First introduced in 1.9
10261
\subsubsection{krb5\_enctype\_to\_string - Convert an encryption type to a string.}
10262
\label{appdev/refs/api/krb5_enctype_to_string::doc}\label{appdev/refs/api/krb5_enctype_to_string:krb5-enctype-to-string-convert-an-encryption-type-to-a-string}\index{krb5\_enctype\_to\_string (C function)}
10264
\begin{fulllineitems}
10265
\phantomsection\label{appdev/refs/api/krb5_enctype_to_string:krb5_enctype_to_string}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_enctype\_to\_string}}{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}, char *\emph{ buffer}, size\_t\emph{ buflen}}{}
10266
\end{fulllineitems}
10268
\begin{quote}\begin{description}
10269
\item[{param}] \leavevmode
10270
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
10272
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold encryption type string
10274
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
10276
\end{description}\end{quote}
10277
\begin{quote}\begin{description}
10278
\item[{retval}] \leavevmode\begin{itemize}
10280
0 Success; otherwise - Kerberos error codes
10284
\end{description}\end{quote}
10287
\subsubsection{krb5\_free\_checksum - Free a krb5\_checksum structure.}
10288
\label{appdev/refs/api/krb5_free_checksum:krb5-free-checksum-free-a-krb5-checksum-structure}\label{appdev/refs/api/krb5_free_checksum::doc}\index{krb5\_free\_checksum (C function)}
10290
\begin{fulllineitems}
10291
\phantomsection\label{appdev/refs/api/krb5_free_checksum:krb5_free_checksum}\pysiglinewithargsret{void \bfcode{krb5\_free\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ val}}{}
10292
\end{fulllineitems}
10294
\begin{quote}\begin{description}
10295
\item[{param}] \leavevmode
10296
\textbf{{[}in{]}} \textbf{context} - Library context
10298
\textbf{{[}in{]}} \textbf{val} - Checksum structure to be freed
10300
\end{description}\end{quote}
10302
This function frees the contents of \emph{val} and the structure itself.
10305
\subsubsection{krb5\_free\_checksum\_contents - Free the contents of a krb5\_checksum structure.}
10306
\label{appdev/refs/api/krb5_free_checksum_contents:krb5-free-checksum-contents-free-the-contents-of-a-krb5-checksum-structure}\label{appdev/refs/api/krb5_free_checksum_contents::doc}\index{krb5\_free\_checksum\_contents (C function)}
10308
\begin{fulllineitems}
10309
\phantomsection\label{appdev/refs/api/krb5_free_checksum_contents:krb5_free_checksum_contents}\pysiglinewithargsret{void \bfcode{krb5\_free\_checksum\_contents}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, register {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ val}}{}
10310
\end{fulllineitems}
10312
\begin{quote}\begin{description}
10313
\item[{param}] \leavevmode
10314
\textbf{{[}in{]}} \textbf{context} - Library context
10316
\textbf{{[}in{]}} \textbf{val} - Checksum structure to free contents of
10318
\end{description}\end{quote}
10320
This function frees the contents of \emph{val} , but not the structure itself.
10323
\subsubsection{krb5\_free\_cksumtypes - Free an array of checksum types.}
10324
\label{appdev/refs/api/krb5_free_cksumtypes:krb5-free-cksumtypes-free-an-array-of-checksum-types}\label{appdev/refs/api/krb5_free_cksumtypes::doc}\index{krb5\_free\_cksumtypes (C function)}
10326
\begin{fulllineitems}
10327
\phantomsection\label{appdev/refs/api/krb5_free_cksumtypes:krb5_free_cksumtypes}\pysiglinewithargsret{void \bfcode{krb5\_free\_cksumtypes}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}} *\emph{ val}}{}
10328
\end{fulllineitems}
10330
\begin{quote}\begin{description}
10331
\item[{param}] \leavevmode
10332
\textbf{{[}in{]}} \textbf{context} - Library context
10334
\textbf{{[}in{]}} \textbf{val} - Array of checksum types to be freed
10336
\end{description}\end{quote}
10339
\subsubsection{krb5\_free\_tgt\_creds - Free an array of credential structures.}
10340
\label{appdev/refs/api/krb5_free_tgt_creds::doc}\label{appdev/refs/api/krb5_free_tgt_creds:krb5-free-tgt-creds-free-an-array-of-credential-structures}\index{krb5\_free\_tgt\_creds (C function)}
10342
\begin{fulllineitems}
10343
\phantomsection\label{appdev/refs/api/krb5_free_tgt_creds:krb5_free_tgt_creds}\pysiglinewithargsret{void \bfcode{krb5\_free\_tgt\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ tgts}}{}
10344
\end{fulllineitems}
10346
\begin{quote}\begin{description}
10347
\item[{param}] \leavevmode
10348
\textbf{{[}in{]}} \textbf{context} - Library context
10350
\textbf{{[}in{]}} \textbf{tgts} - Null-terminated array of credentials to free
10352
\end{description}\end{quote}
10354
\begin{notice}{note}{Note:}
10355
The last entry in the array \emph{tgts} must be a NULL pointer.
10359
\subsubsection{krb5\_k\_create\_key - Create a krb5\_key from the enctype and key data in a keyblock.}
10360
\label{appdev/refs/api/krb5_k_create_key::doc}\label{appdev/refs/api/krb5_k_create_key:krb5-k-create-key-create-a-krb5-key-from-the-enctype-and-key-data-in-a-keyblock}\index{krb5\_k\_create\_key (C function)}
10362
\begin{fulllineitems}
10363
\phantomsection\label{appdev/refs/api/krb5_k_create_key:krb5_k_create_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_create\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key\_data}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}} *\emph{ out}}{}
10364
\end{fulllineitems}
10366
\begin{quote}\begin{description}
10367
\item[{param}] \leavevmode
10368
\textbf{{[}in{]}} \textbf{context} - Library context
10370
\textbf{{[}in{]}} \textbf{key\_data} - Keyblock
10372
\textbf{{[}out{]}} \textbf{out} - Opaque key
10374
\end{description}\end{quote}
10375
\begin{quote}\begin{description}
10376
\item[{retval}] \leavevmode\begin{itemize}
10378
0 Success; otherwise - KRB5\_BAD\_ENCTYPE
10382
\end{description}\end{quote}
10384
The reference count on a key \emph{out} is set to 1. Use {\hyperref[appdev/refs/api/krb5_k_free_key:krb5_k_free_key]{\code{krb5\_k\_free\_key()}}} to free \emph{out} when it is no longer needed.
10387
\subsubsection{krb5\_k\_decrypt - Decrypt data using a key (operates on opaque key).}
10388
\label{appdev/refs/api/krb5_k_decrypt:krb5-k-decrypt-decrypt-data-using-a-key-operates-on-opaque-key}\label{appdev/refs/api/krb5_k_decrypt::doc}\index{krb5\_k\_decrypt (C function)}
10390
\begin{fulllineitems}
10391
\phantomsection\label{appdev/refs/api/krb5_k_decrypt:krb5_k_decrypt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_decrypt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, const {\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ output}}{}
10392
\end{fulllineitems}
10394
\begin{quote}\begin{description}
10395
\item[{param}] \leavevmode
10396
\textbf{{[}in{]}} \textbf{context} - Library context
10398
\textbf{{[}in{]}} \textbf{key} - Encryption key
10400
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10402
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
10404
\textbf{{[}in{]}} \textbf{input} - Encrypted data
10406
\textbf{{[}out{]}} \textbf{output} - Decrypted data
10408
\end{description}\end{quote}
10409
\begin{quote}\begin{description}
10410
\item[{retval}] \leavevmode\begin{itemize}
10412
0 Success; otherwise - Kerberos error codes
10416
\end{description}\end{quote}
10418
This function decrypts the data block \emph{input} and stores the output into \emph{output} . The actual decryption key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the decryption operation, and is updated with the state to be passed as input to the next operation.
10420
\begin{notice}{note}{Note:}
10421
The caller must initialize \emph{output} and allocate at least enough space for the result. The usual practice is to allocate an output buffer as long as the ciphertext, and let {\hyperref[appdev/refs/api/krb5_c_decrypt:krb5_c_decrypt]{\code{krb5\_c\_decrypt()}}} trim \emph{output-\textgreater{}length} . For some enctypes, the resulting \emph{output-\textgreater{}length} may include padding bytes.
10425
\subsubsection{krb5\_k\_decrypt\_iov - Decrypt data in place supporting AEAD (operates on opaque key).}
10426
\label{appdev/refs/api/krb5_k_decrypt_iov::doc}\label{appdev/refs/api/krb5_k_decrypt_iov:krb5-k-decrypt-iov-decrypt-data-in-place-supporting-aead-operates-on-opaque-key}\index{krb5\_k\_decrypt\_iov (C function)}
10428
\begin{fulllineitems}
10429
\phantomsection\label{appdev/refs/api/krb5_k_decrypt_iov:krb5_k_decrypt_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_decrypt\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
10430
\end{fulllineitems}
10432
\begin{quote}\begin{description}
10433
\item[{param}] \leavevmode
10434
\textbf{{[}in{]}} \textbf{context} - Library context
10436
\textbf{{[}in{]}} \textbf{key} - Encryption key
10438
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10440
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
10442
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
10444
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
10446
\end{description}\end{quote}
10447
\begin{quote}\begin{description}
10448
\item[{retval}] \leavevmode\begin{itemize}
10450
0 Success; otherwise - Kerberos error codes
10454
\end{description}\end{quote}
10456
This function decrypts the data block \emph{data} and stores the output in-place. The actual decryption key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the decryption operation, and is updated with the state to be passed as input to the next operation. The caller must allocate the right number of krb5\_crypto\_iov structures before calling into this API.
10462
{\hyperref[appdev/refs/api/krb5_k_encrypt_iov:krb5_k_encrypt_iov]{\code{krb5\_k\_encrypt\_iov()}}}
10466
\begin{notice}{note}{Note:}
10467
On return from a {\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}} call, the \emph{data-\textgreater{}length} in the iov structure are adjusted to reflect actual lengths of the ciphertext used. For example, if the padding length is too large, the length will be reduced. Lengths are never increased.
10469
This function is similar to {\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}} , but operates on opaque key \emph{key} .
10473
\subsubsection{krb5\_k\_encrypt - Encrypt data using a key (operates on opaque key).}
10474
\label{appdev/refs/api/krb5_k_encrypt:krb5-k-encrypt-encrypt-data-using-a-key-operates-on-opaque-key}\label{appdev/refs/api/krb5_k_encrypt::doc}\index{krb5\_k\_encrypt (C function)}
10476
\begin{fulllineitems}
10477
\phantomsection\label{appdev/refs/api/krb5_k_encrypt:krb5_k_encrypt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_encrypt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} *\emph{ output}}{}
10478
\end{fulllineitems}
10480
\begin{quote}\begin{description}
10481
\item[{param}] \leavevmode
10482
\textbf{{[}in{]}} \textbf{context} - Library context
10484
\textbf{{[}in{]}} \textbf{key} - Encryption key
10486
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10488
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
10490
\textbf{{[}in{]}} \textbf{input} - Data to be encrypted
10492
\textbf{{[}out{]}} \textbf{output} - Encrypted data
10494
\end{description}\end{quote}
10495
\begin{quote}\begin{description}
10496
\item[{retval}] \leavevmode\begin{itemize}
10498
0 Success; otherwise - Kerberos error codes
10502
\end{description}\end{quote}
10504
This function encrypts the data block \emph{input} and stores the output into \emph{output} . The actual encryption key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the encryption operation, and is updated with the state to be passed as input to the next operation.
10506
\begin{notice}{note}{Note:}
10507
The caller must initialize \emph{output} and allocate at least enough space for the result (using {\hyperref[appdev/refs/api/krb5_c_encrypt_length:krb5_c_encrypt_length]{\code{krb5\_c\_encrypt\_length()}}} to determine the amount of space needed). \emph{output-\textgreater{}length} will be set to the actual length of the ciphertext.
10511
\subsubsection{krb5\_k\_encrypt\_iov - Encrypt data in place supporting AEAD (operates on opaque key).}
10512
\label{appdev/refs/api/krb5_k_encrypt_iov::doc}\label{appdev/refs/api/krb5_k_encrypt_iov:krb5-k-encrypt-iov-encrypt-data-in-place-supporting-aead-operates-on-opaque-key}\index{krb5\_k\_encrypt\_iov (C function)}
10514
\begin{fulllineitems}
10515
\phantomsection\label{appdev/refs/api/krb5_k_encrypt_iov:krb5_k_encrypt_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_encrypt\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ cipher\_state}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
10516
\end{fulllineitems}
10518
\begin{quote}\begin{description}
10519
\item[{param}] \leavevmode
10520
\textbf{{[}in{]}} \textbf{context} - Library context
10522
\textbf{{[}in{]}} \textbf{key} - Encryption key
10524
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10526
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
10528
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
10530
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
10532
\end{description}\end{quote}
10533
\begin{quote}\begin{description}
10534
\item[{retval}] \leavevmode\begin{itemize}
10536
0 Success; otherwise - Kerberos error codes
10540
\end{description}\end{quote}
10542
This function encrypts the data block \emph{data} and stores the output in-place. The actual encryption key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the encryption type. If non-null, \emph{cipher\_state} specifies the beginning state for the encryption operation, and is updated with the state to be passed as input to the next operation. The caller must allocate the right number of krb5\_crypto\_iov structures before calling into this API.
10548
{\hyperref[appdev/refs/api/krb5_k_decrypt_iov:krb5_k_decrypt_iov]{\code{krb5\_k\_decrypt\_iov()}}}
10552
\begin{notice}{note}{Note:}
10553
On return from a {\hyperref[appdev/refs/api/krb5_c_encrypt_iov:krb5_c_encrypt_iov]{\code{krb5\_c\_encrypt\_iov()}}} call, the \emph{data-\textgreater{}length} in the iov structure are adjusted to reflect actual lengths of the ciphertext used. For example, if the padding length is too large, the length will be reduced. Lengths are never increased.
10555
This function is similar to {\hyperref[appdev/refs/api/krb5_c_encrypt_iov:krb5_c_encrypt_iov]{\code{krb5\_c\_encrypt\_iov()}}} , but operates on opaque key \emph{key} .
10559
\subsubsection{krb5\_k\_free\_key - Decrement the reference count on a key and free it if it hits zero.}
10560
\label{appdev/refs/api/krb5_k_free_key:krb5-k-free-key-decrement-the-reference-count-on-a-key-and-free-it-if-it-hits-zero}\label{appdev/refs/api/krb5_k_free_key::doc}\index{krb5\_k\_free\_key (C function)}
10562
\begin{fulllineitems}
10563
\phantomsection\label{appdev/refs/api/krb5_k_free_key:krb5_k_free_key}\pysiglinewithargsret{void \bfcode{krb5\_k\_free\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}}{}
10564
\end{fulllineitems}
10566
\begin{quote}\begin{description}
10567
\item[{param}] \leavevmode
10572
\end{description}\end{quote}
10575
\subsubsection{krb5\_k\_key\_enctype - Retrieve the enctype of a krb5\_key structure.}
10576
\label{appdev/refs/api/krb5_k_key_enctype::doc}\label{appdev/refs/api/krb5_k_key_enctype:krb5-k-key-enctype-retrieve-the-enctype-of-a-krb5-key-structure}\index{krb5\_k\_key\_enctype (C function)}
10578
\begin{fulllineitems}
10579
\phantomsection\label{appdev/refs/api/krb5_k_key_enctype:krb5_k_key_enctype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} \bfcode{krb5\_k\_key\_enctype}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}}{}
10580
\end{fulllineitems}
10582
\begin{quote}\begin{description}
10583
\item[{param}] \leavevmode
10588
\end{description}\end{quote}
10591
\subsubsection{krb5\_k\_key\_keyblock - Retrieve a copy of the keyblock from a krb5\_key structure.}
10592
\label{appdev/refs/api/krb5_k_key_keyblock:krb5-k-key-keyblock-retrieve-a-copy-of-the-keyblock-from-a-krb5-key-structure}\label{appdev/refs/api/krb5_k_key_keyblock::doc}\index{krb5\_k\_key\_keyblock (C function)}
10594
\begin{fulllineitems}
10595
\phantomsection\label{appdev/refs/api/krb5_k_key_keyblock:krb5_k_key_keyblock}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_key\_keyblock}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ key\_data}}{}
10596
\end{fulllineitems}
10598
\begin{quote}\begin{description}
10599
\item[{param}] \leavevmode
10606
\end{description}\end{quote}
10609
\subsubsection{krb5\_k\_make\_checksum - Compute a checksum (operates on opaque key).}
10610
\label{appdev/refs/api/krb5_k_make_checksum::doc}\label{appdev/refs/api/krb5_k_make_checksum:krb5-k-make-checksum-compute-a-checksum-operates-on-opaque-key}\index{krb5\_k\_make\_checksum (C function)}
10612
\begin{fulllineitems}
10613
\phantomsection\label{appdev/refs/api/krb5_k_make_checksum:krb5_k_make_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_make\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ cksum}}{}
10614
\end{fulllineitems}
10616
\begin{quote}\begin{description}
10617
\item[{param}] \leavevmode
10618
\textbf{{[}in{]}} \textbf{context} - Library context
10620
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
10622
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
10624
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10626
\textbf{{[}in{]}} \textbf{input} - Input data
10628
\textbf{{[}out{]}} \textbf{cksum} - Generated checksum
10630
\end{description}\end{quote}
10631
\begin{quote}\begin{description}
10632
\item[{retval}] \leavevmode\begin{itemize}
10634
0 Success; otherwise - Kerberos error codes
10638
\end{description}\end{quote}
10640
This function computes a checksum of type \emph{cksumtype} over \emph{input} , using \emph{key} if the checksum type is a keyed checksum. If \emph{cksumtype} is 0 and \emph{key} is non-null, the checksum type will be the mandatory-to-implement checksum type for the key's encryption type. The actual checksum key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the checksum type. The newly created \emph{cksum} must be released by calling {\hyperref[appdev/refs/api/krb5_free_checksum_contents:krb5_free_checksum_contents]{\code{krb5\_free\_checksum\_contents()}}} when it is no longer needed.
10646
{\hyperref[appdev/refs/api/krb5_c_verify_checksum:krb5_c_verify_checksum]{\code{krb5\_c\_verify\_checksum()}}}
10650
\begin{notice}{note}{Note:}
10651
This function is similar to {\hyperref[appdev/refs/api/krb5_c_make_checksum:krb5_c_make_checksum]{\code{krb5\_c\_make\_checksum()}}} , but operates on opaque \emph{key} .
10655
\subsubsection{krb5\_k\_make\_checksum\_iov - Fill in a checksum element in IOV array (operates on opaque key)}
10656
\label{appdev/refs/api/krb5_k_make_checksum_iov::doc}\label{appdev/refs/api/krb5_k_make_checksum_iov:krb5-k-make-checksum-iov-fill-in-a-checksum-element-in-iov-array-operates-on-opaque-key}\index{krb5\_k\_make\_checksum\_iov (C function)}
10658
\begin{fulllineitems}
10659
\phantomsection\label{appdev/refs/api/krb5_k_make_checksum_iov:krb5_k_make_checksum_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_make\_checksum\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}}{}
10660
\end{fulllineitems}
10662
\begin{quote}\begin{description}
10663
\item[{param}] \leavevmode
10664
\textbf{{[}in{]}} \textbf{context} - Library context
10666
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
10668
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
10670
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10672
\textbf{{[}inout{]}} \textbf{data} - IOV array
10674
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
10676
\end{description}\end{quote}
10677
\begin{quote}\begin{description}
10678
\item[{retval}] \leavevmode\begin{itemize}
10680
0 Success; otherwise - Kerberos error codes
10684
\end{description}\end{quote}
10686
Create a checksum in the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM]{\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} element over {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA]{\code{KRB5\_CRYPTO\_TYPE\_DATA}}} and {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY]{\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}} chunks in \emph{data} . Only the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM]{\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} region is modified.
10692
{\hyperref[appdev/refs/api/krb5_k_verify_checksum_iov:krb5_k_verify_checksum_iov]{\code{krb5\_k\_verify\_checksum\_iov()}}}
10696
\begin{notice}{note}{Note:}
10697
This function is similar to {\hyperref[appdev/refs/api/krb5_c_make_checksum_iov:krb5_c_make_checksum_iov]{\code{krb5\_c\_make\_checksum\_iov()}}} , but operates on opaque \emph{key} .
10701
\subsubsection{krb5\_k\_prf - Generate enctype-specific pseudo-random bytes (operates on opaque key).}
10702
\label{appdev/refs/api/krb5_k_prf:krb5-k-prf-generate-enctype-specific-pseudo-random-bytes-operates-on-opaque-key}\label{appdev/refs/api/krb5_k_prf::doc}\index{krb5\_k\_prf (C function)}
10704
\begin{fulllineitems}
10705
\phantomsection\label{appdev/refs/api/krb5_k_prf:krb5_k_prf}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_prf}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ input}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ output}}{}
10706
\end{fulllineitems}
10708
\begin{quote}\begin{description}
10709
\item[{param}] \leavevmode
10710
\textbf{{[}in{]}} \textbf{context} - Library context
10712
\textbf{{[}in{]}} \textbf{key} - Key
10714
\textbf{{[}in{]}} \textbf{input} - Input data
10716
\textbf{{[}out{]}} \textbf{output} - Output data
10718
\end{description}\end{quote}
10719
\begin{quote}\begin{description}
10720
\item[{retval}] \leavevmode\begin{itemize}
10722
0 Success; otherwise - Kerberos error codes
10726
\end{description}\end{quote}
10728
This function selects a pseudo-random function based on \emph{key} and computes its value over \emph{input} , placing the result into \emph{output} . The caller must preinitialize \emph{output} and allocate space for the result.
10730
\begin{notice}{note}{Note:}
10731
This function is similar to {\hyperref[appdev/refs/api/krb5_c_prf:krb5_c_prf]{\code{krb5\_c\_prf()}}} , but operates on opaque \emph{key} .
10735
\subsubsection{krb5\_k\_reference\_key - Increment the reference count on a key.}
10736
\label{appdev/refs/api/krb5_k_reference_key::doc}\label{appdev/refs/api/krb5_k_reference_key:krb5-k-reference-key-increment-the-reference-count-on-a-key}\index{krb5\_k\_reference\_key (C function)}
10738
\begin{fulllineitems}
10739
\phantomsection\label{appdev/refs/api/krb5_k_reference_key:krb5_k_reference_key}\pysiglinewithargsret{void \bfcode{krb5\_k\_reference\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}}{}
10740
\end{fulllineitems}
10742
\begin{quote}\begin{description}
10743
\item[{param}] \leavevmode
10748
\end{description}\end{quote}
10751
\subsubsection{krb5\_k\_verify\_checksum - Verify a checksum (operates on opaque key).}
10752
\label{appdev/refs/api/krb5_k_verify_checksum::doc}\label{appdev/refs/api/krb5_k_verify_checksum:krb5-k-verify-checksum-verify-a-checksum-operates-on-opaque-key}\index{krb5\_k\_verify\_checksum (C function)}
10754
\begin{fulllineitems}
10755
\phantomsection\label{appdev/refs/api/krb5_k_verify_checksum:krb5_k_verify_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_verify\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}, const {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ cksum}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} *\emph{ valid}}{}
10756
\end{fulllineitems}
10758
\begin{quote}\begin{description}
10759
\item[{param}] \leavevmode
10760
\textbf{{[}in{]}} \textbf{context} - Library context
10762
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
10764
\textbf{{[}in{]}} \textbf{usage} - \emph{key} usage
10766
\textbf{{[}in{]}} \textbf{data} - Data to be used to compute a new checksum using \emph{key} to compare \emph{cksum} against
10768
\textbf{{[}in{]}} \textbf{cksum} - Checksum to be verified
10770
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
10772
\end{description}\end{quote}
10773
\begin{quote}\begin{description}
10774
\item[{retval}] \leavevmode\begin{itemize}
10776
0 Success; otherwise - Kerberos error codes
10780
\end{description}\end{quote}
10782
This function verifies that \emph{cksum} is a valid checksum for \emph{data} . If the checksum type of \emph{cksum} is a keyed checksum, \emph{key} is used to verify the checksum. The actual checksum key will be derived from \emph{key} and \emph{usage} if key derivation is specified for the checksum type.
10784
\begin{notice}{note}{Note:}
10785
This function is similar to {\hyperref[appdev/refs/api/krb5_c_verify_checksum:krb5_c_verify_checksum]{\code{krb5\_c\_verify\_checksum()}}} , but operates on opaque \emph{key} .
10789
\subsubsection{krb5\_k\_verify\_checksum\_iov - Validate a checksum element in IOV array (operates on opaque key).}
10790
\label{appdev/refs/api/krb5_k_verify_checksum_iov:krb5-k-verify-checksum-iov-validate-a-checksum-element-in-iov-array-operates-on-opaque-key}\label{appdev/refs/api/krb5_k_verify_checksum_iov::doc}\index{krb5\_k\_verify\_checksum\_iov (C function)}
10792
\begin{fulllineitems}
10793
\phantomsection\label{appdev/refs/api/krb5_k_verify_checksum_iov:krb5_k_verify_checksum_iov}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_k\_verify\_checksum\_iov}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ cksumtype}, {\hyperref[appdev/refs/types/krb5_key:krb5_key]{krb5\_key}}\emph{ key}, {\hyperref[appdev/refs/types/krb5_keyusage:krb5_keyusage]{krb5\_keyusage}}\emph{ usage}, const {\hyperref[appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov]{krb5\_crypto\_iov}} *\emph{ data}, size\_t\emph{ num\_data}, {\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} *\emph{ valid}}{}
10794
\end{fulllineitems}
10796
\begin{quote}\begin{description}
10797
\item[{param}] \leavevmode
10798
\textbf{{[}in{]}} \textbf{context} - Library context
10800
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
10802
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
10804
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
10806
\textbf{{[}in{]}} \textbf{data} - IOV array
10808
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
10810
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
10812
\end{description}\end{quote}
10813
\begin{quote}\begin{description}
10814
\item[{retval}] \leavevmode\begin{itemize}
10816
0 Success; otherwise - Kerberos error codes
10820
\end{description}\end{quote}
10822
Confirm that the checksum in the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM]{\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} element is a valid checksum of the {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA]{\code{KRB5\_CRYPTO\_TYPE\_DATA}}} and {\hyperref[appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY]{\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}} regions in the iov.
10828
{\hyperref[appdev/refs/api/krb5_k_make_checksum_iov:krb5_k_make_checksum_iov]{\code{krb5\_k\_make\_checksum\_iov()}}}
10832
\begin{notice}{note}{Note:}
10833
This function is similar to {\hyperref[appdev/refs/api/krb5_c_verify_checksum_iov:krb5_c_verify_checksum_iov]{\code{krb5\_c\_verify\_checksum\_iov()}}} , but operates on opaque \emph{key} .
10837
\subsection{Legacy convenience interfaces}
10838
\label{appdev/refs/api/index:legacy-convenience-interfaces}
10840
\subsubsection{krb5\_recvauth - Server function for sendauth protocol.}
10841
\label{appdev/refs/api/krb5_recvauth::doc}\label{appdev/refs/api/krb5_recvauth:krb5-recvauth-server-function-for-sendauth-protocol}\index{krb5\_recvauth (C function)}
10843
\begin{fulllineitems}
10844
\phantomsection\label{appdev/refs/api/krb5_recvauth:krb5_recvauth}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_recvauth}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ fd}, char *\emph{ appl\_version}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}}\emph{ flags}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} **\emph{ ticket}}{}
10845
\end{fulllineitems}
10847
\begin{quote}\begin{description}
10848
\item[{param}] \leavevmode
10849
\textbf{{[}in{]}} \textbf{context} - Library context
10851
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
10853
\textbf{{[}in{]}} \textbf{fd} - File descriptor
10855
\textbf{{[}in{]}} \textbf{appl\_version} - Application protocol version to be matched against the client's application version
10857
\textbf{{[}in{]}} \textbf{server} - Server principal (NULL for any in \emph{keytab} )
10859
\textbf{{[}in{]}} \textbf{flags} - Additional specifications
10861
\textbf{{[}in{]}} \textbf{keytab} - Key table containing service keys
10863
\textbf{{[}out{]}} \textbf{ticket} - Ticket (NULL if not needed)
10865
\end{description}\end{quote}
10866
\begin{quote}\begin{description}
10867
\item[{retval}] \leavevmode\begin{itemize}
10869
0 Success; otherwise - Kerberos error codes
10873
\end{description}\end{quote}
10875
This function performs the srever side of a sendauth/recvauth exchange by sending and receiving messages over \emph{fd} .
10877
Use {\hyperref[appdev/refs/api/krb5_free_ticket:krb5_free_ticket]{\code{krb5\_free\_ticket()}}} to free \emph{ticket} when it is no longer needed.
10883
{\hyperref[appdev/refs/api/krb5_sendauth:krb5_sendauth]{\code{krb5\_sendauth()}}}
10888
\subsubsection{krb5\_recvauth\_version - Server function for sendauth protocol with version parameter.}
10889
\label{appdev/refs/api/krb5_recvauth_version::doc}\label{appdev/refs/api/krb5_recvauth_version:krb5-recvauth-version-server-function-for-sendauth-protocol-with-version-parameter}\index{krb5\_recvauth\_version (C function)}
10891
\begin{fulllineitems}
10892
\phantomsection\label{appdev/refs/api/krb5_recvauth_version:krb5_recvauth_version}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_recvauth\_version}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ fd}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}}\emph{ flags}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ keytab}, {\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} **\emph{ ticket}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ version}}{}
10893
\end{fulllineitems}
10895
\begin{quote}\begin{description}
10896
\item[{param}] \leavevmode
10897
\textbf{{[}in{]}} \textbf{context} - Library context
10899
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
10901
\textbf{{[}in{]}} \textbf{fd} - File descriptor
10903
\textbf{{[}in{]}} \textbf{server} - Server principal (NULL for any in \emph{keytab} )
10905
\textbf{{[}in{]}} \textbf{flags} - Additional specifications
10907
\textbf{{[}in{]}} \textbf{keytab} - Decryption key
10909
\textbf{{[}out{]}} \textbf{ticket} - Ticket (NULL if not needed)
10911
\textbf{{[}out{]}} \textbf{version} - sendauth protocol version (NULL if not needed)
10913
\end{description}\end{quote}
10914
\begin{quote}\begin{description}
10915
\item[{retval}] \leavevmode\begin{itemize}
10917
0 Success; otherwise - Kerberos error codes
10921
\end{description}\end{quote}
10923
This function is similar to {\hyperref[appdev/refs/api/krb5_recvauth:krb5_recvauth]{\code{krb5\_recvauth()}}} with the additional output information place into \emph{version} .
10926
\subsubsection{krb5\_sendauth - Client function for sendauth protocol.}
10927
\label{appdev/refs/api/krb5_sendauth:krb5-sendauth-client-function-for-sendauth-protocol}\label{appdev/refs/api/krb5_sendauth::doc}\index{krb5\_sendauth (C function)}
10929
\begin{fulllineitems}
10930
\phantomsection\label{appdev/refs/api/krb5_sendauth:krb5_sendauth}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_sendauth}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}} *\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ fd}, char *\emph{ appl\_version}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ client}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ server}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ ap\_req\_options}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ in\_data}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ in\_creds}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_error:krb5_error]{krb5\_error}} **\emph{ error}, {\hyperref[appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part]{krb5\_ap\_rep\_enc\_part}} **\emph{ rep\_result}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ out\_creds}}{}
10931
\end{fulllineitems}
10933
\begin{quote}\begin{description}
10934
\item[{param}] \leavevmode
10935
\textbf{{[}in{]}} \textbf{context} - Library context
10937
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
10939
\textbf{{[}in{]}} \textbf{fd} - File descriptor that describes network socket
10941
\textbf{{[}in{]}} \textbf{appl\_version} - Application protocol version to be matched with the receiver's application version
10943
\textbf{{[}in{]}} \textbf{client} - Client principal
10945
\textbf{{[}in{]}} \textbf{server} - Server principal
10947
\textbf{{[}in{]}} \textbf{ap\_req\_options} - \code{AP\_OPTS} options
10949
\textbf{{[}in{]}} \textbf{in\_data} - Data to be sent to the server
10951
\textbf{{[}in{]}} \textbf{in\_creds} - Input credentials, or NULL to use \emph{ccache}
10953
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
10955
\textbf{{[}out{]}} \textbf{error} - If non-null, contains KRB\_ERROR message returned from server
10957
\textbf{{[}out{]}} \textbf{rep\_result} - If non-null and \emph{ap\_req\_options} is {\hyperref[appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED]{\code{AP\_OPTS\_MUTUAL\_REQUIRED}}} , contains the result of mutual authentication exchange
10959
\textbf{{[}out{]}} \textbf{out\_creds} - If non-null, the retrieved credentials
10961
\end{description}\end{quote}
10962
\begin{quote}\begin{description}
10963
\item[{retval}] \leavevmode\begin{itemize}
10965
0 Success; otherwise - Kerberos error codes
10969
\end{description}\end{quote}
10971
This function performs the client side of a sendauth/recvauth exchange by sending and receiving messages over \emph{fd} .
10973
Credentials may be specified in three ways:
10977
If \emph{in\_creds} is NULL, credentials are obtained with {\hyperref[appdev/refs/api/krb5_get_credentials:krb5_get_credentials]{\code{krb5\_get\_credentials()}}} using the principals \emph{client} and \emph{server} . \emph{server} must be non-null; \emph{client} may NULL to use the default principal of \emph{ccache} .
10980
If \emph{in\_creds} is non-null, but does not contain a ticket, credentials for the exchange are obtained with {\hyperref[appdev/refs/api/krb5_get_credentials:krb5_get_credentials]{\code{krb5\_get\_credentials()}}} using \emph{in\_creds} . In this case, the values of \emph{client} and \emph{server} are unused.
10983
If \emph{in\_creds} is a complete credentials structure, it used directly. In this case, the values of \emph{client} , \emph{server} , and \emph{ccache} are unused.
10987
If the server is using a different application protocol than that specified in \emph{appl\_version} , an error will be returned.
10990
Use {\hyperref[appdev/refs/api/krb5_free_creds:krb5_free_creds]{\code{krb5\_free\_creds()}}} to free \emph{out\_creds} , {\hyperref[appdev/refs/api/krb5_free_ap_rep_enc_part:krb5_free_ap_rep_enc_part]{\code{krb5\_free\_ap\_rep\_enc\_part()}}} to free \emph{rep\_result} , and {\hyperref[appdev/refs/api/krb5_free_error:krb5_free_error]{\code{krb5\_free\_error()}}} to free \emph{error} when they are no longer needed.
10996
{\hyperref[appdev/refs/api/krb5_recvauth:krb5_recvauth]{\code{krb5\_recvauth()}}}
11001
\subsection{Deprecated public interfaces}
11002
\label{appdev/refs/api/index:deprecated-public-interfaces}
11004
\subsubsection{krb5\_524\_convert\_creds - Convert a Kerberos V5 credentials to a Kerberos V4 credentials.}
11005
\label{appdev/refs/api/krb5_524_convert_creds:krb5-524-convert-creds-convert-a-kerberos-v5-credentials-to-a-kerberos-v4-credentials}\label{appdev/refs/api/krb5_524_convert_creds::doc}\index{krb5\_524\_convert\_creds (C function)}
11007
\begin{fulllineitems}
11008
\phantomsection\label{appdev/refs/api/krb5_524_convert_creds:krb5_524_convert_creds}\pysiglinewithargsret{int \bfcode{krb5\_524\_convert\_creds}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ v5creds}, struct credentials *\emph{ v4creds}}{}
11009
\end{fulllineitems}
11011
\begin{quote}\begin{description}
11012
\item[{param}] \leavevmode
11019
\end{description}\end{quote}
11020
\begin{quote}\begin{description}
11021
\item[{retval}] \leavevmode\begin{itemize}
11023
KRB524\_KRB4\_DISABLED (always)
11027
\end{description}\end{quote}
11029
\begin{notice}{note}{Note:}
11034
\subsubsection{krb5\_auth\_con\_getlocalsubkey}
11035
\label{appdev/refs/api/krb5_auth_con_getlocalsubkey::doc}\label{appdev/refs/api/krb5_auth_con_getlocalsubkey:krb5-auth-con-getlocalsubkey}\index{krb5\_auth\_con\_getlocalsubkey (C function)}
11037
\begin{fulllineitems}
11038
\phantomsection\label{appdev/refs/api/krb5_auth_con_getlocalsubkey:krb5_auth_con_getlocalsubkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getlocalsubkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ keyblock}}{}
11039
\end{fulllineitems}
11041
\begin{quote}\begin{description}
11042
\item[{param}] \leavevmode
11045
\textbf{auth\_context}
11049
\end{description}\end{quote}
11051
DEPRECATED Replaced by krb5\_auth\_con\_getsendsubkey() .
11054
\subsubsection{krb5\_auth\_con\_getremotesubkey}
11055
\label{appdev/refs/api/krb5_auth_con_getremotesubkey::doc}\label{appdev/refs/api/krb5_auth_con_getremotesubkey:krb5-auth-con-getremotesubkey}\index{krb5\_auth\_con\_getremotesubkey (C function)}
11057
\begin{fulllineitems}
11058
\phantomsection\label{appdev/refs/api/krb5_auth_con_getremotesubkey:krb5_auth_con_getremotesubkey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_getremotesubkey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ keyblock}}{}
11059
\end{fulllineitems}
11061
\begin{quote}\begin{description}
11062
\item[{param}] \leavevmode
11065
\textbf{auth\_context}
11069
\end{description}\end{quote}
11071
DEPRECATED Replaced by krb5\_auth\_con\_getrecvsubkey() .
11074
\subsubsection{krb5\_auth\_con\_initivector}
11075
\label{appdev/refs/api/krb5_auth_con_initivector:krb5-auth-con-initivector}\label{appdev/refs/api/krb5_auth_con_initivector::doc}\index{krb5\_auth\_con\_initivector (C function)}
11077
\begin{fulllineitems}
11078
\phantomsection\label{appdev/refs/api/krb5_auth_con_initivector:krb5_auth_con_initivector}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_auth\_con\_initivector}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_auth_context:krb5_auth_context]{krb5\_auth\_context}}\emph{ auth\_context}}{}
11079
\end{fulllineitems}
11081
\begin{quote}\begin{description}
11082
\item[{param}] \leavevmode
11085
\textbf{auth\_context}
11087
\end{description}\end{quote}
11089
DEPRECATED Not replaced.
11091
RFC 4120 doesn't have anything like the initvector concept; only really old protocols may need this API.
11094
\subsubsection{krb5\_build\_principal\_va}
11095
\label{appdev/refs/api/krb5_build_principal_va:krb5-build-principal-va}\label{appdev/refs/api/krb5_build_principal_va::doc}\index{krb5\_build\_principal\_va (C function)}
11097
\begin{fulllineitems}
11098
\phantomsection\label{appdev/refs/api/krb5_build_principal_va:krb5_build_principal_va}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_build\_principal\_va}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}}\emph{ princ}, unsigned int\emph{ rlen}, const char *\emph{ realm}, va\_list\emph{ ap}}{}
11099
\end{fulllineitems}
11101
\begin{quote}\begin{description}
11102
\item[{param}] \leavevmode
11113
\end{description}\end{quote}
11115
DEPRECATED Replaced by krb5\_build\_principal\_alloc\_va() .
11118
\subsubsection{krb5\_c\_random\_seed}
11119
\label{appdev/refs/api/krb5_c_random_seed:krb5-c-random-seed}\label{appdev/refs/api/krb5_c_random_seed::doc}\index{krb5\_c\_random\_seed (C function)}
11121
\begin{fulllineitems}
11122
\phantomsection\label{appdev/refs/api/krb5_c_random_seed:krb5_c_random_seed}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_c\_random\_seed}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}}{}
11123
\end{fulllineitems}
11125
\begin{quote}\begin{description}
11126
\item[{param}] \leavevmode
11131
\end{description}\end{quote}
11133
DEPRECATED Replaced by krb5\_c\_* API family.
11136
\subsubsection{krb5\_calculate\_checksum}
11137
\label{appdev/refs/api/krb5_calculate_checksum:krb5-calculate-checksum}\label{appdev/refs/api/krb5_calculate_checksum::doc}\index{krb5\_calculate\_checksum (C function)}
11139
\begin{fulllineitems}
11140
\phantomsection\label{appdev/refs/api/krb5_calculate_checksum:krb5_calculate_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_calculate\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ ctype}, {\hyperref[appdev/refs/types/krb5_const_pointer:krb5_const_pointer]{krb5\_const\_pointer}}\emph{ in}, size\_t\emph{ in\_length}, {\hyperref[appdev/refs/types/krb5_const_pointer:krb5_const_pointer]{krb5\_const\_pointer}}\emph{ seed}, size\_t\emph{ seed\_length}, {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ outcksum}}{}
11141
\end{fulllineitems}
11143
\begin{quote}\begin{description}
11144
\item[{param}] \leavevmode
11151
\textbf{in\_length}
11155
\textbf{seed\_length}
11159
\end{description}\end{quote}
11161
DEPRECATED See krb5\_c\_make\_checksum()
11164
\subsubsection{krb5\_checksum\_size}
11165
\label{appdev/refs/api/krb5_checksum_size:krb5-checksum-size}\label{appdev/refs/api/krb5_checksum_size::doc}\index{krb5\_checksum\_size (C function)}
11167
\begin{fulllineitems}
11168
\phantomsection\label{appdev/refs/api/krb5_checksum_size:krb5_checksum_size}\pysiglinewithargsret{size\_t \bfcode{krb5\_checksum\_size}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ ctype}}{}
11169
\end{fulllineitems}
11171
\begin{quote}\begin{description}
11172
\item[{param}] \leavevmode
11177
\end{description}\end{quote}
11179
DEPRECATED See krb5\_c\_checksum\_length()
11182
\subsubsection{krb5\_encrypt}
11183
\label{appdev/refs/api/krb5_encrypt:krb5-encrypt}\label{appdev/refs/api/krb5_encrypt::doc}\index{krb5\_encrypt (C function)}
11185
\begin{fulllineitems}
11186
\phantomsection\label{appdev/refs/api/krb5_encrypt:krb5_encrypt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_encrypt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_pointer:krb5_const_pointer]{krb5\_const\_pointer}}\emph{ inptr}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ outptr}, size\_t\emph{ size}, {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ ivec}}{}
11187
\end{fulllineitems}
11189
\begin{quote}\begin{description}
11190
\item[{param}] \leavevmode
11203
\end{description}\end{quote}
11205
DEPRECATED Replaced by krb5\_c\_* API family.
11208
\subsubsection{krb5\_decrypt}
11209
\label{appdev/refs/api/krb5_decrypt:krb5-decrypt}\label{appdev/refs/api/krb5_decrypt::doc}\index{krb5\_decrypt (C function)}
11211
\begin{fulllineitems}
11212
\phantomsection\label{appdev/refs/api/krb5_decrypt:krb5_decrypt}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_decrypt}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_const_pointer:krb5_const_pointer]{krb5\_const\_pointer}}\emph{ inptr}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ outptr}, size\_t\emph{ size}, {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ ivec}}{}
11213
\end{fulllineitems}
11215
\begin{quote}\begin{description}
11216
\item[{param}] \leavevmode
11229
\end{description}\end{quote}
11231
DEPRECATED Replaced by krb5\_c\_* API family.
11234
\subsubsection{krb5\_eblock\_enctype}
11235
\label{appdev/refs/api/krb5_eblock_enctype::doc}\label{appdev/refs/api/krb5_eblock_enctype:krb5-eblock-enctype}\index{krb5\_eblock\_enctype (C function)}
11237
\begin{fulllineitems}
11238
\phantomsection\label{appdev/refs/api/krb5_eblock_enctype:krb5_eblock_enctype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} \bfcode{krb5\_eblock\_enctype}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}}{}
11239
\end{fulllineitems}
11241
\begin{quote}\begin{description}
11242
\item[{param}] \leavevmode
11247
\end{description}\end{quote}
11249
DEPRECATED Replaced by krb5\_c\_* API family.
11252
\subsubsection{krb5\_encrypt\_size}
11253
\label{appdev/refs/api/krb5_encrypt_size:krb5-encrypt-size}\label{appdev/refs/api/krb5_encrypt_size::doc}\index{krb5\_encrypt\_size (C function)}
11255
\begin{fulllineitems}
11256
\phantomsection\label{appdev/refs/api/krb5_encrypt_size:krb5_encrypt_size}\pysiglinewithargsret{size\_t \bfcode{krb5\_encrypt\_size}}{size\_t\emph{ length}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ crypto}}{}
11257
\end{fulllineitems}
11259
\begin{quote}\begin{description}
11260
\item[{param}] \leavevmode
11265
\end{description}\end{quote}
11267
DEPRECATED Replaced by krb5\_c\_* API family.
11270
\subsubsection{krb5\_finish\_key}
11271
\label{appdev/refs/api/krb5_finish_key:krb5-finish-key}\label{appdev/refs/api/krb5_finish_key::doc}\index{krb5\_finish\_key (C function)}
11273
\begin{fulllineitems}
11274
\phantomsection\label{appdev/refs/api/krb5_finish_key:krb5_finish_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_finish\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}}{}
11275
\end{fulllineitems}
11277
\begin{quote}\begin{description}
11278
\item[{param}] \leavevmode
11283
\end{description}\end{quote}
11285
DEPRECATED Replaced by krb5\_c\_* API family.
11288
\subsubsection{krb5\_finish\_random\_key}
11289
\label{appdev/refs/api/krb5_finish_random_key:krb5-finish-random-key}\label{appdev/refs/api/krb5_finish_random_key::doc}\index{krb5\_finish\_random\_key (C function)}
11291
\begin{fulllineitems}
11292
\phantomsection\label{appdev/refs/api/krb5_finish_random_key:krb5_finish_random_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_finish\_random\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}} *\emph{ ptr}}{}
11293
\end{fulllineitems}
11295
\begin{quote}\begin{description}
11296
\item[{param}] \leavevmode
11303
\end{description}\end{quote}
11305
DEPRECATED Replaced by krb5\_c\_* API family.
11308
\subsubsection{krb5\_cc\_gen\_new}
11309
\label{appdev/refs/api/krb5_cc_gen_new:krb5-cc-gen-new}\label{appdev/refs/api/krb5_cc_gen_new::doc}\index{krb5\_cc\_gen\_new (C function)}
11311
\begin{fulllineitems}
11312
\phantomsection\label{appdev/refs/api/krb5_cc_gen_new:krb5_cc_gen_new}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_cc\_gen\_new}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}} *\emph{ cache}}{}
11313
\end{fulllineitems}
11315
\begin{quote}\begin{description}
11316
\item[{param}] \leavevmode
11321
\end{description}\end{quote}
11324
\subsubsection{krb5\_get\_credentials\_renew}
11325
\label{appdev/refs/api/krb5_get_credentials_renew:krb5-get-credentials-renew}\label{appdev/refs/api/krb5_get_credentials_renew::doc}\index{krb5\_get\_credentials\_renew (C function)}
11327
\begin{fulllineitems}
11328
\phantomsection\label{appdev/refs/api/krb5_get_credentials_renew:krb5_get_credentials_renew}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_credentials\_renew}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ in\_creds}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ out\_creds}}{}
11329
\end{fulllineitems}
11331
\begin{quote}\begin{description}
11332
\item[{param}] \leavevmode
11341
\textbf{out\_creds}
11343
\end{description}\end{quote}
11345
DEPRECATED Replaced by krb5\_get\_renewed\_creds.
11348
\subsubsection{krb5\_get\_credentials\_validate}
11349
\label{appdev/refs/api/krb5_get_credentials_validate:krb5-get-credentials-validate}\label{appdev/refs/api/krb5_get_credentials_validate::doc}\index{krb5\_get\_credentials\_validate (C function)}
11351
\begin{fulllineitems}
11352
\phantomsection\label{appdev/refs/api/krb5_get_credentials_validate:krb5_get_credentials_validate}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_credentials\_validate}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ in\_creds}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} **\emph{ out\_creds}}{}
11353
\end{fulllineitems}
11355
\begin{quote}\begin{description}
11356
\item[{param}] \leavevmode
11365
\textbf{out\_creds}
11367
\end{description}\end{quote}
11369
DEPRECATED Replaced by krb5\_get\_validated\_creds.
11372
\subsubsection{krb5\_get\_in\_tkt\_with\_password}
11373
\label{appdev/refs/api/krb5_get_in_tkt_with_password:krb5-get-in-tkt-with-password}\label{appdev/refs/api/krb5_get_in_tkt_with_password::doc}\index{krb5\_get\_in\_tkt\_with\_password (C function)}
11375
\begin{fulllineitems}
11376
\phantomsection\label{appdev/refs/api/krb5_get_in_tkt_with_password:krb5_get_in_tkt_with_password}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_in\_tkt\_with\_password}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *const *\emph{ addrs}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} *\emph{ ktypes}, {\hyperref[appdev/refs/types/krb5_preauthtype:krb5_preauthtype]{krb5\_preauthtype}} *\emph{ pre\_auth\_types}, const char *\emph{ password}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep]{krb5\_kdc\_rep}} **\emph{ ret\_as\_reply}}{}
11377
\end{fulllineitems}
11379
\begin{quote}\begin{description}
11380
\item[{param}] \leavevmode
11389
\textbf{pre\_auth\_types}
11397
\textbf{ret\_as\_reply}
11399
\end{description}\end{quote}
11401
DEPRECATED Replaced by krb5\_get\_init\_creds\_password() .
11404
\subsubsection{krb5\_get\_in\_tkt\_with\_skey}
11405
\label{appdev/refs/api/krb5_get_in_tkt_with_skey:krb5-get-in-tkt-with-skey}\label{appdev/refs/api/krb5_get_in_tkt_with_skey::doc}\index{krb5\_get\_in\_tkt\_with\_skey (C function)}
11407
\begin{fulllineitems}
11408
\phantomsection\label{appdev/refs/api/krb5_get_in_tkt_with_skey:krb5_get_in_tkt_with_skey}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_in\_tkt\_with\_skey}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *const *\emph{ addrs}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} *\emph{ ktypes}, {\hyperref[appdev/refs/types/krb5_preauthtype:krb5_preauthtype]{krb5\_preauthtype}} *\emph{ pre\_auth\_types}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep]{krb5\_kdc\_rep}} **\emph{ ret\_as\_reply}}{}
11409
\end{fulllineitems}
11411
\begin{quote}\begin{description}
11412
\item[{param}] \leavevmode
11421
\textbf{pre\_auth\_types}
11429
\textbf{ret\_as\_reply}
11431
\end{description}\end{quote}
11433
DEPRECATED Replaced by krb5\_get\_init\_creds().
11436
\subsubsection{krb5\_get\_in\_tkt\_with\_keytab}
11437
\label{appdev/refs/api/krb5_get_in_tkt_with_keytab:krb5-get-in-tkt-with-keytab}\label{appdev/refs/api/krb5_get_in_tkt_with_keytab::doc}\index{krb5\_get\_in\_tkt\_with\_keytab (C function)}
11439
\begin{fulllineitems}
11440
\phantomsection\label{appdev/refs/api/krb5_get_in_tkt_with_keytab:krb5_get_in_tkt_with_keytab}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_get\_in\_tkt\_with\_keytab}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}}\emph{ options}, {\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} *const *\emph{ addrs}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} *\emph{ ktypes}, {\hyperref[appdev/refs/types/krb5_preauthtype:krb5_preauthtype]{krb5\_preauthtype}} *\emph{ pre\_auth\_types}, {\hyperref[appdev/refs/types/krb5_keytab:krb5_keytab]{krb5\_keytab}}\emph{ arg\_keytab}, {\hyperref[appdev/refs/types/krb5_ccache:krb5_ccache]{krb5\_ccache}}\emph{ ccache}, {\hyperref[appdev/refs/types/krb5_creds:krb5_creds]{krb5\_creds}} *\emph{ creds}, {\hyperref[appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep]{krb5\_kdc\_rep}} **\emph{ ret\_as\_reply}}{}
11441
\end{fulllineitems}
11443
\begin{quote}\begin{description}
11444
\item[{param}] \leavevmode
11453
\textbf{pre\_auth\_types}
11455
\textbf{arg\_keytab}
11461
\textbf{ret\_as\_reply}
11463
\end{description}\end{quote}
11465
DEPRECATED Replaced by krb5\_get\_init\_creds\_keytab() .
11468
\subsubsection{krb5\_get\_init\_creds\_opt\_init}
11469
\label{appdev/refs/api/krb5_get_init_creds_opt_init:krb5-get-init-creds-opt-init}\label{appdev/refs/api/krb5_get_init_creds_opt_init::doc}\index{krb5\_get\_init\_creds\_opt\_init (C function)}
11471
\begin{fulllineitems}
11472
\phantomsection\label{appdev/refs/api/krb5_get_init_creds_opt_init:krb5_get_init_creds_opt_init}\pysiglinewithargsret{void \bfcode{krb5\_get\_init\_creds\_opt\_init}}{{\hyperref[appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt]{krb5\_get\_init\_creds\_opt}} *\emph{ opt}}{}
11473
\end{fulllineitems}
11475
\begin{quote}\begin{description}
11476
\item[{param}] \leavevmode
11479
\end{description}\end{quote}
11481
DEPRECATED Use krb5\_get\_init\_creds\_opt\_alloc() instead.
11484
\subsubsection{krb5\_init\_random\_key}
11485
\label{appdev/refs/api/krb5_init_random_key:krb5-init-random-key}\label{appdev/refs/api/krb5_init_random_key::doc}\index{krb5\_init\_random\_key (C function)}
11487
\begin{fulllineitems}
11488
\phantomsection\label{appdev/refs/api/krb5_init_random_key:krb5_init_random_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_init\_random\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}} *\emph{ ptr}}{}
11489
\end{fulllineitems}
11491
\begin{quote}\begin{description}
11492
\item[{param}] \leavevmode
11501
\end{description}\end{quote}
11503
DEPRECATED Replaced by krb5\_c\_* API family.
11506
\subsubsection{krb5\_kt\_free\_entry}
11507
\label{appdev/refs/api/krb5_kt_free_entry:krb5-kt-free-entry}\label{appdev/refs/api/krb5_kt_free_entry::doc}\index{krb5\_kt\_free\_entry (C function)}
11509
\begin{fulllineitems}
11510
\phantomsection\label{appdev/refs/api/krb5_kt_free_entry:krb5_kt_free_entry}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_kt\_free\_entry}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry]{krb5\_keytab\_entry}} *\emph{ entry}}{}
11511
\end{fulllineitems}
11513
\begin{quote}\begin{description}
11514
\item[{param}] \leavevmode
11519
\end{description}\end{quote}
11521
DEPRECATED Use krb5\_free\_keytab\_entry\_contents instead.
11524
\subsubsection{krb5\_random\_key}
11525
\label{appdev/refs/api/krb5_random_key:krb5-random-key}\label{appdev/refs/api/krb5_random_key::doc}\index{krb5\_random\_key (C function)}
11527
\begin{fulllineitems}
11528
\phantomsection\label{appdev/refs/api/krb5_random_key:krb5_random_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_random\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, {\hyperref[appdev/refs/types/krb5_pointer:krb5_pointer]{krb5\_pointer}}\emph{ ptr}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} **\emph{ keyblock}}{}
11529
\end{fulllineitems}
11531
\begin{quote}\begin{description}
11532
\item[{param}] \leavevmode
11541
\end{description}\end{quote}
11543
DEPRECATED Replaced by krb5\_c\_* API family.
11546
\subsubsection{krb5\_process\_key}
11547
\label{appdev/refs/api/krb5_process_key:krb5-process-key}\label{appdev/refs/api/krb5_process_key::doc}\index{krb5\_process\_key (C function)}
11549
\begin{fulllineitems}
11550
\phantomsection\label{appdev/refs/api/krb5_process_key:krb5_process_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_process\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, const {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ key}}{}
11551
\end{fulllineitems}
11553
\begin{quote}\begin{description}
11554
\item[{param}] \leavevmode
11561
\end{description}\end{quote}
11563
DEPRECATED Replaced by krb5\_c\_* API family.
11566
\subsubsection{krb5\_string\_to\_key}
11567
\label{appdev/refs/api/krb5_string_to_key:krb5-string-to-key}\label{appdev/refs/api/krb5_string_to_key::doc}\index{krb5\_string\_to\_key (C function)}
11569
\begin{fulllineitems}
11570
\phantomsection\label{appdev/refs/api/krb5_string_to_key:krb5_string_to_key}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_string\_to\_key}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, const {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, {\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} *\emph{ keyblock}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ data}, const {\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} *\emph{ salt}}{}
11571
\end{fulllineitems}
11573
\begin{quote}\begin{description}
11574
\item[{param}] \leavevmode
11585
\end{description}\end{quote}
11587
DEPRECATED See krb5\_c\_string\_to\_key()
11590
\subsubsection{krb5\_use\_enctype}
11591
\label{appdev/refs/api/krb5_use_enctype:krb5-use-enctype}\label{appdev/refs/api/krb5_use_enctype::doc}\index{krb5\_use\_enctype (C function)}
11593
\begin{fulllineitems}
11594
\phantomsection\label{appdev/refs/api/krb5_use_enctype:krb5_use_enctype}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_use\_enctype}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block]{krb5\_encrypt\_block}} *\emph{ eblock}, {\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}}\emph{ enctype}}{}
11595
\end{fulllineitems}
11597
\begin{quote}\begin{description}
11598
\item[{param}] \leavevmode
11605
\end{description}\end{quote}
11607
DEPRECATED Replaced by krb5\_c\_* API family.
11610
\subsubsection{krb5\_verify\_checksum}
11611
\label{appdev/refs/api/krb5_verify_checksum::doc}\label{appdev/refs/api/krb5_verify_checksum:krb5-verify-checksum}\index{krb5\_verify\_checksum (C function)}
11613
\begin{fulllineitems}
11614
\phantomsection\label{appdev/refs/api/krb5_verify_checksum:krb5_verify_checksum}\pysiglinewithargsret{{\hyperref[appdev/refs/types/krb5_error_code:krb5_error_code]{krb5\_error\_code}} \bfcode{krb5\_verify\_checksum}}{{\hyperref[appdev/refs/types/krb5_context:krb5_context]{krb5\_context}}\emph{ context}, {\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}}\emph{ ctype}, const {\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} *\emph{ cksum}, {\hyperref[appdev/refs/types/krb5_const_pointer:krb5_const_pointer]{krb5\_const\_pointer}}\emph{ in}, size\_t\emph{ in\_length}, {\hyperref[appdev/refs/types/krb5_const_pointer:krb5_const_pointer]{krb5\_const\_pointer}}\emph{ seed}, size\_t\emph{ seed\_length}}{}
11615
\end{fulllineitems}
11617
\begin{quote}\begin{description}
11618
\item[{param}] \leavevmode
11627
\textbf{in\_length}
11631
\textbf{seed\_length}
11633
\end{description}\end{quote}
11635
DEPRECATED See krb5\_c\_verify\_checksum()
11638
\section{krb5 types and structures}
11639
\label{appdev/refs/types/index::doc}\label{appdev/refs/types/index:krb5-types-and-structures}
11641
\subsection{Public}
11642
\label{appdev/refs/types/index:public}
11644
\subsubsection{krb5\_address}
11645
\label{appdev/refs/types/krb5_address:krb5-address-struct}\label{appdev/refs/types/krb5_address::doc}\label{appdev/refs/types/krb5_address:krb5-address}\index{krb5\_address (C type)}
11647
\begin{fulllineitems}
11648
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address}\pysigline{\bfcode{krb5\_address}}
11649
\end{fulllineitems}
11652
Structure for address.
11655
\paragraph{Declaration}
11656
\label{appdev/refs/types/krb5_address:declaration}
11657
typedef struct \_krb5\_address krb5\_address
11660
\paragraph{Members}
11661
\label{appdev/refs/types/krb5_address:members}\index{krb5\_address.magic (C member)}
11663
\begin{fulllineitems}
11664
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_address.magic}}
11665
\end{fulllineitems}
11667
\index{krb5\_address.addrtype (C member)}
11669
\begin{fulllineitems}
11670
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address.addrtype}\pysigline{{\hyperref[appdev/refs/types/krb5_addrtype:krb5_addrtype]{krb5\_addrtype}} \bfcode{krb5\_address.addrtype}}
11671
\end{fulllineitems}
11673
\index{krb5\_address.length (C member)}
11675
\begin{fulllineitems}
11676
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address.length}\pysigline{unsigned int \bfcode{krb5\_address.length}}
11677
\end{fulllineitems}
11679
\index{krb5\_address.contents (C member)}
11681
\begin{fulllineitems}
11682
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address.contents}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} * \bfcode{krb5\_address.contents}}
11683
\end{fulllineitems}
11687
\subsubsection{krb5\_addrtype}
11688
\label{appdev/refs/types/krb5_addrtype:krb5-addrtype}\label{appdev/refs/types/krb5_addrtype:krb5-addrtype-struct}\label{appdev/refs/types/krb5_addrtype::doc}\index{krb5\_addrtype (C type)}
11690
\begin{fulllineitems}
11691
\phantomsection\label{appdev/refs/types/krb5_addrtype:krb5_addrtype}\pysigline{\bfcode{krb5\_addrtype}}
11692
\end{fulllineitems}
11696
\paragraph{Declaration}
11697
\label{appdev/refs/types/krb5_addrtype:declaration}
11698
typedef krb5\_int32 krb5\_addrtype
11701
\subsubsection{krb5\_ap\_req}
11702
\label{appdev/refs/types/krb5_ap_req:krb5-ap-req}\label{appdev/refs/types/krb5_ap_req::doc}\label{appdev/refs/types/krb5_ap_req:krb5-ap-req-struct}\index{krb5\_ap\_req (C type)}
11704
\begin{fulllineitems}
11705
\phantomsection\label{appdev/refs/types/krb5_ap_req:krb5_ap_req}\pysigline{\bfcode{krb5\_ap\_req}}
11706
\end{fulllineitems}
11709
Authentication header.
11712
\paragraph{Declaration}
11713
\label{appdev/refs/types/krb5_ap_req:declaration}
11714
typedef struct \_krb5\_ap\_req krb5\_ap\_req
11717
\paragraph{Members}
11718
\label{appdev/refs/types/krb5_ap_req:members}\index{krb5\_ap\_req.magic (C member)}
11720
\begin{fulllineitems}
11721
\phantomsection\label{appdev/refs/types/krb5_ap_req:krb5_ap_req.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_ap\_req.magic}}
11722
\end{fulllineitems}
11724
\index{krb5\_ap\_req.ap\_options (C member)}
11726
\begin{fulllineitems}
11727
\phantomsection\label{appdev/refs/types/krb5_ap_req:krb5_ap_req.ap_options}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_ap\_req.ap\_options}}
11730
\end{fulllineitems}
11732
\index{krb5\_ap\_req.ticket (C member)}
11734
\begin{fulllineitems}
11735
\phantomsection\label{appdev/refs/types/krb5_ap_req:krb5_ap_req.ticket}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} * \bfcode{krb5\_ap\_req.ticket}}
11738
\end{fulllineitems}
11740
\index{krb5\_ap\_req.authenticator (C member)}
11742
\begin{fulllineitems}
11743
\phantomsection\label{appdev/refs/types/krb5_ap_req:krb5_ap_req.authenticator}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} \bfcode{krb5\_ap\_req.authenticator}}
11744
Encrypted authenticator.
11746
\end{fulllineitems}
11750
\subsubsection{krb5\_ap\_rep}
11751
\label{appdev/refs/types/krb5_ap_rep:krb5-ap-rep-struct}\label{appdev/refs/types/krb5_ap_rep:krb5-ap-rep}\label{appdev/refs/types/krb5_ap_rep::doc}\index{krb5\_ap\_rep (C type)}
11753
\begin{fulllineitems}
11754
\phantomsection\label{appdev/refs/types/krb5_ap_rep:krb5_ap_rep}\pysigline{\bfcode{krb5\_ap\_rep}}
11755
\end{fulllineitems}
11758
C representaton of AP-REP message.
11760
The server's response to a client's request for mutual authentication.
11763
\paragraph{Declaration}
11764
\label{appdev/refs/types/krb5_ap_rep:declaration}
11765
typedef struct \_krb5\_ap\_rep krb5\_ap\_rep
11768
\paragraph{Members}
11769
\label{appdev/refs/types/krb5_ap_rep:members}\index{krb5\_ap\_rep.magic (C member)}
11771
\begin{fulllineitems}
11772
\phantomsection\label{appdev/refs/types/krb5_ap_rep:krb5_ap_rep.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_ap\_rep.magic}}
11773
\end{fulllineitems}
11775
\index{krb5\_ap\_rep.enc\_part (C member)}
11777
\begin{fulllineitems}
11778
\phantomsection\label{appdev/refs/types/krb5_ap_rep:krb5_ap_rep.enc_part}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} \bfcode{krb5\_ap\_rep.enc\_part}}
11779
Ciphertext of ApRepEncPart.
11781
\end{fulllineitems}
11785
\subsubsection{krb5\_ap\_rep\_enc\_part}
11786
\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5-ap-rep-enc-part-struct}\label{appdev/refs/types/krb5_ap_rep_enc_part::doc}\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5-ap-rep-enc-part}\index{krb5\_ap\_rep\_enc\_part (C type)}
11788
\begin{fulllineitems}
11789
\phantomsection\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part}\pysigline{\bfcode{krb5\_ap\_rep\_enc\_part}}
11790
\end{fulllineitems}
11793
Cleartext that is encrypted and put into \code{\_krb5\_ap\_rep} .
11796
\paragraph{Declaration}
11797
\label{appdev/refs/types/krb5_ap_rep_enc_part:declaration}
11798
typedef struct \_krb5\_ap\_rep\_enc\_part krb5\_ap\_rep\_enc\_part
11801
\paragraph{Members}
11802
\label{appdev/refs/types/krb5_ap_rep_enc_part:members}\index{krb5\_ap\_rep\_enc\_part.magic (C member)}
11804
\begin{fulllineitems}
11805
\phantomsection\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_ap\_rep\_enc\_part.magic}}
11806
\end{fulllineitems}
11808
\index{krb5\_ap\_rep\_enc\_part.ctime (C member)}
11810
\begin{fulllineitems}
11811
\phantomsection\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part.ctime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_ap\_rep\_enc\_part.ctime}}
11812
Client time, seconds portion.
11814
\end{fulllineitems}
11816
\index{krb5\_ap\_rep\_enc\_part.cusec (C member)}
11818
\begin{fulllineitems}
11819
\phantomsection\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part.cusec}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_ap\_rep\_enc\_part.cusec}}
11820
Client time, microseconds portion.
11822
\end{fulllineitems}
11824
\index{krb5\_ap\_rep\_enc\_part.subkey (C member)}
11826
\begin{fulllineitems}
11827
\phantomsection\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part.subkey}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} * \bfcode{krb5\_ap\_rep\_enc\_part.subkey}}
11830
\end{fulllineitems}
11832
\index{krb5\_ap\_rep\_enc\_part.seq\_number (C member)}
11834
\begin{fulllineitems}
11835
\phantomsection\label{appdev/refs/types/krb5_ap_rep_enc_part:krb5_ap_rep_enc_part.seq_number}\pysigline{{\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}} \bfcode{krb5\_ap\_rep\_enc\_part.seq\_number}}
11838
\end{fulllineitems}
11842
\subsubsection{krb5\_authdata}
11843
\label{appdev/refs/types/krb5_authdata:krb5-authdata}\label{appdev/refs/types/krb5_authdata::doc}\label{appdev/refs/types/krb5_authdata:krb5-authdata-struct}\index{krb5\_authdata (C type)}
11845
\begin{fulllineitems}
11846
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata}\pysigline{\bfcode{krb5\_authdata}}
11847
\end{fulllineitems}
11850
Structure for auth data.
11853
\paragraph{Declaration}
11854
\label{appdev/refs/types/krb5_authdata:declaration}
11855
typedef struct \_krb5\_authdata krb5\_authdata
11858
\paragraph{Members}
11859
\label{appdev/refs/types/krb5_authdata:members}\index{krb5\_authdata.magic (C member)}
11861
\begin{fulllineitems}
11862
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_authdata.magic}}
11863
\end{fulllineitems}
11865
\index{krb5\_authdata.ad\_type (C member)}
11867
\begin{fulllineitems}
11868
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata.ad_type}\pysigline{{\hyperref[appdev/refs/types/krb5_authdatatype:krb5_authdatatype]{krb5\_authdatatype}} \bfcode{krb5\_authdata.ad\_type}}
11871
\end{fulllineitems}
11873
\index{krb5\_authdata.length (C member)}
11875
\begin{fulllineitems}
11876
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata.length}\pysigline{unsigned int \bfcode{krb5\_authdata.length}}
11879
\end{fulllineitems}
11881
\index{krb5\_authdata.contents (C member)}
11883
\begin{fulllineitems}
11884
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata.contents}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} * \bfcode{krb5\_authdata.contents}}
11887
\end{fulllineitems}
11891
\subsubsection{krb5\_authdatatype}
11892
\label{appdev/refs/types/krb5_authdatatype:krb5-authdatatype-struct}\label{appdev/refs/types/krb5_authdatatype::doc}\label{appdev/refs/types/krb5_authdatatype:krb5-authdatatype}\index{krb5\_authdatatype (C type)}
11894
\begin{fulllineitems}
11895
\phantomsection\label{appdev/refs/types/krb5_authdatatype:krb5_authdatatype}\pysigline{\bfcode{krb5\_authdatatype}}
11896
\end{fulllineitems}
11900
\paragraph{Declaration}
11901
\label{appdev/refs/types/krb5_authdatatype:declaration}
11902
typedef krb5\_int32 krb5\_authdatatype
11905
\subsubsection{krb5\_authenticator}
11906
\label{appdev/refs/types/krb5_authenticator:krb5-authenticator-struct}\label{appdev/refs/types/krb5_authenticator:krb5-authenticator}\label{appdev/refs/types/krb5_authenticator::doc}\index{krb5\_authenticator (C type)}
11908
\begin{fulllineitems}
11909
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator}\pysigline{\bfcode{krb5\_authenticator}}
11910
\end{fulllineitems}
11913
Ticket authenticator.
11915
The C representation of an unencrypted authenticator.
11918
\paragraph{Declaration}
11919
\label{appdev/refs/types/krb5_authenticator:declaration}
11920
typedef struct \_krb5\_authenticator krb5\_authenticator
11923
\paragraph{Members}
11924
\label{appdev/refs/types/krb5_authenticator:members}\index{krb5\_authenticator.magic (C member)}
11926
\begin{fulllineitems}
11927
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_authenticator.magic}}
11928
\end{fulllineitems}
11930
\index{krb5\_authenticator.client (C member)}
11932
\begin{fulllineitems}
11933
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_authenticator.client}}
11936
\end{fulllineitems}
11938
\index{krb5\_authenticator.checksum (C member)}
11940
\begin{fulllineitems}
11941
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.checksum}\pysigline{{\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} * \bfcode{krb5\_authenticator.checksum}}
11942
checksum, includes type, optional
11944
\end{fulllineitems}
11946
\index{krb5\_authenticator.cusec (C member)}
11948
\begin{fulllineitems}
11949
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.cusec}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_authenticator.cusec}}
11950
client usec portion
11952
\end{fulllineitems}
11954
\index{krb5\_authenticator.ctime (C member)}
11956
\begin{fulllineitems}
11957
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.ctime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_authenticator.ctime}}
11960
\end{fulllineitems}
11962
\index{krb5\_authenticator.subkey (C member)}
11964
\begin{fulllineitems}
11965
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.subkey}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} * \bfcode{krb5\_authenticator.subkey}}
11966
true session key, optional
11968
\end{fulllineitems}
11970
\index{krb5\_authenticator.seq\_number (C member)}
11972
\begin{fulllineitems}
11973
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.seq_number}\pysigline{{\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}} \bfcode{krb5\_authenticator.seq\_number}}
11974
sequence \#, optional
11976
\end{fulllineitems}
11978
\index{krb5\_authenticator.authorization\_data (C member)}
11980
\begin{fulllineitems}
11981
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator.authorization_data}\pysigline{{\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ** \bfcode{krb5\_authenticator.authorization\_data}}
11982
authoriazation data
11984
\end{fulllineitems}
11988
\subsubsection{krb5\_boolean}
11989
\label{appdev/refs/types/krb5_boolean:krb5-boolean-struct}\label{appdev/refs/types/krb5_boolean::doc}\label{appdev/refs/types/krb5_boolean:krb5-boolean}\index{krb5\_boolean (C type)}
11991
\begin{fulllineitems}
11992
\phantomsection\label{appdev/refs/types/krb5_boolean:krb5_boolean}\pysigline{\bfcode{krb5\_boolean}}
11993
\end{fulllineitems}
11997
\paragraph{Declaration}
11998
\label{appdev/refs/types/krb5_boolean:declaration}
11999
typedef unsigned int krb5\_boolean
12002
\subsubsection{krb5\_checksum}
12003
\label{appdev/refs/types/krb5_checksum::doc}\label{appdev/refs/types/krb5_checksum:krb5-checksum}\label{appdev/refs/types/krb5_checksum:krb5-checksum-struct}\index{krb5\_checksum (C type)}
12005
\begin{fulllineitems}
12006
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum}\pysigline{\bfcode{krb5\_checksum}}
12007
\end{fulllineitems}
12011
\paragraph{Declaration}
12012
\label{appdev/refs/types/krb5_checksum:declaration}
12013
typedef struct \_krb5\_checksum krb5\_checksum
12016
\paragraph{Members}
12017
\label{appdev/refs/types/krb5_checksum:members}\index{krb5\_checksum.magic (C member)}
12019
\begin{fulllineitems}
12020
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_checksum.magic}}
12021
\end{fulllineitems}
12023
\index{krb5\_checksum.checksum\_type (C member)}
12025
\begin{fulllineitems}
12026
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum.checksum_type}\pysigline{{\hyperref[appdev/refs/types/krb5_cksumtype:krb5_cksumtype]{krb5\_cksumtype}} \bfcode{krb5\_checksum.checksum\_type}}
12027
\end{fulllineitems}
12029
\index{krb5\_checksum.length (C member)}
12031
\begin{fulllineitems}
12032
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum.length}\pysigline{unsigned int \bfcode{krb5\_checksum.length}}
12033
\end{fulllineitems}
12035
\index{krb5\_checksum.contents (C member)}
12037
\begin{fulllineitems}
12038
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum.contents}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} * \bfcode{krb5\_checksum.contents}}
12039
\end{fulllineitems}
12043
\subsubsection{krb5\_const\_pointer}
12044
\label{appdev/refs/types/krb5_const_pointer:krb5-const-pointer}\label{appdev/refs/types/krb5_const_pointer::doc}\label{appdev/refs/types/krb5_const_pointer:krb5-const-pointer-struct}\index{krb5\_const\_pointer (C type)}
12046
\begin{fulllineitems}
12047
\phantomsection\label{appdev/refs/types/krb5_const_pointer:krb5_const_pointer}\pysigline{\bfcode{krb5\_const\_pointer}}
12048
\end{fulllineitems}
12052
\paragraph{Declaration}
12053
\label{appdev/refs/types/krb5_const_pointer:declaration}
12054
typedef void const* krb5\_const\_pointer
12057
\subsubsection{krb5\_const\_principal}
12058
\label{appdev/refs/types/krb5_const_principal:krb5-const-principal-struct}\label{appdev/refs/types/krb5_const_principal:krb5-const-principal}\label{appdev/refs/types/krb5_const_principal::doc}\index{krb5\_const\_principal (C type)}
12060
\begin{fulllineitems}
12061
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal}\pysigline{\bfcode{krb5\_const\_principal}}
12062
\end{fulllineitems}
12065
Constant version of {\hyperref[appdev/refs/types/krb5_principal_data:krb5_principal_data]{\code{krb5\_principal\_data}}} .
12068
\paragraph{Declaration}
12069
\label{appdev/refs/types/krb5_const_principal:declaration}
12070
typedef const krb5\_principal\_data* krb5\_const\_principal
12073
\paragraph{Members}
12074
\label{appdev/refs/types/krb5_const_principal:members}\index{krb5\_const\_principal.magic (C member)}
12076
\begin{fulllineitems}
12077
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_const\_principal.magic}}
12078
\end{fulllineitems}
12080
\index{krb5\_const\_principal.realm (C member)}
12082
\begin{fulllineitems}
12083
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.realm}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_const\_principal.realm}}
12084
\end{fulllineitems}
12086
\index{krb5\_const\_principal.data (C member)}
12088
\begin{fulllineitems}
12089
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.data}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_const\_principal.data}}
12090
An array of strings.
12092
\end{fulllineitems}
12094
\index{krb5\_const\_principal.length (C member)}
12096
\begin{fulllineitems}
12097
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.length}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_const\_principal.length}}
12098
\end{fulllineitems}
12100
\index{krb5\_const\_principal.type (C member)}
12102
\begin{fulllineitems}
12103
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.type}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_const\_principal.type}}
12104
\end{fulllineitems}
12108
\subsubsection{krb5\_cred}
12109
\label{appdev/refs/types/krb5_cred:krb5-cred-struct}\label{appdev/refs/types/krb5_cred::doc}\label{appdev/refs/types/krb5_cred:krb5-cred}\index{krb5\_cred (C type)}
12111
\begin{fulllineitems}
12112
\phantomsection\label{appdev/refs/types/krb5_cred:krb5_cred}\pysigline{\bfcode{krb5\_cred}}
12113
\end{fulllineitems}
12116
Credentials data structure.
12119
\paragraph{Declaration}
12120
\label{appdev/refs/types/krb5_cred:declaration}
12121
typedef struct \_krb5\_cred krb5\_cred
12124
\paragraph{Members}
12125
\label{appdev/refs/types/krb5_cred:members}\index{krb5\_cred.magic (C member)}
12127
\begin{fulllineitems}
12128
\phantomsection\label{appdev/refs/types/krb5_cred:krb5_cred.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_cred.magic}}
12129
\end{fulllineitems}
12131
\index{krb5\_cred.tickets (C member)}
12133
\begin{fulllineitems}
12134
\phantomsection\label{appdev/refs/types/krb5_cred:krb5_cred.tickets}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} ** \bfcode{krb5\_cred.tickets}}
12137
\end{fulllineitems}
12139
\index{krb5\_cred.enc\_part (C member)}
12141
\begin{fulllineitems}
12142
\phantomsection\label{appdev/refs/types/krb5_cred:krb5_cred.enc_part}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} \bfcode{krb5\_cred.enc\_part}}
12145
\end{fulllineitems}
12147
\index{krb5\_cred.enc\_part2 (C member)}
12149
\begin{fulllineitems}
12150
\phantomsection\label{appdev/refs/types/krb5_cred:krb5_cred.enc_part2}\pysigline{{\hyperref[appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part]{krb5\_cred\_enc\_part}} * \bfcode{krb5\_cred.enc\_part2}}
12151
Unencrypted version, if available.
12153
\end{fulllineitems}
12157
\subsubsection{krb5\_cred\_enc\_part}
12158
\label{appdev/refs/types/krb5_cred_enc_part::doc}\label{appdev/refs/types/krb5_cred_enc_part:krb5-cred-enc-part}\label{appdev/refs/types/krb5_cred_enc_part:krb5-cred-enc-part-struct}\index{krb5\_cred\_enc\_part (C type)}
12160
\begin{fulllineitems}
12161
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part}\pysigline{\bfcode{krb5\_cred\_enc\_part}}
12162
\end{fulllineitems}
12165
Cleartext credentials information.
12168
\paragraph{Declaration}
12169
\label{appdev/refs/types/krb5_cred_enc_part:declaration}
12170
typedef struct \_krb5\_cred\_enc\_part krb5\_cred\_enc\_part
12173
\paragraph{Members}
12174
\label{appdev/refs/types/krb5_cred_enc_part:members}\index{krb5\_cred\_enc\_part.magic (C member)}
12176
\begin{fulllineitems}
12177
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_cred\_enc\_part.magic}}
12178
\end{fulllineitems}
12180
\index{krb5\_cred\_enc\_part.nonce (C member)}
12182
\begin{fulllineitems}
12183
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.nonce}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_cred\_enc\_part.nonce}}
12186
\end{fulllineitems}
12188
\index{krb5\_cred\_enc\_part.timestamp (C member)}
12190
\begin{fulllineitems}
12191
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.timestamp}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_cred\_enc\_part.timestamp}}
12192
Generation time, seconds portion.
12194
\end{fulllineitems}
12196
\index{krb5\_cred\_enc\_part.usec (C member)}
12198
\begin{fulllineitems}
12199
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.usec}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_cred\_enc\_part.usec}}
12200
Generation time, microseconds portion.
12202
\end{fulllineitems}
12204
\index{krb5\_cred\_enc\_part.s\_address (C member)}
12206
\begin{fulllineitems}
12207
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.s_address}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} * \bfcode{krb5\_cred\_enc\_part.s\_address}}
12208
Sender address (optional)
12210
\end{fulllineitems}
12212
\index{krb5\_cred\_enc\_part.r\_address (C member)}
12214
\begin{fulllineitems}
12215
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.r_address}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} * \bfcode{krb5\_cred\_enc\_part.r\_address}}
12216
Recipient address (optional)
12218
\end{fulllineitems}
12220
\index{krb5\_cred\_enc\_part.ticket\_info (C member)}
12222
\begin{fulllineitems}
12223
\phantomsection\label{appdev/refs/types/krb5_cred_enc_part:krb5_cred_enc_part.ticket_info}\pysigline{{\hyperref[appdev/refs/types/krb5_cred_info:krb5_cred_info]{krb5\_cred\_info}} ** \bfcode{krb5\_cred\_enc\_part.ticket\_info}}
12224
\end{fulllineitems}
12228
\subsubsection{krb5\_cred\_info}
12229
\label{appdev/refs/types/krb5_cred_info:krb5-cred-info-struct}\label{appdev/refs/types/krb5_cred_info::doc}\label{appdev/refs/types/krb5_cred_info:krb5-cred-info}\index{krb5\_cred\_info (C type)}
12231
\begin{fulllineitems}
12232
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info}\pysigline{\bfcode{krb5\_cred\_info}}
12233
\end{fulllineitems}
12236
Credentials information inserted into \emph{EncKrbCredPart} .
12239
\paragraph{Declaration}
12240
\label{appdev/refs/types/krb5_cred_info:declaration}
12241
typedef struct \_krb5\_cred\_info krb5\_cred\_info
12244
\paragraph{Members}
12245
\label{appdev/refs/types/krb5_cred_info:members}\index{krb5\_cred\_info.magic (C member)}
12247
\begin{fulllineitems}
12248
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_cred\_info.magic}}
12249
\end{fulllineitems}
12251
\index{krb5\_cred\_info.session (C member)}
12253
\begin{fulllineitems}
12254
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.session}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} * \bfcode{krb5\_cred\_info.session}}
12255
Session key used to encrypt ticket.
12257
\end{fulllineitems}
12259
\index{krb5\_cred\_info.client (C member)}
12261
\begin{fulllineitems}
12262
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_cred\_info.client}}
12263
Client principal and realm.
12265
\end{fulllineitems}
12267
\index{krb5\_cred\_info.server (C member)}
12269
\begin{fulllineitems}
12270
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.server}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_cred\_info.server}}
12271
Server principal and realm.
12273
\end{fulllineitems}
12275
\index{krb5\_cred\_info.flags (C member)}
12277
\begin{fulllineitems}
12278
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_cred\_info.flags}}
12281
\end{fulllineitems}
12283
\index{krb5\_cred\_info.times (C member)}
12285
\begin{fulllineitems}
12286
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.times}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket_times:krb5_ticket_times]{krb5\_ticket\_times}} \bfcode{krb5\_cred\_info.times}}
12287
Auth, start, end, renew\_till.
12289
\end{fulllineitems}
12291
\index{krb5\_cred\_info.caddrs (C member)}
12293
\begin{fulllineitems}
12294
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info.caddrs}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ** \bfcode{krb5\_cred\_info.caddrs}}
12295
Array of pointers to addrs (optional)
12297
\end{fulllineitems}
12301
\subsubsection{krb5\_creds}
12302
\label{appdev/refs/types/krb5_creds::doc}\label{appdev/refs/types/krb5_creds:krb5-creds}\label{appdev/refs/types/krb5_creds:krb5-creds-struct}\index{krb5\_creds (C type)}
12304
\begin{fulllineitems}
12305
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds}\pysigline{\bfcode{krb5\_creds}}
12306
\end{fulllineitems}
12309
Credentials structure including ticket, session key, and lifetime info.
12312
\paragraph{Declaration}
12313
\label{appdev/refs/types/krb5_creds:declaration}
12314
typedef struct \_krb5\_creds krb5\_creds
12317
\paragraph{Members}
12318
\label{appdev/refs/types/krb5_creds:members}\index{krb5\_creds.magic (C member)}
12320
\begin{fulllineitems}
12321
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_creds.magic}}
12322
\end{fulllineitems}
12324
\index{krb5\_creds.client (C member)}
12326
\begin{fulllineitems}
12327
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_creds.client}}
12328
client's principal identifier
12330
\end{fulllineitems}
12332
\index{krb5\_creds.server (C member)}
12334
\begin{fulllineitems}
12335
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.server}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_creds.server}}
12336
server's principal identifier
12338
\end{fulllineitems}
12340
\index{krb5\_creds.keyblock (C member)}
12342
\begin{fulllineitems}
12343
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.keyblock}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} \bfcode{krb5\_creds.keyblock}}
12344
session encryption key info
12346
\end{fulllineitems}
12348
\index{krb5\_creds.times (C member)}
12350
\begin{fulllineitems}
12351
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.times}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket_times:krb5_ticket_times]{krb5\_ticket\_times}} \bfcode{krb5\_creds.times}}
12354
\end{fulllineitems}
12356
\index{krb5\_creds.is\_skey (C member)}
12358
\begin{fulllineitems}
12359
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.is_skey}\pysigline{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_creds.is\_skey}}
12360
true if ticket is encrypted in another ticket's skey
12362
\end{fulllineitems}
12364
\index{krb5\_creds.ticket\_flags (C member)}
12366
\begin{fulllineitems}
12367
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.ticket_flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_creds.ticket\_flags}}
12370
\end{fulllineitems}
12372
\index{krb5\_creds.addresses (C member)}
12374
\begin{fulllineitems}
12375
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.addresses}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ** \bfcode{krb5\_creds.addresses}}
12378
\end{fulllineitems}
12380
\index{krb5\_creds.ticket (C member)}
12382
\begin{fulllineitems}
12383
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.ticket}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_creds.ticket}}
12384
ticket string itself
12386
\end{fulllineitems}
12388
\index{krb5\_creds.second\_ticket (C member)}
12390
\begin{fulllineitems}
12391
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.second_ticket}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_creds.second\_ticket}}
12392
second ticket, if related to ticket (via DUPLICATE-SKEY or ENC-TKT-IN-SKEY)
12394
\end{fulllineitems}
12396
\index{krb5\_creds.authdata (C member)}
12398
\begin{fulllineitems}
12399
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds.authdata}\pysigline{{\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ** \bfcode{krb5\_creds.authdata}}
12402
\end{fulllineitems}
12406
\subsubsection{krb5\_crypto\_iov}
12407
\label{appdev/refs/types/krb5_crypto_iov:krb5-crypto-iov}\label{appdev/refs/types/krb5_crypto_iov::doc}\label{appdev/refs/types/krb5_crypto_iov:krb5-crypto-iov-struct}\index{krb5\_crypto\_iov (C type)}
12409
\begin{fulllineitems}
12410
\phantomsection\label{appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov}\pysigline{\bfcode{krb5\_crypto\_iov}}
12411
\end{fulllineitems}
12414
Structure to describe a region of text to be encrypted or decrypted.
12416
The \emph{flags} member describes the type of the iov. The \emph{data} member points to the memory that will be manipulated. All iov APIs take a pointer to the first element of an array of krb5\_crypto\_iov's along with the size of that array. Buffer contents are manipulated in-place; data is overwritten. Callers must allocate the right number of krb5\_crypto\_iov structures before calling into an iov API.
12419
\paragraph{Declaration}
12420
\label{appdev/refs/types/krb5_crypto_iov:declaration}
12421
typedef struct \_krb5\_crypto\_iov krb5\_crypto\_iov
12424
\paragraph{Members}
12425
\label{appdev/refs/types/krb5_crypto_iov:members}\index{krb5\_crypto\_iov.flags (C member)}
12427
\begin{fulllineitems}
12428
\phantomsection\label{appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_cryptotype:krb5_cryptotype]{krb5\_cryptotype}} \bfcode{krb5\_crypto\_iov.flags}}
12429
\code{KRB5\_CRYPTO\_TYPE} type of the iov
12431
\end{fulllineitems}
12433
\index{krb5\_crypto\_iov.data (C member)}
12435
\begin{fulllineitems}
12436
\phantomsection\label{appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov.data}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_crypto\_iov.data}}
12437
\end{fulllineitems}
12441
\subsubsection{krb5\_cryptotype}
12442
\label{appdev/refs/types/krb5_cryptotype:krb5-cryptotype}\label{appdev/refs/types/krb5_cryptotype::doc}\label{appdev/refs/types/krb5_cryptotype:krb5-cryptotype-struct}\index{krb5\_cryptotype (C type)}
12444
\begin{fulllineitems}
12445
\phantomsection\label{appdev/refs/types/krb5_cryptotype:krb5_cryptotype}\pysigline{\bfcode{krb5\_cryptotype}}
12446
\end{fulllineitems}
12450
\paragraph{Declaration}
12451
\label{appdev/refs/types/krb5_cryptotype:declaration}
12452
typedef krb5\_int32 krb5\_cryptotype
12455
\subsubsection{krb5\_data}
12456
\label{appdev/refs/types/krb5_data:krb5-data}\label{appdev/refs/types/krb5_data::doc}\label{appdev/refs/types/krb5_data:krb5-data-struct}\index{krb5\_data (C type)}
12458
\begin{fulllineitems}
12459
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data}\pysigline{\bfcode{krb5\_data}}
12460
\end{fulllineitems}
12464
\paragraph{Declaration}
12465
\label{appdev/refs/types/krb5_data:declaration}
12466
typedef struct \_krb5\_data krb5\_data
12469
\paragraph{Members}
12470
\label{appdev/refs/types/krb5_data:members}\index{krb5\_data.magic (C member)}
12472
\begin{fulllineitems}
12473
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_data.magic}}
12474
\end{fulllineitems}
12476
\index{krb5\_data.length (C member)}
12478
\begin{fulllineitems}
12479
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data.length}\pysigline{unsigned int \bfcode{krb5\_data.length}}
12480
\end{fulllineitems}
12482
\index{krb5\_data.data (C member)}
12484
\begin{fulllineitems}
12485
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data.data}\pysigline{char * \bfcode{krb5\_data.data}}
12486
\end{fulllineitems}
12490
\subsubsection{krb5\_deltat}
12491
\label{appdev/refs/types/krb5_deltat:krb5-deltat}\label{appdev/refs/types/krb5_deltat:krb5-deltat-struct}\label{appdev/refs/types/krb5_deltat::doc}\index{krb5\_deltat (C type)}
12493
\begin{fulllineitems}
12494
\phantomsection\label{appdev/refs/types/krb5_deltat:krb5_deltat}\pysigline{\bfcode{krb5\_deltat}}
12495
\end{fulllineitems}
12499
\paragraph{Declaration}
12500
\label{appdev/refs/types/krb5_deltat:declaration}
12501
typedef krb5\_int32 krb5\_deltat
12504
\subsubsection{krb5\_enc\_data}
12505
\label{appdev/refs/types/krb5_enc_data::doc}\label{appdev/refs/types/krb5_enc_data:krb5-enc-data}\label{appdev/refs/types/krb5_enc_data:krb5-enc-data-struct}\index{krb5\_enc\_data (C type)}
12507
\begin{fulllineitems}
12508
\phantomsection\label{appdev/refs/types/krb5_enc_data:krb5_enc_data}\pysigline{\bfcode{krb5\_enc\_data}}
12509
\end{fulllineitems}
12513
\paragraph{Declaration}
12514
\label{appdev/refs/types/krb5_enc_data:declaration}
12515
typedef struct \_krb5\_enc\_data krb5\_enc\_data
12518
\paragraph{Members}
12519
\label{appdev/refs/types/krb5_enc_data:members}\index{krb5\_enc\_data.magic (C member)}
12521
\begin{fulllineitems}
12522
\phantomsection\label{appdev/refs/types/krb5_enc_data:krb5_enc_data.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_enc\_data.magic}}
12523
\end{fulllineitems}
12525
\index{krb5\_enc\_data.enctype (C member)}
12527
\begin{fulllineitems}
12528
\phantomsection\label{appdev/refs/types/krb5_enc_data:krb5_enc_data.enctype}\pysigline{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} \bfcode{krb5\_enc\_data.enctype}}
12529
\end{fulllineitems}
12531
\index{krb5\_enc\_data.kvno (C member)}
12533
\begin{fulllineitems}
12534
\phantomsection\label{appdev/refs/types/krb5_enc_data:krb5_enc_data.kvno}\pysigline{{\hyperref[appdev/refs/types/krb5_kvno:krb5_kvno]{krb5\_kvno}} \bfcode{krb5\_enc\_data.kvno}}
12535
\end{fulllineitems}
12537
\index{krb5\_enc\_data.ciphertext (C member)}
12539
\begin{fulllineitems}
12540
\phantomsection\label{appdev/refs/types/krb5_enc_data:krb5_enc_data.ciphertext}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_enc\_data.ciphertext}}
12541
\end{fulllineitems}
12545
\subsubsection{krb5\_enc\_kdc\_rep\_part}
12546
\label{appdev/refs/types/krb5_enc_kdc_rep_part::doc}\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5-enc-kdc-rep-part}\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5-enc-kdc-rep-part-struct}\index{krb5\_enc\_kdc\_rep\_part (C type)}
12548
\begin{fulllineitems}
12549
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part}\pysigline{\bfcode{krb5\_enc\_kdc\_rep\_part}}
12550
\end{fulllineitems}
12553
C representation of \emph{EncKDCRepPart} protocol message.
12555
This is the cleartext message that is encrypted and inserted in \emph{KDC-REP} .
12558
\paragraph{Declaration}
12559
\label{appdev/refs/types/krb5_enc_kdc_rep_part:declaration}
12560
typedef struct \_krb5\_enc\_kdc\_rep\_part krb5\_enc\_kdc\_rep\_part
12563
\paragraph{Members}
12564
\label{appdev/refs/types/krb5_enc_kdc_rep_part:members}\index{krb5\_enc\_kdc\_rep\_part.magic (C member)}
12566
\begin{fulllineitems}
12567
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_enc\_kdc\_rep\_part.magic}}
12568
\end{fulllineitems}
12570
\index{krb5\_enc\_kdc\_rep\_part.msg\_type (C member)}
12572
\begin{fulllineitems}
12573
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.msg_type}\pysigline{{\hyperref[appdev/refs/types/krb5_msgtype:krb5_msgtype]{krb5\_msgtype}} \bfcode{krb5\_enc\_kdc\_rep\_part.msg\_type}}
12576
\end{fulllineitems}
12578
\index{krb5\_enc\_kdc\_rep\_part.session (C member)}
12580
\begin{fulllineitems}
12581
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.session}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} * \bfcode{krb5\_enc\_kdc\_rep\_part.session}}
12584
\end{fulllineitems}
12586
\index{krb5\_enc\_kdc\_rep\_part.last\_req (C member)}
12588
\begin{fulllineitems}
12589
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.last_req}\pysigline{{\hyperref[appdev/refs/types/krb5_last_req_entry:krb5_last_req_entry]{krb5\_last\_req\_entry}} ** \bfcode{krb5\_enc\_kdc\_rep\_part.last\_req}}
12590
Array of pointers to entries.
12592
\end{fulllineitems}
12594
\index{krb5\_enc\_kdc\_rep\_part.nonce (C member)}
12596
\begin{fulllineitems}
12597
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.nonce}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_enc\_kdc\_rep\_part.nonce}}
12598
Nonce from request.
12600
\end{fulllineitems}
12602
\index{krb5\_enc\_kdc\_rep\_part.key\_exp (C member)}
12604
\begin{fulllineitems}
12605
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.key_exp}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_enc\_kdc\_rep\_part.key\_exp}}
12608
\end{fulllineitems}
12610
\index{krb5\_enc\_kdc\_rep\_part.flags (C member)}
12612
\begin{fulllineitems}
12613
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_enc\_kdc\_rep\_part.flags}}
12616
\end{fulllineitems}
12618
\index{krb5\_enc\_kdc\_rep\_part.times (C member)}
12620
\begin{fulllineitems}
12621
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.times}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket_times:krb5_ticket_times]{krb5\_ticket\_times}} \bfcode{krb5\_enc\_kdc\_rep\_part.times}}
12624
\end{fulllineitems}
12626
\index{krb5\_enc\_kdc\_rep\_part.server (C member)}
12628
\begin{fulllineitems}
12629
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.server}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_enc\_kdc\_rep\_part.server}}
12630
Server's principal identifier.
12632
\end{fulllineitems}
12634
\index{krb5\_enc\_kdc\_rep\_part.caddrs (C member)}
12636
\begin{fulllineitems}
12637
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.caddrs}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ** \bfcode{krb5\_enc\_kdc\_rep\_part.caddrs}}
12638
Array of ptrs to addrs, optional.
12640
\end{fulllineitems}
12642
\index{krb5\_enc\_kdc\_rep\_part.enc\_padata (C member)}
12644
\begin{fulllineitems}
12645
\phantomsection\label{appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part.enc_padata}\pysigline{{\hyperref[appdev/refs/types/krb5_pa_data:krb5_pa_data]{krb5\_pa\_data}} ** \bfcode{krb5\_enc\_kdc\_rep\_part.enc\_padata}}
12646
Encrypted preauthentication data.
12648
\end{fulllineitems}
12652
\subsubsection{krb5\_enc\_tkt\_part}
12653
\label{appdev/refs/types/krb5_enc_tkt_part:krb5-enc-tkt-part}\label{appdev/refs/types/krb5_enc_tkt_part::doc}\label{appdev/refs/types/krb5_enc_tkt_part:krb5-enc-tkt-part-struct}\index{krb5\_enc\_tkt\_part (C type)}
12655
\begin{fulllineitems}
12656
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part}\pysigline{\bfcode{krb5\_enc\_tkt\_part}}
12657
\end{fulllineitems}
12660
Encrypted part of ticket.
12663
\paragraph{Declaration}
12664
\label{appdev/refs/types/krb5_enc_tkt_part:declaration}
12665
typedef struct \_krb5\_enc\_tkt\_part krb5\_enc\_tkt\_part
12668
\paragraph{Members}
12669
\label{appdev/refs/types/krb5_enc_tkt_part:members}\index{krb5\_enc\_tkt\_part.magic (C member)}
12671
\begin{fulllineitems}
12672
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_enc\_tkt\_part.magic}}
12673
\end{fulllineitems}
12675
\index{krb5\_enc\_tkt\_part.flags (C member)}
12677
\begin{fulllineitems}
12678
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_enc\_tkt\_part.flags}}
12681
\end{fulllineitems}
12683
\index{krb5\_enc\_tkt\_part.session (C member)}
12685
\begin{fulllineitems}
12686
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.session}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} * \bfcode{krb5\_enc\_tkt\_part.session}}
12687
session key: includes enctype
12689
\end{fulllineitems}
12691
\index{krb5\_enc\_tkt\_part.client (C member)}
12693
\begin{fulllineitems}
12694
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_enc\_tkt\_part.client}}
12697
\end{fulllineitems}
12699
\index{krb5\_enc\_tkt\_part.transited (C member)}
12701
\begin{fulllineitems}
12702
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.transited}\pysigline{{\hyperref[appdev/refs/types/krb5_transited:krb5_transited]{krb5\_transited}} \bfcode{krb5\_enc\_tkt\_part.transited}}
12703
list of transited realms
12705
\end{fulllineitems}
12707
\index{krb5\_enc\_tkt\_part.times (C member)}
12709
\begin{fulllineitems}
12710
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.times}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket_times:krb5_ticket_times]{krb5\_ticket\_times}} \bfcode{krb5\_enc\_tkt\_part.times}}
12711
auth, start, end, renew\_till
12713
\end{fulllineitems}
12715
\index{krb5\_enc\_tkt\_part.caddrs (C member)}
12717
\begin{fulllineitems}
12718
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.caddrs}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ** \bfcode{krb5\_enc\_tkt\_part.caddrs}}
12719
array of ptrs to addresses
12721
\end{fulllineitems}
12723
\index{krb5\_enc\_tkt\_part.authorization\_data (C member)}
12725
\begin{fulllineitems}
12726
\phantomsection\label{appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part.authorization_data}\pysigline{{\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ** \bfcode{krb5\_enc\_tkt\_part.authorization\_data}}
12729
\end{fulllineitems}
12733
\subsubsection{krb5\_encrypt\_block}
12734
\label{appdev/refs/types/krb5_encrypt_block:krb5-encrypt-block}\label{appdev/refs/types/krb5_encrypt_block:krb5-encrypt-block-struct}\label{appdev/refs/types/krb5_encrypt_block::doc}\index{krb5\_encrypt\_block (C type)}
12736
\begin{fulllineitems}
12737
\phantomsection\label{appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block}\pysigline{\bfcode{krb5\_encrypt\_block}}
12738
\end{fulllineitems}
12742
\paragraph{Declaration}
12743
\label{appdev/refs/types/krb5_encrypt_block:declaration}
12744
typedef struct \_krb5\_encrypt\_block krb5\_encrypt\_block
12747
\paragraph{Members}
12748
\label{appdev/refs/types/krb5_encrypt_block:members}\index{krb5\_encrypt\_block.magic (C member)}
12750
\begin{fulllineitems}
12751
\phantomsection\label{appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_encrypt\_block.magic}}
12752
\end{fulllineitems}
12754
\index{krb5\_encrypt\_block.crypto\_entry (C member)}
12756
\begin{fulllineitems}
12757
\phantomsection\label{appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block.crypto_entry}\pysigline{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} \bfcode{krb5\_encrypt\_block.crypto\_entry}}
12758
\end{fulllineitems}
12760
\index{krb5\_encrypt\_block.key (C member)}
12762
\begin{fulllineitems}
12763
\phantomsection\label{appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block.key}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} * \bfcode{krb5\_encrypt\_block.key}}
12764
\end{fulllineitems}
12768
\subsubsection{krb5\_enctype}
12769
\label{appdev/refs/types/krb5_enctype:krb5-enctype-struct}\label{appdev/refs/types/krb5_enctype:krb5-enctype}\label{appdev/refs/types/krb5_enctype::doc}\index{krb5\_enctype (C type)}
12771
\begin{fulllineitems}
12772
\phantomsection\label{appdev/refs/types/krb5_enctype:krb5_enctype}\pysigline{\bfcode{krb5\_enctype}}
12773
\end{fulllineitems}
12777
\paragraph{Declaration}
12778
\label{appdev/refs/types/krb5_enctype:declaration}
12779
typedef krb5\_int32 krb5\_enctype
12782
\subsubsection{krb5\_error}
12783
\label{appdev/refs/types/krb5_error:krb5-error-struct}\label{appdev/refs/types/krb5_error:krb5-error}\label{appdev/refs/types/krb5_error::doc}\index{krb5\_error (C type)}
12785
\begin{fulllineitems}
12786
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error}\pysigline{\bfcode{krb5\_error}}
12787
\end{fulllineitems}
12790
Error message structure.
12793
\paragraph{Declaration}
12794
\label{appdev/refs/types/krb5_error:declaration}
12795
typedef struct \_krb5\_error krb5\_error
12798
\paragraph{Members}
12799
\label{appdev/refs/types/krb5_error:members}\index{krb5\_error.magic (C member)}
12801
\begin{fulllineitems}
12802
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_error.magic}}
12803
\end{fulllineitems}
12805
\index{krb5\_error.ctime (C member)}
12807
\begin{fulllineitems}
12808
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.ctime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_error.ctime}}
12809
Client sec portion; optional.
12811
\end{fulllineitems}
12813
\index{krb5\_error.cusec (C member)}
12815
\begin{fulllineitems}
12816
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.cusec}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_error.cusec}}
12817
Client usec portion; optional.
12819
\end{fulllineitems}
12821
\index{krb5\_error.susec (C member)}
12823
\begin{fulllineitems}
12824
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.susec}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_error.susec}}
12825
Server usec portion.
12827
\end{fulllineitems}
12829
\index{krb5\_error.stime (C member)}
12831
\begin{fulllineitems}
12832
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.stime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_error.stime}}
12833
Server sec portion.
12835
\end{fulllineitems}
12837
\index{krb5\_error.error (C member)}
12839
\begin{fulllineitems}
12840
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.error}\pysigline{{\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}} \bfcode{krb5\_error.error}}
12841
Error code (protocol error \#'s)
12843
\end{fulllineitems}
12845
\index{krb5\_error.client (C member)}
12847
\begin{fulllineitems}
12848
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_error.client}}
12849
Client principal and realm.
12851
\end{fulllineitems}
12853
\index{krb5\_error.server (C member)}
12855
\begin{fulllineitems}
12856
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.server}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_error.server}}
12857
Server principal and realm.
12859
\end{fulllineitems}
12861
\index{krb5\_error.text (C member)}
12863
\begin{fulllineitems}
12864
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.text}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_error.text}}
12867
\end{fulllineitems}
12869
\index{krb5\_error.e\_data (C member)}
12871
\begin{fulllineitems}
12872
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error.e_data}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_error.e\_data}}
12873
Additional error-describing data.
12875
\end{fulllineitems}
12879
\subsubsection{krb5\_error\_code}
12880
\label{appdev/refs/types/krb5_error_code:krb5-error-code}\label{appdev/refs/types/krb5_error_code::doc}\label{appdev/refs/types/krb5_error_code:krb5-error-code-struct}\index{krb5\_error\_code (C type)}
12882
\begin{fulllineitems}
12883
\phantomsection\label{appdev/refs/types/krb5_error_code:krb5_error_code}\pysigline{\bfcode{krb5\_error\_code}}
12884
\end{fulllineitems}
12888
\paragraph{Declaration}
12889
\label{appdev/refs/types/krb5_error_code:declaration}
12890
typedef krb5\_int32 krb5\_error\_code
12893
\subsubsection{krb5\_expire\_callback\_func}
12894
\label{appdev/refs/types/krb5_expire_callback_func:krb5-expire-callback-func}\label{appdev/refs/types/krb5_expire_callback_func::doc}\label{appdev/refs/types/krb5_expire_callback_func:krb5-expire-callback-func-struct}\index{krb5\_expire\_callback\_func (C type)}
12896
\begin{fulllineitems}
12897
\phantomsection\label{appdev/refs/types/krb5_expire_callback_func:krb5_expire_callback_func}\pysigline{\bfcode{krb5\_expire\_callback\_func}}
12898
\end{fulllineitems}
12902
\paragraph{Declaration}
12903
\label{appdev/refs/types/krb5_expire_callback_func:declaration}
12904
typedef void( * krb5\_expire\_callback\_func)(krb5\_context context, void *data, krb5\_timestamp password\_expiration, krb5\_timestamp account\_expiration, krb5\_boolean is\_last\_req)
12907
\subsubsection{krb5\_flags}
12908
\label{appdev/refs/types/krb5_flags:krb5-flags-struct}\label{appdev/refs/types/krb5_flags:krb5-flags}\label{appdev/refs/types/krb5_flags::doc}\index{krb5\_flags (C type)}
12910
\begin{fulllineitems}
12911
\phantomsection\label{appdev/refs/types/krb5_flags:krb5_flags}\pysigline{\bfcode{krb5\_flags}}
12912
\end{fulllineitems}
12916
\paragraph{Declaration}
12917
\label{appdev/refs/types/krb5_flags:declaration}
12918
typedef krb5\_int32 krb5\_flags
12921
\subsubsection{krb5\_get\_init\_creds\_opt}
12922
\label{appdev/refs/types/krb5_get_init_creds_opt:krb5-get-init-creds-opt-struct}\label{appdev/refs/types/krb5_get_init_creds_opt::doc}\label{appdev/refs/types/krb5_get_init_creds_opt:krb5-get-init-creds-opt}\index{krb5\_get\_init\_creds\_opt (C type)}
12924
\begin{fulllineitems}
12925
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt}\pysigline{\bfcode{krb5\_get\_init\_creds\_opt}}
12926
\end{fulllineitems}
12929
Store options for \emph{\_krb5\_get\_init\_creds} .
12932
\paragraph{Declaration}
12933
\label{appdev/refs/types/krb5_get_init_creds_opt:declaration}
12934
typedef struct \_krb5\_get\_init\_creds\_opt krb5\_get\_init\_creds\_opt
12937
\paragraph{Members}
12938
\label{appdev/refs/types/krb5_get_init_creds_opt:members}\index{krb5\_get\_init\_creds\_opt.flags (C member)}
12940
\begin{fulllineitems}
12941
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_get\_init\_creds\_opt.flags}}
12942
\end{fulllineitems}
12944
\index{krb5\_get\_init\_creds\_opt.tkt\_life (C member)}
12946
\begin{fulllineitems}
12947
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.tkt_life}\pysigline{{\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}} \bfcode{krb5\_get\_init\_creds\_opt.tkt\_life}}
12948
\end{fulllineitems}
12950
\index{krb5\_get\_init\_creds\_opt.renew\_life (C member)}
12952
\begin{fulllineitems}
12953
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.renew_life}\pysigline{{\hyperref[appdev/refs/types/krb5_deltat:krb5_deltat]{krb5\_deltat}} \bfcode{krb5\_get\_init\_creds\_opt.renew\_life}}
12954
\end{fulllineitems}
12956
\index{krb5\_get\_init\_creds\_opt.forwardable (C member)}
12958
\begin{fulllineitems}
12959
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.forwardable}\pysigline{int \bfcode{krb5\_get\_init\_creds\_opt.forwardable}}
12960
\end{fulllineitems}
12962
\index{krb5\_get\_init\_creds\_opt.proxiable (C member)}
12964
\begin{fulllineitems}
12965
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.proxiable}\pysigline{int \bfcode{krb5\_get\_init\_creds\_opt.proxiable}}
12966
\end{fulllineitems}
12968
\index{krb5\_get\_init\_creds\_opt.etype\_list (C member)}
12970
\begin{fulllineitems}
12971
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.etype_list}\pysigline{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} * \bfcode{krb5\_get\_init\_creds\_opt.etype\_list}}
12972
\end{fulllineitems}
12974
\index{krb5\_get\_init\_creds\_opt.etype\_list\_length (C member)}
12976
\begin{fulllineitems}
12977
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.etype_list_length}\pysigline{int \bfcode{krb5\_get\_init\_creds\_opt.etype\_list\_length}}
12978
\end{fulllineitems}
12980
\index{krb5\_get\_init\_creds\_opt.address\_list (C member)}
12982
\begin{fulllineitems}
12983
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.address_list}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ** \bfcode{krb5\_get\_init\_creds\_opt.address\_list}}
12984
\end{fulllineitems}
12986
\index{krb5\_get\_init\_creds\_opt.preauth\_list (C member)}
12988
\begin{fulllineitems}
12989
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.preauth_list}\pysigline{{\hyperref[appdev/refs/types/krb5_preauthtype:krb5_preauthtype]{krb5\_preauthtype}} * \bfcode{krb5\_get\_init\_creds\_opt.preauth\_list}}
12990
\end{fulllineitems}
12992
\index{krb5\_get\_init\_creds\_opt.preauth\_list\_length (C member)}
12994
\begin{fulllineitems}
12995
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.preauth_list_length}\pysigline{int \bfcode{krb5\_get\_init\_creds\_opt.preauth\_list\_length}}
12996
\end{fulllineitems}
12998
\index{krb5\_get\_init\_creds\_opt.salt (C member)}
13000
\begin{fulllineitems}
13001
\phantomsection\label{appdev/refs/types/krb5_get_init_creds_opt:krb5_get_init_creds_opt.salt}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_get\_init\_creds\_opt.salt}}
13002
\end{fulllineitems}
13006
\subsubsection{krb5\_gic\_opt\_pa\_data}
13007
\label{appdev/refs/types/krb5_gic_opt_pa_data::doc}\label{appdev/refs/types/krb5_gic_opt_pa_data:krb5-gic-opt-pa-data}\label{appdev/refs/types/krb5_gic_opt_pa_data:krb5-gic-opt-pa-data-struct}\index{krb5\_gic\_opt\_pa\_data (C type)}
13009
\begin{fulllineitems}
13010
\phantomsection\label{appdev/refs/types/krb5_gic_opt_pa_data:krb5_gic_opt_pa_data}\pysigline{\bfcode{krb5\_gic\_opt\_pa\_data}}
13011
\end{fulllineitems}
13014
Generic preauth option attribute/value pairs.
13017
\paragraph{Declaration}
13018
\label{appdev/refs/types/krb5_gic_opt_pa_data:declaration}
13019
typedef struct \_krb5\_gic\_opt\_pa\_data krb5\_gic\_opt\_pa\_data
13022
\paragraph{Members}
13023
\label{appdev/refs/types/krb5_gic_opt_pa_data:members}\index{krb5\_gic\_opt\_pa\_data.attr (C member)}
13025
\begin{fulllineitems}
13026
\phantomsection\label{appdev/refs/types/krb5_gic_opt_pa_data:krb5_gic_opt_pa_data.attr}\pysigline{char * \bfcode{krb5\_gic\_opt\_pa\_data.attr}}
13027
\end{fulllineitems}
13029
\index{krb5\_gic\_opt\_pa\_data.value (C member)}
13031
\begin{fulllineitems}
13032
\phantomsection\label{appdev/refs/types/krb5_gic_opt_pa_data:krb5_gic_opt_pa_data.value}\pysigline{char * \bfcode{krb5\_gic\_opt\_pa\_data.value}}
13033
\end{fulllineitems}
13037
\subsubsection{krb5\_int32}
13038
\label{appdev/refs/types/krb5_int32:krb5-int32-struct}\label{appdev/refs/types/krb5_int32::doc}\label{appdev/refs/types/krb5_int32:krb5-int32}\index{krb5\_int32 (C type)}
13040
\begin{fulllineitems}
13041
\phantomsection\label{appdev/refs/types/krb5_int32:krb5_int32}\pysigline{\bfcode{krb5\_int32}}
13042
\end{fulllineitems}
13045
krb5\_int32 is a signed 32-bit integer type
13048
\subsubsection{krb5\_kdc\_rep}
13049
\label{appdev/refs/types/krb5_kdc_rep::doc}\label{appdev/refs/types/krb5_kdc_rep:krb5-kdc-rep}\label{appdev/refs/types/krb5_kdc_rep:krb5-kdc-rep-struct}\index{krb5\_kdc\_rep (C type)}
13051
\begin{fulllineitems}
13052
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep}\pysigline{\bfcode{krb5\_kdc\_rep}}
13053
\end{fulllineitems}
13056
Representation of the \emph{KDC-REP} protocol message.
13059
\paragraph{Declaration}
13060
\label{appdev/refs/types/krb5_kdc_rep:declaration}
13061
typedef struct \_krb5\_kdc\_rep krb5\_kdc\_rep
13064
\paragraph{Members}
13065
\label{appdev/refs/types/krb5_kdc_rep:members}\index{krb5\_kdc\_rep.magic (C member)}
13067
\begin{fulllineitems}
13068
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_kdc\_rep.magic}}
13069
\end{fulllineitems}
13071
\index{krb5\_kdc\_rep.msg\_type (C member)}
13073
\begin{fulllineitems}
13074
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.msg_type}\pysigline{{\hyperref[appdev/refs/types/krb5_msgtype:krb5_msgtype]{krb5\_msgtype}} \bfcode{krb5\_kdc\_rep.msg\_type}}
13075
KRB5\_AS\_REP or KRB5\_KDC\_REP.
13077
\end{fulllineitems}
13079
\index{krb5\_kdc\_rep.padata (C member)}
13081
\begin{fulllineitems}
13082
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.padata}\pysigline{{\hyperref[appdev/refs/types/krb5_pa_data:krb5_pa_data]{krb5\_pa\_data}} ** \bfcode{krb5\_kdc\_rep.padata}}
13083
Preauthentication data from KDC.
13085
\end{fulllineitems}
13087
\index{krb5\_kdc\_rep.client (C member)}
13089
\begin{fulllineitems}
13090
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_kdc\_rep.client}}
13091
Client principal and realm.
13093
\end{fulllineitems}
13095
\index{krb5\_kdc\_rep.ticket (C member)}
13097
\begin{fulllineitems}
13098
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.ticket}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} * \bfcode{krb5\_kdc\_rep.ticket}}
13101
\end{fulllineitems}
13103
\index{krb5\_kdc\_rep.enc\_part (C member)}
13105
\begin{fulllineitems}
13106
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.enc_part}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} \bfcode{krb5\_kdc\_rep.enc\_part}}
13107
Encrypted part of reply.
13109
\end{fulllineitems}
13111
\index{krb5\_kdc\_rep.enc\_part2 (C member)}
13113
\begin{fulllineitems}
13114
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep.enc_part2}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_kdc_rep_part:krb5_enc_kdc_rep_part]{krb5\_enc\_kdc\_rep\_part}} * \bfcode{krb5\_kdc\_rep.enc\_part2}}
13115
Unencrypted version, if available.
13117
\end{fulllineitems}
13121
\subsubsection{krb5\_kdc\_req}
13122
\label{appdev/refs/types/krb5_kdc_req:krb5-kdc-req-struct}\label{appdev/refs/types/krb5_kdc_req:krb5-kdc-req}\label{appdev/refs/types/krb5_kdc_req::doc}\index{krb5\_kdc\_req (C type)}
13124
\begin{fulllineitems}
13125
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req}\pysigline{\bfcode{krb5\_kdc\_req}}
13126
\end{fulllineitems}
13129
C representation of KDC-REQ protocol message, including KDC-REQ-BODY.
13132
\paragraph{Declaration}
13133
\label{appdev/refs/types/krb5_kdc_req:declaration}
13134
typedef struct \_krb5\_kdc\_req krb5\_kdc\_req
13137
\paragraph{Members}
13138
\label{appdev/refs/types/krb5_kdc_req:members}\index{krb5\_kdc\_req.magic (C member)}
13140
\begin{fulllineitems}
13141
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_kdc\_req.magic}}
13142
\end{fulllineitems}
13144
\index{krb5\_kdc\_req.msg\_type (C member)}
13146
\begin{fulllineitems}
13147
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.msg_type}\pysigline{{\hyperref[appdev/refs/types/krb5_msgtype:krb5_msgtype]{krb5\_msgtype}} \bfcode{krb5\_kdc\_req.msg\_type}}
13148
KRB5\_AS\_REQ or KRB5\_TGS\_REQ.
13150
\end{fulllineitems}
13152
\index{krb5\_kdc\_req.padata (C member)}
13154
\begin{fulllineitems}
13155
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.padata}\pysigline{{\hyperref[appdev/refs/types/krb5_pa_data:krb5_pa_data]{krb5\_pa\_data}} ** \bfcode{krb5\_kdc\_req.padata}}
13156
Preauthentication data.
13158
\end{fulllineitems}
13160
\index{krb5\_kdc\_req.kdc\_options (C member)}
13162
\begin{fulllineitems}
13163
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.kdc_options}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_kdc\_req.kdc\_options}}
13166
\end{fulllineitems}
13168
\index{krb5\_kdc\_req.client (C member)}
13170
\begin{fulllineitems}
13171
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.client}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_kdc\_req.client}}
13172
Client principal and realm.
13174
\end{fulllineitems}
13176
\index{krb5\_kdc\_req.server (C member)}
13178
\begin{fulllineitems}
13179
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.server}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_kdc\_req.server}}
13180
Server principal and realm.
13182
\end{fulllineitems}
13184
\index{krb5\_kdc\_req.from (C member)}
13186
\begin{fulllineitems}
13187
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.from}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_kdc\_req.from}}
13188
Requested start time.
13190
\end{fulllineitems}
13192
\index{krb5\_kdc\_req.till (C member)}
13194
\begin{fulllineitems}
13195
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.till}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_kdc\_req.till}}
13196
Requested end time.
13198
\end{fulllineitems}
13200
\index{krb5\_kdc\_req.rtime (C member)}
13202
\begin{fulllineitems}
13203
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.rtime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_kdc\_req.rtime}}
13204
Requested renewable end time.
13206
\end{fulllineitems}
13208
\index{krb5\_kdc\_req.nonce (C member)}
13210
\begin{fulllineitems}
13211
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.nonce}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_kdc\_req.nonce}}
13212
Nonce to match request and response.
13214
\end{fulllineitems}
13216
\index{krb5\_kdc\_req.nktypes (C member)}
13218
\begin{fulllineitems}
13219
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.nktypes}\pysigline{int \bfcode{krb5\_kdc\_req.nktypes}}
13220
Number of enctypes.
13222
\end{fulllineitems}
13224
\index{krb5\_kdc\_req.ktype (C member)}
13226
\begin{fulllineitems}
13227
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.ktype}\pysigline{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} * \bfcode{krb5\_kdc\_req.ktype}}
13228
Requested enctypes.
13230
\end{fulllineitems}
13232
\index{krb5\_kdc\_req.addresses (C member)}
13234
\begin{fulllineitems}
13235
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.addresses}\pysigline{{\hyperref[appdev/refs/types/krb5_address:krb5_address]{krb5\_address}} ** \bfcode{krb5\_kdc\_req.addresses}}
13236
Requested addresses (optional)
13238
\end{fulllineitems}
13240
\index{krb5\_kdc\_req.authorization\_data (C member)}
13242
\begin{fulllineitems}
13243
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.authorization_data}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} \bfcode{krb5\_kdc\_req.authorization\_data}}
13244
Encrypted authz data (optional)
13246
\end{fulllineitems}
13248
\index{krb5\_kdc\_req.unenc\_authdata (C member)}
13250
\begin{fulllineitems}
13251
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.unenc_authdata}\pysigline{{\hyperref[appdev/refs/types/krb5_authdata:krb5_authdata]{krb5\_authdata}} ** \bfcode{krb5\_kdc\_req.unenc\_authdata}}
13252
Unencrypted authz data.
13254
\end{fulllineitems}
13256
\index{krb5\_kdc\_req.second\_ticket (C member)}
13258
\begin{fulllineitems}
13259
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req.second_ticket}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} ** \bfcode{krb5\_kdc\_req.second\_ticket}}
13260
Second ticket array (optional)
13262
\end{fulllineitems}
13266
\subsubsection{krb5\_keyblock}
13267
\label{appdev/refs/types/krb5_keyblock:krb5-keyblock}\label{appdev/refs/types/krb5_keyblock::doc}\label{appdev/refs/types/krb5_keyblock:krb5-keyblock-struct}\index{krb5\_keyblock (C type)}
13269
\begin{fulllineitems}
13270
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock}\pysigline{\bfcode{krb5\_keyblock}}
13271
\end{fulllineitems}
13274
Exposed contents of a key.
13277
\paragraph{Declaration}
13278
\label{appdev/refs/types/krb5_keyblock:declaration}
13279
typedef struct \_krb5\_keyblock krb5\_keyblock
13282
\paragraph{Members}
13283
\label{appdev/refs/types/krb5_keyblock:members}\index{krb5\_keyblock.magic (C member)}
13285
\begin{fulllineitems}
13286
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_keyblock.magic}}
13287
\end{fulllineitems}
13289
\index{krb5\_keyblock.enctype (C member)}
13291
\begin{fulllineitems}
13292
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock.enctype}\pysigline{{\hyperref[appdev/refs/types/krb5_enctype:krb5_enctype]{krb5\_enctype}} \bfcode{krb5\_keyblock.enctype}}
13293
\end{fulllineitems}
13295
\index{krb5\_keyblock.length (C member)}
13297
\begin{fulllineitems}
13298
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock.length}\pysigline{unsigned int \bfcode{krb5\_keyblock.length}}
13299
\end{fulllineitems}
13301
\index{krb5\_keyblock.contents (C member)}
13303
\begin{fulllineitems}
13304
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock.contents}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} * \bfcode{krb5\_keyblock.contents}}
13305
\end{fulllineitems}
13309
\subsubsection{krb5\_keytab\_entry}
13310
\label{appdev/refs/types/krb5_keytab_entry:krb5-keytab-entry}\label{appdev/refs/types/krb5_keytab_entry:krb5-keytab-entry-struct}\label{appdev/refs/types/krb5_keytab_entry::doc}\index{krb5\_keytab\_entry (C type)}
13312
\begin{fulllineitems}
13313
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry}\pysigline{\bfcode{krb5\_keytab\_entry}}
13314
\end{fulllineitems}
13320
\paragraph{Declaration}
13321
\label{appdev/refs/types/krb5_keytab_entry:declaration}
13322
typedef struct krb5\_keytab\_entry\_st krb5\_keytab\_entry
13325
\paragraph{Members}
13326
\label{appdev/refs/types/krb5_keytab_entry:members}\index{krb5\_keytab\_entry.magic (C member)}
13328
\begin{fulllineitems}
13329
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_keytab\_entry.magic}}
13330
\end{fulllineitems}
13332
\index{krb5\_keytab\_entry.principal (C member)}
13334
\begin{fulllineitems}
13335
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry.principal}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_keytab\_entry.principal}}
13336
Principal of this key.
13338
\end{fulllineitems}
13340
\index{krb5\_keytab\_entry.timestamp (C member)}
13342
\begin{fulllineitems}
13343
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry.timestamp}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_keytab\_entry.timestamp}}
13344
Time entry written to keytable.
13346
\end{fulllineitems}
13348
\index{krb5\_keytab\_entry.vno (C member)}
13350
\begin{fulllineitems}
13351
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry.vno}\pysigline{{\hyperref[appdev/refs/types/krb5_kvno:krb5_kvno]{krb5\_kvno}} \bfcode{krb5\_keytab\_entry.vno}}
13352
Key version number.
13354
\end{fulllineitems}
13356
\index{krb5\_keytab\_entry.key (C member)}
13358
\begin{fulllineitems}
13359
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry.key}\pysigline{{\hyperref[appdev/refs/types/krb5_keyblock:krb5_keyblock]{krb5\_keyblock}} \bfcode{krb5\_keytab\_entry.key}}
13362
\end{fulllineitems}
13366
\subsubsection{krb5\_keyusage}
13367
\label{appdev/refs/types/krb5_keyusage:krb5-keyusage}\label{appdev/refs/types/krb5_keyusage::doc}\label{appdev/refs/types/krb5_keyusage:krb5-keyusage-struct}\index{krb5\_keyusage (C type)}
13369
\begin{fulllineitems}
13370
\phantomsection\label{appdev/refs/types/krb5_keyusage:krb5_keyusage}\pysigline{\bfcode{krb5\_keyusage}}
13371
\end{fulllineitems}
13375
\paragraph{Declaration}
13376
\label{appdev/refs/types/krb5_keyusage:declaration}
13377
typedef krb5\_int32 krb5\_keyusage
13380
\subsubsection{krb5\_kt\_cursor}
13381
\label{appdev/refs/types/krb5_kt_cursor:krb5-kt-cursor-struct}\label{appdev/refs/types/krb5_kt_cursor::doc}\label{appdev/refs/types/krb5_kt_cursor:krb5-kt-cursor}\index{krb5\_kt\_cursor (C type)}
13383
\begin{fulllineitems}
13384
\phantomsection\label{appdev/refs/types/krb5_kt_cursor:krb5_kt_cursor}\pysigline{\bfcode{krb5\_kt\_cursor}}
13385
\end{fulllineitems}
13389
\paragraph{Declaration}
13390
\label{appdev/refs/types/krb5_kt_cursor:declaration}
13391
typedef krb5\_pointer krb5\_kt\_cursor
13394
\subsubsection{krb5\_kvno}
13395
\label{appdev/refs/types/krb5_kvno:krb5-kvno}\label{appdev/refs/types/krb5_kvno::doc}\label{appdev/refs/types/krb5_kvno:krb5-kvno-struct}\index{krb5\_kvno (C type)}
13397
\begin{fulllineitems}
13398
\phantomsection\label{appdev/refs/types/krb5_kvno:krb5_kvno}\pysigline{\bfcode{krb5\_kvno}}
13399
\end{fulllineitems}
13403
\paragraph{Declaration}
13404
\label{appdev/refs/types/krb5_kvno:declaration}
13405
typedef unsigned int krb5\_kvno
13408
\subsubsection{krb5\_last\_req\_entry}
13409
\label{appdev/refs/types/krb5_last_req_entry:krb5-last-req-entry}\label{appdev/refs/types/krb5_last_req_entry::doc}\label{appdev/refs/types/krb5_last_req_entry:krb5-last-req-entry-struct}\index{krb5\_last\_req\_entry (C type)}
13411
\begin{fulllineitems}
13412
\phantomsection\label{appdev/refs/types/krb5_last_req_entry:krb5_last_req_entry}\pysigline{\bfcode{krb5\_last\_req\_entry}}
13413
\end{fulllineitems}
13416
Last request entry.
13419
\paragraph{Declaration}
13420
\label{appdev/refs/types/krb5_last_req_entry:declaration}
13421
typedef struct \_krb5\_last\_req\_entry krb5\_last\_req\_entry
13424
\paragraph{Members}
13425
\label{appdev/refs/types/krb5_last_req_entry:members}\index{krb5\_last\_req\_entry.magic (C member)}
13427
\begin{fulllineitems}
13428
\phantomsection\label{appdev/refs/types/krb5_last_req_entry:krb5_last_req_entry.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_last\_req\_entry.magic}}
13429
\end{fulllineitems}
13431
\index{krb5\_last\_req\_entry.lr\_type (C member)}
13433
\begin{fulllineitems}
13434
\phantomsection\label{appdev/refs/types/krb5_last_req_entry:krb5_last_req_entry.lr_type}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_last\_req\_entry.lr\_type}}
13437
\end{fulllineitems}
13439
\index{krb5\_last\_req\_entry.value (C member)}
13441
\begin{fulllineitems}
13442
\phantomsection\label{appdev/refs/types/krb5_last_req_entry:krb5_last_req_entry.value}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_last\_req\_entry.value}}
13445
\end{fulllineitems}
13449
\subsubsection{krb5\_magic}
13450
\label{appdev/refs/types/krb5_magic:krb5-magic}\label{appdev/refs/types/krb5_magic::doc}\label{appdev/refs/types/krb5_magic:krb5-magic-struct}\index{krb5\_magic (C type)}
13452
\begin{fulllineitems}
13453
\phantomsection\label{appdev/refs/types/krb5_magic:krb5_magic}\pysigline{\bfcode{krb5\_magic}}
13454
\end{fulllineitems}
13458
\paragraph{Declaration}
13459
\label{appdev/refs/types/krb5_magic:declaration}
13460
typedef krb5\_error\_code krb5\_magic
13463
\subsubsection{krb5\_mk\_req\_checksum\_func}
13464
\label{appdev/refs/types/krb5_mk_req_checksum_func:krb5-mk-req-checksum-func-struct}\label{appdev/refs/types/krb5_mk_req_checksum_func::doc}\label{appdev/refs/types/krb5_mk_req_checksum_func:krb5-mk-req-checksum-func}\index{krb5\_mk\_req\_checksum\_func (C type)}
13466
\begin{fulllineitems}
13467
\phantomsection\label{appdev/refs/types/krb5_mk_req_checksum_func:krb5_mk_req_checksum_func}\pysigline{\bfcode{krb5\_mk\_req\_checksum\_func}}
13468
\end{fulllineitems}
13471
Type of function used as a callback to generate checksum data for mk\_req.
13474
\paragraph{Declaration}
13475
\label{appdev/refs/types/krb5_mk_req_checksum_func:declaration}
13476
typedef krb5\_error\_code( * krb5\_mk\_req\_checksum\_func)(krb5\_context, krb5\_auth\_context, void *, krb5\_data **)
13479
\subsubsection{krb5\_msgtype}
13480
\label{appdev/refs/types/krb5_msgtype:krb5-msgtype}\label{appdev/refs/types/krb5_msgtype::doc}\label{appdev/refs/types/krb5_msgtype:krb5-msgtype-struct}\index{krb5\_msgtype (C type)}
13482
\begin{fulllineitems}
13483
\phantomsection\label{appdev/refs/types/krb5_msgtype:krb5_msgtype}\pysigline{\bfcode{krb5\_msgtype}}
13484
\end{fulllineitems}
13488
\paragraph{Declaration}
13489
\label{appdev/refs/types/krb5_msgtype:declaration}
13490
typedef unsigned int krb5\_msgtype
13493
\subsubsection{krb5\_octet}
13494
\label{appdev/refs/types/krb5_octet:krb5-octet-struct}\label{appdev/refs/types/krb5_octet:krb5-octet}\label{appdev/refs/types/krb5_octet::doc}\index{krb5\_octet (C type)}
13496
\begin{fulllineitems}
13497
\phantomsection\label{appdev/refs/types/krb5_octet:krb5_octet}\pysigline{\bfcode{krb5\_octet}}
13498
\end{fulllineitems}
13502
\paragraph{Declaration}
13503
\label{appdev/refs/types/krb5_octet:declaration}
13504
typedef unsigned char krb5\_octet
13507
\subsubsection{krb5\_pa\_pac\_req}
13508
\label{appdev/refs/types/krb5_pa_pac_req:krb5-pa-pac-req-struct}\label{appdev/refs/types/krb5_pa_pac_req::doc}\label{appdev/refs/types/krb5_pa_pac_req:krb5-pa-pac-req}\index{krb5\_pa\_pac\_req (C type)}
13510
\begin{fulllineitems}
13511
\phantomsection\label{appdev/refs/types/krb5_pa_pac_req:krb5_pa_pac_req}\pysigline{\bfcode{krb5\_pa\_pac\_req}}
13512
\end{fulllineitems}
13516
\paragraph{Declaration}
13517
\label{appdev/refs/types/krb5_pa_pac_req:declaration}
13518
typedef struct \_krb5\_pa\_pac\_req krb5\_pa\_pac\_req
13521
\paragraph{Members}
13522
\label{appdev/refs/types/krb5_pa_pac_req:members}\index{krb5\_pa\_pac\_req.include\_pac (C member)}
13524
\begin{fulllineitems}
13525
\phantomsection\label{appdev/refs/types/krb5_pa_pac_req:krb5_pa_pac_req.include_pac}\pysigline{{\hyperref[appdev/refs/types/krb5_boolean:krb5_boolean]{krb5\_boolean}} \bfcode{krb5\_pa\_pac\_req.include\_pac}}
13526
TRUE if a PAC should be included in TGS-REP.
13528
\end{fulllineitems}
13532
\subsubsection{krb5\_pa\_server\_referral\_data}
13533
\label{appdev/refs/types/krb5_pa_server_referral_data:krb5-pa-server-referral-data-struct}\label{appdev/refs/types/krb5_pa_server_referral_data::doc}\label{appdev/refs/types/krb5_pa_server_referral_data:krb5-pa-server-referral-data}\index{krb5\_pa\_server\_referral\_data (C type)}
13535
\begin{fulllineitems}
13536
\phantomsection\label{appdev/refs/types/krb5_pa_server_referral_data:krb5_pa_server_referral_data}\pysigline{\bfcode{krb5\_pa\_server\_referral\_data}}
13537
\end{fulllineitems}
13541
\paragraph{Declaration}
13542
\label{appdev/refs/types/krb5_pa_server_referral_data:declaration}
13543
typedef struct \_krb5\_pa\_server\_referral\_data krb5\_pa\_server\_referral\_data
13546
\paragraph{Members}
13547
\label{appdev/refs/types/krb5_pa_server_referral_data:members}\index{krb5\_pa\_server\_referral\_data.referred\_realm (C member)}
13549
\begin{fulllineitems}
13550
\phantomsection\label{appdev/refs/types/krb5_pa_server_referral_data:krb5_pa_server_referral_data.referred_realm}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_pa\_server\_referral\_data.referred\_realm}}
13551
\end{fulllineitems}
13553
\index{krb5\_pa\_server\_referral\_data.true\_principal\_name (C member)}
13555
\begin{fulllineitems}
13556
\phantomsection\label{appdev/refs/types/krb5_pa_server_referral_data:krb5_pa_server_referral_data.true_principal_name}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_pa\_server\_referral\_data.true\_principal\_name}}
13557
\end{fulllineitems}
13559
\index{krb5\_pa\_server\_referral\_data.requested\_principal\_name (C member)}
13561
\begin{fulllineitems}
13562
\phantomsection\label{appdev/refs/types/krb5_pa_server_referral_data:krb5_pa_server_referral_data.requested_principal_name}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_pa\_server\_referral\_data.requested\_principal\_name}}
13563
\end{fulllineitems}
13565
\index{krb5\_pa\_server\_referral\_data.referral\_valid\_until (C member)}
13567
\begin{fulllineitems}
13568
\phantomsection\label{appdev/refs/types/krb5_pa_server_referral_data:krb5_pa_server_referral_data.referral_valid_until}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_pa\_server\_referral\_data.referral\_valid\_until}}
13569
\end{fulllineitems}
13571
\index{krb5\_pa\_server\_referral\_data.rep\_cksum (C member)}
13573
\begin{fulllineitems}
13574
\phantomsection\label{appdev/refs/types/krb5_pa_server_referral_data:krb5_pa_server_referral_data.rep_cksum}\pysigline{{\hyperref[appdev/refs/types/krb5_checksum:krb5_checksum]{krb5\_checksum}} \bfcode{krb5\_pa\_server\_referral\_data.rep\_cksum}}
13575
\end{fulllineitems}
13579
\subsubsection{krb5\_pa\_svr\_referral\_data}
13580
\label{appdev/refs/types/krb5_pa_svr_referral_data:krb5-pa-svr-referral-data}\label{appdev/refs/types/krb5_pa_svr_referral_data::doc}\label{appdev/refs/types/krb5_pa_svr_referral_data:krb5-pa-svr-referral-data-struct}\index{krb5\_pa\_svr\_referral\_data (C type)}
13582
\begin{fulllineitems}
13583
\phantomsection\label{appdev/refs/types/krb5_pa_svr_referral_data:krb5_pa_svr_referral_data}\pysigline{\bfcode{krb5\_pa\_svr\_referral\_data}}
13584
\end{fulllineitems}
13588
\paragraph{Declaration}
13589
\label{appdev/refs/types/krb5_pa_svr_referral_data:declaration}
13590
typedef struct \_krb5\_pa\_svr\_referral\_data krb5\_pa\_svr\_referral\_data
13593
\paragraph{Members}
13594
\label{appdev/refs/types/krb5_pa_svr_referral_data:members}\index{krb5\_pa\_svr\_referral\_data.principal (C member)}
13596
\begin{fulllineitems}
13597
\phantomsection\label{appdev/refs/types/krb5_pa_svr_referral_data:krb5_pa_svr_referral_data.principal}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_pa\_svr\_referral\_data.principal}}
13598
Referred name, only realm is required.
13600
\end{fulllineitems}
13604
\subsubsection{krb5\_pa\_data}
13605
\label{appdev/refs/types/krb5_pa_data:krb5-pa-data}\label{appdev/refs/types/krb5_pa_data:krb5-pa-data-struct}\label{appdev/refs/types/krb5_pa_data::doc}\index{krb5\_pa\_data (C type)}
13607
\begin{fulllineitems}
13608
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data}\pysigline{\bfcode{krb5\_pa\_data}}
13609
\end{fulllineitems}
13612
Pre-authentication data.
13615
\paragraph{Declaration}
13616
\label{appdev/refs/types/krb5_pa_data:declaration}
13617
typedef struct \_krb5\_pa\_data krb5\_pa\_data
13620
\paragraph{Members}
13621
\label{appdev/refs/types/krb5_pa_data:members}\index{krb5\_pa\_data.magic (C member)}
13623
\begin{fulllineitems}
13624
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_pa\_data.magic}}
13625
\end{fulllineitems}
13627
\index{krb5\_pa\_data.pa\_type (C member)}
13629
\begin{fulllineitems}
13630
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data.pa_type}\pysigline{{\hyperref[appdev/refs/types/krb5_preauthtype:krb5_preauthtype]{krb5\_preauthtype}} \bfcode{krb5\_pa\_data.pa\_type}}
13631
Preauthentication data type.
13633
\end{fulllineitems}
13635
\index{krb5\_pa\_data.length (C member)}
13637
\begin{fulllineitems}
13638
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data.length}\pysigline{unsigned int \bfcode{krb5\_pa\_data.length}}
13641
\end{fulllineitems}
13643
\index{krb5\_pa\_data.contents (C member)}
13645
\begin{fulllineitems}
13646
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data.contents}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} * \bfcode{krb5\_pa\_data.contents}}
13649
\end{fulllineitems}
13653
\subsubsection{krb5\_pointer}
13654
\label{appdev/refs/types/krb5_pointer:krb5-pointer-struct}\label{appdev/refs/types/krb5_pointer:krb5-pointer}\label{appdev/refs/types/krb5_pointer::doc}\index{krb5\_pointer (C type)}
13656
\begin{fulllineitems}
13657
\phantomsection\label{appdev/refs/types/krb5_pointer:krb5_pointer}\pysigline{\bfcode{krb5\_pointer}}
13658
\end{fulllineitems}
13662
\paragraph{Declaration}
13663
\label{appdev/refs/types/krb5_pointer:declaration}
13664
typedef void* krb5\_pointer
13667
\subsubsection{krb5\_preauthtype}
13668
\label{appdev/refs/types/krb5_preauthtype::doc}\label{appdev/refs/types/krb5_preauthtype:krb5-preauthtype}\label{appdev/refs/types/krb5_preauthtype:krb5-preauthtype-struct}\index{krb5\_preauthtype (C type)}
13670
\begin{fulllineitems}
13671
\phantomsection\label{appdev/refs/types/krb5_preauthtype:krb5_preauthtype}\pysigline{\bfcode{krb5\_preauthtype}}
13672
\end{fulllineitems}
13676
\paragraph{Declaration}
13677
\label{appdev/refs/types/krb5_preauthtype:declaration}
13678
typedef krb5\_int32 krb5\_preauthtype
13681
\subsubsection{krb5\_principal}
13682
\label{appdev/refs/types/krb5_principal:krb5-principal-struct}\label{appdev/refs/types/krb5_principal:krb5-principal}\label{appdev/refs/types/krb5_principal::doc}\index{krb5\_principal (C type)}
13684
\begin{fulllineitems}
13685
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal}\pysigline{\bfcode{krb5\_principal}}
13686
\end{fulllineitems}
13690
\paragraph{Declaration}
13691
\label{appdev/refs/types/krb5_principal:declaration}
13692
typedef krb5\_principal\_data* krb5\_principal
13695
\paragraph{Members}
13696
\label{appdev/refs/types/krb5_principal:members}\index{krb5\_principal.magic (C member)}
13698
\begin{fulllineitems}
13699
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_principal.magic}}
13700
\end{fulllineitems}
13702
\index{krb5\_principal.realm (C member)}
13704
\begin{fulllineitems}
13705
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal.realm}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_principal.realm}}
13706
\end{fulllineitems}
13708
\index{krb5\_principal.data (C member)}
13710
\begin{fulllineitems}
13711
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal.data}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_principal.data}}
13712
An array of strings.
13714
\end{fulllineitems}
13716
\index{krb5\_principal.length (C member)}
13718
\begin{fulllineitems}
13719
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal.length}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_principal.length}}
13720
\end{fulllineitems}
13722
\index{krb5\_principal.type (C member)}
13724
\begin{fulllineitems}
13725
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal.type}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_principal.type}}
13726
\end{fulllineitems}
13730
\subsubsection{krb5\_principal\_data}
13731
\label{appdev/refs/types/krb5_principal_data:krb5-principal-data}\label{appdev/refs/types/krb5_principal_data::doc}\label{appdev/refs/types/krb5_principal_data:krb5-principal-data-struct}\index{krb5\_principal\_data (C type)}
13733
\begin{fulllineitems}
13734
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data}\pysigline{\bfcode{krb5\_principal\_data}}
13735
\end{fulllineitems}
13739
\paragraph{Declaration}
13740
\label{appdev/refs/types/krb5_principal_data:declaration}
13741
typedef struct krb5\_principal\_data krb5\_principal\_data
13744
\paragraph{Members}
13745
\label{appdev/refs/types/krb5_principal_data:members}\index{krb5\_principal\_data.magic (C member)}
13747
\begin{fulllineitems}
13748
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_principal\_data.magic}}
13749
\end{fulllineitems}
13751
\index{krb5\_principal\_data.realm (C member)}
13753
\begin{fulllineitems}
13754
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data.realm}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_principal\_data.realm}}
13755
\end{fulllineitems}
13757
\index{krb5\_principal\_data.data (C member)}
13759
\begin{fulllineitems}
13760
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data.data}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_principal\_data.data}}
13761
An array of strings.
13763
\end{fulllineitems}
13765
\index{krb5\_principal\_data.length (C member)}
13767
\begin{fulllineitems}
13768
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data.length}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_principal\_data.length}}
13769
\end{fulllineitems}
13771
\index{krb5\_principal\_data.type (C member)}
13773
\begin{fulllineitems}
13774
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data.type}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_principal\_data.type}}
13775
\end{fulllineitems}
13779
\subsubsection{krb5\_const\_principal}
13780
\label{appdev/refs/types/krb5_const_principal:krb5-const-principal-struct}\label{appdev/refs/types/krb5_const_principal:krb5-const-principal}\label{appdev/refs/types/krb5_const_principal::doc}\index{krb5\_const\_principal (C type)}
13782
\begin{fulllineitems}
13783
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal}\pysigline{\bfcode{krb5\_const\_principal}}
13784
\end{fulllineitems}
13787
Constant version of {\hyperref[appdev/refs/types/krb5_principal_data:krb5_principal_data]{\code{krb5\_principal\_data}}} .
13790
\paragraph{Declaration}
13791
\label{appdev/refs/types/krb5_const_principal:declaration}
13792
typedef const krb5\_principal\_data* krb5\_const\_principal
13795
\paragraph{Members}
13796
\label{appdev/refs/types/krb5_const_principal:members}\index{krb5\_const\_principal.magic (C member)}
13798
\begin{fulllineitems}
13799
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_const\_principal.magic}}
13800
\end{fulllineitems}
13802
\index{krb5\_const\_principal.realm (C member)}
13804
\begin{fulllineitems}
13805
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.realm}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_const\_principal.realm}}
13806
\end{fulllineitems}
13808
\index{krb5\_const\_principal.data (C member)}
13810
\begin{fulllineitems}
13811
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.data}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_const\_principal.data}}
13812
An array of strings.
13814
\end{fulllineitems}
13816
\index{krb5\_const\_principal.length (C member)}
13818
\begin{fulllineitems}
13819
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.length}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_const\_principal.length}}
13820
\end{fulllineitems}
13822
\index{krb5\_const\_principal.type (C member)}
13824
\begin{fulllineitems}
13825
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal.type}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_const\_principal.type}}
13826
\end{fulllineitems}
13830
\subsubsection{krb5\_prompt}
13831
\label{appdev/refs/types/krb5_prompt:krb5-prompt}\label{appdev/refs/types/krb5_prompt::doc}\label{appdev/refs/types/krb5_prompt:krb5-prompt-struct}\index{krb5\_prompt (C type)}
13833
\begin{fulllineitems}
13834
\phantomsection\label{appdev/refs/types/krb5_prompt:krb5_prompt}\pysigline{\bfcode{krb5\_prompt}}
13835
\end{fulllineitems}
13838
Text for prompt used in prompter callback function.
13841
\paragraph{Declaration}
13842
\label{appdev/refs/types/krb5_prompt:declaration}
13843
typedef struct \_krb5\_prompt krb5\_prompt
13846
\paragraph{Members}
13847
\label{appdev/refs/types/krb5_prompt:members}\index{krb5\_prompt.prompt (C member)}
13849
\begin{fulllineitems}
13850
\phantomsection\label{appdev/refs/types/krb5_prompt:krb5_prompt.prompt}\pysigline{char * \bfcode{krb5\_prompt.prompt}}
13851
The prompt to show to the user.
13853
\end{fulllineitems}
13855
\index{krb5\_prompt.hidden (C member)}
13857
\begin{fulllineitems}
13858
\phantomsection\label{appdev/refs/types/krb5_prompt:krb5_prompt.hidden}\pysigline{int \bfcode{krb5\_prompt.hidden}}
13859
Boolean; informative prompt or hidden (e.g.
13862
\end{fulllineitems}
13864
\index{krb5\_prompt.reply (C member)}
13866
\begin{fulllineitems}
13867
\phantomsection\label{appdev/refs/types/krb5_prompt:krb5_prompt.reply}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{krb5\_prompt.reply}}
13868
Must be allocated before call to prompt routine.
13870
\end{fulllineitems}
13874
\subsubsection{krb5\_prompt\_type}
13875
\label{appdev/refs/types/krb5_prompt_type:krb5-prompt-type-struct}\label{appdev/refs/types/krb5_prompt_type:krb5-prompt-type}\label{appdev/refs/types/krb5_prompt_type::doc}\index{krb5\_prompt\_type (C type)}
13877
\begin{fulllineitems}
13878
\phantomsection\label{appdev/refs/types/krb5_prompt_type:krb5_prompt_type}\pysigline{\bfcode{krb5\_prompt\_type}}
13879
\end{fulllineitems}
13883
\paragraph{Declaration}
13884
\label{appdev/refs/types/krb5_prompt_type:declaration}
13885
typedef krb5\_int32 krb5\_prompt\_type
13888
\subsubsection{krb5\_prompter\_fct}
13889
\label{appdev/refs/types/krb5_prompter_fct:krb5-prompter-fct-struct}\label{appdev/refs/types/krb5_prompter_fct:krb5-prompter-fct}\label{appdev/refs/types/krb5_prompter_fct::doc}\index{krb5\_prompter\_fct (C type)}
13891
\begin{fulllineitems}
13892
\phantomsection\label{appdev/refs/types/krb5_prompter_fct:krb5_prompter_fct}\pysigline{\bfcode{krb5\_prompter\_fct}}
13893
\end{fulllineitems}
13896
Pointer to a prompter callback function.
13899
\paragraph{Declaration}
13900
\label{appdev/refs/types/krb5_prompter_fct:declaration}
13901
typedef krb5\_error\_code( * krb5\_prompter\_fct)(krb5\_context context, void *data, const char *name, const char *banner, int num\_prompts, krb5\_prompt prompts{[}{]})
13904
\subsubsection{krb5\_pwd\_data}
13905
\label{appdev/refs/types/krb5_pwd_data:krb5-pwd-data}\label{appdev/refs/types/krb5_pwd_data::doc}\label{appdev/refs/types/krb5_pwd_data:krb5-pwd-data-struct}\index{krb5\_pwd\_data (C type)}
13907
\begin{fulllineitems}
13908
\phantomsection\label{appdev/refs/types/krb5_pwd_data:krb5_pwd_data}\pysigline{\bfcode{krb5\_pwd\_data}}
13909
\end{fulllineitems}
13913
\paragraph{Declaration}
13914
\label{appdev/refs/types/krb5_pwd_data:declaration}
13915
typedef struct \_krb5\_pwd\_data krb5\_pwd\_data
13918
\paragraph{Members}
13919
\label{appdev/refs/types/krb5_pwd_data:members}\index{krb5\_pwd\_data.magic (C member)}
13921
\begin{fulllineitems}
13922
\phantomsection\label{appdev/refs/types/krb5_pwd_data:krb5_pwd_data.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_pwd\_data.magic}}
13923
\end{fulllineitems}
13925
\index{krb5\_pwd\_data.sequence\_count (C member)}
13927
\begin{fulllineitems}
13928
\phantomsection\label{appdev/refs/types/krb5_pwd_data:krb5_pwd_data.sequence_count}\pysigline{int \bfcode{krb5\_pwd\_data.sequence\_count}}
13929
\end{fulllineitems}
13931
\index{krb5\_pwd\_data.element (C member)}
13933
\begin{fulllineitems}
13934
\phantomsection\label{appdev/refs/types/krb5_pwd_data:krb5_pwd_data.element}\pysigline{{\hyperref[appdev/refs/types/passwd_phrase_element:passwd_phrase_element]{passwd\_phrase\_element}} ** \bfcode{krb5\_pwd\_data.element}}
13935
\end{fulllineitems}
13939
\subsubsection{krb5\_responder\_fn}
13940
\label{appdev/refs/types/krb5_responder_fn:krb5-responder-fn-struct}\label{appdev/refs/types/krb5_responder_fn::doc}\label{appdev/refs/types/krb5_responder_fn:krb5-responder-fn}\index{krb5\_responder\_fn (C type)}
13942
\begin{fulllineitems}
13943
\phantomsection\label{appdev/refs/types/krb5_responder_fn:krb5_responder_fn}\pysigline{\bfcode{krb5\_responder\_fn}}
13944
\end{fulllineitems}
13947
Responder function for an initial credential exchange.
13949
If a required question is unanswered, the prompter may be called.
13952
\paragraph{Declaration}
13953
\label{appdev/refs/types/krb5_responder_fn:declaration}
13954
typedef krb5\_error\_code( * krb5\_responder\_fn)(krb5\_context ctx, void *data, krb5\_responder\_context rctx)
13957
\subsubsection{krb5\_responder\_otp\_challenge}
13958
\label{appdev/refs/types/krb5_responder_otp_challenge:krb5-responder-otp-challenge}\label{appdev/refs/types/krb5_responder_otp_challenge:krb5-responder-otp-challenge-struct}\label{appdev/refs/types/krb5_responder_otp_challenge::doc}\index{krb5\_responder\_otp\_challenge (C type)}
13960
\begin{fulllineitems}
13961
\phantomsection\label{appdev/refs/types/krb5_responder_otp_challenge:krb5_responder_otp_challenge}\pysigline{\bfcode{krb5\_responder\_otp\_challenge}}
13962
\end{fulllineitems}
13966
\paragraph{Declaration}
13967
\label{appdev/refs/types/krb5_responder_otp_challenge:declaration}
13968
typedef struct \_krb5\_responder\_otp\_challenge krb5\_responder\_otp\_challenge
13971
\paragraph{Members}
13972
\label{appdev/refs/types/krb5_responder_otp_challenge:members}\index{krb5\_responder\_otp\_challenge.service (C member)}
13974
\begin{fulllineitems}
13975
\phantomsection\label{appdev/refs/types/krb5_responder_otp_challenge:krb5_responder_otp_challenge.service}\pysigline{char * \bfcode{krb5\_responder\_otp\_challenge.service}}
13976
\end{fulllineitems}
13978
\index{krb5\_responder\_otp\_challenge.tokeninfo (C member)}
13980
\begin{fulllineitems}
13981
\phantomsection\label{appdev/refs/types/krb5_responder_otp_challenge:krb5_responder_otp_challenge.tokeninfo}\pysigline{{\hyperref[appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo]{krb5\_responder\_otp\_tokeninfo}} ** \bfcode{krb5\_responder\_otp\_challenge.tokeninfo}}
13982
\end{fulllineitems}
13986
\subsubsection{krb5\_responder\_otp\_tokeninfo}
13987
\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5-responder-otp-tokeninfo}\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5-responder-otp-tokeninfo-struct}\label{appdev/refs/types/krb5_responder_otp_tokeninfo::doc}\index{krb5\_responder\_otp\_tokeninfo (C type)}
13989
\begin{fulllineitems}
13990
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo}\pysigline{\bfcode{krb5\_responder\_otp\_tokeninfo}}
13991
\end{fulllineitems}
13995
\paragraph{Declaration}
13996
\label{appdev/refs/types/krb5_responder_otp_tokeninfo:declaration}
13997
typedef struct \_krb5\_responder\_otp\_tokeninfo krb5\_responder\_otp\_tokeninfo
14000
\paragraph{Members}
14001
\label{appdev/refs/types/krb5_responder_otp_tokeninfo:members}\index{krb5\_responder\_otp\_tokeninfo.flags (C member)}
14003
\begin{fulllineitems}
14004
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_responder\_otp\_tokeninfo.flags}}
14005
\end{fulllineitems}
14007
\index{krb5\_responder\_otp\_tokeninfo.format (C member)}
14009
\begin{fulllineitems}
14010
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.format}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_responder\_otp\_tokeninfo.format}}
14011
\end{fulllineitems}
14013
\index{krb5\_responder\_otp\_tokeninfo.length (C member)}
14015
\begin{fulllineitems}
14016
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.length}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_responder\_otp\_tokeninfo.length}}
14017
\end{fulllineitems}
14019
\index{krb5\_responder\_otp\_tokeninfo.vendor (C member)}
14021
\begin{fulllineitems}
14022
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.vendor}\pysigline{char * \bfcode{krb5\_responder\_otp\_tokeninfo.vendor}}
14023
\end{fulllineitems}
14025
\index{krb5\_responder\_otp\_tokeninfo.challenge (C member)}
14027
\begin{fulllineitems}
14028
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.challenge}\pysigline{char * \bfcode{krb5\_responder\_otp\_tokeninfo.challenge}}
14029
\end{fulllineitems}
14031
\index{krb5\_responder\_otp\_tokeninfo.token\_id (C member)}
14033
\begin{fulllineitems}
14034
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.token_id}\pysigline{char * \bfcode{krb5\_responder\_otp\_tokeninfo.token\_id}}
14035
\end{fulllineitems}
14037
\index{krb5\_responder\_otp\_tokeninfo.alg\_id (C member)}
14039
\begin{fulllineitems}
14040
\phantomsection\label{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5_responder_otp_tokeninfo.alg_id}\pysigline{char * \bfcode{krb5\_responder\_otp\_tokeninfo.alg\_id}}
14041
\end{fulllineitems}
14045
\subsubsection{krb5\_response}
14046
\label{appdev/refs/types/krb5_response::doc}\label{appdev/refs/types/krb5_response:krb5-response}\label{appdev/refs/types/krb5_response:krb5-response-struct}\index{krb5\_response (C type)}
14048
\begin{fulllineitems}
14049
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response}\pysigline{\bfcode{krb5\_response}}
14050
\end{fulllineitems}
14054
\paragraph{Declaration}
14055
\label{appdev/refs/types/krb5_response:declaration}
14056
typedef struct \_krb5\_response krb5\_response
14059
\paragraph{Members}
14060
\label{appdev/refs/types/krb5_response:members}\index{krb5\_response.magic (C member)}
14062
\begin{fulllineitems}
14063
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_response.magic}}
14064
\end{fulllineitems}
14066
\index{krb5\_response.message\_type (C member)}
14068
\begin{fulllineitems}
14069
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response.message_type}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} \bfcode{krb5\_response.message\_type}}
14070
\end{fulllineitems}
14072
\index{krb5\_response.response (C member)}
14074
\begin{fulllineitems}
14075
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response.response}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_response.response}}
14076
\end{fulllineitems}
14078
\index{krb5\_response.expected\_nonce (C member)}
14080
\begin{fulllineitems}
14081
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response.expected_nonce}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_response.expected\_nonce}}
14082
\end{fulllineitems}
14084
\index{krb5\_response.request\_time (C member)}
14086
\begin{fulllineitems}
14087
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response.request_time}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_response.request\_time}}
14088
\end{fulllineitems}
14092
\subsubsection{krb5\_replay\_data}
14093
\label{appdev/refs/types/krb5_replay_data:krb5-replay-data}\label{appdev/refs/types/krb5_replay_data:krb5-replay-data-struct}\label{appdev/refs/types/krb5_replay_data::doc}\index{krb5\_replay\_data (C type)}
14095
\begin{fulllineitems}
14096
\phantomsection\label{appdev/refs/types/krb5_replay_data:krb5_replay_data}\pysigline{\bfcode{krb5\_replay\_data}}
14097
\end{fulllineitems}
14102
Sequence number and timestamp information output by \code{krb5\_rd\_priv()} and \code{krb5\_rd\_safe()} .
14105
\paragraph{Declaration}
14106
\label{appdev/refs/types/krb5_replay_data:declaration}
14107
typedef struct krb5\_replay\_data krb5\_replay\_data
14110
\paragraph{Members}
14111
\label{appdev/refs/types/krb5_replay_data:members}\index{krb5\_replay\_data.timestamp (C member)}
14113
\begin{fulllineitems}
14114
\phantomsection\label{appdev/refs/types/krb5_replay_data:krb5_replay_data.timestamp}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_replay\_data.timestamp}}
14115
Timestamp, seconds portion.
14117
\end{fulllineitems}
14119
\index{krb5\_replay\_data.usec (C member)}
14121
\begin{fulllineitems}
14122
\phantomsection\label{appdev/refs/types/krb5_replay_data:krb5_replay_data.usec}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_replay\_data.usec}}
14123
Timestamp, microseconds portion.
14125
\end{fulllineitems}
14127
\index{krb5\_replay\_data.seq (C member)}
14129
\begin{fulllineitems}
14130
\phantomsection\label{appdev/refs/types/krb5_replay_data:krb5_replay_data.seq}\pysigline{{\hyperref[appdev/refs/types/krb5_ui_4:krb5_ui_4]{krb5\_ui\_4}} \bfcode{krb5\_replay\_data.seq}}
14133
\end{fulllineitems}
14137
\subsubsection{krb5\_ticket}
14138
\label{appdev/refs/types/krb5_ticket:krb5-ticket}\label{appdev/refs/types/krb5_ticket::doc}\label{appdev/refs/types/krb5_ticket:krb5-ticket-struct}\index{krb5\_ticket (C type)}
14140
\begin{fulllineitems}
14141
\phantomsection\label{appdev/refs/types/krb5_ticket:krb5_ticket}\pysigline{\bfcode{krb5\_ticket}}
14142
\end{fulllineitems}
14147
The C representation of the ticket message, with a pointer to the C representation of the encrypted part.
14150
\paragraph{Declaration}
14151
\label{appdev/refs/types/krb5_ticket:declaration}
14152
typedef struct \_krb5\_ticket krb5\_ticket
14155
\paragraph{Members}
14156
\label{appdev/refs/types/krb5_ticket:members}\index{krb5\_ticket.magic (C member)}
14158
\begin{fulllineitems}
14159
\phantomsection\label{appdev/refs/types/krb5_ticket:krb5_ticket.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_ticket.magic}}
14160
\end{fulllineitems}
14162
\index{krb5\_ticket.server (C member)}
14164
\begin{fulllineitems}
14165
\phantomsection\label{appdev/refs/types/krb5_ticket:krb5_ticket.server}\pysigline{{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{krb5\_principal}} \bfcode{krb5\_ticket.server}}
14168
\end{fulllineitems}
14170
\index{krb5\_ticket.enc\_part (C member)}
14172
\begin{fulllineitems}
14173
\phantomsection\label{appdev/refs/types/krb5_ticket:krb5_ticket.enc_part}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_data:krb5_enc_data]{krb5\_enc\_data}} \bfcode{krb5\_ticket.enc\_part}}
14174
encryption type, kvno, encrypted encoding
14176
\end{fulllineitems}
14178
\index{krb5\_ticket.enc\_part2 (C member)}
14180
\begin{fulllineitems}
14181
\phantomsection\label{appdev/refs/types/krb5_ticket:krb5_ticket.enc_part2}\pysigline{{\hyperref[appdev/refs/types/krb5_enc_tkt_part:krb5_enc_tkt_part]{krb5\_enc\_tkt\_part}} * \bfcode{krb5\_ticket.enc\_part2}}
14182
ptr to decrypted version, if available
14184
\end{fulllineitems}
14188
\subsubsection{krb5\_ticket\_times}
14189
\label{appdev/refs/types/krb5_ticket_times:krb5-ticket-times}\label{appdev/refs/types/krb5_ticket_times:krb5-ticket-times-struct}\label{appdev/refs/types/krb5_ticket_times::doc}\index{krb5\_ticket\_times (C type)}
14191
\begin{fulllineitems}
14192
\phantomsection\label{appdev/refs/types/krb5_ticket_times:krb5_ticket_times}\pysigline{\bfcode{krb5\_ticket\_times}}
14193
\end{fulllineitems}
14196
Ticket start time, end time, and renewal duration.
14199
\paragraph{Declaration}
14200
\label{appdev/refs/types/krb5_ticket_times:declaration}
14201
typedef struct \_krb5\_ticket\_times krb5\_ticket\_times
14204
\paragraph{Members}
14205
\label{appdev/refs/types/krb5_ticket_times:members}\index{krb5\_ticket\_times.authtime (C member)}
14207
\begin{fulllineitems}
14208
\phantomsection\label{appdev/refs/types/krb5_ticket_times:krb5_ticket_times.authtime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_ticket\_times.authtime}}
14209
Time at which KDC issued the initial ticket that corresponds to this ticket.
14211
\end{fulllineitems}
14213
\index{krb5\_ticket\_times.starttime (C member)}
14215
\begin{fulllineitems}
14216
\phantomsection\label{appdev/refs/types/krb5_ticket_times:krb5_ticket_times.starttime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_ticket\_times.starttime}}
14217
optional in ticket, if not present, use \emph{authtime}
14219
\end{fulllineitems}
14221
\index{krb5\_ticket\_times.endtime (C member)}
14223
\begin{fulllineitems}
14224
\phantomsection\label{appdev/refs/types/krb5_ticket_times:krb5_ticket_times.endtime}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_ticket\_times.endtime}}
14225
Ticket expiration time.
14227
\end{fulllineitems}
14229
\index{krb5\_ticket\_times.renew\_till (C member)}
14231
\begin{fulllineitems}
14232
\phantomsection\label{appdev/refs/types/krb5_ticket_times:krb5_ticket_times.renew_till}\pysigline{{\hyperref[appdev/refs/types/krb5_timestamp:krb5_timestamp]{krb5\_timestamp}} \bfcode{krb5\_ticket\_times.renew\_till}}
14233
Latest time at which renewal of ticket can be valid.
14235
\end{fulllineitems}
14239
\subsubsection{krb5\_timestamp}
14240
\label{appdev/refs/types/krb5_timestamp:krb5-timestamp-struct}\label{appdev/refs/types/krb5_timestamp::doc}\label{appdev/refs/types/krb5_timestamp:krb5-timestamp}\index{krb5\_timestamp (C type)}
14242
\begin{fulllineitems}
14243
\phantomsection\label{appdev/refs/types/krb5_timestamp:krb5_timestamp}\pysigline{\bfcode{krb5\_timestamp}}
14244
\end{fulllineitems}
14248
\paragraph{Declaration}
14249
\label{appdev/refs/types/krb5_timestamp:declaration}
14250
typedef krb5\_int32 krb5\_timestamp
14253
\subsubsection{krb5\_tkt\_authent}
14254
\label{appdev/refs/types/krb5_tkt_authent:krb5-tkt-authent}\label{appdev/refs/types/krb5_tkt_authent:krb5-tkt-authent-struct}\label{appdev/refs/types/krb5_tkt_authent::doc}\index{krb5\_tkt\_authent (C type)}
14256
\begin{fulllineitems}
14257
\phantomsection\label{appdev/refs/types/krb5_tkt_authent:krb5_tkt_authent}\pysigline{\bfcode{krb5\_tkt\_authent}}
14258
\end{fulllineitems}
14261
Ticket authentication data.
14264
\paragraph{Declaration}
14265
\label{appdev/refs/types/krb5_tkt_authent:declaration}
14266
typedef struct \_krb5\_tkt\_authent krb5\_tkt\_authent
14269
\paragraph{Members}
14270
\label{appdev/refs/types/krb5_tkt_authent:members}\index{krb5\_tkt\_authent.magic (C member)}
14272
\begin{fulllineitems}
14273
\phantomsection\label{appdev/refs/types/krb5_tkt_authent:krb5_tkt_authent.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_tkt\_authent.magic}}
14274
\end{fulllineitems}
14276
\index{krb5\_tkt\_authent.ticket (C member)}
14278
\begin{fulllineitems}
14279
\phantomsection\label{appdev/refs/types/krb5_tkt_authent:krb5_tkt_authent.ticket}\pysigline{{\hyperref[appdev/refs/types/krb5_ticket:krb5_ticket]{krb5\_ticket}} * \bfcode{krb5\_tkt\_authent.ticket}}
14280
\end{fulllineitems}
14282
\index{krb5\_tkt\_authent.authenticator (C member)}
14284
\begin{fulllineitems}
14285
\phantomsection\label{appdev/refs/types/krb5_tkt_authent:krb5_tkt_authent.authenticator}\pysigline{{\hyperref[appdev/refs/types/krb5_authenticator:krb5_authenticator]{krb5\_authenticator}} * \bfcode{krb5\_tkt\_authent.authenticator}}
14286
\end{fulllineitems}
14288
\index{krb5\_tkt\_authent.ap\_options (C member)}
14290
\begin{fulllineitems}
14291
\phantomsection\label{appdev/refs/types/krb5_tkt_authent:krb5_tkt_authent.ap_options}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_tkt\_authent.ap\_options}}
14292
\end{fulllineitems}
14296
\subsubsection{krb5\_trace\_callback}
14297
\label{appdev/refs/types/krb5_trace_callback:krb5-trace-callback-struct}\label{appdev/refs/types/krb5_trace_callback:krb5-trace-callback}\label{appdev/refs/types/krb5_trace_callback::doc}\index{krb5\_trace\_callback (C type)}
14299
\begin{fulllineitems}
14300
\phantomsection\label{appdev/refs/types/krb5_trace_callback:krb5_trace_callback}\pysigline{\bfcode{krb5\_trace\_callback}}
14301
\end{fulllineitems}
14305
\paragraph{Declaration}
14306
\label{appdev/refs/types/krb5_trace_callback:declaration}
14307
typedef void( * krb5\_trace\_callback)(krb5\_context context, const krb5\_trace\_info *info, void *cb\_data)
14310
\subsubsection{krb5\_trace\_info}
14311
\label{appdev/refs/types/krb5_trace_info:krb5-trace-info-struct}\label{appdev/refs/types/krb5_trace_info::doc}\label{appdev/refs/types/krb5_trace_info:krb5-trace-info}\index{krb5\_trace\_info (C type)}
14313
\begin{fulllineitems}
14314
\phantomsection\label{appdev/refs/types/krb5_trace_info:krb5_trace_info}\pysigline{\bfcode{krb5\_trace\_info}}
14315
\end{fulllineitems}
14318
A wrapper for passing information to a \emph{krb5\_trace\_callback} .
14320
Currently, it only contains the formatted message as determined the the format string and arguments of the tracing macro, but it may be extended to contain more fields in the future.
14323
\paragraph{Declaration}
14324
\label{appdev/refs/types/krb5_trace_info:declaration}
14325
typedef struct \_krb5\_trace\_info krb5\_trace\_info
14328
\paragraph{Members}
14329
\label{appdev/refs/types/krb5_trace_info:members}\index{krb5\_trace\_info.message (C member)}
14331
\begin{fulllineitems}
14332
\phantomsection\label{appdev/refs/types/krb5_trace_info:krb5_trace_info.message}\pysigline{const char * \bfcode{krb5\_trace\_info.message}}
14333
\end{fulllineitems}
14337
\subsubsection{krb5\_transited}
14338
\label{appdev/refs/types/krb5_transited:krb5-transited-struct}\label{appdev/refs/types/krb5_transited::doc}\label{appdev/refs/types/krb5_transited:krb5-transited}\index{krb5\_transited (C type)}
14340
\begin{fulllineitems}
14341
\phantomsection\label{appdev/refs/types/krb5_transited:krb5_transited}\pysigline{\bfcode{krb5\_transited}}
14342
\end{fulllineitems}
14345
Structure for transited encoding.
14348
\paragraph{Declaration}
14349
\label{appdev/refs/types/krb5_transited:declaration}
14350
typedef struct \_krb5\_transited krb5\_transited
14353
\paragraph{Members}
14354
\label{appdev/refs/types/krb5_transited:members}\index{krb5\_transited.magic (C member)}
14356
\begin{fulllineitems}
14357
\phantomsection\label{appdev/refs/types/krb5_transited:krb5_transited.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_transited.magic}}
14358
\end{fulllineitems}
14360
\index{krb5\_transited.tr\_type (C member)}
14362
\begin{fulllineitems}
14363
\phantomsection\label{appdev/refs/types/krb5_transited:krb5_transited.tr_type}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} \bfcode{krb5\_transited.tr\_type}}
14364
Transited encoding type.
14366
\end{fulllineitems}
14368
\index{krb5\_transited.tr\_contents (C member)}
14370
\begin{fulllineitems}
14371
\phantomsection\label{appdev/refs/types/krb5_transited:krb5_transited.tr_contents}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} \bfcode{krb5\_transited.tr\_contents}}
14374
\end{fulllineitems}
14378
\subsubsection{krb5\_typed\_data}
14379
\label{appdev/refs/types/krb5_typed_data:krb5-typed-data-struct}\label{appdev/refs/types/krb5_typed_data::doc}\label{appdev/refs/types/krb5_typed_data:krb5-typed-data}\index{krb5\_typed\_data (C type)}
14381
\begin{fulllineitems}
14382
\phantomsection\label{appdev/refs/types/krb5_typed_data:krb5_typed_data}\pysigline{\bfcode{krb5\_typed\_data}}
14383
\end{fulllineitems}
14387
\paragraph{Declaration}
14388
\label{appdev/refs/types/krb5_typed_data:declaration}
14389
typedef struct \_krb5\_typed\_data krb5\_typed\_data
14392
\paragraph{Members}
14393
\label{appdev/refs/types/krb5_typed_data:members}\index{krb5\_typed\_data.magic (C member)}
14395
\begin{fulllineitems}
14396
\phantomsection\label{appdev/refs/types/krb5_typed_data:krb5_typed_data.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{krb5\_typed\_data.magic}}
14397
\end{fulllineitems}
14399
\index{krb5\_typed\_data.type (C member)}
14401
\begin{fulllineitems}
14402
\phantomsection\label{appdev/refs/types/krb5_typed_data:krb5_typed_data.type}\pysigline{{\hyperref[appdev/refs/types/krb5_int32:krb5_int32]{krb5\_int32}} \bfcode{krb5\_typed\_data.type}}
14403
\end{fulllineitems}
14405
\index{krb5\_typed\_data.length (C member)}
14407
\begin{fulllineitems}
14408
\phantomsection\label{appdev/refs/types/krb5_typed_data:krb5_typed_data.length}\pysigline{unsigned int \bfcode{krb5\_typed\_data.length}}
14409
\end{fulllineitems}
14411
\index{krb5\_typed\_data.data (C member)}
14413
\begin{fulllineitems}
14414
\phantomsection\label{appdev/refs/types/krb5_typed_data:krb5_typed_data.data}\pysigline{{\hyperref[appdev/refs/types/krb5_octet:krb5_octet]{krb5\_octet}} * \bfcode{krb5\_typed\_data.data}}
14415
\end{fulllineitems}
14419
\subsubsection{krb5\_ui\_4}
14420
\label{appdev/refs/types/krb5_ui_4:krb5-ui-4}\label{appdev/refs/types/krb5_ui_4::doc}\label{appdev/refs/types/krb5_ui_4:krb5-ui4-struct}\index{krb5\_ui\_4 (C type)}
14422
\begin{fulllineitems}
14423
\phantomsection\label{appdev/refs/types/krb5_ui_4:krb5_ui_4}\pysigline{\bfcode{krb5\_ui\_4}}
14424
\end{fulllineitems}
14427
krb5\_ui\_4 is an unsigned 32-bit integer type.
14430
\subsubsection{krb5\_verify\_init\_creds\_opt}
14431
\label{appdev/refs/types/krb5_verify_init_creds_opt:krb5-verify-init-creds-opt-struct}\label{appdev/refs/types/krb5_verify_init_creds_opt::doc}\label{appdev/refs/types/krb5_verify_init_creds_opt:krb5-verify-init-creds-opt}\index{krb5\_verify\_init\_creds\_opt (C type)}
14433
\begin{fulllineitems}
14434
\phantomsection\label{appdev/refs/types/krb5_verify_init_creds_opt:krb5_verify_init_creds_opt}\pysigline{\bfcode{krb5\_verify\_init\_creds\_opt}}
14435
\end{fulllineitems}
14439
\paragraph{Declaration}
14440
\label{appdev/refs/types/krb5_verify_init_creds_opt:declaration}
14441
typedef struct \_krb5\_verify\_init\_creds\_opt krb5\_verify\_init\_creds\_opt
14444
\paragraph{Members}
14445
\label{appdev/refs/types/krb5_verify_init_creds_opt:members}\index{krb5\_verify\_init\_creds\_opt.flags (C member)}
14447
\begin{fulllineitems}
14448
\phantomsection\label{appdev/refs/types/krb5_verify_init_creds_opt:krb5_verify_init_creds_opt.flags}\pysigline{{\hyperref[appdev/refs/types/krb5_flags:krb5_flags]{krb5\_flags}} \bfcode{krb5\_verify\_init\_creds\_opt.flags}}
14449
\end{fulllineitems}
14451
\index{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail (C member)}
14453
\begin{fulllineitems}
14454
\phantomsection\label{appdev/refs/types/krb5_verify_init_creds_opt:krb5_verify_init_creds_opt.ap_req_nofail}\pysigline{int \bfcode{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail}}
14457
\end{fulllineitems}
14461
\subsubsection{passwd\_phrase\_element}
14462
\label{appdev/refs/types/passwd_phrase_element:passwd-phrase-element-struct}\label{appdev/refs/types/passwd_phrase_element::doc}\label{appdev/refs/types/passwd_phrase_element:passwd-phrase-element}\index{passwd\_phrase\_element (C type)}
14464
\begin{fulllineitems}
14465
\phantomsection\label{appdev/refs/types/passwd_phrase_element:passwd_phrase_element}\pysigline{\bfcode{passwd\_phrase\_element}}
14466
\end{fulllineitems}
14470
\paragraph{Declaration}
14471
\label{appdev/refs/types/passwd_phrase_element:declaration}
14472
typedef struct \_passwd\_phrase\_element passwd\_phrase\_element
14475
\paragraph{Members}
14476
\label{appdev/refs/types/passwd_phrase_element:members}\index{passwd\_phrase\_element.magic (C member)}
14478
\begin{fulllineitems}
14479
\phantomsection\label{appdev/refs/types/passwd_phrase_element:passwd_phrase_element.magic}\pysigline{{\hyperref[appdev/refs/types/krb5_magic:krb5_magic]{krb5\_magic}} \bfcode{passwd\_phrase\_element.magic}}
14480
\end{fulllineitems}
14482
\index{passwd\_phrase\_element.passwd (C member)}
14484
\begin{fulllineitems}
14485
\phantomsection\label{appdev/refs/types/passwd_phrase_element:passwd_phrase_element.passwd}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{passwd\_phrase\_element.passwd}}
14486
\end{fulllineitems}
14488
\index{passwd\_phrase\_element.phrase (C member)}
14490
\begin{fulllineitems}
14491
\phantomsection\label{appdev/refs/types/passwd_phrase_element:passwd_phrase_element.phrase}\pysigline{{\hyperref[appdev/refs/types/krb5_data:krb5_data]{krb5\_data}} * \bfcode{passwd\_phrase\_element.phrase}}
14492
\end{fulllineitems}
14496
\subsection{Internal}
14497
\label{appdev/refs/types/index:internal}
14499
\subsubsection{krb5\_auth\_context}
14500
\label{appdev/refs/types/krb5_auth_context:krb5-auth-context}\label{appdev/refs/types/krb5_auth_context::doc}\label{appdev/refs/types/krb5_auth_context:krb5-auth-context-struct}\index{krb5\_auth\_context (C type)}
14502
\begin{fulllineitems}
14503
\phantomsection\label{appdev/refs/types/krb5_auth_context:krb5_auth_context}\pysigline{\bfcode{krb5\_auth\_context}}
14504
\end{fulllineitems}
14508
\paragraph{Declaration}
14509
\label{appdev/refs/types/krb5_auth_context:declaration}
14510
typedef struct \_krb5\_auth\_context* krb5\_auth\_context
14513
\subsubsection{krb5\_cksumtype}
14514
\label{appdev/refs/types/krb5_cksumtype:krb5-cksumtype}\label{appdev/refs/types/krb5_cksumtype:krb5-cksumtype-struct}\label{appdev/refs/types/krb5_cksumtype::doc}\index{krb5\_cksumtype (C type)}
14516
\begin{fulllineitems}
14517
\phantomsection\label{appdev/refs/types/krb5_cksumtype:krb5_cksumtype}\pysigline{\bfcode{krb5\_cksumtype}}
14518
\end{fulllineitems}
14522
\paragraph{Declaration}
14523
\label{appdev/refs/types/krb5_cksumtype:declaration}
14524
typedef krb5\_int32 krb5\_cksumtype
14527
\subsubsection{krb5\_context}
14528
\label{appdev/refs/types/krb5_context:krb5-context}\label{appdev/refs/types/krb5_context:krb5-context-struct}\label{appdev/refs/types/krb5_context::doc}\index{krb5\_context (C type)}
14530
\begin{fulllineitems}
14531
\phantomsection\label{appdev/refs/types/krb5_context:krb5_context}\pysigline{\bfcode{krb5\_context}}
14532
\end{fulllineitems}
14536
\paragraph{Declaration}
14537
\label{appdev/refs/types/krb5_context:declaration}
14538
typedef struct \_krb5\_context* krb5\_context
14541
\subsubsection{krb5\_cc\_cursor}
14542
\label{appdev/refs/types/krb5_cc_cursor:krb5-cc-cursor-struct}\label{appdev/refs/types/krb5_cc_cursor:krb5-cc-cursor}\label{appdev/refs/types/krb5_cc_cursor::doc}\index{krb5\_cc\_cursor (C type)}
14544
\begin{fulllineitems}
14545
\phantomsection\label{appdev/refs/types/krb5_cc_cursor:krb5_cc_cursor}\pysigline{\bfcode{krb5\_cc\_cursor}}
14546
\end{fulllineitems}
14549
Cursor for sequential lookup.
14552
\paragraph{Declaration}
14553
\label{appdev/refs/types/krb5_cc_cursor:declaration}
14554
typedef krb5\_pointer krb5\_cc\_cursor
14557
\subsubsection{krb5\_ccache}
14558
\label{appdev/refs/types/krb5_ccache:krb5-ccache-struct}\label{appdev/refs/types/krb5_ccache::doc}\label{appdev/refs/types/krb5_ccache:krb5-ccache}\index{krb5\_ccache (C type)}
14560
\begin{fulllineitems}
14561
\phantomsection\label{appdev/refs/types/krb5_ccache:krb5_ccache}\pysigline{\bfcode{krb5\_ccache}}
14562
\end{fulllineitems}
14566
\paragraph{Declaration}
14567
\label{appdev/refs/types/krb5_ccache:declaration}
14568
typedef struct \_krb5\_ccache* krb5\_ccache
14571
\subsubsection{krb5\_cccol\_cursor}
14572
\label{appdev/refs/types/krb5_cccol_cursor:krb5-cccol-cursor-struct}\label{appdev/refs/types/krb5_cccol_cursor::doc}\label{appdev/refs/types/krb5_cccol_cursor:krb5-cccol-cursor}\index{krb5\_cccol\_cursor (C type)}
14574
\begin{fulllineitems}
14575
\phantomsection\label{appdev/refs/types/krb5_cccol_cursor:krb5_cccol_cursor}\pysigline{\bfcode{krb5\_cccol\_cursor}}
14576
\end{fulllineitems}
14579
Cursor for iterating over all ccaches.
14582
\paragraph{Declaration}
14583
\label{appdev/refs/types/krb5_cccol_cursor:declaration}
14584
typedef struct \_krb5\_cccol\_cursor* krb5\_cccol\_cursor
14587
\subsubsection{krb5\_init\_creds\_context}
14588
\label{appdev/refs/types/krb5_init_creds_context:krb5-init-creds-context}\label{appdev/refs/types/krb5_init_creds_context::doc}\label{appdev/refs/types/krb5_init_creds_context:krb5-init-creds-context-struct}\index{krb5\_init\_creds\_context (C type)}
14590
\begin{fulllineitems}
14591
\phantomsection\label{appdev/refs/types/krb5_init_creds_context:krb5_init_creds_context}\pysigline{\bfcode{krb5\_init\_creds\_context}}
14592
\end{fulllineitems}
14596
\paragraph{Declaration}
14597
\label{appdev/refs/types/krb5_init_creds_context:declaration}
14598
typedef struct \_krb5\_init\_creds\_context* krb5\_init\_creds\_context
14601
\subsubsection{krb5\_key}
14602
\label{appdev/refs/types/krb5_key::doc}\label{appdev/refs/types/krb5_key:krb5-key}\label{appdev/refs/types/krb5_key:krb5-key-struct}\index{krb5\_key (C type)}
14604
\begin{fulllineitems}
14605
\phantomsection\label{appdev/refs/types/krb5_key:krb5_key}\pysigline{\bfcode{krb5\_key}}
14606
\end{fulllineitems}
14609
Opaque identifier for a key.
14611
Use with the krb5\_k APIs for better performance for repeated operations with the same key and usage. Key identifiers must not be used simultaneously within multiple threads, as they may contain mutable internal state and are not mutex-protected.
14614
\paragraph{Declaration}
14615
\label{appdev/refs/types/krb5_key:declaration}
14616
typedef struct krb5\_key\_st* krb5\_key
14619
\subsubsection{krb5\_keytab}
14620
\label{appdev/refs/types/krb5_keytab:krb5-keytab}\label{appdev/refs/types/krb5_keytab::doc}\label{appdev/refs/types/krb5_keytab:krb5-keytab-struct}\index{krb5\_keytab (C type)}
14622
\begin{fulllineitems}
14623
\phantomsection\label{appdev/refs/types/krb5_keytab:krb5_keytab}\pysigline{\bfcode{krb5\_keytab}}
14624
\end{fulllineitems}
14628
\paragraph{Declaration}
14629
\label{appdev/refs/types/krb5_keytab:declaration}
14630
typedef struct \_krb5\_kt* krb5\_keytab
14633
\subsubsection{krb5\_pac}
14634
\label{appdev/refs/types/krb5_pac:krb5-pac-struct}\label{appdev/refs/types/krb5_pac:krb5-pac}\label{appdev/refs/types/krb5_pac::doc}\index{krb5\_pac (C type)}
14636
\begin{fulllineitems}
14637
\phantomsection\label{appdev/refs/types/krb5_pac:krb5_pac}\pysigline{\bfcode{krb5\_pac}}
14638
\end{fulllineitems}
14641
PAC data structure to convey authorization information.
14644
\paragraph{Declaration}
14645
\label{appdev/refs/types/krb5_pac:declaration}
14646
typedef struct krb5\_pac\_data* krb5\_pac
14649
\subsubsection{krb5\_rcache}
14650
\label{appdev/refs/types/krb5_rcache:krb5-rcache-struct}\label{appdev/refs/types/krb5_rcache::doc}\label{appdev/refs/types/krb5_rcache:krb5-rcache}\index{krb5\_rcache (C type)}
14652
\begin{fulllineitems}
14653
\phantomsection\label{appdev/refs/types/krb5_rcache:krb5_rcache}\pysigline{\bfcode{krb5\_rcache}}
14654
\end{fulllineitems}
14658
\paragraph{Declaration}
14659
\label{appdev/refs/types/krb5_rcache:declaration}
14660
typedef struct krb5\_rc\_st* krb5\_rcache
14663
\subsubsection{krb5\_tkt\_creds\_context}
14664
\label{appdev/refs/types/krb5_tkt_creds_context::doc}\label{appdev/refs/types/krb5_tkt_creds_context:krb5-tkt-creds-context}\label{appdev/refs/types/krb5_tkt_creds_context:krb5-tkt-creds-context-struct}\index{krb5\_tkt\_creds\_context (C type)}
14666
\begin{fulllineitems}
14667
\phantomsection\label{appdev/refs/types/krb5_tkt_creds_context:krb5_tkt_creds_context}\pysigline{\bfcode{krb5\_tkt\_creds\_context}}
14668
\end{fulllineitems}
14672
\paragraph{Declaration}
14673
\label{appdev/refs/types/krb5_tkt_creds_context:declaration}
14674
typedef struct \_krb5\_tkt\_creds\_context* krb5\_tkt\_creds\_context
14677
\section{krb5 simple macros}
14678
\label{appdev/refs/macros/index:krb5-simple-macros}\label{appdev/refs/macros/index::doc}
14680
\subsection{Public}
14681
\label{appdev/refs/macros/index:public}
14683
\subsubsection{ADDRTYPE\_ADDRPORT}
14684
\label{appdev/refs/macros/ADDRTYPE_ADDRPORT:addrtype-addrport-data}\label{appdev/refs/macros/ADDRTYPE_ADDRPORT::doc}\label{appdev/refs/macros/ADDRTYPE_ADDRPORT:addrtype-addrport}\index{ADDRTYPE\_ADDRPORT (built-in variable)}
14686
\begin{fulllineitems}
14687
\phantomsection\label{appdev/refs/macros/ADDRTYPE_ADDRPORT:ADDRTYPE_ADDRPORT}\pysigline{\bfcode{ADDRTYPE\_ADDRPORT}}
14688
\end{fulllineitems}
14691
\begin{tabulary}{\linewidth}{|L|L|}
14694
\code{ADDRTYPE\_ADDRPORT}
14702
\subsubsection{ADDRTYPE\_CHAOS}
14703
\label{appdev/refs/macros/ADDRTYPE_CHAOS:addrtype-chaos}\label{appdev/refs/macros/ADDRTYPE_CHAOS:addrtype-chaos-data}\label{appdev/refs/macros/ADDRTYPE_CHAOS::doc}\index{ADDRTYPE\_CHAOS (built-in variable)}
14705
\begin{fulllineitems}
14706
\phantomsection\label{appdev/refs/macros/ADDRTYPE_CHAOS:ADDRTYPE_CHAOS}\pysigline{\bfcode{ADDRTYPE\_CHAOS}}
14707
\end{fulllineitems}
14710
\begin{tabulary}{\linewidth}{|L|L|}
14713
\code{ADDRTYPE\_CHAOS}
14721
\subsubsection{ADDRTYPE\_DDP}
14722
\label{appdev/refs/macros/ADDRTYPE_DDP:addrtype-ddp-data}\label{appdev/refs/macros/ADDRTYPE_DDP::doc}\label{appdev/refs/macros/ADDRTYPE_DDP:addrtype-ddp}\index{ADDRTYPE\_DDP (built-in variable)}
14724
\begin{fulllineitems}
14725
\phantomsection\label{appdev/refs/macros/ADDRTYPE_DDP:ADDRTYPE_DDP}\pysigline{\bfcode{ADDRTYPE\_DDP}}
14726
\end{fulllineitems}
14729
\begin{tabulary}{\linewidth}{|L|L|}
14732
\code{ADDRTYPE\_DDP}
14740
\subsubsection{ADDRTYPE\_INET}
14741
\label{appdev/refs/macros/ADDRTYPE_INET:addrtype-inet}\label{appdev/refs/macros/ADDRTYPE_INET:addrtype-inet-data}\label{appdev/refs/macros/ADDRTYPE_INET::doc}\index{ADDRTYPE\_INET (built-in variable)}
14743
\begin{fulllineitems}
14744
\phantomsection\label{appdev/refs/macros/ADDRTYPE_INET:ADDRTYPE_INET}\pysigline{\bfcode{ADDRTYPE\_INET}}
14745
\end{fulllineitems}
14748
\begin{tabulary}{\linewidth}{|L|L|}
14751
\code{ADDRTYPE\_INET}
14759
\subsubsection{ADDRTYPE\_INET6}
14760
\label{appdev/refs/macros/ADDRTYPE_INET6:addrtype-inet6-data}\label{appdev/refs/macros/ADDRTYPE_INET6:addrtype-inet6}\label{appdev/refs/macros/ADDRTYPE_INET6::doc}\index{ADDRTYPE\_INET6 (built-in variable)}
14762
\begin{fulllineitems}
14763
\phantomsection\label{appdev/refs/macros/ADDRTYPE_INET6:ADDRTYPE_INET6}\pysigline{\bfcode{ADDRTYPE\_INET6}}
14764
\end{fulllineitems}
14767
\begin{tabulary}{\linewidth}{|L|L|}
14770
\code{ADDRTYPE\_INET6}
14778
\subsubsection{ADDRTYPE\_IPPORT}
14779
\label{appdev/refs/macros/ADDRTYPE_IPPORT:addrtype-ipport}\label{appdev/refs/macros/ADDRTYPE_IPPORT::doc}\label{appdev/refs/macros/ADDRTYPE_IPPORT:addrtype-ipport-data}\index{ADDRTYPE\_IPPORT (built-in variable)}
14781
\begin{fulllineitems}
14782
\phantomsection\label{appdev/refs/macros/ADDRTYPE_IPPORT:ADDRTYPE_IPPORT}\pysigline{\bfcode{ADDRTYPE\_IPPORT}}
14783
\end{fulllineitems}
14786
\begin{tabulary}{\linewidth}{|L|L|}
14789
\code{ADDRTYPE\_IPPORT}
14797
\subsubsection{ADDRTYPE\_ISO}
14798
\label{appdev/refs/macros/ADDRTYPE_ISO::doc}\label{appdev/refs/macros/ADDRTYPE_ISO:addrtype-iso}\label{appdev/refs/macros/ADDRTYPE_ISO:addrtype-iso-data}\index{ADDRTYPE\_ISO (built-in variable)}
14800
\begin{fulllineitems}
14801
\phantomsection\label{appdev/refs/macros/ADDRTYPE_ISO:ADDRTYPE_ISO}\pysigline{\bfcode{ADDRTYPE\_ISO}}
14802
\end{fulllineitems}
14805
\begin{tabulary}{\linewidth}{|L|L|}
14808
\code{ADDRTYPE\_ISO}
14816
\subsubsection{ADDRTYPE\_IS\_LOCAL}
14817
\label{appdev/refs/macros/ADDRTYPE_IS_LOCAL::doc}\label{appdev/refs/macros/ADDRTYPE_IS_LOCAL:addrtype-is-local}\label{appdev/refs/macros/ADDRTYPE_IS_LOCAL:addrtype-is-local-data}\index{ADDRTYPE\_IS\_LOCAL (built-in variable)}
14819
\begin{fulllineitems}
14820
\phantomsection\label{appdev/refs/macros/ADDRTYPE_IS_LOCAL:ADDRTYPE_IS_LOCAL}\pysigline{\bfcode{ADDRTYPE\_IS\_LOCAL}}
14821
\end{fulllineitems}
14824
\begin{tabulary}{\linewidth}{|L|L|}
14827
\code{ADDRTYPE\_IS\_LOCAL (addrtype)}
14829
\code{(addrtype \& 0x8000)}
14835
\subsubsection{ADDRTYPE\_NETBIOS}
14836
\label{appdev/refs/macros/ADDRTYPE_NETBIOS:addrtype-netbios}\label{appdev/refs/macros/ADDRTYPE_NETBIOS::doc}\label{appdev/refs/macros/ADDRTYPE_NETBIOS:addrtype-netbios-data}\index{ADDRTYPE\_NETBIOS (built-in variable)}
14838
\begin{fulllineitems}
14839
\phantomsection\label{appdev/refs/macros/ADDRTYPE_NETBIOS:ADDRTYPE_NETBIOS}\pysigline{\bfcode{ADDRTYPE\_NETBIOS}}
14840
\end{fulllineitems}
14843
\begin{tabulary}{\linewidth}{|L|L|}
14846
\code{ADDRTYPE\_NETBIOS}
14854
\subsubsection{ADDRTYPE\_XNS}
14855
\label{appdev/refs/macros/ADDRTYPE_XNS::doc}\label{appdev/refs/macros/ADDRTYPE_XNS:addrtype-xns-data}\label{appdev/refs/macros/ADDRTYPE_XNS:addrtype-xns}\index{ADDRTYPE\_XNS (built-in variable)}
14857
\begin{fulllineitems}
14858
\phantomsection\label{appdev/refs/macros/ADDRTYPE_XNS:ADDRTYPE_XNS}\pysigline{\bfcode{ADDRTYPE\_XNS}}
14859
\end{fulllineitems}
14862
\begin{tabulary}{\linewidth}{|L|L|}
14865
\code{ADDRTYPE\_XNS}
14873
\subsubsection{AD\_TYPE\_EXTERNAL}
14874
\label{appdev/refs/macros/AD_TYPE_EXTERNAL:ad-type-external-data}\label{appdev/refs/macros/AD_TYPE_EXTERNAL::doc}\label{appdev/refs/macros/AD_TYPE_EXTERNAL:ad-type-external}\index{AD\_TYPE\_EXTERNAL (built-in variable)}
14876
\begin{fulllineitems}
14877
\phantomsection\label{appdev/refs/macros/AD_TYPE_EXTERNAL:AD_TYPE_EXTERNAL}\pysigline{\bfcode{AD\_TYPE\_EXTERNAL}}
14878
\end{fulllineitems}
14881
\begin{tabulary}{\linewidth}{|L|L|}
14884
\code{AD\_TYPE\_EXTERNAL}
14892
\subsubsection{AD\_TYPE\_FIELD\_TYPE\_MASK}
14893
\label{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:ad-type-field-type-mask}\label{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK::doc}\label{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:ad-type-field-type-mask-data}\index{AD\_TYPE\_FIELD\_TYPE\_MASK (built-in variable)}
14895
\begin{fulllineitems}
14896
\phantomsection\label{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:AD_TYPE_FIELD_TYPE_MASK}\pysigline{\bfcode{AD\_TYPE\_FIELD\_TYPE\_MASK}}
14897
\end{fulllineitems}
14900
\begin{tabulary}{\linewidth}{|L|L|}
14903
\code{AD\_TYPE\_FIELD\_TYPE\_MASK}
14911
\subsubsection{AD\_TYPE\_REGISTERED}
14912
\label{appdev/refs/macros/AD_TYPE_REGISTERED:ad-type-registered-data}\label{appdev/refs/macros/AD_TYPE_REGISTERED:ad-type-registered}\label{appdev/refs/macros/AD_TYPE_REGISTERED::doc}\index{AD\_TYPE\_REGISTERED (built-in variable)}
14914
\begin{fulllineitems}
14915
\phantomsection\label{appdev/refs/macros/AD_TYPE_REGISTERED:AD_TYPE_REGISTERED}\pysigline{\bfcode{AD\_TYPE\_REGISTERED}}
14916
\end{fulllineitems}
14919
\begin{tabulary}{\linewidth}{|L|L|}
14922
\code{AD\_TYPE\_REGISTERED}
14930
\subsubsection{AD\_TYPE\_RESERVED}
14931
\label{appdev/refs/macros/AD_TYPE_RESERVED::doc}\label{appdev/refs/macros/AD_TYPE_RESERVED:ad-type-reserved}\label{appdev/refs/macros/AD_TYPE_RESERVED:ad-type-reserved-data}\index{AD\_TYPE\_RESERVED (built-in variable)}
14933
\begin{fulllineitems}
14934
\phantomsection\label{appdev/refs/macros/AD_TYPE_RESERVED:AD_TYPE_RESERVED}\pysigline{\bfcode{AD\_TYPE\_RESERVED}}
14935
\end{fulllineitems}
14938
\begin{tabulary}{\linewidth}{|L|L|}
14941
\code{AD\_TYPE\_RESERVED}
14949
\subsubsection{AP\_OPTS\_ETYPE\_NEGOTIATION}
14950
\label{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION::doc}\label{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:ap-opts-etype-negotiation}\label{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:ap-opts-etype-negotiation-data}\index{AP\_OPTS\_ETYPE\_NEGOTIATION (built-in variable)}
14952
\begin{fulllineitems}
14953
\phantomsection\label{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:AP_OPTS_ETYPE_NEGOTIATION}\pysigline{\bfcode{AP\_OPTS\_ETYPE\_NEGOTIATION}}
14954
\end{fulllineitems}
14957
\begin{tabulary}{\linewidth}{|L|L|}
14960
\code{AP\_OPTS\_ETYPE\_NEGOTIATION}
14968
\subsubsection{AP\_OPTS\_MUTUAL\_REQUIRED}
14969
\label{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:ap-opts-mutual-required}\label{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:ap-opts-mutual-required-data}\label{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED::doc}\index{AP\_OPTS\_MUTUAL\_REQUIRED (built-in variable)}
14971
\begin{fulllineitems}
14972
\phantomsection\label{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED}\pysigline{\bfcode{AP\_OPTS\_MUTUAL\_REQUIRED}}
14973
\end{fulllineitems}
14976
Perform a mutual authentication exchange.
14978
\begin{tabulary}{\linewidth}{|L|L|}
14981
\code{AP\_OPTS\_MUTUAL\_REQUIRED}
14989
\subsubsection{AP\_OPTS\_RESERVED}
14990
\label{appdev/refs/macros/AP_OPTS_RESERVED::doc}\label{appdev/refs/macros/AP_OPTS_RESERVED:ap-opts-reserved-data}\label{appdev/refs/macros/AP_OPTS_RESERVED:ap-opts-reserved}\index{AP\_OPTS\_RESERVED (built-in variable)}
14992
\begin{fulllineitems}
14993
\phantomsection\label{appdev/refs/macros/AP_OPTS_RESERVED:AP_OPTS_RESERVED}\pysigline{\bfcode{AP\_OPTS\_RESERVED}}
14994
\end{fulllineitems}
14997
\begin{tabulary}{\linewidth}{|L|L|}
15000
\code{AP\_OPTS\_RESERVED}
15008
\subsubsection{AP\_OPTS\_USE\_SESSION\_KEY}
15009
\label{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:ap-opts-use-session-key}\label{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY::doc}\label{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:ap-opts-use-session-key-data}\index{AP\_OPTS\_USE\_SESSION\_KEY (built-in variable)}
15011
\begin{fulllineitems}
15012
\phantomsection\label{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:AP_OPTS_USE_SESSION_KEY}\pysigline{\bfcode{AP\_OPTS\_USE\_SESSION\_KEY}}
15013
\end{fulllineitems}
15018
\begin{tabulary}{\linewidth}{|L|L|}
15021
\code{AP\_OPTS\_USE\_SESSION\_KEY}
15029
\subsubsection{AP\_OPTS\_USE\_SUBKEY}
15030
\label{appdev/refs/macros/AP_OPTS_USE_SUBKEY:ap-opts-use-subkey}\label{appdev/refs/macros/AP_OPTS_USE_SUBKEY:ap-opts-use-subkey-data}\label{appdev/refs/macros/AP_OPTS_USE_SUBKEY::doc}\index{AP\_OPTS\_USE\_SUBKEY (built-in variable)}
15032
\begin{fulllineitems}
15033
\phantomsection\label{appdev/refs/macros/AP_OPTS_USE_SUBKEY:AP_OPTS_USE_SUBKEY}\pysigline{\bfcode{AP\_OPTS\_USE\_SUBKEY}}
15034
\end{fulllineitems}
15037
Generate a subsession key from the current session key obtained from the credentials.
15039
\begin{tabulary}{\linewidth}{|L|L|}
15042
\code{AP\_OPTS\_USE\_SUBKEY}
15050
\subsubsection{AP\_OPTS\_WIRE\_MASK}
15051
\label{appdev/refs/macros/AP_OPTS_WIRE_MASK:ap-opts-wire-mask-data}\label{appdev/refs/macros/AP_OPTS_WIRE_MASK:ap-opts-wire-mask}\label{appdev/refs/macros/AP_OPTS_WIRE_MASK::doc}\index{AP\_OPTS\_WIRE\_MASK (built-in variable)}
15053
\begin{fulllineitems}
15054
\phantomsection\label{appdev/refs/macros/AP_OPTS_WIRE_MASK:AP_OPTS_WIRE_MASK}\pysigline{\bfcode{AP\_OPTS\_WIRE\_MASK}}
15055
\end{fulllineitems}
15058
\begin{tabulary}{\linewidth}{|L|L|}
15061
\code{AP\_OPTS\_WIRE\_MASK}
15069
\subsubsection{CKSUMTYPE\_CMAC\_CAMELLIA128}
15070
\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128::doc}\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:cksumtype-cmac-camellia128}\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:cksumtype-cmac-camellia128-data}\index{CKSUMTYPE\_CMAC\_CAMELLIA128 (built-in variable)}
15072
\begin{fulllineitems}
15073
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:CKSUMTYPE_CMAC_CAMELLIA128}\pysigline{\bfcode{CKSUMTYPE\_CMAC\_CAMELLIA128}}
15074
\end{fulllineitems}
15077
\begin{tabulary}{\linewidth}{|L|L|}
15080
\code{CKSUMTYPE\_CMAC\_CAMELLIA128}
15088
\subsubsection{CKSUMTYPE\_CMAC\_CAMELLIA256}
15089
\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256::doc}\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:cksumtype-cmac-camellia256}\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:cksumtype-cmac-camellia256-data}\index{CKSUMTYPE\_CMAC\_CAMELLIA256 (built-in variable)}
15091
\begin{fulllineitems}
15092
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:CKSUMTYPE_CMAC_CAMELLIA256}\pysigline{\bfcode{CKSUMTYPE\_CMAC\_CAMELLIA256}}
15093
\end{fulllineitems}
15096
\begin{tabulary}{\linewidth}{|L|L|}
15099
\code{CKSUMTYPE\_CMAC\_CAMELLIA256}
15107
\subsubsection{CKSUMTYPE\_CRC32}
15108
\label{appdev/refs/macros/CKSUMTYPE_CRC32:cksumtype-crc32-data}\label{appdev/refs/macros/CKSUMTYPE_CRC32::doc}\label{appdev/refs/macros/CKSUMTYPE_CRC32:cksumtype-crc32}\index{CKSUMTYPE\_CRC32 (built-in variable)}
15110
\begin{fulllineitems}
15111
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_CRC32:CKSUMTYPE_CRC32}\pysigline{\bfcode{CKSUMTYPE\_CRC32}}
15112
\end{fulllineitems}
15115
\begin{tabulary}{\linewidth}{|L|L|}
15118
\code{CKSUMTYPE\_CRC32}
15126
\subsubsection{CKSUMTYPE\_DESCBC}
15127
\label{appdev/refs/macros/CKSUMTYPE_DESCBC:cksumtype-descbc-data}\label{appdev/refs/macros/CKSUMTYPE_DESCBC::doc}\label{appdev/refs/macros/CKSUMTYPE_DESCBC:cksumtype-descbc}\index{CKSUMTYPE\_DESCBC (built-in variable)}
15129
\begin{fulllineitems}
15130
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_DESCBC:CKSUMTYPE_DESCBC}\pysigline{\bfcode{CKSUMTYPE\_DESCBC}}
15131
\end{fulllineitems}
15134
\begin{tabulary}{\linewidth}{|L|L|}
15137
\code{CKSUMTYPE\_DESCBC}
15145
\subsubsection{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}
15146
\label{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:cksumtype-hmac-md5-arcfour-data}\label{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:cksumtype-hmac-md5-arcfour}\label{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR::doc}\index{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR (built-in variable)}
15148
\begin{fulllineitems}
15149
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:CKSUMTYPE_HMAC_MD5_ARCFOUR}\pysigline{\bfcode{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}}
15150
\end{fulllineitems}
15153
\begin{tabulary}{\linewidth}{|L|L|}
15156
\code{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}
15158
\code{-138 /*Microsoft md5 hmac cksumtype*/}
15164
\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}
15165
\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128::doc}\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:cksumtype-hmac-sha1-96-aes128}\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:cksumtype-hmac-sha1-96-aes128-data}\index{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128 (built-in variable)}
15167
\begin{fulllineitems}
15168
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:CKSUMTYPE_HMAC_SHA1_96_AES128}\pysigline{\bfcode{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}}
15169
\end{fulllineitems}
15174
Used with ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96
15176
\begin{tabulary}{\linewidth}{|L|L|}
15179
\code{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}
15187
\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}
15188
\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256::doc}\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:cksumtype-hmac-sha1-96-aes256}\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:cksumtype-hmac-sha1-96-aes256-data}\index{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256 (built-in variable)}
15190
\begin{fulllineitems}
15191
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:CKSUMTYPE_HMAC_SHA1_96_AES256}\pysigline{\bfcode{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}}
15192
\end{fulllineitems}
15197
Used with ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96
15199
\begin{tabulary}{\linewidth}{|L|L|}
15202
\code{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}
15210
\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_DES3}
15211
\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3::doc}\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:cksumtype-hmac-sha1-des3}\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:cksumtype-hmac-sha1-des3-data}\index{CKSUMTYPE\_HMAC\_SHA1\_DES3 (built-in variable)}
15213
\begin{fulllineitems}
15214
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:CKSUMTYPE_HMAC_SHA1_DES3}\pysigline{\bfcode{CKSUMTYPE\_HMAC\_SHA1\_DES3}}
15215
\end{fulllineitems}
15218
\begin{tabulary}{\linewidth}{|L|L|}
15221
\code{CKSUMTYPE\_HMAC\_SHA1\_DES3}
15229
\subsubsection{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}
15230
\label{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:cksumtype-md5-hmac-arcfour}\label{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:cksumtype-md5-hmac-arcfour-data}\label{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR::doc}\index{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR (built-in variable)}
15232
\begin{fulllineitems}
15233
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:CKSUMTYPE_MD5_HMAC_ARCFOUR}\pysigline{\bfcode{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}}
15234
\end{fulllineitems}
15237
\begin{tabulary}{\linewidth}{|L|L|}
15240
\code{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}
15242
\code{-137 /*Microsoft netlogon cksumtype*/}
15248
\subsubsection{CKSUMTYPE\_NIST\_SHA}
15249
\label{appdev/refs/macros/CKSUMTYPE_NIST_SHA::doc}\label{appdev/refs/macros/CKSUMTYPE_NIST_SHA:cksumtype-nist-sha}\label{appdev/refs/macros/CKSUMTYPE_NIST_SHA:cksumtype-nist-sha-data}\index{CKSUMTYPE\_NIST\_SHA (built-in variable)}
15251
\begin{fulllineitems}
15252
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_NIST_SHA:CKSUMTYPE_NIST_SHA}\pysigline{\bfcode{CKSUMTYPE\_NIST\_SHA}}
15253
\end{fulllineitems}
15256
\begin{tabulary}{\linewidth}{|L|L|}
15259
\code{CKSUMTYPE\_NIST\_SHA}
15267
\subsubsection{CKSUMTYPE\_RSA\_MD4}
15268
\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4::doc}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4:cksumtype-rsa-md4}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4:cksumtype-rsa-md4-data}\index{CKSUMTYPE\_RSA\_MD4 (built-in variable)}
15270
\begin{fulllineitems}
15271
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4:CKSUMTYPE_RSA_MD4}\pysigline{\bfcode{CKSUMTYPE\_RSA\_MD4}}
15272
\end{fulllineitems}
15275
\begin{tabulary}{\linewidth}{|L|L|}
15278
\code{CKSUMTYPE\_RSA\_MD4}
15286
\subsubsection{CKSUMTYPE\_RSA\_MD4\_DES}
15287
\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES::doc}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:cksumtype-rsa-md4-des}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:cksumtype-rsa-md4-des-data}\index{CKSUMTYPE\_RSA\_MD4\_DES (built-in variable)}
15289
\begin{fulllineitems}
15290
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:CKSUMTYPE_RSA_MD4_DES}\pysigline{\bfcode{CKSUMTYPE\_RSA\_MD4\_DES}}
15291
\end{fulllineitems}
15294
\begin{tabulary}{\linewidth}{|L|L|}
15297
\code{CKSUMTYPE\_RSA\_MD4\_DES}
15305
\subsubsection{CKSUMTYPE\_RSA\_MD5}
15306
\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5:cksumtype-rsa-md5-data}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5::doc}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5:cksumtype-rsa-md5}\index{CKSUMTYPE\_RSA\_MD5 (built-in variable)}
15308
\begin{fulllineitems}
15309
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5:CKSUMTYPE_RSA_MD5}\pysigline{\bfcode{CKSUMTYPE\_RSA\_MD5}}
15310
\end{fulllineitems}
15313
\begin{tabulary}{\linewidth}{|L|L|}
15316
\code{CKSUMTYPE\_RSA\_MD5}
15324
\subsubsection{CKSUMTYPE\_RSA\_MD5\_DES}
15325
\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:cksumtype-rsa-md5-des-data}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES::doc}\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:cksumtype-rsa-md5-des}\index{CKSUMTYPE\_RSA\_MD5\_DES (built-in variable)}
15327
\begin{fulllineitems}
15328
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:CKSUMTYPE_RSA_MD5_DES}\pysigline{\bfcode{CKSUMTYPE\_RSA\_MD5\_DES}}
15329
\end{fulllineitems}
15332
\begin{tabulary}{\linewidth}{|L|L|}
15335
\code{CKSUMTYPE\_RSA\_MD5\_DES}
15343
\subsubsection{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}
15344
\label{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:enctype-aes128-cts-hmac-sha1-96-data}\label{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96::doc}\label{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:enctype-aes128-cts-hmac-sha1-96}\index{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96 (built-in variable)}
15346
\begin{fulllineitems}
15347
\phantomsection\label{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:ENCTYPE_AES128_CTS_HMAC_SHA1_96}\pysigline{\bfcode{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}}
15348
\end{fulllineitems}
15353
\begin{tabulary}{\linewidth}{|L|L|}
15356
\code{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}
15364
\subsubsection{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}
15365
\label{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:enctype-aes256-cts-hmac-sha1-96-data}\label{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96::doc}\label{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:enctype-aes256-cts-hmac-sha1-96}\index{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96 (built-in variable)}
15367
\begin{fulllineitems}
15368
\phantomsection\label{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:ENCTYPE_AES256_CTS_HMAC_SHA1_96}\pysigline{\bfcode{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}}
15369
\end{fulllineitems}
15374
\begin{tabulary}{\linewidth}{|L|L|}
15377
\code{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}
15385
\subsubsection{ENCTYPE\_ARCFOUR\_HMAC}
15386
\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:enctype-arcfour-hmac}\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:enctype-arcfour-hmac-data}\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC::doc}\index{ENCTYPE\_ARCFOUR\_HMAC (built-in variable)}
15388
\begin{fulllineitems}
15389
\phantomsection\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:ENCTYPE_ARCFOUR_HMAC}\pysigline{\bfcode{ENCTYPE\_ARCFOUR\_HMAC}}
15390
\end{fulllineitems}
15393
\begin{tabulary}{\linewidth}{|L|L|}
15396
\code{ENCTYPE\_ARCFOUR\_HMAC}
15404
\subsubsection{ENCTYPE\_ARCFOUR\_HMAC\_EXP}
15405
\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:enctype-arcfour-hmac-exp-data}\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:enctype-arcfour-hmac-exp}\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP::doc}\index{ENCTYPE\_ARCFOUR\_HMAC\_EXP (built-in variable)}
15407
\begin{fulllineitems}
15408
\phantomsection\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:ENCTYPE_ARCFOUR_HMAC_EXP}\pysigline{\bfcode{ENCTYPE\_ARCFOUR\_HMAC\_EXP}}
15409
\end{fulllineitems}
15412
\begin{tabulary}{\linewidth}{|L|L|}
15415
\code{ENCTYPE\_ARCFOUR\_HMAC\_EXP}
15423
\subsubsection{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}
15424
\label{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:enctype-camellia128-cts-cmac-data}\label{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:enctype-camellia128-cts-cmac}\label{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC::doc}\index{ENCTYPE\_CAMELLIA128\_CTS\_CMAC (built-in variable)}
15426
\begin{fulllineitems}
15427
\phantomsection\label{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:ENCTYPE_CAMELLIA128_CTS_CMAC}\pysigline{\bfcode{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}}
15428
\end{fulllineitems}
15431
\begin{tabulary}{\linewidth}{|L|L|}
15434
\code{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}
15442
\subsubsection{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}
15443
\label{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:enctype-camellia256-cts-cmac-data}\label{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:enctype-camellia256-cts-cmac}\label{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC::doc}\index{ENCTYPE\_CAMELLIA256\_CTS\_CMAC (built-in variable)}
15445
\begin{fulllineitems}
15446
\phantomsection\label{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:ENCTYPE_CAMELLIA256_CTS_CMAC}\pysigline{\bfcode{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}}
15447
\end{fulllineitems}
15450
\begin{tabulary}{\linewidth}{|L|L|}
15453
\code{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}
15461
\subsubsection{ENCTYPE\_DES3\_CBC\_ENV}
15462
\label{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV::doc}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:enctype-des3-cbc-env}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:enctype-des3-cbc-env-data}\index{ENCTYPE\_DES3\_CBC\_ENV (built-in variable)}
15464
\begin{fulllineitems}
15465
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:ENCTYPE_DES3_CBC_ENV}\pysigline{\bfcode{ENCTYPE\_DES3\_CBC\_ENV}}
15466
\end{fulllineitems}
15469
DES-3 cbc mode, CMS enveloped data.
15471
\begin{tabulary}{\linewidth}{|L|L|}
15474
\code{ENCTYPE\_DES3\_CBC\_ENV}
15482
\subsubsection{ENCTYPE\_DES3\_CBC\_RAW}
15483
\label{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:enctype-des3-cbc-raw}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW::doc}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:enctype-des3-cbc-raw-data}\index{ENCTYPE\_DES3\_CBC\_RAW (built-in variable)}
15485
\begin{fulllineitems}
15486
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:ENCTYPE_DES3_CBC_RAW}\pysigline{\bfcode{ENCTYPE\_DES3\_CBC\_RAW}}
15487
\end{fulllineitems}
15490
\begin{tabulary}{\linewidth}{|L|L|}
15493
\code{ENCTYPE\_DES3\_CBC\_RAW}
15501
\subsubsection{ENCTYPE\_DES3\_CBC\_SHA}
15502
\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:enctype-des3-cbc-sha}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA::doc}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:enctype-des3-cbc-sha-data}\index{ENCTYPE\_DES3\_CBC\_SHA (built-in variable)}
15504
\begin{fulllineitems}
15505
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:ENCTYPE_DES3_CBC_SHA}\pysigline{\bfcode{ENCTYPE\_DES3\_CBC\_SHA}}
15506
\end{fulllineitems}
15509
\begin{tabulary}{\linewidth}{|L|L|}
15512
\code{ENCTYPE\_DES3\_CBC\_SHA}
15520
\subsubsection{ENCTYPE\_DES3\_CBC\_SHA1}
15521
\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1::doc}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:enctype-des3-cbc-sha1}\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:enctype-des3-cbc-sha1-data}\index{ENCTYPE\_DES3\_CBC\_SHA1 (built-in variable)}
15523
\begin{fulllineitems}
15524
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:ENCTYPE_DES3_CBC_SHA1}\pysigline{\bfcode{ENCTYPE\_DES3\_CBC\_SHA1}}
15525
\end{fulllineitems}
15528
\begin{tabulary}{\linewidth}{|L|L|}
15531
\code{ENCTYPE\_DES3\_CBC\_SHA1}
15539
\subsubsection{ENCTYPE\_DES\_CBC\_CRC}
15540
\label{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:enctype-des-cbc-crc-data}\label{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:enctype-des-cbc-crc}\label{appdev/refs/macros/ENCTYPE_DES_CBC_CRC::doc}\index{ENCTYPE\_DES\_CBC\_CRC (built-in variable)}
15542
\begin{fulllineitems}
15543
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:ENCTYPE_DES_CBC_CRC}\pysigline{\bfcode{ENCTYPE\_DES\_CBC\_CRC}}
15544
\end{fulllineitems}
15547
DES cbc mode with CRC-32.
15549
\begin{tabulary}{\linewidth}{|L|L|}
15552
\code{ENCTYPE\_DES\_CBC\_CRC}
15560
\subsubsection{ENCTYPE\_DES\_CBC\_MD4}
15561
\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:enctype-des-cbc-md4-data}\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD4::doc}\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:enctype-des-cbc-md4}\index{ENCTYPE\_DES\_CBC\_MD4 (built-in variable)}
15563
\begin{fulllineitems}
15564
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:ENCTYPE_DES_CBC_MD4}\pysigline{\bfcode{ENCTYPE\_DES\_CBC\_MD4}}
15565
\end{fulllineitems}
15568
DES cbc mode with RSA-MD4.
15570
\begin{tabulary}{\linewidth}{|L|L|}
15573
\code{ENCTYPE\_DES\_CBC\_MD4}
15581
\subsubsection{ENCTYPE\_DES\_CBC\_MD5}
15582
\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:enctype-des-cbc-md5-data}\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD5::doc}\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:enctype-des-cbc-md5}\index{ENCTYPE\_DES\_CBC\_MD5 (built-in variable)}
15584
\begin{fulllineitems}
15585
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:ENCTYPE_DES_CBC_MD5}\pysigline{\bfcode{ENCTYPE\_DES\_CBC\_MD5}}
15586
\end{fulllineitems}
15589
DES cbc mode with RSA-MD5.
15591
\begin{tabulary}{\linewidth}{|L|L|}
15594
\code{ENCTYPE\_DES\_CBC\_MD5}
15602
\subsubsection{ENCTYPE\_DES\_CBC\_RAW}
15603
\label{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:enctype-des-cbc-raw-data}\label{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:enctype-des-cbc-raw}\label{appdev/refs/macros/ENCTYPE_DES_CBC_RAW::doc}\index{ENCTYPE\_DES\_CBC\_RAW (built-in variable)}
15605
\begin{fulllineitems}
15606
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:ENCTYPE_DES_CBC_RAW}\pysigline{\bfcode{ENCTYPE\_DES\_CBC\_RAW}}
15607
\end{fulllineitems}
15610
\begin{tabulary}{\linewidth}{|L|L|}
15613
\code{ENCTYPE\_DES\_CBC\_RAW}
15621
\subsubsection{ENCTYPE\_DES\_HMAC\_SHA1}
15622
\label{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:enctype-des-hmac-sha1-data}\label{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1::doc}\label{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:enctype-des-hmac-sha1}\index{ENCTYPE\_DES\_HMAC\_SHA1 (built-in variable)}
15624
\begin{fulllineitems}
15625
\phantomsection\label{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:ENCTYPE_DES_HMAC_SHA1}\pysigline{\bfcode{ENCTYPE\_DES\_HMAC\_SHA1}}
15626
\end{fulllineitems}
15629
\begin{tabulary}{\linewidth}{|L|L|}
15632
\code{ENCTYPE\_DES\_HMAC\_SHA1}
15640
\subsubsection{ENCTYPE\_DSA\_SHA1\_CMS}
15641
\label{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:enctype-dsa-sha1-cms-data}\label{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:enctype-dsa-sha1-cms}\label{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS::doc}\index{ENCTYPE\_DSA\_SHA1\_CMS (built-in variable)}
15643
\begin{fulllineitems}
15644
\phantomsection\label{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:ENCTYPE_DSA_SHA1_CMS}\pysigline{\bfcode{ENCTYPE\_DSA\_SHA1\_CMS}}
15645
\end{fulllineitems}
15648
DSA with SHA1, CMS signature.
15650
\begin{tabulary}{\linewidth}{|L|L|}
15653
\code{ENCTYPE\_DSA\_SHA1\_CMS}
15661
\subsubsection{ENCTYPE\_MD5\_RSA\_CMS}
15662
\label{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:enctype-md5-rsa-cms}\label{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:enctype-md5-rsa-cms-data}\label{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS::doc}\index{ENCTYPE\_MD5\_RSA\_CMS (built-in variable)}
15664
\begin{fulllineitems}
15665
\phantomsection\label{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:ENCTYPE_MD5_RSA_CMS}\pysigline{\bfcode{ENCTYPE\_MD5\_RSA\_CMS}}
15666
\end{fulllineitems}
15669
MD5 with RSA, CMS signature.
15671
\begin{tabulary}{\linewidth}{|L|L|}
15674
\code{ENCTYPE\_MD5\_RSA\_CMS}
15682
\subsubsection{ENCTYPE\_NULL}
15683
\label{appdev/refs/macros/ENCTYPE_NULL:enctype-null}\label{appdev/refs/macros/ENCTYPE_NULL::doc}\label{appdev/refs/macros/ENCTYPE_NULL:enctype-null-data}\index{ENCTYPE\_NULL (built-in variable)}
15685
\begin{fulllineitems}
15686
\phantomsection\label{appdev/refs/macros/ENCTYPE_NULL:ENCTYPE_NULL}\pysigline{\bfcode{ENCTYPE\_NULL}}
15687
\end{fulllineitems}
15690
\begin{tabulary}{\linewidth}{|L|L|}
15693
\code{ENCTYPE\_NULL}
15701
\subsubsection{ENCTYPE\_RC2\_CBC\_ENV}
15702
\label{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:enctype-rc2-cbc-env}\label{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV::doc}\label{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:enctype-rc2-cbc-env-data}\index{ENCTYPE\_RC2\_CBC\_ENV (built-in variable)}
15704
\begin{fulllineitems}
15705
\phantomsection\label{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:ENCTYPE_RC2_CBC_ENV}\pysigline{\bfcode{ENCTYPE\_RC2\_CBC\_ENV}}
15706
\end{fulllineitems}
15709
RC2 cbc mode, CMS enveloped data.
15711
\begin{tabulary}{\linewidth}{|L|L|}
15714
\code{ENCTYPE\_RC2\_CBC\_ENV}
15722
\subsubsection{ENCTYPE\_RSA\_ENV}
15723
\label{appdev/refs/macros/ENCTYPE_RSA_ENV:enctype-rsa-env-data}\label{appdev/refs/macros/ENCTYPE_RSA_ENV:enctype-rsa-env}\label{appdev/refs/macros/ENCTYPE_RSA_ENV::doc}\index{ENCTYPE\_RSA\_ENV (built-in variable)}
15725
\begin{fulllineitems}
15726
\phantomsection\label{appdev/refs/macros/ENCTYPE_RSA_ENV:ENCTYPE_RSA_ENV}\pysigline{\bfcode{ENCTYPE\_RSA\_ENV}}
15727
\end{fulllineitems}
15730
RSA encryption, CMS enveloped data.
15732
\begin{tabulary}{\linewidth}{|L|L|}
15735
\code{ENCTYPE\_RSA\_ENV}
15743
\subsubsection{ENCTYPE\_RSA\_ES\_OAEP\_ENV}
15744
\label{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV::doc}\label{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:enctype-rsa-es-oaep-env}\label{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:enctype-rsa-es-oaep-env-data}\index{ENCTYPE\_RSA\_ES\_OAEP\_ENV (built-in variable)}
15746
\begin{fulllineitems}
15747
\phantomsection\label{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:ENCTYPE_RSA_ES_OAEP_ENV}\pysigline{\bfcode{ENCTYPE\_RSA\_ES\_OAEP\_ENV}}
15748
\end{fulllineitems}
15751
RSA w/OEAP encryption, CMS enveloped data.
15753
\begin{tabulary}{\linewidth}{|L|L|}
15756
\code{ENCTYPE\_RSA\_ES\_OAEP\_ENV}
15764
\subsubsection{ENCTYPE\_SHA1\_RSA\_CMS}
15765
\label{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS::doc}\label{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:enctype-sha1-rsa-cms-data}\label{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:enctype-sha1-rsa-cms}\index{ENCTYPE\_SHA1\_RSA\_CMS (built-in variable)}
15767
\begin{fulllineitems}
15768
\phantomsection\label{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:ENCTYPE_SHA1_RSA_CMS}\pysigline{\bfcode{ENCTYPE\_SHA1\_RSA\_CMS}}
15769
\end{fulllineitems}
15772
SHA1 with RSA, CMS signature.
15774
\begin{tabulary}{\linewidth}{|L|L|}
15777
\code{ENCTYPE\_SHA1\_RSA\_CMS}
15785
\subsubsection{ENCTYPE\_UNKNOWN}
15786
\label{appdev/refs/macros/ENCTYPE_UNKNOWN:enctype-unknown}\label{appdev/refs/macros/ENCTYPE_UNKNOWN::doc}\label{appdev/refs/macros/ENCTYPE_UNKNOWN:enctype-unknown-data}\index{ENCTYPE\_UNKNOWN (built-in variable)}
15788
\begin{fulllineitems}
15789
\phantomsection\label{appdev/refs/macros/ENCTYPE_UNKNOWN:ENCTYPE_UNKNOWN}\pysigline{\bfcode{ENCTYPE\_UNKNOWN}}
15790
\end{fulllineitems}
15793
\begin{tabulary}{\linewidth}{|L|L|}
15796
\code{ENCTYPE\_UNKNOWN}
15804
\subsubsection{KDC\_OPT\_ALLOW\_POSTDATE}
15805
\label{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:kdc-opt-allow-postdate}\label{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:kdc-opt-allow-postdate-data}\label{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE::doc}\index{KDC\_OPT\_ALLOW\_POSTDATE (built-in variable)}
15807
\begin{fulllineitems}
15808
\phantomsection\label{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:KDC_OPT_ALLOW_POSTDATE}\pysigline{\bfcode{KDC\_OPT\_ALLOW\_POSTDATE}}
15809
\end{fulllineitems}
15812
\begin{tabulary}{\linewidth}{|L|L|}
15815
\code{KDC\_OPT\_ALLOW\_POSTDATE}
15823
\subsubsection{KDC\_OPT\_CANONICALIZE}
15824
\label{appdev/refs/macros/KDC_OPT_CANONICALIZE:kdc-opt-canonicalize}\label{appdev/refs/macros/KDC_OPT_CANONICALIZE:kdc-opt-canonicalize-data}\label{appdev/refs/macros/KDC_OPT_CANONICALIZE::doc}\index{KDC\_OPT\_CANONICALIZE (built-in variable)}
15826
\begin{fulllineitems}
15827
\phantomsection\label{appdev/refs/macros/KDC_OPT_CANONICALIZE:KDC_OPT_CANONICALIZE}\pysigline{\bfcode{KDC\_OPT\_CANONICALIZE}}
15828
\end{fulllineitems}
15831
\begin{tabulary}{\linewidth}{|L|L|}
15834
\code{KDC\_OPT\_CANONICALIZE}
15842
\subsubsection{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}
15843
\label{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:kdc-opt-cname-in-addl-tkt-data}\label{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:kdc-opt-cname-in-addl-tkt}\label{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT::doc}\index{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT (built-in variable)}
15845
\begin{fulllineitems}
15846
\phantomsection\label{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:KDC_OPT_CNAME_IN_ADDL_TKT}\pysigline{\bfcode{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}}
15847
\end{fulllineitems}
15850
\begin{tabulary}{\linewidth}{|L|L|}
15853
\code{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}
15861
\subsubsection{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}
15862
\label{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:kdc-opt-disable-transited-check}\label{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK::doc}\label{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:kdc-opt-disable-transited-check-data}\index{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK (built-in variable)}
15864
\begin{fulllineitems}
15865
\phantomsection\label{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:KDC_OPT_DISABLE_TRANSITED_CHECK}\pysigline{\bfcode{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}}
15866
\end{fulllineitems}
15869
\begin{tabulary}{\linewidth}{|L|L|}
15872
\code{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}
15880
\subsubsection{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}
15881
\label{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY:kdc-opt-enc-tkt-in-skey}\label{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY::doc}\label{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY:kdc-opt-enc-tkt-in-skey-data}\index{KDC\_OPT\_ENC\_TKT\_IN\_SKEY (built-in variable)}
15883
\begin{fulllineitems}
15884
\phantomsection\label{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY:KDC_OPT_ENC_TKT_IN_SKEY}\pysigline{\bfcode{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}}
15885
\end{fulllineitems}
15888
\begin{tabulary}{\linewidth}{|L|L|}
15891
\code{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}
15899
\subsubsection{KDC\_OPT\_FORWARDABLE}
15900
\label{appdev/refs/macros/KDC_OPT_FORWARDABLE:kdc-opt-forwardable-data}\label{appdev/refs/macros/KDC_OPT_FORWARDABLE::doc}\label{appdev/refs/macros/KDC_OPT_FORWARDABLE:kdc-opt-forwardable}\index{KDC\_OPT\_FORWARDABLE (built-in variable)}
15902
\begin{fulllineitems}
15903
\phantomsection\label{appdev/refs/macros/KDC_OPT_FORWARDABLE:KDC_OPT_FORWARDABLE}\pysigline{\bfcode{KDC\_OPT\_FORWARDABLE}}
15904
\end{fulllineitems}
15907
\begin{tabulary}{\linewidth}{|L|L|}
15910
\code{KDC\_OPT\_FORWARDABLE}
15918
\subsubsection{KDC\_OPT\_FORWARDED}
15919
\label{appdev/refs/macros/KDC_OPT_FORWARDED::doc}\label{appdev/refs/macros/KDC_OPT_FORWARDED:kdc-opt-forwarded}\label{appdev/refs/macros/KDC_OPT_FORWARDED:kdc-opt-forwarded-data}\index{KDC\_OPT\_FORWARDED (built-in variable)}
15921
\begin{fulllineitems}
15922
\phantomsection\label{appdev/refs/macros/KDC_OPT_FORWARDED:KDC_OPT_FORWARDED}\pysigline{\bfcode{KDC\_OPT\_FORWARDED}}
15923
\end{fulllineitems}
15926
\begin{tabulary}{\linewidth}{|L|L|}
15929
\code{KDC\_OPT\_FORWARDED}
15937
\subsubsection{KDC\_OPT\_POSTDATED}
15938
\label{appdev/refs/macros/KDC_OPT_POSTDATED:kdc-opt-postdated-data}\label{appdev/refs/macros/KDC_OPT_POSTDATED:kdc-opt-postdated}\label{appdev/refs/macros/KDC_OPT_POSTDATED::doc}\index{KDC\_OPT\_POSTDATED (built-in variable)}
15940
\begin{fulllineitems}
15941
\phantomsection\label{appdev/refs/macros/KDC_OPT_POSTDATED:KDC_OPT_POSTDATED}\pysigline{\bfcode{KDC\_OPT\_POSTDATED}}
15942
\end{fulllineitems}
15945
\begin{tabulary}{\linewidth}{|L|L|}
15948
\code{KDC\_OPT\_POSTDATED}
15956
\subsubsection{KDC\_OPT\_PROXIABLE}
15957
\label{appdev/refs/macros/KDC_OPT_PROXIABLE:kdc-opt-proxiable-data}\label{appdev/refs/macros/KDC_OPT_PROXIABLE::doc}\label{appdev/refs/macros/KDC_OPT_PROXIABLE:kdc-opt-proxiable}\index{KDC\_OPT\_PROXIABLE (built-in variable)}
15959
\begin{fulllineitems}
15960
\phantomsection\label{appdev/refs/macros/KDC_OPT_PROXIABLE:KDC_OPT_PROXIABLE}\pysigline{\bfcode{KDC\_OPT\_PROXIABLE}}
15961
\end{fulllineitems}
15964
\begin{tabulary}{\linewidth}{|L|L|}
15967
\code{KDC\_OPT\_PROXIABLE}
15975
\subsubsection{KDC\_OPT\_PROXY}
15976
\label{appdev/refs/macros/KDC_OPT_PROXY::doc}\label{appdev/refs/macros/KDC_OPT_PROXY:kdc-opt-proxy}\label{appdev/refs/macros/KDC_OPT_PROXY:kdc-opt-proxy-data}\index{KDC\_OPT\_PROXY (built-in variable)}
15978
\begin{fulllineitems}
15979
\phantomsection\label{appdev/refs/macros/KDC_OPT_PROXY:KDC_OPT_PROXY}\pysigline{\bfcode{KDC\_OPT\_PROXY}}
15980
\end{fulllineitems}
15983
\begin{tabulary}{\linewidth}{|L|L|}
15986
\code{KDC\_OPT\_PROXY}
15994
\subsubsection{KDC\_OPT\_RENEW}
15995
\label{appdev/refs/macros/KDC_OPT_RENEW::doc}\label{appdev/refs/macros/KDC_OPT_RENEW:kdc-opt-renew}\label{appdev/refs/macros/KDC_OPT_RENEW:kdc-opt-renew-data}\index{KDC\_OPT\_RENEW (built-in variable)}
15997
\begin{fulllineitems}
15998
\phantomsection\label{appdev/refs/macros/KDC_OPT_RENEW:KDC_OPT_RENEW}\pysigline{\bfcode{KDC\_OPT\_RENEW}}
15999
\end{fulllineitems}
16002
\begin{tabulary}{\linewidth}{|L|L|}
16005
\code{KDC\_OPT\_RENEW}
16013
\subsubsection{KDC\_OPT\_RENEWABLE}
16014
\label{appdev/refs/macros/KDC_OPT_RENEWABLE:kdc-opt-renewable}\label{appdev/refs/macros/KDC_OPT_RENEWABLE:kdc-opt-renewable-data}\label{appdev/refs/macros/KDC_OPT_RENEWABLE::doc}\index{KDC\_OPT\_RENEWABLE (built-in variable)}
16016
\begin{fulllineitems}
16017
\phantomsection\label{appdev/refs/macros/KDC_OPT_RENEWABLE:KDC_OPT_RENEWABLE}\pysigline{\bfcode{KDC\_OPT\_RENEWABLE}}
16018
\end{fulllineitems}
16021
\begin{tabulary}{\linewidth}{|L|L|}
16024
\code{KDC\_OPT\_RENEWABLE}
16032
\subsubsection{KDC\_OPT\_RENEWABLE\_OK}
16033
\label{appdev/refs/macros/KDC_OPT_RENEWABLE_OK::doc}\label{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:kdc-opt-renewable-ok-data}\label{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:kdc-opt-renewable-ok}\index{KDC\_OPT\_RENEWABLE\_OK (built-in variable)}
16035
\begin{fulllineitems}
16036
\phantomsection\label{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:KDC_OPT_RENEWABLE_OK}\pysigline{\bfcode{KDC\_OPT\_RENEWABLE\_OK}}
16037
\end{fulllineitems}
16040
\begin{tabulary}{\linewidth}{|L|L|}
16043
\code{KDC\_OPT\_RENEWABLE\_OK}
16051
\subsubsection{KDC\_OPT\_REQUEST\_ANONYMOUS}
16052
\label{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:kdc-opt-request-anonymous}\label{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:kdc-opt-request-anonymous-data}\label{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS::doc}\index{KDC\_OPT\_REQUEST\_ANONYMOUS (built-in variable)}
16054
\begin{fulllineitems}
16055
\phantomsection\label{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:KDC_OPT_REQUEST_ANONYMOUS}\pysigline{\bfcode{KDC\_OPT\_REQUEST\_ANONYMOUS}}
16056
\end{fulllineitems}
16059
\begin{tabulary}{\linewidth}{|L|L|}
16062
\code{KDC\_OPT\_REQUEST\_ANONYMOUS}
16070
\subsubsection{KDC\_OPT\_VALIDATE}
16071
\label{appdev/refs/macros/KDC_OPT_VALIDATE:kdc-opt-validate-data}\label{appdev/refs/macros/KDC_OPT_VALIDATE:kdc-opt-validate}\label{appdev/refs/macros/KDC_OPT_VALIDATE::doc}\index{KDC\_OPT\_VALIDATE (built-in variable)}
16073
\begin{fulllineitems}
16074
\phantomsection\label{appdev/refs/macros/KDC_OPT_VALIDATE:KDC_OPT_VALIDATE}\pysigline{\bfcode{KDC\_OPT\_VALIDATE}}
16075
\end{fulllineitems}
16078
\begin{tabulary}{\linewidth}{|L|L|}
16081
\code{KDC\_OPT\_VALIDATE}
16089
\subsubsection{KDC\_TKT\_COMMON\_MASK}
16090
\label{appdev/refs/macros/KDC_TKT_COMMON_MASK:kdc-tkt-common-mask-data}\label{appdev/refs/macros/KDC_TKT_COMMON_MASK::doc}\label{appdev/refs/macros/KDC_TKT_COMMON_MASK:kdc-tkt-common-mask}\index{KDC\_TKT\_COMMON\_MASK (built-in variable)}
16092
\begin{fulllineitems}
16093
\phantomsection\label{appdev/refs/macros/KDC_TKT_COMMON_MASK:KDC_TKT_COMMON_MASK}\pysigline{\bfcode{KDC\_TKT\_COMMON\_MASK}}
16094
\end{fulllineitems}
16097
\begin{tabulary}{\linewidth}{|L|L|}
16100
\code{KDC\_TKT\_COMMON\_MASK}
16108
\subsubsection{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}
16109
\label{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:krb5-altauth-att-challenge-response}\label{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:krb5-altauth-att-challenge-response-data}\label{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE::doc}\index{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE (built-in variable)}
16111
\begin{fulllineitems}
16112
\phantomsection\label{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE}\pysigline{\bfcode{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}}
16113
\end{fulllineitems}
16116
alternate authentication types
16118
\begin{tabulary}{\linewidth}{|L|L|}
16121
\code{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}
16129
\subsubsection{KRB5\_ANONYMOUS\_PRINCSTR}
16130
\label{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:krb5-anonymous-princstr}\label{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:krb5-anonymous-princstr-data}\label{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR::doc}\index{KRB5\_ANONYMOUS\_PRINCSTR (built-in variable)}
16132
\begin{fulllineitems}
16133
\phantomsection\label{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR}\pysigline{\bfcode{KRB5\_ANONYMOUS\_PRINCSTR}}
16134
\end{fulllineitems}
16137
Anonymous principal name.
16139
\begin{tabulary}{\linewidth}{|L|L|}
16142
\code{KRB5\_ANONYMOUS\_PRINCSTR}
16150
\subsubsection{KRB5\_ANONYMOUS\_REALMSTR}
16151
\label{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:krb5-anonymous-realmstr-data}\label{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:krb5-anonymous-realmstr}\label{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR::doc}\index{KRB5\_ANONYMOUS\_REALMSTR (built-in variable)}
16153
\begin{fulllineitems}
16154
\phantomsection\label{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR}\pysigline{\bfcode{KRB5\_ANONYMOUS\_REALMSTR}}
16155
\end{fulllineitems}
16160
\begin{tabulary}{\linewidth}{|L|L|}
16163
\code{KRB5\_ANONYMOUS\_REALMSTR}
16165
\code{"WELLKNOWN:ANONYMOUS"}
16171
\subsubsection{KRB5\_AP\_REP}
16172
\label{appdev/refs/macros/KRB5_AP_REP:krb5-ap-rep}\label{appdev/refs/macros/KRB5_AP_REP::doc}\label{appdev/refs/macros/KRB5_AP_REP:krb5-ap-rep-data}\index{KRB5\_AP\_REP (built-in variable)}
16174
\begin{fulllineitems}
16175
\phantomsection\label{appdev/refs/macros/KRB5_AP_REP:KRB5_AP_REP}\pysigline{\bfcode{KRB5\_AP\_REP}}
16176
\end{fulllineitems}
16179
Response to mutual AP request.
16181
\begin{tabulary}{\linewidth}{|L|L|}
16184
\code{KRB5\_AP\_REP}
16186
\code{((krb5\_msgtype)15)}
16192
\subsubsection{KRB5\_AP\_REQ}
16193
\label{appdev/refs/macros/KRB5_AP_REQ:krb5-ap-req}\label{appdev/refs/macros/KRB5_AP_REQ::doc}\label{appdev/refs/macros/KRB5_AP_REQ:krb5-ap-req-data}\index{KRB5\_AP\_REQ (built-in variable)}
16195
\begin{fulllineitems}
16196
\phantomsection\label{appdev/refs/macros/KRB5_AP_REQ:KRB5_AP_REQ}\pysigline{\bfcode{KRB5\_AP\_REQ}}
16197
\end{fulllineitems}
16200
Auth req to application server.
16202
\begin{tabulary}{\linewidth}{|L|L|}
16205
\code{KRB5\_AP\_REQ}
16207
\code{((krb5\_msgtype)14)}
16213
\subsubsection{KRB5\_AS\_REP}
16214
\label{appdev/refs/macros/KRB5_AS_REP:krb5-as-rep}\label{appdev/refs/macros/KRB5_AS_REP:krb5-as-rep-data}\label{appdev/refs/macros/KRB5_AS_REP::doc}\index{KRB5\_AS\_REP (built-in variable)}
16216
\begin{fulllineitems}
16217
\phantomsection\label{appdev/refs/macros/KRB5_AS_REP:KRB5_AS_REP}\pysigline{\bfcode{KRB5\_AS\_REP}}
16218
\end{fulllineitems}
16221
Response to AS request.
16223
\begin{tabulary}{\linewidth}{|L|L|}
16226
\code{KRB5\_AS\_REP}
16228
\code{((krb5\_msgtype)11)}
16234
\subsubsection{KRB5\_AS\_REQ}
16235
\label{appdev/refs/macros/KRB5_AS_REQ:krb5-as-req}\label{appdev/refs/macros/KRB5_AS_REQ:krb5-as-req-data}\label{appdev/refs/macros/KRB5_AS_REQ::doc}\index{KRB5\_AS\_REQ (built-in variable)}
16237
\begin{fulllineitems}
16238
\phantomsection\label{appdev/refs/macros/KRB5_AS_REQ:KRB5_AS_REQ}\pysigline{\bfcode{KRB5\_AS\_REQ}}
16239
\end{fulllineitems}
16242
Initial authentication request.
16244
\begin{tabulary}{\linewidth}{|L|L|}
16247
\code{KRB5\_AS\_REQ}
16249
\code{((krb5\_msgtype)10)}
16255
\subsubsection{KRB5\_AUTHDATA\_AND\_OR}
16256
\label{appdev/refs/macros/KRB5_AUTHDATA_AND_OR::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:krb5-authdata-and-or-data}\label{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:krb5-authdata-and-or}\index{KRB5\_AUTHDATA\_AND\_OR (built-in variable)}
16258
\begin{fulllineitems}
16259
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:KRB5_AUTHDATA_AND_OR}\pysigline{\bfcode{KRB5\_AUTHDATA\_AND\_OR}}
16260
\end{fulllineitems}
16263
\begin{tabulary}{\linewidth}{|L|L|}
16266
\code{KRB5\_AUTHDATA\_AND\_OR}
16274
\subsubsection{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}
16275
\label{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:krb5-authdata-etype-negotiation}\label{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:krb5-authdata-etype-negotiation-data}\index{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION (built-in variable)}
16277
\begin{fulllineitems}
16278
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:KRB5_AUTHDATA_ETYPE_NEGOTIATION}\pysigline{\bfcode{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}}
16279
\end{fulllineitems}
16284
\begin{tabulary}{\linewidth}{|L|L|}
16287
\code{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}
16295
\subsubsection{KRB5\_AUTHDATA\_FX\_ARMOR}
16296
\label{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:krb5-authdata-fx-armor}\label{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:krb5-authdata-fx-armor-data}\index{KRB5\_AUTHDATA\_FX\_ARMOR (built-in variable)}
16298
\begin{fulllineitems}
16299
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:KRB5_AUTHDATA_FX_ARMOR}\pysigline{\bfcode{KRB5\_AUTHDATA\_FX\_ARMOR}}
16300
\end{fulllineitems}
16303
\begin{tabulary}{\linewidth}{|L|L|}
16306
\code{KRB5\_AUTHDATA\_FX\_ARMOR}
16314
\subsubsection{KRB5\_AUTHDATA\_IF\_RELEVANT}
16315
\label{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:krb5-authdata-if-relevant-data}\label{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:krb5-authdata-if-relevant}\label{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT::doc}\index{KRB5\_AUTHDATA\_IF\_RELEVANT (built-in variable)}
16317
\begin{fulllineitems}
16318
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:KRB5_AUTHDATA_IF_RELEVANT}\pysigline{\bfcode{KRB5\_AUTHDATA\_IF\_RELEVANT}}
16319
\end{fulllineitems}
16322
\begin{tabulary}{\linewidth}{|L|L|}
16325
\code{KRB5\_AUTHDATA\_IF\_RELEVANT}
16333
\subsubsection{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}
16334
\label{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:krb5-authdata-initial-verified-cas-data}\label{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:krb5-authdata-initial-verified-cas}\label{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS::doc}\index{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS (built-in variable)}
16336
\begin{fulllineitems}
16337
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:KRB5_AUTHDATA_INITIAL_VERIFIED_CAS}\pysigline{\bfcode{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}}
16338
\end{fulllineitems}
16341
\begin{tabulary}{\linewidth}{|L|L|}
16344
\code{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}
16352
\subsubsection{KRB5\_AUTHDATA\_KDC\_ISSUED}
16353
\label{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:krb5-authdata-kdc-issued-data}\label{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:krb5-authdata-kdc-issued}\index{KRB5\_AUTHDATA\_KDC\_ISSUED (built-in variable)}
16355
\begin{fulllineitems}
16356
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:KRB5_AUTHDATA_KDC_ISSUED}\pysigline{\bfcode{KRB5\_AUTHDATA\_KDC\_ISSUED}}
16357
\end{fulllineitems}
16360
\begin{tabulary}{\linewidth}{|L|L|}
16363
\code{KRB5\_AUTHDATA\_KDC\_ISSUED}
16371
\subsubsection{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}
16372
\label{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:krb5-authdata-mandatory-for-kdc}\label{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:krb5-authdata-mandatory-for-kdc-data}\index{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC (built-in variable)}
16374
\begin{fulllineitems}
16375
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:KRB5_AUTHDATA_MANDATORY_FOR_KDC}\pysigline{\bfcode{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}}
16376
\end{fulllineitems}
16379
\begin{tabulary}{\linewidth}{|L|L|}
16382
\code{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}
16390
\subsubsection{KRB5\_AUTHDATA\_OSF\_DCE}
16391
\label{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:krb5-authdata-osf-dce-data}\label{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:krb5-authdata-osf-dce}\index{KRB5\_AUTHDATA\_OSF\_DCE (built-in variable)}
16393
\begin{fulllineitems}
16394
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:KRB5_AUTHDATA_OSF_DCE}\pysigline{\bfcode{KRB5\_AUTHDATA\_OSF\_DCE}}
16395
\end{fulllineitems}
16398
\begin{tabulary}{\linewidth}{|L|L|}
16401
\code{KRB5\_AUTHDATA\_OSF\_DCE}
16409
\subsubsection{KRB5\_AUTHDATA\_SESAME}
16410
\label{appdev/refs/macros/KRB5_AUTHDATA_SESAME:krb5-authdata-sesame}\label{appdev/refs/macros/KRB5_AUTHDATA_SESAME::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_SESAME:krb5-authdata-sesame-data}\index{KRB5\_AUTHDATA\_SESAME (built-in variable)}
16412
\begin{fulllineitems}
16413
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_SESAME:KRB5_AUTHDATA_SESAME}\pysigline{\bfcode{KRB5\_AUTHDATA\_SESAME}}
16414
\end{fulllineitems}
16417
\begin{tabulary}{\linewidth}{|L|L|}
16420
\code{KRB5\_AUTHDATA\_SESAME}
16428
\subsubsection{KRB5\_AUTHDATA\_SIGNTICKET}
16429
\label{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:krb5-authdata-signticket-data}\label{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:krb5-authdata-signticket}\label{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET::doc}\index{KRB5\_AUTHDATA\_SIGNTICKET (built-in variable)}
16431
\begin{fulllineitems}
16432
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:KRB5_AUTHDATA_SIGNTICKET}\pysigline{\bfcode{KRB5\_AUTHDATA\_SIGNTICKET}}
16433
\end{fulllineitems}
16436
formerly 142 in krb5 1.8
16438
\begin{tabulary}{\linewidth}{|L|L|}
16441
\code{KRB5\_AUTHDATA\_SIGNTICKET}
16449
\subsubsection{KRB5\_AUTHDATA\_WIN2K\_PAC}
16450
\label{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:krb5-authdata-win2k-pac-data}\label{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC::doc}\label{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:krb5-authdata-win2k-pac}\index{KRB5\_AUTHDATA\_WIN2K\_PAC (built-in variable)}
16452
\begin{fulllineitems}
16453
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:KRB5_AUTHDATA_WIN2K_PAC}\pysigline{\bfcode{KRB5\_AUTHDATA\_WIN2K\_PAC}}
16454
\end{fulllineitems}
16457
\begin{tabulary}{\linewidth}{|L|L|}
16460
\code{KRB5\_AUTHDATA\_WIN2K\_PAC}
16468
\subsubsection{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}
16469
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:krb5-auth-context-do-sequence-data}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:krb5-auth-context-do-sequence}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE::doc}\index{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE (built-in variable)}
16471
\begin{fulllineitems}
16472
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}
16473
\end{fulllineitems}
16476
Prevent replays with sequence numbers.
16478
\begin{tabulary}{\linewidth}{|L|L|}
16481
\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}
16489
\subsubsection{KRB5\_AUTH\_CONTEXT\_DO\_TIME}
16490
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:krb5-auth-context-do-time-data}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:krb5-auth-context-do-time}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME::doc}\index{KRB5\_AUTH\_CONTEXT\_DO\_TIME (built-in variable)}
16492
\begin{fulllineitems}
16493
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}
16494
\end{fulllineitems}
16497
Prevent replays with timestamps and replay cache.
16499
\begin{tabulary}{\linewidth}{|L|L|}
16502
\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}
16510
\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}
16511
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR::doc}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:krb5-auth-context-generate-local-addr}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:krb5-auth-context-generate-local-addr-data}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR (built-in variable)}
16513
\begin{fulllineitems}
16514
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}}
16515
\end{fulllineitems}
16518
Generate the local network address.
16520
\begin{tabulary}{\linewidth}{|L|L|}
16523
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}
16531
\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}
16532
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:krb5-auth-context-generate-local-full-addr}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:krb5-auth-context-generate-local-full-addr-data}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR::doc}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR (built-in variable)}
16534
\begin{fulllineitems}
16535
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}}
16536
\end{fulllineitems}
16539
Generate the local network address and the local port.
16541
\begin{tabulary}{\linewidth}{|L|L|}
16544
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}
16552
\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}
16553
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:krb5-auth-context-generate-remote-addr-data}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:krb5-auth-context-generate-remote-addr}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR::doc}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR (built-in variable)}
16555
\begin{fulllineitems}
16556
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}}
16557
\end{fulllineitems}
16560
Generate the remote network address.
16562
\begin{tabulary}{\linewidth}{|L|L|}
16565
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}
16573
\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}
16574
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:krb5-auth-context-generate-remote-full-addr}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR::doc}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:krb5-auth-context-generate-remote-full-addr-data}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR (built-in variable)}
16576
\begin{fulllineitems}
16577
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}}
16578
\end{fulllineitems}
16581
Generate the remote network address and the remote port.
16583
\begin{tabulary}{\linewidth}{|L|L|}
16586
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}
16594
\subsubsection{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}
16595
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:krb5-auth-context-permit-all}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:krb5-auth-context-permit-all-data}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL::doc}\index{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL (built-in variable)}
16597
\begin{fulllineitems}
16598
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:KRB5_AUTH_CONTEXT_PERMIT_ALL}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}}
16599
\end{fulllineitems}
16602
\begin{tabulary}{\linewidth}{|L|L|}
16605
\code{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}
16613
\subsubsection{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}
16614
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE::doc}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:krb5-auth-context-ret-sequence}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:krb5-auth-context-ret-sequence-data}\index{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE (built-in variable)}
16616
\begin{fulllineitems}
16617
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}
16618
\end{fulllineitems}
16621
Save sequence numbers for application.
16623
\begin{tabulary}{\linewidth}{|L|L|}
16626
\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}
16634
\subsubsection{KRB5\_AUTH\_CONTEXT\_RET\_TIME}
16635
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME::doc}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:krb5-auth-context-ret-time}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:krb5-auth-context-ret-time-data}\index{KRB5\_AUTH\_CONTEXT\_RET\_TIME (built-in variable)}
16637
\begin{fulllineitems}
16638
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}
16639
\end{fulllineitems}
16642
Save timestamps for application.
16644
\begin{tabulary}{\linewidth}{|L|L|}
16647
\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}
16655
\subsubsection{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}
16656
\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY::doc}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:krb5-auth-context-use-subkey-data}\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:krb5-auth-context-use-subkey}\index{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY (built-in variable)}
16658
\begin{fulllineitems}
16659
\phantomsection\label{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:KRB5_AUTH_CONTEXT_USE_SUBKEY}\pysigline{\bfcode{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}}
16660
\end{fulllineitems}
16663
\begin{tabulary}{\linewidth}{|L|L|}
16666
\code{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}
16674
\subsubsection{KRB5\_CRED}
16675
\label{appdev/refs/macros/KRB5_CRED:krb5-cred-data}\label{appdev/refs/macros/KRB5_CRED::doc}\label{appdev/refs/macros/KRB5_CRED:krb5-cred}\index{KRB5\_CRED (built-in variable)}
16677
\begin{fulllineitems}
16678
\phantomsection\label{appdev/refs/macros/KRB5_CRED:KRB5_CRED}\pysigline{\bfcode{KRB5\_CRED}}
16679
\end{fulllineitems}
16682
Cred forwarding message.
16684
\begin{tabulary}{\linewidth}{|L|L|}
16689
\code{((krb5\_msgtype)22)}
16695
\subsubsection{KRB5\_CRYPTO\_TYPE\_CHECKSUM}
16696
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:krb5-crypto-type-checksum-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:krb5-crypto-type-checksum}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM::doc}\index{KRB5\_CRYPTO\_TYPE\_CHECKSUM (built-in variable)}
16698
\begin{fulllineitems}
16699
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}
16700
\end{fulllineitems}
16703
{[}out{]} checksum for MIC
16705
\begin{tabulary}{\linewidth}{|L|L|}
16708
\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}
16716
\subsubsection{KRB5\_CRYPTO\_TYPE\_DATA}
16717
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA::doc}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:krb5-crypto-type-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:krb5-crypto-type-data-data}\index{KRB5\_CRYPTO\_TYPE\_DATA (built-in variable)}
16719
\begin{fulllineitems}
16720
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_DATA}}
16721
\end{fulllineitems}
16724
{[}in, out{]} plaintext
16726
\begin{tabulary}{\linewidth}{|L|L|}
16729
\code{KRB5\_CRYPTO\_TYPE\_DATA}
16737
\subsubsection{KRB5\_CRYPTO\_TYPE\_EMPTY}
16738
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY::doc}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:krb5-crypto-type-empty}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:krb5-crypto-type-empty-data}\index{KRB5\_CRYPTO\_TYPE\_EMPTY (built-in variable)}
16740
\begin{fulllineitems}
16741
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:KRB5_CRYPTO_TYPE_EMPTY}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_EMPTY}}
16742
\end{fulllineitems}
16747
\begin{tabulary}{\linewidth}{|L|L|}
16750
\code{KRB5\_CRYPTO\_TYPE\_EMPTY}
16758
\subsubsection{KRB5\_CRYPTO\_TYPE\_HEADER}
16759
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:krb5-crypto-type-header}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:krb5-crypto-type-header-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER::doc}\index{KRB5\_CRYPTO\_TYPE\_HEADER (built-in variable)}
16761
\begin{fulllineitems}
16762
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:KRB5_CRYPTO_TYPE_HEADER}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_HEADER}}
16763
\end{fulllineitems}
16768
\begin{tabulary}{\linewidth}{|L|L|}
16771
\code{KRB5\_CRYPTO\_TYPE\_HEADER}
16779
\subsubsection{KRB5\_CRYPTO\_TYPE\_PADDING}
16780
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING::doc}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:krb5-crypto-type-padding-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:krb5-crypto-type-padding}\index{KRB5\_CRYPTO\_TYPE\_PADDING (built-in variable)}
16782
\begin{fulllineitems}
16783
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:KRB5_CRYPTO_TYPE_PADDING}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_PADDING}}
16784
\end{fulllineitems}
16789
\begin{tabulary}{\linewidth}{|L|L|}
16792
\code{KRB5\_CRYPTO\_TYPE\_PADDING}
16800
\subsubsection{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}
16801
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:krb5-crypto-type-sign-only}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:krb5-crypto-type-sign-only-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY::doc}\index{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY (built-in variable)}
16803
\begin{fulllineitems}
16804
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}
16805
\end{fulllineitems}
16808
{[}in{]} associated data
16810
\begin{tabulary}{\linewidth}{|L|L|}
16813
\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}
16821
\subsubsection{KRB5\_CRYPTO\_TYPE\_STREAM}
16822
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:krb5-crypto-type-stream-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM::doc}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:krb5-crypto-type-stream}\index{KRB5\_CRYPTO\_TYPE\_STREAM (built-in variable)}
16824
\begin{fulllineitems}
16825
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:KRB5_CRYPTO_TYPE_STREAM}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_STREAM}}
16826
\end{fulllineitems}
16829
{[}in{]} entire message without decomposing the structure into header, data and trailer buffers
16831
\begin{tabulary}{\linewidth}{|L|L|}
16834
\code{KRB5\_CRYPTO\_TYPE\_STREAM}
16842
\subsubsection{KRB5\_CRYPTO\_TYPE\_TRAILER}
16843
\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:krb5-crypto-type-trailer}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:krb5-crypto-type-trailer-data}\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER::doc}\index{KRB5\_CRYPTO\_TYPE\_TRAILER (built-in variable)}
16845
\begin{fulllineitems}
16846
\phantomsection\label{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:KRB5_CRYPTO_TYPE_TRAILER}\pysigline{\bfcode{KRB5\_CRYPTO\_TYPE\_TRAILER}}
16847
\end{fulllineitems}
16850
{[}out{]} checksum for encrypt
16852
\begin{tabulary}{\linewidth}{|L|L|}
16855
\code{KRB5\_CRYPTO\_TYPE\_TRAILER}
16863
\subsubsection{KRB5\_CYBERSAFE\_SECUREID}
16864
\label{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:krb5-cybersafe-secureid}\label{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID::doc}\label{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:krb5-cybersafe-secureid-data}\index{KRB5\_CYBERSAFE\_SECUREID (built-in variable)}
16866
\begin{fulllineitems}
16867
\phantomsection\label{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:KRB5_CYBERSAFE_SECUREID}\pysigline{\bfcode{KRB5\_CYBERSAFE\_SECUREID}}
16868
\end{fulllineitems}
16873
\begin{tabulary}{\linewidth}{|L|L|}
16876
\code{KRB5\_CYBERSAFE\_SECUREID}
16884
\subsubsection{KRB5\_DOMAIN\_X500\_COMPRESS}
16885
\label{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS::doc}\label{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:krb5-domain-x500-compress}\label{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:krb5-domain-x500-compress-data}\index{KRB5\_DOMAIN\_X500\_COMPRESS (built-in variable)}
16887
\begin{fulllineitems}
16888
\phantomsection\label{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:KRB5_DOMAIN_X500_COMPRESS}\pysigline{\bfcode{KRB5\_DOMAIN\_X500\_COMPRESS}}
16889
\end{fulllineitems}
16892
Transited encoding types.
16894
\begin{tabulary}{\linewidth}{|L|L|}
16897
\code{KRB5\_DOMAIN\_X500\_COMPRESS}
16905
\subsubsection{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}
16906
\label{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:krb5-encpadata-req-enc-pa-rep}\label{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:krb5-encpadata-req-enc-pa-rep-data}\label{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP::doc}\index{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP (built-in variable)}
16908
\begin{fulllineitems}
16909
\phantomsection\label{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:KRB5_ENCPADATA_REQ_ENC_PA_REP}\pysigline{\bfcode{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}}
16910
\end{fulllineitems}
16913
\begin{tabulary}{\linewidth}{|L|L|}
16916
\code{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}
16924
\subsubsection{KRB5\_ERROR}
16925
\label{appdev/refs/macros/KRB5_ERROR:krb5-error-data}\label{appdev/refs/macros/KRB5_ERROR:krb5-error}\label{appdev/refs/macros/KRB5_ERROR::doc}\index{KRB5\_ERROR (built-in variable)}
16927
\begin{fulllineitems}
16928
\phantomsection\label{appdev/refs/macros/KRB5_ERROR:KRB5_ERROR}\pysigline{\bfcode{KRB5\_ERROR}}
16929
\end{fulllineitems}
16934
\begin{tabulary}{\linewidth}{|L|L|}
16939
\code{((krb5\_msgtype)30)}
16945
\subsubsection{KRB5\_FAST\_REQUIRED}
16946
\label{appdev/refs/macros/KRB5_FAST_REQUIRED:krb5-fast-required}\label{appdev/refs/macros/KRB5_FAST_REQUIRED:krb5-fast-required-data}\label{appdev/refs/macros/KRB5_FAST_REQUIRED::doc}\index{KRB5\_FAST\_REQUIRED (built-in variable)}
16948
\begin{fulllineitems}
16949
\phantomsection\label{appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED}\pysigline{\bfcode{KRB5\_FAST\_REQUIRED}}
16950
\end{fulllineitems}
16953
Require KDC to support FAST.
16955
\begin{tabulary}{\linewidth}{|L|L|}
16958
\code{KRB5\_FAST\_REQUIRED}
16966
\subsubsection{KRB5\_GC\_CACHED}
16967
\label{appdev/refs/macros/KRB5_GC_CACHED:krb5-gc-cached}\label{appdev/refs/macros/KRB5_GC_CACHED:krb5-gc-cached-data}\label{appdev/refs/macros/KRB5_GC_CACHED::doc}\index{KRB5\_GC\_CACHED (built-in variable)}
16969
\begin{fulllineitems}
16970
\phantomsection\label{appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED}\pysigline{\bfcode{KRB5\_GC\_CACHED}}
16971
\end{fulllineitems}
16974
Want cached ticket only.
16976
\begin{tabulary}{\linewidth}{|L|L|}
16979
\code{KRB5\_GC\_CACHED}
16987
\subsubsection{KRB5\_GC\_CANONICALIZE}
16988
\label{appdev/refs/macros/KRB5_GC_CANONICALIZE:krb5-gc-canonicalize-data}\label{appdev/refs/macros/KRB5_GC_CANONICALIZE:krb5-gc-canonicalize}\label{appdev/refs/macros/KRB5_GC_CANONICALIZE::doc}\index{KRB5\_GC\_CANONICALIZE (built-in variable)}
16990
\begin{fulllineitems}
16991
\phantomsection\label{appdev/refs/macros/KRB5_GC_CANONICALIZE:KRB5_GC_CANONICALIZE}\pysigline{\bfcode{KRB5\_GC\_CANONICALIZE}}
16992
\end{fulllineitems}
16995
Set canonicalize KDC option.
16997
\begin{tabulary}{\linewidth}{|L|L|}
17000
\code{KRB5\_GC\_CANONICALIZE}
17008
\subsubsection{KRB5\_GC\_CONSTRAINED\_DELEGATION}
17009
\label{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:krb5-gc-constrained-delegation}\label{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:krb5-gc-constrained-delegation-data}\label{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION::doc}\index{KRB5\_GC\_CONSTRAINED\_DELEGATION (built-in variable)}
17011
\begin{fulllineitems}
17012
\phantomsection\label{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:KRB5_GC_CONSTRAINED_DELEGATION}\pysigline{\bfcode{KRB5\_GC\_CONSTRAINED\_DELEGATION}}
17013
\end{fulllineitems}
17016
Constrained delegation.
17018
\begin{tabulary}{\linewidth}{|L|L|}
17021
\code{KRB5\_GC\_CONSTRAINED\_DELEGATION}
17029
\subsubsection{KRB5\_GC\_FORWARDABLE}
17030
\label{appdev/refs/macros/KRB5_GC_FORWARDABLE:krb5-gc-forwardable-data}\label{appdev/refs/macros/KRB5_GC_FORWARDABLE:krb5-gc-forwardable}\label{appdev/refs/macros/KRB5_GC_FORWARDABLE::doc}\index{KRB5\_GC\_FORWARDABLE (built-in variable)}
17032
\begin{fulllineitems}
17033
\phantomsection\label{appdev/refs/macros/KRB5_GC_FORWARDABLE:KRB5_GC_FORWARDABLE}\pysigline{\bfcode{KRB5\_GC\_FORWARDABLE}}
17034
\end{fulllineitems}
17037
Acquire forwardable tickets.
17039
\begin{tabulary}{\linewidth}{|L|L|}
17042
\code{KRB5\_GC\_FORWARDABLE}
17050
\subsubsection{KRB5\_GC\_NO\_STORE}
17051
\label{appdev/refs/macros/KRB5_GC_NO_STORE::doc}\label{appdev/refs/macros/KRB5_GC_NO_STORE:krb5-gc-no-store}\label{appdev/refs/macros/KRB5_GC_NO_STORE:krb5-gc-no-store-data}\index{KRB5\_GC\_NO\_STORE (built-in variable)}
17053
\begin{fulllineitems}
17054
\phantomsection\label{appdev/refs/macros/KRB5_GC_NO_STORE:KRB5_GC_NO_STORE}\pysigline{\bfcode{KRB5\_GC\_NO\_STORE}}
17055
\end{fulllineitems}
17058
Do not store in credential cache.
17060
\begin{tabulary}{\linewidth}{|L|L|}
17063
\code{KRB5\_GC\_NO\_STORE}
17071
\subsubsection{KRB5\_GC\_NO\_TRANSIT\_CHECK}
17072
\label{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:krb5-gc-no-transit-check-data}\label{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:krb5-gc-no-transit-check}\label{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK::doc}\index{KRB5\_GC\_NO\_TRANSIT\_CHECK (built-in variable)}
17074
\begin{fulllineitems}
17075
\phantomsection\label{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:KRB5_GC_NO_TRANSIT_CHECK}\pysigline{\bfcode{KRB5\_GC\_NO\_TRANSIT\_CHECK}}
17076
\end{fulllineitems}
17079
Disable transited check.
17081
\begin{tabulary}{\linewidth}{|L|L|}
17084
\code{KRB5\_GC\_NO\_TRANSIT\_CHECK}
17092
\subsubsection{KRB5\_GC\_USER\_USER}
17093
\label{appdev/refs/macros/KRB5_GC_USER_USER::doc}\label{appdev/refs/macros/KRB5_GC_USER_USER:krb5-gc-user-user}\label{appdev/refs/macros/KRB5_GC_USER_USER:krb5-gc-user-user-data}\index{KRB5\_GC\_USER\_USER (built-in variable)}
17095
\begin{fulllineitems}
17096
\phantomsection\label{appdev/refs/macros/KRB5_GC_USER_USER:KRB5_GC_USER_USER}\pysigline{\bfcode{KRB5\_GC\_USER\_USER}}
17097
\end{fulllineitems}
17100
Want user-user ticket.
17102
\begin{tabulary}{\linewidth}{|L|L|}
17105
\code{KRB5\_GC\_USER\_USER}
17113
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}
17114
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST:krb5-get-init-creds-opt-address-list}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST:krb5-get-init-creds-opt-address-list-data}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST (built-in variable)}
17116
\begin{fulllineitems}
17117
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST:KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}}
17118
\end{fulllineitems}
17121
\begin{tabulary}{\linewidth}{|L|L|}
17124
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}
17132
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}
17133
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:krb5-get-init-creds-opt-anonymous-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:krb5-get-init-creds-opt-anonymous}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS (built-in variable)}
17135
\begin{fulllineitems}
17136
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:KRB5_GET_INIT_CREDS_OPT_ANONYMOUS}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}}
17137
\end{fulllineitems}
17140
\begin{tabulary}{\linewidth}{|L|L|}
17143
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}
17151
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}
17152
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:krb5-get-init-creds-opt-canonicalize-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:krb5-get-init-creds-opt-canonicalize}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE (built-in variable)}
17154
\begin{fulllineitems}
17155
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:KRB5_GET_INIT_CREDS_OPT_CANONICALIZE}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}}
17156
\end{fulllineitems}
17159
\begin{tabulary}{\linewidth}{|L|L|}
17162
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}
17170
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}
17171
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT:krb5-get-init-creds-opt-chg-pwd-prmpt}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT:krb5-get-init-creds-opt-chg-pwd-prmpt-data}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT (built-in variable)}
17173
\begin{fulllineitems}
17174
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT:KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}}
17175
\end{fulllineitems}
17178
\begin{tabulary}{\linewidth}{|L|L|}
17181
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}
17189
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}
17190
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:krb5-get-init-creds-opt-etype-list-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:krb5-get-init-creds-opt-etype-list}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST::doc}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST (built-in variable)}
17192
\begin{fulllineitems}
17193
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}}
17194
\end{fulllineitems}
17197
\begin{tabulary}{\linewidth}{|L|L|}
17200
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}
17208
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}
17209
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE:krb5-get-init-creds-opt-forwardable}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE:krb5-get-init-creds-opt-forwardable-data}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE (built-in variable)}
17211
\begin{fulllineitems}
17212
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE:KRB5_GET_INIT_CREDS_OPT_FORWARDABLE}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}}
17213
\end{fulllineitems}
17216
\begin{tabulary}{\linewidth}{|L|L|}
17219
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}
17227
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}
17228
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:krb5-get-init-creds-opt-preauth-list}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:krb5-get-init-creds-opt-preauth-list-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST::doc}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST (built-in variable)}
17230
\begin{fulllineitems}
17231
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}}
17232
\end{fulllineitems}
17235
\begin{tabulary}{\linewidth}{|L|L|}
17238
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}
17246
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}
17247
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:krb5-get-init-creds-opt-proxiable-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:krb5-get-init-creds-opt-proxiable}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE::doc}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE (built-in variable)}
17249
\begin{fulllineitems}
17250
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:KRB5_GET_INIT_CREDS_OPT_PROXIABLE}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}}
17251
\end{fulllineitems}
17254
\begin{tabulary}{\linewidth}{|L|L|}
17257
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}
17265
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}
17266
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:krb5-get-init-creds-opt-renew-life-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:krb5-get-init-creds-opt-renew-life}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE (built-in variable)}
17268
\begin{fulllineitems}
17269
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}}
17270
\end{fulllineitems}
17273
\begin{tabulary}{\linewidth}{|L|L|}
17276
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}
17284
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}
17285
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:krb5-get-init-creds-opt-salt-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:krb5-get-init-creds-opt-salt}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT::doc}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT (built-in variable)}
17287
\begin{fulllineitems}
17288
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:KRB5_GET_INIT_CREDS_OPT_SALT}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}}
17289
\end{fulllineitems}
17292
\begin{tabulary}{\linewidth}{|L|L|}
17295
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}
17303
\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}
17304
\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE::doc}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:krb5-get-init-creds-opt-tkt-life-data}\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:krb5-get-init-creds-opt-tkt-life}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE (built-in variable)}
17306
\begin{fulllineitems}
17307
\phantomsection\label{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:KRB5_GET_INIT_CREDS_OPT_TKT_LIFE}\pysigline{\bfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}}
17308
\end{fulllineitems}
17311
\begin{tabulary}{\linewidth}{|L|L|}
17314
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}
17322
\subsubsection{KRB5\_INIT\_CONTEXT\_SECURE}
17323
\label{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE::doc}\label{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:krb5-init-context-secure}\label{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:krb5-init-context-secure-data}\index{KRB5\_INIT\_CONTEXT\_SECURE (built-in variable)}
17325
\begin{fulllineitems}
17326
\phantomsection\label{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:KRB5_INIT_CONTEXT_SECURE}\pysigline{\bfcode{KRB5\_INIT\_CONTEXT\_SECURE}}
17327
\end{fulllineitems}
17330
Use secure context configuration.
17332
\begin{tabulary}{\linewidth}{|L|L|}
17335
\code{KRB5\_INIT\_CONTEXT\_SECURE}
17343
\subsubsection{KRB5\_INIT\_CONTEXT\_KDC}
17344
\label{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:krb5-init-context-kdc}\label{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC::doc}\label{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:krb5-init-context-kdc-data}\index{KRB5\_INIT\_CONTEXT\_KDC (built-in variable)}
17346
\begin{fulllineitems}
17347
\phantomsection\label{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:KRB5_INIT_CONTEXT_KDC}\pysigline{\bfcode{KRB5\_INIT\_CONTEXT\_KDC}}
17348
\end{fulllineitems}
17351
Use KDC configuration if available.
17353
\begin{tabulary}{\linewidth}{|L|L|}
17356
\code{KRB5\_INIT\_CONTEXT\_KDC}
17364
\subsubsection{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}
17365
\label{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:krb5-init-creds-step-flag-continue-data}\label{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:krb5-init-creds-step-flag-continue}\label{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE::doc}\index{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE (built-in variable)}
17367
\begin{fulllineitems}
17368
\phantomsection\label{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE}\pysigline{\bfcode{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}}
17369
\end{fulllineitems}
17372
More responses needed.
17374
\begin{tabulary}{\linewidth}{|L|L|}
17377
\code{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}
17385
\subsubsection{KRB5\_INT16\_MAX}
17386
\label{appdev/refs/macros/KRB5_INT16_MAX:krb5-int16-max-data}\label{appdev/refs/macros/KRB5_INT16_MAX::doc}\label{appdev/refs/macros/KRB5_INT16_MAX:krb5-int16-max}\index{KRB5\_INT16\_MAX (built-in variable)}
17388
\begin{fulllineitems}
17389
\phantomsection\label{appdev/refs/macros/KRB5_INT16_MAX:KRB5_INT16_MAX}\pysigline{\bfcode{KRB5\_INT16\_MAX}}
17390
\end{fulllineitems}
17393
\begin{tabulary}{\linewidth}{|L|L|}
17396
\code{KRB5\_INT16\_MAX}
17404
\subsubsection{KRB5\_INT16\_MIN}
17405
\label{appdev/refs/macros/KRB5_INT16_MIN:krb5-int16-min-data}\label{appdev/refs/macros/KRB5_INT16_MIN:krb5-int16-min}\label{appdev/refs/macros/KRB5_INT16_MIN::doc}\index{KRB5\_INT16\_MIN (built-in variable)}
17407
\begin{fulllineitems}
17408
\phantomsection\label{appdev/refs/macros/KRB5_INT16_MIN:KRB5_INT16_MIN}\pysigline{\bfcode{KRB5\_INT16\_MIN}}
17409
\end{fulllineitems}
17412
\begin{tabulary}{\linewidth}{|L|L|}
17415
\code{KRB5\_INT16\_MIN}
17417
\code{(-KRB5\_INT16\_MAX-1)}
17423
\subsubsection{KRB5\_INT32\_MAX}
17424
\label{appdev/refs/macros/KRB5_INT32_MAX:krb5-int32-max-data}\label{appdev/refs/macros/KRB5_INT32_MAX:krb5-int32-max}\label{appdev/refs/macros/KRB5_INT32_MAX::doc}\index{KRB5\_INT32\_MAX (built-in variable)}
17426
\begin{fulllineitems}
17427
\phantomsection\label{appdev/refs/macros/KRB5_INT32_MAX:KRB5_INT32_MAX}\pysigline{\bfcode{KRB5\_INT32\_MAX}}
17428
\end{fulllineitems}
17431
\begin{tabulary}{\linewidth}{|L|L|}
17434
\code{KRB5\_INT32\_MAX}
17442
\subsubsection{KRB5\_INT32\_MIN}
17443
\label{appdev/refs/macros/KRB5_INT32_MIN:krb5-int32-min-data}\label{appdev/refs/macros/KRB5_INT32_MIN::doc}\label{appdev/refs/macros/KRB5_INT32_MIN:krb5-int32-min}\index{KRB5\_INT32\_MIN (built-in variable)}
17445
\begin{fulllineitems}
17446
\phantomsection\label{appdev/refs/macros/KRB5_INT32_MIN:KRB5_INT32_MIN}\pysigline{\bfcode{KRB5\_INT32\_MIN}}
17447
\end{fulllineitems}
17450
\begin{tabulary}{\linewidth}{|L|L|}
17453
\code{KRB5\_INT32\_MIN}
17455
\code{(-KRB5\_INT32\_MAX-1)}
17461
\subsubsection{KRB5\_KEYUSAGE\_AD\_ITE}
17462
\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:krb5-keyusage-ad-ite-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:krb5-keyusage-ad-ite}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE::doc}\index{KRB5\_KEYUSAGE\_AD\_ITE (built-in variable)}
17464
\begin{fulllineitems}
17465
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:KRB5_KEYUSAGE_AD_ITE}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AD\_ITE}}
17466
\end{fulllineitems}
17469
\begin{tabulary}{\linewidth}{|L|L|}
17472
\code{KRB5\_KEYUSAGE\_AD\_ITE}
17480
\subsubsection{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}
17481
\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:krb5-keyusage-ad-kdcissued-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:krb5-keyusage-ad-kdcissued-cksum}\index{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM (built-in variable)}
17483
\begin{fulllineitems}
17484
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}}
17485
\end{fulllineitems}
17488
\begin{tabulary}{\linewidth}{|L|L|}
17491
\code{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}
17499
\subsubsection{KRB5\_KEYUSAGE\_AD\_MTE}
17500
\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:krb5-keyusage-ad-mte-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:krb5-keyusage-ad-mte}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE::doc}\index{KRB5\_KEYUSAGE\_AD\_MTE (built-in variable)}
17502
\begin{fulllineitems}
17503
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:KRB5_KEYUSAGE_AD_MTE}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AD\_MTE}}
17504
\end{fulllineitems}
17507
\begin{tabulary}{\linewidth}{|L|L|}
17510
\code{KRB5\_KEYUSAGE\_AD\_MTE}
17518
\subsubsection{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}
17519
\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:krb5-keyusage-ad-signedpath-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:krb5-keyusage-ad-signedpath}\index{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH (built-in variable)}
17521
\begin{fulllineitems}
17522
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:KRB5_KEYUSAGE_AD_SIGNEDPATH}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}}
17523
\end{fulllineitems}
17526
\begin{tabulary}{\linewidth}{|L|L|}
17529
\code{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}
17537
\subsubsection{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}
17538
\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:krb5-keyusage-app-data-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:krb5-keyusage-app-data-cksum}\index{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM (built-in variable)}
17540
\begin{fulllineitems}
17541
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:KRB5_KEYUSAGE_APP_DATA_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}}
17542
\end{fulllineitems}
17545
\begin{tabulary}{\linewidth}{|L|L|}
17548
\code{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}
17556
\subsubsection{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}
17557
\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:krb5-keyusage-app-data-encrypt}\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:krb5-keyusage-app-data-encrypt-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT::doc}\index{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT (built-in variable)}
17559
\begin{fulllineitems}
17560
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:KRB5_KEYUSAGE_APP_DATA_ENCRYPT}\pysigline{\bfcode{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}}
17561
\end{fulllineitems}
17564
\begin{tabulary}{\linewidth}{|L|L|}
17567
\code{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}
17575
\subsubsection{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}
17576
\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:krb5-keyusage-ap-rep-encpart}\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:krb5-keyusage-ap-rep-encpart-data}\index{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART (built-in variable)}
17578
\begin{fulllineitems}
17579
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:KRB5_KEYUSAGE_AP_REP_ENCPART}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}}
17580
\end{fulllineitems}
17583
\begin{tabulary}{\linewidth}{|L|L|}
17586
\code{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}
17594
\subsubsection{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}
17595
\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:krb5-keyusage-ap-req-auth}\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:krb5-keyusage-ap-req-auth-data}\index{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH (built-in variable)}
17597
\begin{fulllineitems}
17598
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:KRB5_KEYUSAGE_AP_REQ_AUTH}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}}
17599
\end{fulllineitems}
17602
\begin{tabulary}{\linewidth}{|L|L|}
17605
\code{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}
17613
\subsubsection{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}
17614
\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:krb5-keyusage-ap-req-auth-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:krb5-keyusage-ap-req-auth-cksum}\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM::doc}\index{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM (built-in variable)}
17616
\begin{fulllineitems}
17617
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}}
17618
\end{fulllineitems}
17621
\begin{tabulary}{\linewidth}{|L|L|}
17624
\code{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}
17632
\subsubsection{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}
17633
\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:krb5-keyusage-as-rep-encpart-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:krb5-keyusage-as-rep-encpart}\index{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART (built-in variable)}
17635
\begin{fulllineitems}
17636
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:KRB5_KEYUSAGE_AS_REP_ENCPART}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}}
17637
\end{fulllineitems}
17640
\begin{tabulary}{\linewidth}{|L|L|}
17643
\code{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}
17651
\subsubsection{KRB5\_KEYUSAGE\_AS\_REQ}
17652
\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:krb5-keyusage-as-req-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:krb5-keyusage-as-req}\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ::doc}\index{KRB5\_KEYUSAGE\_AS\_REQ (built-in variable)}
17654
\begin{fulllineitems}
17655
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:KRB5_KEYUSAGE_AS_REQ}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AS\_REQ}}
17656
\end{fulllineitems}
17659
\begin{tabulary}{\linewidth}{|L|L|}
17662
\code{KRB5\_KEYUSAGE\_AS\_REQ}
17670
\subsubsection{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}
17671
\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:krb5-keyusage-as-req-pa-enc-ts-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:krb5-keyusage-as-req-pa-enc-ts}\index{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS (built-in variable)}
17673
\begin{fulllineitems}
17674
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS}\pysigline{\bfcode{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}}
17675
\end{fulllineitems}
17678
\begin{tabulary}{\linewidth}{|L|L|}
17681
\code{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}
17689
\subsubsection{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}
17690
\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:krb5-keyusage-enc-challenge-client-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:krb5-keyusage-enc-challenge-client}\index{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT (built-in variable)}
17692
\begin{fulllineitems}
17693
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT}\pysigline{\bfcode{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}}
17694
\end{fulllineitems}
17697
\begin{tabulary}{\linewidth}{|L|L|}
17700
\code{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}
17708
\subsubsection{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}
17709
\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:krb5-keyusage-enc-challenge-kdc-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:krb5-keyusage-enc-challenge-kdc}\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC::doc}\index{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC (built-in variable)}
17711
\begin{fulllineitems}
17712
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:KRB5_KEYUSAGE_ENC_CHALLENGE_KDC}\pysigline{\bfcode{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}}
17713
\end{fulllineitems}
17716
\begin{tabulary}{\linewidth}{|L|L|}
17719
\code{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}
17727
\subsubsection{KRB5\_KEYUSAGE\_FAST\_ENC}
17728
\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:krb5-keyusage-fast-enc-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:krb5-keyusage-fast-enc}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC::doc}\index{KRB5\_KEYUSAGE\_FAST\_ENC (built-in variable)}
17730
\begin{fulllineitems}
17731
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:KRB5_KEYUSAGE_FAST_ENC}\pysigline{\bfcode{KRB5\_KEYUSAGE\_FAST\_ENC}}
17732
\end{fulllineitems}
17735
\begin{tabulary}{\linewidth}{|L|L|}
17738
\code{KRB5\_KEYUSAGE\_FAST\_ENC}
17746
\subsubsection{KRB5\_KEYUSAGE\_FAST\_FINISHED}
17747
\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:krb5-keyusage-fast-finished-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:krb5-keyusage-fast-finished}\index{KRB5\_KEYUSAGE\_FAST\_FINISHED (built-in variable)}
17749
\begin{fulllineitems}
17750
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:KRB5_KEYUSAGE_FAST_FINISHED}\pysigline{\bfcode{KRB5\_KEYUSAGE\_FAST\_FINISHED}}
17751
\end{fulllineitems}
17754
\begin{tabulary}{\linewidth}{|L|L|}
17757
\code{KRB5\_KEYUSAGE\_FAST\_FINISHED}
17765
\subsubsection{KRB5\_KEYUSAGE\_FAST\_REP}
17766
\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:krb5-keyusage-fast-rep-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:krb5-keyusage-fast-rep}\index{KRB5\_KEYUSAGE\_FAST\_REP (built-in variable)}
17768
\begin{fulllineitems}
17769
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:KRB5_KEYUSAGE_FAST_REP}\pysigline{\bfcode{KRB5\_KEYUSAGE\_FAST\_REP}}
17770
\end{fulllineitems}
17773
\begin{tabulary}{\linewidth}{|L|L|}
17776
\code{KRB5\_KEYUSAGE\_FAST\_REP}
17784
\subsubsection{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}
17785
\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:krb5-keyusage-fast-req-chksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:krb5-keyusage-fast-req-chksum}\index{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM (built-in variable)}
17787
\begin{fulllineitems}
17788
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:KRB5_KEYUSAGE_FAST_REQ_CHKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}}
17789
\end{fulllineitems}
17792
\begin{tabulary}{\linewidth}{|L|L|}
17795
\code{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}
17803
\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}
17804
\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:krb5-keyusage-gss-tok-mic}\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:krb5-keyusage-gss-tok-mic-data}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC (built-in variable)}
17806
\begin{fulllineitems}
17807
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:KRB5_KEYUSAGE_GSS_TOK_MIC}\pysigline{\bfcode{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}}
17808
\end{fulllineitems}
17811
\begin{tabulary}{\linewidth}{|L|L|}
17814
\code{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}
17822
\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}
17823
\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG:krb5-keyusage-gss-tok-wrap-integ}\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG:krb5-keyusage-gss-tok-wrap-integ-data}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG (built-in variable)}
17825
\begin{fulllineitems}
17826
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG:KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG}\pysigline{\bfcode{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}}
17827
\end{fulllineitems}
17830
\begin{tabulary}{\linewidth}{|L|L|}
17833
\code{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}
17841
\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}
17842
\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:krb5-keyusage-gss-tok-wrap-priv-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:krb5-keyusage-gss-tok-wrap-priv}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV (built-in variable)}
17844
\begin{fulllineitems}
17845
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV}\pysigline{\bfcode{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}}
17846
\end{fulllineitems}
17849
\begin{tabulary}{\linewidth}{|L|L|}
17852
\code{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}
17860
\subsubsection{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}
17861
\label{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:krb5-keyusage-iakerb-finished-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:krb5-keyusage-iakerb-finished}\index{KRB5\_KEYUSAGE\_IAKERB\_FINISHED (built-in variable)}
17863
\begin{fulllineitems}
17864
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:KRB5_KEYUSAGE_IAKERB_FINISHED}\pysigline{\bfcode{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}}
17865
\end{fulllineitems}
17868
\begin{tabulary}{\linewidth}{|L|L|}
17871
\code{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}
17879
\subsubsection{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}
17880
\label{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:krb5-keyusage-kdc-rep-ticket-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:krb5-keyusage-kdc-rep-ticket}\index{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET (built-in variable)}
17882
\begin{fulllineitems}
17883
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:KRB5_KEYUSAGE_KDC_REP_TICKET}\pysigline{\bfcode{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}}
17884
\end{fulllineitems}
17887
\begin{tabulary}{\linewidth}{|L|L|}
17890
\code{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}
17898
\subsubsection{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}
17899
\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:krb5-keyusage-krb-cred-encpart-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:krb5-keyusage-krb-cred-encpart}\index{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART (built-in variable)}
17901
\begin{fulllineitems}
17902
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:KRB5_KEYUSAGE_KRB_CRED_ENCPART}\pysigline{\bfcode{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}}
17903
\end{fulllineitems}
17906
\begin{tabulary}{\linewidth}{|L|L|}
17909
\code{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}
17917
\subsubsection{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}
17918
\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:krb5-keyusage-krb-error-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:krb5-keyusage-krb-error-cksum}\index{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM (built-in variable)}
17920
\begin{fulllineitems}
17921
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:KRB5_KEYUSAGE_KRB_ERROR_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}}
17922
\end{fulllineitems}
17925
\begin{tabulary}{\linewidth}{|L|L|}
17928
\code{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}
17936
\subsubsection{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}
17937
\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:krb5-keyusage-krb-priv-encpart}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:krb5-keyusage-krb-priv-encpart-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART::doc}\index{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART (built-in variable)}
17939
\begin{fulllineitems}
17940
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:KRB5_KEYUSAGE_KRB_PRIV_ENCPART}\pysigline{\bfcode{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}}
17941
\end{fulllineitems}
17944
\begin{tabulary}{\linewidth}{|L|L|}
17947
\code{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}
17955
\subsubsection{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}
17956
\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:krb5-keyusage-krb-safe-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:krb5-keyusage-krb-safe-cksum}\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM::doc}\index{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM (built-in variable)}
17958
\begin{fulllineitems}
17959
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:KRB5_KEYUSAGE_KRB_SAFE_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}}
17960
\end{fulllineitems}
17963
\begin{tabulary}{\linewidth}{|L|L|}
17966
\code{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}
17974
\subsubsection{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}
17975
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:krb5-keyusage-pa-otp-request}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:krb5-keyusage-pa-otp-request-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST::doc}\index{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST (built-in variable)}
17977
\begin{fulllineitems}
17978
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:KRB5_KEYUSAGE_PA_OTP_REQUEST}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}}
17979
\end{fulllineitems}
17982
See RFC 6560 section 4.2.
17984
\begin{tabulary}{\linewidth}{|L|L|}
17987
\code{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}
17995
\subsubsection{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}
17996
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:krb5-keyusage-pa-pkinit-kx-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:krb5-keyusage-pa-pkinit-kx}\index{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX (built-in variable)}
17998
\begin{fulllineitems}
17999
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:KRB5_KEYUSAGE_PA_PKINIT_KX}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}}
18000
\end{fulllineitems}
18003
\begin{tabulary}{\linewidth}{|L|L|}
18006
\code{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}
18014
\subsubsection{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}
18015
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:krb5-keyusage-pa-s4u-x509-user-reply-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:krb5-keyusage-pa-s4u-x509-user-reply}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY::doc}\index{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY (built-in variable)}
18017
\begin{fulllineitems}
18018
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}}
18019
\end{fulllineitems}
18022
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE} .
18024
\begin{tabulary}{\linewidth}{|L|L|}
18027
\code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}
18035
\subsubsection{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}
18036
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST:krb5-keyusage-pa-s4u-x509-user-request}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST:krb5-keyusage-pa-s4u-x509-user-request-data}\index{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST (built-in variable)}
18038
\begin{fulllineitems}
18039
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST:KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}}
18040
\end{fulllineitems}
18043
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID} .
18045
\begin{tabulary}{\linewidth}{|L|L|}
18048
\code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}
18056
\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}
18057
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:krb5-keyusage-pa-sam-challenge-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:krb5-keyusage-pa-sam-challenge-cksum}\index{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM (built-in variable)}
18059
\begin{fulllineitems}
18060
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}}
18061
\end{fulllineitems}
18064
\begin{tabulary}{\linewidth}{|L|L|}
18067
\code{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}
18075
\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}
18076
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:krb5-keyusage-pa-sam-challenge-trackid}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:krb5-keyusage-pa-sam-challenge-trackid-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID::doc}\index{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID (built-in variable)}
18078
\begin{fulllineitems}
18079
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}}
18080
\end{fulllineitems}
18083
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST} .
18085
\begin{tabulary}{\linewidth}{|L|L|}
18088
\code{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}
18096
\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}
18097
\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:krb5-keyusage-pa-sam-response-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:krb5-keyusage-pa-sam-response}\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE::doc}\index{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE (built-in variable)}
18099
\begin{fulllineitems}
18100
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:KRB5_KEYUSAGE_PA_SAM_RESPONSE}\pysigline{\bfcode{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}}
18101
\end{fulllineitems}
18104
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY} .
18106
\begin{tabulary}{\linewidth}{|L|L|}
18109
\code{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}
18117
\subsubsection{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}
18118
\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:krb5-keyusage-tgs-rep-encpart-sesskey}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:krb5-keyusage-tgs-rep-encpart-sesskey-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY::doc}\index{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY (built-in variable)}
18120
\begin{fulllineitems}
18121
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY}\pysigline{\bfcode{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}}
18122
\end{fulllineitems}
18125
\begin{tabulary}{\linewidth}{|L|L|}
18128
\code{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}
18136
\subsubsection{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}
18137
\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:krb5-keyusage-tgs-rep-encpart-subkey-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:krb5-keyusage-tgs-rep-encpart-subkey}\index{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY (built-in variable)}
18139
\begin{fulllineitems}
18140
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY}\pysigline{\bfcode{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}}
18141
\end{fulllineitems}
18144
\begin{tabulary}{\linewidth}{|L|L|}
18147
\code{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}
18155
\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}
18156
\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY:krb5-keyusage-tgs-req-ad-sesskey}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY:krb5-keyusage-tgs-req-ad-sesskey-data}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY (built-in variable)}
18158
\begin{fulllineitems}
18159
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY:KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY}\pysigline{\bfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}}
18160
\end{fulllineitems}
18163
\begin{tabulary}{\linewidth}{|L|L|}
18166
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}
18174
\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}
18175
\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY:krb5-keyusage-tgs-req-ad-subkey}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY:krb5-keyusage-tgs-req-ad-subkey-data}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY (built-in variable)}
18177
\begin{fulllineitems}
18178
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY:KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY}\pysigline{\bfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}}
18179
\end{fulllineitems}
18182
\begin{tabulary}{\linewidth}{|L|L|}
18185
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}
18193
\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}
18194
\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:krb5-keyusage-tgs-req-auth}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:krb5-keyusage-tgs-req-auth-data}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH (built-in variable)}
18196
\begin{fulllineitems}
18197
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:KRB5_KEYUSAGE_TGS_REQ_AUTH}\pysigline{\bfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}}
18198
\end{fulllineitems}
18201
\begin{tabulary}{\linewidth}{|L|L|}
18204
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}
18212
\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}
18213
\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:krb5-keyusage-tgs-req-auth-cksum-data}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM::doc}\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:krb5-keyusage-tgs-req-auth-cksum}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM (built-in variable)}
18215
\begin{fulllineitems}
18216
\phantomsection\label{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM}\pysigline{\bfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}}
18217
\end{fulllineitems}
18220
\begin{tabulary}{\linewidth}{|L|L|}
18223
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}
18231
\subsubsection{KRB5\_KPASSWD\_ACCESSDENIED}
18232
\label{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:krb5-kpasswd-accessdenied}\label{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:krb5-kpasswd-accessdenied-data}\label{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED::doc}\index{KRB5\_KPASSWD\_ACCESSDENIED (built-in variable)}
18234
\begin{fulllineitems}
18235
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:KRB5_KPASSWD_ACCESSDENIED}\pysigline{\bfcode{KRB5\_KPASSWD\_ACCESSDENIED}}
18236
\end{fulllineitems}
18241
\begin{tabulary}{\linewidth}{|L|L|}
18244
\code{KRB5\_KPASSWD\_ACCESSDENIED}
18252
\subsubsection{KRB5\_KPASSWD\_AUTHERROR}
18253
\label{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:krb5-kpasswd-autherror-data}\label{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:krb5-kpasswd-autherror}\label{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR::doc}\index{KRB5\_KPASSWD\_AUTHERROR (built-in variable)}
18255
\begin{fulllineitems}
18256
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR}\pysigline{\bfcode{KRB5\_KPASSWD\_AUTHERROR}}
18257
\end{fulllineitems}
18260
Authentication error.
18262
\begin{tabulary}{\linewidth}{|L|L|}
18265
\code{KRB5\_KPASSWD\_AUTHERROR}
18273
\subsubsection{KRB5\_KPASSWD\_BAD\_VERSION}
18274
\label{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:krb5-kpasswd-bad-version-data}\label{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:krb5-kpasswd-bad-version}\label{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION::doc}\index{KRB5\_KPASSWD\_BAD\_VERSION (built-in variable)}
18276
\begin{fulllineitems}
18277
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:KRB5_KPASSWD_BAD_VERSION}\pysigline{\bfcode{KRB5\_KPASSWD\_BAD\_VERSION}}
18278
\end{fulllineitems}
18281
Unknown RPC version.
18283
\begin{tabulary}{\linewidth}{|L|L|}
18286
\code{KRB5\_KPASSWD\_BAD\_VERSION}
18294
\subsubsection{KRB5\_KPASSWD\_HARDERROR}
18295
\label{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:krb5-kpasswd-harderror}\label{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:krb5-kpasswd-harderror-data}\label{appdev/refs/macros/KRB5_KPASSWD_HARDERROR::doc}\index{KRB5\_KPASSWD\_HARDERROR (built-in variable)}
18297
\begin{fulllineitems}
18298
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR}\pysigline{\bfcode{KRB5\_KPASSWD\_HARDERROR}}
18299
\end{fulllineitems}
18304
\begin{tabulary}{\linewidth}{|L|L|}
18307
\code{KRB5\_KPASSWD\_HARDERROR}
18315
\subsubsection{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}
18316
\label{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:krb5-kpasswd-initial-flag-needed}\label{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED::doc}\label{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:krb5-kpasswd-initial-flag-needed-data}\index{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED (built-in variable)}
18318
\begin{fulllineitems}
18319
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:KRB5_KPASSWD_INITIAL_FLAG_NEEDED}\pysigline{\bfcode{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}}
18320
\end{fulllineitems}
18323
The presented credentials were not obtained using a password directly.
18325
\begin{tabulary}{\linewidth}{|L|L|}
18328
\code{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}
18336
\subsubsection{KRB5\_KPASSWD\_MALFORMED}
18337
\label{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:krb5-kpasswd-malformed-data}\label{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:krb5-kpasswd-malformed}\label{appdev/refs/macros/KRB5_KPASSWD_MALFORMED::doc}\index{KRB5\_KPASSWD\_MALFORMED (built-in variable)}
18339
\begin{fulllineitems}
18340
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED}\pysigline{\bfcode{KRB5\_KPASSWD\_MALFORMED}}
18341
\end{fulllineitems}
18346
\begin{tabulary}{\linewidth}{|L|L|}
18349
\code{KRB5\_KPASSWD\_MALFORMED}
18357
\subsubsection{KRB5\_KPASSWD\_SOFTERROR}
18358
\label{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR::doc}\label{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:krb5-kpasswd-softerror}\label{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:krb5-kpasswd-softerror-data}\index{KRB5\_KPASSWD\_SOFTERROR (built-in variable)}
18360
\begin{fulllineitems}
18361
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR}\pysigline{\bfcode{KRB5\_KPASSWD\_SOFTERROR}}
18362
\end{fulllineitems}
18365
Password change rejected.
18367
\begin{tabulary}{\linewidth}{|L|L|}
18370
\code{KRB5\_KPASSWD\_SOFTERROR}
18378
\subsubsection{KRB5\_KPASSWD\_SUCCESS}
18379
\label{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:krb5-kpasswd-success-data}\label{appdev/refs/macros/KRB5_KPASSWD_SUCCESS::doc}\label{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:krb5-kpasswd-success}\index{KRB5\_KPASSWD\_SUCCESS (built-in variable)}
18381
\begin{fulllineitems}
18382
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS}\pysigline{\bfcode{KRB5\_KPASSWD\_SUCCESS}}
18383
\end{fulllineitems}
18388
\begin{tabulary}{\linewidth}{|L|L|}
18391
\code{KRB5\_KPASSWD\_SUCCESS}
18399
\subsubsection{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}
18400
\label{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME::doc}\label{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:krb5-lrq-all-acct-exptime}\label{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:krb5-lrq-all-acct-exptime-data}\index{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME (built-in variable)}
18402
\begin{fulllineitems}
18403
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:KRB5_LRQ_ALL_ACCT_EXPTIME}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}}
18404
\end{fulllineitems}
18407
\begin{tabulary}{\linewidth}{|L|L|}
18410
\code{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}
18418
\subsubsection{KRB5\_LRQ\_ALL\_LAST\_INITIAL}
18419
\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL::doc}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:krb5-lrq-all-last-initial}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:krb5-lrq-all-last-initial-data}\index{KRB5\_LRQ\_ALL\_LAST\_INITIAL (built-in variable)}
18421
\begin{fulllineitems}
18422
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:KRB5_LRQ_ALL_LAST_INITIAL}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_LAST\_INITIAL}}
18423
\end{fulllineitems}
18426
\begin{tabulary}{\linewidth}{|L|L|}
18429
\code{KRB5\_LRQ\_ALL\_LAST\_INITIAL}
18437
\subsubsection{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}
18438
\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:krb5-lrq-all-last-renewal}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:krb5-lrq-all-last-renewal-data}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL::doc}\index{KRB5\_LRQ\_ALL\_LAST\_RENEWAL (built-in variable)}
18440
\begin{fulllineitems}
18441
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:KRB5_LRQ_ALL_LAST_RENEWAL}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}}
18442
\end{fulllineitems}
18445
\begin{tabulary}{\linewidth}{|L|L|}
18448
\code{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}
18456
\subsubsection{KRB5\_LRQ\_ALL\_LAST\_REQ}
18457
\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ::doc}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:krb5-lrq-all-last-req}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:krb5-lrq-all-last-req-data}\index{KRB5\_LRQ\_ALL\_LAST\_REQ (built-in variable)}
18459
\begin{fulllineitems}
18460
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:KRB5_LRQ_ALL_LAST_REQ}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_LAST\_REQ}}
18461
\end{fulllineitems}
18464
\begin{tabulary}{\linewidth}{|L|L|}
18467
\code{KRB5\_LRQ\_ALL\_LAST\_REQ}
18475
\subsubsection{KRB5\_LRQ\_ALL\_LAST\_TGT}
18476
\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:krb5-lrq-all-last-tgt-data}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:krb5-lrq-all-last-tgt}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT::doc}\index{KRB5\_LRQ\_ALL\_LAST\_TGT (built-in variable)}
18478
\begin{fulllineitems}
18479
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:KRB5_LRQ_ALL_LAST_TGT}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_LAST\_TGT}}
18480
\end{fulllineitems}
18483
\begin{tabulary}{\linewidth}{|L|L|}
18486
\code{KRB5\_LRQ\_ALL\_LAST\_TGT}
18494
\subsubsection{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}
18495
\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED::doc}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED:krb5-lrq-all-last-tgt-issued}\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED:krb5-lrq-all-last-tgt-issued-data}\index{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED (built-in variable)}
18497
\begin{fulllineitems}
18498
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED:KRB5_LRQ_ALL_LAST_TGT_ISSUED}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}}
18499
\end{fulllineitems}
18502
\begin{tabulary}{\linewidth}{|L|L|}
18505
\code{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}
18513
\subsubsection{KRB5\_LRQ\_ALL\_PW\_EXPTIME}
18514
\label{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:krb5-lrq-all-pw-exptime-data}\label{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME::doc}\label{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:krb5-lrq-all-pw-exptime}\index{KRB5\_LRQ\_ALL\_PW\_EXPTIME (built-in variable)}
18516
\begin{fulllineitems}
18517
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:KRB5_LRQ_ALL_PW_EXPTIME}\pysigline{\bfcode{KRB5\_LRQ\_ALL\_PW\_EXPTIME}}
18518
\end{fulllineitems}
18521
\begin{tabulary}{\linewidth}{|L|L|}
18524
\code{KRB5\_LRQ\_ALL\_PW\_EXPTIME}
18532
\subsubsection{KRB5\_LRQ\_NONE}
18533
\label{appdev/refs/macros/KRB5_LRQ_NONE:krb5-lrq-none-data}\label{appdev/refs/macros/KRB5_LRQ_NONE::doc}\label{appdev/refs/macros/KRB5_LRQ_NONE:krb5-lrq-none}\index{KRB5\_LRQ\_NONE (built-in variable)}
18535
\begin{fulllineitems}
18536
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_NONE:KRB5_LRQ_NONE}\pysigline{\bfcode{KRB5\_LRQ\_NONE}}
18537
\end{fulllineitems}
18540
\begin{tabulary}{\linewidth}{|L|L|}
18543
\code{KRB5\_LRQ\_NONE}
18551
\subsubsection{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}
18552
\label{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME::doc}\label{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:krb5-lrq-one-acct-exptime}\label{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:krb5-lrq-one-acct-exptime-data}\index{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME (built-in variable)}
18554
\begin{fulllineitems}
18555
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:KRB5_LRQ_ONE_ACCT_EXPTIME}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}}
18556
\end{fulllineitems}
18559
\begin{tabulary}{\linewidth}{|L|L|}
18562
\code{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}
18570
\subsubsection{KRB5\_LRQ\_ONE\_LAST\_INITIAL}
18571
\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:krb5-lrq-one-last-initial-data}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL::doc}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:krb5-lrq-one-last-initial}\index{KRB5\_LRQ\_ONE\_LAST\_INITIAL (built-in variable)}
18573
\begin{fulllineitems}
18574
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:KRB5_LRQ_ONE_LAST_INITIAL}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_LAST\_INITIAL}}
18575
\end{fulllineitems}
18578
\begin{tabulary}{\linewidth}{|L|L|}
18581
\code{KRB5\_LRQ\_ONE\_LAST\_INITIAL}
18589
\subsubsection{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}
18590
\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:krb5-lrq-one-last-renewal-data}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL::doc}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:krb5-lrq-one-last-renewal}\index{KRB5\_LRQ\_ONE\_LAST\_RENEWAL (built-in variable)}
18592
\begin{fulllineitems}
18593
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:KRB5_LRQ_ONE_LAST_RENEWAL}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}}
18594
\end{fulllineitems}
18597
\begin{tabulary}{\linewidth}{|L|L|}
18600
\code{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}
18608
\subsubsection{KRB5\_LRQ\_ONE\_LAST\_REQ}
18609
\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ::doc}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:krb5-lrq-one-last-req}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:krb5-lrq-one-last-req-data}\index{KRB5\_LRQ\_ONE\_LAST\_REQ (built-in variable)}
18611
\begin{fulllineitems}
18612
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:KRB5_LRQ_ONE_LAST_REQ}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_LAST\_REQ}}
18613
\end{fulllineitems}
18616
\begin{tabulary}{\linewidth}{|L|L|}
18619
\code{KRB5\_LRQ\_ONE\_LAST\_REQ}
18627
\subsubsection{KRB5\_LRQ\_ONE\_LAST\_TGT}
18628
\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:krb5-lrq-one-last-tgt-data}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT::doc}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:krb5-lrq-one-last-tgt}\index{KRB5\_LRQ\_ONE\_LAST\_TGT (built-in variable)}
18630
\begin{fulllineitems}
18631
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:KRB5_LRQ_ONE_LAST_TGT}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_LAST\_TGT}}
18632
\end{fulllineitems}
18635
\begin{tabulary}{\linewidth}{|L|L|}
18638
\code{KRB5\_LRQ\_ONE\_LAST\_TGT}
18646
\subsubsection{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}
18647
\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:krb5-lrq-one-last-tgt-issued}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:krb5-lrq-one-last-tgt-issued-data}\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED::doc}\index{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED (built-in variable)}
18649
\begin{fulllineitems}
18650
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:KRB5_LRQ_ONE_LAST_TGT_ISSUED}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}}
18651
\end{fulllineitems}
18654
\begin{tabulary}{\linewidth}{|L|L|}
18657
\code{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}
18665
\subsubsection{KRB5\_LRQ\_ONE\_PW\_EXPTIME}
18666
\label{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:krb5-lrq-one-pw-exptime}\label{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:krb5-lrq-one-pw-exptime-data}\label{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME::doc}\index{KRB5\_LRQ\_ONE\_PW\_EXPTIME (built-in variable)}
18668
\begin{fulllineitems}
18669
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:KRB5_LRQ_ONE_PW_EXPTIME}\pysigline{\bfcode{KRB5\_LRQ\_ONE\_PW\_EXPTIME}}
18670
\end{fulllineitems}
18673
\begin{tabulary}{\linewidth}{|L|L|}
18676
\code{KRB5\_LRQ\_ONE\_PW\_EXPTIME}
18684
\subsubsection{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}
18685
\label{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:krb5-nt-enterprise-principal-data}\label{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:krb5-nt-enterprise-principal}\label{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL::doc}\index{KRB5\_NT\_ENTERPRISE\_PRINCIPAL (built-in variable)}
18687
\begin{fulllineitems}
18688
\phantomsection\label{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:KRB5_NT_ENTERPRISE_PRINCIPAL}\pysigline{\bfcode{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}}
18689
\end{fulllineitems}
18694
\begin{tabulary}{\linewidth}{|L|L|}
18697
\code{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}
18705
\subsubsection{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}
18706
\label{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:krb5-nt-ent-principal-and-id-data}\label{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID::doc}\label{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:krb5-nt-ent-principal-and-id}\index{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID (built-in variable)}
18708
\begin{fulllineitems}
18709
\phantomsection\label{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:KRB5_NT_ENT_PRINCIPAL_AND_ID}\pysigline{\bfcode{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}}
18710
\end{fulllineitems}
18713
NT 4 style name and SID.
18715
\begin{tabulary}{\linewidth}{|L|L|}
18718
\code{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}
18726
\subsubsection{KRB5\_NT\_MS\_PRINCIPAL}
18727
\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL::doc}\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:krb5-nt-ms-principal}\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:krb5-nt-ms-principal-data}\index{KRB5\_NT\_MS\_PRINCIPAL (built-in variable)}
18729
\begin{fulllineitems}
18730
\phantomsection\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:KRB5_NT_MS_PRINCIPAL}\pysigline{\bfcode{KRB5\_NT\_MS\_PRINCIPAL}}
18731
\end{fulllineitems}
18734
Windows 2000 UPN and SID.
18736
\begin{tabulary}{\linewidth}{|L|L|}
18739
\code{KRB5\_NT\_MS\_PRINCIPAL}
18747
\subsubsection{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}
18748
\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:krb5-nt-ms-principal-and-id-data}\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID::doc}\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:krb5-nt-ms-principal-and-id}\index{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID (built-in variable)}
18750
\begin{fulllineitems}
18751
\phantomsection\label{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:KRB5_NT_MS_PRINCIPAL_AND_ID}\pysigline{\bfcode{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}}
18752
\end{fulllineitems}
18757
\begin{tabulary}{\linewidth}{|L|L|}
18760
\code{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}
18768
\subsubsection{KRB5\_NT\_PRINCIPAL}
18769
\label{appdev/refs/macros/KRB5_NT_PRINCIPAL:krb5-nt-principal}\label{appdev/refs/macros/KRB5_NT_PRINCIPAL::doc}\label{appdev/refs/macros/KRB5_NT_PRINCIPAL:krb5-nt-principal-data}\index{KRB5\_NT\_PRINCIPAL (built-in variable)}
18771
\begin{fulllineitems}
18772
\phantomsection\label{appdev/refs/macros/KRB5_NT_PRINCIPAL:KRB5_NT_PRINCIPAL}\pysigline{\bfcode{KRB5\_NT\_PRINCIPAL}}
18773
\end{fulllineitems}
18776
Just the name of the principal as in DCE, or for users.
18778
\begin{tabulary}{\linewidth}{|L|L|}
18781
\code{KRB5\_NT\_PRINCIPAL}
18789
\subsubsection{KRB5\_NT\_SMTP\_NAME}
18790
\label{appdev/refs/macros/KRB5_NT_SMTP_NAME:krb5-nt-smtp-name}\label{appdev/refs/macros/KRB5_NT_SMTP_NAME:krb5-nt-smtp-name-data}\label{appdev/refs/macros/KRB5_NT_SMTP_NAME::doc}\index{KRB5\_NT\_SMTP\_NAME (built-in variable)}
18792
\begin{fulllineitems}
18793
\phantomsection\label{appdev/refs/macros/KRB5_NT_SMTP_NAME:KRB5_NT_SMTP_NAME}\pysigline{\bfcode{KRB5\_NT\_SMTP\_NAME}}
18794
\end{fulllineitems}
18797
Name in form of SMTP email name.
18799
\begin{tabulary}{\linewidth}{|L|L|}
18802
\code{KRB5\_NT\_SMTP\_NAME}
18810
\subsubsection{KRB5\_NT\_SRV\_HST}
18811
\label{appdev/refs/macros/KRB5_NT_SRV_HST:krb5-nt-srv-hst-data}\label{appdev/refs/macros/KRB5_NT_SRV_HST::doc}\label{appdev/refs/macros/KRB5_NT_SRV_HST:krb5-nt-srv-hst}\index{KRB5\_NT\_SRV\_HST (built-in variable)}
18813
\begin{fulllineitems}
18814
\phantomsection\label{appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST}\pysigline{\bfcode{KRB5\_NT\_SRV\_HST}}
18815
\end{fulllineitems}
18818
Service with host name as instance (telnet, rcommands)
18820
\begin{tabulary}{\linewidth}{|L|L|}
18823
\code{KRB5\_NT\_SRV\_HST}
18831
\subsubsection{KRB5\_NT\_SRV\_INST}
18832
\label{appdev/refs/macros/KRB5_NT_SRV_INST:krb5-nt-srv-inst-data}\label{appdev/refs/macros/KRB5_NT_SRV_INST::doc}\label{appdev/refs/macros/KRB5_NT_SRV_INST:krb5-nt-srv-inst}\index{KRB5\_NT\_SRV\_INST (built-in variable)}
18834
\begin{fulllineitems}
18835
\phantomsection\label{appdev/refs/macros/KRB5_NT_SRV_INST:KRB5_NT_SRV_INST}\pysigline{\bfcode{KRB5\_NT\_SRV\_INST}}
18836
\end{fulllineitems}
18839
Service and other unique instance (krbtgt)
18841
\begin{tabulary}{\linewidth}{|L|L|}
18844
\code{KRB5\_NT\_SRV\_INST}
18852
\subsubsection{KRB5\_NT\_SRV\_XHST}
18853
\label{appdev/refs/macros/KRB5_NT_SRV_XHST:krb5-nt-srv-xhst}\label{appdev/refs/macros/KRB5_NT_SRV_XHST:krb5-nt-srv-xhst-data}\label{appdev/refs/macros/KRB5_NT_SRV_XHST::doc}\index{KRB5\_NT\_SRV\_XHST (built-in variable)}
18855
\begin{fulllineitems}
18856
\phantomsection\label{appdev/refs/macros/KRB5_NT_SRV_XHST:KRB5_NT_SRV_XHST}\pysigline{\bfcode{KRB5\_NT\_SRV\_XHST}}
18857
\end{fulllineitems}
18860
Service with host as remaining components.
18862
\begin{tabulary}{\linewidth}{|L|L|}
18865
\code{KRB5\_NT\_SRV\_XHST}
18873
\subsubsection{KRB5\_NT\_UID}
18874
\label{appdev/refs/macros/KRB5_NT_UID:krb5-nt-uid}\label{appdev/refs/macros/KRB5_NT_UID:krb5-nt-uid-data}\label{appdev/refs/macros/KRB5_NT_UID::doc}\index{KRB5\_NT\_UID (built-in variable)}
18876
\begin{fulllineitems}
18877
\phantomsection\label{appdev/refs/macros/KRB5_NT_UID:KRB5_NT_UID}\pysigline{\bfcode{KRB5\_NT\_UID}}
18878
\end{fulllineitems}
18883
\begin{tabulary}{\linewidth}{|L|L|}
18886
\code{KRB5\_NT\_UID}
18894
\subsubsection{KRB5\_NT\_UNKNOWN}
18895
\label{appdev/refs/macros/KRB5_NT_UNKNOWN::doc}\label{appdev/refs/macros/KRB5_NT_UNKNOWN:krb5-nt-unknown}\label{appdev/refs/macros/KRB5_NT_UNKNOWN:krb5-nt-unknown-data}\index{KRB5\_NT\_UNKNOWN (built-in variable)}
18897
\begin{fulllineitems}
18898
\phantomsection\label{appdev/refs/macros/KRB5_NT_UNKNOWN:KRB5_NT_UNKNOWN}\pysigline{\bfcode{KRB5\_NT\_UNKNOWN}}
18899
\end{fulllineitems}
18902
Name type not known.
18904
\begin{tabulary}{\linewidth}{|L|L|}
18907
\code{KRB5\_NT\_UNKNOWN}
18915
\subsubsection{KRB5\_NT\_WELLKNOWN}
18916
\label{appdev/refs/macros/KRB5_NT_WELLKNOWN:krb5-nt-wellknown-data}\label{appdev/refs/macros/KRB5_NT_WELLKNOWN:krb5-nt-wellknown}\label{appdev/refs/macros/KRB5_NT_WELLKNOWN::doc}\index{KRB5\_NT\_WELLKNOWN (built-in variable)}
18918
\begin{fulllineitems}
18919
\phantomsection\label{appdev/refs/macros/KRB5_NT_WELLKNOWN:KRB5_NT_WELLKNOWN}\pysigline{\bfcode{KRB5\_NT\_WELLKNOWN}}
18920
\end{fulllineitems}
18923
Well-known (special) principal.
18925
\begin{tabulary}{\linewidth}{|L|L|}
18928
\code{KRB5\_NT\_WELLKNOWN}
18936
\subsubsection{KRB5\_NT\_X500\_PRINCIPAL}
18937
\label{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:krb5-nt-x500-principal-data}\label{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL::doc}\label{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:krb5-nt-x500-principal}\index{KRB5\_NT\_X500\_PRINCIPAL (built-in variable)}
18939
\begin{fulllineitems}
18940
\phantomsection\label{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:KRB5_NT_X500_PRINCIPAL}\pysigline{\bfcode{KRB5\_NT\_X500\_PRINCIPAL}}
18941
\end{fulllineitems}
18946
\begin{tabulary}{\linewidth}{|L|L|}
18949
\code{KRB5\_NT\_X500\_PRINCIPAL}
18957
\subsubsection{KRB5\_PAC\_CLIENT\_INFO}
18958
\label{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:krb5-pac-client-info}\label{appdev/refs/macros/KRB5_PAC_CLIENT_INFO::doc}\label{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:krb5-pac-client-info-data}\index{KRB5\_PAC\_CLIENT\_INFO (built-in variable)}
18960
\begin{fulllineitems}
18961
\phantomsection\label{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:KRB5_PAC_CLIENT_INFO}\pysigline{\bfcode{KRB5\_PAC\_CLIENT\_INFO}}
18962
\end{fulllineitems}
18965
Client name and ticket info.
18967
\begin{tabulary}{\linewidth}{|L|L|}
18970
\code{KRB5\_PAC\_CLIENT\_INFO}
18978
\subsubsection{KRB5\_PAC\_CREDENTIALS\_INFO}
18979
\label{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO::doc}\label{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:krb5-pac-credentials-info}\label{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:krb5-pac-credentials-info-data}\index{KRB5\_PAC\_CREDENTIALS\_INFO (built-in variable)}
18981
\begin{fulllineitems}
18982
\phantomsection\label{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:KRB5_PAC_CREDENTIALS_INFO}\pysigline{\bfcode{KRB5\_PAC\_CREDENTIALS\_INFO}}
18983
\end{fulllineitems}
18986
Credentials information.
18988
\begin{tabulary}{\linewidth}{|L|L|}
18991
\code{KRB5\_PAC\_CREDENTIALS\_INFO}
18999
\subsubsection{KRB5\_PAC\_DELEGATION\_INFO}
19000
\label{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO::doc}\label{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:krb5-pac-delegation-info-data}\label{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:krb5-pac-delegation-info}\index{KRB5\_PAC\_DELEGATION\_INFO (built-in variable)}
19002
\begin{fulllineitems}
19003
\phantomsection\label{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:KRB5_PAC_DELEGATION_INFO}\pysigline{\bfcode{KRB5\_PAC\_DELEGATION\_INFO}}
19004
\end{fulllineitems}
19007
Constrained delegation info.
19009
\begin{tabulary}{\linewidth}{|L|L|}
19012
\code{KRB5\_PAC\_DELEGATION\_INFO}
19020
\subsubsection{KRB5\_PAC\_LOGON\_INFO}
19021
\label{appdev/refs/macros/KRB5_PAC_LOGON_INFO:krb5-pac-logon-info}\label{appdev/refs/macros/KRB5_PAC_LOGON_INFO:krb5-pac-logon-info-data}\label{appdev/refs/macros/KRB5_PAC_LOGON_INFO::doc}\index{KRB5\_PAC\_LOGON\_INFO (built-in variable)}
19023
\begin{fulllineitems}
19024
\phantomsection\label{appdev/refs/macros/KRB5_PAC_LOGON_INFO:KRB5_PAC_LOGON_INFO}\pysigline{\bfcode{KRB5\_PAC\_LOGON\_INFO}}
19025
\end{fulllineitems}
19030
\begin{tabulary}{\linewidth}{|L|L|}
19033
\code{KRB5\_PAC\_LOGON\_INFO}
19041
\subsubsection{KRB5\_PAC\_PRIVSVR\_CHECKSUM}
19042
\label{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:krb5-pac-privsvr-checksum-data}\label{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM::doc}\label{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:krb5-pac-privsvr-checksum}\index{KRB5\_PAC\_PRIVSVR\_CHECKSUM (built-in variable)}
19044
\begin{fulllineitems}
19045
\phantomsection\label{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:KRB5_PAC_PRIVSVR_CHECKSUM}\pysigline{\bfcode{KRB5\_PAC\_PRIVSVR\_CHECKSUM}}
19046
\end{fulllineitems}
19051
\begin{tabulary}{\linewidth}{|L|L|}
19054
\code{KRB5\_PAC\_PRIVSVR\_CHECKSUM}
19062
\subsubsection{KRB5\_PAC\_SERVER\_CHECKSUM}
19063
\label{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:krb5-pac-server-checksum-data}\label{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:krb5-pac-server-checksum}\label{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM::doc}\index{KRB5\_PAC\_SERVER\_CHECKSUM (built-in variable)}
19065
\begin{fulllineitems}
19066
\phantomsection\label{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:KRB5_PAC_SERVER_CHECKSUM}\pysigline{\bfcode{KRB5\_PAC\_SERVER\_CHECKSUM}}
19067
\end{fulllineitems}
19072
\begin{tabulary}{\linewidth}{|L|L|}
19075
\code{KRB5\_PAC\_SERVER\_CHECKSUM}
19083
\subsubsection{KRB5\_PAC\_UPN\_DNS\_INFO}
19084
\label{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:krb5-pac-upn-dns-info-data}\label{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO::doc}\label{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:krb5-pac-upn-dns-info}\index{KRB5\_PAC\_UPN\_DNS\_INFO (built-in variable)}
19086
\begin{fulllineitems}
19087
\phantomsection\label{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:KRB5_PAC_UPN_DNS_INFO}\pysigline{\bfcode{KRB5\_PAC\_UPN\_DNS\_INFO}}
19088
\end{fulllineitems}
19091
User principal name and DNS info.
19093
\begin{tabulary}{\linewidth}{|L|L|}
19096
\code{KRB5\_PAC\_UPN\_DNS\_INFO}
19104
\subsubsection{KRB5\_PADATA\_AFS3\_SALT}
19105
\label{appdev/refs/macros/KRB5_PADATA_AFS3_SALT::doc}\label{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:krb5-padata-afs3-salt}\label{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:krb5-padata-afs3-salt-data}\index{KRB5\_PADATA\_AFS3\_SALT (built-in variable)}
19107
\begin{fulllineitems}
19108
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:KRB5_PADATA_AFS3_SALT}\pysigline{\bfcode{KRB5\_PADATA\_AFS3\_SALT}}
19109
\end{fulllineitems}
19114
\begin{tabulary}{\linewidth}{|L|L|}
19117
\code{KRB5\_PADATA\_AFS3\_SALT}
19125
\subsubsection{KRB5\_PADATA\_AP\_REQ}
19126
\label{appdev/refs/macros/KRB5_PADATA_AP_REQ::doc}\label{appdev/refs/macros/KRB5_PADATA_AP_REQ:krb5-padata-ap-req-data}\label{appdev/refs/macros/KRB5_PADATA_AP_REQ:krb5-padata-ap-req}\index{KRB5\_PADATA\_AP\_REQ (built-in variable)}
19128
\begin{fulllineitems}
19129
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_AP_REQ:KRB5_PADATA_AP_REQ}\pysigline{\bfcode{KRB5\_PADATA\_AP\_REQ}}
19130
\end{fulllineitems}
19133
\begin{tabulary}{\linewidth}{|L|L|}
19136
\code{KRB5\_PADATA\_AP\_REQ}
19144
\subsubsection{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}
19145
\label{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:krb5-padata-encrypted-challenge-data}\label{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:krb5-padata-encrypted-challenge}\label{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE::doc}\index{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE (built-in variable)}
19147
\begin{fulllineitems}
19148
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:KRB5_PADATA_ENCRYPTED_CHALLENGE}\pysigline{\bfcode{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}}
19149
\end{fulllineitems}
19152
\begin{tabulary}{\linewidth}{|L|L|}
19155
\code{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}
19163
\subsubsection{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}
19164
\label{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:krb5-padata-enc-sandia-securid-data}\label{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:krb5-padata-enc-sandia-securid}\label{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID::doc}\index{KRB5\_PADATA\_ENC\_SANDIA\_SECURID (built-in variable)}
19166
\begin{fulllineitems}
19167
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:KRB5_PADATA_ENC_SANDIA_SECURID}\pysigline{\bfcode{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}}
19168
\end{fulllineitems}
19173
\begin{tabulary}{\linewidth}{|L|L|}
19176
\code{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}
19184
\subsubsection{KRB5\_PADATA\_ENC\_TIMESTAMP}
19185
\label{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP::doc}\label{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:krb5-padata-enc-timestamp}\label{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:krb5-padata-enc-timestamp-data}\index{KRB5\_PADATA\_ENC\_TIMESTAMP (built-in variable)}
19187
\begin{fulllineitems}
19188
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:KRB5_PADATA_ENC_TIMESTAMP}\pysigline{\bfcode{KRB5\_PADATA\_ENC\_TIMESTAMP}}
19189
\end{fulllineitems}
19192
\begin{tabulary}{\linewidth}{|L|L|}
19195
\code{KRB5\_PADATA\_ENC\_TIMESTAMP}
19203
\subsubsection{KRB5\_PADATA\_ENC\_UNIX\_TIME}
19204
\label{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:krb5-padata-enc-unix-time}\label{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:krb5-padata-enc-unix-time-data}\label{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME::doc}\index{KRB5\_PADATA\_ENC\_UNIX\_TIME (built-in variable)}
19206
\begin{fulllineitems}
19207
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:KRB5_PADATA_ENC_UNIX_TIME}\pysigline{\bfcode{KRB5\_PADATA\_ENC\_UNIX\_TIME}}
19208
\end{fulllineitems}
19211
timestamp encrypted in key
19213
\begin{tabulary}{\linewidth}{|L|L|}
19216
\code{KRB5\_PADATA\_ENC\_UNIX\_TIME}
19224
\subsubsection{KRB5\_PADATA\_ETYPE\_INFO}
19225
\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO::doc}\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:krb5-padata-etype-info}\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:krb5-padata-etype-info-data}\index{KRB5\_PADATA\_ETYPE\_INFO (built-in variable)}
19227
\begin{fulllineitems}
19228
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:KRB5_PADATA_ETYPE_INFO}\pysigline{\bfcode{KRB5\_PADATA\_ETYPE\_INFO}}
19229
\end{fulllineitems}
19232
Etype info for preauth.
19234
\begin{tabulary}{\linewidth}{|L|L|}
19237
\code{KRB5\_PADATA\_ETYPE\_INFO}
19245
\subsubsection{KRB5\_PADATA\_ETYPE\_INFO2}
19246
\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:krb5-padata-etype-info2-data}\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:krb5-padata-etype-info2}\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2::doc}\index{KRB5\_PADATA\_ETYPE\_INFO2 (built-in variable)}
19248
\begin{fulllineitems}
19249
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:KRB5_PADATA_ETYPE_INFO2}\pysigline{\bfcode{KRB5\_PADATA\_ETYPE\_INFO2}}
19250
\end{fulllineitems}
19253
\begin{tabulary}{\linewidth}{|L|L|}
19256
\code{KRB5\_PADATA\_ETYPE\_INFO2}
19264
\subsubsection{KRB5\_PADATA\_FOR\_USER}
19265
\label{appdev/refs/macros/KRB5_PADATA_FOR_USER:krb5-padata-for-user}\label{appdev/refs/macros/KRB5_PADATA_FOR_USER::doc}\label{appdev/refs/macros/KRB5_PADATA_FOR_USER:krb5-padata-for-user-data}\index{KRB5\_PADATA\_FOR\_USER (built-in variable)}
19267
\begin{fulllineitems}
19268
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_FOR_USER:KRB5_PADATA_FOR_USER}\pysigline{\bfcode{KRB5\_PADATA\_FOR\_USER}}
19269
\end{fulllineitems}
19272
username protocol transition request
19274
\begin{tabulary}{\linewidth}{|L|L|}
19277
\code{KRB5\_PADATA\_FOR\_USER}
19285
\subsubsection{KRB5\_PADATA\_FX\_COOKIE}
19286
\label{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:krb5-padata-fx-cookie}\label{appdev/refs/macros/KRB5_PADATA_FX_COOKIE::doc}\label{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:krb5-padata-fx-cookie-data}\index{KRB5\_PADATA\_FX\_COOKIE (built-in variable)}
19288
\begin{fulllineitems}
19289
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:KRB5_PADATA_FX_COOKIE}\pysigline{\bfcode{KRB5\_PADATA\_FX\_COOKIE}}
19290
\end{fulllineitems}
19293
\begin{tabulary}{\linewidth}{|L|L|}
19296
\code{KRB5\_PADATA\_FX\_COOKIE}
19304
\subsubsection{KRB5\_PADATA\_FX\_ERROR}
19305
\label{appdev/refs/macros/KRB5_PADATA_FX_ERROR:krb5-padata-fx-error}\label{appdev/refs/macros/KRB5_PADATA_FX_ERROR::doc}\label{appdev/refs/macros/KRB5_PADATA_FX_ERROR:krb5-padata-fx-error-data}\index{KRB5\_PADATA\_FX\_ERROR (built-in variable)}
19307
\begin{fulllineitems}
19308
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_FX_ERROR:KRB5_PADATA_FX_ERROR}\pysigline{\bfcode{KRB5\_PADATA\_FX\_ERROR}}
19309
\end{fulllineitems}
19312
\begin{tabulary}{\linewidth}{|L|L|}
19315
\code{KRB5\_PADATA\_FX\_ERROR}
19323
\subsubsection{KRB5\_PADATA\_FX\_FAST}
19324
\label{appdev/refs/macros/KRB5_PADATA_FX_FAST::doc}\label{appdev/refs/macros/KRB5_PADATA_FX_FAST:krb5-padata-fx-fast}\label{appdev/refs/macros/KRB5_PADATA_FX_FAST:krb5-padata-fx-fast-data}\index{KRB5\_PADATA\_FX\_FAST (built-in variable)}
19326
\begin{fulllineitems}
19327
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_FX_FAST:KRB5_PADATA_FX_FAST}\pysigline{\bfcode{KRB5\_PADATA\_FX\_FAST}}
19328
\end{fulllineitems}
19331
\begin{tabulary}{\linewidth}{|L|L|}
19334
\code{KRB5\_PADATA\_FX\_FAST}
19342
\subsubsection{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}
19343
\label{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:krb5-padata-get-from-typed-data-data}\label{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA::doc}\label{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:krb5-padata-get-from-typed-data}\index{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA (built-in variable)}
19345
\begin{fulllineitems}
19346
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:KRB5_PADATA_GET_FROM_TYPED_DATA}\pysigline{\bfcode{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}}
19347
\end{fulllineitems}
19350
\begin{tabulary}{\linewidth}{|L|L|}
19353
\code{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}
19361
\subsubsection{KRB5\_PADATA\_NONE}
19362
\label{appdev/refs/macros/KRB5_PADATA_NONE:krb5-padata-none-data}\label{appdev/refs/macros/KRB5_PADATA_NONE:krb5-padata-none}\label{appdev/refs/macros/KRB5_PADATA_NONE::doc}\index{KRB5\_PADATA\_NONE (built-in variable)}
19364
\begin{fulllineitems}
19365
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_NONE:KRB5_PADATA_NONE}\pysigline{\bfcode{KRB5\_PADATA\_NONE}}
19366
\end{fulllineitems}
19369
\begin{tabulary}{\linewidth}{|L|L|}
19372
\code{KRB5\_PADATA\_NONE}
19380
\subsubsection{KRB5\_PADATA\_OSF\_DCE}
19381
\label{appdev/refs/macros/KRB5_PADATA_OSF_DCE:krb5-padata-osf-dce}\label{appdev/refs/macros/KRB5_PADATA_OSF_DCE::doc}\label{appdev/refs/macros/KRB5_PADATA_OSF_DCE:krb5-padata-osf-dce-data}\index{KRB5\_PADATA\_OSF\_DCE (built-in variable)}
19383
\begin{fulllineitems}
19384
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_OSF_DCE:KRB5_PADATA_OSF_DCE}\pysigline{\bfcode{KRB5\_PADATA\_OSF\_DCE}}
19385
\end{fulllineitems}
19390
\begin{tabulary}{\linewidth}{|L|L|}
19393
\code{KRB5\_PADATA\_OSF\_DCE}
19401
\subsubsection{KRB5\_PADATA\_OTP\_CHALLENGE}
19402
\label{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE::doc}\label{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:krb5-padata-otp-challenge}\label{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:krb5-padata-otp-challenge-data}\index{KRB5\_PADATA\_OTP\_CHALLENGE (built-in variable)}
19404
\begin{fulllineitems}
19405
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:KRB5_PADATA_OTP_CHALLENGE}\pysigline{\bfcode{KRB5\_PADATA\_OTP\_CHALLENGE}}
19406
\end{fulllineitems}
19409
See RFC 6560 section 4.1.
19411
\begin{tabulary}{\linewidth}{|L|L|}
19414
\code{KRB5\_PADATA\_OTP\_CHALLENGE}
19422
\subsubsection{KRB5\_PADATA\_OTP\_PIN\_CHANGE}
19423
\label{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE::doc}\label{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:krb5-padata-otp-pin-change}\label{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:krb5-padata-otp-pin-change-data}\index{KRB5\_PADATA\_OTP\_PIN\_CHANGE (built-in variable)}
19425
\begin{fulllineitems}
19426
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:KRB5_PADATA_OTP_PIN_CHANGE}\pysigline{\bfcode{KRB5\_PADATA\_OTP\_PIN\_CHANGE}}
19427
\end{fulllineitems}
19430
See RFC 6560 section 4.3.
19432
\begin{tabulary}{\linewidth}{|L|L|}
19435
\code{KRB5\_PADATA\_OTP\_PIN\_CHANGE}
19443
\subsubsection{KRB5\_PADATA\_OTP\_REQUEST}
19444
\label{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:krb5-padata-otp-request}\label{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST::doc}\label{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:krb5-padata-otp-request-data}\index{KRB5\_PADATA\_OTP\_REQUEST (built-in variable)}
19446
\begin{fulllineitems}
19447
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:KRB5_PADATA_OTP_REQUEST}\pysigline{\bfcode{KRB5\_PADATA\_OTP\_REQUEST}}
19448
\end{fulllineitems}
19451
See RFC 6560 section 4.2.
19453
\begin{tabulary}{\linewidth}{|L|L|}
19456
\code{KRB5\_PADATA\_OTP\_REQUEST}
19464
\subsubsection{KRB5\_PADATA\_PAC\_REQUEST}
19465
\label{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:krb5-padata-pac-request-data}\label{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:krb5-padata-pac-request}\label{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST::doc}\index{KRB5\_PADATA\_PAC\_REQUEST (built-in variable)}
19467
\begin{fulllineitems}
19468
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:KRB5_PADATA_PAC_REQUEST}\pysigline{\bfcode{KRB5\_PADATA\_PAC\_REQUEST}}
19469
\end{fulllineitems}
19472
include Windows PAC
19474
\begin{tabulary}{\linewidth}{|L|L|}
19477
\code{KRB5\_PADATA\_PAC\_REQUEST}
19485
\subsubsection{KRB5\_PADATA\_PKINIT\_KX}
19486
\label{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:krb5-padata-pkinit-kx}\label{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:krb5-padata-pkinit-kx-data}\label{appdev/refs/macros/KRB5_PADATA_PKINIT_KX::doc}\index{KRB5\_PADATA\_PKINIT\_KX (built-in variable)}
19488
\begin{fulllineitems}
19489
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:KRB5_PADATA_PKINIT_KX}\pysigline{\bfcode{KRB5\_PADATA\_PKINIT\_KX}}
19490
\end{fulllineitems}
19493
\begin{tabulary}{\linewidth}{|L|L|}
19496
\code{KRB5\_PADATA\_PKINIT\_KX}
19504
\subsubsection{KRB5\_PADATA\_PK\_AS\_REP}
19505
\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:krb5-padata-pk-as-rep-data}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:krb5-padata-pk-as-rep}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP::doc}\index{KRB5\_PADATA\_PK\_AS\_REP (built-in variable)}
19507
\begin{fulllineitems}
19508
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:KRB5_PADATA_PK_AS_REP}\pysigline{\bfcode{KRB5\_PADATA\_PK\_AS\_REP}}
19509
\end{fulllineitems}
19514
\begin{tabulary}{\linewidth}{|L|L|}
19517
\code{KRB5\_PADATA\_PK\_AS\_REP}
19525
\subsubsection{KRB5\_PADATA\_PK\_AS\_REP\_OLD}
19526
\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:krb5-padata-pk-as-rep-old-data}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD::doc}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:krb5-padata-pk-as-rep-old}\index{KRB5\_PADATA\_PK\_AS\_REP\_OLD (built-in variable)}
19528
\begin{fulllineitems}
19529
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:KRB5_PADATA_PK_AS_REP_OLD}\pysigline{\bfcode{KRB5\_PADATA\_PK\_AS\_REP\_OLD}}
19530
\end{fulllineitems}
19535
\begin{tabulary}{\linewidth}{|L|L|}
19538
\code{KRB5\_PADATA\_PK\_AS\_REP\_OLD}
19546
\subsubsection{KRB5\_PADATA\_PK\_AS\_REQ}
19547
\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ::doc}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:krb5-padata-pk-as-req}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:krb5-padata-pk-as-req-data}\index{KRB5\_PADATA\_PK\_AS\_REQ (built-in variable)}
19549
\begin{fulllineitems}
19550
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:KRB5_PADATA_PK_AS_REQ}\pysigline{\bfcode{KRB5\_PADATA\_PK\_AS\_REQ}}
19551
\end{fulllineitems}
19556
\begin{tabulary}{\linewidth}{|L|L|}
19559
\code{KRB5\_PADATA\_PK\_AS\_REQ}
19567
\subsubsection{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}
19568
\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:krb5-padata-pk-as-req-old}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:krb5-padata-pk-as-req-old-data}\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD::doc}\index{KRB5\_PADATA\_PK\_AS\_REQ\_OLD (built-in variable)}
19570
\begin{fulllineitems}
19571
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:KRB5_PADATA_PK_AS_REQ_OLD}\pysigline{\bfcode{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}}
19572
\end{fulllineitems}
19577
\begin{tabulary}{\linewidth}{|L|L|}
19580
\code{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}
19588
\subsubsection{KRB5\_PADATA\_PW\_SALT}
19589
\label{appdev/refs/macros/KRB5_PADATA_PW_SALT:krb5-padata-pw-salt-data}\label{appdev/refs/macros/KRB5_PADATA_PW_SALT:krb5-padata-pw-salt}\label{appdev/refs/macros/KRB5_PADATA_PW_SALT::doc}\index{KRB5\_PADATA\_PW\_SALT (built-in variable)}
19591
\begin{fulllineitems}
19592
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_PW_SALT:KRB5_PADATA_PW_SALT}\pysigline{\bfcode{KRB5\_PADATA\_PW\_SALT}}
19593
\end{fulllineitems}
19596
\begin{tabulary}{\linewidth}{|L|L|}
19599
\code{KRB5\_PADATA\_PW\_SALT}
19607
\subsubsection{KRB5\_PADATA\_REFERRAL}
19608
\label{appdev/refs/macros/KRB5_PADATA_REFERRAL:krb5-padata-referral}\label{appdev/refs/macros/KRB5_PADATA_REFERRAL::doc}\label{appdev/refs/macros/KRB5_PADATA_REFERRAL:krb5-padata-referral-data}\index{KRB5\_PADATA\_REFERRAL (built-in variable)}
19610
\begin{fulllineitems}
19611
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_REFERRAL:KRB5_PADATA_REFERRAL}\pysigline{\bfcode{KRB5\_PADATA\_REFERRAL}}
19612
\end{fulllineitems}
19615
draft referral system
19617
\begin{tabulary}{\linewidth}{|L|L|}
19620
\code{KRB5\_PADATA\_REFERRAL}
19628
\subsubsection{KRB5\_PADATA\_S4U\_X509\_USER}
19629
\label{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:krb5-padata-s4u-x509-user-data}\label{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER::doc}\label{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:krb5-padata-s4u-x509-user}\index{KRB5\_PADATA\_S4U\_X509\_USER (built-in variable)}
19631
\begin{fulllineitems}
19632
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:KRB5_PADATA_S4U_X509_USER}\pysigline{\bfcode{KRB5\_PADATA\_S4U\_X509\_USER}}
19633
\end{fulllineitems}
19636
certificate protocol transition request
19638
\begin{tabulary}{\linewidth}{|L|L|}
19641
\code{KRB5\_PADATA\_S4U\_X509\_USER}
19649
\subsubsection{KRB5\_PADATA\_SAM\_CHALLENGE}
19650
\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:krb5-padata-sam-challenge-data}\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE::doc}\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:krb5-padata-sam-challenge}\index{KRB5\_PADATA\_SAM\_CHALLENGE (built-in variable)}
19652
\begin{fulllineitems}
19653
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:KRB5_PADATA_SAM_CHALLENGE}\pysigline{\bfcode{KRB5\_PADATA\_SAM\_CHALLENGE}}
19654
\end{fulllineitems}
19657
draft challenge system
19659
\begin{tabulary}{\linewidth}{|L|L|}
19662
\code{KRB5\_PADATA\_SAM\_CHALLENGE}
19670
\subsubsection{KRB5\_PADATA\_SAM\_CHALLENGE\_2}
19671
\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:krb5-padata-sam-challenge-2-data}\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:krb5-padata-sam-challenge-2}\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2::doc}\index{KRB5\_PADATA\_SAM\_CHALLENGE\_2 (built-in variable)}
19673
\begin{fulllineitems}
19674
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:KRB5_PADATA_SAM_CHALLENGE_2}\pysigline{\bfcode{KRB5\_PADATA\_SAM\_CHALLENGE\_2}}
19675
\end{fulllineitems}
19678
draft challenge system, updated
19680
\begin{tabulary}{\linewidth}{|L|L|}
19683
\code{KRB5\_PADATA\_SAM\_CHALLENGE\_2}
19691
\subsubsection{KRB5\_PADATA\_SAM\_REDIRECT}
19692
\label{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT::doc}\label{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:krb5-padata-sam-redirect-data}\label{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:krb5-padata-sam-redirect}\index{KRB5\_PADATA\_SAM\_REDIRECT (built-in variable)}
19694
\begin{fulllineitems}
19695
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:KRB5_PADATA_SAM_REDIRECT}\pysigline{\bfcode{KRB5\_PADATA\_SAM\_REDIRECT}}
19696
\end{fulllineitems}
19699
\begin{tabulary}{\linewidth}{|L|L|}
19702
\code{KRB5\_PADATA\_SAM\_REDIRECT}
19710
\subsubsection{KRB5\_PADATA\_SAM\_RESPONSE}
19711
\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:krb5-padata-sam-response-data}\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE::doc}\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:krb5-padata-sam-response}\index{KRB5\_PADATA\_SAM\_RESPONSE (built-in variable)}
19713
\begin{fulllineitems}
19714
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:KRB5_PADATA_SAM_RESPONSE}\pysigline{\bfcode{KRB5\_PADATA\_SAM\_RESPONSE}}
19715
\end{fulllineitems}
19718
draft challenge system response
19720
\begin{tabulary}{\linewidth}{|L|L|}
19723
\code{KRB5\_PADATA\_SAM\_RESPONSE}
19731
\subsubsection{KRB5\_PADATA\_SAM\_RESPONSE\_2}
19732
\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2::doc}\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:krb5-padata-sam-response-2}\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:krb5-padata-sam-response-2-data}\index{KRB5\_PADATA\_SAM\_RESPONSE\_2 (built-in variable)}
19734
\begin{fulllineitems}
19735
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:KRB5_PADATA_SAM_RESPONSE_2}\pysigline{\bfcode{KRB5\_PADATA\_SAM\_RESPONSE\_2}}
19736
\end{fulllineitems}
19739
draft challenge system, updated
19741
\begin{tabulary}{\linewidth}{|L|L|}
19744
\code{KRB5\_PADATA\_SAM\_RESPONSE\_2}
19752
\subsubsection{KRB5\_PADATA\_SESAME}
19753
\label{appdev/refs/macros/KRB5_PADATA_SESAME::doc}\label{appdev/refs/macros/KRB5_PADATA_SESAME:krb5-padata-sesame}\label{appdev/refs/macros/KRB5_PADATA_SESAME:krb5-padata-sesame-data}\index{KRB5\_PADATA\_SESAME (built-in variable)}
19755
\begin{fulllineitems}
19756
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SESAME:KRB5_PADATA_SESAME}\pysigline{\bfcode{KRB5\_PADATA\_SESAME}}
19757
\end{fulllineitems}
19762
\begin{tabulary}{\linewidth}{|L|L|}
19765
\code{KRB5\_PADATA\_SESAME}
19773
\subsubsection{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}
19774
\label{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO::doc}\label{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:krb5-padata-svr-referral-info}\label{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:krb5-padata-svr-referral-info-data}\index{KRB5\_PADATA\_SVR\_REFERRAL\_INFO (built-in variable)}
19776
\begin{fulllineitems}
19777
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:KRB5_PADATA_SVR_REFERRAL_INFO}\pysigline{\bfcode{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}}
19778
\end{fulllineitems}
19781
Windows 2000 referrals.
19783
\begin{tabulary}{\linewidth}{|L|L|}
19786
\code{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}
19794
\subsubsection{KRB5\_PADATA\_TGS\_REQ}
19795
\label{appdev/refs/macros/KRB5_PADATA_TGS_REQ::doc}\label{appdev/refs/macros/KRB5_PADATA_TGS_REQ:krb5-padata-tgs-req}\label{appdev/refs/macros/KRB5_PADATA_TGS_REQ:krb5-padata-tgs-req-data}\index{KRB5\_PADATA\_TGS\_REQ (built-in variable)}
19797
\begin{fulllineitems}
19798
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_TGS_REQ:KRB5_PADATA_TGS_REQ}\pysigline{\bfcode{KRB5\_PADATA\_TGS\_REQ}}
19799
\end{fulllineitems}
19802
\begin{tabulary}{\linewidth}{|L|L|}
19805
\code{KRB5\_PADATA\_TGS\_REQ}
19807
\code{KRB5\_PADATA\_AP\_REQ}
19813
\subsubsection{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}
19814
\label{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:krb5-padata-use-specified-kvno}\label{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:krb5-padata-use-specified-kvno-data}\label{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO::doc}\index{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO (built-in variable)}
19816
\begin{fulllineitems}
19817
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:KRB5_PADATA_USE_SPECIFIED_KVNO}\pysigline{\bfcode{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}}
19818
\end{fulllineitems}
19821
\begin{tabulary}{\linewidth}{|L|L|}
19824
\code{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}
19832
\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}
19833
\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:krb5-principal-compare-casefold-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:krb5-principal-compare-casefold}\index{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD (built-in variable)}
19835
\begin{fulllineitems}
19836
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:KRB5_PRINCIPAL_COMPARE_CASEFOLD}\pysigline{\bfcode{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}}
19837
\end{fulllineitems}
19842
\begin{tabulary}{\linewidth}{|L|L|}
19845
\code{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}
19853
\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}
19854
\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:krb5-principal-compare-enterprise}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:krb5-principal-compare-enterprise-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE::doc}\index{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE (built-in variable)}
19856
\begin{fulllineitems}
19857
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:KRB5_PRINCIPAL_COMPARE_ENTERPRISE}\pysigline{\bfcode{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}}
19858
\end{fulllineitems}
19861
UPNs as real principals.
19863
\begin{tabulary}{\linewidth}{|L|L|}
19866
\code{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}
19874
\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}
19875
\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:krb5-principal-compare-ignore-realm}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:krb5-principal-compare-ignore-realm-data}\index{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM (built-in variable)}
19877
\begin{fulllineitems}
19878
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:KRB5_PRINCIPAL_COMPARE_IGNORE_REALM}\pysigline{\bfcode{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}}
19879
\end{fulllineitems}
19882
ignore realm component
19884
\begin{tabulary}{\linewidth}{|L|L|}
19887
\code{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}
19895
\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_UTF8}
19896
\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:krb5-principal-compare-utf8-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:krb5-principal-compare-utf8}\index{KRB5\_PRINCIPAL\_COMPARE\_UTF8 (built-in variable)}
19898
\begin{fulllineitems}
19899
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:KRB5_PRINCIPAL_COMPARE_UTF8}\pysigline{\bfcode{KRB5\_PRINCIPAL\_COMPARE\_UTF8}}
19900
\end{fulllineitems}
19903
treat principals as UTF-8
19905
\begin{tabulary}{\linewidth}{|L|L|}
19908
\code{KRB5\_PRINCIPAL\_COMPARE\_UTF8}
19916
\subsubsection{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}
19917
\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:krb5-principal-parse-enterprise-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:krb5-principal-parse-enterprise}\index{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE (built-in variable)}
19919
\begin{fulllineitems}
19920
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:KRB5_PRINCIPAL_PARSE_ENTERPRISE}\pysigline{\bfcode{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}}
19921
\end{fulllineitems}
19924
Create single-component enterprise principle.
19926
\begin{tabulary}{\linewidth}{|L|L|}
19929
\code{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}
19937
\subsubsection{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}
19938
\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:krb5-principal-parse-ignore-realm}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:krb5-principal-parse-ignore-realm-data}\index{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM (built-in variable)}
19940
\begin{fulllineitems}
19941
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:KRB5_PRINCIPAL_PARSE_IGNORE_REALM}\pysigline{\bfcode{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}}
19942
\end{fulllineitems}
19945
Ignore realm if present.
19947
\begin{tabulary}{\linewidth}{|L|L|}
19950
\code{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}
19958
\subsubsection{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}
19959
\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:krb5-principal-parse-no-realm-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:krb5-principal-parse-no-realm}\index{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM (built-in variable)}
19961
\begin{fulllineitems}
19962
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:KRB5_PRINCIPAL_PARSE_NO_REALM}\pysigline{\bfcode{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}}
19963
\end{fulllineitems}
19966
Error if realm is present.
19968
\begin{tabulary}{\linewidth}{|L|L|}
19971
\code{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}
19979
\subsubsection{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}
19980
\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:krb5-principal-parse-require-realm}\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:krb5-principal-parse-require-realm-data}\index{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM (built-in variable)}
19982
\begin{fulllineitems}
19983
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:KRB5_PRINCIPAL_PARSE_REQUIRE_REALM}\pysigline{\bfcode{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}}
19984
\end{fulllineitems}
19987
Error if realm is not present.
19989
\begin{tabulary}{\linewidth}{|L|L|}
19992
\code{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}
20000
\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}
20001
\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:krb5-principal-unparse-display-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:krb5-principal-unparse-display}\index{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY (built-in variable)}
20003
\begin{fulllineitems}
20004
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:KRB5_PRINCIPAL_UNPARSE_DISPLAY}\pysigline{\bfcode{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}}
20005
\end{fulllineitems}
20008
Don't escape special characters.
20010
\begin{tabulary}{\linewidth}{|L|L|}
20013
\code{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}
20021
\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}
20022
\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:krb5-principal-unparse-no-realm}\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:krb5-principal-unparse-no-realm-data}\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM::doc}\index{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM (built-in variable)}
20024
\begin{fulllineitems}
20025
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:KRB5_PRINCIPAL_UNPARSE_NO_REALM}\pysigline{\bfcode{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}}
20026
\end{fulllineitems}
20031
\begin{tabulary}{\linewidth}{|L|L|}
20034
\code{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}
20042
\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}
20043
\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT::doc}\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:krb5-principal-unparse-short}\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:krb5-principal-unparse-short-data}\index{KRB5\_PRINCIPAL\_UNPARSE\_SHORT (built-in variable)}
20045
\begin{fulllineitems}
20046
\phantomsection\label{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:KRB5_PRINCIPAL_UNPARSE_SHORT}\pysigline{\bfcode{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}}
20047
\end{fulllineitems}
20050
Omit realm if it is the local realm.
20052
\begin{tabulary}{\linewidth}{|L|L|}
20055
\code{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}
20063
\subsubsection{KRB5\_PRIV}
20064
\label{appdev/refs/macros/KRB5_PRIV:krb5-priv-data}\label{appdev/refs/macros/KRB5_PRIV::doc}\label{appdev/refs/macros/KRB5_PRIV:krb5-priv}\index{KRB5\_PRIV (built-in variable)}
20066
\begin{fulllineitems}
20067
\phantomsection\label{appdev/refs/macros/KRB5_PRIV:KRB5_PRIV}\pysigline{\bfcode{KRB5\_PRIV}}
20068
\end{fulllineitems}
20071
Private application message.
20073
\begin{tabulary}{\linewidth}{|L|L|}
20078
\code{((krb5\_msgtype)21)}
20084
\subsubsection{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}
20085
\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:krb5-prompt-type-new-password-data}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:krb5-prompt-type-new-password}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD::doc}\index{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD (built-in variable)}
20087
\begin{fulllineitems}
20088
\phantomsection\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:KRB5_PROMPT_TYPE_NEW_PASSWORD}\pysigline{\bfcode{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}}
20089
\end{fulllineitems}
20092
Prompt for new password (during password change)
20094
\begin{tabulary}{\linewidth}{|L|L|}
20097
\code{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}
20105
\subsubsection{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}
20106
\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:krb5-prompt-type-new-password-again}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:krb5-prompt-type-new-password-again-data}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN::doc}\index{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN (built-in variable)}
20108
\begin{fulllineitems}
20109
\phantomsection\label{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN}\pysigline{\bfcode{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}}
20110
\end{fulllineitems}
20113
Prompt for new password again.
20115
\begin{tabulary}{\linewidth}{|L|L|}
20118
\code{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}
20126
\subsubsection{KRB5\_PROMPT\_TYPE\_PASSWORD}
20127
\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:krb5-prompt-type-password-data}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD::doc}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:krb5-prompt-type-password}\index{KRB5\_PROMPT\_TYPE\_PASSWORD (built-in variable)}
20129
\begin{fulllineitems}
20130
\phantomsection\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:KRB5_PROMPT_TYPE_PASSWORD}\pysigline{\bfcode{KRB5\_PROMPT\_TYPE\_PASSWORD}}
20131
\end{fulllineitems}
20134
Prompt for password.
20136
\begin{tabulary}{\linewidth}{|L|L|}
20139
\code{KRB5\_PROMPT\_TYPE\_PASSWORD}
20147
\subsubsection{KRB5\_PROMPT\_TYPE\_PREAUTH}
20148
\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:krb5-prompt-type-preauth-data}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH::doc}\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:krb5-prompt-type-preauth}\index{KRB5\_PROMPT\_TYPE\_PREAUTH (built-in variable)}
20150
\begin{fulllineitems}
20151
\phantomsection\label{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:KRB5_PROMPT_TYPE_PREAUTH}\pysigline{\bfcode{KRB5\_PROMPT\_TYPE\_PREAUTH}}
20152
\end{fulllineitems}
20155
Prompt for preauthentication data (such as an OTP value)
20157
\begin{tabulary}{\linewidth}{|L|L|}
20160
\code{KRB5\_PROMPT\_TYPE\_PREAUTH}
20168
\subsubsection{KRB5\_PVNO}
20169
\label{appdev/refs/macros/KRB5_PVNO:krb5-pvno-data}\label{appdev/refs/macros/KRB5_PVNO::doc}\label{appdev/refs/macros/KRB5_PVNO:krb5-pvno}\index{KRB5\_PVNO (built-in variable)}
20171
\begin{fulllineitems}
20172
\phantomsection\label{appdev/refs/macros/KRB5_PVNO:KRB5_PVNO}\pysigline{\bfcode{KRB5\_PVNO}}
20173
\end{fulllineitems}
20176
Protocol version number.
20178
\begin{tabulary}{\linewidth}{|L|L|}
20189
\subsubsection{KRB5\_REALM\_BRANCH\_CHAR}
20190
\label{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR::doc}\label{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:krb5-realm-branch-char}\label{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:krb5-realm-branch-char-data}\index{KRB5\_REALM\_BRANCH\_CHAR (built-in variable)}
20192
\begin{fulllineitems}
20193
\phantomsection\label{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:KRB5_REALM_BRANCH_CHAR}\pysigline{\bfcode{KRB5\_REALM\_BRANCH\_CHAR}}
20194
\end{fulllineitems}
20197
\begin{tabulary}{\linewidth}{|L|L|}
20200
\code{KRB5\_REALM\_BRANCH\_CHAR}
20208
\subsubsection{KRB5\_RECVAUTH\_BADAUTHVERS}
20209
\label{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:krb5-recvauth-badauthvers-data}\label{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:krb5-recvauth-badauthvers}\label{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS::doc}\index{KRB5\_RECVAUTH\_BADAUTHVERS (built-in variable)}
20211
\begin{fulllineitems}
20212
\phantomsection\label{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:KRB5_RECVAUTH_BADAUTHVERS}\pysigline{\bfcode{KRB5\_RECVAUTH\_BADAUTHVERS}}
20213
\end{fulllineitems}
20216
\begin{tabulary}{\linewidth}{|L|L|}
20219
\code{KRB5\_RECVAUTH\_BADAUTHVERS}
20227
\subsubsection{KRB5\_RECVAUTH\_SKIP\_VERSION}
20228
\label{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:krb5-recvauth-skip-version}\label{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:krb5-recvauth-skip-version-data}\label{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION::doc}\index{KRB5\_RECVAUTH\_SKIP\_VERSION (built-in variable)}
20230
\begin{fulllineitems}
20231
\phantomsection\label{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:KRB5_RECVAUTH_SKIP_VERSION}\pysigline{\bfcode{KRB5\_RECVAUTH\_SKIP\_VERSION}}
20232
\end{fulllineitems}
20235
\begin{tabulary}{\linewidth}{|L|L|}
20238
\code{KRB5\_RECVAUTH\_SKIP\_VERSION}
20246
\subsubsection{KRB5\_REFERRAL\_REALM}
20247
\label{appdev/refs/macros/KRB5_REFERRAL_REALM:krb5-referral-realm-data}\label{appdev/refs/macros/KRB5_REFERRAL_REALM::doc}\label{appdev/refs/macros/KRB5_REFERRAL_REALM:krb5-referral-realm}\index{KRB5\_REFERRAL\_REALM (built-in variable)}
20249
\begin{fulllineitems}
20250
\phantomsection\label{appdev/refs/macros/KRB5_REFERRAL_REALM:KRB5_REFERRAL_REALM}\pysigline{\bfcode{KRB5\_REFERRAL\_REALM}}
20251
\end{fulllineitems}
20254
Constant for realm referrals.
20256
\begin{tabulary}{\linewidth}{|L|L|}
20259
\code{KRB5\_REFERRAL\_REALM}
20267
\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}
20268
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:krb5-responder-otp-flags-collect-pin-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN::doc}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:krb5-responder-otp-flags-collect-pin}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN (built-in variable)}
20270
\begin{fulllineitems}
20271
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}}
20272
\end{fulllineitems}
20275
This flag indicates that the PIN value MUST be collected.
20277
\begin{tabulary}{\linewidth}{|L|L|}
20280
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}
20288
\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}
20289
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:krb5-responder-otp-flags-collect-token-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:krb5-responder-otp-flags-collect-token}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN::doc}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN (built-in variable)}
20291
\begin{fulllineitems}
20292
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}}
20293
\end{fulllineitems}
20296
This flag indicates that the token value MUST be collected.
20298
\begin{tabulary}{\linewidth}{|L|L|}
20301
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}
20309
\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}
20310
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:krb5-responder-otp-flags-nextotp-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP::doc}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:krb5-responder-otp-flags-nextotp}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP (built-in variable)}
20312
\begin{fulllineitems}
20313
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:KRB5_RESPONDER_OTP_FLAGS_NEXTOTP}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}}
20314
\end{fulllineitems}
20317
This flag indicates that the token is now in re-synchronization mode with the server.
20319
The user is expected to reply with the next code displayed on the token.
20321
\begin{tabulary}{\linewidth}{|L|L|}
20324
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}
20332
\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}
20333
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:krb5-responder-otp-flags-separate-pin}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:krb5-responder-otp-flags-separate-pin-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN::doc}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN (built-in variable)}
20335
\begin{fulllineitems}
20336
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}}
20337
\end{fulllineitems}
20340
This flag indicates that the PIN MUST be returned as a separate item.
20342
This flag only takes effect if KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN is set. If this flag is not set, the responder may either concatenate PIN + token value and store it as ``value'' in the answer or it may return them separately. If they are returned separately, they will be concatenated internally.
20344
\begin{tabulary}{\linewidth}{|L|L|}
20347
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}
20355
\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}
20356
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:krb5-responder-otp-format-alphanumeric-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:krb5-responder-otp-format-alphanumeric}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC::doc}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC (built-in variable)}
20358
\begin{fulllineitems}
20359
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}}
20360
\end{fulllineitems}
20363
\begin{tabulary}{\linewidth}{|L|L|}
20366
\code{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}
20374
\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}
20375
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:krb5-responder-otp-format-decimal-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL::doc}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:krb5-responder-otp-format-decimal}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL (built-in variable)}
20377
\begin{fulllineitems}
20378
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:KRB5_RESPONDER_OTP_FORMAT_DECIMAL}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}}
20379
\end{fulllineitems}
20382
These format constants identify the format of the token value.
20384
\begin{tabulary}{\linewidth}{|L|L|}
20387
\code{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}
20395
\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}
20396
\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:krb5-responder-otp-format-hexadecimal-data}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL::doc}\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:krb5-responder-otp-format-hexadecimal}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL (built-in variable)}
20398
\begin{fulllineitems}
20399
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL}\pysigline{\bfcode{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}}
20400
\end{fulllineitems}
20403
\begin{tabulary}{\linewidth}{|L|L|}
20406
\code{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}
20414
\subsubsection{KRB5\_RESPONDER\_QUESTION\_OTP}
20415
\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:krb5-responder-question-otp}\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:krb5-responder-question-otp-data}\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP::doc}\index{KRB5\_RESPONDER\_QUESTION\_OTP (built-in variable)}
20417
\begin{fulllineitems}
20418
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:KRB5_RESPONDER_QUESTION_OTP}\pysigline{\bfcode{KRB5\_RESPONDER\_QUESTION\_OTP}}
20419
\end{fulllineitems}
20422
OTP responder question.
20424
The OTP responder question is asked when the KDC indicates that an OTP value is required in order to complete the authentication. The JSON format of the challenge is: \{ ``service'': \textless{}string (optional)\textgreater{}, ``tokenInfo'': {[} \{ ``flags'': \textless{}number\textgreater{}, ``vendor'': \textless{}string (optional)\textgreater{}, ``challenge'': \textless{}string (optional)\textgreater{}, ``length'': \textless{}number (optional)\textgreater{}, ``format'': \textless{}number (optional)\textgreater{}, ``tokenID'': \textless{}string (optional)\textgreater{}, ``algID'': \textless{}string (optional)\textgreater{}, \}, ... {]} \}
20425
The answer to the question MUST be JSON formatted: \{ ``tokeninfo'': \textless{}number\textgreater{}, ``value'': \textless{}string (optional)\textgreater{}, ``pin'': \textless{}string (optional)\textgreater{}, \}
20426
For more detail, please see RFC 6560.
20428
\begin{tabulary}{\linewidth}{|L|L|}
20431
\code{KRB5\_RESPONDER\_QUESTION\_OTP}
20439
\subsubsection{KRB5\_RESPONDER\_QUESTION\_PASSWORD}
20440
\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:krb5-responder-question-password-data}\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:krb5-responder-question-password}\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD::doc}\index{KRB5\_RESPONDER\_QUESTION\_PASSWORD (built-in variable)}
20442
\begin{fulllineitems}
20443
\phantomsection\label{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:KRB5_RESPONDER_QUESTION_PASSWORD}\pysigline{\bfcode{KRB5\_RESPONDER\_QUESTION\_PASSWORD}}
20444
\end{fulllineitems}
20447
Long-term password responder question.
20449
This question is asked when the long-term password is needed. It has no challenge and the response is simply the password string.
20451
\begin{tabulary}{\linewidth}{|L|L|}
20454
\code{KRB5\_RESPONDER\_QUESTION\_PASSWORD}
20462
\subsubsection{KRB5\_SAFE}
20463
\label{appdev/refs/macros/KRB5_SAFE:krb5-safe}\label{appdev/refs/macros/KRB5_SAFE::doc}\label{appdev/refs/macros/KRB5_SAFE:krb5-safe-data}\index{KRB5\_SAFE (built-in variable)}
20465
\begin{fulllineitems}
20466
\phantomsection\label{appdev/refs/macros/KRB5_SAFE:KRB5_SAFE}\pysigline{\bfcode{KRB5\_SAFE}}
20467
\end{fulllineitems}
20470
Safe application message.
20472
\begin{tabulary}{\linewidth}{|L|L|}
20477
\code{((krb5\_msgtype)20)}
20483
\subsubsection{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}
20484
\label{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:krb5-sam-must-pk-encrypt-sad}\label{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:krb5-sam-must-pk-encrypt-sad-data}\label{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD::doc}\index{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD (built-in variable)}
20486
\begin{fulllineitems}
20487
\phantomsection\label{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:KRB5_SAM_MUST_PK_ENCRYPT_SAD}\pysigline{\bfcode{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}}
20488
\end{fulllineitems}
20491
currently must be zero
20493
\begin{tabulary}{\linewidth}{|L|L|}
20496
\code{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}
20504
\subsubsection{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}
20505
\label{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:krb5-sam-send-encrypted-sad}\label{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD::doc}\label{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:krb5-sam-send-encrypted-sad-data}\index{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD (built-in variable)}
20507
\begin{fulllineitems}
20508
\phantomsection\label{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:KRB5_SAM_SEND_ENCRYPTED_SAD}\pysigline{\bfcode{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}}
20509
\end{fulllineitems}
20512
\begin{tabulary}{\linewidth}{|L|L|}
20515
\code{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}
20523
\subsubsection{KRB5\_SAM\_USE\_SAD\_AS\_KEY}
20524
\label{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY::doc}\label{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY:krb5-sam-use-sad-as-key}\label{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY:krb5-sam-use-sad-as-key-data}\index{KRB5\_SAM\_USE\_SAD\_AS\_KEY (built-in variable)}
20526
\begin{fulllineitems}
20527
\phantomsection\label{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY:KRB5_SAM_USE_SAD_AS_KEY}\pysigline{\bfcode{KRB5\_SAM\_USE\_SAD\_AS\_KEY}}
20528
\end{fulllineitems}
20531
\begin{tabulary}{\linewidth}{|L|L|}
20534
\code{KRB5\_SAM\_USE\_SAD\_AS\_KEY}
20542
\subsubsection{KRB5\_TC\_MATCH\_2ND\_TKT}
20543
\label{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:krb5-tc-match-2nd-tkt-data}\label{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT::doc}\label{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:krb5-tc-match-2nd-tkt}\index{KRB5\_TC\_MATCH\_2ND\_TKT (built-in variable)}
20545
\begin{fulllineitems}
20546
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:KRB5_TC_MATCH_2ND_TKT}\pysigline{\bfcode{KRB5\_TC\_MATCH\_2ND\_TKT}}
20547
\end{fulllineitems}
20550
The second ticket must match.
20552
\begin{tabulary}{\linewidth}{|L|L|}
20555
\code{KRB5\_TC\_MATCH\_2ND\_TKT}
20563
\subsubsection{KRB5\_TC\_MATCH\_AUTHDATA}
20564
\label{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA::doc}\label{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:krb5-tc-match-authdata-data}\label{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:krb5-tc-match-authdata}\index{KRB5\_TC\_MATCH\_AUTHDATA (built-in variable)}
20566
\begin{fulllineitems}
20567
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:KRB5_TC_MATCH_AUTHDATA}\pysigline{\bfcode{KRB5\_TC\_MATCH\_AUTHDATA}}
20568
\end{fulllineitems}
20571
The authorization data must match.
20573
\begin{tabulary}{\linewidth}{|L|L|}
20576
\code{KRB5\_TC\_MATCH\_AUTHDATA}
20584
\subsubsection{KRB5\_TC\_MATCH\_FLAGS}
20585
\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:krb5-tc-match-flags}\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS::doc}\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:krb5-tc-match-flags-data}\index{KRB5\_TC\_MATCH\_FLAGS (built-in variable)}
20587
\begin{fulllineitems}
20588
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:KRB5_TC_MATCH_FLAGS}\pysigline{\bfcode{KRB5\_TC\_MATCH\_FLAGS}}
20589
\end{fulllineitems}
20592
All the flags set in the match credentials must be set.
20594
\begin{tabulary}{\linewidth}{|L|L|}
20597
\code{KRB5\_TC\_MATCH\_FLAGS}
20605
\subsubsection{KRB5\_TC\_MATCH\_FLAGS\_EXACT}
20606
\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:krb5-tc-match-flags-exact}\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT::doc}\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:krb5-tc-match-flags-exact-data}\index{KRB5\_TC\_MATCH\_FLAGS\_EXACT (built-in variable)}
20608
\begin{fulllineitems}
20609
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:KRB5_TC_MATCH_FLAGS_EXACT}\pysigline{\bfcode{KRB5\_TC\_MATCH\_FLAGS\_EXACT}}
20610
\end{fulllineitems}
20613
All the flags must match exactly.
20615
\begin{tabulary}{\linewidth}{|L|L|}
20618
\code{KRB5\_TC\_MATCH\_FLAGS\_EXACT}
20626
\subsubsection{KRB5\_TC\_MATCH\_IS\_SKEY}
20627
\label{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:krb5-tc-match-is-skey}\label{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:krb5-tc-match-is-skey-data}\label{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY::doc}\index{KRB5\_TC\_MATCH\_IS\_SKEY (built-in variable)}
20629
\begin{fulllineitems}
20630
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:KRB5_TC_MATCH_IS_SKEY}\pysigline{\bfcode{KRB5\_TC\_MATCH\_IS\_SKEY}}
20631
\end{fulllineitems}
20634
The is\_skey field must match exactly.
20636
\begin{tabulary}{\linewidth}{|L|L|}
20639
\code{KRB5\_TC\_MATCH\_IS\_SKEY}
20647
\subsubsection{KRB5\_TC\_MATCH\_KTYPE}
20648
\label{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:krb5-tc-match-ktype}\label{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:krb5-tc-match-ktype-data}\label{appdev/refs/macros/KRB5_TC_MATCH_KTYPE::doc}\index{KRB5\_TC\_MATCH\_KTYPE (built-in variable)}
20650
\begin{fulllineitems}
20651
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:KRB5_TC_MATCH_KTYPE}\pysigline{\bfcode{KRB5\_TC\_MATCH\_KTYPE}}
20652
\end{fulllineitems}
20655
The encryption key type must match.
20657
\begin{tabulary}{\linewidth}{|L|L|}
20660
\code{KRB5\_TC\_MATCH\_KTYPE}
20668
\subsubsection{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}
20669
\label{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY::doc}\label{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:krb5-tc-match-srv-nameonly}\label{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:krb5-tc-match-srv-nameonly-data}\index{KRB5\_TC\_MATCH\_SRV\_NAMEONLY (built-in variable)}
20671
\begin{fulllineitems}
20672
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:KRB5_TC_MATCH_SRV_NAMEONLY}\pysigline{\bfcode{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}}
20673
\end{fulllineitems}
20676
Only the name portion of the principal name must match.
20678
\begin{tabulary}{\linewidth}{|L|L|}
20681
\code{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}
20689
\subsubsection{KRB5\_TC\_MATCH\_TIMES}
20690
\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES:krb5-tc-match-times}\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES:krb5-tc-match-times-data}\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES::doc}\index{KRB5\_TC\_MATCH\_TIMES (built-in variable)}
20692
\begin{fulllineitems}
20693
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES:KRB5_TC_MATCH_TIMES}\pysigline{\bfcode{KRB5\_TC\_MATCH\_TIMES}}
20694
\end{fulllineitems}
20697
The requested lifetime must be at least as great as the time specified.
20699
\begin{tabulary}{\linewidth}{|L|L|}
20702
\code{KRB5\_TC\_MATCH\_TIMES}
20710
\subsubsection{KRB5\_TC\_MATCH\_TIMES\_EXACT}
20711
\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:krb5-tc-match-times-exact-data}\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT::doc}\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:krb5-tc-match-times-exact}\index{KRB5\_TC\_MATCH\_TIMES\_EXACT (built-in variable)}
20713
\begin{fulllineitems}
20714
\phantomsection\label{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:KRB5_TC_MATCH_TIMES_EXACT}\pysigline{\bfcode{KRB5\_TC\_MATCH\_TIMES\_EXACT}}
20715
\end{fulllineitems}
20718
All the time fields must match exactly.
20720
\begin{tabulary}{\linewidth}{|L|L|}
20723
\code{KRB5\_TC\_MATCH\_TIMES\_EXACT}
20731
\subsubsection{KRB5\_TC\_NOTICKET}
20732
\label{appdev/refs/macros/KRB5_TC_NOTICKET:krb5-tc-noticket}\label{appdev/refs/macros/KRB5_TC_NOTICKET::doc}\label{appdev/refs/macros/KRB5_TC_NOTICKET:krb5-tc-noticket-data}\index{KRB5\_TC\_NOTICKET (built-in variable)}
20734
\begin{fulllineitems}
20735
\phantomsection\label{appdev/refs/macros/KRB5_TC_NOTICKET:KRB5_TC_NOTICKET}\pysigline{\bfcode{KRB5\_TC\_NOTICKET}}
20736
\end{fulllineitems}
20739
\begin{tabulary}{\linewidth}{|L|L|}
20742
\code{KRB5\_TC\_NOTICKET}
20750
\subsubsection{KRB5\_TC\_OPENCLOSE}
20751
\label{appdev/refs/macros/KRB5_TC_OPENCLOSE:krb5-tc-openclose}\label{appdev/refs/macros/KRB5_TC_OPENCLOSE:krb5-tc-openclose-data}\label{appdev/refs/macros/KRB5_TC_OPENCLOSE::doc}\index{KRB5\_TC\_OPENCLOSE (built-in variable)}
20753
\begin{fulllineitems}
20754
\phantomsection\label{appdev/refs/macros/KRB5_TC_OPENCLOSE:KRB5_TC_OPENCLOSE}\pysigline{\bfcode{KRB5\_TC\_OPENCLOSE}}
20755
\end{fulllineitems}
20758
Open and close the file for each cache operation.
20760
\begin{tabulary}{\linewidth}{|L|L|}
20763
\code{KRB5\_TC\_OPENCLOSE}
20771
\subsubsection{KRB5\_TC\_SUPPORTED\_KTYPES}
20772
\label{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:krb5-tc-supported-ktypes-data}\label{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES::doc}\label{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:krb5-tc-supported-ktypes}\index{KRB5\_TC\_SUPPORTED\_KTYPES (built-in variable)}
20774
\begin{fulllineitems}
20775
\phantomsection\label{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:KRB5_TC_SUPPORTED_KTYPES}\pysigline{\bfcode{KRB5\_TC\_SUPPORTED\_KTYPES}}
20776
\end{fulllineitems}
20779
The supported key types must match.
20781
\begin{tabulary}{\linewidth}{|L|L|}
20784
\code{KRB5\_TC\_SUPPORTED\_KTYPES}
20792
\subsubsection{KRB5\_TGS\_NAME}
20793
\label{appdev/refs/macros/KRB5_TGS_NAME:krb5-tgs-name-data}\label{appdev/refs/macros/KRB5_TGS_NAME::doc}\label{appdev/refs/macros/KRB5_TGS_NAME:krb5-tgs-name}\index{KRB5\_TGS\_NAME (built-in variable)}
20795
\begin{fulllineitems}
20796
\phantomsection\label{appdev/refs/macros/KRB5_TGS_NAME:KRB5_TGS_NAME}\pysigline{\bfcode{KRB5\_TGS\_NAME}}
20797
\end{fulllineitems}
20800
\begin{tabulary}{\linewidth}{|L|L|}
20803
\code{KRB5\_TGS\_NAME}
20811
\subsubsection{KRB5\_TGS\_NAME\_SIZE}
20812
\label{appdev/refs/macros/KRB5_TGS_NAME_SIZE:krb5-tgs-name-size}\label{appdev/refs/macros/KRB5_TGS_NAME_SIZE:krb5-tgs-name-size-data}\label{appdev/refs/macros/KRB5_TGS_NAME_SIZE::doc}\index{KRB5\_TGS\_NAME\_SIZE (built-in variable)}
20814
\begin{fulllineitems}
20815
\phantomsection\label{appdev/refs/macros/KRB5_TGS_NAME_SIZE:KRB5_TGS_NAME_SIZE}\pysigline{\bfcode{KRB5\_TGS\_NAME\_SIZE}}
20816
\end{fulllineitems}
20819
\begin{tabulary}{\linewidth}{|L|L|}
20822
\code{KRB5\_TGS\_NAME\_SIZE}
20830
\subsubsection{KRB5\_TGS\_REP}
20831
\label{appdev/refs/macros/KRB5_TGS_REP::doc}\label{appdev/refs/macros/KRB5_TGS_REP:krb5-tgs-rep-data}\label{appdev/refs/macros/KRB5_TGS_REP:krb5-tgs-rep}\index{KRB5\_TGS\_REP (built-in variable)}
20833
\begin{fulllineitems}
20834
\phantomsection\label{appdev/refs/macros/KRB5_TGS_REP:KRB5_TGS_REP}\pysigline{\bfcode{KRB5\_TGS\_REP}}
20835
\end{fulllineitems}
20838
Response to TGS request.
20840
\begin{tabulary}{\linewidth}{|L|L|}
20843
\code{KRB5\_TGS\_REP}
20845
\code{((krb5\_msgtype)13)}
20851
\subsubsection{KRB5\_TGS\_REQ}
20852
\label{appdev/refs/macros/KRB5_TGS_REQ:krb5-tgs-req-data}\label{appdev/refs/macros/KRB5_TGS_REQ::doc}\label{appdev/refs/macros/KRB5_TGS_REQ:krb5-tgs-req}\index{KRB5\_TGS\_REQ (built-in variable)}
20854
\begin{fulllineitems}
20855
\phantomsection\label{appdev/refs/macros/KRB5_TGS_REQ:KRB5_TGS_REQ}\pysigline{\bfcode{KRB5\_TGS\_REQ}}
20856
\end{fulllineitems}
20859
Ticket granting server request.
20861
\begin{tabulary}{\linewidth}{|L|L|}
20864
\code{KRB5\_TGS\_REQ}
20866
\code{((krb5\_msgtype)12)}
20872
\subsubsection{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}
20873
\label{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:krb5-tkt-creds-step-flag-continue-data}\label{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE::doc}\label{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:krb5-tkt-creds-step-flag-continue}\index{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE (built-in variable)}
20875
\begin{fulllineitems}
20876
\phantomsection\label{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE}\pysigline{\bfcode{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}}
20877
\end{fulllineitems}
20880
More responses needed.
20882
\begin{tabulary}{\linewidth}{|L|L|}
20885
\code{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}
20893
\subsubsection{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}
20894
\label{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL:krb5-verify-init-creds-opt-ap-req-nofail}\label{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL::doc}\label{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL:krb5-verify-init-creds-opt-ap-req-nofail-data}\index{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL (built-in variable)}
20896
\begin{fulllineitems}
20897
\phantomsection\label{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL:KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL}\pysigline{\bfcode{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}}
20898
\end{fulllineitems}
20901
\begin{tabulary}{\linewidth}{|L|L|}
20904
\code{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}
20912
\subsubsection{KRB5\_WELLKNOWN\_NAMESTR}
20913
\label{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR::doc}\label{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:krb5-wellknown-namestr}\label{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:krb5-wellknown-namestr-data}\index{KRB5\_WELLKNOWN\_NAMESTR (built-in variable)}
20915
\begin{fulllineitems}
20916
\phantomsection\label{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:KRB5_WELLKNOWN_NAMESTR}\pysigline{\bfcode{KRB5\_WELLKNOWN\_NAMESTR}}
20917
\end{fulllineitems}
20920
First component of NT\_WELLKNOWN principals.
20922
\begin{tabulary}{\linewidth}{|L|L|}
20925
\code{KRB5\_WELLKNOWN\_NAMESTR}
20933
\subsubsection{LR\_TYPE\_INTERPRETATION\_MASK}
20934
\label{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:lr-type-interpretation-mask-data}\label{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:lr-type-interpretation-mask}\label{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK::doc}\index{LR\_TYPE\_INTERPRETATION\_MASK (built-in variable)}
20936
\begin{fulllineitems}
20937
\phantomsection\label{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:LR_TYPE_INTERPRETATION_MASK}\pysigline{\bfcode{LR\_TYPE\_INTERPRETATION\_MASK}}
20938
\end{fulllineitems}
20941
\begin{tabulary}{\linewidth}{|L|L|}
20944
\code{LR\_TYPE\_INTERPRETATION\_MASK}
20952
\subsubsection{LR\_TYPE\_THIS\_SERVER\_ONLY}
20953
\label{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:lr-type-this-server-only-data}\label{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:lr-type-this-server-only}\label{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY::doc}\index{LR\_TYPE\_THIS\_SERVER\_ONLY (built-in variable)}
20955
\begin{fulllineitems}
20956
\phantomsection\label{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:LR_TYPE_THIS_SERVER_ONLY}\pysigline{\bfcode{LR\_TYPE\_THIS\_SERVER\_ONLY}}
20957
\end{fulllineitems}
20960
\begin{tabulary}{\linewidth}{|L|L|}
20963
\code{LR\_TYPE\_THIS\_SERVER\_ONLY}
20971
\subsubsection{MAX\_KEYTAB\_NAME\_LEN}
20972
\label{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:max-keytab-name-len-data}\label{appdev/refs/macros/MAX_KEYTAB_NAME_LEN::doc}\label{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:max-keytab-name-len}\index{MAX\_KEYTAB\_NAME\_LEN (built-in variable)}
20974
\begin{fulllineitems}
20975
\phantomsection\label{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:MAX_KEYTAB_NAME_LEN}\pysigline{\bfcode{MAX\_KEYTAB\_NAME\_LEN}}
20976
\end{fulllineitems}
20979
Long enough for MAXPATHLEN + some extra.
20981
\begin{tabulary}{\linewidth}{|L|L|}
20984
\code{MAX\_KEYTAB\_NAME\_LEN}
20992
\subsubsection{MSEC\_DIRBIT}
20993
\label{appdev/refs/macros/MSEC_DIRBIT:msec-dirbit}\label{appdev/refs/macros/MSEC_DIRBIT:msec-dirbit-data}\label{appdev/refs/macros/MSEC_DIRBIT::doc}\index{MSEC\_DIRBIT (built-in variable)}
20995
\begin{fulllineitems}
20996
\phantomsection\label{appdev/refs/macros/MSEC_DIRBIT:MSEC_DIRBIT}\pysigline{\bfcode{MSEC\_DIRBIT}}
20997
\end{fulllineitems}
21000
\begin{tabulary}{\linewidth}{|L|L|}
21003
\code{MSEC\_DIRBIT}
21011
\subsubsection{MSEC\_VAL\_MASK}
21012
\label{appdev/refs/macros/MSEC_VAL_MASK:msec-val-mask-data}\label{appdev/refs/macros/MSEC_VAL_MASK::doc}\label{appdev/refs/macros/MSEC_VAL_MASK:msec-val-mask}\index{MSEC\_VAL\_MASK (built-in variable)}
21014
\begin{fulllineitems}
21015
\phantomsection\label{appdev/refs/macros/MSEC_VAL_MASK:MSEC_VAL_MASK}\pysigline{\bfcode{MSEC\_VAL\_MASK}}
21016
\end{fulllineitems}
21019
\begin{tabulary}{\linewidth}{|L|L|}
21022
\code{MSEC\_VAL\_MASK}
21030
\subsubsection{SALT\_TYPE\_AFS\_LENGTH}
21031
\label{appdev/refs/macros/SALT_TYPE_AFS_LENGTH::doc}\label{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:salt-type-afs-length-data}\label{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:salt-type-afs-length}\index{SALT\_TYPE\_AFS\_LENGTH (built-in variable)}
21033
\begin{fulllineitems}
21034
\phantomsection\label{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:SALT_TYPE_AFS_LENGTH}\pysigline{\bfcode{SALT\_TYPE\_AFS\_LENGTH}}
21035
\end{fulllineitems}
21038
\begin{tabulary}{\linewidth}{|L|L|}
21041
\code{SALT\_TYPE\_AFS\_LENGTH}
21049
\subsubsection{SALT\_TYPE\_NO\_LENGTH}
21050
\label{appdev/refs/macros/SALT_TYPE_NO_LENGTH:salt-type-no-length-data}\label{appdev/refs/macros/SALT_TYPE_NO_LENGTH::doc}\label{appdev/refs/macros/SALT_TYPE_NO_LENGTH:salt-type-no-length}\index{SALT\_TYPE\_NO\_LENGTH (built-in variable)}
21052
\begin{fulllineitems}
21053
\phantomsection\label{appdev/refs/macros/SALT_TYPE_NO_LENGTH:SALT_TYPE_NO_LENGTH}\pysigline{\bfcode{SALT\_TYPE\_NO\_LENGTH}}
21054
\end{fulllineitems}
21057
\begin{tabulary}{\linewidth}{|L|L|}
21060
\code{SALT\_TYPE\_NO\_LENGTH}
21068
\subsubsection{THREEPARAMOPEN}
21069
\label{appdev/refs/macros/THREEPARAMOPEN:threeparamopen}\label{appdev/refs/macros/THREEPARAMOPEN:threeparamopen-data}\label{appdev/refs/macros/THREEPARAMOPEN::doc}\index{THREEPARAMOPEN (built-in variable)}
21071
\begin{fulllineitems}
21072
\phantomsection\label{appdev/refs/macros/THREEPARAMOPEN:THREEPARAMOPEN}\pysigline{\bfcode{THREEPARAMOPEN}}
21073
\end{fulllineitems}
21076
\begin{tabulary}{\linewidth}{|L|L|}
21079
\code{THREEPARAMOPEN (x, y, z)}
21087
\subsubsection{TKT\_FLG\_ANONYMOUS}
21088
\label{appdev/refs/macros/TKT_FLG_ANONYMOUS::doc}\label{appdev/refs/macros/TKT_FLG_ANONYMOUS:tkt-flg-anonymous}\label{appdev/refs/macros/TKT_FLG_ANONYMOUS:tkt-flg-anonymous-data}\index{TKT\_FLG\_ANONYMOUS (built-in variable)}
21090
\begin{fulllineitems}
21091
\phantomsection\label{appdev/refs/macros/TKT_FLG_ANONYMOUS:TKT_FLG_ANONYMOUS}\pysigline{\bfcode{TKT\_FLG\_ANONYMOUS}}
21092
\end{fulllineitems}
21095
\begin{tabulary}{\linewidth}{|L|L|}
21098
\code{TKT\_FLG\_ANONYMOUS}
21106
\subsubsection{TKT\_FLG\_ENC\_PA\_REP}
21107
\label{appdev/refs/macros/TKT_FLG_ENC_PA_REP:tkt-flg-enc-pa-rep}\label{appdev/refs/macros/TKT_FLG_ENC_PA_REP:tkt-flg-enc-pa-rep-data}\label{appdev/refs/macros/TKT_FLG_ENC_PA_REP::doc}\index{TKT\_FLG\_ENC\_PA\_REP (built-in variable)}
21109
\begin{fulllineitems}
21110
\phantomsection\label{appdev/refs/macros/TKT_FLG_ENC_PA_REP:TKT_FLG_ENC_PA_REP}\pysigline{\bfcode{TKT\_FLG\_ENC\_PA\_REP}}
21111
\end{fulllineitems}
21114
\begin{tabulary}{\linewidth}{|L|L|}
21117
\code{TKT\_FLG\_ENC\_PA\_REP}
21125
\subsubsection{TKT\_FLG\_FORWARDABLE}
21126
\label{appdev/refs/macros/TKT_FLG_FORWARDABLE:tkt-flg-forwardable-data}\label{appdev/refs/macros/TKT_FLG_FORWARDABLE:tkt-flg-forwardable}\label{appdev/refs/macros/TKT_FLG_FORWARDABLE::doc}\index{TKT\_FLG\_FORWARDABLE (built-in variable)}
21128
\begin{fulllineitems}
21129
\phantomsection\label{appdev/refs/macros/TKT_FLG_FORWARDABLE:TKT_FLG_FORWARDABLE}\pysigline{\bfcode{TKT\_FLG\_FORWARDABLE}}
21130
\end{fulllineitems}
21133
\begin{tabulary}{\linewidth}{|L|L|}
21136
\code{TKT\_FLG\_FORWARDABLE}
21144
\subsubsection{TKT\_FLG\_FORWARDED}
21145
\label{appdev/refs/macros/TKT_FLG_FORWARDED::doc}\label{appdev/refs/macros/TKT_FLG_FORWARDED:tkt-flg-forwarded}\label{appdev/refs/macros/TKT_FLG_FORWARDED:tkt-flg-forwarded-data}\index{TKT\_FLG\_FORWARDED (built-in variable)}
21147
\begin{fulllineitems}
21148
\phantomsection\label{appdev/refs/macros/TKT_FLG_FORWARDED:TKT_FLG_FORWARDED}\pysigline{\bfcode{TKT\_FLG\_FORWARDED}}
21149
\end{fulllineitems}
21152
\begin{tabulary}{\linewidth}{|L|L|}
21155
\code{TKT\_FLG\_FORWARDED}
21163
\subsubsection{TKT\_FLG\_HW\_AUTH}
21164
\label{appdev/refs/macros/TKT_FLG_HW_AUTH::doc}\label{appdev/refs/macros/TKT_FLG_HW_AUTH:tkt-flg-hw-auth}\label{appdev/refs/macros/TKT_FLG_HW_AUTH:tkt-flg-hw-auth-data}\index{TKT\_FLG\_HW\_AUTH (built-in variable)}
21166
\begin{fulllineitems}
21167
\phantomsection\label{appdev/refs/macros/TKT_FLG_HW_AUTH:TKT_FLG_HW_AUTH}\pysigline{\bfcode{TKT\_FLG\_HW\_AUTH}}
21168
\end{fulllineitems}
21171
\begin{tabulary}{\linewidth}{|L|L|}
21174
\code{TKT\_FLG\_HW\_AUTH}
21182
\subsubsection{TKT\_FLG\_INITIAL}
21183
\label{appdev/refs/macros/TKT_FLG_INITIAL:tkt-flg-initial}\label{appdev/refs/macros/TKT_FLG_INITIAL::doc}\label{appdev/refs/macros/TKT_FLG_INITIAL:tkt-flg-initial-data}\index{TKT\_FLG\_INITIAL (built-in variable)}
21185
\begin{fulllineitems}
21186
\phantomsection\label{appdev/refs/macros/TKT_FLG_INITIAL:TKT_FLG_INITIAL}\pysigline{\bfcode{TKT\_FLG\_INITIAL}}
21187
\end{fulllineitems}
21190
\begin{tabulary}{\linewidth}{|L|L|}
21193
\code{TKT\_FLG\_INITIAL}
21201
\subsubsection{TKT\_FLG\_INVALID}
21202
\label{appdev/refs/macros/TKT_FLG_INVALID:tkt-flg-invalid-data}\label{appdev/refs/macros/TKT_FLG_INVALID::doc}\label{appdev/refs/macros/TKT_FLG_INVALID:tkt-flg-invalid}\index{TKT\_FLG\_INVALID (built-in variable)}
21204
\begin{fulllineitems}
21205
\phantomsection\label{appdev/refs/macros/TKT_FLG_INVALID:TKT_FLG_INVALID}\pysigline{\bfcode{TKT\_FLG\_INVALID}}
21206
\end{fulllineitems}
21209
\begin{tabulary}{\linewidth}{|L|L|}
21212
\code{TKT\_FLG\_INVALID}
21220
\subsubsection{TKT\_FLG\_MAY\_POSTDATE}
21221
\label{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:tkt-flg-may-postdate}\label{appdev/refs/macros/TKT_FLG_MAY_POSTDATE::doc}\label{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:tkt-flg-may-postdate-data}\index{TKT\_FLG\_MAY\_POSTDATE (built-in variable)}
21223
\begin{fulllineitems}
21224
\phantomsection\label{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:TKT_FLG_MAY_POSTDATE}\pysigline{\bfcode{TKT\_FLG\_MAY\_POSTDATE}}
21225
\end{fulllineitems}
21228
\begin{tabulary}{\linewidth}{|L|L|}
21231
\code{TKT\_FLG\_MAY\_POSTDATE}
21239
\subsubsection{TKT\_FLG\_OK\_AS\_DELEGATE}
21240
\label{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:tkt-flg-ok-as-delegate-data}\label{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:tkt-flg-ok-as-delegate}\label{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE::doc}\index{TKT\_FLG\_OK\_AS\_DELEGATE (built-in variable)}
21242
\begin{fulllineitems}
21243
\phantomsection\label{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:TKT_FLG_OK_AS_DELEGATE}\pysigline{\bfcode{TKT\_FLG\_OK\_AS\_DELEGATE}}
21244
\end{fulllineitems}
21247
\begin{tabulary}{\linewidth}{|L|L|}
21250
\code{TKT\_FLG\_OK\_AS\_DELEGATE}
21258
\subsubsection{TKT\_FLG\_POSTDATED}
21259
\label{appdev/refs/macros/TKT_FLG_POSTDATED:tkt-flg-postdated}\label{appdev/refs/macros/TKT_FLG_POSTDATED::doc}\label{appdev/refs/macros/TKT_FLG_POSTDATED:tkt-flg-postdated-data}\index{TKT\_FLG\_POSTDATED (built-in variable)}
21261
\begin{fulllineitems}
21262
\phantomsection\label{appdev/refs/macros/TKT_FLG_POSTDATED:TKT_FLG_POSTDATED}\pysigline{\bfcode{TKT\_FLG\_POSTDATED}}
21263
\end{fulllineitems}
21266
\begin{tabulary}{\linewidth}{|L|L|}
21269
\code{TKT\_FLG\_POSTDATED}
21277
\subsubsection{TKT\_FLG\_PRE\_AUTH}
21278
\label{appdev/refs/macros/TKT_FLG_PRE_AUTH:tkt-flg-pre-auth-data}\label{appdev/refs/macros/TKT_FLG_PRE_AUTH::doc}\label{appdev/refs/macros/TKT_FLG_PRE_AUTH:tkt-flg-pre-auth}\index{TKT\_FLG\_PRE\_AUTH (built-in variable)}
21280
\begin{fulllineitems}
21281
\phantomsection\label{appdev/refs/macros/TKT_FLG_PRE_AUTH:TKT_FLG_PRE_AUTH}\pysigline{\bfcode{TKT\_FLG\_PRE\_AUTH}}
21282
\end{fulllineitems}
21285
\begin{tabulary}{\linewidth}{|L|L|}
21288
\code{TKT\_FLG\_PRE\_AUTH}
21296
\subsubsection{TKT\_FLG\_PROXIABLE}
21297
\label{appdev/refs/macros/TKT_FLG_PROXIABLE:tkt-flg-proxiable}\label{appdev/refs/macros/TKT_FLG_PROXIABLE:tkt-flg-proxiable-data}\label{appdev/refs/macros/TKT_FLG_PROXIABLE::doc}\index{TKT\_FLG\_PROXIABLE (built-in variable)}
21299
\begin{fulllineitems}
21300
\phantomsection\label{appdev/refs/macros/TKT_FLG_PROXIABLE:TKT_FLG_PROXIABLE}\pysigline{\bfcode{TKT\_FLG\_PROXIABLE}}
21301
\end{fulllineitems}
21304
\begin{tabulary}{\linewidth}{|L|L|}
21307
\code{TKT\_FLG\_PROXIABLE}
21315
\subsubsection{TKT\_FLG\_PROXY}
21316
\label{appdev/refs/macros/TKT_FLG_PROXY::doc}\label{appdev/refs/macros/TKT_FLG_PROXY:tkt-flg-proxy}\label{appdev/refs/macros/TKT_FLG_PROXY:tkt-flg-proxy-data}\index{TKT\_FLG\_PROXY (built-in variable)}
21318
\begin{fulllineitems}
21319
\phantomsection\label{appdev/refs/macros/TKT_FLG_PROXY:TKT_FLG_PROXY}\pysigline{\bfcode{TKT\_FLG\_PROXY}}
21320
\end{fulllineitems}
21323
\begin{tabulary}{\linewidth}{|L|L|}
21326
\code{TKT\_FLG\_PROXY}
21334
\subsubsection{TKT\_FLG\_RENEWABLE}
21335
\label{appdev/refs/macros/TKT_FLG_RENEWABLE::doc}\label{appdev/refs/macros/TKT_FLG_RENEWABLE:tkt-flg-renewable}\label{appdev/refs/macros/TKT_FLG_RENEWABLE:tkt-flg-renewable-data}\index{TKT\_FLG\_RENEWABLE (built-in variable)}
21337
\begin{fulllineitems}
21338
\phantomsection\label{appdev/refs/macros/TKT_FLG_RENEWABLE:TKT_FLG_RENEWABLE}\pysigline{\bfcode{TKT\_FLG\_RENEWABLE}}
21339
\end{fulllineitems}
21342
\begin{tabulary}{\linewidth}{|L|L|}
21345
\code{TKT\_FLG\_RENEWABLE}
21353
\subsubsection{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}
21354
\label{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED::doc}\label{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:tkt-flg-transit-policy-checked}\label{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:tkt-flg-transit-policy-checked-data}\index{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED (built-in variable)}
21356
\begin{fulllineitems}
21357
\phantomsection\label{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:TKT_FLG_TRANSIT_POLICY_CHECKED}\pysigline{\bfcode{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}}
21358
\end{fulllineitems}
21361
\begin{tabulary}{\linewidth}{|L|L|}
21364
\code{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}
21372
\subsubsection{VALID\_INT\_BITS}
21373
\label{appdev/refs/macros/VALID_INT_BITS:valid-int-bits}\label{appdev/refs/macros/VALID_INT_BITS:valid-int-bits-data}\label{appdev/refs/macros/VALID_INT_BITS::doc}\index{VALID\_INT\_BITS (built-in variable)}
21375
\begin{fulllineitems}
21376
\phantomsection\label{appdev/refs/macros/VALID_INT_BITS:VALID_INT_BITS}\pysigline{\bfcode{VALID\_INT\_BITS}}
21377
\end{fulllineitems}
21380
\begin{tabulary}{\linewidth}{|L|L|}
21383
\code{VALID\_INT\_BITS}
21391
\subsubsection{VALID\_UINT\_BITS}
21392
\label{appdev/refs/macros/VALID_UINT_BITS:valid-uint-bits}\label{appdev/refs/macros/VALID_UINT_BITS::doc}\label{appdev/refs/macros/VALID_UINT_BITS:valid-uint-bits-data}\index{VALID\_UINT\_BITS (built-in variable)}
21394
\begin{fulllineitems}
21395
\phantomsection\label{appdev/refs/macros/VALID_UINT_BITS:VALID_UINT_BITS}\pysigline{\bfcode{VALID\_UINT\_BITS}}
21396
\end{fulllineitems}
21399
\begin{tabulary}{\linewidth}{|L|L|}
21402
\code{VALID\_UINT\_BITS}
21410
\subsubsection{krb5\_const}
21411
\label{appdev/refs/macros/krb5_const:krb5-const}\label{appdev/refs/macros/krb5_const:krb5-const-data}\label{appdev/refs/macros/krb5_const::doc}\index{krb5\_const (built-in variable)}
21413
\begin{fulllineitems}
21414
\phantomsection\label{appdev/refs/macros/krb5_const:krb5_const}\pysigline{\bfcode{krb5\_const}}
21415
\end{fulllineitems}
21418
\begin{tabulary}{\linewidth}{|L|L|}
21429
\subsubsection{krb5\_princ\_component}
21430
\label{appdev/refs/macros/krb5_princ_component::doc}\label{appdev/refs/macros/krb5_princ_component:krb5-princ-component-data}\label{appdev/refs/macros/krb5_princ_component:krb5-princ-component}\index{krb5\_princ\_component (built-in variable)}
21432
\begin{fulllineitems}
21433
\phantomsection\label{appdev/refs/macros/krb5_princ_component:krb5_princ_component}\pysigline{\bfcode{krb5\_princ\_component}}
21434
\end{fulllineitems}
21437
\begin{tabulary}{\linewidth}{|L|L|}
21440
\code{krb5\_princ\_component (context, princ, i)}
21442
\code{(((i) \textless{} krb5\_princ\_size(context, princ)) ? (princ)-\textgreater{}data + (i) : NULL)}
21448
\subsubsection{krb5\_princ\_name}
21449
\label{appdev/refs/macros/krb5_princ_name:krb5-princ-name-data}\label{appdev/refs/macros/krb5_princ_name:krb5-princ-name}\label{appdev/refs/macros/krb5_princ_name::doc}\index{krb5\_princ\_name (built-in variable)}
21451
\begin{fulllineitems}
21452
\phantomsection\label{appdev/refs/macros/krb5_princ_name:krb5_princ_name}\pysigline{\bfcode{krb5\_princ\_name}}
21453
\end{fulllineitems}
21456
\begin{tabulary}{\linewidth}{|L|L|}
21459
\code{krb5\_princ\_name (context, princ)}
21461
\code{(princ)-\textgreater{}data}
21467
\subsubsection{krb5\_princ\_realm}
21468
\label{appdev/refs/macros/krb5_princ_realm::doc}\label{appdev/refs/macros/krb5_princ_realm:krb5-princ-realm-data}\label{appdev/refs/macros/krb5_princ_realm:krb5-princ-realm}\index{krb5\_princ\_realm (built-in variable)}
21470
\begin{fulllineitems}
21471
\phantomsection\label{appdev/refs/macros/krb5_princ_realm:krb5_princ_realm}\pysigline{\bfcode{krb5\_princ\_realm}}
21472
\end{fulllineitems}
21475
\begin{tabulary}{\linewidth}{|L|L|}
21478
\code{krb5\_princ\_realm (context, princ)}
21480
\code{(\&(princ)-\textgreater{}realm)}
21486
\subsubsection{krb5\_princ\_set\_realm}
21487
\label{appdev/refs/macros/krb5_princ_set_realm:krb5-princ-set-realm-data}\label{appdev/refs/macros/krb5_princ_set_realm::doc}\label{appdev/refs/macros/krb5_princ_set_realm:krb5-princ-set-realm}\index{krb5\_princ\_set\_realm (built-in variable)}
21489
\begin{fulllineitems}
21490
\phantomsection\label{appdev/refs/macros/krb5_princ_set_realm:krb5_princ_set_realm}\pysigline{\bfcode{krb5\_princ\_set\_realm}}
21491
\end{fulllineitems}
21494
\begin{tabulary}{\linewidth}{|L|L|}
21497
\code{krb5\_princ\_set\_realm (context, princ, value)}
21499
\code{((princ)-\textgreater{}realm = *(value))}
21505
\subsubsection{krb5\_princ\_set\_realm\_data}
21506
\label{appdev/refs/macros/krb5_princ_set_realm_data:krb5-princ-set-realm-data-data}\label{appdev/refs/macros/krb5_princ_set_realm_data::doc}\label{appdev/refs/macros/krb5_princ_set_realm_data:krb5-princ-set-realm-data}\index{krb5\_princ\_set\_realm\_data (built-in variable)}
21508
\begin{fulllineitems}
21509
\phantomsection\label{appdev/refs/macros/krb5_princ_set_realm_data:krb5_princ_set_realm_data}\pysigline{\bfcode{krb5\_princ\_set\_realm\_data}}
21510
\end{fulllineitems}
21513
\begin{tabulary}{\linewidth}{|L|L|}
21516
\code{krb5\_princ\_set\_realm\_data (context, princ, value)}
21518
\code{(princ)-\textgreater{}realm.data = (value)}
21524
\subsubsection{krb5\_princ\_set\_realm\_length}
21525
\label{appdev/refs/macros/krb5_princ_set_realm_length:krb5-princ-set-realm-length-data}\label{appdev/refs/macros/krb5_princ_set_realm_length::doc}\label{appdev/refs/macros/krb5_princ_set_realm_length:krb5-princ-set-realm-length}\index{krb5\_princ\_set\_realm\_length (built-in variable)}
21527
\begin{fulllineitems}
21528
\phantomsection\label{appdev/refs/macros/krb5_princ_set_realm_length:krb5_princ_set_realm_length}\pysigline{\bfcode{krb5\_princ\_set\_realm\_length}}
21529
\end{fulllineitems}
21532
\begin{tabulary}{\linewidth}{|L|L|}
21535
\code{krb5\_princ\_set\_realm\_length (context, princ, value)}
21537
\code{(princ)-\textgreater{}realm.length = (value)}
21543
\subsubsection{krb5\_princ\_size}
21544
\label{appdev/refs/macros/krb5_princ_size:krb5-princ-size-data}\label{appdev/refs/macros/krb5_princ_size::doc}\label{appdev/refs/macros/krb5_princ_size:krb5-princ-size}\index{krb5\_princ\_size (built-in variable)}
21546
\begin{fulllineitems}
21547
\phantomsection\label{appdev/refs/macros/krb5_princ_size:krb5_princ_size}\pysigline{\bfcode{krb5\_princ\_size}}
21548
\end{fulllineitems}
21551
\begin{tabulary}{\linewidth}{|L|L|}
21554
\code{krb5\_princ\_size (context, princ)}
21556
\code{(princ)-\textgreater{}length}
21562
\subsubsection{krb5\_princ\_type}
21563
\label{appdev/refs/macros/krb5_princ_type:krb5-princ-type}\label{appdev/refs/macros/krb5_princ_type:krb5-princ-type-data}\label{appdev/refs/macros/krb5_princ_type::doc}\index{krb5\_princ\_type (built-in variable)}
21565
\begin{fulllineitems}
21566
\phantomsection\label{appdev/refs/macros/krb5_princ_type:krb5_princ_type}\pysigline{\bfcode{krb5\_princ\_type}}
21567
\end{fulllineitems}
21570
\begin{tabulary}{\linewidth}{|L|L|}
21573
\code{krb5\_princ\_type (context, princ)}
21575
\code{(princ)-\textgreater{}type}
21581
\subsubsection{krb5\_roundup}
21582
\label{appdev/refs/macros/krb5_roundup:krb5-roundup-data}\label{appdev/refs/macros/krb5_roundup:krb5-roundup}\label{appdev/refs/macros/krb5_roundup::doc}\index{krb5\_roundup (built-in variable)}
21584
\begin{fulllineitems}
21585
\phantomsection\label{appdev/refs/macros/krb5_roundup:krb5_roundup}\pysigline{\bfcode{krb5\_roundup}}
21586
\end{fulllineitems}
21589
\begin{tabulary}{\linewidth}{|L|L|}
21592
\code{krb5\_roundup (x, y)}
21594
\code{((((x) + (y) - 1)/(y))*(y))}
21600
\subsubsection{krb5\_x}
21601
\label{appdev/refs/macros/krb5_x::doc}\label{appdev/refs/macros/krb5_x:krb5-x}\label{appdev/refs/macros/krb5_x:krb5-x-data}\index{krb5\_x (built-in variable)}
21603
\begin{fulllineitems}
21604
\phantomsection\label{appdev/refs/macros/krb5_x:krb5_x}\pysigline{\bfcode{krb5\_x}}
21605
\end{fulllineitems}
21608
\begin{tabulary}{\linewidth}{|L|L|}
21611
\code{krb5\_x (ptr, args)}
21613
\code{((ptr)?((*(ptr)) args):(abort(),1))}
21619
\subsubsection{krb5\_xc}
21620
\label{appdev/refs/macros/krb5_xc::doc}\label{appdev/refs/macros/krb5_xc:krb5-xc}\label{appdev/refs/macros/krb5_xc:krb5-xc-data}\index{krb5\_xc (built-in variable)}
21622
\begin{fulllineitems}
21623
\phantomsection\label{appdev/refs/macros/krb5_xc:krb5_xc}\pysigline{\bfcode{krb5\_xc}}
21624
\end{fulllineitems}
21627
\begin{tabulary}{\linewidth}{|L|L|}
21630
\code{krb5\_xc (ptr, args)}
21632
\code{((ptr)?((*(ptr)) args):(abort(),(char*)0))}
21638
\subsection{Deprecated macros}
21639
\label{appdev/refs/macros/index:deprecated-macros}
21641
\subsubsection{krb524\_convert\_creds\_kdc}
21642
\label{appdev/refs/macros/krb524_convert_creds_kdc:krb524-convert-creds-kdc-data}\label{appdev/refs/macros/krb524_convert_creds_kdc:krb524-convert-creds-kdc}\label{appdev/refs/macros/krb524_convert_creds_kdc::doc}\index{krb524\_convert\_creds\_kdc (built-in variable)}
21644
\begin{fulllineitems}
21645
\phantomsection\label{appdev/refs/macros/krb524_convert_creds_kdc:krb524_convert_creds_kdc}\pysigline{\bfcode{krb524\_convert\_creds\_kdc}}
21646
\end{fulllineitems}
21649
\begin{tabulary}{\linewidth}{|L|L|}
21652
\code{krb524\_convert\_creds\_kdc}
21654
\code{krb5\_524\_convert\_creds}
21660
\subsubsection{krb524\_init\_ets}
21661
\label{appdev/refs/macros/krb524_init_ets:krb524-init-ets-data}\label{appdev/refs/macros/krb524_init_ets::doc}\label{appdev/refs/macros/krb524_init_ets:krb524-init-ets}\index{krb524\_init\_ets (built-in variable)}
21663
\begin{fulllineitems}
21664
\phantomsection\label{appdev/refs/macros/krb524_init_ets:krb524_init_ets}\pysigline{\bfcode{krb524\_init\_ets}}
21665
\end{fulllineitems}
21668
\begin{tabulary}{\linewidth}{|L|L|}
21671
\code{krb524\_init\_ets (x)}
21680
\renewcommand{\indexname}{Index}