~ubuntu-branches/ubuntu/trusty/krb5/trusty

« back to all changes in this revision

Viewing changes to doc/pdf/appdev.tex

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-11-10 02:20:12 UTC
  • mfrom: (53.1.3 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20131110022012-b8ojkqhcxos55kln
Tags: 1.11.3+dfsg-3ubuntu2
Add alternate dependency on libverto-libevent1 as that's the package
ABI name in ubuntu.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
% Generated by Sphinx.
 
2
\def\sphinxdocclass{report}
 
3
\documentclass[letterpaper,10pt,english]{sphinxmanual}
 
4
\usepackage[utf8]{inputenc}
 
5
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
 
6
\usepackage[T1]{fontenc}
 
7
\usepackage{babel}
 
8
\usepackage{times}
 
9
\usepackage[Bjarne]{fncychap}
 
10
\usepackage{longtable}
 
11
\usepackage{sphinx}
 
12
\usepackage{multirow}
 
13
 
 
14
 
 
15
\title{Kerberos Application Developer Guide}
 
16
\date{ }
 
17
\release{1.11.3}
 
18
\author{MIT}
 
19
\newcommand{\sphinxlogo}{}
 
20
\renewcommand{\releasename}{Release}
 
21
\makeindex
 
22
 
 
23
\makeatletter
 
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}}
 
33
 
 
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}}}
 
94
 
 
95
\def\PYGZbs{\char`\\}
 
96
\def\PYGZus{\char`\_}
 
97
\def\PYGZob{\char`\{}
 
98
\def\PYGZcb{\char`\}}
 
99
\def\PYGZca{\char`\^}
 
100
\def\PYGZsh{\char`\#}
 
101
\def\PYGZpc{\char`\%}
 
102
\def\PYGZdl{\char`\$}
 
103
\def\PYGZti{\char`\~}
 
104
% for compatibility with earlier versions
 
105
\def\PYGZat{@}
 
106
\def\PYGZlb{[}
 
107
\def\PYGZrb{]}
 
108
\makeatother
 
109
 
 
110
\begin{document}
 
111
 
 
112
\maketitle
 
113
\tableofcontents
 
114
\phantomsection\label{appdev/index::doc}
 
115
 
 
116
 
 
117
 
 
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.
 
125
 
 
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.
 
130
 
 
131
 
 
132
\section{Name types}
 
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:
 
137
\begin{itemize}
 
138
\item {} 
 
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.
 
143
 
 
144
\item {} 
 
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.
 
148
 
 
149
\item {} 
 
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.
 
156
 
 
157
\item {} 
 
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).
 
162
 
 
163
\item {} 
 
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
 
167
principal name.
 
168
 
 
169
\item {} 
 
170
\textbf{GSS\_C\_NT\_STRING\_UID\_NAME}: As above, but the value is a decimal
 
171
string representation of the uid.
 
172
 
 
173
\item {} 
 
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.
 
176
 
 
177
\end{itemize}
 
178
 
 
179
 
 
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.
 
190
 
 
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
 
197
\emph{libdefaults}.
 
198
 
 
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.
 
206
 
 
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.
 
211
 
 
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.
 
222
 
 
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
 
227
contains tickets.
 
228
 
 
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.
 
232
 
 
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.
 
237
 
 
238
 
 
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.
 
246
 
 
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
 
252
contrary.
 
253
 
 
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.
 
259
 
 
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.
 
269
 
 
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}.
 
275
\end{notice}
 
276
 
 
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.
 
281
\end{notice}
 
282
 
 
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().
 
289
\end{notice}
 
290
 
 
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.
 
294
 
 
295
 
 
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{}}):
 
300
 
 
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);
 
305
 
 
306
OM\_uint32 gss\_import\_cred(OM\_uint32 *minor\_status,
 
307
                          gss\_buffer\_t token,
 
308
                          gss\_cred\_id\_t *cred\_handle);
 
309
\end{Verbatim}
 
310
 
 
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.
 
319
 
 
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.
 
325
 
 
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
 
335
the originator.
 
336
 
 
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.
 
343
 
 
344
 
 
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|}
 
348
\hline
 
349
 
 
350
{\hyperref[appdev/refs/api/krb5_auth_con_getaddrs:krb5_auth_con_getaddrs]{\code{krb5\_auth\_con\_getaddrs()}}}
 
351
 & 
 
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.
 
357
\\\hline
 
358
 
 
359
{\hyperref[appdev/refs/api/krb5_auth_con_setaddrs:krb5_auth_con_setaddrs]{\code{krb5\_auth\_con\_setaddrs()}}}
 
360
 & 
 
361
H5l: If either address is NULL, the previous
 
362
address remains in place
 
363
\\\hline
 
364
 
 
365
{\hyperref[appdev/refs/api/krb5_auth_con_setports:krb5_auth_con_setports]{\code{krb5\_auth\_con\_setports()}}}
 
366
 & 
 
367
H5l: Not implemented as of version 1.3.3
 
368
\\\hline
 
369
 
 
370
{\hyperref[appdev/refs/api/krb5_auth_con_setrecvsubkey:krb5_auth_con_setrecvsubkey]{\code{krb5\_auth\_con\_setrecvsubkey()}}}
 
371
 & 
 
372
H5l: If either port is NULL, the previous
 
373
port remains in place
 
374
\\\hline
 
375
 
 
376
{\hyperref[appdev/refs/api/krb5_auth_con_setsendsubkey:krb5_auth_con_setsendsubkey]{\code{krb5\_auth\_con\_setsendsubkey()}}}
 
377
 & 
 
378
H5l: Not implemented as of version 1.3.3
 
379
\\\hline
 
380
 
 
381
{\hyperref[appdev/refs/api/krb5_cc_set_config:krb5_cc_set_config]{\code{krb5\_cc\_set\_config()}}}
 
382
 & 
 
383
MIT: Before version 1.10 it was assumed that
 
384
the last argument \emph{data} is ALWAYS non-zero.
 
385
\\\hline
 
386
 
 
387
{\hyperref[appdev/refs/api/krb5_cccol_last_change_time:krb5_cccol_last_change_time]{\code{krb5\_cccol\_last\_change\_time()}}}
 
388
 & 
 
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
 
393
\\\hline
 
394
 
 
395
{\hyperref[appdev/refs/api/krb5_set_default_realm:krb5_set_default_realm]{\code{krb5\_set\_default\_realm()}}}
 
396
 & 
 
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
 
402
\\\hline
 
403
\end{tabulary}
 
404
 
 
405
 
 
406
 
 
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.
 
413
 
 
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.
 
423
 
 
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.
 
429
 
 
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
 
435
password:
 
436
\begin{quote}
 
437
 
 
438
\begin{Verbatim}[commandchars=\\\{\}]
 
439
krb5\_error\_code ret;
 
440
krb5\_creds creds;
 
441
krb5\_principal client\_princ = NULL;
 
442
 
 
443
memset(\&creds, 0, sizeof(creds));
 
444
ret = krb5\_parse\_name(context, princname, \&client\_princ);
 
445
if (ret)
 
446
    goto cleanup;
 
447
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
 
448
                                   password, NULL, NULL, 0, NULL, NULL);
 
449
if (ret)
 
450
    goto cleanup;
 
451
ret = krb5\_verify\_init\_creds(context, \&creds, NULL, NULL, NULL, NULL);
 
452
 
 
453
cleanup:
 
454
krb5\_free\_principal(context, client\_princ);
 
455
krb5\_free\_cred\_contents(context, \&creds);
 
456
return ret;
 
457
\end{Verbatim}
 
458
\end{quote}
 
459
 
 
460
 
 
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
 
467
example:
 
468
\begin{quote}
 
469
 
 
470
\begin{Verbatim}[commandchars=\\\{\}]
 
471
krb5\_error\_code ret;
 
472
krb5\_get\_init\_creds\_opt *opt = NULL;
 
473
krb5\_creds creds;
 
474
 
 
475
memset(\&creds, 0, sizeof(creds));
 
476
ret = krb5\_get\_init\_creds\_opt\_alloc(context, \&opt);
 
477
if (ret)
 
478
    goto cleanup;
 
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);
 
482
if (ret)
 
483
    goto cleanup;
 
484
 
 
485
cleanup:
 
486
krb5\_get\_init\_creds\_opt\_free(context, opt);
 
487
krb5\_free\_cred\_contents(context, \&creds);
 
488
return ret;
 
489
\end{Verbatim}
 
490
\end{quote}
 
491
 
 
492
 
 
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
 
500
this time.
 
501
 
 
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:
 
510
\begin{quote}
 
511
 
 
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);
 
516
if (ret)
 
517
    goto cleanup;
 
518
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
 
519
                                   password, NULL, NULL, 0, NULL, opt);
 
520
if (ret)
 
521
    goto cleanup;
 
522
\end{Verbatim}
 
523
\end{quote}
 
524
 
 
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}.
 
530
 
 
531
 
 
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
 
541
has expired.
 
542
 
 
543
 
 
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.
 
558
 
 
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.
 
564
 
 
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
 
568
example:
 
569
\begin{quote}
 
570
 
 
571
\begin{Verbatim}[commandchars=\\\{\}]
 
572
ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
 
573
                                   NULL, krb5\_prompter\_posix, NULL, 0,
 
574
                                   NULL, NULL);
 
575
\end{Verbatim}
 
576
\end{quote}
 
577
 
 
578
 
 
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.
 
587
 
 
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.
 
595
 
 
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.
 
602
 
 
603
 
 
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.
 
609
 
 
610
 
 
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.
 
618
 
 
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.
 
624
 
 
625
 
 
626
\subsubsection{Example}
 
627
\label{appdev/init_creds:example}
 
628
Here is an example of using a responder callback:
 
629
\begin{quote}
 
630
 
 
631
\begin{Verbatim}[commandchars=\\\{\}]
 
632
static krb5\_error\_code
 
633
my\_responder(krb5\_context context, void *data,
 
634
             krb5\_responder\_context rctx)
 
635
\PYGZob{}
 
636
    krb5\_error\_code ret;
 
637
    krb5\_responder\_otp\_challenge *chl;
 
638
 
 
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,
 
643
                                        "open sesame");
 
644
        if (ret)
 
645
            return ret;
 
646
    \PYGZcb{}
 
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",
 
650
                                            NULL);
 
651
        krb5\_responder\_otp\_challenge\_free(context, rctx, chl);
 
652
        if (ret)
 
653
            return ret;
 
654
    \PYGZcb{}
 
655
    return 0;
 
656
\PYGZcb{}
 
657
 
 
658
static krb5\_error\_code
 
659
get\_creds(krb5\_context context, krb5\_principal client\_princ)
 
660
\PYGZob{}
 
661
    krb5\_error\_code ret;
 
662
    krb5\_get\_init\_creds\_opt *opt = NULL;
 
663
    krb5\_creds creds;
 
664
 
 
665
    memset(\&creds, 0, sizeof(creds));
 
666
    ret = krb5\_get\_init\_creds\_opt\_alloc(context, \&opt);
 
667
    if (ret)
 
668
        goto cleanup;
 
669
    ret = krb5\_get\_init\_creds\_opt\_set\_responder(context, opt, my\_responder,
 
670
                                                NULL);
 
671
    if (ret)
 
672
        goto cleanup;
 
673
    ret = krb5\_get\_init\_creds\_password(context, \&creds, client\_princ,
 
674
                                       NULL, NULL, NULL, 0, NULL, opt);
 
675
 
 
676
cleanup:
 
677
    krb5\_get\_init\_creds\_opt\_free(context, opt);
 
678
    krb5\_free\_cred\_contents(context, \&creds);
 
679
    return ret;
 
680
\PYGZcb{}
 
681
\end{Verbatim}
 
682
\end{quote}
 
683
 
 
684
 
 
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:
 
693
\begin{quote}
 
694
 
 
695
\begin{Verbatim}[commandchars=\\\{\}]
 
696
krb5\_verify\_init\_creds\_opt vopt;
 
697
 
 
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);
 
701
\end{Verbatim}
 
702
\end{quote}
 
703
 
 
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
 
710
setting.)
 
711
 
 
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.
 
717
 
 
718
 
 
719
\chapter{Principal manipulation and parsing}
 
720
\label{appdev/princ_handle:principal-manipulation-and-parsing}\label{appdev/princ_handle::doc}
 
721
Kerberos principal structure
 
722
 
 
723
{\hyperref[appdev/refs/types/krb5_principal_data:krb5_principal_data]{\code{krb5\_principal\_data}}}
 
724
 
 
725
{\hyperref[appdev/refs/types/krb5_principal:krb5_principal]{\code{krb5\_principal}}}
 
726
 
 
727
Create and free principal
 
728
 
 
729
{\hyperref[appdev/refs/api/krb5_build_principal:krb5_build_principal]{\code{krb5\_build\_principal()}}}
 
730
 
 
731
{\hyperref[appdev/refs/api/krb5_build_principal_alloc_va:krb5_build_principal_alloc_va]{\code{krb5\_build\_principal\_alloc\_va()}}}
 
732
 
 
733
{\hyperref[appdev/refs/api/krb5_build_principal_ext:krb5_build_principal_ext]{\code{krb5\_build\_principal\_ext()}}}
 
734
 
 
735
{\hyperref[appdev/refs/api/krb5_copy_principal:krb5_copy_principal]{\code{krb5\_copy\_principal()}}}
 
736
 
 
737
{\hyperref[appdev/refs/api/krb5_free_principal:krb5_free_principal]{\code{krb5\_free\_principal()}}}
 
738
 
 
739
{\hyperref[appdev/refs/api/krb5_cc_get_principal:krb5_cc_get_principal]{\code{krb5\_cc\_get\_principal()}}}
 
740
 
 
741
Comparing
 
742
 
 
743
{\hyperref[appdev/refs/api/krb5_principal_compare:krb5_principal_compare]{\code{krb5\_principal\_compare()}}}
 
744
 
 
745
{\hyperref[appdev/refs/api/krb5_principal_compare_flags:krb5_principal_compare_flags]{\code{krb5\_principal\_compare\_flags()}}}
 
746
 
 
747
{\hyperref[appdev/refs/api/krb5_principal_compare_any_realm:krb5_principal_compare_any_realm]{\code{krb5\_principal\_compare\_any\_realm()}}}
 
748
 
 
749
{\hyperref[appdev/refs/api/krb5_sname_match:krb5_sname_match]{\code{krb5\_sname\_match()}}}
 
750
 
 
751
{\hyperref[appdev/refs/api/krb5_sname_to_principal:krb5_sname_to_principal]{\code{krb5\_sname\_to\_principal()}}}
 
752
 
 
753
Parsing:
 
754
 
 
755
{\hyperref[appdev/refs/api/krb5_parse_name:krb5_parse_name]{\code{krb5\_parse\_name()}}}
 
756
 
 
757
{\hyperref[appdev/refs/api/krb5_parse_name_flags:krb5_parse_name_flags]{\code{krb5\_parse\_name\_flags()}}}
 
758
 
 
759
{\hyperref[appdev/refs/api/krb5_unparse_name:krb5_unparse_name]{\code{krb5\_unparse\_name()}}}
 
760
 
 
761
{\hyperref[appdev/refs/api/krb5_unparse_name_flags:krb5_unparse_name_flags]{\code{krb5\_unparse\_name\_flags()}}}
 
762
 
 
763
Utilities:
 
764
 
 
765
{\hyperref[appdev/refs/api/krb5_is_config_principal:krb5_is_config_principal]{\code{krb5\_is\_config\_principal()}}}
 
766
 
 
767
{\hyperref[appdev/refs/api/krb5_kuserok:krb5_kuserok]{\code{krb5\_kuserok()}}}
 
768
 
 
769
{\hyperref[appdev/refs/api/krb5_set_password:krb5_set_password]{\code{krb5\_set\_password()}}}
 
770
 
 
771
{\hyperref[appdev/refs/api/krb5_set_password_using_ccache:krb5_set_password_using_ccache]{\code{krb5\_set\_password\_using\_ccache()}}}
 
772
 
 
773
{\hyperref[appdev/refs/api/krb5_set_principal_realm:krb5_set_principal_realm]{\code{krb5\_set\_principal\_realm()}}}
 
774
 
 
775
{\hyperref[appdev/refs/api/krb5_realm_compare:krb5_realm_compare]{\code{krb5\_realm\_compare()}}}
 
776
 
 
777
 
 
778
\chapter{Complete reference - API and datatypes}
 
779
\label{appdev/refs/index:complete-reference-api-and-datatypes}\label{appdev/refs/index::doc}
 
780
 
 
781
\section{krb5 API}
 
782
\label{appdev/refs/api/index:krb5-api}\label{appdev/refs/api/index::doc}
 
783
 
 
784
\subsection{Frequently used public interfaces}
 
785
\label{appdev/refs/api/index:frequently-used-public-interfaces}
 
786
 
 
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)}
 
789
 
 
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}, ...}{}
 
792
\end{fulllineitems}
 
793
 
 
794
\begin{quote}\begin{description}
 
795
\item[{param}] \leavevmode
 
796
\textbf{{[}in{]}} \textbf{context} - Library context
 
797
 
 
798
\textbf{{[}out{]}} \textbf{princ} - Principal name
 
799
 
 
800
\textbf{{[}in{]}} \textbf{rlen} - Realm name length
 
801
 
 
802
\textbf{{[}in{]}} \textbf{realm} - Realm name
 
803
 
 
804
\end{description}\end{quote}
 
805
\begin{quote}\begin{description}
 
806
\item[{retval}] \leavevmode\begin{itemize}
 
807
\item {} 
 
808
0   Success
 
809
 
 
810
\end{itemize}
 
811
 
 
812
\item[{return}] \leavevmode\begin{itemize}
 
813
\item {} 
 
814
Kerberos error codes
 
815
 
 
816
\end{itemize}
 
817
 
 
818
\end{description}\end{quote}
 
819
 
 
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.
 
821
 
 
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.
 
824
\end{notice}
 
825
 
 
826
 
 
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)}
 
829
 
 
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}}{}
 
832
\end{fulllineitems}
 
833
 
 
834
\begin{quote}\begin{description}
 
835
\item[{param}] \leavevmode
 
836
\textbf{{[}in{]}} \textbf{context} - Library context
 
837
 
 
838
\textbf{{[}out{]}} \textbf{princ} - Principal structure
 
839
 
 
840
\textbf{{[}in{]}} \textbf{rlen} - Realm name length
 
841
 
 
842
\textbf{{[}in{]}} \textbf{realm} - Realm name
 
843
 
 
844
\textbf{{[}in{]}} \textbf{ap} - List of char * components, ending with NULL
 
845
 
 
846
\end{description}\end{quote}
 
847
\begin{quote}\begin{description}
 
848
\item[{retval}] \leavevmode\begin{itemize}
 
849
\item {} 
 
850
0   Success
 
851
 
 
852
\end{itemize}
 
853
 
 
854
\item[{return}] \leavevmode\begin{itemize}
 
855
\item {} 
 
856
Kerberos error codes
 
857
 
 
858
\end{itemize}
 
859
 
 
860
\end{description}\end{quote}
 
861
 
 
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.
 
863
 
 
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.
 
865
 
 
866
 
 
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)}
 
869
 
 
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}, ...}{}
 
872
\end{fulllineitems}
 
873
 
 
874
\begin{quote}\begin{description}
 
875
\item[{param}] \leavevmode
 
876
\textbf{{[}in{]}} \textbf{context} - Library context
 
877
 
 
878
\textbf{{[}out{]}} \textbf{princ} - Principal name
 
879
 
 
880
\textbf{{[}in{]}} \textbf{rlen} - Realm name length
 
881
 
 
882
\textbf{{[}in{]}} \textbf{realm} - Realm name
 
883
 
 
884
\end{description}\end{quote}
 
885
\begin{quote}\begin{description}
 
886
\item[{retval}] \leavevmode\begin{itemize}
 
887
\item {} 
 
888
0   Success
 
889
 
 
890
\end{itemize}
 
891
 
 
892
\item[{return}] \leavevmode\begin{itemize}
 
893
\item {} 
 
894
Kerberos error codes
 
895
 
 
896
\end{itemize}
 
897
 
 
898
\end{description}\end{quote}
 
899
 
 
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.
 
901
 
 
902
 
 
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)}
 
905
 
 
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}}{}
 
908
\end{fulllineitems}
 
909
 
 
910
\begin{quote}\begin{description}
 
911
\item[{param}] \leavevmode
 
912
\textbf{{[}in{]}} \textbf{context} - Library context
 
913
 
 
914
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
915
 
 
916
\end{description}\end{quote}
 
917
\begin{quote}\begin{description}
 
918
\item[{retval}] \leavevmode\begin{itemize}
 
919
\item {} 
 
920
0   Success
 
921
 
 
922
\end{itemize}
 
923
 
 
924
\item[{return}] \leavevmode\begin{itemize}
 
925
\item {} 
 
926
Kerberos error codes
 
927
 
 
928
\end{itemize}
 
929
 
 
930
\end{description}\end{quote}
 
931
 
 
932
This function closes a credential cache handle \emph{cache} without affecting the contents of the cache.
 
933
 
 
934
 
 
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)}
 
937
 
 
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}}{}
 
940
\end{fulllineitems}
 
941
 
 
942
\begin{quote}\begin{description}
 
943
\item[{param}] \leavevmode
 
944
\textbf{{[}inout{]}} \textbf{context} - Library context
 
945
 
 
946
\textbf{{[}out{]}} \textbf{ccache} - Pointer to credential cache name
 
947
 
 
948
\end{description}\end{quote}
 
949
\begin{quote}\begin{description}
 
950
\item[{retval}] \leavevmode\begin{itemize}
 
951
\item {} 
 
952
0   Success
 
953
 
 
954
\item {} 
 
955
KV5M\_CONTEXT   Bad magic number for \_krb5\_context structure
 
956
 
 
957
\item {} 
 
958
KRB5\_FCC\_INTERNAL   The name of the default credential cache cannot be obtained
 
959
 
 
960
\end{itemize}
 
961
 
 
962
\item[{return}] \leavevmode\begin{itemize}
 
963
\item {} 
 
964
Kerberos error codes
 
965
 
 
966
\end{itemize}
 
967
 
 
968
\end{description}\end{quote}
 
969
 
 
970
 
 
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)}
 
973
 
 
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}}{}
 
976
\end{fulllineitems}
 
977
 
 
978
\begin{quote}\begin{description}
 
979
\item[{param}] \leavevmode
 
980
\textbf{{[}in{]}} \textbf{context} - Library context
 
981
 
 
982
\end{description}\end{quote}
 
983
\begin{quote}\begin{description}
 
984
\item[{return}] \leavevmode\begin{itemize}
 
985
\item {} 
 
986
Name of default credential cache for the current user.
 
987
 
 
988
\end{itemize}
 
989
 
 
990
\end{description}\end{quote}
 
991
 
 
992
Try the environment variable \emph{KRB5CCNAME} first then, if it is not set, fall back on the default ccache name for the OS.
 
993
 
 
994
 
 
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)}
 
997
 
 
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}}{}
 
1000
\end{fulllineitems}
 
1001
 
 
1002
\begin{quote}\begin{description}
 
1003
\item[{param}] \leavevmode
 
1004
\textbf{{[}in{]}} \textbf{context} - Library context
 
1005
 
 
1006
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
1007
 
 
1008
\end{description}\end{quote}
 
1009
\begin{quote}\begin{description}
 
1010
\item[{retval}] \leavevmode\begin{itemize}
 
1011
\item {} 
 
1012
0   Success
 
1013
 
 
1014
\end{itemize}
 
1015
 
 
1016
\item[{return}] \leavevmode\begin{itemize}
 
1017
\item {} 
 
1018
Permission errors
 
1019
 
 
1020
\end{itemize}
 
1021
 
 
1022
\end{description}\end{quote}
 
1023
 
 
1024
This function destroys any existing contents of \emph{cache} and closes the handle to it.
 
1025
 
 
1026
 
 
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)}
 
1029
 
 
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}}{}
 
1032
\end{fulllineitems}
 
1033
 
 
1034
\begin{quote}\begin{description}
 
1035
\item[{param}] \leavevmode
 
1036
\textbf{{[}in{]}} \textbf{context} - Library context
 
1037
 
 
1038
\textbf{{[}in{]}} \textbf{in} - Credential cache handle to be duplicated
 
1039
 
 
1040
\textbf{{[}out{]}} \textbf{out} - Credential cache handle
 
1041
 
 
1042
\end{description}\end{quote}
 
1043
 
 
1044
Create a new handle referring to the same cache as \emph{in} . The new handle and \emph{in} can be closed independently.
 
1045
 
 
1046
 
 
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)}
 
1049
 
 
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}}{}
 
1052
\end{fulllineitems}
 
1053
 
 
1054
\begin{quote}\begin{description}
 
1055
\item[{param}] \leavevmode
 
1056
\textbf{{[}in{]}} \textbf{context} - Library context
 
1057
 
 
1058
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
1059
 
 
1060
\end{description}\end{quote}
 
1061
\begin{quote}\begin{description}
 
1062
\item[{return}] \leavevmode\begin{itemize}
 
1063
\item {} 
 
1064
On success - the name of the credential cache.
 
1065
 
 
1066
\end{itemize}
 
1067
 
 
1068
\end{description}\end{quote}
 
1069
 
 
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()}}} .
 
1072
\end{notice}
 
1073
 
 
1074
 
 
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)}
 
1077
 
 
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}}{}
 
1080
\end{fulllineitems}
 
1081
 
 
1082
\begin{quote}\begin{description}
 
1083
\item[{param}] \leavevmode
 
1084
\textbf{{[}in{]}} \textbf{context} - Library context
 
1085
 
 
1086
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
1087
 
 
1088
\textbf{{[}out{]}} \textbf{principal} - Primary principal
 
1089
 
 
1090
\end{description}\end{quote}
 
1091
\begin{quote}\begin{description}
 
1092
\item[{retval}] \leavevmode\begin{itemize}
 
1093
\item {} 
 
1094
0   Success
 
1095
 
 
1096
\end{itemize}
 
1097
 
 
1098
\item[{return}] \leavevmode\begin{itemize}
 
1099
\item {} 
 
1100
Kerberos error codes
 
1101
 
 
1102
\end{itemize}
 
1103
 
 
1104
\end{description}\end{quote}
 
1105
 
 
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()}}} .
 
1107
 
 
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.
 
1109
 
 
1110
 
 
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)}
 
1113
 
 
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}}{}
 
1116
\end{fulllineitems}
 
1117
 
 
1118
\begin{quote}\begin{description}
 
1119
\item[{param}] \leavevmode
 
1120
\textbf{{[}in{]}} \textbf{context} - Library context
 
1121
 
 
1122
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
1123
 
 
1124
\end{description}\end{quote}
 
1125
\begin{quote}\begin{description}
 
1126
\item[{return}] \leavevmode\begin{itemize}
 
1127
\item {} 
 
1128
The type of a credential cache as an alias that must not be modified or freed by the caller.
 
1129
 
 
1130
\end{itemize}
 
1131
 
 
1132
\end{description}\end{quote}
 
1133
 
 
1134
 
 
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)}
 
1137
 
 
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}}{}
 
1140
\end{fulllineitems}
 
1141
 
 
1142
\begin{quote}\begin{description}
 
1143
\item[{param}] \leavevmode
 
1144
\textbf{{[}in{]}} \textbf{context} - Library context
 
1145
 
 
1146
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
1147
 
 
1148
\textbf{{[}in{]}} \textbf{principal} - Default principal name
 
1149
 
 
1150
\end{description}\end{quote}
 
1151
\begin{quote}\begin{description}
 
1152
\item[{retval}] \leavevmode\begin{itemize}
 
1153
\item {} 
 
1154
0   Success
 
1155
 
 
1156
\end{itemize}
 
1157
 
 
1158
\item[{return}] \leavevmode\begin{itemize}
 
1159
\item {} 
 
1160
System errors; Permission errors; Kerberos error codes
 
1161
 
 
1162
\end{itemize}
 
1163
 
 
1164
\end{description}\end{quote}
 
1165
 
 
1166
Destroy any existing contents of \emph{cache} and initialize it for the default principal \emph{principal} .
 
1167
 
 
1168
 
 
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)}
 
1171
 
 
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}}{}
 
1174
\end{fulllineitems}
 
1175
 
 
1176
\begin{quote}\begin{description}
 
1177
\item[{param}] \leavevmode
 
1178
\textbf{{[}in{]}} \textbf{context} - Library context
 
1179
 
 
1180
\textbf{{[}in{]}} \textbf{type} - Credential cache type name
 
1181
 
 
1182
\textbf{{[}in{]}} \textbf{hint} - Unused
 
1183
 
 
1184
\textbf{{[}out{]}} \textbf{id} - Credential cache handle
 
1185
 
 
1186
\end{description}\end{quote}
 
1187
\begin{quote}\begin{description}
 
1188
\item[{retval}] \leavevmode\begin{itemize}
 
1189
\item {} 
 
1190
0   Success
 
1191
 
 
1192
\end{itemize}
 
1193
 
 
1194
\item[{return}] \leavevmode\begin{itemize}
 
1195
\item {} 
 
1196
Kerberos error codes
 
1197
 
 
1198
\end{itemize}
 
1199
 
 
1200
\end{description}\end{quote}
 
1201
 
 
1202
 
 
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)}
 
1205
 
 
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}}{}
 
1208
\end{fulllineitems}
 
1209
 
 
1210
\begin{quote}\begin{description}
 
1211
\item[{param}] \leavevmode
 
1212
\textbf{{[}in{]}} \textbf{context} - Library context
 
1213
 
 
1214
\textbf{{[}in{]}} \textbf{name} - Credential cache name to be resolved
 
1215
 
 
1216
\textbf{{[}out{]}} \textbf{cache} - Credential cache handle
 
1217
 
 
1218
\end{description}\end{quote}
 
1219
\begin{quote}\begin{description}
 
1220
\item[{retval}] \leavevmode\begin{itemize}
 
1221
\item {} 
 
1222
0   Success
 
1223
 
 
1224
\end{itemize}
 
1225
 
 
1226
\item[{return}] \leavevmode\begin{itemize}
 
1227
\item {} 
 
1228
Kerberos error codes
 
1229
 
 
1230
\end{itemize}
 
1231
 
 
1232
\end{description}\end{quote}
 
1233
 
 
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.
 
1235
 
 
1236
 
 
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)}
 
1239
 
 
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}}{}
 
1242
\end{fulllineitems}
 
1243
 
 
1244
\begin{quote}\begin{description}
 
1245
\item[{param}] \leavevmode
 
1246
\textbf{{[}in{]}} \textbf{context} - Library context
 
1247
 
 
1248
\textbf{{[}in{]}} \textbf{creds} - Credentials for kadmin/changepw service
 
1249
 
 
1250
\textbf{{[}in{]}} \textbf{newpw} - New password
 
1251
 
 
1252
\textbf{{[}out{]}} \textbf{result\_code} - Numeric error code from server
 
1253
 
 
1254
\textbf{{[}out{]}} \textbf{result\_code\_string} - String equivalent to \emph{result\_code}
 
1255
 
 
1256
\textbf{{[}out{]}} \textbf{result\_string} - Change password response from the KDC
 
1257
 
 
1258
\end{description}\end{quote}
 
1259
\begin{quote}\begin{description}
 
1260
\item[{retval}] \leavevmode\begin{itemize}
 
1261
\item {} 
 
1262
0   Success; otherwise - Kerberos error codes
 
1263
 
 
1264
\end{itemize}
 
1265
 
 
1266
\end{description}\end{quote}
 
1267
 
 
1268
Change the password for the existing principal identified by \emph{creds} .
 
1269
 
 
1270
The possible values of the output \emph{result\_code} are:
 
1271
\begin{itemize}
 
1272
\item {} 
 
1273
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS]{\code{KRB5\_KPASSWD\_SUCCESS}}} (0) - success
 
1274
 
 
1275
\item {} 
 
1276
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED]{\code{KRB5\_KPASSWD\_MALFORMED}}} (1) - Malformed request error
 
1277
 
 
1278
\item {} 
 
1279
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR]{\code{KRB5\_KPASSWD\_HARDERROR}}} (2) - Server error
 
1280
 
 
1281
\item {} 
 
1282
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR]{\code{KRB5\_KPASSWD\_AUTHERROR}}} (3) - Authentication error
 
1283
 
 
1284
\item {} 
 
1285
{\hyperref[appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR]{\code{KRB5\_KPASSWD\_SOFTERROR}}} (4) - Password change rejected
 
1286
 
 
1287
\end{itemize}
 
1288
 
 
1289
 
 
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)}
 
1292
 
 
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}}{}
 
1295
\end{fulllineitems}
 
1296
 
 
1297
\begin{quote}\begin{description}
 
1298
\item[{param}] \leavevmode
 
1299
\textbf{{[}in{]}} \textbf{context} - Library context
 
1300
 
 
1301
\textbf{{[}in{]}} \textbf{server\_string} - Data returned from the remote system
 
1302
 
 
1303
\textbf{{[}out{]}} \textbf{message\_out} - A message displayable to the user
 
1304
 
 
1305
\end{description}\end{quote}
 
1306
\begin{quote}\begin{description}
 
1307
\item[{retval}] \leavevmode\begin{itemize}
 
1308
\item {} 
 
1309
0   Success
 
1310
 
 
1311
\end{itemize}
 
1312
 
 
1313
\item[{return}] \leavevmode\begin{itemize}
 
1314
\item {} 
 
1315
Kerberos error codes
 
1316
 
 
1317
\end{itemize}
 
1318
 
 
1319
\end{description}\end{quote}
 
1320
 
 
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.
 
1322
 
 
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.
 
1324
 
 
1325
\begin{notice}{note}{Note:}
 
1326
First introduced in 1.11
 
1327
\end{notice}
 
1328
 
 
1329
 
 
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)}
 
1332
 
 
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}}{}
 
1335
\end{fulllineitems}
 
1336
 
 
1337
\begin{quote}\begin{description}
 
1338
\item[{param}] \leavevmode
 
1339
\textbf{{[}in{]}} \textbf{context} - Library context
 
1340
 
 
1341
\end{description}\end{quote}
 
1342
 
 
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()}}} .
 
1344
 
 
1345
 
 
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)}
 
1348
 
 
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}}{}
 
1351
\end{fulllineitems}
 
1352
 
 
1353
\begin{quote}\begin{description}
 
1354
\item[{param}] \leavevmode
 
1355
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
1356
 
 
1357
\textbf{{[}in{]}} \textbf{msg} - Pointer to error message
 
1358
 
 
1359
\end{description}\end{quote}
 
1360
 
 
1361
 
 
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)}
 
1364
 
 
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}}{}
 
1367
\end{fulllineitems}
 
1368
 
 
1369
\begin{quote}\begin{description}
 
1370
\item[{param}] \leavevmode
 
1371
\textbf{{[}in{]}} \textbf{context} - Library context
 
1372
 
 
1373
\textbf{{[}in{]}} \textbf{val} - Principal to be freed
 
1374
 
 
1375
\end{description}\end{quote}
 
1376
 
 
1377
 
 
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)}
 
1380
 
 
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}}{}
 
1383
\end{fulllineitems}
 
1384
 
 
1385
\begin{quote}\begin{description}
 
1386
\item[{param}] \leavevmode
 
1387
\textbf{{[}in{]}} \textbf{context} - Library context
 
1388
 
 
1389
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
1390
 
 
1391
\textbf{{[}in{]}} \textbf{rhost} - Remote host
 
1392
 
 
1393
\textbf{{[}in{]}} \textbf{client} - Client principal of TGT
 
1394
 
 
1395
\textbf{{[}in{]}} \textbf{server} - Principal of server to receive TGT
 
1396
 
 
1397
\textbf{{[}in{]}} \textbf{cc} - Credential cache handle (NULL to use default)
 
1398
 
 
1399
\textbf{{[}in{]}} \textbf{forwardable} - Whether TGT should be forwardable
 
1400
 
 
1401
\textbf{{[}out{]}} \textbf{outbuf} - KRB-CRED message
 
1402
 
 
1403
\end{description}\end{quote}
 
1404
\begin{quote}\begin{description}
 
1405
\item[{retval}] \leavevmode\begin{itemize}
 
1406
\item {} 
 
1407
0   Success
 
1408
 
 
1409
\item {} 
 
1410
ENOMEM   Insufficient memory
 
1411
 
 
1412
\item {} 
 
1413
KRB5\_PRINC\_NOMATCH   Requested principal and ticket do not match
 
1414
 
 
1415
\item {} 
 
1416
KRB5\_NO\_TKT\_SUPPLIED   Request did not supply a ticket
 
1417
 
 
1418
\item {} 
 
1419
KRB5\_CC\_BADNAME   Credential cache name or principal name malformed
 
1420
 
 
1421
\end{itemize}
 
1422
 
 
1423
\item[{return}] \leavevmode\begin{itemize}
 
1424
\item {} 
 
1425
Kerberos error codes
 
1426
 
 
1427
\end{itemize}
 
1428
 
 
1429
\end{description}\end{quote}
 
1430
 
 
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.
 
1432
 
 
1433
 
 
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)}
 
1436
 
 
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}}{}
 
1439
\end{fulllineitems}
 
1440
 
 
1441
\begin{quote}\begin{description}
 
1442
\item[{param}] \leavevmode
 
1443
\textbf{{[}in{]}} \textbf{context} - Library context
 
1444
 
 
1445
\textbf{{[}out{]}} \textbf{lrealm} - Default realm name
 
1446
 
 
1447
\end{description}\end{quote}
 
1448
\begin{quote}\begin{description}
 
1449
\item[{retval}] \leavevmode\begin{itemize}
 
1450
\item {} 
 
1451
0   Success
 
1452
 
 
1453
\end{itemize}
 
1454
 
 
1455
\item[{return}] \leavevmode\begin{itemize}
 
1456
\item {} 
 
1457
Kerberos error codes
 
1458
 
 
1459
\end{itemize}
 
1460
 
 
1461
\end{description}\end{quote}
 
1462
 
 
1463
Retrieves the default realm to be used if no user-specified realm is available.
 
1464
 
 
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.
 
1466
 
 
1467
 
 
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)}
 
1470
 
 
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}}{}
 
1473
\end{fulllineitems}
 
1474
 
 
1475
\begin{quote}\begin{description}
 
1476
\item[{param}] \leavevmode
 
1477
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
1478
 
 
1479
\textbf{{[}in{]}} \textbf{code} - Error code
 
1480
 
 
1481
\end{description}\end{quote}
 
1482
 
 
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.
 
1484
 
 
1485
This function never returns NULL, so its result may be used unconditionally as a C string.
 
1486
 
 
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()}}}
 
1488
 
 
1489
\begin{notice}{note}{Note:}
 
1490
Future versions may return the same string for the second and following calls.
 
1491
\end{notice}
 
1492
 
 
1493
 
 
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)}
 
1496
 
 
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}}{}
 
1499
\end{fulllineitems}
 
1500
 
 
1501
\begin{quote}\begin{description}
 
1502
\item[{param}] \leavevmode
 
1503
\textbf{{[}in{]}} \textbf{context} - Library context
 
1504
 
 
1505
\textbf{{[}in{]}} \textbf{host} - Host name (or NULL)
 
1506
 
 
1507
\textbf{{[}out{]}} \textbf{realmsp} - Null-terminated list of realm names
 
1508
 
 
1509
\end{description}\end{quote}
 
1510
\begin{quote}\begin{description}
 
1511
\item[{retval}] \leavevmode\begin{itemize}
 
1512
\item {} 
 
1513
0   Success
 
1514
 
 
1515
\item {} 
 
1516
ENOMEM   Insufficient memory
 
1517
 
 
1518
\end{itemize}
 
1519
 
 
1520
\item[{return}] \leavevmode\begin{itemize}
 
1521
\item {} 
 
1522
Kerberos error codes
 
1523
 
 
1524
\end{itemize}
 
1525
 
 
1526
\end{description}\end{quote}
 
1527
 
 
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.
 
1529
 
 
1530
If \emph{host} is NULL, the local host's realms are determined.
 
1531
 
 
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.
 
1533
 
 
1534
 
 
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)}
 
1537
 
 
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}}{}
 
1540
\end{fulllineitems}
 
1541
 
 
1542
\begin{quote}\begin{description}
 
1543
\item[{param}] \leavevmode
 
1544
\textbf{{[}in{]}} \textbf{context} - Library context
 
1545
 
 
1546
\textbf{{[}in{]}} \textbf{options} - Options
 
1547
 
 
1548
\textbf{{[}inout{]}} \textbf{ccache} - Credential cache handle
 
1549
 
 
1550
\textbf{{[}in{]}} \textbf{in\_creds} - Input credentials
 
1551
 
 
1552
\textbf{{[}out{]}} \textbf{out\_creds} - Output updated credentials
 
1553
 
 
1554
\end{description}\end{quote}
 
1555
\begin{quote}\begin{description}
 
1556
\item[{retval}] \leavevmode\begin{itemize}
 
1557
\item {} 
 
1558
0   Success
 
1559
 
 
1560
\end{itemize}
 
1561
 
 
1562
\item[{return}] \leavevmode\begin{itemize}
 
1563
\item {} 
 
1564
Kerberos error codes
 
1565
 
 
1566
\end{itemize}
 
1567
 
 
1568
\end{description}\end{quote}
 
1569
 
 
1570
Use \emph{ccache} or a TGS exchange to get a service ticket matching \emph{in\_creds} .
 
1571
 
 
1572
Valid values for \emph{options} are:
 
1573
\begin{quote}
 
1574
\begin{itemize}
 
1575
\item {} 
 
1576
{\hyperref[appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED]{\code{KRB5\_GC\_CACHED}}} Search only credential cache for the ticket
 
1577
 
 
1578
\item {} 
 
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
 
1580
 
 
1581
\end{itemize}
 
1582
 
 
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.
 
1584
\end{quote}
 
1585
 
 
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.
 
1587
 
 
1588
Any returned ticket and intermediate ticket-granting tickets are stored in \emph{ccache} .
 
1589
 
 
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.
 
1591
 
 
1592
 
 
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)}
 
1595
 
 
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}}{}
 
1598
\end{fulllineitems}
 
1599
 
 
1600
\begin{quote}\begin{description}
 
1601
\item[{param}] \leavevmode
 
1602
\textbf{{[}in{]}} \textbf{context} - Library context
 
1603
 
 
1604
\textbf{{[}in{]}} \textbf{hdata} - Host name (or NULL)
 
1605
 
 
1606
\textbf{{[}out{]}} \textbf{realmsp} - Null-terminated list of realm names
 
1607
 
 
1608
\end{description}\end{quote}
 
1609
 
 
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.
 
1611
 
 
1612
If \emph{host} is NULL, the local host's realms are determined.
 
1613
 
 
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.
 
1615
 
 
1616
 
 
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)}
 
1619
 
 
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}}{}
 
1622
\end{fulllineitems}
 
1623
 
 
1624
\begin{quote}\begin{description}
 
1625
\item[{param}] \leavevmode
 
1626
\textbf{{[}in{]}} \textbf{context} - Library context
 
1627
 
 
1628
\textbf{{[}out{]}} \textbf{creds} - New credentials
 
1629
 
 
1630
\textbf{{[}in{]}} \textbf{client} - Client principal
 
1631
 
 
1632
\textbf{{[}in{]}} \textbf{arg\_keytab} - Key table handle
 
1633
 
 
1634
\textbf{{[}in{]}} \textbf{start\_time} - Time when ticket becomes valid (0 for now)
 
1635
 
 
1636
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Service name of initial credentials (or NLUL)
 
1637
 
 
1638
\textbf{{[}in{]}} \textbf{k5\_gic\_options} - Initial credential options
 
1639
 
 
1640
\end{description}\end{quote}
 
1641
\begin{quote}\begin{description}
 
1642
\item[{retval}] \leavevmode\begin{itemize}
 
1643
\item {} 
 
1644
0   Success
 
1645
 
 
1646
\end{itemize}
 
1647
 
 
1648
\item[{return}] \leavevmode\begin{itemize}
 
1649
\item {} 
 
1650
Kerberos error codes
 
1651
 
 
1652
\end{itemize}
 
1653
 
 
1654
\end{description}\end{quote}
 
1655
 
 
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.
 
1657
 
 
1658
 
 
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)}
 
1661
 
 
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}}{}
 
1664
\end{fulllineitems}
 
1665
 
 
1666
\begin{quote}\begin{description}
 
1667
\item[{param}] \leavevmode
 
1668
\textbf{{[}in{]}} \textbf{context} - Library context
 
1669
 
 
1670
\textbf{{[}out{]}} \textbf{opt} - New options structure
 
1671
 
 
1672
\end{description}\end{quote}
 
1673
\begin{quote}\begin{description}
 
1674
\item[{retval}] \leavevmode\begin{itemize}
 
1675
\item {} 
 
1676
0   - Success; Kerberos errors otherwise.
 
1677
 
 
1678
\end{itemize}
 
1679
 
 
1680
\end{description}\end{quote}
 
1681
 
 
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.
 
1683
 
 
1684
 
 
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)}
 
1687
 
 
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}}{}
 
1690
\end{fulllineitems}
 
1691
 
 
1692
\begin{quote}\begin{description}
 
1693
\item[{param}] \leavevmode
 
1694
\textbf{{[}in{]}} \textbf{context} - Library context
 
1695
 
 
1696
\textbf{{[}in{]}} \textbf{opt} - Options structure to free
 
1697
 
 
1698
\end{description}\end{quote}
 
1699
 
 
1700
 
 
1701
\strong{See Also:}
 
1702
 
 
1703
 
 
1704
{\hyperref[appdev/refs/api/krb5_get_init_creds_opt_alloc:krb5_get_init_creds_opt_alloc]{\code{krb5\_get\_init\_creds\_opt\_alloc()}}}
 
1705
 
 
1706
 
 
1707
 
 
1708
 
 
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)}
 
1711
 
 
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}}{}
 
1714
\end{fulllineitems}
 
1715
 
 
1716
\begin{quote}\begin{description}
 
1717
\item[{param}] \leavevmode
 
1718
\textbf{{[}in{]}} \textbf{context} - Library context
 
1719
 
 
1720
\textbf{{[}in{]}} \textbf{opt} - Options
 
1721
 
 
1722
\textbf{{[}out{]}} \textbf{out\_flags} - FAST flags
 
1723
 
 
1724
\end{description}\end{quote}
 
1725
\begin{quote}\begin{description}
 
1726
\item[{retval}] \leavevmode\begin{itemize}
 
1727
\item {} 
 
1728
0   - Success; Kerberos errors otherwise.
 
1729
 
 
1730
\end{itemize}
 
1731
 
 
1732
\end{description}\end{quote}
 
1733
 
 
1734
 
 
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)}
 
1737
 
 
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}}{}
 
1740
\end{fulllineitems}
 
1741
 
 
1742
\begin{quote}\begin{description}
 
1743
\item[{param}] \leavevmode
 
1744
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1745
 
 
1746
\textbf{{[}in{]}} \textbf{addresses} - Null-terminated array of addresses
 
1747
 
 
1748
\end{description}\end{quote}
 
1749
 
 
1750
 
 
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)}
 
1753
 
 
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}}{}
 
1756
\end{fulllineitems}
 
1757
 
 
1758
\begin{quote}\begin{description}
 
1759
\item[{param}] \leavevmode
 
1760
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1761
 
 
1762
\textbf{{[}in{]}} \textbf{anonymous} - Whether to make an anonymous request
 
1763
 
 
1764
\end{description}\end{quote}
 
1765
 
 
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.
 
1767
 
 
1768
 
 
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)}
 
1771
 
 
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}}{}
 
1774
\end{fulllineitems}
 
1775
 
 
1776
\begin{quote}\begin{description}
 
1777
\item[{param}] \leavevmode
 
1778
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1779
 
 
1780
\textbf{{[}in{]}} \textbf{canonicalize} - Whether to canonicalize client principal
 
1781
 
 
1782
\end{description}\end{quote}
 
1783
 
 
1784
 
 
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)}
 
1787
 
 
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}}{}
 
1790
\end{fulllineitems}
 
1791
 
 
1792
\begin{quote}\begin{description}
 
1793
\item[{param}] \leavevmode
 
1794
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1795
 
 
1796
\textbf{{[}in{]}} \textbf{prompt} - Whether to prompt to change password
 
1797
 
 
1798
\end{description}\end{quote}
 
1799
 
 
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.
 
1801
 
 
1802
 
 
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)}
 
1805
 
 
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}}{}
 
1808
\end{fulllineitems}
 
1809
 
 
1810
\begin{quote}\begin{description}
 
1811
\item[{param}] \leavevmode
 
1812
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1813
 
 
1814
\textbf{{[}in{]}} \textbf{etype\_list} - Array of encryption types
 
1815
 
 
1816
\textbf{{[}in{]}} \textbf{etype\_list\_length} - Length of \emph{etype\_list}
 
1817
 
 
1818
\end{description}\end{quote}
 
1819
 
 
1820
 
 
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)}
 
1823
 
 
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}}{}
 
1826
\end{fulllineitems}
 
1827
 
 
1828
\begin{quote}\begin{description}
 
1829
\item[{param}] \leavevmode
 
1830
\textbf{{[}in{]}} \textbf{context} - Library context
 
1831
 
 
1832
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1833
 
 
1834
\textbf{{[}in{]}} \textbf{cb} - Callback function
 
1835
 
 
1836
\textbf{{[}in{]}} \textbf{data} - Callback argument
 
1837
 
 
1838
\end{description}\end{quote}
 
1839
 
 
1840
Set a callback to receive password and account expiration times.
 
1841
 
 
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:
 
1843
 
 
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.
 
1845
 
 
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.
 
1847
 
 
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.
 
1849
 
 
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.
 
1852
\end{notice}
 
1853
 
 
1854
\begin{notice}{note}{Note:}
 
1855
First introduced in 1.9
 
1856
\end{notice}
 
1857
 
 
1858
 
 
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)}
 
1861
 
 
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}}{}
 
1864
\end{fulllineitems}
 
1865
 
 
1866
\begin{quote}\begin{description}
 
1867
\item[{param}] \leavevmode
 
1868
\textbf{{[}in{]}} \textbf{context} - Library context
 
1869
 
 
1870
\textbf{{[}in{]}} \textbf{opt} - Options
 
1871
 
 
1872
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
1873
 
 
1874
\end{description}\end{quote}
 
1875
 
 
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.
 
1877
 
 
1878
\begin{notice}{note}{Note:}
 
1879
First introduced in 1.9
 
1880
\end{notice}
 
1881
 
 
1882
 
 
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)}
 
1885
 
 
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}}{}
 
1888
\end{fulllineitems}
 
1889
 
 
1890
\begin{quote}\begin{description}
 
1891
\item[{param}] \leavevmode
 
1892
\textbf{{[}in{]}} \textbf{context} - Library context
 
1893
 
 
1894
\textbf{{[}in{]}} \textbf{opt} - Options
 
1895
 
 
1896
\textbf{{[}in{]}} \textbf{fast\_ccache\_name} - Credential cache name
 
1897
 
 
1898
\end{description}\end{quote}
 
1899
 
 
1900
Sets the location of a credential cache containing an armor ticket to protect an initial credential exchange using the FAST protocol extension.
 
1901
 
 
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.
 
1903
 
 
1904
 
 
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)}
 
1907
 
 
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}}{}
 
1910
\end{fulllineitems}
 
1911
 
 
1912
\begin{quote}\begin{description}
 
1913
\item[{param}] \leavevmode
 
1914
\textbf{{[}in{]}} \textbf{context} - Library context
 
1915
 
 
1916
\textbf{{[}in{]}} \textbf{opt} - Options
 
1917
 
 
1918
\textbf{{[}in{]}} \textbf{flags} - FAST flags
 
1919
 
 
1920
\end{description}\end{quote}
 
1921
\begin{quote}\begin{description}
 
1922
\item[{retval}] \leavevmode\begin{itemize}
 
1923
\item {} 
 
1924
0   - Success; Kerberos errors otherwise.
 
1925
 
 
1926
\end{itemize}
 
1927
 
 
1928
\end{description}\end{quote}
 
1929
 
 
1930
The following flag values are valid:
 
1931
\begin{itemize}
 
1932
\item {} 
 
1933
{\hyperref[appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED]{\code{KRB5\_FAST\_REQUIRED}}} - Require FAST to be used
 
1934
 
 
1935
\end{itemize}
 
1936
 
 
1937
 
 
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)}
 
1940
 
 
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}}{}
 
1943
\end{fulllineitems}
 
1944
 
 
1945
\begin{quote}\begin{description}
 
1946
\item[{param}] \leavevmode
 
1947
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
1948
 
 
1949
\textbf{{[}in{]}} \textbf{forwardable} - Whether credentials should be forwardable
 
1950
 
 
1951
\end{description}\end{quote}
 
1952
 
 
1953
 
 
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)}
 
1956
 
 
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}}{}
 
1959
\end{fulllineitems}
 
1960
 
 
1961
\begin{quote}\begin{description}
 
1962
\item[{param}] \leavevmode
 
1963
\textbf{{[}in{]}} \textbf{context} - Library context
 
1964
 
 
1965
\textbf{{[}in{]}} \textbf{opt} - Options
 
1966
 
 
1967
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
1968
 
 
1969
\end{description}\end{quote}
 
1970
 
 
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.
 
1972
 
 
1973
\begin{notice}{note}{Note:}
 
1974
First introduced in 1.11
 
1975
\end{notice}
 
1976
 
 
1977
 
 
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)}
 
1980
 
 
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}}{}
 
1983
\end{fulllineitems}
 
1984
 
 
1985
\begin{quote}\begin{description}
 
1986
\item[{param}] \leavevmode
 
1987
\textbf{{[}in{]}} \textbf{context} - Library context
 
1988
 
 
1989
\textbf{{[}in{]}} \textbf{opt} - Options
 
1990
 
 
1991
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
1992
 
 
1993
\end{description}\end{quote}
 
1994
 
 
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.
 
1996
 
 
1997
 
 
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)}
 
2000
 
 
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}}{}
 
2003
\end{fulllineitems}
 
2004
 
 
2005
\begin{quote}\begin{description}
 
2006
\item[{param}] \leavevmode
 
2007
\textbf{{[}in{]}} \textbf{context} - Library context
 
2008
 
 
2009
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
2010
 
 
2011
\textbf{{[}in{]}} \textbf{attr} - Preauthentication option name
 
2012
 
 
2013
\textbf{{[}in{]}} \textbf{value} - Preauthentication option value
 
2014
 
 
2015
\end{description}\end{quote}
 
2016
 
 
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} .
 
2018
 
 
2019
 
 
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)}
 
2022
 
 
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}}{}
 
2025
\end{fulllineitems}
 
2026
 
 
2027
\begin{quote}\begin{description}
 
2028
\item[{param}] \leavevmode
 
2029
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
2030
 
 
2031
\textbf{{[}in{]}} \textbf{preauth\_list} - Array of preauthentication types
 
2032
 
 
2033
\textbf{{[}in{]}} \textbf{preauth\_list\_length} - Length of \emph{preauth\_list}
 
2034
 
 
2035
\end{description}\end{quote}
 
2036
 
 
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()}}} .
 
2038
 
 
2039
 
 
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)}
 
2042
 
 
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}}{}
 
2045
\end{fulllineitems}
 
2046
 
 
2047
\begin{quote}\begin{description}
 
2048
\item[{param}] \leavevmode
 
2049
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
2050
 
 
2051
\textbf{{[}in{]}} \textbf{proxiable} - Whether credentials should be proxiable
 
2052
 
 
2053
\end{description}\end{quote}
 
2054
 
 
2055
 
 
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)}
 
2058
 
 
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}}{}
 
2061
\end{fulllineitems}
 
2062
 
 
2063
\begin{quote}\begin{description}
 
2064
\item[{param}] \leavevmode
 
2065
\textbf{{[}in{]}} \textbf{opt} - Pointer to \emph{options} field
 
2066
 
 
2067
\textbf{{[}in{]}} \textbf{renew\_life} - Ticket renewal lifetime
 
2068
 
 
2069
\end{description}\end{quote}
 
2070
 
 
2071
 
 
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)}
 
2074
 
 
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}}{}
 
2077
\end{fulllineitems}
 
2078
 
 
2079
\begin{quote}\begin{description}
 
2080
\item[{param}] \leavevmode
 
2081
\textbf{{[}in{]}} \textbf{context} - Library context
 
2082
 
 
2083
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
2084
 
 
2085
\textbf{{[}in{]}} \textbf{responder} - Responder function
 
2086
 
 
2087
\textbf{{[}in{]}} \textbf{data} - Responder data argument
 
2088
 
 
2089
\end{description}\end{quote}
 
2090
 
 
2091
\begin{notice}{note}{Note:}
 
2092
First introduced in 1.11
 
2093
\end{notice}
 
2094
 
 
2095
 
 
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)}
 
2098
 
 
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}}{}
 
2101
\end{fulllineitems}
 
2102
 
 
2103
\begin{quote}\begin{description}
 
2104
\item[{param}] \leavevmode
 
2105
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
2106
 
 
2107
\textbf{{[}in{]}} \textbf{salt} - Salt data
 
2108
 
 
2109
\end{description}\end{quote}
 
2110
 
 
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.
 
2112
 
 
2113
 
 
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)}
 
2116
 
 
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}}{}
 
2119
\end{fulllineitems}
 
2120
 
 
2121
\begin{quote}\begin{description}
 
2122
\item[{param}] \leavevmode
 
2123
\textbf{{[}in{]}} \textbf{opt} - Options structure
 
2124
 
 
2125
\textbf{{[}in{]}} \textbf{tkt\_life} - Ticket lifetime
 
2126
 
 
2127
\end{description}\end{quote}
 
2128
 
 
2129
 
 
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)}
 
2132
 
 
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}}{}
 
2135
\end{fulllineitems}
 
2136
 
 
2137
\begin{quote}\begin{description}
 
2138
\item[{param}] \leavevmode
 
2139
\textbf{{[}in{]}} \textbf{context} - Library context
 
2140
 
 
2141
\textbf{{[}out{]}} \textbf{creds} - New credentials
 
2142
 
 
2143
\textbf{{[}in{]}} \textbf{client} - Client principal
 
2144
 
 
2145
\textbf{{[}in{]}} \textbf{password} - Password (or NULL)
 
2146
 
 
2147
\textbf{{[}in{]}} \textbf{prompter} - Prompter function
 
2148
 
 
2149
\textbf{{[}in{]}} \textbf{data} - Prompter callback data
 
2150
 
 
2151
\textbf{{[}in{]}} \textbf{start\_time} - Time when ticket becomes valid (0 for now)
 
2152
 
 
2153
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Service name of initial credentials (or NULL)
 
2154
 
 
2155
\textbf{{[}in{]}} \textbf{k5\_gic\_options} - Initial credential options
 
2156
 
 
2157
\end{description}\end{quote}
 
2158
\begin{quote}\begin{description}
 
2159
\item[{retval}] \leavevmode\begin{itemize}
 
2160
\item {} 
 
2161
0   Success
 
2162
 
 
2163
\item {} 
 
2164
EINVAL   Invalid argument
 
2165
 
 
2166
\item {} 
 
2167
KRB5\_KDC\_UNREACH   Cannot contact any KDC for requested realm
 
2168
 
 
2169
\item {} 
 
2170
KRB5\_PREAUTH\_FAILED   Generic Pre-athentication failure
 
2171
 
 
2172
\item {} 
 
2173
KRB5\_LIBOS\_PWDINTR   Password read interrupted
 
2174
 
 
2175
\item {} 
 
2176
KRB5\_REALM\_CANT\_RESOLVE   Cannot resolve network address for KDC in requested realm
 
2177
 
 
2178
\item {} 
 
2179
KRB5KDC\_ERR\_KEY\_EXP   Password has expired
 
2180
 
 
2181
\item {} 
 
2182
KRB5\_LIBOS\_BADPWDMATCH   Password mismatch
 
2183
 
 
2184
\item {} 
 
2185
KRB5\_CHPW\_PWDNULL   New password cannot be zero length
 
2186
 
 
2187
\item {} 
 
2188
KRB5\_CHPW\_FAIL   Password change failed
 
2189
 
 
2190
\end{itemize}
 
2191
 
 
2192
\item[{return}] \leavevmode\begin{itemize}
 
2193
\item {} 
 
2194
Kerberos error codes
 
2195
 
 
2196
\end{itemize}
 
2197
 
 
2198
\end{description}\end{quote}
 
2199
 
 
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.
 
2201
 
 
2202
 
 
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)}
 
2205
 
 
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}}{}
 
2208
\end{fulllineitems}
 
2209
 
 
2210
\begin{quote}\begin{description}
 
2211
\item[{param}] \leavevmode
 
2212
\textbf{{[}in{]}} \textbf{context} - Library context
 
2213
 
 
2214
\textbf{{[}out{]}} \textbf{profile} - Pointer to data read from a configuration file
 
2215
 
 
2216
\end{description}\end{quote}
 
2217
\begin{quote}\begin{description}
 
2218
\item[{retval}] \leavevmode\begin{itemize}
 
2219
\item {} 
 
2220
0   Success
 
2221
 
 
2222
\end{itemize}
 
2223
 
 
2224
\item[{return}] \leavevmode\begin{itemize}
 
2225
\item {} 
 
2226
Kerberos error codes
 
2227
 
 
2228
\end{itemize}
 
2229
 
 
2230
\end{description}\end{quote}
 
2231
 
 
2232
This function creates a new \emph{profile} object that reflects profile in the supplied \emph{context} .
 
2233
 
 
2234
The \emph{profile} object may be freed with profile\_release() function. See profile.h and profile API for more details.
 
2235
 
 
2236
 
 
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)}
 
2239
 
 
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}}{}
 
2242
\end{fulllineitems}
 
2243
 
 
2244
\begin{quote}\begin{description}
 
2245
\item[{param}] \leavevmode
 
2246
\textbf{{[}in{]}} \textbf{context} - Library context
 
2247
 
 
2248
\end{description}\end{quote}
 
2249
\begin{quote}\begin{description}
 
2250
\item[{return}] \leavevmode\begin{itemize}
 
2251
\item {} 
 
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
 
2253
 
 
2254
\end{itemize}
 
2255
 
 
2256
\end{description}\end{quote}
 
2257
 
 
2258
 
 
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)}
 
2261
 
 
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}}{}
 
2264
\end{fulllineitems}
 
2265
 
 
2266
\begin{quote}\begin{description}
 
2267
\item[{param}] \leavevmode
 
2268
\textbf{{[}in{]}} \textbf{context} - Library context
 
2269
 
 
2270
\textbf{{[}out{]}} \textbf{creds} - Renewed credentials
 
2271
 
 
2272
\textbf{{[}in{]}} \textbf{client} - Client principal name
 
2273
 
 
2274
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
 
2275
 
 
2276
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Server principal string (or NULL)
 
2277
 
 
2278
\end{description}\end{quote}
 
2279
\begin{quote}\begin{description}
 
2280
\item[{retval}] \leavevmode\begin{itemize}
 
2281
\item {} 
 
2282
0   Success
 
2283
 
 
2284
\end{itemize}
 
2285
 
 
2286
\item[{return}] \leavevmode\begin{itemize}
 
2287
\item {} 
 
2288
Kerberos error codes
 
2289
 
 
2290
\end{itemize}
 
2291
 
 
2292
\end{description}\end{quote}
 
2293
 
 
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.
 
2295
 
 
2296
If successful, the renewed credential is placed in \emph{creds} .
 
2297
 
 
2298
 
 
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)}
 
2301
 
 
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}}{}
 
2304
\end{fulllineitems}
 
2305
 
 
2306
\begin{quote}\begin{description}
 
2307
\item[{param}] \leavevmode
 
2308
\textbf{{[}in{]}} \textbf{context} - Library context
 
2309
 
 
2310
\textbf{{[}out{]}} \textbf{creds} - Validated credentials
 
2311
 
 
2312
\textbf{{[}in{]}} \textbf{client} - Client principal name
 
2313
 
 
2314
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
 
2315
 
 
2316
\textbf{{[}in{]}} \textbf{in\_tkt\_service} - Server principal string (or NULL)
 
2317
 
 
2318
\end{description}\end{quote}
 
2319
\begin{quote}\begin{description}
 
2320
\item[{retval}] \leavevmode\begin{itemize}
 
2321
\item {} 
 
2322
0   Success
 
2323
 
 
2324
\item {} 
 
2325
KRB5\_NO\_2ND\_TKT   Request missing second ticket
 
2326
 
 
2327
\item {} 
 
2328
KRB5\_NO\_TKT\_SUPPLIED   Request did not supply a ticket
 
2329
 
 
2330
\item {} 
 
2331
KRB5\_PRINC\_NOMATCH   Requested principal and ticket do not match
 
2332
 
 
2333
\item {} 
 
2334
KRB5\_KDCREP\_MODIFIED   KDC reply did not match expectations
 
2335
 
 
2336
\item {} 
 
2337
KRB5\_KDCREP\_SKEW   Clock skew too great in KDC reply
 
2338
 
 
2339
\end{itemize}
 
2340
 
 
2341
\item[{return}] \leavevmode\begin{itemize}
 
2342
\item {} 
 
2343
Kerberos error codes
 
2344
 
 
2345
\end{itemize}
 
2346
 
 
2347
\end{description}\end{quote}
 
2348
 
 
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.
 
2350
 
 
2351
If successful, the validated credential is placed in \emph{creds} .
 
2352
 
 
2353
 
 
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)}
 
2356
 
 
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}}{}
 
2359
\end{fulllineitems}
 
2360
 
 
2361
\begin{quote}\begin{description}
 
2362
\item[{param}] \leavevmode
 
2363
\textbf{{[}out{]}} \textbf{context} - Library context
 
2364
 
 
2365
\end{description}\end{quote}
 
2366
\begin{quote}\begin{description}
 
2367
\item[{retval}] \leavevmode\begin{itemize}
 
2368
\item {} 
 
2369
0   Success
 
2370
 
 
2371
\end{itemize}
 
2372
 
 
2373
\item[{return}] \leavevmode\begin{itemize}
 
2374
\item {} 
 
2375
Kerberos error codes
 
2376
 
 
2377
\end{itemize}
 
2378
 
 
2379
\end{description}\end{quote}
 
2380
 
 
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.
 
2382
 
 
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.
 
2385
\end{notice}
 
2386
 
 
2387
 
 
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)}
 
2390
 
 
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}}{}
 
2393
\end{fulllineitems}
 
2394
 
 
2395
\begin{quote}\begin{description}
 
2396
\item[{param}] \leavevmode
 
2397
\textbf{{[}out{]}} \textbf{context} - Library context
 
2398
 
 
2399
\end{description}\end{quote}
 
2400
\begin{quote}\begin{description}
 
2401
\item[{retval}] \leavevmode\begin{itemize}
 
2402
\item {} 
 
2403
0   Success
 
2404
 
 
2405
\end{itemize}
 
2406
 
 
2407
\item[{return}] \leavevmode\begin{itemize}
 
2408
\item {} 
 
2409
Kerberos error codes
 
2410
 
 
2411
\end{itemize}
 
2412
 
 
2413
\end{description}\end{quote}
 
2414
 
 
2415
Create a context structure, using only system configuration files. All information passed through the environment variables is ignored.
 
2416
 
 
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.
 
2418
 
 
2419
 
 
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)}
 
2422
 
 
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}}{}
 
2425
\end{fulllineitems}
 
2426
 
 
2427
\begin{quote}\begin{description}
 
2428
\item[{param}] \leavevmode
 
2429
\textbf{{[}in{]}} \textbf{context} - Library context
 
2430
 
 
2431
\textbf{{[}in{]}} \textbf{principal} - Principal to check
 
2432
 
 
2433
\end{description}\end{quote}
 
2434
\begin{quote}\begin{description}
 
2435
\item[{return}] \leavevmode\begin{itemize}
 
2436
\item {} 
 
2437
TRUE if the principal is a configuration principal (generated part of krb5\_cc\_set\_config() ); FALSE otherwise.
 
2438
 
 
2439
\end{itemize}
 
2440
 
 
2441
\end{description}\end{quote}
 
2442
 
 
2443
 
 
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)}
 
2446
 
 
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}}{}
 
2449
\end{fulllineitems}
 
2450
 
 
2451
\begin{quote}\begin{description}
 
2452
\item[{param}] \leavevmode
 
2453
\textbf{None}
 
2454
 
 
2455
\end{description}\end{quote}
 
2456
\begin{quote}\begin{description}
 
2457
\item[{retval}] \leavevmode\begin{itemize}
 
2458
\item {} 
 
2459
TRUE   if the library is threadsafe; FALSE otherwise
 
2460
 
 
2461
\end{itemize}
 
2462
 
 
2463
\end{description}\end{quote}
 
2464
 
 
2465
 
 
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)}
 
2468
 
 
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}}{}
 
2471
\end{fulllineitems}
 
2472
 
 
2473
\begin{quote}\begin{description}
 
2474
\item[{param}] \leavevmode
 
2475
\textbf{{[}in{]}} \textbf{context} - Library context
 
2476
 
 
2477
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
2478
 
 
2479
\end{description}\end{quote}
 
2480
\begin{quote}\begin{description}
 
2481
\item[{retval}] \leavevmode\begin{itemize}
 
2482
\item {} 
 
2483
0   None
 
2484
 
 
2485
\end{itemize}
 
2486
 
 
2487
\end{description}\end{quote}
 
2488
 
 
2489
 
 
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)}
 
2492
 
 
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}}{}
 
2495
\end{fulllineitems}
 
2496
 
 
2497
\begin{quote}\begin{description}
 
2498
\item[{param}] \leavevmode
 
2499
\textbf{{[}in{]}} \textbf{context} - Library context
 
2500
 
 
2501
\textbf{{[}out{]}} \textbf{keytab\_out} - Key table handle
 
2502
 
 
2503
\end{description}\end{quote}
 
2504
\begin{quote}\begin{description}
 
2505
\item[{retval}] \leavevmode\begin{itemize}
 
2506
\item {} 
 
2507
0   Success
 
2508
 
 
2509
\end{itemize}
 
2510
 
 
2511
\item[{return}] \leavevmode\begin{itemize}
 
2512
\item {} 
 
2513
Kerberos error codes
 
2514
 
 
2515
\end{itemize}
 
2516
 
 
2517
\end{description}\end{quote}
 
2518
 
 
2519
Fill \emph{keytab\_out} with a handle to the default client key table.
 
2520
 
 
2521
\begin{notice}{note}{Note:}
 
2522
First introduced in 1.11
 
2523
\end{notice}
 
2524
 
 
2525
 
 
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)}
 
2528
 
 
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}}{}
 
2531
\end{fulllineitems}
 
2532
 
 
2533
\begin{quote}\begin{description}
 
2534
\item[{param}] \leavevmode
 
2535
\textbf{{[}in{]}} \textbf{context} - Library context
 
2536
 
 
2537
\textbf{{[}out{]}} \textbf{id} - Key table handle
 
2538
 
 
2539
\end{description}\end{quote}
 
2540
\begin{quote}\begin{description}
 
2541
\item[{retval}] \leavevmode\begin{itemize}
 
2542
\item {} 
 
2543
0   Success
 
2544
 
 
2545
\end{itemize}
 
2546
 
 
2547
\item[{return}] \leavevmode\begin{itemize}
 
2548
\item {} 
 
2549
Kerberos error codes
 
2550
 
 
2551
\end{itemize}
 
2552
 
 
2553
\end{description}\end{quote}
 
2554
 
 
2555
Set \emph{id} to a handle to the default key table. The key table is not opened.
 
2556
 
 
2557
 
 
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)}
 
2560
 
 
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}}{}
 
2563
\end{fulllineitems}
 
2564
 
 
2565
\begin{quote}\begin{description}
 
2566
\item[{param}] \leavevmode
 
2567
\textbf{{[}in{]}} \textbf{context} - Library context
 
2568
 
 
2569
\textbf{{[}out{]}} \textbf{name} - Default key table name
 
2570
 
 
2571
\textbf{{[}in{]}} \textbf{name\_size} - Space available in \emph{name}
 
2572
 
 
2573
\end{description}\end{quote}
 
2574
\begin{quote}\begin{description}
 
2575
\item[{retval}] \leavevmode\begin{itemize}
 
2576
\item {} 
 
2577
0   Success
 
2578
 
 
2579
\item {} 
 
2580
KRB5\_CONFIG\_NOTENUFSPACE   Buffer is too short
 
2581
 
 
2582
\end{itemize}
 
2583
 
 
2584
\item[{return}] \leavevmode\begin{itemize}
 
2585
\item {} 
 
2586
Kerberos error codes
 
2587
 
 
2588
\end{itemize}
 
2589
 
 
2590
\end{description}\end{quote}
 
2591
 
 
2592
Fill \emph{name} with the name of the default key table for \emph{context} .
 
2593
 
 
2594
 
 
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)}
 
2597
 
 
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}}{}
 
2600
\end{fulllineitems}
 
2601
 
 
2602
\begin{quote}\begin{description}
 
2603
\item[{param}] \leavevmode
 
2604
\textbf{{[}in{]}} \textbf{context} - Library context
 
2605
 
 
2606
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
2607
 
 
2608
\textbf{{[}out{]}} \textbf{name} - Key table name
 
2609
 
 
2610
\textbf{{[}in{]}} \textbf{namelen} - Maximum length to fill in name
 
2611
 
 
2612
\end{description}\end{quote}
 
2613
\begin{quote}\begin{description}
 
2614
\item[{retval}] \leavevmode\begin{itemize}
 
2615
\item {} 
 
2616
0   Success
 
2617
 
 
2618
\item {} 
 
2619
KRB5\_KT\_NAME\_TOOLONG   Key table name does not fit in namelen bytes
 
2620
 
 
2621
\end{itemize}
 
2622
 
 
2623
\item[{return}] \leavevmode\begin{itemize}
 
2624
\item {} 
 
2625
Kerberos error codes
 
2626
 
 
2627
\end{itemize}
 
2628
 
 
2629
\end{description}\end{quote}
 
2630
 
 
2631
Fill \emph{name} with the name of \emph{keytab} including the type and delimiter.
 
2632
 
 
2633
 
 
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)}
 
2636
 
 
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}}{}
 
2639
\end{fulllineitems}
 
2640
 
 
2641
\begin{quote}\begin{description}
 
2642
\item[{param}] \leavevmode
 
2643
\textbf{{[}in{]}} \textbf{context} - Library context
 
2644
 
 
2645
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
2646
 
 
2647
\end{description}\end{quote}
 
2648
\begin{quote}\begin{description}
 
2649
\item[{return}] \leavevmode\begin{itemize}
 
2650
\item {} 
 
2651
The type of a key table as an alias that must not be modified or freed by the caller.
 
2652
 
 
2653
\end{itemize}
 
2654
 
 
2655
\end{description}\end{quote}
 
2656
 
 
2657
 
 
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)}
 
2660
 
 
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}}{}
 
2663
\end{fulllineitems}
 
2664
 
 
2665
\begin{quote}\begin{description}
 
2666
\item[{param}] \leavevmode
 
2667
\textbf{{[}in{]}} \textbf{context} - Library context
 
2668
 
 
2669
\textbf{{[}in{]}} \textbf{name} - Name of the key table
 
2670
 
 
2671
\textbf{{[}out{]}} \textbf{ktid} - Key table handle
 
2672
 
 
2673
\end{description}\end{quote}
 
2674
\begin{quote}\begin{description}
 
2675
\item[{retval}] \leavevmode\begin{itemize}
 
2676
\item {} 
 
2677
0   Success
 
2678
 
 
2679
\end{itemize}
 
2680
 
 
2681
\item[{return}] \leavevmode\begin{itemize}
 
2682
\item {} 
 
2683
Kerberos error codes
 
2684
 
 
2685
\end{itemize}
 
2686
 
 
2687
\end{description}\end{quote}
 
2688
 
 
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.
 
2690
 
 
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.
 
2693
\end{notice}
 
2694
 
 
2695
 
 
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)}
 
2698
 
 
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}}{}
 
2701
\end{fulllineitems}
 
2702
 
 
2703
\begin{quote}\begin{description}
 
2704
\item[{param}] \leavevmode
 
2705
\textbf{{[}in{]}} \textbf{context} - Library context
 
2706
 
 
2707
\textbf{{[}in{]}} \textbf{principal} - Principal name
 
2708
 
 
2709
\textbf{{[}in{]}} \textbf{luser} - Local username
 
2710
 
 
2711
\end{description}\end{quote}
 
2712
\begin{quote}\begin{description}
 
2713
\item[{retval}] \leavevmode\begin{itemize}
 
2714
\item {} 
 
2715
TRUE   Principal is authorized to log in as user; FALSE otherwise.
 
2716
 
 
2717
\end{itemize}
 
2718
 
 
2719
\end{description}\end{quote}
 
2720
 
 
2721
Determine whether \emph{principal} is authorized to log in as a local user \emph{luser} .
 
2722
 
 
2723
 
 
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)}
 
2726
 
 
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}}{}
 
2729
\end{fulllineitems}
 
2730
 
 
2731
\begin{quote}\begin{description}
 
2732
\item[{param}] \leavevmode
 
2733
\textbf{{[}in{]}} \textbf{context} - Library context
 
2734
 
 
2735
\textbf{{[}in{]}} \textbf{name} - String representation of a principal name
 
2736
 
 
2737
\textbf{{[}out{]}} \textbf{principal\_out} - New principal
 
2738
 
 
2739
\end{description}\end{quote}
 
2740
\begin{quote}\begin{description}
 
2741
\item[{retval}] \leavevmode\begin{itemize}
 
2742
\item {} 
 
2743
0   Success
 
2744
 
 
2745
\end{itemize}
 
2746
 
 
2747
\item[{return}] \leavevmode\begin{itemize}
 
2748
\item {} 
 
2749
Kerberos error codes
 
2750
 
 
2751
\end{itemize}
 
2752
 
 
2753
\end{description}\end{quote}
 
2754
 
 
2755
Convert a string representation of a principal name to a krb5\_principal structure.
 
2756
 
 
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.
 
2758
 
 
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.
 
2760
 
 
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.
 
2762
 
 
2763
\begin{notice}{note}{Note:}
 
2764
The realm in a Kerberos \emph{name} cannot contain slash, colon, or NULL characters.
 
2765
\end{notice}
 
2766
 
 
2767
 
 
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)}
 
2770
 
 
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}}{}
 
2773
\end{fulllineitems}
 
2774
 
 
2775
\begin{quote}\begin{description}
 
2776
\item[{param}] \leavevmode
 
2777
\textbf{{[}in{]}} \textbf{context} - Library context
 
2778
 
 
2779
\textbf{{[}in{]}} \textbf{name} - String representation of a principal name
 
2780
 
 
2781
\textbf{{[}in{]}} \textbf{flags} - Flag
 
2782
 
 
2783
\textbf{{[}out{]}} \textbf{principal\_out} - New principal
 
2784
 
 
2785
\end{description}\end{quote}
 
2786
\begin{quote}\begin{description}
 
2787
\item[{retval}] \leavevmode\begin{itemize}
 
2788
\item {} 
 
2789
0   Success
 
2790
 
 
2791
\end{itemize}
 
2792
 
 
2793
\item[{return}] \leavevmode\begin{itemize}
 
2794
\item {} 
 
2795
Kerberos error codes
 
2796
 
 
2797
\end{itemize}
 
2798
 
 
2799
\end{description}\end{quote}
 
2800
 
 
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.
 
2802
 
 
2803
The following flags are valid:
 
2804
\begin{quote}
 
2805
\begin{itemize}
 
2806
\item {} 
 
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}
 
2808
 
 
2809
\item {} 
 
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}
 
2811
 
 
2812
\item {} 
 
2813
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:KRB5_PRINCIPAL_PARSE_ENTERPRISE]{\code{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}}} - create single-component enterprise principal
 
2814
 
 
2815
\item {} 
 
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}
 
2817
 
 
2818
\end{itemize}
 
2819
 
 
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.
 
2821
\end{quote}
 
2822
 
 
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.
 
2824
 
 
2825
 
 
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)}
 
2828
 
 
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}}{}
 
2831
\end{fulllineitems}
 
2832
 
 
2833
\begin{quote}\begin{description}
 
2834
\item[{param}] \leavevmode
 
2835
\textbf{{[}in{]}} \textbf{context} - Library context
 
2836
 
 
2837
\textbf{{[}in{]}} \textbf{princ1} - First principal
 
2838
 
 
2839
\textbf{{[}in{]}} \textbf{princ2} - Second principal
 
2840
 
 
2841
\end{description}\end{quote}
 
2842
\begin{quote}\begin{description}
 
2843
\item[{retval}] \leavevmode\begin{itemize}
 
2844
\item {} 
 
2845
TRUE   if the principals are the same; FALSE otherwise
 
2846
 
 
2847
\end{itemize}
 
2848
 
 
2849
\end{description}\end{quote}
 
2850
 
 
2851
 
 
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)}
 
2854
 
 
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}}{}
 
2857
\end{fulllineitems}
 
2858
 
 
2859
\begin{quote}\begin{description}
 
2860
\item[{param}] \leavevmode
 
2861
\textbf{{[}in{]}} \textbf{context} - Library context
 
2862
 
 
2863
\textbf{{[}in{]}} \textbf{princ1} - First principal
 
2864
 
 
2865
\textbf{{[}in{]}} \textbf{princ2} - Second principal
 
2866
 
 
2867
\end{description}\end{quote}
 
2868
\begin{quote}\begin{description}
 
2869
\item[{retval}] \leavevmode\begin{itemize}
 
2870
\item {} 
 
2871
TRUE   if the principals are the same; FALSE otherwise
 
2872
 
 
2873
\end{itemize}
 
2874
 
 
2875
\end{description}\end{quote}
 
2876
 
 
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.
 
2878
 
 
2879
 
 
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)}
 
2882
 
 
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}}{}
 
2885
\end{fulllineitems}
 
2886
 
 
2887
\begin{quote}\begin{description}
 
2888
\item[{param}] \leavevmode
 
2889
\textbf{{[}in{]}} \textbf{context} - Library context
 
2890
 
 
2891
\textbf{{[}in{]}} \textbf{princ1} - First principal
 
2892
 
 
2893
\textbf{{[}in{]}} \textbf{princ2} - Second principal
 
2894
 
 
2895
\textbf{{[}in{]}} \textbf{flags} - Flags
 
2896
 
 
2897
\end{description}\end{quote}
 
2898
\begin{quote}\begin{description}
 
2899
\item[{retval}] \leavevmode\begin{itemize}
 
2900
\item {} 
 
2901
TRUE   if the principal names are the same; FALSE otherwise
 
2902
 
 
2903
\end{itemize}
 
2904
 
 
2905
\end{description}\end{quote}
 
2906
 
 
2907
Valid flags are:
 
2908
\begin{itemize}
 
2909
\item {} 
 
2910
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:KRB5_PRINCIPAL_COMPARE_IGNORE_REALM]{\code{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}}} - ignore realm component
 
2911
 
 
2912
\item {} 
 
2913
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:KRB5_PRINCIPAL_COMPARE_ENTERPRISE]{\code{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}}} - UPNs as real principals
 
2914
 
 
2915
\item {} 
 
2916
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:KRB5_PRINCIPAL_COMPARE_CASEFOLD]{\code{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}}} case-insensitive
 
2917
 
 
2918
\item {} 
 
2919
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:KRB5_PRINCIPAL_COMPARE_UTF8]{\code{KRB5\_PRINCIPAL\_COMPARE\_UTF8}}} - treat principals as UTF-8
 
2920
 
 
2921
\end{itemize}
 
2922
 
 
2923
 
 
2924
\strong{See Also:}
 
2925
 
 
2926
 
 
2927
{\hyperref[appdev/refs/api/krb5_principal_compare:krb5_principal_compare]{\code{krb5\_principal\_compare()}}}
 
2928
 
 
2929
 
 
2930
 
 
2931
 
 
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)}
 
2934
 
 
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}}{}
 
2937
\end{fulllineitems}
 
2938
 
 
2939
\begin{quote}\begin{description}
 
2940
\item[{param}] \leavevmode
 
2941
\textbf{{[}in{]}} \textbf{context} - Library context
 
2942
 
 
2943
\textbf{data} - Unused (callback argument)
 
2944
 
 
2945
\textbf{{[}in{]}} \textbf{name} - Name to output during prompt
 
2946
 
 
2947
\textbf{{[}in{]}} \textbf{banner} - Banner to output during prompt
 
2948
 
 
2949
\textbf{{[}in{]}} \textbf{num\_prompts} - Number of prompts in \emph{prompts}
 
2950
 
 
2951
\textbf{{[}inout{]}} \textbf{prompts} - Array of output prompts and replies
 
2952
 
 
2953
\end{description}\end{quote}
 
2954
\begin{quote}\begin{description}
 
2955
\item[{retval}] \leavevmode\begin{itemize}
 
2956
\item {} 
 
2957
0   Success
 
2958
 
 
2959
\end{itemize}
 
2960
 
 
2961
\item[{return}] \leavevmode\begin{itemize}
 
2962
\item {} 
 
2963
Kerberos error codes
 
2964
 
 
2965
\end{itemize}
 
2966
 
 
2967
\end{description}\end{quote}
 
2968
 
 
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()}}} .
 
2970
 
 
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.
 
2972
 
 
2973
 
 
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)}
 
2976
 
 
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}}{}
 
2979
\end{fulllineitems}
 
2980
 
 
2981
\begin{quote}\begin{description}
 
2982
\item[{param}] \leavevmode
 
2983
\textbf{{[}in{]}} \textbf{context} - Library context
 
2984
 
 
2985
\textbf{{[}in{]}} \textbf{princ1} - First principal
 
2986
 
 
2987
\textbf{{[}in{]}} \textbf{princ2} - Second principal
 
2988
 
 
2989
\end{description}\end{quote}
 
2990
\begin{quote}\begin{description}
 
2991
\item[{retval}] \leavevmode\begin{itemize}
 
2992
\item {} 
 
2993
TRUE   if the realm names are the same; FALSE otherwise
 
2994
 
 
2995
\end{itemize}
 
2996
 
 
2997
\end{description}\end{quote}
 
2998
 
 
2999
 
 
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)}
 
3002
 
 
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}}{}
 
3005
\end{fulllineitems}
 
3006
 
 
3007
\begin{quote}\begin{description}
 
3008
\item[{param}] \leavevmode
 
3009
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
3010
 
 
3011
\textbf{{[}in{]}} \textbf{rctx} - Responder context
 
3012
 
 
3013
\textbf{{[}in{]}} \textbf{question} - Question name
 
3014
 
 
3015
\end{description}\end{quote}
 
3016
 
 
3017
\begin{notice}{note}{Note:}
 
3018
First introduced in 1.11
 
3019
\end{notice}
 
3020
 
 
3021
 
 
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)}
 
3024
 
 
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}}{}
 
3027
\end{fulllineitems}
 
3028
 
 
3029
\begin{quote}\begin{description}
 
3030
\item[{param}] \leavevmode
 
3031
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
3032
 
 
3033
\textbf{{[}in{]}} \textbf{rctx} - Responder context
 
3034
 
 
3035
\end{description}\end{quote}
 
3036
 
 
3037
\begin{notice}{note}{Note:}
 
3038
First introduced in 1.11
 
3039
\end{notice}
 
3040
 
 
3041
 
 
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)}
 
3044
 
 
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}}{}
 
3047
\end{fulllineitems}
 
3048
 
 
3049
\begin{quote}\begin{description}
 
3050
\item[{param}] \leavevmode
 
3051
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
3052
 
 
3053
\textbf{{[}in{]}} \textbf{rctx} - Responder context
 
3054
 
 
3055
\textbf{{[}in{]}} \textbf{question} - Question name
 
3056
 
 
3057
\textbf{{[}in{]}} \textbf{answer} - The string to set (MUST be printable UTF-8)
 
3058
 
 
3059
\end{description}\end{quote}
 
3060
 
 
3061
\begin{notice}{note}{Note:}
 
3062
First introduced in 1.11
 
3063
\end{notice}
 
3064
 
 
3065
 
 
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)}
 
3068
 
 
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}}{}
 
3071
\end{fulllineitems}
 
3072
 
 
3073
\begin{quote}\begin{description}
 
3074
\item[{param}] \leavevmode
 
3075
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
3076
 
 
3077
\textbf{{[}in{]}} \textbf{rctx} - Responder context
 
3078
 
 
3079
\textbf{{[}out{]}} \textbf{chl} - Challenge structure
 
3080
 
 
3081
\end{description}\end{quote}
 
3082
 
 
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.
 
3084
 
 
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.
 
3086
 
 
3087
\begin{notice}{note}{Note:}
 
3088
First introduced in 1.11
 
3089
\end{notice}
 
3090
 
 
3091
 
 
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)}
 
3094
 
 
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}}{}
 
3097
\end{fulllineitems}
 
3098
 
 
3099
\begin{quote}\begin{description}
 
3100
\item[{param}] \leavevmode
 
3101
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
3102
 
 
3103
\textbf{{[}in{]}} \textbf{rctx} - Responder context
 
3104
 
 
3105
\textbf{{[}in{]}} \textbf{ti} - The index of the tokeninfo selected
 
3106
 
 
3107
\textbf{{[}in{]}} \textbf{value} - The value to set, or NULL for none
 
3108
 
 
3109
\textbf{{[}in{]}} \textbf{pin} - The pin to set, or NULL for none
 
3110
 
 
3111
\end{description}\end{quote}
 
3112
 
 
3113
\begin{notice}{note}{Note:}
 
3114
First introduced in 1.11
 
3115
\end{notice}
 
3116
 
 
3117
 
 
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)}
 
3120
 
 
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}}{}
 
3123
\end{fulllineitems}
 
3124
 
 
3125
\begin{quote}\begin{description}
 
3126
\item[{param}] \leavevmode
 
3127
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
3128
 
 
3129
\textbf{{[}in{]}} \textbf{rctx} - Responder context
 
3130
 
 
3131
\textbf{{[}in{]}} \textbf{chl} - The challenge to free
 
3132
 
 
3133
\end{description}\end{quote}
 
3134
 
 
3135
\begin{notice}{note}{Note:}
 
3136
First introduced in 1.11
 
3137
\end{notice}
 
3138
 
 
3139
 
 
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)}
 
3142
 
 
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}}{}
 
3145
\end{fulllineitems}
 
3146
 
 
3147
\begin{quote}\begin{description}
 
3148
\item[{param}] \leavevmode
 
3149
\textbf{{[}in{]}} \textbf{context} - Library context
 
3150
 
 
3151
\textbf{{[}in{]}} \textbf{lrealm} - Realm name for the default realm
 
3152
 
 
3153
\end{description}\end{quote}
 
3154
\begin{quote}\begin{description}
 
3155
\item[{retval}] \leavevmode\begin{itemize}
 
3156
\item {} 
 
3157
0   Success
 
3158
 
 
3159
\end{itemize}
 
3160
 
 
3161
\item[{return}] \leavevmode\begin{itemize}
 
3162
\item {} 
 
3163
Kerberos error codes
 
3164
 
 
3165
\end{itemize}
 
3166
 
 
3167
\end{description}\end{quote}
 
3168
 
 
3169
If \emph{lrealm} is NULL, clear the default realm setting.
 
3170
 
 
3171
 
 
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)}
 
3174
 
 
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}}{}
 
3177
\end{fulllineitems}
 
3178
 
 
3179
\begin{quote}\begin{description}
 
3180
\item[{param}] \leavevmode
 
3181
\textbf{{[}in{]}} \textbf{context} - Library context
 
3182
 
 
3183
\textbf{{[}in{]}} \textbf{creds} - Credentials for kadmin/changepw service
 
3184
 
 
3185
\textbf{{[}in{]}} \textbf{newpw} - New password
 
3186
 
 
3187
\textbf{{[}in{]}} \textbf{change\_password\_for} - Change the password for this principal
 
3188
 
 
3189
\textbf{{[}out{]}} \textbf{result\_code} - Numeric error code from server
 
3190
 
 
3191
\textbf{{[}out{]}} \textbf{result\_code\_string} - String equivalent to \emph{result\_code}
 
3192
 
 
3193
\textbf{{[}out{]}} \textbf{result\_string} - Data returned from the remote system
 
3194
 
 
3195
\end{description}\end{quote}
 
3196
\begin{quote}\begin{description}
 
3197
\item[{retval}] \leavevmode\begin{itemize}
 
3198
\item {} 
 
3199
0   Success and result\_code is set to KRB5\_KPASSWD\_SUCCESS .
 
3200
 
 
3201
\end{itemize}
 
3202
 
 
3203
\item[{return}] \leavevmode\begin{itemize}
 
3204
\item {} 
 
3205
Kerberos error codes.
 
3206
 
 
3207
\end{itemize}
 
3208
 
 
3209
\end{description}\end{quote}
 
3210
 
 
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.
 
3212
 
 
3213
The error code and strings are returned in \emph{result\_code} , \emph{result\_code\_string} and \emph{result\_string} .
 
3214
 
 
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} .
 
3217
\end{notice}
 
3218
 
 
3219
 
 
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)}
 
3222
 
 
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}}{}
 
3225
\end{fulllineitems}
 
3226
 
 
3227
\begin{quote}\begin{description}
 
3228
\item[{param}] \leavevmode
 
3229
\textbf{{[}in{]}} \textbf{context} - Library context
 
3230
 
 
3231
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
 
3232
 
 
3233
\textbf{{[}in{]}} \textbf{newpw} - New password
 
3234
 
 
3235
\textbf{{[}in{]}} \textbf{change\_password\_for} - Change the password for this principal
 
3236
 
 
3237
\textbf{{[}out{]}} \textbf{result\_code} - Numeric error code from server
 
3238
 
 
3239
\textbf{{[}out{]}} \textbf{result\_code\_string} - String equivalent to \emph{result\_code}
 
3240
 
 
3241
\textbf{{[}out{]}} \textbf{result\_string} - Data returned from the remote system
 
3242
 
 
3243
\end{description}\end{quote}
 
3244
\begin{quote}\begin{description}
 
3245
\item[{retval}] \leavevmode\begin{itemize}
 
3246
\item {} 
 
3247
0   Success
 
3248
 
 
3249
\end{itemize}
 
3250
 
 
3251
\item[{return}] \leavevmode\begin{itemize}
 
3252
\item {} 
 
3253
Kerberos error codes
 
3254
 
 
3255
\end{itemize}
 
3256
 
 
3257
\end{description}\end{quote}
 
3258
 
 
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.
 
3260
 
 
3261
The error code and strings are returned in \emph{result\_code} , \emph{result\_code\_string} and \emph{result\_string} .
 
3262
 
 
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.
 
3265
\end{notice}
 
3266
 
 
3267
 
 
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)}
 
3270
 
 
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}}{}
 
3273
\end{fulllineitems}
 
3274
 
 
3275
\begin{quote}\begin{description}
 
3276
\item[{param}] \leavevmode
 
3277
\textbf{{[}inout{]}} \textbf{context} - Library context
 
3278
 
 
3279
\textbf{{[}in{]}} \textbf{principal} - Principal name
 
3280
 
 
3281
\textbf{{[}in{]}} \textbf{realm} - Realm name
 
3282
 
 
3283
\end{description}\end{quote}
 
3284
\begin{quote}\begin{description}
 
3285
\item[{retval}] \leavevmode\begin{itemize}
 
3286
\item {} 
 
3287
0   Success
 
3288
 
 
3289
\end{itemize}
 
3290
 
 
3291
\item[{return}] \leavevmode\begin{itemize}
 
3292
\item {} 
 
3293
Kerberos error codes
 
3294
 
 
3295
\end{itemize}
 
3296
 
 
3297
\end{description}\end{quote}
 
3298
 
 
3299
Set the realm name part of \emph{principal} to \emph{realm} , overwriting the previous realm.
 
3300
 
 
3301
 
 
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)}
 
3304
 
 
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}}{}
 
3307
\end{fulllineitems}
 
3308
 
 
3309
\begin{quote}\begin{description}
 
3310
\item[{param}] \leavevmode
 
3311
\textbf{{[}in{]}} \textbf{context} - Library context
 
3312
 
 
3313
\textbf{{[}in{]}} \textbf{fn} - Callback function
 
3314
 
 
3315
\textbf{{[}in{]}} \textbf{cb\_data} - Callback data
 
3316
 
 
3317
\end{description}\end{quote}
 
3318
\begin{quote}\begin{description}
 
3319
\item[{return}] \leavevmode\begin{itemize}
 
3320
\item {} 
 
3321
Returns KRB5\_TRACE\_NOSUPP if tracing is not supported in the library (unless fn is NULL).
 
3322
 
 
3323
\end{itemize}
 
3324
 
 
3325
\end{description}\end{quote}
 
3326
 
 
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} .
 
3328
 
 
3329
\begin{notice}{note}{Note:}
 
3330
This function overrides the information passed through the \emph{KRB5\_TRACE} environment variable.
 
3331
\end{notice}
 
3332
 
 
3333
\begin{notice}{note}{Note:}
 
3334
First introduced in 1.9
 
3335
\end{notice}
 
3336
 
 
3337
 
 
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)}
 
3340
 
 
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}}{}
 
3343
\end{fulllineitems}
 
3344
 
 
3345
\begin{quote}\begin{description}
 
3346
\item[{param}] \leavevmode
 
3347
\textbf{{[}in{]}} \textbf{context} - Library context
 
3348
 
 
3349
\textbf{{[}in{]}} \textbf{filename} - File name
 
3350
 
 
3351
\end{description}\end{quote}
 
3352
\begin{quote}\begin{description}
 
3353
\item[{retval}] \leavevmode\begin{itemize}
 
3354
\item {} 
 
3355
KRB5\_TRACE\_NOSUPP   Tracing is not supported in the library.
 
3356
 
 
3357
\end{itemize}
 
3358
 
 
3359
\end{description}\end{quote}
 
3360
 
 
3361
Open \emph{filename} for appending (creating it, if necessary) and set up a callback to write trace events to it.
 
3362
 
 
3363
\begin{notice}{note}{Note:}
 
3364
This function overrides the information passed through the \emph{KRB5\_TRACE} environment variable.
 
3365
\end{notice}
 
3366
 
 
3367
\begin{notice}{note}{Note:}
 
3368
First introduced in 1.9
 
3369
\end{notice}
 
3370
 
 
3371
 
 
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)}
 
3374
 
 
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}}{}
 
3377
\end{fulllineitems}
 
3378
 
 
3379
\begin{quote}\begin{description}
 
3380
\item[{param}] \leavevmode
 
3381
\textbf{{[}in{]}} \textbf{context} - Library context
 
3382
 
 
3383
\textbf{{[}in{]}} \textbf{matching} - Matching principal
 
3384
 
 
3385
\textbf{{[}in{]}} \textbf{princ} - Principal to test
 
3386
 
 
3387
\end{description}\end{quote}
 
3388
\begin{quote}\begin{description}
 
3389
\item[{return}] \leavevmode\begin{itemize}
 
3390
\item {} 
 
3391
TRUE if princ matches matching , FALSE otherwise.
 
3392
 
 
3393
\end{itemize}
 
3394
 
 
3395
\end{description}\end{quote}
 
3396
 
 
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).
 
3398
 
 
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.
 
3401
\end{notice}
 
3402
 
 
3403
 
 
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)}
 
3406
 
 
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}}{}
 
3409
\end{fulllineitems}
 
3410
 
 
3411
\begin{quote}\begin{description}
 
3412
\item[{param}] \leavevmode
 
3413
\textbf{{[}in{]}} \textbf{context} - Library context
 
3414
 
 
3415
\textbf{{[}in{]}} \textbf{hostname} - Host name, or NULL to use local host
 
3416
 
 
3417
\textbf{{[}in{]}} \textbf{sname} - Service name, or NULL to use \textbf{``host''}
 
3418
 
 
3419
\textbf{{[}in{]}} \textbf{type} - Principal type
 
3420
 
 
3421
\textbf{{[}out{]}} \textbf{ret\_princ} - Generated principal
 
3422
 
 
3423
\end{description}\end{quote}
 
3424
\begin{quote}\begin{description}
 
3425
\item[{retval}] \leavevmode\begin{itemize}
 
3426
\item {} 
 
3427
0   Success
 
3428
 
 
3429
\end{itemize}
 
3430
 
 
3431
\item[{return}] \leavevmode\begin{itemize}
 
3432
\item {} 
 
3433
Kerberos error codes
 
3434
 
 
3435
\end{itemize}
 
3436
 
 
3437
\end{description}\end{quote}
 
3438
 
 
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.
 
3440
 
 
3441
The \emph{type} can be one of the following:
 
3442
\begin{quote}
 
3443
\begin{itemize}
 
3444
\item {} 
 
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.
 
3446
 
 
3447
\item {} 
 
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.
 
3449
 
 
3450
\end{itemize}
 
3451
 
 
3452
Use krb5\_free\_principal to free \emph{ret\_princ} when it is no longer needed.
 
3453
\end{quote}
 
3454
 
 
3455
 
 
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)}
 
3458
 
 
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}}{}
 
3461
\end{fulllineitems}
 
3462
 
 
3463
\begin{quote}\begin{description}
 
3464
\item[{param}] \leavevmode
 
3465
\textbf{{[}in{]}} \textbf{context} - Library context
 
3466
 
 
3467
\textbf{{[}in{]}} \textbf{principal} - Principal
 
3468
 
 
3469
\textbf{{[}out{]}} \textbf{name} - String representation of principal name
 
3470
 
 
3471
\end{description}\end{quote}
 
3472
\begin{quote}\begin{description}
 
3473
\item[{retval}] \leavevmode\begin{itemize}
 
3474
\item {} 
 
3475
0   Success
 
3476
 
 
3477
\end{itemize}
 
3478
 
 
3479
\item[{return}] \leavevmode\begin{itemize}
 
3480
\item {} 
 
3481
Kerberos error codes
 
3482
 
 
3483
\end{itemize}
 
3484
 
 
3485
\end{description}\end{quote}
 
3486
 
 
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()}}} .
 
3488
 
 
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.
 
3490
 
 
3491
 
 
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)}
 
3494
 
 
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}}{}
 
3497
\end{fulllineitems}
 
3498
 
 
3499
\begin{quote}\begin{description}
 
3500
\item[{param}] \leavevmode
 
3501
\textbf{{[}in{]}} \textbf{context} - Library context
 
3502
 
 
3503
\textbf{{[}in{]}} \textbf{principal} - Principal
 
3504
 
 
3505
\textbf{{[}inout{]}} \textbf{name} - String representation of principal name
 
3506
 
 
3507
\textbf{{[}inout{]}} \textbf{size} - Size of unparsed name
 
3508
 
 
3509
\end{description}\end{quote}
 
3510
\begin{quote}\begin{description}
 
3511
\item[{retval}] \leavevmode\begin{itemize}
 
3512
\item {} 
 
3513
0   Success
 
3514
 
 
3515
\end{itemize}
 
3516
 
 
3517
\item[{return}] \leavevmode\begin{itemize}
 
3518
\item {} 
 
3519
Kerberos error codes. On failure name is set to NULL
 
3520
 
 
3521
\end{itemize}
 
3522
 
 
3523
\end{description}\end{quote}
 
3524
 
 
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} .
 
3526
 
 
3527
If size is NULL, this function behaves exactly as {\hyperref[appdev/refs/api/krb5_unparse_name:krb5_unparse_name]{\code{krb5\_unparse\_name()}}} .
 
3528
 
 
3529
 
 
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)}
 
3532
 
 
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}}{}
 
3535
\end{fulllineitems}
 
3536
 
 
3537
\begin{quote}\begin{description}
 
3538
\item[{param}] \leavevmode
 
3539
\textbf{{[}in{]}} \textbf{context} - Library context
 
3540
 
 
3541
\textbf{{[}in{]}} \textbf{principal} - Principal
 
3542
 
 
3543
\textbf{{[}in{]}} \textbf{flags} - Flags
 
3544
 
 
3545
\textbf{{[}out{]}} \textbf{name} - String representation of principal name
 
3546
 
 
3547
\end{description}\end{quote}
 
3548
\begin{quote}\begin{description}
 
3549
\item[{retval}] \leavevmode\begin{itemize}
 
3550
\item {} 
 
3551
0   Success
 
3552
 
 
3553
\end{itemize}
 
3554
 
 
3555
\item[{return}] \leavevmode\begin{itemize}
 
3556
\item {} 
 
3557
Kerberos error codes. On failure name is set to NULL
 
3558
 
 
3559
\end{itemize}
 
3560
 
 
3561
\end{description}\end{quote}
 
3562
 
 
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.
 
3564
 
 
3565
The following flags are valid:
 
3566
\begin{quote}
 
3567
\begin{itemize}
 
3568
\item {} 
 
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
 
3570
 
 
3571
\item {} 
 
3572
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:KRB5_PRINCIPAL_UNPARSE_NO_REALM]{\code{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}}} - omit realm
 
3573
 
 
3574
\item {} 
 
3575
{\hyperref[appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:KRB5_PRINCIPAL_UNPARSE_DISPLAY]{\code{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}}} - do not quote special characters
 
3576
 
 
3577
\end{itemize}
 
3578
 
 
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.
 
3580
\end{quote}
 
3581
 
 
3582
 
 
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)}
 
3585
 
 
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}}{}
 
3588
\end{fulllineitems}
 
3589
 
 
3590
\begin{quote}\begin{description}
 
3591
\item[{param}] \leavevmode
 
3592
\textbf{{[}in{]}} \textbf{context} - Library context
 
3593
 
 
3594
\textbf{{[}in{]}} \textbf{principal} - Principal
 
3595
 
 
3596
\textbf{{[}in{]}} \textbf{flags} - Flags
 
3597
 
 
3598
\textbf{{[}out{]}} \textbf{name} - Single string format of principal name
 
3599
 
 
3600
\textbf{{[}out{]}} \textbf{size} - Size of unparsed name buffer
 
3601
 
 
3602
\end{description}\end{quote}
 
3603
\begin{quote}\begin{description}
 
3604
\item[{retval}] \leavevmode\begin{itemize}
 
3605
\item {} 
 
3606
0   Success
 
3607
 
 
3608
\end{itemize}
 
3609
 
 
3610
\item[{return}] \leavevmode\begin{itemize}
 
3611
\item {} 
 
3612
Kerberos error codes. On failure name is set to NULL
 
3613
 
 
3614
\end{itemize}
 
3615
 
 
3616
\end{description}\end{quote}
 
3617
 
 
3618
 
 
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)}
 
3621
 
 
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}}{}
 
3624
\end{fulllineitems}
 
3625
 
 
3626
\begin{quote}\begin{description}
 
3627
\item[{param}] \leavevmode
 
3628
\textbf{{[}in{]}} \textbf{context} - Library context
 
3629
 
 
3630
\textbf{{[}out{]}} \textbf{seconds} - System timeofday, seconds portion
 
3631
 
 
3632
\textbf{{[}out{]}} \textbf{microseconds} - System timeofday, microseconds portion
 
3633
 
 
3634
\end{description}\end{quote}
 
3635
\begin{quote}\begin{description}
 
3636
\item[{retval}] \leavevmode\begin{itemize}
 
3637
\item {} 
 
3638
0   Success
 
3639
 
 
3640
\end{itemize}
 
3641
 
 
3642
\item[{return}] \leavevmode\begin{itemize}
 
3643
\item {} 
 
3644
Kerberos error codes
 
3645
 
 
3646
\end{itemize}
 
3647
 
 
3648
\end{description}\end{quote}
 
3649
 
 
3650
This function retrieves the system time of day with the context specific time offset adjustment.
 
3651
 
 
3652
 
 
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)}
 
3655
 
 
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}}{}
 
3658
\end{fulllineitems}
 
3659
 
 
3660
\begin{quote}\begin{description}
 
3661
\item[{param}] \leavevmode
 
3662
\textbf{{[}in{]}} \textbf{context} - Library context
 
3663
 
 
3664
\textbf{{[}in{]}} \textbf{key} - Session key
 
3665
 
 
3666
\textbf{{[}in{]}} \textbf{ad\_kdcissued} - AD-KDCIssued authorization data to be unwrapped
 
3667
 
 
3668
\textbf{{[}out{]}} \textbf{issuer} - Name of issuing principal (or NULL)
 
3669
 
 
3670
\textbf{{[}out{]}} \textbf{authdata} - Unwrapped list of authorization data
 
3671
 
 
3672
\end{description}\end{quote}
 
3673
 
 
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} .
 
3675
 
 
3676
 
 
3677
\subsection{Rarely used public interfaces}
 
3678
\label{appdev/refs/api/index:rarely-used-public-interfaces}
 
3679
 
 
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)}
 
3682
 
 
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}}{}
 
3685
\end{fulllineitems}
 
3686
 
 
3687
\begin{quote}\begin{description}
 
3688
\item[{param}] \leavevmode
 
3689
\textbf{{[}in{]}} \textbf{context} - Library context
 
3690
 
 
3691
\textbf{{[}in{]}} \textbf{name} - V4 name
 
3692
 
 
3693
\textbf{{[}in{]}} \textbf{instance} - V4 instance
 
3694
 
 
3695
\textbf{{[}in{]}} \textbf{realm} - Realm
 
3696
 
 
3697
\textbf{{[}out{]}} \textbf{princ} - V5 principal
 
3698
 
 
3699
\end{description}\end{quote}
 
3700
\begin{quote}\begin{description}
 
3701
\item[{retval}] \leavevmode\begin{itemize}
 
3702
\item {} 
 
3703
0   Success; otherwise - Kerberos error codes
 
3704
 
 
3705
\end{itemize}
 
3706
 
 
3707
\end{description}\end{quote}
 
3708
 
 
3709
This function builds a \emph{princ} from V4 specification based on given input \emph{name.instance@realm} .
 
3710
 
 
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.
 
3712
 
 
3713
 
 
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)}
 
3716
 
 
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}}{}
 
3719
\end{fulllineitems}
 
3720
 
 
3721
\begin{quote}\begin{description}
 
3722
\item[{param}] \leavevmode
 
3723
\textbf{{[}in{]}} \textbf{context} - Library context
 
3724
 
 
3725
\textbf{{[}in{]}} \textbf{princ} - V5 Principal
 
3726
 
 
3727
\textbf{{[}out{]}} \textbf{name} - V4 principal's name to be filled in
 
3728
 
 
3729
\textbf{{[}out{]}} \textbf{inst} - V4 principal's instance name to be filled in
 
3730
 
 
3731
\textbf{{[}out{]}} \textbf{realm} - Principal's realm name to be filled in
 
3732
 
 
3733
\end{description}\end{quote}
 
3734
\begin{quote}\begin{description}
 
3735
\item[{retval}] \leavevmode\begin{itemize}
 
3736
\item {} 
 
3737
0   Success
 
3738
 
 
3739
\item {} 
 
3740
KRB5\_INVALID\_PRINCIPAL   Invalid principal name
 
3741
 
 
3742
\item {} 
 
3743
KRB5\_CONFIG\_CANTOPEN   Can't open or find Kerberos configuration file
 
3744
 
 
3745
\end{itemize}
 
3746
 
 
3747
\item[{return}] \leavevmode\begin{itemize}
 
3748
\item {} 
 
3749
Kerberos error codes
 
3750
 
 
3751
\end{itemize}
 
3752
 
 
3753
\end{description}\end{quote}
 
3754
 
 
3755
This function separates a V5 principal \emph{princ} into \emph{name} , \emph{instance} , and \emph{realm} .
 
3756
 
 
3757
 
 
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)}
 
3760
 
 
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}}{}
 
3763
\end{fulllineitems}
 
3764
 
 
3765
\begin{quote}\begin{description}
 
3766
\item[{param}] \leavevmode
 
3767
\textbf{{[}in{]}} \textbf{context} - Library context
 
3768
 
 
3769
\textbf{{[}in{]}} \textbf{addr1} - First address to be compared
 
3770
 
 
3771
\textbf{{[}in{]}} \textbf{addr2} - Second address to be compared
 
3772
 
 
3773
\end{description}\end{quote}
 
3774
\begin{quote}\begin{description}
 
3775
\item[{return}] \leavevmode\begin{itemize}
 
3776
\item {} 
 
3777
TRUE if the addresses are the same, FALSE otherwise
 
3778
 
 
3779
\end{itemize}
 
3780
 
 
3781
\end{description}\end{quote}
 
3782
 
 
3783
 
 
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)}
 
3786
 
 
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}}{}
 
3789
\end{fulllineitems}
 
3790
 
 
3791
\begin{quote}\begin{description}
 
3792
\item[{param}] \leavevmode
 
3793
\textbf{{[}in{]}} \textbf{context} - Library context
 
3794
 
 
3795
\textbf{{[}in{]}} \textbf{addr1} - First address
 
3796
 
 
3797
\textbf{{[}in{]}} \textbf{addr2} - Second address
 
3798
 
 
3799
\end{description}\end{quote}
 
3800
\begin{quote}\begin{description}
 
3801
\item[{retval}] \leavevmode\begin{itemize}
 
3802
\item {} 
 
3803
0   The two addresses are the same
 
3804
 
 
3805
\item {} 
 
3806
\textless{}   0 First address is less than second
 
3807
 
 
3808
\item {} 
 
3809
\textgreater{}   0 First address is greater than second
 
3810
 
 
3811
\end{itemize}
 
3812
 
 
3813
\end{description}\end{quote}
 
3814
 
 
3815
 
 
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)}
 
3818
 
 
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}}{}
 
3821
\end{fulllineitems}
 
3822
 
 
3823
\begin{quote}\begin{description}
 
3824
\item[{param}] \leavevmode
 
3825
\textbf{{[}in{]}} \textbf{context} - Library context
 
3826
 
 
3827
\textbf{{[}in{]}} \textbf{addr} - Address to search for
 
3828
 
 
3829
\textbf{{[}in{]}} \textbf{addrlist} - Address list to be searched (or NULL)
 
3830
 
 
3831
\end{description}\end{quote}
 
3832
\begin{quote}\begin{description}
 
3833
\item[{return}] \leavevmode\begin{itemize}
 
3834
\item {} 
 
3835
TRUE if addr is listed in addrlist , or addrlist is NULL; FALSE otherwise
 
3836
 
 
3837
\end{itemize}
 
3838
 
 
3839
\end{description}\end{quote}
 
3840
 
 
3841
\begin{notice}{note}{Note:}
 
3842
If \emph{addrlist} contains only a NetBIOS addresses, it will be treated as a null list.
 
3843
\end{notice}
 
3844
 
 
3845
 
 
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)}
 
3848
 
 
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}}{}
 
3851
\end{fulllineitems}
 
3852
 
 
3853
\begin{quote}\begin{description}
 
3854
\item[{param}] \leavevmode
 
3855
\textbf{{[}in{]}} \textbf{context} - Library context
 
3856
 
 
3857
\textbf{{[}in{]}} \textbf{enable} - Boolean flag
 
3858
 
 
3859
\end{description}\end{quote}
 
3860
\begin{quote}\begin{description}
 
3861
\item[{retval}] \leavevmode\begin{itemize}
 
3862
\item {} 
 
3863
0   (always)
 
3864
 
 
3865
\end{itemize}
 
3866
 
 
3867
\end{description}\end{quote}
 
3868
 
 
3869
This function allows an application to override the allow\_weak\_crypto setting. It is primarily for use by aklog.
 
3870
 
 
3871
 
 
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)}
 
3874
 
 
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}}{}
 
3877
\end{fulllineitems}
 
3878
 
 
3879
\begin{quote}\begin{description}
 
3880
\item[{param}] \leavevmode
 
3881
\textbf{{[}in{]}} \textbf{context} - Library context
 
3882
 
 
3883
\textbf{{[}in{]}} \textbf{aname} - Principal name
 
3884
 
 
3885
\textbf{{[}in{]}} \textbf{lnsize\_in} - Space available in \emph{lname}
 
3886
 
 
3887
\textbf{{[}out{]}} \textbf{lname} - Local name buffer to be filled in
 
3888
 
 
3889
\end{description}\end{quote}
 
3890
\begin{quote}\begin{description}
 
3891
\item[{retval}] \leavevmode\begin{itemize}
 
3892
\item {} 
 
3893
0   Success
 
3894
 
 
3895
\item {} 
 
3896
System   errors
 
3897
 
 
3898
\end{itemize}
 
3899
 
 
3900
\item[{return}] \leavevmode\begin{itemize}
 
3901
\item {} 
 
3902
Kerberos error codes
 
3903
 
 
3904
\end{itemize}
 
3905
 
 
3906
\end{description}\end{quote}
 
3907
 
 
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.
 
3909
 
 
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).
 
3911
 
 
3912
 
 
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)}
 
3915
 
 
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}}{}
 
3918
\end{fulllineitems}
 
3919
 
 
3920
\begin{quote}\begin{description}
 
3921
\item[{param}] \leavevmode
 
3922
\textbf{None}
 
3923
 
 
3924
\end{description}\end{quote}
 
3925
 
 
3926
This function returns constant storage that must not be freed.
 
3927
 
 
3928
 
 
3929
\strong{See Also:}
 
3930
 
 
3931
 
 
3932
{\hyperref[appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR]{\code{KRB5\_ANONYMOUS\_PRINCSTR}}}
 
3933
 
 
3934
 
 
3935
 
 
3936
 
 
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)}
 
3939
 
 
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}}{}
 
3942
\end{fulllineitems}
 
3943
 
 
3944
\begin{quote}\begin{description}
 
3945
\item[{param}] \leavevmode
 
3946
\textbf{None}
 
3947
 
 
3948
\end{description}\end{quote}
 
3949
 
 
3950
This function returns constant storage that must not be freed.
 
3951
 
 
3952
 
 
3953
\strong{See Also:}
 
3954
 
 
3955
 
 
3956
{\hyperref[appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR]{\code{KRB5\_ANONYMOUS\_REALMSTR}}}
 
3957
 
 
3958
 
 
3959
 
 
3960
 
 
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)}
 
3963
 
 
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}}{}
 
3966
\end{fulllineitems}
 
3967
 
 
3968
\begin{quote}\begin{description}
 
3969
\item[{param}] \leavevmode
 
3970
\textbf{{[}in{]}} \textbf{context} - Library context
 
3971
 
 
3972
\textbf{{[}in{]}} \textbf{appname} - Application name
 
3973
 
 
3974
\textbf{{[}in{]}} \textbf{realm} - Realm name
 
3975
 
 
3976
\textbf{{[}in{]}} \textbf{option} - Option to be checked
 
3977
 
 
3978
\textbf{{[}in{]}} \textbf{default\_value} - Default value to return if no match is found
 
3979
 
 
3980
\textbf{{[}out{]}} \textbf{ret\_value} - Boolean value of \emph{option}
 
3981
 
 
3982
\end{description}\end{quote}
 
3983
 
 
3984
This function gets the application defaults for \emph{option} based on the given \emph{appname} and/or \emph{realm} .
 
3985
 
 
3986
 
 
3987
\strong{See Also:}
 
3988
 
 
3989
 
 
3990
{\hyperref[appdev/refs/api/krb5_appdefault_string:krb5_appdefault_string]{\code{krb5\_appdefault\_string()}}}
 
3991
 
 
3992
 
 
3993
 
 
3994
 
 
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)}
 
3997
 
 
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}}{}
 
4000
\end{fulllineitems}
 
4001
 
 
4002
\begin{quote}\begin{description}
 
4003
\item[{param}] \leavevmode
 
4004
\textbf{{[}in{]}} \textbf{context} - Library context
 
4005
 
 
4006
\textbf{{[}in{]}} \textbf{appname} - Application name
 
4007
 
 
4008
\textbf{{[}in{]}} \textbf{realm} - Realm name
 
4009
 
 
4010
\textbf{{[}in{]}} \textbf{option} - Option to be checked
 
4011
 
 
4012
\textbf{{[}in{]}} \textbf{default\_value} - Default value to return if no match is found
 
4013
 
 
4014
\textbf{{[}out{]}} \textbf{ret\_value} - String value of \emph{option}
 
4015
 
 
4016
\end{description}\end{quote}
 
4017
 
 
4018
This function gets the application defaults for \emph{option} based on the given \emph{appname} and/or \emph{realm} .
 
4019
 
 
4020
 
 
4021
\strong{See Also:}
 
4022
 
 
4023
 
 
4024
{\hyperref[appdev/refs/api/krb5_appdefault_boolean:krb5_appdefault_boolean]{\code{krb5\_appdefault\_boolean()}}}
 
4025
 
 
4026
 
 
4027
 
 
4028
 
 
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)}
 
4031
 
 
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}}{}
 
4034
\end{fulllineitems}
 
4035
 
 
4036
\begin{quote}\begin{description}
 
4037
\item[{param}] \leavevmode
 
4038
\textbf{{[}in{]}} \textbf{context} - Library context
 
4039
 
 
4040
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context to be freed
 
4041
 
 
4042
\end{description}\end{quote}
 
4043
\begin{quote}\begin{description}
 
4044
\item[{retval}] \leavevmode\begin{itemize}
 
4045
\item {} 
 
4046
0   (always)
 
4047
 
 
4048
\end{itemize}
 
4049
 
 
4050
\end{description}\end{quote}
 
4051
 
 
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()}}} .
 
4053
 
 
4054
 
 
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)}
 
4057
 
 
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}}{}
 
4060
\end{fulllineitems}
 
4061
 
 
4062
\begin{quote}\begin{description}
 
4063
\item[{param}] \leavevmode
 
4064
\textbf{{[}in{]}} \textbf{context} - Library context
 
4065
 
 
4066
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4067
 
 
4068
\textbf{{[}in{]}} \textbf{infd} - Connected socket descriptor
 
4069
 
 
4070
\textbf{{[}in{]}} \textbf{flags} - Flags
 
4071
 
 
4072
\end{description}\end{quote}
 
4073
\begin{quote}\begin{description}
 
4074
\item[{retval}] \leavevmode\begin{itemize}
 
4075
\item {} 
 
4076
0   Success; otherwise - Kerberos error codes
 
4077
 
 
4078
\end{itemize}
 
4079
 
 
4080
\end{description}\end{quote}
 
4081
 
 
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:
 
4083
\begin{itemize}
 
4084
\item {} 
 
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.
 
4086
 
 
4087
\item {} 
 
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.
 
4089
 
 
4090
\item {} 
 
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.
 
4092
 
 
4093
\item {} 
 
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.
 
4095
 
 
4096
\end{itemize}
 
4097
 
 
4098
 
 
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)}
 
4101
 
 
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}}{}
 
4104
\end{fulllineitems}
 
4105
 
 
4106
\begin{quote}\begin{description}
 
4107
\item[{param}] \leavevmode
 
4108
\textbf{{[}in{]}} \textbf{context} - Library context
 
4109
 
 
4110
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4111
 
 
4112
\textbf{{[}out{]}} \textbf{func} - Checksum callback
 
4113
 
 
4114
\textbf{{[}out{]}} \textbf{data} - Callback argument
 
4115
 
 
4116
\end{description}\end{quote}
 
4117
\begin{quote}\begin{description}
 
4118
\item[{retval}] \leavevmode\begin{itemize}
 
4119
\item {} 
 
4120
0   (always)
 
4121
 
 
4122
\end{itemize}
 
4123
 
 
4124
\end{description}\end{quote}
 
4125
 
 
4126
 
 
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)}
 
4129
 
 
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}}{}
 
4132
\end{fulllineitems}
 
4133
 
 
4134
\begin{quote}\begin{description}
 
4135
\item[{param}] \leavevmode
 
4136
\textbf{{[}in{]}} \textbf{context} - Library context
 
4137
 
 
4138
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4139
 
 
4140
\textbf{{[}out{]}} \textbf{local\_addr} - Local address (NULL if not needed)
 
4141
 
 
4142
\textbf{{[}out{]}} \textbf{remote\_addr} - Remote address (NULL if not needed)
 
4143
 
 
4144
\end{description}\end{quote}
 
4145
\begin{quote}\begin{description}
 
4146
\item[{retval}] \leavevmode\begin{itemize}
 
4147
\item {} 
 
4148
0   Success; otherwise - Kerberos error codes
 
4149
 
 
4150
\end{itemize}
 
4151
 
 
4152
\end{description}\end{quote}
 
4153
 
 
4154
 
 
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)}
 
4157
 
 
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}}{}
 
4160
\end{fulllineitems}
 
4161
 
 
4162
\begin{quote}\begin{description}
 
4163
\item[{param}] \leavevmode
 
4164
\textbf{{[}in{]}} \textbf{context} - Library context
 
4165
 
 
4166
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4167
 
 
4168
\textbf{{[}out{]}} \textbf{authenticator} - Authenticator
 
4169
 
 
4170
\end{description}\end{quote}
 
4171
\begin{quote}\begin{description}
 
4172
\item[{retval}] \leavevmode\begin{itemize}
 
4173
\item {} 
 
4174
0   Success. Otherwise - Kerberos error codes
 
4175
 
 
4176
\end{itemize}
 
4177
 
 
4178
\end{description}\end{quote}
 
4179
 
 
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.
 
4181
 
 
4182
 
 
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)}
 
4185
 
 
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}}{}
 
4188
\end{fulllineitems}
 
4189
 
 
4190
\begin{quote}\begin{description}
 
4191
\item[{param}] \leavevmode
 
4192
\textbf{{[}in{]}} \textbf{context} - Library context
 
4193
 
 
4194
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4195
 
 
4196
\textbf{{[}out{]}} \textbf{flags} - Flags bit mask
 
4197
 
 
4198
\end{description}\end{quote}
 
4199
\begin{quote}\begin{description}
 
4200
\item[{retval}] \leavevmode\begin{itemize}
 
4201
\item {} 
 
4202
0   (always)
 
4203
 
 
4204
\end{itemize}
 
4205
 
 
4206
\end{description}\end{quote}
 
4207
 
 
4208
Valid values for \emph{flags} are:
 
4209
\begin{itemize}
 
4210
\item {} 
 
4211
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} Use timestamps
 
4212
 
 
4213
\item {} 
 
4214
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} Save timestamps
 
4215
 
 
4216
\item {} 
 
4217
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} Use sequence numbers
 
4218
 
 
4219
\item {} 
 
4220
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} Save sequence numbers
 
4221
 
 
4222
\end{itemize}
 
4223
 
 
4224
 
 
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)}
 
4227
 
 
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}}{}
 
4230
\end{fulllineitems}
 
4231
 
 
4232
\begin{quote}\begin{description}
 
4233
\item[{param}] \leavevmode
 
4234
\textbf{{[}in{]}} \textbf{context} - Library context
 
4235
 
 
4236
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4237
 
 
4238
\textbf{{[}out{]}} \textbf{keyblock} - Session key
 
4239
 
 
4240
\end{description}\end{quote}
 
4241
\begin{quote}\begin{description}
 
4242
\item[{retval}] \leavevmode\begin{itemize}
 
4243
\item {} 
 
4244
0   Success. Otherwise - Kerberos error codes
 
4245
 
 
4246
\end{itemize}
 
4247
 
 
4248
\end{description}\end{quote}
 
4249
 
 
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
 
4251
 
 
4252
 
 
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)}
 
4255
 
 
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}}{}
 
4258
\end{fulllineitems}
 
4259
 
 
4260
\begin{quote}\begin{description}
 
4261
\item[{param}] \leavevmode
 
4262
\textbf{{[}in{]}} \textbf{context} - Library context
 
4263
 
 
4264
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4265
 
 
4266
\textbf{{[}out{]}} \textbf{key} - Session key
 
4267
 
 
4268
\end{description}\end{quote}
 
4269
\begin{quote}\begin{description}
 
4270
\item[{retval}] \leavevmode\begin{itemize}
 
4271
\item {} 
 
4272
0   (always)
 
4273
 
 
4274
\end{itemize}
 
4275
 
 
4276
\end{description}\end{quote}
 
4277
 
 
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.
 
4279
 
 
4280
 
 
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)}
 
4283
 
 
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}}{}
 
4286
\end{fulllineitems}
 
4287
 
 
4288
\begin{quote}\begin{description}
 
4289
\item[{param}] \leavevmode
 
4290
\textbf{{[}in{]}} \textbf{context} - Library context
 
4291
 
 
4292
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4293
 
 
4294
\textbf{{[}out{]}} \textbf{seqnumber} - Local sequence number
 
4295
 
 
4296
\end{description}\end{quote}
 
4297
\begin{quote}\begin{description}
 
4298
\item[{retval}] \leavevmode\begin{itemize}
 
4299
\item {} 
 
4300
0   Success; otherwise - Kerberos error codes
 
4301
 
 
4302
\end{itemize}
 
4303
 
 
4304
\end{description}\end{quote}
 
4305
 
 
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.
 
4307
 
 
4308
 
 
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)}
 
4311
 
 
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}}{}
 
4314
\end{fulllineitems}
 
4315
 
 
4316
\begin{quote}\begin{description}
 
4317
\item[{param}] \leavevmode
 
4318
\textbf{{[}in{]}} \textbf{context} - Library context
 
4319
 
 
4320
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4321
 
 
4322
\textbf{{[}out{]}} \textbf{rcache} - Replay cache handle
 
4323
 
 
4324
\end{description}\end{quote}
 
4325
\begin{quote}\begin{description}
 
4326
\item[{retval}] \leavevmode\begin{itemize}
 
4327
\item {} 
 
4328
0   (always)
 
4329
 
 
4330
\end{itemize}
 
4331
 
 
4332
\end{description}\end{quote}
 
4333
 
 
4334
This function fetches the replay cache from \emph{auth\_context} . The caller should not close \emph{rcache} .
 
4335
 
 
4336
 
 
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)}
 
4339
 
 
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}}{}
 
4342
\end{fulllineitems}
 
4343
 
 
4344
\begin{quote}\begin{description}
 
4345
\item[{param}] \leavevmode
 
4346
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4347
 
 
4348
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4349
 
 
4350
\textbf{{[}out{]}} \textbf{keyblock} - Receiving subkey
 
4351
 
 
4352
\end{description}\end{quote}
 
4353
\begin{quote}\begin{description}
 
4354
\item[{retval}] \leavevmode\begin{itemize}
 
4355
\item {} 
 
4356
0   Success; otherwise - Kerberos error codes
 
4357
 
 
4358
\end{itemize}
 
4359
 
 
4360
\end{description}\end{quote}
 
4361
 
 
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.
 
4363
 
 
4364
 
 
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)}
 
4367
 
 
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}}{}
 
4370
\end{fulllineitems}
 
4371
 
 
4372
\begin{quote}\begin{description}
 
4373
\item[{param}] \leavevmode
 
4374
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4375
 
 
4376
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4377
 
 
4378
\textbf{{[}out{]}} \textbf{key} - Receiving subkey
 
4379
 
 
4380
\end{description}\end{quote}
 
4381
\begin{quote}\begin{description}
 
4382
\item[{retval}] \leavevmode\begin{itemize}
 
4383
\item {} 
 
4384
0   Success; otherwise - Kerberos error codes
 
4385
 
 
4386
\end{itemize}
 
4387
 
 
4388
\end{description}\end{quote}
 
4389
 
 
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.
 
4391
 
 
4392
 
 
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)}
 
4395
 
 
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}}{}
 
4398
\end{fulllineitems}
 
4399
 
 
4400
\begin{quote}\begin{description}
 
4401
\item[{param}] \leavevmode
 
4402
\textbf{{[}in{]}} \textbf{context} - Library context
 
4403
 
 
4404
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4405
 
 
4406
\textbf{{[}out{]}} \textbf{seqnumber} - Remote sequence number
 
4407
 
 
4408
\end{description}\end{quote}
 
4409
\begin{quote}\begin{description}
 
4410
\item[{retval}] \leavevmode\begin{itemize}
 
4411
\item {} 
 
4412
0   Success; otherwise - Kerberos error codes
 
4413
 
 
4414
\end{itemize}
 
4415
 
 
4416
\end{description}\end{quote}
 
4417
 
 
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.
 
4419
 
 
4420
 
 
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)}
 
4423
 
 
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}}{}
 
4426
\end{fulllineitems}
 
4427
 
 
4428
\begin{quote}\begin{description}
 
4429
\item[{param}] \leavevmode
 
4430
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4431
 
 
4432
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4433
 
 
4434
\textbf{{[}out{]}} \textbf{keyblock} - Send subkey
 
4435
 
 
4436
\end{description}\end{quote}
 
4437
\begin{quote}\begin{description}
 
4438
\item[{retval}] \leavevmode\begin{itemize}
 
4439
\item {} 
 
4440
0   Success; otherwise - Kerberos error codes
 
4441
 
 
4442
\end{itemize}
 
4443
 
 
4444
\end{description}\end{quote}
 
4445
 
 
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.
 
4447
 
 
4448
 
 
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)}
 
4451
 
 
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}}{}
 
4454
\end{fulllineitems}
 
4455
 
 
4456
\begin{quote}\begin{description}
 
4457
\item[{param}] \leavevmode
 
4458
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4459
 
 
4460
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4461
 
 
4462
\textbf{{[}out{]}} \textbf{key} - Send subkey
 
4463
 
 
4464
\end{description}\end{quote}
 
4465
\begin{quote}\begin{description}
 
4466
\item[{retval}] \leavevmode\begin{itemize}
 
4467
\item {} 
 
4468
0   Success; otherwise - Kerberos error codes
 
4469
 
 
4470
\end{itemize}
 
4471
 
 
4472
\end{description}\end{quote}
 
4473
 
 
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.
 
4475
 
 
4476
 
 
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)}
 
4479
 
 
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}}{}
 
4482
\end{fulllineitems}
 
4483
 
 
4484
\begin{quote}\begin{description}
 
4485
\item[{param}] \leavevmode
 
4486
\textbf{{[}in{]}} \textbf{context} - Library context
 
4487
 
 
4488
\textbf{{[}out{]}} \textbf{auth\_context} - Authentication context
 
4489
 
 
4490
\end{description}\end{quote}
 
4491
\begin{quote}\begin{description}
 
4492
\item[{retval}] \leavevmode\begin{itemize}
 
4493
\item {} 
 
4494
0   Success; otherwise - Kerberos error codes
 
4495
 
 
4496
\end{itemize}
 
4497
 
 
4498
\end{description}\end{quote}
 
4499
 
 
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.
 
4501
 
 
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.
 
4503
 
 
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.
 
4505
 
 
4506
 
 
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)}
 
4509
 
 
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}}{}
 
4512
\end{fulllineitems}
 
4513
 
 
4514
\begin{quote}\begin{description}
 
4515
\item[{param}] \leavevmode
 
4516
\textbf{{[}in{]}} \textbf{context} - Library context
 
4517
 
 
4518
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4519
 
 
4520
\textbf{{[}in{]}} \textbf{func} - Checksum callback
 
4521
 
 
4522
\textbf{{[}in{]}} \textbf{data} - Callback argument
 
4523
 
 
4524
\end{description}\end{quote}
 
4525
\begin{quote}\begin{description}
 
4526
\item[{retval}] \leavevmode\begin{itemize}
 
4527
\item {} 
 
4528
0   (always)
 
4529
 
 
4530
\end{itemize}
 
4531
 
 
4532
\end{description}\end{quote}
 
4533
 
 
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} .
 
4535
 
 
4536
 
 
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)}
 
4539
 
 
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}}{}
 
4542
\end{fulllineitems}
 
4543
 
 
4544
\begin{quote}\begin{description}
 
4545
\item[{param}] \leavevmode
 
4546
\textbf{{[}in{]}} \textbf{context} - Library context
 
4547
 
 
4548
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4549
 
 
4550
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type
 
4551
 
 
4552
\end{description}\end{quote}
 
4553
\begin{quote}\begin{description}
 
4554
\item[{retval}] \leavevmode\begin{itemize}
 
4555
\item {} 
 
4556
0   Success. Otherwise - Kerberos error codes
 
4557
 
 
4558
\end{itemize}
 
4559
 
 
4560
\end{description}\end{quote}
 
4561
 
 
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.
 
4563
 
 
4564
 
 
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)}
 
4567
 
 
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}}{}
 
4570
\end{fulllineitems}
 
4571
 
 
4572
\begin{quote}\begin{description}
 
4573
\item[{param}] \leavevmode
 
4574
\textbf{{[}in{]}} \textbf{context} - Library context
 
4575
 
 
4576
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4577
 
 
4578
\textbf{{[}in{]}} \textbf{local\_addr} - Local address
 
4579
 
 
4580
\textbf{{[}in{]}} \textbf{remote\_addr} - Remote address
 
4581
 
 
4582
\end{description}\end{quote}
 
4583
\begin{quote}\begin{description}
 
4584
\item[{retval}] \leavevmode\begin{itemize}
 
4585
\item {} 
 
4586
0   Success; otherwise - Kerberos error codes
 
4587
 
 
4588
\end{itemize}
 
4589
 
 
4590
\end{description}\end{quote}
 
4591
 
 
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.
 
4593
 
 
4594
 
 
4595
\strong{See Also:}
 
4596
 
 
4597
 
 
4598
{\hyperref[appdev/refs/api/krb5_auth_con_genaddrs:krb5_auth_con_genaddrs]{\code{krb5\_auth\_con\_genaddrs()}}}
 
4599
 
 
4600
 
 
4601
 
 
4602
 
 
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)}
 
4605
 
 
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}}{}
 
4608
\end{fulllineitems}
 
4609
 
 
4610
\begin{quote}\begin{description}
 
4611
\item[{param}] \leavevmode
 
4612
\textbf{{[}in{]}} \textbf{context} - Library context
 
4613
 
 
4614
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
4615
 
 
4616
\textbf{{[}in{]}} \textbf{flags} - Flags bit mask
 
4617
 
 
4618
\end{description}\end{quote}
 
4619
\begin{quote}\begin{description}
 
4620
\item[{retval}] \leavevmode\begin{itemize}
 
4621
\item {} 
 
4622
0   (always)
 
4623
 
 
4624
\end{itemize}
 
4625
 
 
4626
\end{description}\end{quote}
 
4627
 
 
4628
Valid values for \emph{flags} are:
 
4629
\begin{itemize}
 
4630
\item {} 
 
4631
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME]{\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} Use timestamps
 
4632
 
 
4633
\item {} 
 
4634
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME]{\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} Save timestamps
 
4635
 
 
4636
\item {} 
 
4637
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} Use sequence numbers
 
4638
 
 
4639
\item {} 
 
4640
{\hyperref[appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE]{\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} Save sequence numbers
 
4641
 
 
4642
\end{itemize}
 
4643
 
 
4644
 
 
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)}
 
4647
 
 
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}}{}
 
4650
\end{fulllineitems}
 
4651
 
 
4652
\begin{quote}\begin{description}
 
4653
\item[{param}] \leavevmode
 
4654
\textbf{{[}in{]}} \textbf{context} - Library context
 
4655
 
 
4656
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4657
 
 
4658
\textbf{{[}in{]}} \textbf{local\_port} - Local port
 
4659
 
 
4660
\textbf{{[}in{]}} \textbf{remote\_port} - Remote port
 
4661
 
 
4662
\end{description}\end{quote}
 
4663
\begin{quote}\begin{description}
 
4664
\item[{retval}] \leavevmode\begin{itemize}
 
4665
\item {} 
 
4666
0   Success; otherwise - Kerberos error codes
 
4667
 
 
4668
\end{itemize}
 
4669
 
 
4670
\end{description}\end{quote}
 
4671
 
 
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.
 
4673
 
 
4674
 
 
4675
\strong{See Also:}
 
4676
 
 
4677
 
 
4678
{\hyperref[appdev/refs/api/krb5_auth_con_genaddrs:krb5_auth_con_genaddrs]{\code{krb5\_auth\_con\_genaddrs()}}}
 
4679
 
 
4680
 
 
4681
 
 
4682
 
 
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)}
 
4685
 
 
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}}{}
 
4688
\end{fulllineitems}
 
4689
 
 
4690
\begin{quote}\begin{description}
 
4691
\item[{param}] \leavevmode
 
4692
\textbf{{[}in{]}} \textbf{context} - Library context
 
4693
 
 
4694
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4695
 
 
4696
\textbf{{[}in{]}} \textbf{rcache} - Replay cache haddle
 
4697
 
 
4698
\end{description}\end{quote}
 
4699
\begin{quote}\begin{description}
 
4700
\item[{retval}] \leavevmode\begin{itemize}
 
4701
\item {} 
 
4702
0   Success; otherwise - Kerberos error codes
 
4703
 
 
4704
\end{itemize}
 
4705
 
 
4706
\end{description}\end{quote}
 
4707
 
 
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.
 
4709
 
 
4710
 
 
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)}
 
4713
 
 
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}}{}
 
4716
\end{fulllineitems}
 
4717
 
 
4718
\begin{quote}\begin{description}
 
4719
\item[{param}] \leavevmode
 
4720
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4721
 
 
4722
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4723
 
 
4724
\textbf{{[}in{]}} \textbf{keyblock} - Receiving subkey
 
4725
 
 
4726
\end{description}\end{quote}
 
4727
\begin{quote}\begin{description}
 
4728
\item[{retval}] \leavevmode\begin{itemize}
 
4729
\item {} 
 
4730
0   Success; otherwise - Kerberos error codes
 
4731
 
 
4732
\end{itemize}
 
4733
 
 
4734
\end{description}\end{quote}
 
4735
 
 
4736
This function sets the receiving subkey in \emph{ac} to a copy of \emph{keyblock} .
 
4737
 
 
4738
 
 
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)}
 
4741
 
 
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}}{}
 
4744
\end{fulllineitems}
 
4745
 
 
4746
\begin{quote}\begin{description}
 
4747
\item[{param}] \leavevmode
 
4748
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4749
 
 
4750
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4751
 
 
4752
\textbf{{[}in{]}} \textbf{key} - Receiving subkey
 
4753
 
 
4754
\end{description}\end{quote}
 
4755
\begin{quote}\begin{description}
 
4756
\item[{retval}] \leavevmode\begin{itemize}
 
4757
\item {} 
 
4758
0   Success; otherwise - Kerberos error codes
 
4759
 
 
4760
\end{itemize}
 
4761
 
 
4762
\end{description}\end{quote}
 
4763
 
 
4764
This function sets the receiving subkey in \emph{ac} to \emph{key} , incrementing its reference count.
 
4765
 
 
4766
\begin{notice}{note}{Note:}
 
4767
First introduced in 1.9
 
4768
\end{notice}
 
4769
 
 
4770
 
 
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)}
 
4773
 
 
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}}{}
 
4776
\end{fulllineitems}
 
4777
 
 
4778
\begin{quote}\begin{description}
 
4779
\item[{param}] \leavevmode
 
4780
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4781
 
 
4782
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4783
 
 
4784
\textbf{{[}in{]}} \textbf{keyblock} - Send subkey
 
4785
 
 
4786
\end{description}\end{quote}
 
4787
\begin{quote}\begin{description}
 
4788
\item[{retval}] \leavevmode\begin{itemize}
 
4789
\item {} 
 
4790
0   Success. Otherwise - Kerberos error codes
 
4791
 
 
4792
\end{itemize}
 
4793
 
 
4794
\end{description}\end{quote}
 
4795
 
 
4796
This function sets the send subkey in \emph{ac} to a copy of \emph{keyblock} .
 
4797
 
 
4798
 
 
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)}
 
4801
 
 
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}}{}
 
4804
\end{fulllineitems}
 
4805
 
 
4806
\begin{quote}\begin{description}
 
4807
\item[{param}] \leavevmode
 
4808
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
4809
 
 
4810
\textbf{{[}in{]}} \textbf{ac} - Authentication context
 
4811
 
 
4812
\textbf{{[}out{]}} \textbf{key} - Send subkey
 
4813
 
 
4814
\end{description}\end{quote}
 
4815
\begin{quote}\begin{description}
 
4816
\item[{retval}] \leavevmode\begin{itemize}
 
4817
\item {} 
 
4818
0   Success; otherwise - Kerberos error codes
 
4819
 
 
4820
\end{itemize}
 
4821
 
 
4822
\end{description}\end{quote}
 
4823
 
 
4824
This function sets the send subkey in \emph{ac} to \emph{key} , incrementing its reference count.
 
4825
 
 
4826
\begin{notice}{note}{Note:}
 
4827
First introduced in 1.9
 
4828
\end{notice}
 
4829
 
 
4830
 
 
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)}
 
4833
 
 
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}}{}
 
4836
\end{fulllineitems}
 
4837
 
 
4838
\begin{quote}\begin{description}
 
4839
\item[{param}] \leavevmode
 
4840
\textbf{{[}in{]}} \textbf{context} - Library context
 
4841
 
 
4842
\textbf{{[}in{]}} \textbf{auth\_context} - Authentication context
 
4843
 
 
4844
\textbf{{[}in{]}} \textbf{keyblock} - User key
 
4845
 
 
4846
\end{description}\end{quote}
 
4847
\begin{quote}\begin{description}
 
4848
\item[{retval}] \leavevmode\begin{itemize}
 
4849
\item {} 
 
4850
0   Success; otherwise - Kerberos error codes
 
4851
 
 
4852
\end{itemize}
 
4853
 
 
4854
\end{description}\end{quote}
 
4855
 
 
4856
 
 
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)}
 
4859
 
 
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}}{}
 
4862
\end{fulllineitems}
 
4863
 
 
4864
\begin{quote}\begin{description}
 
4865
\item[{param}] \leavevmode
 
4866
\textbf{{[}in{]}} \textbf{context} - Library context
 
4867
 
 
4868
\textbf{{[}in{]}} \textbf{client} - Client principal
 
4869
 
 
4870
\textbf{{[}out{]}} \textbf{cache\_out} - Credential cache handle
 
4871
 
 
4872
\end{description}\end{quote}
 
4873
\begin{quote}\begin{description}
 
4874
\item[{retval}] \leavevmode\begin{itemize}
 
4875
\item {} 
 
4876
0   Success
 
4877
 
 
4878
\item {} 
 
4879
KRB5\_CC\_NOTFOUND   None
 
4880
 
 
4881
\end{itemize}
 
4882
 
 
4883
\end{description}\end{quote}
 
4884
 
 
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.
 
4886
 
 
4887
\begin{notice}{note}{Note:}
 
4888
First introduced in 1.10
 
4889
\end{notice}
 
4890
 
 
4891
 
 
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)}
 
4894
 
 
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}}{}
 
4897
\end{fulllineitems}
 
4898
 
 
4899
\begin{quote}\begin{description}
 
4900
\item[{param}] \leavevmode
 
4901
\textbf{{[}in{]}} \textbf{context} - Library context
 
4902
 
 
4903
\textbf{{[}in{]}} \textbf{incc} - Credential cache to be copied
 
4904
 
 
4905
\textbf{{[}out{]}} \textbf{outcc} - Copy of credential cache to be filled in
 
4906
 
 
4907
\end{description}\end{quote}
 
4908
\begin{quote}\begin{description}
 
4909
\item[{retval}] \leavevmode\begin{itemize}
 
4910
\item {} 
 
4911
0   Success; otherwise - Kerberos error codes
 
4912
 
 
4913
\end{itemize}
 
4914
 
 
4915
\end{description}\end{quote}
 
4916
 
 
4917
 
 
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)}
 
4920
 
 
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}}{}
 
4923
\end{fulllineitems}
 
4924
 
 
4925
\begin{quote}\begin{description}
 
4926
\item[{param}] \leavevmode
 
4927
\textbf{{[}in{]}} \textbf{context} - Library context
 
4928
 
 
4929
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
4930
 
 
4931
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
 
4932
 
 
4933
\end{description}\end{quote}
 
4934
\begin{quote}\begin{description}
 
4935
\item[{retval}] \leavevmode\begin{itemize}
 
4936
\item {} 
 
4937
0   (always)
 
4938
 
 
4939
\end{itemize}
 
4940
 
 
4941
\end{description}\end{quote}
 
4942
 
 
4943
This function finishes processing credential cache entries and invalidates \emph{cursor} .
 
4944
 
 
4945
 
 
4946
\strong{See Also:}
 
4947
 
 
4948
 
 
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()}}}
 
4950
 
 
4951
 
 
4952
 
 
4953
 
 
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)}
 
4956
 
 
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}}{}
 
4959
\end{fulllineitems}
 
4960
 
 
4961
\begin{quote}\begin{description}
 
4962
\item[{param}] \leavevmode
 
4963
\textbf{{[}in{]}} \textbf{context} - Library context
 
4964
 
 
4965
\textbf{{[}in{]}} \textbf{id} - Credential cache handle
 
4966
 
 
4967
\textbf{{[}in{]}} \textbf{principal} - Configuration for this principal; if NULL, global for the whole cache
 
4968
 
 
4969
\textbf{{[}in{]}} \textbf{key} - Name of config variable
 
4970
 
 
4971
\textbf{{[}out{]}} \textbf{data} - Data to be fetched
 
4972
 
 
4973
\end{description}\end{quote}
 
4974
\begin{quote}\begin{description}
 
4975
\item[{retval}] \leavevmode\begin{itemize}
 
4976
\item {} 
 
4977
0   Success
 
4978
 
 
4979
\end{itemize}
 
4980
 
 
4981
\item[{return}] \leavevmode\begin{itemize}
 
4982
\item {} 
 
4983
Kerberos error codes
 
4984
 
 
4985
\end{itemize}
 
4986
 
 
4987
\end{description}\end{quote}
 
4988
 
 
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.
 
4990
 
 
4991
 
 
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)}
 
4994
 
 
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}}{}
 
4997
\end{fulllineitems}
 
4998
 
 
4999
\begin{quote}\begin{description}
 
5000
\item[{param}] \leavevmode
 
5001
\textbf{{[}in{]}} \textbf{context} - Library context
 
5002
 
 
5003
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5004
 
 
5005
\textbf{{[}out{]}} \textbf{flags} - Flag bit mask
 
5006
 
 
5007
\end{description}\end{quote}
 
5008
\begin{quote}\begin{description}
 
5009
\item[{retval}] \leavevmode\begin{itemize}
 
5010
\item {} 
 
5011
0   Success; otherwise - Kerberos error codes
 
5012
 
 
5013
\end{itemize}
 
5014
 
 
5015
\end{description}\end{quote}
 
5016
 
 
5017
\begin{notice}{warning}{Warning:}
 
5018
For memory credential cache always returns a flag mask of 0.
 
5019
\end{notice}
 
5020
 
 
5021
 
 
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)}
 
5024
 
 
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}}{}
 
5027
\end{fulllineitems}
 
5028
 
 
5029
\begin{quote}\begin{description}
 
5030
\item[{param}] \leavevmode
 
5031
\textbf{{[}in{]}} \textbf{context} - Library context
 
5032
 
 
5033
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5034
 
 
5035
\textbf{{[}out{]}} \textbf{fullname\_out} - Full name of cache
 
5036
 
 
5037
\end{description}\end{quote}
 
5038
 
 
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.
 
5040
 
 
5041
\begin{notice}{note}{Note:}
 
5042
First introduced in 1.10
 
5043
\end{notice}
 
5044
 
 
5045
 
 
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)}
 
5048
 
 
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}}{}
 
5051
\end{fulllineitems}
 
5052
 
 
5053
\begin{quote}\begin{description}
 
5054
\item[{param}] \leavevmode
 
5055
\textbf{{[}in{]}} \textbf{context} - Library context
 
5056
 
 
5057
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
5058
 
 
5059
\textbf{{[}out{]}} \textbf{change\_time} - The last change time of \emph{ccache}
 
5060
 
 
5061
\end{description}\end{quote}
 
5062
 
 
5063
If an error occurs, \emph{change\_time} is set to 0.
 
5064
 
 
5065
 
 
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)}
 
5068
 
 
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}}{}
 
5071
\end{fulllineitems}
 
5072
 
 
5073
\begin{quote}\begin{description}
 
5074
\item[{param}] \leavevmode
 
5075
\textbf{{[}in{]}} \textbf{context} - Library context
 
5076
 
 
5077
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
5078
 
 
5079
\end{description}\end{quote}
 
5080
\begin{quote}\begin{description}
 
5081
\item[{retval}] \leavevmode\begin{itemize}
 
5082
\item {} 
 
5083
0   Success; otherwise - Kerberos error codes
 
5084
 
 
5085
\end{itemize}
 
5086
 
 
5087
\end{description}\end{quote}
 
5088
 
 
5089
Use {\hyperref[appdev/refs/api/krb5_cc_unlock:krb5_cc_unlock]{\code{krb5\_cc\_unlock()}}} to unlock the lock.
 
5090
 
 
5091
 
 
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)}
 
5094
 
 
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}}{}
 
5097
\end{fulllineitems}
 
5098
 
 
5099
\begin{quote}\begin{description}
 
5100
\item[{param}] \leavevmode
 
5101
\textbf{{[}in{]}} \textbf{context} - Library context
 
5102
 
 
5103
\textbf{{[}in{]}} \textbf{src} - The credential cache to move the content from
 
5104
 
 
5105
\textbf{{[}in{]}} \textbf{dst} - The credential cache to move the content to
 
5106
 
 
5107
\end{description}\end{quote}
 
5108
\begin{quote}\begin{description}
 
5109
\item[{retval}] \leavevmode\begin{itemize}
 
5110
\item {} 
 
5111
0   Success; src is closed.
 
5112
 
 
5113
\end{itemize}
 
5114
 
 
5115
\item[{return}] \leavevmode\begin{itemize}
 
5116
\item {} 
 
5117
Kerberos error codes; src is still allocated.
 
5118
 
 
5119
\end{itemize}
 
5120
 
 
5121
\end{description}\end{quote}
 
5122
 
 
5123
This function reinitializes \emph{dst} and populates it with the credentials and default principal of \emph{src} ; then, if successful, destroys \emph{src} .
 
5124
 
 
5125
 
 
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)}
 
5128
 
 
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}}{}
 
5131
\end{fulllineitems}
 
5132
 
 
5133
\begin{quote}\begin{description}
 
5134
\item[{param}] \leavevmode
 
5135
\textbf{{[}in{]}} \textbf{context} - Library context
 
5136
 
 
5137
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5138
 
 
5139
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
 
5140
 
 
5141
\textbf{{[}out{]}} \textbf{creds} - Next credential cache entry
 
5142
 
 
5143
\end{description}\end{quote}
 
5144
\begin{quote}\begin{description}
 
5145
\item[{retval}] \leavevmode\begin{itemize}
 
5146
\item {} 
 
5147
0   Success; otherwise - Kerberos error codes
 
5148
 
 
5149
\end{itemize}
 
5150
 
 
5151
\end{description}\end{quote}
 
5152
 
 
5153
This function fills in \emph{creds} with the next entry in \emph{cache} and advances \emph{cursor} .
 
5154
 
 
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.
 
5156
 
 
5157
 
 
5158
\strong{See Also:}
 
5159
 
 
5160
 
 
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()
 
5162
 
 
5163
 
 
5164
 
 
5165
 
 
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)}
 
5168
 
 
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}}{}
 
5171
\end{fulllineitems}
 
5172
 
 
5173
\begin{quote}\begin{description}
 
5174
\item[{param}] \leavevmode
 
5175
\textbf{{[}in{]}} \textbf{context} - Library context
 
5176
 
 
5177
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5178
 
 
5179
\textbf{{[}in{]}} \textbf{flags} - Bitwise-ORed search flags
 
5180
 
 
5181
\textbf{{[}in{]}} \textbf{creds} - Credentials to be matched
 
5182
 
 
5183
\end{description}\end{quote}
 
5184
\begin{quote}\begin{description}
 
5185
\item[{retval}] \leavevmode\begin{itemize}
 
5186
\item {} 
 
5187
KRB5\_CC\_NOSUPP   Not implemented for this cache type
 
5188
 
 
5189
\end{itemize}
 
5190
 
 
5191
\item[{return}] \leavevmode\begin{itemize}
 
5192
\item {} 
 
5193
No matches found; Data cannot be deleted; Kerberos error codes
 
5194
 
 
5195
\end{itemize}
 
5196
 
 
5197
\end{description}\end{quote}
 
5198
 
 
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()}}} .
 
5200
 
 
5201
\begin{notice}{warning}{Warning:}
 
5202
This function is not implemented for some cache types.
 
5203
\end{notice}
 
5204
 
 
5205
 
 
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)}
 
5208
 
 
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}}{}
 
5211
\end{fulllineitems}
 
5212
 
 
5213
\begin{quote}\begin{description}
 
5214
\item[{param}] \leavevmode
 
5215
\textbf{{[}in{]}} \textbf{context} - Library context
 
5216
 
 
5217
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5218
 
 
5219
\textbf{{[}in{]}} \textbf{flags} - Flags bit mask
 
5220
 
 
5221
\textbf{{[}in{]}} \textbf{mcreds} - Credentials to match
 
5222
 
 
5223
\textbf{{[}out{]}} \textbf{creds} - Credentials matching the requested value
 
5224
 
 
5225
\end{description}\end{quote}
 
5226
\begin{quote}\begin{description}
 
5227
\item[{retval}] \leavevmode\begin{itemize}
 
5228
\item {} 
 
5229
0   Success; otherwise - Kerberos error codes
 
5230
 
 
5231
\end{itemize}
 
5232
 
 
5233
\end{description}\end{quote}
 
5234
 
 
5235
This function searches a credential cache for credentials matching \emph{mcreds} and returns it if found.
 
5236
 
 
5237
Valid values for \emph{flags} are:
 
5238
\begin{quote}
 
5239
\begin{itemize}
 
5240
\item {} 
 
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} .
 
5242
 
 
5243
\item {} 
 
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.
 
5245
 
 
5246
\item {} 
 
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.
 
5248
 
 
5249
\item {} 
 
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.
 
5251
 
 
5252
\item {} 
 
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.
 
5254
 
 
5255
\item {} 
 
5256
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:KRB5_TC_MATCH_AUTHDATA]{\code{KRB5\_TC\_MATCH\_AUTHDATA}}} The authorization data must match.
 
5257
 
 
5258
\item {} 
 
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.
 
5260
 
 
5261
\item {} 
 
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.
 
5263
 
 
5264
\item {} 
 
5265
{\hyperref[appdev/refs/macros/KRB5_TC_MATCH_KTYPE:KRB5_TC_MATCH_KTYPE]{\code{KRB5\_TC\_MATCH\_KTYPE}}} The encryption key types must match.
 
5266
 
 
5267
\item {} 
 
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.
 
5269
 
 
5270
\end{itemize}
 
5271
 
 
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.
 
5273
\end{quote}
 
5274
 
 
5275
 
 
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)}
 
5278
 
 
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}}{}
 
5281
\end{fulllineitems}
 
5282
 
 
5283
\begin{quote}\begin{description}
 
5284
\item[{param}] \leavevmode
 
5285
\textbf{{[}in{]}} \textbf{context} - Library context
 
5286
 
 
5287
\textbf{{[}in{]}} \textbf{server} - Server principal
 
5288
 
 
5289
\textbf{{[}out{]}} \textbf{cache\_out} - Credential cache handle
 
5290
 
 
5291
\textbf{{[}out{]}} \textbf{princ\_out} - Client principal
 
5292
 
 
5293
\end{description}\end{quote}
 
5294
\begin{quote}\begin{description}
 
5295
\item[{return}] \leavevmode\begin{itemize}
 
5296
\item {} 
 
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.
 
5298
 
 
5299
\end{itemize}
 
5300
 
 
5301
\end{description}\end{quote}
 
5302
 
 
5303
Select a cache within the collection containing credentials most appropriate for use with \emph{server} , according to configured rules and heuristics.
 
5304
 
 
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.
 
5306
 
 
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.
 
5308
 
 
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.
 
5310
 
 
5311
Any other error code indicates a fatal error in the processing of a cache selection mechanism.
 
5312
 
 
5313
\begin{notice}{note}{Note:}
 
5314
First introduced in 1.10
 
5315
\end{notice}
 
5316
 
 
5317
 
 
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)}
 
5320
 
 
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}}{}
 
5323
\end{fulllineitems}
 
5324
 
 
5325
\begin{quote}\begin{description}
 
5326
\item[{param}] \leavevmode
 
5327
\textbf{{[}in{]}} \textbf{context} - Library context
 
5328
 
 
5329
\textbf{{[}in{]}} \textbf{id} - Credential cache handle
 
5330
 
 
5331
\textbf{{[}in{]}} \textbf{principal} - Configuration for a specific principal; if NULL, global for the whole cache
 
5332
 
 
5333
\textbf{{[}in{]}} \textbf{key} - Name of config variable
 
5334
 
 
5335
\textbf{{[}in{]}} \textbf{data} - Data to store, or NULL to remove
 
5336
 
 
5337
\end{description}\end{quote}
 
5338
\begin{quote}\begin{description}
 
5339
\item[{retval}] \leavevmode\begin{itemize}
 
5340
\item {} 
 
5341
0   Success
 
5342
 
 
5343
\end{itemize}
 
5344
 
 
5345
\item[{return}] \leavevmode\begin{itemize}
 
5346
\item {} 
 
5347
Kerberos error codes
 
5348
 
 
5349
\end{itemize}
 
5350
 
 
5351
\end{description}\end{quote}
 
5352
 
 
5353
\begin{notice}{warning}{Warning:}
 
5354
Before version 1.10 \emph{data} was assumed to be always non-null.
 
5355
\end{notice}
 
5356
 
 
5357
\begin{notice}{note}{Note:}
 
5358
Existing configuration under the same key is over-written.
 
5359
\end{notice}
 
5360
 
 
5361
 
 
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)}
 
5364
 
 
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}}{}
 
5367
\end{fulllineitems}
 
5368
 
 
5369
\begin{quote}\begin{description}
 
5370
\item[{param}] \leavevmode
 
5371
\textbf{{[}inout{]}} \textbf{context} - Library context
 
5372
 
 
5373
\textbf{{[}in{]}} \textbf{name} - Default credential cache name
 
5374
 
 
5375
\end{description}\end{quote}
 
5376
\begin{quote}\begin{description}
 
5377
\item[{retval}] \leavevmode\begin{itemize}
 
5378
\item {} 
 
5379
0   Success
 
5380
 
 
5381
\item {} 
 
5382
KV5M\_CONTEXT   Bad magic number for \_krb5\_context structure
 
5383
 
 
5384
\end{itemize}
 
5385
 
 
5386
\item[{return}] \leavevmode\begin{itemize}
 
5387
\item {} 
 
5388
Kerberos error codes
 
5389
 
 
5390
\end{itemize}
 
5391
 
 
5392
\end{description}\end{quote}
 
5393
 
 
5394
This function frees the old default credential cache name and then sets it to \emph{name} .
 
5395
 
 
5396
 
 
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)}
 
5399
 
 
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}}{}
 
5402
\end{fulllineitems}
 
5403
 
 
5404
\begin{quote}\begin{description}
 
5405
\item[{param}] \leavevmode
 
5406
\textbf{{[}in{]}} \textbf{context} - Library context
 
5407
 
 
5408
\textbf{{[}inout{]}} \textbf{cache} - Credential cache handle
 
5409
 
 
5410
\textbf{{[}in{]}} \textbf{flags} - Flag bit mask
 
5411
 
 
5412
\end{description}\end{quote}
 
5413
\begin{quote}\begin{description}
 
5414
\item[{retval}] \leavevmode\begin{itemize}
 
5415
\item {} 
 
5416
0   Success; otherwise - Kerberos error codes
 
5417
 
 
5418
\end{itemize}
 
5419
 
 
5420
\end{description}\end{quote}
 
5421
 
 
5422
This function resets \emph{cache} flags to \emph{flags} .
 
5423
 
 
5424
 
 
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)}
 
5427
 
 
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}}{}
 
5430
\end{fulllineitems}
 
5431
 
 
5432
\begin{quote}\begin{description}
 
5433
\item[{param}] \leavevmode
 
5434
\textbf{{[}in{]}} \textbf{context} - Library context
 
5435
 
 
5436
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5437
 
 
5438
\textbf{{[}out{]}} \textbf{cursor} - Cursor
 
5439
 
 
5440
\end{description}\end{quote}
 
5441
\begin{quote}\begin{description}
 
5442
\item[{retval}] \leavevmode\begin{itemize}
 
5443
\item {} 
 
5444
0   Success; otherwise - Kerberos error codes
 
5445
 
 
5446
\end{itemize}
 
5447
 
 
5448
\end{description}\end{quote}
 
5449
\begin{quote}
 
5450
 
 
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.
 
5452
\end{quote}
 
5453
 
 
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.
 
5456
\end{notice}
 
5457
 
 
5458
 
 
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)}
 
5461
 
 
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}}{}
 
5464
\end{fulllineitems}
 
5465
 
 
5466
\begin{quote}\begin{description}
 
5467
\item[{param}] \leavevmode
 
5468
\textbf{{[}in{]}} \textbf{context} - Library context
 
5469
 
 
5470
\textbf{{[}inout{]}} \textbf{cache} - Credential cache handle
 
5471
 
 
5472
\textbf{{[}in{]}} \textbf{creds} - Credentials to be stored in cache
 
5473
 
 
5474
\end{description}\end{quote}
 
5475
\begin{quote}\begin{description}
 
5476
\item[{retval}] \leavevmode\begin{itemize}
 
5477
\item {} 
 
5478
0   Success
 
5479
 
 
5480
\end{itemize}
 
5481
 
 
5482
\item[{return}] \leavevmode\begin{itemize}
 
5483
\item {} 
 
5484
Permission errors; storage failure errors; Kerberos error codes
 
5485
 
 
5486
\end{itemize}
 
5487
 
 
5488
\end{description}\end{quote}
 
5489
 
 
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.
 
5491
 
 
5492
 
 
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)}
 
5495
 
 
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}}{}
 
5498
\end{fulllineitems}
 
5499
 
 
5500
\begin{quote}\begin{description}
 
5501
\item[{param}] \leavevmode
 
5502
\textbf{{[}in{]}} \textbf{context} - Library context
 
5503
 
 
5504
\textbf{{[}in{]}} \textbf{type} - Credential cache type
 
5505
 
 
5506
\end{description}\end{quote}
 
5507
\begin{quote}\begin{description}
 
5508
\item[{retval}] \leavevmode\begin{itemize}
 
5509
\item {} 
 
5510
TRUE   if type supports switching
 
5511
 
 
5512
\item {} 
 
5513
FALSE   if it does not or is not a valid credential cache type.
 
5514
 
 
5515
\end{itemize}
 
5516
 
 
5517
\end{description}\end{quote}
 
5518
 
 
5519
\begin{notice}{note}{Note:}
 
5520
First introduced in 1.10
 
5521
\end{notice}
 
5522
 
 
5523
 
 
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)}
 
5526
 
 
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}}{}
 
5529
\end{fulllineitems}
 
5530
 
 
5531
\begin{quote}\begin{description}
 
5532
\item[{param}] \leavevmode
 
5533
\textbf{{[}in{]}} \textbf{context} - Library context
 
5534
 
 
5535
\textbf{{[}in{]}} \textbf{cache} - Credential cache handle
 
5536
 
 
5537
\end{description}\end{quote}
 
5538
\begin{quote}\begin{description}
 
5539
\item[{retval}] \leavevmode\begin{itemize}
 
5540
\item {} 
 
5541
0   Success, or the type of cache doesn't support switching
 
5542
 
 
5543
\end{itemize}
 
5544
 
 
5545
\item[{return}] \leavevmode\begin{itemize}
 
5546
\item {} 
 
5547
Kerberos error codes
 
5548
 
 
5549
\end{itemize}
 
5550
 
 
5551
\end{description}\end{quote}
 
5552
 
 
5553
If the type of \emph{cache} supports it, set \emph{cache} to be the primary credential cache for the collection it belongs to.
 
5554
 
 
5555
 
 
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)}
 
5558
 
 
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}}{}
 
5561
\end{fulllineitems}
 
5562
 
 
5563
\begin{quote}\begin{description}
 
5564
\item[{param}] \leavevmode
 
5565
\textbf{{[}in{]}} \textbf{context} - Library context
 
5566
 
 
5567
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
5568
 
 
5569
\end{description}\end{quote}
 
5570
\begin{quote}\begin{description}
 
5571
\item[{retval}] \leavevmode\begin{itemize}
 
5572
\item {} 
 
5573
0   Success; otherwise - Kerberos error codes
 
5574
 
 
5575
\end{itemize}
 
5576
 
 
5577
\end{description}\end{quote}
 
5578
 
 
5579
This function unlocks the \emph{ccache} locked by {\hyperref[appdev/refs/api/krb5_cc_lock:krb5_cc_lock]{\code{krb5\_cc\_lock()}}} .
 
5580
 
 
5581
 
 
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)}
 
5584
 
 
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}}{}
 
5587
\end{fulllineitems}
 
5588
 
 
5589
\begin{quote}\begin{description}
 
5590
\item[{param}] \leavevmode
 
5591
\textbf{{[}in{]}} \textbf{context} - Library context
 
5592
 
 
5593
\textbf{{[}in{]}} \textbf{cursor} - Cursor
 
5594
 
 
5595
\end{description}\end{quote}
 
5596
\begin{quote}\begin{description}
 
5597
\item[{retval}] \leavevmode\begin{itemize}
 
5598
\item {} 
 
5599
0   Success; otherwise - Kerberos error codes
 
5600
 
 
5601
\end{itemize}
 
5602
 
 
5603
\end{description}\end{quote}
 
5604
 
 
5605
 
 
5606
\strong{See Also:}
 
5607
 
 
5608
 
 
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()}}}
 
5610
 
 
5611
 
 
5612
 
 
5613
 
 
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)}
 
5616
 
 
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}}{}
 
5619
\end{fulllineitems}
 
5620
 
 
5621
\begin{quote}\begin{description}
 
5622
\item[{param}] \leavevmode
 
5623
\textbf{{[}in{]}} \textbf{context} - Library context
 
5624
 
 
5625
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
 
5626
 
 
5627
\end{description}\end{quote}
 
5628
\begin{quote}\begin{description}
 
5629
\item[{retval}] \leavevmode\begin{itemize}
 
5630
\item {} 
 
5631
0   Success; otherwise - Kerberos error codes
 
5632
 
 
5633
\end{itemize}
 
5634
 
 
5635
\end{description}\end{quote}
 
5636
 
 
5637
Get a new cache iteration \emph{cursor} that will iterate over all known credential caches independent of type.
 
5638
 
 
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.
 
5640
 
 
5641
 
 
5642
\strong{See Also:}
 
5643
 
 
5644
 
 
5645
{\hyperref[appdev/refs/api/krb5_cccol_cursor_next:krb5_cccol_cursor_next]{\code{krb5\_cccol\_cursor\_next()}}}
 
5646
 
 
5647
 
 
5648
 
 
5649
 
 
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)}
 
5652
 
 
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}}{}
 
5655
\end{fulllineitems}
 
5656
 
 
5657
\begin{quote}\begin{description}
 
5658
\item[{param}] \leavevmode
 
5659
\textbf{{[}in{]}} \textbf{context} - Library context
 
5660
 
 
5661
\textbf{{[}inout{]}} \textbf{cursor} - Cursor
 
5662
 
 
5663
\textbf{{[}out{]}} \textbf{ccache} - Credential cache handle
 
5664
 
 
5665
\end{description}\end{quote}
 
5666
\begin{quote}\begin{description}
 
5667
\item[{retval}] \leavevmode\begin{itemize}
 
5668
\item {} 
 
5669
0   Success; otherwise - Kerberos error codes
 
5670
 
 
5671
\end{itemize}
 
5672
 
 
5673
\end{description}\end{quote}
 
5674
 
 
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.
 
5676
 
 
5677
 
 
5678
\strong{See Also:}
 
5679
 
 
5680
 
 
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()}}}
 
5682
 
 
5683
 
 
5684
 
 
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.
 
5687
\end{notice}
 
5688
 
 
5689
 
 
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)}
 
5692
 
 
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}}{}
 
5695
\end{fulllineitems}
 
5696
 
 
5697
\begin{quote}\begin{description}
 
5698
\item[{param}] \leavevmode
 
5699
\textbf{{[}in{]}} \textbf{context} - Library context
 
5700
 
 
5701
\end{description}\end{quote}
 
5702
\begin{quote}\begin{description}
 
5703
\item[{retval}] \leavevmode\begin{itemize}
 
5704
\item {} 
 
5705
0   Credentials are available in the collection
 
5706
 
 
5707
\item {} 
 
5708
KRB5\_CC\_NOTFOUND   The collection contains no credentials
 
5709
 
 
5710
\end{itemize}
 
5711
 
 
5712
\end{description}\end{quote}
 
5713
 
 
5714
\begin{notice}{note}{Note:}
 
5715
First introduced in 1.11
 
5716
\end{notice}
 
5717
 
 
5718
 
 
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)}
 
5721
 
 
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}}{}
 
5724
\end{fulllineitems}
 
5725
 
 
5726
\begin{quote}\begin{description}
 
5727
\item[{param}] \leavevmode
 
5728
\textbf{{[}in{]}} \textbf{context} - Library context
 
5729
 
 
5730
\textbf{{[}out{]}} \textbf{change\_time} - Last modification timestamp
 
5731
 
 
5732
\end{description}\end{quote}
 
5733
\begin{quote}\begin{description}
 
5734
\item[{retval}] \leavevmode\begin{itemize}
 
5735
\item {} 
 
5736
0   Success; otherwise - Kerberos error codes
 
5737
 
 
5738
\end{itemize}
 
5739
 
 
5740
\end{description}\end{quote}
 
5741
 
 
5742
This function returns the most recent modification time of any known credential cache, ignoring any caches which cannot supply a last modification time.
 
5743
 
 
5744
If there are no known credential caches, \emph{change\_time} is set to 0.
 
5745
 
 
5746
 
 
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)}
 
5749
 
 
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}}{}
 
5752
\end{fulllineitems}
 
5753
 
 
5754
\begin{quote}\begin{description}
 
5755
\item[{param}] \leavevmode
 
5756
\textbf{{[}in{]}} \textbf{context} - Library context
 
5757
 
 
5758
\end{description}\end{quote}
 
5759
\begin{quote}\begin{description}
 
5760
\item[{retval}] \leavevmode\begin{itemize}
 
5761
\item {} 
 
5762
0   Success; otherwise - Kerberos error codes
 
5763
 
 
5764
\end{itemize}
 
5765
 
 
5766
\end{description}\end{quote}
 
5767
 
 
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.
 
5769
 
 
5770
Use {\hyperref[appdev/refs/api/krb5_cccol_unlock:krb5_cccol_unlock]{\code{krb5\_cccol\_unlock()}}} to unlock the lock.
 
5771
 
 
5772
 
 
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)}
 
5775
 
 
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}}{}
 
5778
\end{fulllineitems}
 
5779
 
 
5780
\begin{quote}\begin{description}
 
5781
\item[{param}] \leavevmode
 
5782
\textbf{{[}in{]}} \textbf{context} - Library context
 
5783
 
 
5784
\end{description}\end{quote}
 
5785
\begin{quote}\begin{description}
 
5786
\item[{retval}] \leavevmode\begin{itemize}
 
5787
\item {} 
 
5788
0   Success; otherwise - Kerberos error codes
 
5789
 
 
5790
\end{itemize}
 
5791
 
 
5792
\end{description}\end{quote}
 
5793
 
 
5794
This function unlocks the lock from {\hyperref[appdev/refs/api/krb5_cccol_lock:krb5_cccol_lock]{\code{krb5\_cccol\_lock()}}} .
 
5795
 
 
5796
 
 
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)}
 
5799
 
 
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}}{}
 
5802
\end{fulllineitems}
 
5803
 
 
5804
\begin{quote}\begin{description}
 
5805
\item[{param}] \leavevmode
 
5806
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
5807
 
 
5808
\end{description}\end{quote}
 
5809
 
 
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.
 
5811
 
 
5812
 
 
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)}
 
5815
 
 
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}}{}
 
5818
\end{fulllineitems}
 
5819
 
 
5820
\begin{quote}\begin{description}
 
5821
\item[{param}] \leavevmode
 
5822
\textbf{{[}in{]}} \textbf{context} - Library context
 
5823
 
 
5824
\textbf{{[}in{]}} \textbf{date} - Timestamp to check
 
5825
 
 
5826
\end{description}\end{quote}
 
5827
\begin{quote}\begin{description}
 
5828
\item[{retval}] \leavevmode\begin{itemize}
 
5829
\item {} 
 
5830
0   Success
 
5831
 
 
5832
\item {} 
 
5833
KRB5KRB\_AP\_ERR\_SKEW    date is not within allowable clock skew
 
5834
 
 
5835
\end{itemize}
 
5836
 
 
5837
\end{description}\end{quote}
 
5838
 
 
5839
This function checks if \emph{date} is close enough to the current time according to the configured allowable clock skew.
 
5840
 
 
5841
\begin{notice}{note}{Note:}
 
5842
First introduced in 1.10
 
5843
\end{notice}
 
5844
 
 
5845
 
 
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)}
 
5848
 
 
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}}{}
 
5851
\end{fulllineitems}
 
5852
 
 
5853
\begin{quote}\begin{description}
 
5854
\item[{param}] \leavevmode
 
5855
\textbf{{[}in{]}} \textbf{context} - Library context
 
5856
 
 
5857
\textbf{{[}in{]}} \textbf{inaddr} - Array of addresses to be copied
 
5858
 
 
5859
\textbf{{[}out{]}} \textbf{outaddr} - Copy of array of addresses
 
5860
 
 
5861
\end{description}\end{quote}
 
5862
\begin{quote}\begin{description}
 
5863
\item[{retval}] \leavevmode\begin{itemize}
 
5864
\item {} 
 
5865
0   Success; otherwise - Kerberos error codes
 
5866
 
 
5867
\end{itemize}
 
5868
 
 
5869
\end{description}\end{quote}
 
5870
 
 
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.
 
5872
 
 
5873
 
 
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)}
 
5876
 
 
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}}{}
 
5879
\end{fulllineitems}
 
5880
 
 
5881
\begin{quote}\begin{description}
 
5882
\item[{param}] \leavevmode
 
5883
\textbf{{[}in{]}} \textbf{context} - Library context
 
5884
 
 
5885
\textbf{{[}in{]}} \textbf{in\_authdat} - List of \emph{krb5\_authdata} structures
 
5886
 
 
5887
\textbf{{[}out{]}} \textbf{out} - New array of \emph{krb5\_authdata} structures
 
5888
 
 
5889
\end{description}\end{quote}
 
5890
\begin{quote}\begin{description}
 
5891
\item[{retval}] \leavevmode\begin{itemize}
 
5892
\item {} 
 
5893
0   Success; otherwise - Kerberos error codes
 
5894
 
 
5895
\end{itemize}
 
5896
 
 
5897
\end{description}\end{quote}
 
5898
 
 
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.
 
5900
 
 
5901
\begin{notice}{note}{Note:}
 
5902
The last array entry in \emph{in\_authdat} must be a NULL pointer.
 
5903
\end{notice}
 
5904
 
 
5905
 
 
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)}
 
5908
 
 
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}}{}
 
5911
\end{fulllineitems}
 
5912
 
 
5913
\begin{quote}\begin{description}
 
5914
\item[{param}] \leavevmode
 
5915
\textbf{{[}in{]}} \textbf{context} - Library context
 
5916
 
 
5917
\textbf{{[}in{]}} \textbf{authfrom} - krb5\_authenticator structure to be copied
 
5918
 
 
5919
\textbf{{[}out{]}} \textbf{authto} - Copy of krb5\_authenticator structure
 
5920
 
 
5921
\end{description}\end{quote}
 
5922
\begin{quote}\begin{description}
 
5923
\item[{retval}] \leavevmode\begin{itemize}
 
5924
\item {} 
 
5925
0   Success; otherwise - Kerberos error codes
 
5926
 
 
5927
\end{itemize}
 
5928
 
 
5929
\end{description}\end{quote}
 
5930
 
 
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.
 
5932
 
 
5933
 
 
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)}
 
5936
 
 
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}}{}
 
5939
\end{fulllineitems}
 
5940
 
 
5941
\begin{quote}\begin{description}
 
5942
\item[{param}] \leavevmode
 
5943
\textbf{{[}in{]}} \textbf{context} - Library context
 
5944
 
 
5945
\textbf{{[}in{]}} \textbf{ckfrom} - Checksum to be copied
 
5946
 
 
5947
\textbf{{[}out{]}} \textbf{ckto} - Copy of krb5\_checksum structure
 
5948
 
 
5949
\end{description}\end{quote}
 
5950
\begin{quote}\begin{description}
 
5951
\item[{retval}] \leavevmode\begin{itemize}
 
5952
\item {} 
 
5953
0   Success; otherwise - Kerberos error codes
 
5954
 
 
5955
\end{itemize}
 
5956
 
 
5957
\end{description}\end{quote}
 
5958
 
 
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.
 
5960
 
 
5961
 
 
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)}
 
5964
 
 
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}}{}
 
5967
\end{fulllineitems}
 
5968
 
 
5969
\begin{quote}\begin{description}
 
5970
\item[{param}] \leavevmode
 
5971
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
5972
 
 
5973
\textbf{{[}out{]}} \textbf{nctx\_out} - New context structure
 
5974
 
 
5975
\end{description}\end{quote}
 
5976
\begin{quote}\begin{description}
 
5977
\item[{retval}] \leavevmode\begin{itemize}
 
5978
\item {} 
 
5979
0   Success
 
5980
 
 
5981
\end{itemize}
 
5982
 
 
5983
\item[{return}] \leavevmode\begin{itemize}
 
5984
\item {} 
 
5985
Kerberos error codes
 
5986
 
 
5987
\end{itemize}
 
5988
 
 
5989
\end{description}\end{quote}
 
5990
 
 
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.
 
5992
 
 
5993
 
 
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)}
 
5996
 
 
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}}{}
 
5999
\end{fulllineitems}
 
6000
 
 
6001
\begin{quote}\begin{description}
 
6002
\item[{param}] \leavevmode
 
6003
\textbf{{[}in{]}} \textbf{context} - Library context
 
6004
 
 
6005
\textbf{{[}in{]}} \textbf{incred} - Credentials structure to be copied
 
6006
 
 
6007
\textbf{{[}out{]}} \textbf{outcred} - Copy of \emph{incred}
 
6008
 
 
6009
\end{description}\end{quote}
 
6010
\begin{quote}\begin{description}
 
6011
\item[{retval}] \leavevmode\begin{itemize}
 
6012
\item {} 
 
6013
0   Success; otherwise - Kerberos error codes
 
6014
 
 
6015
\end{itemize}
 
6016
 
 
6017
\end{description}\end{quote}
 
6018
 
 
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.
 
6020
 
 
6021
 
 
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)}
 
6024
 
 
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}}{}
 
6027
\end{fulllineitems}
 
6028
 
 
6029
\begin{quote}\begin{description}
 
6030
\item[{param}] \leavevmode
 
6031
\textbf{{[}in{]}} \textbf{context} - Library context
 
6032
 
 
6033
\textbf{{[}in{]}} \textbf{indata} - Data object to be copied
 
6034
 
 
6035
\textbf{{[}out{]}} \textbf{outdata} - Copy of \emph{indata}
 
6036
 
 
6037
\end{description}\end{quote}
 
6038
\begin{quote}\begin{description}
 
6039
\item[{retval}] \leavevmode\begin{itemize}
 
6040
\item {} 
 
6041
0   Success; otherwise - Kerberos error codes
 
6042
 
 
6043
\end{itemize}
 
6044
 
 
6045
\end{description}\end{quote}
 
6046
 
 
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.
 
6048
 
 
6049
 
 
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)}
 
6052
 
 
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}}{}
 
6055
\end{fulllineitems}
 
6056
 
 
6057
\begin{quote}\begin{description}
 
6058
\item[{param}] \leavevmode
 
6059
\textbf{{[}in{]}} \textbf{dest\_ctx} - Library context to copy message to
 
6060
 
 
6061
\textbf{{[}in{]}} \textbf{src\_ctx} - Library context with current message
 
6062
 
 
6063
\end{description}\end{quote}
 
6064
 
 
6065
 
 
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)}
 
6068
 
 
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}}{}
 
6071
\end{fulllineitems}
 
6072
 
 
6073
\begin{quote}\begin{description}
 
6074
\item[{param}] \leavevmode
 
6075
\textbf{{[}in{]}} \textbf{context} - Library context
 
6076
 
 
6077
\textbf{{[}in{]}} \textbf{from} - Keyblock to be copied
 
6078
 
 
6079
\textbf{{[}out{]}} \textbf{to} - Copy of keyblock \emph{from}
 
6080
 
 
6081
\end{description}\end{quote}
 
6082
\begin{quote}\begin{description}
 
6083
\item[{retval}] \leavevmode\begin{itemize}
 
6084
\item {} 
 
6085
0   Success; otherwise - Kerberos error codes
 
6086
 
 
6087
\end{itemize}
 
6088
 
 
6089
\end{description}\end{quote}
 
6090
 
 
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.
 
6092
 
 
6093
 
 
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)}
 
6096
 
 
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}}{}
 
6099
\end{fulllineitems}
 
6100
 
 
6101
\begin{quote}\begin{description}
 
6102
\item[{param}] \leavevmode
 
6103
\textbf{{[}in{]}} \textbf{context} - Library context
 
6104
 
 
6105
\textbf{{[}in{]}} \textbf{from} - Key to be copied
 
6106
 
 
6107
\textbf{{[}out{]}} \textbf{to} - Output key
 
6108
 
 
6109
\end{description}\end{quote}
 
6110
\begin{quote}\begin{description}
 
6111
\item[{retval}] \leavevmode\begin{itemize}
 
6112
\item {} 
 
6113
0   Success; otherwise - Kerberos error codes
 
6114
 
 
6115
\end{itemize}
 
6116
 
 
6117
\end{description}\end{quote}
 
6118
 
 
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.
 
6120
 
 
6121
 
 
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)}
 
6124
 
 
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}}{}
 
6127
\end{fulllineitems}
 
6128
 
 
6129
\begin{quote}\begin{description}
 
6130
\item[{param}] \leavevmode
 
6131
\textbf{{[}in{]}} \textbf{context} - Library context
 
6132
 
 
6133
\textbf{{[}in{]}} \textbf{inprinc} - Principal to be copied
 
6134
 
 
6135
\textbf{{[}out{]}} \textbf{outprinc} - Copy of \emph{inprinc}
 
6136
 
 
6137
\end{description}\end{quote}
 
6138
\begin{quote}\begin{description}
 
6139
\item[{retval}] \leavevmode\begin{itemize}
 
6140
\item {} 
 
6141
0   Success; otherwise - Kerberos error codes
 
6142
 
 
6143
\end{itemize}
 
6144
 
 
6145
\end{description}\end{quote}
 
6146
 
 
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.
 
6148
 
 
6149
 
 
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)}
 
6152
 
 
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}}{}
 
6155
\end{fulllineitems}
 
6156
 
 
6157
\begin{quote}\begin{description}
 
6158
\item[{param}] \leavevmode
 
6159
\textbf{{[}in{]}} \textbf{context} - Library context
 
6160
 
 
6161
\textbf{{[}in{]}} \textbf{from} - Ticket to be copied
 
6162
 
 
6163
\textbf{{[}out{]}} \textbf{pto} - Copy of ticket
 
6164
 
 
6165
\end{description}\end{quote}
 
6166
\begin{quote}\begin{description}
 
6167
\item[{retval}] \leavevmode\begin{itemize}
 
6168
\item {} 
 
6169
0   Success; otherwise - Kerberos error codes
 
6170
 
 
6171
\end{itemize}
 
6172
 
 
6173
\end{description}\end{quote}
 
6174
 
 
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.
 
6176
 
 
6177
 
 
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)}
 
6180
 
 
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}}{}
 
6183
\end{fulllineitems}
 
6184
 
 
6185
\begin{quote}\begin{description}
 
6186
\item[{param}] \leavevmode
 
6187
\textbf{{[}in{]}} \textbf{context} - Library context
 
6188
 
 
6189
\textbf{{[}in{]}} \textbf{ticket\_authdata} - Authorization data list from ticket
 
6190
 
 
6191
\textbf{{[}in{]}} \textbf{ap\_req\_authdata} - Authorization data list from AP request
 
6192
 
 
6193
\textbf{{[}in{]}} \textbf{ad\_type} - Authorization data type to find
 
6194
 
 
6195
\textbf{{[}out{]}} \textbf{results} - List of matching entries
 
6196
 
 
6197
\end{description}\end{quote}
 
6198
 
 
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.
 
6200
 
 
6201
\begin{notice}{note}{Note:}
 
6202
First introduced in 1.10
 
6203
\end{notice}
 
6204
 
 
6205
 
 
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)}
 
6208
 
 
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}}{}
 
6211
\end{fulllineitems}
 
6212
 
 
6213
\begin{quote}\begin{description}
 
6214
\item[{param}] \leavevmode
 
6215
\textbf{{[}in{]}} \textbf{context} - Library context
 
6216
 
 
6217
\textbf{{[}in{]}} \textbf{val} - Array of addresses to be freed
 
6218
 
 
6219
\end{description}\end{quote}
 
6220
 
 
6221
This function frees the contents of \emph{val} and the array itself.
 
6222
 
 
6223
\begin{notice}{note}{Note:}
 
6224
The last entry in the array must be a NULL pointer.
 
6225
\end{notice}
 
6226
 
 
6227
 
 
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)}
 
6230
 
 
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}}{}
 
6233
\end{fulllineitems}
 
6234
 
 
6235
\begin{quote}\begin{description}
 
6236
\item[{param}] \leavevmode
 
6237
\textbf{{[}in{]}} \textbf{context} - Library context
 
6238
 
 
6239
\textbf{{[}in{]}} \textbf{val} - AP-REP enc part to be freed
 
6240
 
 
6241
\end{description}\end{quote}
 
6242
 
 
6243
This function frees the contents of \emph{val} and the structure itself.
 
6244
 
 
6245
 
 
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)}
 
6248
 
 
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}}{}
 
6251
\end{fulllineitems}
 
6252
 
 
6253
\begin{quote}\begin{description}
 
6254
\item[{param}] \leavevmode
 
6255
\textbf{{[}in{]}} \textbf{context} - Library context
 
6256
 
 
6257
\textbf{{[}in{]}} \textbf{val} - Array of authentication data to be freed
 
6258
 
 
6259
\end{description}\end{quote}
 
6260
 
 
6261
This function frees the contents of \emph{val} and the array itself.
 
6262
 
 
6263
\begin{notice}{note}{Note:}
 
6264
The last entry in the array must be a NULL pointer.
 
6265
\end{notice}
 
6266
 
 
6267
 
 
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)}
 
6270
 
 
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}}{}
 
6273
\end{fulllineitems}
 
6274
 
 
6275
\begin{quote}\begin{description}
 
6276
\item[{param}] \leavevmode
 
6277
\textbf{{[}in{]}} \textbf{context} - Library context
 
6278
 
 
6279
\textbf{{[}in{]}} \textbf{val} - Authenticator structure to be freed
 
6280
 
 
6281
\end{description}\end{quote}
 
6282
 
 
6283
This function frees the contents of \emph{val} and the structure itself.
 
6284
 
 
6285
 
 
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)}
 
6288
 
 
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}}{}
 
6291
\end{fulllineitems}
 
6292
 
 
6293
\begin{quote}\begin{description}
 
6294
\item[{param}] \leavevmode
 
6295
\textbf{{[}in{]}} \textbf{context} - Library context
 
6296
 
 
6297
\textbf{{[}in{]}} \textbf{val} - Credential structure to free contents of
 
6298
 
 
6299
\end{description}\end{quote}
 
6300
 
 
6301
This function frees the contents of \emph{val} , but not the structure itself.
 
6302
 
 
6303
 
 
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)}
 
6306
 
 
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}}{}
 
6309
\end{fulllineitems}
 
6310
 
 
6311
\begin{quote}\begin{description}
 
6312
\item[{param}] \leavevmode
 
6313
\textbf{{[}in{]}} \textbf{context} - Library context
 
6314
 
 
6315
\textbf{{[}in{]}} \textbf{val} - Credential structure to be freed.
 
6316
 
 
6317
\end{description}\end{quote}
 
6318
 
 
6319
This function frees the contents of \emph{val} and the structure itself.
 
6320
 
 
6321
 
 
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)}
 
6324
 
 
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}}{}
 
6327
\end{fulllineitems}
 
6328
 
 
6329
\begin{quote}\begin{description}
 
6330
\item[{param}] \leavevmode
 
6331
\textbf{{[}in{]}} \textbf{context} - Library context
 
6332
 
 
6333
\textbf{{[}in{]}} \textbf{val} - Data structure to be freed
 
6334
 
 
6335
\end{description}\end{quote}
 
6336
 
 
6337
This function frees the contents of \emph{val} and the structure itself.
 
6338
 
 
6339
 
 
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)}
 
6342
 
 
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}}{}
 
6345
\end{fulllineitems}
 
6346
 
 
6347
\begin{quote}\begin{description}
 
6348
\item[{param}] \leavevmode
 
6349
\textbf{{[}in{]}} \textbf{context} - Library context
 
6350
 
 
6351
\textbf{{[}in{]}} \textbf{val} - Data structure to free contents of
 
6352
 
 
6353
\end{description}\end{quote}
 
6354
 
 
6355
This function frees the contents of \emph{val} , but not the structure itself.
 
6356
 
 
6357
 
 
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)}
 
6360
 
 
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}}{}
 
6363
\end{fulllineitems}
 
6364
 
 
6365
\begin{quote}\begin{description}
 
6366
\item[{param}] \leavevmode
 
6367
\textbf{{[}in{]}} \textbf{context} - Library context
 
6368
 
 
6369
\textbf{{[}in{]}} \textbf{lrealm} - Realm to be freed
 
6370
 
 
6371
\end{description}\end{quote}
 
6372
 
 
6373
 
 
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)}
 
6376
 
 
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}}{}
 
6379
\end{fulllineitems}
 
6380
 
 
6381
\begin{quote}\begin{description}
 
6382
\item[{param}] \leavevmode
 
6383
\textbf{{[}in{]}} \textbf{context} - Library context
 
6384
 
 
6385
\textbf{{[}in{]}} \textbf{val} - Error data structure to be freed
 
6386
 
 
6387
\end{description}\end{quote}
 
6388
 
 
6389
This function frees the contents of \emph{val} and the structure itself.
 
6390
 
 
6391
 
 
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)}
 
6394
 
 
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}}{}
 
6397
\end{fulllineitems}
 
6398
 
 
6399
\begin{quote}\begin{description}
 
6400
\item[{param}] \leavevmode
 
6401
\textbf{{[}in{]}} \textbf{context} - Library context
 
6402
 
 
6403
\textbf{{[}in{]}} \textbf{realmlist} - List of realm names to be released
 
6404
 
 
6405
\end{description}\end{quote}
 
6406
\begin{quote}\begin{description}
 
6407
\item[{retval}] \leavevmode\begin{itemize}
 
6408
\item {} 
 
6409
0   Success
 
6410
 
 
6411
\end{itemize}
 
6412
 
 
6413
\item[{return}] \leavevmode\begin{itemize}
 
6414
\item {} 
 
6415
Kerberos error codes
 
6416
 
 
6417
\end{itemize}
 
6418
 
 
6419
\end{description}\end{quote}
 
6420
 
 
6421
 
 
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)}
 
6424
 
 
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}}{}
 
6427
\end{fulllineitems}
 
6428
 
 
6429
\begin{quote}\begin{description}
 
6430
\item[{param}] \leavevmode
 
6431
\textbf{{[}in{]}} \textbf{context} - Library context
 
6432
 
 
6433
\textbf{{[}in{]}} \textbf{val} - Keyblock to be freed
 
6434
 
 
6435
\end{description}\end{quote}
 
6436
 
 
6437
This function frees the contents of \emph{val} and the structure itself.
 
6438
 
 
6439
 
 
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)}
 
6442
 
 
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}}{}
 
6445
\end{fulllineitems}
 
6446
 
 
6447
\begin{quote}\begin{description}
 
6448
\item[{param}] \leavevmode
 
6449
\textbf{{[}in{]}} \textbf{context} - Library context
 
6450
 
 
6451
\textbf{{[}in{]}} \textbf{key} - Keyblock to be freed
 
6452
 
 
6453
\end{description}\end{quote}
 
6454
 
 
6455
This function frees the contents of \emph{key} , but not the structure itself.
 
6456
 
 
6457
 
 
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)}
 
6460
 
 
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}}{}
 
6463
\end{fulllineitems}
 
6464
 
 
6465
\begin{quote}\begin{description}
 
6466
\item[{param}] \leavevmode
 
6467
\textbf{{[}in{]}} \textbf{context} - Library context
 
6468
 
 
6469
\textbf{{[}in{]}} \textbf{entry} - Key table entry whose contents are to be freed
 
6470
 
 
6471
\end{description}\end{quote}
 
6472
\begin{quote}\begin{description}
 
6473
\item[{retval}] \leavevmode\begin{itemize}
 
6474
\item {} 
 
6475
0   Success; otherwise - Kerberos error codes
 
6476
 
 
6477
\end{itemize}
 
6478
 
 
6479
\end{description}\end{quote}
 
6480
 
 
6481
\begin{notice}{note}{Note:}
 
6482
The pointer is not freed.
 
6483
\end{notice}
 
6484
 
 
6485
 
 
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)}
 
6488
 
 
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}}{}
 
6491
\end{fulllineitems}
 
6492
 
 
6493
\begin{quote}\begin{description}
 
6494
\item[{param}] \leavevmode
 
6495
\textbf{{[}in{]}} \textbf{context} - Library context
 
6496
 
 
6497
\textbf{{[}in{]}} \textbf{val} - String to be freed
 
6498
 
 
6499
\end{description}\end{quote}
 
6500
 
 
6501
\begin{notice}{note}{Note:}
 
6502
First introduced in 1.10
 
6503
\end{notice}
 
6504
 
 
6505
 
 
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)}
 
6508
 
 
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}}{}
 
6511
\end{fulllineitems}
 
6512
 
 
6513
\begin{quote}\begin{description}
 
6514
\item[{param}] \leavevmode
 
6515
\textbf{{[}in{]}} \textbf{context} - Library context
 
6516
 
 
6517
\textbf{{[}in{]}} \textbf{val} - Ticket to be freed
 
6518
 
 
6519
\end{description}\end{quote}
 
6520
 
 
6521
This function frees the contents of \emph{val} and the structure itself.
 
6522
 
 
6523
 
 
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)}
 
6526
 
 
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}}{}
 
6529
\end{fulllineitems}
 
6530
 
 
6531
\begin{quote}\begin{description}
 
6532
\item[{param}] \leavevmode
 
6533
\textbf{{[}in{]}} \textbf{context} - Library context
 
6534
 
 
6535
\textbf{{[}in{]}} \textbf{val} - Name string to be freed
 
6536
 
 
6537
\end{description}\end{quote}
 
6538
 
 
6539
 
 
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)}
 
6542
 
 
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}}{}
 
6545
\end{fulllineitems}
 
6546
 
 
6547
\begin{quote}\begin{description}
 
6548
\item[{param}] \leavevmode
 
6549
\textbf{{[}in{]}} \textbf{context} - Library context
 
6550
 
 
6551
\textbf{{[}out{]}} \textbf{ktypes} - Zero-terminated list of encryption types
 
6552
 
 
6553
\end{description}\end{quote}
 
6554
\begin{quote}\begin{description}
 
6555
\item[{retval}] \leavevmode\begin{itemize}
 
6556
\item {} 
 
6557
0   Success; otherwise - Kerberos error codes
 
6558
 
 
6559
\end{itemize}
 
6560
 
 
6561
\end{description}\end{quote}
 
6562
 
 
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()}}} .
 
6564
 
 
6565
 
 
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)}
 
6568
 
 
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}}{}
 
6571
\end{fulllineitems}
 
6572
 
 
6573
\begin{quote}\begin{description}
 
6574
\item[{param}] \leavevmode
 
6575
\textbf{{[}in{]}} \textbf{context} - Library context
 
6576
 
 
6577
\textbf{{[}in{]}} \textbf{piece} - Unique identifier for replay cache
 
6578
 
 
6579
\textbf{{[}out{]}} \textbf{rcptr} - Handle to an open rcache
 
6580
 
 
6581
\end{description}\end{quote}
 
6582
\begin{quote}\begin{description}
 
6583
\item[{retval}] \leavevmode\begin{itemize}
 
6584
\item {} 
 
6585
0   Success; otherwise - Kerberos error codes
 
6586
 
 
6587
\end{itemize}
 
6588
 
 
6589
\end{description}\end{quote}
 
6590
 
 
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.
 
6592
 
 
6593
 
 
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)}
 
6596
 
 
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}}{}
 
6599
\end{fulllineitems}
 
6600
 
 
6601
\begin{quote}\begin{description}
 
6602
\item[{param}] \leavevmode
 
6603
\textbf{{[}in{]}} \textbf{context} - Library context
 
6604
 
 
6605
\textbf{{[}out{]}} \textbf{seconds} - Time offset, seconds portion
 
6606
 
 
6607
\textbf{{[}out{]}} \textbf{microseconds} - Time offset, microseconds portion
 
6608
 
 
6609
\end{description}\end{quote}
 
6610
\begin{quote}\begin{description}
 
6611
\item[{retval}] \leavevmode\begin{itemize}
 
6612
\item {} 
 
6613
0   Success; otherwise - Kerberos error codes
 
6614
 
 
6615
\end{itemize}
 
6616
 
 
6617
\end{description}\end{quote}
 
6618
 
 
6619
This function returns the time offsets in \emph{context} .
 
6620
 
 
6621
 
 
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)}
 
6624
 
 
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}}{}
 
6627
\end{fulllineitems}
 
6628
 
 
6629
\begin{quote}\begin{description}
 
6630
\item[{param}] \leavevmode
 
6631
\textbf{{[}in{]}} \textbf{profile} - Profile object (NULL to create default profile)
 
6632
 
 
6633
\textbf{{[}in{]}} \textbf{flags} - Context initialization flags
 
6634
 
 
6635
\textbf{{[}out{]}} \textbf{context} - Library context
 
6636
 
 
6637
\end{description}\end{quote}
 
6638
 
 
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:
 
6640
\begin{itemize}
 
6641
\item {} 
 
6642
{\hyperref[appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:KRB5_INIT_CONTEXT_SECURE]{\code{KRB5\_INIT\_CONTEXT\_SECURE}}} Ignore environment variables
 
6643
 
 
6644
\item {} 
 
6645
{\hyperref[appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:KRB5_INIT_CONTEXT_KDC]{\code{KRB5\_INIT\_CONTEXT\_KDC}}} Use KDC configuration if creating profile
 
6646
 
 
6647
\end{itemize}
 
6648
 
 
6649
 
 
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)}
 
6652
 
 
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}}{}
 
6655
\end{fulllineitems}
 
6656
 
 
6657
\begin{quote}\begin{description}
 
6658
\item[{param}] \leavevmode
 
6659
\textbf{{[}in{]}} \textbf{context} - Library context
 
6660
 
 
6661
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6662
 
 
6663
\end{description}\end{quote}
 
6664
 
 
6665
 
 
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)}
 
6668
 
 
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}}{}
 
6671
\end{fulllineitems}
 
6672
 
 
6673
\begin{quote}\begin{description}
 
6674
\item[{param}] \leavevmode
 
6675
\textbf{{[}in{]}} \textbf{context} - Library context
 
6676
 
 
6677
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6678
 
 
6679
\end{description}\end{quote}
 
6680
\begin{quote}\begin{description}
 
6681
\item[{retval}] \leavevmode\begin{itemize}
 
6682
\item {} 
 
6683
0   Success; otherwise - Kerberos error codes
 
6684
 
 
6685
\end{itemize}
 
6686
 
 
6687
\end{description}\end{quote}
 
6688
 
 
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()}}} .
 
6690
 
 
6691
 
 
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)}
 
6694
 
 
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}}{}
 
6697
\end{fulllineitems}
 
6698
 
 
6699
\begin{quote}\begin{description}
 
6700
\item[{param}] \leavevmode
 
6701
\textbf{{[}in{]}} \textbf{context} - Library context
 
6702
 
 
6703
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6704
 
 
6705
\textbf{{[}out{]}} \textbf{creds} - Acquired credentials
 
6706
 
 
6707
\end{description}\end{quote}
 
6708
\begin{quote}\begin{description}
 
6709
\item[{retval}] \leavevmode\begin{itemize}
 
6710
\item {} 
 
6711
0   Success; otherwise - Kerberos error codes
 
6712
 
 
6713
\end{itemize}
 
6714
 
 
6715
\end{description}\end{quote}
 
6716
 
 
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.
 
6718
 
 
6719
 
 
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)}
 
6722
 
 
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}}{}
 
6725
\end{fulllineitems}
 
6726
 
 
6727
\begin{quote}\begin{description}
 
6728
\item[{param}] \leavevmode
 
6729
\textbf{{[}in{]}} \textbf{context} - Library context
 
6730
 
 
6731
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6732
 
 
6733
\textbf{{[}out{]}} \textbf{error} - Error from KDC, or NULL if none was received
 
6734
 
 
6735
\end{description}\end{quote}
 
6736
\begin{quote}\begin{description}
 
6737
\item[{retval}] \leavevmode\begin{itemize}
 
6738
\item {} 
 
6739
0   Success; otherwise - Kerberos error codes
 
6740
 
 
6741
\end{itemize}
 
6742
 
 
6743
\end{description}\end{quote}
 
6744
 
 
6745
 
 
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)}
 
6748
 
 
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}}{}
 
6751
\end{fulllineitems}
 
6752
 
 
6753
\begin{quote}\begin{description}
 
6754
\item[{param}] \leavevmode
 
6755
\textbf{{[}in{]}} \textbf{context} - Library context
 
6756
 
 
6757
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6758
 
 
6759
\textbf{{[}out{]}} \textbf{times} - Ticket times for acquired credentials
 
6760
 
 
6761
\end{description}\end{quote}
 
6762
\begin{quote}\begin{description}
 
6763
\item[{retval}] \leavevmode\begin{itemize}
 
6764
\item {} 
 
6765
0   Success; otherwise - Kerberos error codes
 
6766
 
 
6767
\end{itemize}
 
6768
 
 
6769
\end{description}\end{quote}
 
6770
 
 
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()}}} .
 
6772
 
 
6773
 
 
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)}
 
6776
 
 
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}}{}
 
6779
\end{fulllineitems}
 
6780
 
 
6781
\begin{quote}\begin{description}
 
6782
\item[{param}] \leavevmode
 
6783
\textbf{{[}in{]}} \textbf{context} - Library context
 
6784
 
 
6785
\textbf{{[}in{]}} \textbf{client} - Client principal to get initial creds for
 
6786
 
 
6787
\textbf{{[}in{]}} \textbf{prompter} - Prompter callback
 
6788
 
 
6789
\textbf{{[}in{]}} \textbf{data} - Prompter callback argument
 
6790
 
 
6791
\textbf{{[}in{]}} \textbf{start\_time} - Time when credentials become valid (0 for now)
 
6792
 
 
6793
\textbf{{[}in{]}} \textbf{options} - Options structure (NULL for default)
 
6794
 
 
6795
\textbf{{[}out{]}} \textbf{ctx} - New initial credentials context
 
6796
 
 
6797
\end{description}\end{quote}
 
6798
\begin{quote}\begin{description}
 
6799
\item[{retval}] \leavevmode\begin{itemize}
 
6800
\item {} 
 
6801
0   Success; otherwise - Kerberos error codes
 
6802
 
 
6803
\end{itemize}
 
6804
 
 
6805
\end{description}\end{quote}
 
6806
 
 
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.
 
6808
 
 
6809
 
 
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)}
 
6812
 
 
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}}{}
 
6815
\end{fulllineitems}
 
6816
 
 
6817
\begin{quote}\begin{description}
 
6818
\item[{param}] \leavevmode
 
6819
\textbf{{[}in{]}} \textbf{context} - Library context
 
6820
 
 
6821
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6822
 
 
6823
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
6824
 
 
6825
\end{description}\end{quote}
 
6826
\begin{quote}\begin{description}
 
6827
\item[{retval}] \leavevmode\begin{itemize}
 
6828
\item {} 
 
6829
0   Success; otherwise - Kerberos error codes
 
6830
 
 
6831
\end{itemize}
 
6832
 
 
6833
\end{description}\end{quote}
 
6834
 
 
6835
This function supplies a keytab containing the client key for an initial credentials request.
 
6836
 
 
6837
 
 
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)}
 
6840
 
 
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}}{}
 
6843
\end{fulllineitems}
 
6844
 
 
6845
\begin{quote}\begin{description}
 
6846
\item[{param}] \leavevmode
 
6847
\textbf{{[}in{]}} \textbf{context} - Library context
 
6848
 
 
6849
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6850
 
 
6851
\textbf{{[}in{]}} \textbf{password} - Password
 
6852
 
 
6853
\end{description}\end{quote}
 
6854
\begin{quote}\begin{description}
 
6855
\item[{retval}] \leavevmode\begin{itemize}
 
6856
\item {} 
 
6857
0   Success; otherwise - Kerberos error codes
 
6858
 
 
6859
\end{itemize}
 
6860
 
 
6861
\end{description}\end{quote}
 
6862
 
 
6863
This function supplies a password to be used to construct the client key for an initial credentials request.
 
6864
 
 
6865
 
 
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)}
 
6868
 
 
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}}{}
 
6871
\end{fulllineitems}
 
6872
 
 
6873
\begin{quote}\begin{description}
 
6874
\item[{param}] \leavevmode
 
6875
\textbf{{[}in{]}} \textbf{context} - Library context
 
6876
 
 
6877
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6878
 
 
6879
\textbf{{[}in{]}} \textbf{service} - Service principal string
 
6880
 
 
6881
\end{description}\end{quote}
 
6882
\begin{quote}\begin{description}
 
6883
\item[{retval}] \leavevmode\begin{itemize}
 
6884
\item {} 
 
6885
0   Success; otherwise - Kerberos error codes
 
6886
 
 
6887
\end{itemize}
 
6888
 
 
6889
\end{description}\end{quote}
 
6890
 
 
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.
 
6892
 
 
6893
 
 
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)}
 
6896
 
 
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}}{}
 
6899
\end{fulllineitems}
 
6900
 
 
6901
\begin{quote}\begin{description}
 
6902
\item[{param}] \leavevmode
 
6903
\textbf{{[}in{]}} \textbf{context} - Library context
 
6904
 
 
6905
\textbf{{[}in{]}} \textbf{ctx} - Initial credentials context
 
6906
 
 
6907
\textbf{{[}in{]}} \textbf{in} - KDC response (empty on the first call)
 
6908
 
 
6909
\textbf{{[}out{]}} \textbf{out} - Next KDC request
 
6910
 
 
6911
\textbf{{[}out{]}} \textbf{realm} - Realm for next KDC request
 
6912
 
 
6913
\textbf{{[}out{]}} \textbf{flags} - Output flags
 
6914
 
 
6915
\end{description}\end{quote}
 
6916
\begin{quote}\begin{description}
 
6917
\item[{retval}] \leavevmode\begin{itemize}
 
6918
\item {} 
 
6919
0   Success; otherwise - Kerberos error codes
 
6920
 
 
6921
\end{itemize}
 
6922
 
 
6923
\end{description}\end{quote}
 
6924
 
 
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.
 
6926
 
 
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.
 
6928
 
 
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.
 
6930
 
 
6931
 
 
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)}
 
6934
 
 
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}}{}
 
6937
\end{fulllineitems}
 
6938
 
 
6939
\begin{quote}\begin{description}
 
6940
\item[{param}] \leavevmode
 
6941
\textbf{{[}in{]}} \textbf{context} - Library context
 
6942
 
 
6943
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
6944
 
 
6945
\textbf{{[}in{]}} \textbf{length} - Length of keyblock (or 0)
 
6946
 
 
6947
\textbf{{[}out{]}} \textbf{out} - New keyblock structure
 
6948
 
 
6949
\end{description}\end{quote}
 
6950
\begin{quote}\begin{description}
 
6951
\item[{retval}] \leavevmode\begin{itemize}
 
6952
\item {} 
 
6953
0   Success; otherwise - Kerberos error codes
 
6954
 
 
6955
\end{itemize}
 
6956
 
 
6957
\end{description}\end{quote}
 
6958
 
 
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.
 
6960
 
 
6961
\begin{notice}{note}{Note:}
 
6962
If \emph{length} is set to 0, contents are left unallocated.
 
6963
\end{notice}
 
6964
 
 
6965
 
 
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)}
 
6968
 
 
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}}{}
 
6971
\end{fulllineitems}
 
6972
 
 
6973
\begin{quote}\begin{description}
 
6974
\item[{param}] \leavevmode
 
6975
\textbf{{[}in{]}} \textbf{r} - Realm to check
 
6976
 
 
6977
\end{description}\end{quote}
 
6978
\begin{quote}\begin{description}
 
6979
\item[{return}] \leavevmode\begin{itemize}
 
6980
\item {} 
 
6981
TRUE if r is zero-length, FALSE otherwise
 
6982
 
 
6983
\end{itemize}
 
6984
 
 
6985
\end{description}\end{quote}
 
6986
 
 
6987
 
 
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)}
 
6990
 
 
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}}{}
 
6993
\end{fulllineitems}
 
6994
 
 
6995
\begin{quote}\begin{description}
 
6996
\item[{param}] \leavevmode
 
6997
\textbf{{[}in{]}} \textbf{context} - Library context
 
6998
 
 
6999
\textbf{{[}in{]}} \textbf{id} - Key table handle
 
7000
 
 
7001
\textbf{{[}in{]}} \textbf{entry} - Entry to be added
 
7002
 
 
7003
\end{description}\end{quote}
 
7004
\begin{quote}\begin{description}
 
7005
\item[{retval}] \leavevmode\begin{itemize}
 
7006
\item {} 
 
7007
0   Success
 
7008
 
 
7009
\item {} 
 
7010
ENOMEM   Insufficient memory
 
7011
 
 
7012
\item {} 
 
7013
KRB5\_KT\_NOWRITE   Key table is not writeable
 
7014
 
 
7015
\end{itemize}
 
7016
 
 
7017
\item[{return}] \leavevmode\begin{itemize}
 
7018
\item {} 
 
7019
Kerberos error codes
 
7020
 
 
7021
\end{itemize}
 
7022
 
 
7023
\end{description}\end{quote}
 
7024
 
 
7025
 
 
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)}
 
7028
 
 
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}}{}
 
7031
\end{fulllineitems}
 
7032
 
 
7033
\begin{quote}\begin{description}
 
7034
\item[{param}] \leavevmode
 
7035
\textbf{{[}in{]}} \textbf{context} - Library context
 
7036
 
 
7037
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
7038
 
 
7039
\textbf{{[}out{]}} \textbf{cursor} - Cursor
 
7040
 
 
7041
\end{description}\end{quote}
 
7042
\begin{quote}\begin{description}
 
7043
\item[{retval}] \leavevmode\begin{itemize}
 
7044
\item {} 
 
7045
0   Success
 
7046
 
 
7047
\end{itemize}
 
7048
 
 
7049
\item[{return}] \leavevmode\begin{itemize}
 
7050
\item {} 
 
7051
Kerberos error codes
 
7052
 
 
7053
\end{itemize}
 
7054
 
 
7055
\end{description}\end{quote}
 
7056
 
 
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()}}} .
 
7058
 
 
7059
 
 
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)}
 
7062
 
 
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}}{}
 
7065
\end{fulllineitems}
 
7066
 
 
7067
\begin{quote}\begin{description}
 
7068
\item[{param}] \leavevmode
 
7069
\textbf{{[}in{]}} \textbf{context} - Library context
 
7070
 
 
7071
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
7072
 
 
7073
\textbf{{[}in{]}} \textbf{principal} - Principal name
 
7074
 
 
7075
\textbf{{[}in{]}} \textbf{vno} - Key version number (0 for highest available)
 
7076
 
 
7077
\textbf{{[}in{]}} \textbf{enctype} - Encryption type (0 zero for any enctype)
 
7078
 
 
7079
\textbf{{[}out{]}} \textbf{entry} - Returned entry from key table
 
7080
 
 
7081
\end{description}\end{quote}
 
7082
\begin{quote}\begin{description}
 
7083
\item[{retval}] \leavevmode\begin{itemize}
 
7084
\item {} 
 
7085
0   Success
 
7086
 
 
7087
\item {} 
 
7088
Kerberos   error codes on failure
 
7089
 
 
7090
\end{itemize}
 
7091
 
 
7092
\end{description}\end{quote}
 
7093
 
 
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.
 
7095
 
 
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.
 
7097
 
 
7098
\begin{notice}{note}{Note:}
 
7099
If \emph{vno} is zero, the function retrieves the highest-numbered-kvno entry that matches the specified principal.
 
7100
\end{notice}
 
7101
 
 
7102
 
 
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)}
 
7105
 
 
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}}{}
 
7108
\end{fulllineitems}
 
7109
 
 
7110
\begin{quote}\begin{description}
 
7111
\item[{param}] \leavevmode
 
7112
\textbf{{[}in{]}} \textbf{context} - Library context
 
7113
 
 
7114
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
7115
 
 
7116
\end{description}\end{quote}
 
7117
\begin{quote}\begin{description}
 
7118
\item[{retval}] \leavevmode\begin{itemize}
 
7119
\item {} 
 
7120
0   Keytab exists and contains entries
 
7121
 
 
7122
\item {} 
 
7123
KRB5\_KT\_NOTFOUND   Keytab does not contain entries
 
7124
 
 
7125
\end{itemize}
 
7126
 
 
7127
\end{description}\end{quote}
 
7128
 
 
7129
\begin{notice}{note}{Note:}
 
7130
First introduced in 1.11
 
7131
\end{notice}
 
7132
 
 
7133
 
 
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)}
 
7136
 
 
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}}{}
 
7139
\end{fulllineitems}
 
7140
 
 
7141
\begin{quote}\begin{description}
 
7142
\item[{param}] \leavevmode
 
7143
\textbf{{[}in{]}} \textbf{context} - Library context
 
7144
 
 
7145
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
7146
 
 
7147
\textbf{{[}out{]}} \textbf{entry} - Returned key table entry
 
7148
 
 
7149
\textbf{{[}inout{]}} \textbf{cursor} - Key table cursor
 
7150
 
 
7151
\end{description}\end{quote}
 
7152
\begin{quote}\begin{description}
 
7153
\item[{retval}] \leavevmode\begin{itemize}
 
7154
\item {} 
 
7155
0   Success
 
7156
 
 
7157
\item {} 
 
7158
KRB5\_KT\_END   - if the last entry was reached
 
7159
 
 
7160
\end{itemize}
 
7161
 
 
7162
\item[{return}] \leavevmode\begin{itemize}
 
7163
\item {} 
 
7164
Kerberos error codes
 
7165
 
 
7166
\end{itemize}
 
7167
 
 
7168
\end{description}\end{quote}
 
7169
 
 
7170
Return the next sequential entry in \emph{keytab} and advance \emph{cursor} .
 
7171
 
 
7172
 
 
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)}
 
7175
 
 
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}}{}
 
7178
\end{fulllineitems}
 
7179
 
 
7180
\begin{quote}\begin{description}
 
7181
\item[{param}] \leavevmode
 
7182
\textbf{{[}in{]}} \textbf{context} - Library context
 
7183
 
 
7184
\textbf{{[}in{]}} \textbf{keyprocarg} - Name of a key table (NULL to use default name)
 
7185
 
 
7186
\textbf{{[}in{]}} \textbf{principal} - Service principal
 
7187
 
 
7188
\textbf{{[}in{]}} \textbf{vno} - Key version number (0 for highest available)
 
7189
 
 
7190
\textbf{{[}in{]}} \textbf{enctype} - Encryption type (0 for any type)
 
7191
 
 
7192
\textbf{{[}out{]}} \textbf{key} - Service key from key table
 
7193
 
 
7194
\end{description}\end{quote}
 
7195
\begin{quote}\begin{description}
 
7196
\item[{retval}] \leavevmode\begin{itemize}
 
7197
\item {} 
 
7198
0   Success
 
7199
 
 
7200
\end{itemize}
 
7201
 
 
7202
\item[{return}] \leavevmode\begin{itemize}
 
7203
\item {} 
 
7204
Kerberos error code if not found or keyprocarg is invalid.
 
7205
 
 
7206
\end{itemize}
 
7207
 
 
7208
\end{description}\end{quote}
 
7209
 
 
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.
 
7211
 
 
7212
The default key table is used, unless \emph{keyprocarg} is non-null. \emph{keyprocarg} designates a specific key table.
 
7213
 
 
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.
 
7215
 
 
7216
 
 
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)}
 
7219
 
 
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}}{}
 
7222
\end{fulllineitems}
 
7223
 
 
7224
\begin{quote}\begin{description}
 
7225
\item[{param}] \leavevmode
 
7226
\textbf{{[}in{]}} \textbf{context} - Library context
 
7227
 
 
7228
\textbf{{[}in{]}} \textbf{id} - Key table handle
 
7229
 
 
7230
\textbf{{[}in{]}} \textbf{entry} - Entry to remove from key table
 
7231
 
 
7232
\end{description}\end{quote}
 
7233
\begin{quote}\begin{description}
 
7234
\item[{retval}] \leavevmode\begin{itemize}
 
7235
\item {} 
 
7236
0   Success
 
7237
 
 
7238
\item {} 
 
7239
KRB5\_KT\_NOWRITE   Key table is not writable
 
7240
 
 
7241
\end{itemize}
 
7242
 
 
7243
\item[{return}] \leavevmode\begin{itemize}
 
7244
\item {} 
 
7245
Kerberos error codes
 
7246
 
 
7247
\end{itemize}
 
7248
 
 
7249
\end{description}\end{quote}
 
7250
 
 
7251
 
 
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)}
 
7254
 
 
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}}{}
 
7257
\end{fulllineitems}
 
7258
 
 
7259
\begin{quote}\begin{description}
 
7260
\item[{param}] \leavevmode
 
7261
\textbf{{[}in{]}} \textbf{context} - Library context
 
7262
 
 
7263
\textbf{{[}in{]}} \textbf{keytab} - Key table handle
 
7264
 
 
7265
\textbf{{[}out{]}} \textbf{cursor} - Cursor
 
7266
 
 
7267
\end{description}\end{quote}
 
7268
\begin{quote}\begin{description}
 
7269
\item[{retval}] \leavevmode\begin{itemize}
 
7270
\item {} 
 
7271
0   Success
 
7272
 
 
7273
\end{itemize}
 
7274
 
 
7275
\item[{return}] \leavevmode\begin{itemize}
 
7276
\item {} 
 
7277
Kerberos error codes
 
7278
 
 
7279
\end{itemize}
 
7280
 
 
7281
\end{description}\end{quote}
 
7282
 
 
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.
 
7284
 
 
7285
 
 
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)}
 
7288
 
 
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}}{}
 
7291
\end{fulllineitems}
 
7292
 
 
7293
\begin{quote}\begin{description}
 
7294
\item[{param}] \leavevmode
 
7295
\textbf{{[}in{]}} \textbf{context} - Library context
 
7296
 
 
7297
\textbf{{[}in{]}} \textbf{key} - Session key
 
7298
 
 
7299
\textbf{{[}in{]}} \textbf{issuer} - The name of the issuing principal
 
7300
 
 
7301
\textbf{{[}in{]}} \textbf{authdata} - List of authorization data to be signed
 
7302
 
 
7303
\textbf{{[}out{]}} \textbf{ad\_kdcissued} - List containing AD-KDCIssued authdata
 
7304
 
 
7305
\end{description}\end{quote}
 
7306
 
 
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.
 
7308
 
 
7309
 
 
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)}
 
7312
 
 
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}}{}
 
7315
\end{fulllineitems}
 
7316
 
 
7317
\begin{quote}\begin{description}
 
7318
\item[{param}] \leavevmode
 
7319
\textbf{{[}in{]}} \textbf{context} - Library context
 
7320
 
 
7321
\textbf{{[}in{]}} \textbf{inauthdat1} - First list of \emph{krb5\_authdata} structures
 
7322
 
 
7323
\textbf{{[}in{]}} \textbf{inauthdat2} - Second list of \emph{krb5\_authdata} structures
 
7324
 
 
7325
\textbf{{[}out{]}} \textbf{outauthdat} - Merged list of \emph{krb5\_authdata} structures
 
7326
 
 
7327
\end{description}\end{quote}
 
7328
\begin{quote}\begin{description}
 
7329
\item[{retval}] \leavevmode\begin{itemize}
 
7330
\item {} 
 
7331
0   Success; otherwise - Kerberos error codes
 
7332
 
 
7333
\end{itemize}
 
7334
 
 
7335
\end{description}\end{quote}
 
7336
 
 
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.
 
7338
 
 
7339
\begin{notice}{note}{Note:}
 
7340
The last array entry in \emph{inauthdat1} and \emph{inauthdat2} must be a NULL pointer.
 
7341
\end{notice}
 
7342
 
 
7343
 
 
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)}
 
7346
 
 
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}}{}
 
7349
\end{fulllineitems}
 
7350
 
 
7351
\begin{quote}\begin{description}
 
7352
\item[{param}] \leavevmode
 
7353
\textbf{{[}in{]}} \textbf{context} - Library context
 
7354
 
 
7355
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
7356
 
 
7357
\textbf{{[}in{]}} \textbf{pcreds} - Pointer to credentials
 
7358
 
 
7359
\textbf{{[}out{]}} \textbf{ppdata} - Encoded credentials
 
7360
 
 
7361
\textbf{{[}out{]}} \textbf{outdata} - Replay cache data (NULL if not needed)
 
7362
 
 
7363
\end{description}\end{quote}
 
7364
\begin{quote}\begin{description}
 
7365
\item[{retval}] \leavevmode\begin{itemize}
 
7366
\item {} 
 
7367
0   Success
 
7368
 
 
7369
\item {} 
 
7370
ENOMEM   Insufficient memory
 
7371
 
 
7372
\item {} 
 
7373
KRB5\_RC\_REQUIRED   Message replay detection requires rcache parameter
 
7374
 
 
7375
\end{itemize}
 
7376
 
 
7377
\item[{return}] \leavevmode\begin{itemize}
 
7378
\item {} 
 
7379
Kerberos error codes
 
7380
 
 
7381
\end{itemize}
 
7382
 
 
7383
\end{description}\end{quote}
 
7384
 
 
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.
 
7386
 
 
7387
 
 
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)}
 
7390
 
 
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}}{}
 
7393
\end{fulllineitems}
 
7394
 
 
7395
\begin{quote}\begin{description}
 
7396
\item[{param}] \leavevmode
 
7397
\textbf{{[}in{]}} \textbf{context} - Library context
 
7398
 
 
7399
\textbf{{[}in{]}} \textbf{dec\_err} - Error structure to be encoded
 
7400
 
 
7401
\textbf{{[}out{]}} \textbf{enc\_err} - Encoded error structure
 
7402
 
 
7403
\end{description}\end{quote}
 
7404
\begin{quote}\begin{description}
 
7405
\item[{retval}] \leavevmode\begin{itemize}
 
7406
\item {} 
 
7407
0   Success; otherwise - Kerberos error codes
 
7408
 
 
7409
\end{itemize}
 
7410
 
 
7411
\end{description}\end{quote}
 
7412
 
 
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.
 
7414
 
 
7415
 
 
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)}
 
7418
 
 
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}}{}
 
7421
\end{fulllineitems}
 
7422
 
 
7423
\begin{quote}\begin{description}
 
7424
\item[{param}] \leavevmode
 
7425
\textbf{{[}in{]}} \textbf{context} - Library context
 
7426
 
 
7427
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
7428
 
 
7429
\textbf{{[}in{]}} \textbf{ppcreds} - Null-terminated array of credentials
 
7430
 
 
7431
\textbf{{[}out{]}} \textbf{ppdata} - Encoded credentials
 
7432
 
 
7433
\textbf{{[}out{]}} \textbf{outdata} - Replay cache information (NULL if not needed)
 
7434
 
 
7435
\end{description}\end{quote}
 
7436
\begin{quote}\begin{description}
 
7437
\item[{retval}] \leavevmode\begin{itemize}
 
7438
\item {} 
 
7439
0   Success
 
7440
 
 
7441
\item {} 
 
7442
ENOMEM   Insufficient memory
 
7443
 
 
7444
\item {} 
 
7445
KRB5\_RC\_REQUIRED   Message replay detection requires rcache parameter
 
7446
 
 
7447
\end{itemize}
 
7448
 
 
7449
\item[{return}] \leavevmode\begin{itemize}
 
7450
\item {} 
 
7451
Kerberos error codes
 
7452
 
 
7453
\end{itemize}
 
7454
 
 
7455
\end{description}\end{quote}
 
7456
 
 
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()}}} .
 
7458
 
 
7459
The message will be encrypted using the send subkey of \emph{auth\_context} if it is present, or the session key otherwise.
 
7460
 
 
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.
 
7463
\end{notice}
 
7464
 
 
7465
 
 
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)}
 
7468
 
 
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}}{}
 
7471
\end{fulllineitems}
 
7472
 
 
7473
\begin{quote}\begin{description}
 
7474
\item[{param}] \leavevmode
 
7475
\textbf{{[}in{]}} \textbf{context} - Library context
 
7476
 
 
7477
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
7478
 
 
7479
\textbf{{[}in{]}} \textbf{userdata} - User data for \textbf{KRB-PRIV} message
 
7480
 
 
7481
\textbf{{[}out{]}} \textbf{outbuf} - Formatted \textbf{KRB-PRIV} message
 
7482
 
 
7483
\textbf{{[}out{]}} \textbf{outdata} - Replay cache handle (NULL if not needed)
 
7484
 
 
7485
\end{description}\end{quote}
 
7486
\begin{quote}\begin{description}
 
7487
\item[{retval}] \leavevmode\begin{itemize}
 
7488
\item {} 
 
7489
0   Success; otherwise - Kerberos error codes
 
7490
 
 
7491
\end{itemize}
 
7492
 
 
7493
\end{description}\end{quote}
 
7494
 
 
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.
 
7496
 
 
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.
 
7498
\begin{itemize}
 
7499
\item {} 
 
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}
 
7501
 
 
7502
\item {} 
 
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} .
 
7504
 
 
7505
\item {} 
 
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.
 
7507
 
 
7508
\item {} 
 
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} .
 
7510
 
 
7511
\end{itemize}
 
7512
 
 
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.
 
7515
 
 
7516
The flags from \emph{auth\_context} specify whether sequence numbers or timestamps will be used to identify the message. Valid values are:
 
7517
\end{notice}
 
7518
 
 
7519
 
 
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)}
 
7522
 
 
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}}{}
 
7525
\end{fulllineitems}
 
7526
 
 
7527
\begin{quote}\begin{description}
 
7528
\item[{param}] \leavevmode
 
7529
\textbf{{[}in{]}} \textbf{context} - Library context
 
7530
 
 
7531
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
7532
 
 
7533
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REP} message
 
7534
 
 
7535
\end{description}\end{quote}
 
7536
\begin{quote}\begin{description}
 
7537
\item[{retval}] \leavevmode\begin{itemize}
 
7538
\item {} 
 
7539
0   Success; otherwise - Kerberos error codes
 
7540
 
 
7541
\end{itemize}
 
7542
 
 
7543
\end{description}\end{quote}
 
7544
 
 
7545
This function fills in \emph{outbuf} with an AP-REP message using information from \emph{auth\_context} .
 
7546
 
 
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().
 
7548
 
 
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.
 
7550
 
 
7551
 
 
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)}
 
7554
 
 
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}}{}
 
7557
\end{fulllineitems}
 
7558
 
 
7559
\begin{quote}\begin{description}
 
7560
\item[{param}] \leavevmode
 
7561
\textbf{{[}in{]}} \textbf{context} - Library context
 
7562
 
 
7563
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
7564
 
 
7565
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REP} message
 
7566
 
 
7567
\end{description}\end{quote}
 
7568
\begin{quote}\begin{description}
 
7569
\item[{retval}] \leavevmode\begin{itemize}
 
7570
\item {} 
 
7571
0   Success; otherwise - Kerberos error codes
 
7572
 
 
7573
\end{itemize}
 
7574
 
 
7575
\end{description}\end{quote}
 
7576
 
 
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.
 
7578
 
 
7579
 
 
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)}
 
7582
 
 
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}}{}
 
7585
\end{fulllineitems}
 
7586
 
 
7587
\begin{quote}\begin{description}
 
7588
\item[{param}] \leavevmode
 
7589
\textbf{{[}in{]}} \textbf{context} - Library context
 
7590
 
 
7591
\textbf{{[}inout{]}} \textbf{auth\_context} - Pre-existing or newly created auth context
 
7592
 
 
7593
\textbf{{[}in{]}} \textbf{ap\_req\_options} - \code{AP\_OPTS} options
 
7594
 
 
7595
\textbf{{[}in{]}} \textbf{service} - Service name, or NULL to use \textbf{``host''}
 
7596
 
 
7597
\textbf{{[}in{]}} \textbf{hostname} - Host name, or NULL to use local hostname
 
7598
 
 
7599
\textbf{{[}in{]}} \textbf{in\_data} - Application data to be checksummed in the authenticator, or NULL
 
7600
 
 
7601
\textbf{{[}in{]}} \textbf{ccache} - Credential cache used to obtain credentials for the desired service.
 
7602
 
 
7603
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REQ} message
 
7604
 
 
7605
\end{description}\end{quote}
 
7606
\begin{quote}\begin{description}
 
7607
\item[{retval}] \leavevmode\begin{itemize}
 
7608
\item {} 
 
7609
0   Success; otherwise - Kerberos error codes
 
7610
 
 
7611
\end{itemize}
 
7612
 
 
7613
\end{description}\end{quote}
 
7614
 
 
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.
 
7616
 
 
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.
 
7618
 
 
7619
 
 
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)}
 
7622
 
 
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}}{}
 
7625
\end{fulllineitems}
 
7626
 
 
7627
\begin{quote}\begin{description}
 
7628
\item[{param}] \leavevmode
 
7629
\textbf{{[}in{]}} \textbf{context} - Library context
 
7630
 
 
7631
\textbf{{[}inout{]}} \textbf{auth\_context} - Pre-existing or newly created auth context
 
7632
 
 
7633
\textbf{{[}in{]}} \textbf{ap\_req\_options} - \code{AP\_OPTS} options
 
7634
 
 
7635
\textbf{{[}in{]}} \textbf{in\_data} - Application data to be checksummed in the authenticator, or NULL
 
7636
 
 
7637
\textbf{{[}in{]}} \textbf{in\_creds} - Credentials for the service with valid ticket and key
 
7638
 
 
7639
\textbf{{[}out{]}} \textbf{outbuf} - \textbf{AP-REQ} message
 
7640
 
 
7641
\end{description}\end{quote}
 
7642
\begin{quote}\begin{description}
 
7643
\item[{retval}] \leavevmode\begin{itemize}
 
7644
\item {} 
 
7645
0   Success; otherwise - Kerberos error codes
 
7646
 
 
7647
\end{itemize}
 
7648
 
 
7649
\end{description}\end{quote}
 
7650
 
 
7651
Valid \emph{ap\_req\_options} are:
 
7652
\begin{quote}
 
7653
\begin{itemize}
 
7654
\item {} 
 
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.
 
7656
 
 
7657
\item {} 
 
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.
 
7659
 
 
7660
\item {} 
 
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.
 
7662
 
 
7663
\end{itemize}
 
7664
 
 
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.
 
7666
\end{quote}
 
7667
 
 
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.)
 
7669
 
 
7670
 
 
7671
\strong{See Also:}
 
7672
 
 
7673
 
 
7674
{\hyperref[appdev/refs/api/krb5_mk_req:krb5_mk_req]{\code{krb5\_mk\_req()}}}
 
7675
 
 
7676
 
 
7677
 
 
7678
 
 
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)}
 
7681
 
 
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}}{}
 
7684
\end{fulllineitems}
 
7685
 
 
7686
\begin{quote}\begin{description}
 
7687
\item[{param}] \leavevmode
 
7688
\textbf{{[}in{]}} \textbf{context} - Library context
 
7689
 
 
7690
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
7691
 
 
7692
\textbf{{[}in{]}} \textbf{userdata} - User data in the message
 
7693
 
 
7694
\textbf{{[}out{]}} \textbf{outbuf} - Formatted \textbf{KRB-SAFE} buffer
 
7695
 
 
7696
\textbf{{[}out{]}} \textbf{outdata} - Replay data. Specify NULL if not needed
 
7697
 
 
7698
\end{description}\end{quote}
 
7699
\begin{quote}\begin{description}
 
7700
\item[{retval}] \leavevmode\begin{itemize}
 
7701
\item {} 
 
7702
0   Success; otherwise - Kerberos error codes
 
7703
 
 
7704
\end{itemize}
 
7705
 
 
7706
\end{description}\end{quote}
 
7707
 
 
7708
This function creates an integrity protected \textbf{KRB-SAFE} message using data supplied by the application.
 
7709
 
 
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.
 
7711
 
 
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.
 
7713
 
 
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.
 
7715
 
 
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.
 
7717
 
 
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.
 
7719
 
 
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} .
 
7722
\end{notice}
 
7723
 
 
7724
 
 
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)}
 
7727
 
 
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}}{}
 
7730
\end{fulllineitems}
 
7731
 
 
7732
\begin{quote}\begin{description}
 
7733
\item[{param}] \leavevmode
 
7734
\textbf{{[}in{]}} \textbf{context} - Library context
 
7735
 
 
7736
\textbf{{[}out{]}} \textbf{addr} - Array of krb5\_address pointers, ending with NULL
 
7737
 
 
7738
\end{description}\end{quote}
 
7739
\begin{quote}\begin{description}
 
7740
\item[{retval}] \leavevmode\begin{itemize}
 
7741
\item {} 
 
7742
0   Success; otherwise - Kerberos error codes
 
7743
 
 
7744
\end{itemize}
 
7745
 
 
7746
\end{description}\end{quote}
 
7747
 
 
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.
 
7749
 
 
7750
 
 
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)}
 
7753
 
 
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}}{}
 
7756
\end{fulllineitems}
 
7757
 
 
7758
\begin{quote}\begin{description}
 
7759
\item[{param}] \leavevmode
 
7760
\textbf{{[}in{]}} \textbf{context} - Library context
 
7761
 
 
7762
\textbf{{[}in{]}} \textbf{pac} - PAC handle
 
7763
 
 
7764
\textbf{{[}in{]}} \textbf{type} - Buffer type
 
7765
 
 
7766
\textbf{{[}in{]}} \textbf{data} - contents
 
7767
 
 
7768
\end{description}\end{quote}
 
7769
\begin{quote}\begin{description}
 
7770
\item[{retval}] \leavevmode\begin{itemize}
 
7771
\item {} 
 
7772
0   Success; otherwise - Kerberos error codes
 
7773
 
 
7774
\end{itemize}
 
7775
 
 
7776
\end{description}\end{quote}
 
7777
 
 
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.
 
7779
 
 
7780
The valid values of \emph{type} is one of the following:
 
7781
\begin{itemize}
 
7782
\item {} 
 
7783
{\hyperref[appdev/refs/macros/KRB5_PAC_LOGON_INFO:KRB5_PAC_LOGON_INFO]{\code{KRB5\_PAC\_LOGON\_INFO}}} - Logon information
 
7784
 
 
7785
\item {} 
 
7786
{\hyperref[appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:KRB5_PAC_CREDENTIALS_INFO]{\code{KRB5\_PAC\_CREDENTIALS\_INFO}}} - Credentials information
 
7787
 
 
7788
\item {} 
 
7789
{\hyperref[appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:KRB5_PAC_SERVER_CHECKSUM]{\code{KRB5\_PAC\_SERVER\_CHECKSUM}}} - Server checksum
 
7790
 
 
7791
\item {} 
 
7792
{\hyperref[appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:KRB5_PAC_PRIVSVR_CHECKSUM]{\code{KRB5\_PAC\_PRIVSVR\_CHECKSUM}}} - KDC checksum
 
7793
 
 
7794
\item {} 
 
7795
{\hyperref[appdev/refs/macros/KRB5_PAC_CLIENT_INFO:KRB5_PAC_CLIENT_INFO]{\code{KRB5\_PAC\_CLIENT\_INFO}}} - Client name and ticket information
 
7796
 
 
7797
\item {} 
 
7798
{\hyperref[appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:KRB5_PAC_DELEGATION_INFO]{\code{KRB5\_PAC\_DELEGATION\_INFO}}} - Constrained delegation information
 
7799
 
 
7800
\item {} 
 
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
 
7802
 
 
7803
\end{itemize}
 
7804
 
 
7805
 
 
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)}
 
7808
 
 
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}}{}
 
7811
\end{fulllineitems}
 
7812
 
 
7813
\begin{quote}\begin{description}
 
7814
\item[{param}] \leavevmode
 
7815
\textbf{{[}in{]}} \textbf{context} - Library context
 
7816
 
 
7817
\textbf{{[}in{]}} \textbf{pac} - PAC to be freed
 
7818
 
 
7819
\end{description}\end{quote}
 
7820
 
 
7821
This function frees the contents of \emph{pac} and the structure itself.
 
7822
 
 
7823
 
 
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)}
 
7826
 
 
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}}{}
 
7829
\end{fulllineitems}
 
7830
 
 
7831
\begin{quote}\begin{description}
 
7832
\item[{param}] \leavevmode
 
7833
\textbf{{[}in{]}} \textbf{context} - Library context
 
7834
 
 
7835
\textbf{{[}in{]}} \textbf{pac} - PAC handle
 
7836
 
 
7837
\textbf{{[}in{]}} \textbf{type} - Type of buffer to retrieve
 
7838
 
 
7839
\textbf{{[}out{]}} \textbf{data} - Buffer value
 
7840
 
 
7841
\end{description}\end{quote}
 
7842
\begin{quote}\begin{description}
 
7843
\item[{retval}] \leavevmode\begin{itemize}
 
7844
\item {} 
 
7845
0   Success; otherwise - Kerberos error codes
 
7846
 
 
7847
\end{itemize}
 
7848
 
 
7849
\end{description}\end{quote}
 
7850
 
 
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.
 
7852
 
 
7853
 
 
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)}
 
7856
 
 
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}}{}
 
7859
\end{fulllineitems}
 
7860
 
 
7861
\begin{quote}\begin{description}
 
7862
\item[{param}] \leavevmode
 
7863
\textbf{{[}in{]}} \textbf{context} - Library context
 
7864
 
 
7865
\textbf{{[}in{]}} \textbf{pac} - PAC handle
 
7866
 
 
7867
\textbf{{[}out{]}} \textbf{len} - Number of entries in \emph{types}
 
7868
 
 
7869
\textbf{{[}out{]}} \textbf{types} - Array of buffer types
 
7870
 
 
7871
\end{description}\end{quote}
 
7872
\begin{quote}\begin{description}
 
7873
\item[{retval}] \leavevmode\begin{itemize}
 
7874
\item {} 
 
7875
0   Success; otherwise - Kerberos error codes
 
7876
 
 
7877
\end{itemize}
 
7878
 
 
7879
\end{description}\end{quote}
 
7880
 
 
7881
 
 
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)}
 
7884
 
 
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}}{}
 
7887
\end{fulllineitems}
 
7888
 
 
7889
\begin{quote}\begin{description}
 
7890
\item[{param}] \leavevmode
 
7891
\textbf{{[}in{]}} \textbf{context} - Library context
 
7892
 
 
7893
\textbf{{[}out{]}} \textbf{pac} - New PAC handle
 
7894
 
 
7895
\end{description}\end{quote}
 
7896
\begin{quote}\begin{description}
 
7897
\item[{retval}] \leavevmode\begin{itemize}
 
7898
\item {} 
 
7899
0   Success; otherwise - Kerberos error codes
 
7900
 
 
7901
\end{itemize}
 
7902
 
 
7903
\end{description}\end{quote}
 
7904
 
 
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.
 
7906
 
 
7907
 
 
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)}
 
7910
 
 
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}}{}
 
7913
\end{fulllineitems}
 
7914
 
 
7915
\begin{quote}\begin{description}
 
7916
\item[{param}] \leavevmode
 
7917
\textbf{{[}in{]}} \textbf{context} - Library context
 
7918
 
 
7919
\textbf{{[}in{]}} \textbf{ptr} - PAC buffer
 
7920
 
 
7921
\textbf{{[}in{]}} \textbf{len} - Length of \emph{ptr}
 
7922
 
 
7923
\textbf{{[}out{]}} \textbf{pac} - PAC handle
 
7924
 
 
7925
\end{description}\end{quote}
 
7926
\begin{quote}\begin{description}
 
7927
\item[{retval}] \leavevmode\begin{itemize}
 
7928
\item {} 
 
7929
0   Success; otherwise - Kerberos error codes
 
7930
 
 
7931
\end{itemize}
 
7932
 
 
7933
\end{description}\end{quote}
 
7934
 
 
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.
 
7936
 
 
7937
 
 
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)}
 
7940
 
 
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}}{}
 
7943
\end{fulllineitems}
 
7944
 
 
7945
\begin{quote}\begin{description}
 
7946
\item[{param}] \leavevmode
 
7947
\textbf{{[}in{]}} \textbf{context} - Library context
 
7948
 
 
7949
\textbf{{[}in{]}} \textbf{pac} - PAC handle
 
7950
 
 
7951
\textbf{{[}in{]}} \textbf{authtime} - Expected timestamp
 
7952
 
 
7953
\textbf{{[}in{]}} \textbf{principal} - Expected principal name (or NULL)
 
7954
 
 
7955
\textbf{{[}in{]}} \textbf{server\_key} - Key for server checksum
 
7956
 
 
7957
\textbf{{[}in{]}} \textbf{privsvr\_key} - Key for KDC checksum
 
7958
 
 
7959
\textbf{{[}out{]}} \textbf{data} - Signed PAC encoding
 
7960
 
 
7961
\end{description}\end{quote}
 
7962
 
 
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.
 
7964
 
 
7965
\begin{notice}{note}{Note:}
 
7966
First introduced in 1.10
 
7967
\end{notice}
 
7968
 
 
7969
 
 
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)}
 
7972
 
 
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}}{}
 
7975
\end{fulllineitems}
 
7976
 
 
7977
\begin{quote}\begin{description}
 
7978
\item[{param}] \leavevmode
 
7979
\textbf{{[}in{]}} \textbf{context} - Library context
 
7980
 
 
7981
\textbf{{[}in{]}} \textbf{pac} - PAC handle
 
7982
 
 
7983
\textbf{{[}in{]}} \textbf{authtime} - Expected timestamp
 
7984
 
 
7985
\textbf{{[}in{]}} \textbf{principal} - Expected principal name (or NULL)
 
7986
 
 
7987
\textbf{{[}in{]}} \textbf{server} - Key to validate server checksum (or NULL)
 
7988
 
 
7989
\textbf{{[}in{]}} \textbf{privsvr} - Key to validate KDC checksum (or NULL)
 
7990
 
 
7991
\end{description}\end{quote}
 
7992
\begin{quote}\begin{description}
 
7993
\item[{retval}] \leavevmode\begin{itemize}
 
7994
\item {} 
 
7995
0   Success; otherwise - Kerberos error codes
 
7996
 
 
7997
\end{itemize}
 
7998
 
 
7999
\end{description}\end{quote}
 
8000
 
 
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.
 
8002
 
 
8003
If successful, \emph{pac} is marked as verified.
 
8004
 
 
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.
 
8007
\end{notice}
 
8008
 
 
8009
 
 
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)}
 
8012
 
 
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}}{}
 
8015
\end{fulllineitems}
 
8016
 
 
8017
\begin{quote}\begin{description}
 
8018
\item[{param}] \leavevmode
 
8019
\textbf{{[}in{]}} \textbf{context} - Library context
 
8020
 
 
8021
\textbf{{[}in{]}} \textbf{pr} - Principal name
 
8022
 
 
8023
\textbf{{[}out{]}} \textbf{ret} - Default salt for \emph{pr} to be filled in
 
8024
 
 
8025
\end{description}\end{quote}
 
8026
\begin{quote}\begin{description}
 
8027
\item[{retval}] \leavevmode\begin{itemize}
 
8028
\item {} 
 
8029
0   Success; otherwise - Kerberos error codes
 
8030
 
 
8031
\end{itemize}
 
8032
 
 
8033
\end{description}\end{quote}
 
8034
 
 
8035
 
 
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)}
 
8038
 
 
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}}{}
 
8041
\end{fulllineitems}
 
8042
 
 
8043
\begin{quote}\begin{description}
 
8044
\item[{param}] \leavevmode
 
8045
\textbf{{[}in{]}} \textbf{context} - Library context
 
8046
 
 
8047
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
8048
 
 
8049
\textbf{{[}in{]}} \textbf{pcreddata} - \textbf{KRB-CRED} message
 
8050
 
 
8051
\textbf{{[}out{]}} \textbf{pppcreds} - Null-terminated array of forwarded credentials
 
8052
 
 
8053
\textbf{{[}out{]}} \textbf{outdata} - Replay data (NULL if not needed)
 
8054
 
 
8055
\end{description}\end{quote}
 
8056
\begin{quote}\begin{description}
 
8057
\item[{retval}] \leavevmode\begin{itemize}
 
8058
\item {} 
 
8059
0   Success; otherwise - Kerberos error codes
 
8060
 
 
8061
\end{itemize}
 
8062
 
 
8063
\end{description}\end{quote}
 
8064
\begin{quote}
 
8065
 
 
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.
 
8067
\end{quote}
 
8068
 
 
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.
 
8070
 
 
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} .{}`
 
8073
\end{notice}
 
8074
 
 
8075
 
 
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)}
 
8078
 
 
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}}{}
 
8081
\end{fulllineitems}
 
8082
 
 
8083
\begin{quote}\begin{description}
 
8084
\item[{param}] \leavevmode
 
8085
\textbf{{[}in{]}} \textbf{context} - Library context
 
8086
 
 
8087
\textbf{{[}in{]}} \textbf{enc\_errbuf} - Encoded error message
 
8088
 
 
8089
\textbf{{[}out{]}} \textbf{dec\_error} - Decoded error message
 
8090
 
 
8091
\end{description}\end{quote}
 
8092
\begin{quote}\begin{description}
 
8093
\item[{retval}] \leavevmode\begin{itemize}
 
8094
\item {} 
 
8095
0   Success; otherwise - Kerberos error codes
 
8096
 
 
8097
\end{itemize}
 
8098
 
 
8099
\end{description}\end{quote}
 
8100
 
 
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.
 
8102
 
 
8103
 
 
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)}
 
8106
 
 
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}}{}
 
8109
\end{fulllineitems}
 
8110
 
 
8111
\begin{quote}\begin{description}
 
8112
\item[{param}] \leavevmode
 
8113
\textbf{{[}in{]}} \textbf{context} - Library context
 
8114
 
 
8115
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication structure
 
8116
 
 
8117
\textbf{{[}in{]}} \textbf{inbuf} - \textbf{KRB-PRIV} message to be parsed
 
8118
 
 
8119
\textbf{{[}out{]}} \textbf{outbuf} - Data parsed from \textbf{KRB-PRIV} message
 
8120
 
 
8121
\textbf{{[}out{]}} \textbf{outdata} - Replay data. Specify NULL if not needed
 
8122
 
 
8123
\end{description}\end{quote}
 
8124
\begin{quote}\begin{description}
 
8125
\item[{retval}] \leavevmode\begin{itemize}
 
8126
\item {} 
 
8127
0   Success; otherwise - Kerberos error codes
 
8128
 
 
8129
\end{itemize}
 
8130
 
 
8131
\end{description}\end{quote}
 
8132
 
 
8133
This function parses a \textbf{KRB-PRIV} message, verifies its integrity, and stores its unencrypted data into \emph{outbuf} .
 
8134
 
 
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.
 
8136
 
 
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:
 
8138
\begin{itemize}
 
8139
\item {} 
 
8140
The timestamp in the message must be within the permitted clock skew (which is usually five minutes).
 
8141
 
 
8142
\item {} 
 
8143
The message must not be a replayed message field in \emph{auth\_context} .
 
8144
 
 
8145
\end{itemize}
 
8146
 
 
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.
 
8149
 
 
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} .
 
8151
\end{notice}
 
8152
 
 
8153
 
 
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)}
 
8156
 
 
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}}{}
 
8159
\end{fulllineitems}
 
8160
 
 
8161
\begin{quote}\begin{description}
 
8162
\item[{param}] \leavevmode
 
8163
\textbf{{[}in{]}} \textbf{context} - Library context
 
8164
 
 
8165
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
8166
 
 
8167
\textbf{{[}in{]}} \textbf{inbuf} - AP-REP message
 
8168
 
 
8169
\textbf{{[}out{]}} \textbf{repl} - Decrypted reply message
 
8170
 
 
8171
\end{description}\end{quote}
 
8172
\begin{quote}\begin{description}
 
8173
\item[{retval}] \leavevmode\begin{itemize}
 
8174
\item {} 
 
8175
0   Success; otherwise - Kerberos error codes
 
8176
 
 
8177
\end{itemize}
 
8178
 
 
8179
\end{description}\end{quote}
 
8180
 
 
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.
 
8182
 
 
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.
 
8184
 
 
8185
 
 
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)}
 
8188
 
 
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}}{}
 
8191
\end{fulllineitems}
 
8192
 
 
8193
\begin{quote}\begin{description}
 
8194
\item[{param}] \leavevmode
 
8195
\textbf{{[}in{]}} \textbf{context} - Library context
 
8196
 
 
8197
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
8198
 
 
8199
\textbf{{[}in{]}} \textbf{inbuf} - AP-REP message
 
8200
 
 
8201
\textbf{{[}out{]}} \textbf{nonce} - Sequence number from the decrypted reply
 
8202
 
 
8203
\end{description}\end{quote}
 
8204
\begin{quote}\begin{description}
 
8205
\item[{retval}] \leavevmode\begin{itemize}
 
8206
\item {} 
 
8207
0   Success; otherwise - Kerberos error codes
 
8208
 
 
8209
\end{itemize}
 
8210
 
 
8211
\end{description}\end{quote}
 
8212
 
 
8213
This function parses, decrypts and verifies a message from \emph{inbuf} and fills in \emph{nonce} with a decrypted reply sequence number.
 
8214
 
 
8215
 
 
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)}
 
8218
 
 
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}}{}
 
8221
\end{fulllineitems}
 
8222
 
 
8223
\begin{quote}\begin{description}
 
8224
\item[{param}] \leavevmode
 
8225
\textbf{{[}in{]}} \textbf{context} - Library context
 
8226
 
 
8227
\textbf{{[}inout{]}} \textbf{auth\_context} - Pre-existing or newly created auth context
 
8228
 
 
8229
\textbf{{[}in{]}} \textbf{inbuf} - AP-REQ message to be parsed
 
8230
 
 
8231
\textbf{{[}in{]}} \textbf{server} - Matching principal for server, or NULL to allow any principal in keytab
 
8232
 
 
8233
\textbf{{[}in{]}} \textbf{keytab} - Key table, or NULL to use the default
 
8234
 
 
8235
\textbf{{[}out{]}} \textbf{ap\_req\_options} - If non-null, the AP-REQ flags on output
 
8236
 
 
8237
\textbf{{[}out{]}} \textbf{ticket} - If non-null, ticket from the AP-REQ message
 
8238
 
 
8239
\end{description}\end{quote}
 
8240
\begin{quote}\begin{description}
 
8241
\item[{retval}] \leavevmode\begin{itemize}
 
8242
\item {} 
 
8243
0   Success; otherwise - Kerberos error codes
 
8244
 
 
8245
\end{itemize}
 
8246
 
 
8247
\end{description}\end{quote}
 
8248
 
 
8249
This function parses, decrypts and verifies a AP-REQ message from \emph{inbuf} and stores the authenticator in \emph{auth\_context} .
 
8250
 
 
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.
 
8252
 
 
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:
 
8254
\begin{itemize}
 
8255
\item {} 
 
8256
If \emph{server} is a complete principal name, then its entry in \emph{keytab} is tried.
 
8257
 
 
8258
\item {} 
 
8259
Otherwise, if \emph{keytab} is iterable, then all entries in \emph{keytab} which match \emph{server} are tried.
 
8260
 
 
8261
\item {} 
 
8262
Otherwise, the server principal in the ticket must match \emph{server} , and its entry in \emph{keytab} is tried.
 
8263
 
 
8264
\end{itemize}
 
8265
 
 
8266
The client specified in the decrypted authenticator must match the client specified in the decrypted ticket.
 
8267
 
 
8268
If the \emph{remote\_addr} field of \emph{auth\_context} is set, the request must come from that address.
 
8269
 
 
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} .
 
8271
 
 
8272
Various other checks are performed on the decoded data, including cross-realm policy, clockskew, and ticket validation times.
 
8273
 
 
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.
 
8275
 
 
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.
 
8277
 
 
8278
 
 
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)}
 
8281
 
 
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}}{}
 
8284
\end{fulllineitems}
 
8285
 
 
8286
\begin{quote}\begin{description}
 
8287
\item[{param}] \leavevmode
 
8288
\textbf{{[}in{]}} \textbf{context} - Library context
 
8289
 
 
8290
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication structure
 
8291
 
 
8292
\textbf{{[}in{]}} \textbf{inbuf} - \textbf{KRB-SAFE} message to be parsed
 
8293
 
 
8294
\textbf{{[}out{]}} \textbf{outbuf} - Data parsed from \textbf{KRB-SAFE} message
 
8295
 
 
8296
\textbf{{[}out{]}} \textbf{outdata} - Replay data. Specify NULL if not needed
 
8297
 
 
8298
\end{description}\end{quote}
 
8299
\begin{quote}\begin{description}
 
8300
\item[{retval}] \leavevmode\begin{itemize}
 
8301
\item {} 
 
8302
0   Success; otherwise - Kerberos error codes
 
8303
 
 
8304
\end{itemize}
 
8305
 
 
8306
\end{description}\end{quote}
 
8307
 
 
8308
This function parses a \textbf{KRB-SAFE} message, verifies its integrity, and stores its data into \emph{outbuf} .
 
8309
 
 
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.
 
8311
 
 
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:
 
8313
\begin{quote}
 
8314
\begin{itemize}
 
8315
\item {} 
 
8316
The timestamp in the message must be within the permitted clock skew (which is usually five minutes).
 
8317
 
 
8318
\item {} 
 
8319
The message must not be a replayed message field in \emph{auth\_context} .
 
8320
 
 
8321
\end{itemize}
 
8322
 
 
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.
 
8324
\end{quote}
 
8325
 
 
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} .
 
8328
 
 
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} .
 
8330
\end{notice}
 
8331
 
 
8332
 
 
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)}
 
8335
 
 
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}}{}
 
8338
\end{fulllineitems}
 
8339
 
 
8340
\begin{quote}\begin{description}
 
8341
\item[{param}] \leavevmode
 
8342
\textbf{{[}in{]}} \textbf{context} - Library context
 
8343
 
 
8344
\textbf{{[}in{]}} \textbf{prompt} - First user prompt when reading password
 
8345
 
 
8346
\textbf{{[}in{]}} \textbf{prompt2} - Second user prompt (NULL to prompt only once)
 
8347
 
 
8348
\textbf{{[}out{]}} \textbf{return\_pwd} - Returned password
 
8349
 
 
8350
\textbf{{[}inout{]}} \textbf{size\_return} - On input, maximum size of password; on output, size of password read
 
8351
 
 
8352
\end{description}\end{quote}
 
8353
\begin{quote}\begin{description}
 
8354
\item[{retval}] \leavevmode\begin{itemize}
 
8355
\item {} 
 
8356
0   Success
 
8357
 
 
8358
\end{itemize}
 
8359
 
 
8360
\item[{return}] \leavevmode\begin{itemize}
 
8361
\item {} 
 
8362
Error in reading or verifying the password Kerberos error codes
 
8363
 
 
8364
\end{itemize}
 
8365
 
 
8366
\end{description}\end{quote}
 
8367
 
 
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.
 
8369
\begin{quote}
 
8370
 
 
8371
\emph{prompt} is printed to the terminal, followed by'':'', and then a password is read from the keyboard.
 
8372
\end{quote}
 
8373
 
 
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.
 
8375
 
 
8376
Echoing is turned off when the password is read.
 
8377
 
 
8378
 
 
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)}
 
8381
 
 
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}}{}
 
8384
\end{fulllineitems}
 
8385
 
 
8386
\begin{quote}\begin{description}
 
8387
\item[{param}] \leavevmode
 
8388
\textbf{{[}in{]}} \textbf{salttype} - Salttype to convert
 
8389
 
 
8390
\textbf{{[}out{]}} \textbf{buffer} - Buffer to receive the converted string
 
8391
 
 
8392
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
 
8393
 
 
8394
\end{description}\end{quote}
 
8395
\begin{quote}\begin{description}
 
8396
\item[{retval}] \leavevmode\begin{itemize}
 
8397
\item {} 
 
8398
0   Success; otherwise - Kerberos error codes
 
8399
 
 
8400
\end{itemize}
 
8401
 
 
8402
\end{description}\end{quote}
 
8403
 
 
8404
 
 
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)}
 
8407
 
 
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}}{}
 
8410
\end{fulllineitems}
 
8411
 
 
8412
\begin{quote}\begin{description}
 
8413
\item[{param}] \leavevmode
 
8414
\textbf{{[}in{]}} \textbf{context} - Library context
 
8415
 
 
8416
\textbf{{[}in{]}} \textbf{kt} - Key table
 
8417
 
 
8418
\textbf{{[}inout{]}} \textbf{ticket} - Ticket to be decrypted
 
8419
 
 
8420
\end{description}\end{quote}
 
8421
\begin{quote}\begin{description}
 
8422
\item[{retval}] \leavevmode\begin{itemize}
 
8423
\item {} 
 
8424
0   Success; otherwise - Kerberos error codes
 
8425
 
 
8426
\end{itemize}
 
8427
 
 
8428
\end{description}\end{quote}
 
8429
 
 
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} .
 
8431
 
 
8432
 
 
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)}
 
8435
 
 
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}}{}
 
8438
\end{fulllineitems}
 
8439
 
 
8440
\begin{quote}\begin{description}
 
8441
\item[{param}] \leavevmode
 
8442
\textbf{{[}inout{]}} \textbf{context} - Library context
 
8443
 
 
8444
\textbf{{[}in{]}} \textbf{etypes} - Encryption type(s) to set
 
8445
 
 
8446
\end{description}\end{quote}
 
8447
\begin{quote}\begin{description}
 
8448
\item[{retval}] \leavevmode\begin{itemize}
 
8449
\item {} 
 
8450
0   Success
 
8451
 
 
8452
\item {} 
 
8453
KRB5\_PROG\_ETYPE\_NOSUPP   Program lacks support for encryption type
 
8454
 
 
8455
\end{itemize}
 
8456
 
 
8457
\item[{return}] \leavevmode\begin{itemize}
 
8458
\item {} 
 
8459
Kerberos error codes
 
8460
 
 
8461
\end{itemize}
 
8462
 
 
8463
\end{description}\end{quote}
 
8464
 
 
8465
This function sets the default enctype list for TGS requests made using \emph{context} to \emph{etypes} .
 
8466
 
 
8467
\begin{notice}{note}{Note:}
 
8468
This overrides the default list (from config file or built-in).
 
8469
\end{notice}
 
8470
 
 
8471
 
 
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)}
 
8474
 
 
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}, ...}{}
 
8477
\end{fulllineitems}
 
8478
 
 
8479
\begin{quote}\begin{description}
 
8480
\item[{param}] \leavevmode
 
8481
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
8482
 
 
8483
\textbf{{[}in{]}} \textbf{code} - Error code
 
8484
 
 
8485
\textbf{{[}in{]}} \textbf{fmt} - Error string for the error code
 
8486
 
 
8487
\end{description}\end{quote}
 
8488
 
 
8489
 
 
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)}
 
8492
 
 
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}}{}
 
8495
\end{fulllineitems}
 
8496
 
 
8497
\begin{quote}\begin{description}
 
8498
\item[{param}] \leavevmode
 
8499
\textbf{{[}in{]}} \textbf{context} - Library context
 
8500
 
 
8501
\textbf{{[}in{]}} \textbf{seconds} - Real time, seconds portion
 
8502
 
 
8503
\textbf{{[}in{]}} \textbf{microseconds} - Real time, microseconds portion
 
8504
 
 
8505
\end{description}\end{quote}
 
8506
\begin{quote}\begin{description}
 
8507
\item[{retval}] \leavevmode\begin{itemize}
 
8508
\item {} 
 
8509
0   Success; otherwise - Kerberos error codes
 
8510
 
 
8511
\end{itemize}
 
8512
 
 
8513
\end{description}\end{quote}
 
8514
 
 
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} .
 
8516
 
 
8517
 
 
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)}
 
8520
 
 
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}}{}
 
8523
\end{fulllineitems}
 
8524
 
 
8525
\begin{quote}\begin{description}
 
8526
\item[{param}] \leavevmode
 
8527
\textbf{{[}in{]}} \textbf{string} - String to be converted
 
8528
 
 
8529
\textbf{{[}out{]}} \textbf{cksumtypep} - Checksum type to be filled in
 
8530
 
 
8531
\end{description}\end{quote}
 
8532
\begin{quote}\begin{description}
 
8533
\item[{retval}] \leavevmode\begin{itemize}
 
8534
\item {} 
 
8535
0   Success; otherwise - EINVAL
 
8536
 
 
8537
\end{itemize}
 
8538
 
 
8539
\end{description}\end{quote}
 
8540
 
 
8541
 
 
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)}
 
8544
 
 
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}}{}
 
8547
\end{fulllineitems}
 
8548
 
 
8549
\begin{quote}\begin{description}
 
8550
\item[{param}] \leavevmode
 
8551
\textbf{{[}in{]}} \textbf{string} - String to be converted
 
8552
 
 
8553
\textbf{{[}out{]}} \textbf{deltatp} - Delta time to be filled in
 
8554
 
 
8555
\end{description}\end{quote}
 
8556
\begin{quote}\begin{description}
 
8557
\item[{retval}] \leavevmode\begin{itemize}
 
8558
\item {} 
 
8559
0   Success; otherwise - KRB5\_DELTAT\_BADFORMAT
 
8560
 
 
8561
\end{itemize}
 
8562
 
 
8563
\end{description}\end{quote}
 
8564
 
 
8565
 
 
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)}
 
8568
 
 
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}}{}
 
8571
\end{fulllineitems}
 
8572
 
 
8573
\begin{quote}\begin{description}
 
8574
\item[{param}] \leavevmode
 
8575
\textbf{{[}in{]}} \textbf{string} - String to convert to an encryption type
 
8576
 
 
8577
\textbf{{[}out{]}} \textbf{enctypep} - Encryption type
 
8578
 
 
8579
\end{description}\end{quote}
 
8580
\begin{quote}\begin{description}
 
8581
\item[{retval}] \leavevmode\begin{itemize}
 
8582
\item {} 
 
8583
0   Success; otherwise - EINVAL
 
8584
 
 
8585
\end{itemize}
 
8586
 
 
8587
\end{description}\end{quote}
 
8588
 
 
8589
 
 
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)}
 
8592
 
 
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}}{}
 
8595
\end{fulllineitems}
 
8596
 
 
8597
\begin{quote}\begin{description}
 
8598
\item[{param}] \leavevmode
 
8599
\textbf{{[}in{]}} \textbf{string} - String to convert to an encryption type
 
8600
 
 
8601
\textbf{{[}out{]}} \textbf{salttypep} - Salt type to be filled in
 
8602
 
 
8603
\end{description}\end{quote}
 
8604
\begin{quote}\begin{description}
 
8605
\item[{retval}] \leavevmode\begin{itemize}
 
8606
\item {} 
 
8607
0   Success; otherwise - EINVAL
 
8608
 
 
8609
\end{itemize}
 
8610
 
 
8611
\end{description}\end{quote}
 
8612
 
 
8613
 
 
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)}
 
8616
 
 
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}}{}
 
8619
\end{fulllineitems}
 
8620
 
 
8621
\begin{quote}\begin{description}
 
8622
\item[{param}] \leavevmode
 
8623
\textbf{{[}in{]}} \textbf{string} - String to be converted
 
8624
 
 
8625
\textbf{{[}out{]}} \textbf{timestampp} - Pointer to timestamp
 
8626
 
 
8627
\end{description}\end{quote}
 
8628
\begin{quote}\begin{description}
 
8629
\item[{retval}] \leavevmode\begin{itemize}
 
8630
\item {} 
 
8631
0   Success; otherwise - EINVAL
 
8632
 
 
8633
\end{itemize}
 
8634
 
 
8635
\end{description}\end{quote}
 
8636
 
 
8637
 
 
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)}
 
8640
 
 
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}}{}
 
8643
\end{fulllineitems}
 
8644
 
 
8645
\begin{quote}\begin{description}
 
8646
\item[{param}] \leavevmode
 
8647
\textbf{{[}in{]}} \textbf{context} - Library context
 
8648
 
 
8649
\textbf{{[}inout{]}} \textbf{timeret} - Timestamp to fill in
 
8650
 
 
8651
\end{description}\end{quote}
 
8652
\begin{quote}\begin{description}
 
8653
\item[{retval}] \leavevmode\begin{itemize}
 
8654
\item {} 
 
8655
0   Success
 
8656
 
 
8657
\end{itemize}
 
8658
 
 
8659
\item[{return}] \leavevmode\begin{itemize}
 
8660
\item {} 
 
8661
Kerberos error codes
 
8662
 
 
8663
\end{itemize}
 
8664
 
 
8665
\end{description}\end{quote}
 
8666
 
 
8667
This function retrieves the system time of day with the context specific time offset adjustment.
 
8668
 
 
8669
 
 
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)}
 
8672
 
 
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}}{}
 
8675
\end{fulllineitems}
 
8676
 
 
8677
\begin{quote}\begin{description}
 
8678
\item[{param}] \leavevmode
 
8679
\textbf{{[}in{]}} \textbf{timestamp} - Timestamp to convert
 
8680
 
 
8681
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold the converted timestamp
 
8682
 
 
8683
\textbf{{[}in{]}} \textbf{buflen} - Length of buffer
 
8684
 
 
8685
\textbf{{[}in{]}} \textbf{pad} - Optional value to pad \emph{buffer} if converted timestamp does not fill it
 
8686
 
 
8687
\end{description}\end{quote}
 
8688
\begin{quote}\begin{description}
 
8689
\item[{retval}] \leavevmode\begin{itemize}
 
8690
\item {} 
 
8691
0   Success; otherwise - Kerberos error codes
 
8692
 
 
8693
\end{itemize}
 
8694
 
 
8695
\end{description}\end{quote}
 
8696
 
 
8697
If \emph{pad} is not NULL, \emph{buffer} is padded out to \emph{buflen} - 1 characters with the value of * \emph{pad} .
 
8698
 
 
8699
 
 
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)}
 
8702
 
 
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}}{}
 
8705
\end{fulllineitems}
 
8706
 
 
8707
\begin{quote}\begin{description}
 
8708
\item[{param}] \leavevmode
 
8709
\textbf{{[}in{]}} \textbf{timestamp} - Timestamp to convert
 
8710
 
 
8711
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold converted timestamp
 
8712
 
 
8713
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
 
8714
 
 
8715
\end{description}\end{quote}
 
8716
\begin{quote}\begin{description}
 
8717
\item[{retval}] \leavevmode\begin{itemize}
 
8718
\item {} 
 
8719
0   Success; otherwise - Kerberos error codes
 
8720
 
 
8721
\end{itemize}
 
8722
 
 
8723
\end{description}\end{quote}
 
8724
 
 
8725
The string is returned in the locale's appropriate date and time representation.
 
8726
 
 
8727
 
 
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)}
 
8730
 
 
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}}{}
 
8733
\end{fulllineitems}
 
8734
 
 
8735
\begin{quote}\begin{description}
 
8736
\item[{param}] \leavevmode
 
8737
\textbf{{[}in{]}} \textbf{context} - Library context
 
8738
 
 
8739
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
 
8740
 
 
8741
\end{description}\end{quote}
 
8742
 
 
8743
\begin{notice}{note}{Note:}
 
8744
First introduced in 1.9
 
8745
\end{notice}
 
8746
 
 
8747
 
 
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)}
 
8750
 
 
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}}{}
 
8753
\end{fulllineitems}
 
8754
 
 
8755
\begin{quote}\begin{description}
 
8756
\item[{param}] \leavevmode
 
8757
\textbf{{[}in{]}} \textbf{context} - Library context
 
8758
 
 
8759
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
 
8760
 
 
8761
\end{description}\end{quote}
 
8762
\begin{quote}\begin{description}
 
8763
\item[{retval}] \leavevmode\begin{itemize}
 
8764
\item {} 
 
8765
0   Success; otherwise - Kerberos error codes
 
8766
 
 
8767
\end{itemize}
 
8768
 
 
8769
\end{description}\end{quote}
 
8770
 
 
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()}}} .
 
8772
 
 
8773
\begin{notice}{note}{Note:}
 
8774
First introduced in 1.9
 
8775
\end{notice}
 
8776
 
 
8777
 
 
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)}
 
8780
 
 
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}}{}
 
8783
\end{fulllineitems}
 
8784
 
 
8785
\begin{quote}\begin{description}
 
8786
\item[{param}] \leavevmode
 
8787
\textbf{{[}in{]}} \textbf{context} - Library context
 
8788
 
 
8789
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
 
8790
 
 
8791
\textbf{{[}out{]}} \textbf{creds} - Acquired credentials
 
8792
 
 
8793
\end{description}\end{quote}
 
8794
\begin{quote}\begin{description}
 
8795
\item[{retval}] \leavevmode\begin{itemize}
 
8796
\item {} 
 
8797
0   Success; otherwise - Kerberos error codes
 
8798
 
 
8799
\end{itemize}
 
8800
 
 
8801
\end{description}\end{quote}
 
8802
 
 
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.
 
8804
 
 
8805
\begin{notice}{note}{Note:}
 
8806
First introduced in 1.9
 
8807
\end{notice}
 
8808
 
 
8809
 
 
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)}
 
8812
 
 
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}}{}
 
8815
\end{fulllineitems}
 
8816
 
 
8817
\begin{quote}\begin{description}
 
8818
\item[{param}] \leavevmode
 
8819
\textbf{{[}in{]}} \textbf{context} - Library context
 
8820
 
 
8821
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
 
8822
 
 
8823
\textbf{{[}out{]}} \textbf{times} - Ticket times for acquired credentials
 
8824
 
 
8825
\end{description}\end{quote}
 
8826
\begin{quote}\begin{description}
 
8827
\item[{retval}] \leavevmode\begin{itemize}
 
8828
\item {} 
 
8829
0   Success; otherwise - Kerberos error codes
 
8830
 
 
8831
\end{itemize}
 
8832
 
 
8833
\end{description}\end{quote}
 
8834
 
 
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()}}} .
 
8836
 
 
8837
\begin{notice}{note}{Note:}
 
8838
First introduced in 1.9
 
8839
\end{notice}
 
8840
 
 
8841
 
 
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)}
 
8844
 
 
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}}{}
 
8847
\end{fulllineitems}
 
8848
 
 
8849
\begin{quote}\begin{description}
 
8850
\item[{param}] \leavevmode
 
8851
\textbf{{[}in{]}} \textbf{context} - Library context
 
8852
 
 
8853
\textbf{{[}in{]}} \textbf{ccache} - Credential cache handle
 
8854
 
 
8855
\textbf{{[}in{]}} \textbf{creds} - Input credentials
 
8856
 
 
8857
\textbf{{[}in{]}} \textbf{options} - \code{KRB5\_GC} options for this request.
 
8858
 
 
8859
\textbf{{[}out{]}} \textbf{ctx} - New TGS request context
 
8860
 
 
8861
\end{description}\end{quote}
 
8862
\begin{quote}\begin{description}
 
8863
\item[{retval}] \leavevmode\begin{itemize}
 
8864
\item {} 
 
8865
0   Success; otherwise - Kerberos error codes
 
8866
 
 
8867
\end{itemize}
 
8868
 
 
8869
\end{description}\end{quote}
 
8870
 
 
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.
 
8872
 
 
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.
 
8874
 
 
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.
 
8876
 
 
8877
\begin{notice}{note}{Note:}
 
8878
First introduced in 1.9
 
8879
\end{notice}
 
8880
 
 
8881
 
 
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)}
 
8884
 
 
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}}{}
 
8887
\end{fulllineitems}
 
8888
 
 
8889
\begin{quote}\begin{description}
 
8890
\item[{param}] \leavevmode
 
8891
\textbf{{[}in{]}} \textbf{context} - Library context
 
8892
 
 
8893
\textbf{{[}in{]}} \textbf{ctx} - TGS request context
 
8894
 
 
8895
\textbf{{[}in{]}} \textbf{in} - KDC response (empty on the first call)
 
8896
 
 
8897
\textbf{{[}out{]}} \textbf{out} - Next KDC request
 
8898
 
 
8899
\textbf{{[}out{]}} \textbf{realm} - Realm for next KDC request
 
8900
 
 
8901
\textbf{{[}out{]}} \textbf{flags} - Output flags
 
8902
 
 
8903
\end{description}\end{quote}
 
8904
\begin{quote}\begin{description}
 
8905
\item[{retval}] \leavevmode\begin{itemize}
 
8906
\item {} 
 
8907
0   Success; otherwise - Kerberos error codes
 
8908
 
 
8909
\end{itemize}
 
8910
 
 
8911
\end{description}\end{quote}
 
8912
 
 
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.
 
8914
 
 
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.
 
8916
 
 
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.
 
8918
 
 
8919
\begin{notice}{note}{Note:}
 
8920
First introduced in 1.9
 
8921
\end{notice}
 
8922
 
 
8923
 
 
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)}
 
8926
 
 
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}}{}
 
8929
\end{fulllineitems}
 
8930
 
 
8931
\begin{quote}\begin{description}
 
8932
\item[{param}] \leavevmode
 
8933
\textbf{{[}in{]}} \textbf{context} - Library context
 
8934
 
 
8935
\textbf{{[}in{]}} \textbf{creds} - Initial credentials to be verified
 
8936
 
 
8937
\textbf{{[}in{]}} \textbf{server} - Server principal (or NULL)
 
8938
 
 
8939
\textbf{{[}in{]}} \textbf{keytab} - Key table (NULL to use default keytab)
 
8940
 
 
8941
\textbf{{[}inout{]}} \textbf{ccache} - Credential cache for fetched creds (or NULL)
 
8942
 
 
8943
\textbf{{[}in{]}} \textbf{options} - Verification options (NULL for default options)
 
8944
 
 
8945
\end{description}\end{quote}
 
8946
\begin{quote}\begin{description}
 
8947
\item[{retval}] \leavevmode\begin{itemize}
 
8948
\item {} 
 
8949
0   Success; otherwise - Kerberos error codes
 
8950
 
 
8951
\end{itemize}
 
8952
 
 
8953
\end{description}\end{quote}
 
8954
 
 
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.
 
8956
 
 
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()}}} .
 
8958
 
 
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.
 
8960
 
 
8961
 
 
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)}
 
8964
 
 
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}}{}
 
8967
\end{fulllineitems}
 
8968
 
 
8969
\begin{quote}\begin{description}
 
8970
\item[{param}] \leavevmode
 
8971
\textbf{{[}in{]}} \textbf{k5\_vic\_options} - Verification options structure
 
8972
 
 
8973
\end{description}\end{quote}
 
8974
 
 
8975
 
 
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)}
 
8978
 
 
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}}{}
 
8981
\end{fulllineitems}
 
8982
 
 
8983
\begin{quote}\begin{description}
 
8984
\item[{param}] \leavevmode
 
8985
\textbf{{[}in{]}} \textbf{k5\_vic\_options} - Verification options structure
 
8986
 
 
8987
\textbf{{[}in{]}} \textbf{ap\_req\_nofail} - Whether to require successful verification
 
8988
 
 
8989
\end{description}\end{quote}
 
8990
 
 
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.
 
8992
 
 
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.
 
8994
 
 
8995
 
 
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)}
 
8998
 
 
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}}{}
 
9001
\end{fulllineitems}
 
9002
 
 
9003
\begin{quote}\begin{description}
 
9004
\item[{param}] \leavevmode
 
9005
\textbf{{[}in{]}} \textbf{ctx} - Library context
 
9006
 
 
9007
\textbf{{[}in{]}} \textbf{code} - Error code
 
9008
 
 
9009
\textbf{{[}in{]}} \textbf{fmt} - Error string for the error code
 
9010
 
 
9011
\textbf{{[}in{]}} \textbf{args} - List of vprintf(3) style arguments
 
9012
 
 
9013
\end{description}\end{quote}
 
9014
 
 
9015
 
 
9016
\subsection{Public interfaces that should not be called directly}
 
9017
\label{appdev/refs/api/index:public-interfaces-that-should-not-be-called-directly}
 
9018
 
 
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)}
 
9021
 
 
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}}{}
 
9024
\end{fulllineitems}
 
9025
 
 
9026
\begin{quote}\begin{description}
 
9027
\item[{param}] \leavevmode
 
9028
\textbf{{[}in{]}} \textbf{context} - Library context
 
9029
 
 
9030
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9031
 
 
9032
\textbf{{[}out{]}} \textbf{blocksize} - Block size for \emph{enctype}
 
9033
 
 
9034
\end{description}\end{quote}
 
9035
\begin{quote}\begin{description}
 
9036
\item[{retval}] \leavevmode\begin{itemize}
 
9037
\item {} 
 
9038
0   Success; otherwise - Kerberos error codes
 
9039
 
 
9040
\end{itemize}
 
9041
 
 
9042
\end{description}\end{quote}
 
9043
 
 
9044
 
 
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)}
 
9047
 
 
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}}{}
 
9050
\end{fulllineitems}
 
9051
 
 
9052
\begin{quote}\begin{description}
 
9053
\item[{param}] \leavevmode
 
9054
\textbf{{[}in{]}} \textbf{context} - Library context
 
9055
 
 
9056
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type
 
9057
 
 
9058
\textbf{{[}out{]}} \textbf{length} - Checksum length
 
9059
 
 
9060
\end{description}\end{quote}
 
9061
\begin{quote}\begin{description}
 
9062
\item[{retval}] \leavevmode\begin{itemize}
 
9063
\item {} 
 
9064
0   Success; otherwise - Kerberos error codes
 
9065
 
 
9066
\end{itemize}
 
9067
 
 
9068
\end{description}\end{quote}
 
9069
 
 
9070
 
 
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)}
 
9073
 
 
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}}{}
 
9076
\end{fulllineitems}
 
9077
 
 
9078
\begin{quote}\begin{description}
 
9079
\item[{param}] \leavevmode
 
9080
\textbf{{[}in{]}} \textbf{context} - Library context
 
9081
 
 
9082
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9083
 
 
9084
\textbf{{[}in{]}} \textbf{type} - Type field (See \code{KRB5\_CRYPTO\_TYPE} types)
 
9085
 
 
9086
\textbf{{[}out{]}} \textbf{size} - Length of the \emph{type} specific to \emph{enctype}
 
9087
 
 
9088
\end{description}\end{quote}
 
9089
\begin{quote}\begin{description}
 
9090
\item[{retval}] \leavevmode\begin{itemize}
 
9091
\item {} 
 
9092
0   Success; otherwise - Kerberos error codes
 
9093
 
 
9094
\end{itemize}
 
9095
 
 
9096
\end{description}\end{quote}
 
9097
 
 
9098
 
 
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)}
 
9101
 
 
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}}{}
 
9104
\end{fulllineitems}
 
9105
 
 
9106
\begin{quote}\begin{description}
 
9107
\item[{param}] \leavevmode
 
9108
\textbf{{[}in{]}} \textbf{context} - Library context
 
9109
 
 
9110
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9111
 
 
9112
\textbf{{[}inout{]}} \textbf{data} - IOV array
 
9113
 
 
9114
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
9115
 
 
9116
\end{description}\end{quote}
 
9117
\begin{quote}\begin{description}
 
9118
\item[{retval}] \leavevmode\begin{itemize}
 
9119
\item {} 
 
9120
0   Success; otherwise - Kerberos error codes
 
9121
 
 
9122
\end{itemize}
 
9123
 
 
9124
\end{description}\end{quote}
 
9125
 
 
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.
 
9127
 
 
9128
 
 
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)}
 
9131
 
 
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}}{}
 
9134
\end{fulllineitems}
 
9135
 
 
9136
\begin{quote}\begin{description}
 
9137
\item[{param}] \leavevmode
 
9138
\textbf{{[}in{]}} \textbf{context} - Library context
 
9139
 
 
9140
\textbf{{[}in{]}} \textbf{key} - Encryption key
 
9141
 
 
9142
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9143
 
 
9144
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
9145
 
 
9146
\textbf{{[}in{]}} \textbf{input} - Encrypted data
 
9147
 
 
9148
\textbf{{[}out{]}} \textbf{output} - Decrypted data
 
9149
 
 
9150
\end{description}\end{quote}
 
9151
\begin{quote}\begin{description}
 
9152
\item[{retval}] \leavevmode\begin{itemize}
 
9153
\item {} 
 
9154
0   Success; otherwise - Kerberos error codes
 
9155
 
 
9156
\end{itemize}
 
9157
 
 
9158
\end{description}\end{quote}
 
9159
 
 
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.
 
9161
 
 
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.
 
9164
\end{notice}
 
9165
 
 
9166
 
 
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)}
 
9169
 
 
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}}{}
 
9172
\end{fulllineitems}
 
9173
 
 
9174
\begin{quote}\begin{description}
 
9175
\item[{param}] \leavevmode
 
9176
\textbf{{[}in{]}} \textbf{context} - Library context
 
9177
 
 
9178
\textbf{{[}in{]}} \textbf{keyblock} - Encryption key
 
9179
 
 
9180
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9181
 
 
9182
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
9183
 
 
9184
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
 
9185
 
 
9186
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
9187
 
 
9188
\end{description}\end{quote}
 
9189
\begin{quote}\begin{description}
 
9190
\item[{retval}] \leavevmode\begin{itemize}
 
9191
\item {} 
 
9192
0   Success; otherwise - Kerberos error codes
 
9193
 
 
9194
\end{itemize}
 
9195
 
 
9196
\end{description}\end{quote}
 
9197
 
 
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.
 
9199
 
 
9200
 
 
9201
\strong{See Also:}
 
9202
 
 
9203
 
 
9204
{\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}}
 
9205
 
 
9206
 
 
9207
 
 
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.
 
9210
 
 
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} .
 
9212
\end{notice}
 
9213
 
 
9214
 
 
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)}
 
9217
 
 
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}}{}
 
9220
\end{fulllineitems}
 
9221
 
 
9222
\begin{quote}\begin{description}
 
9223
\item[{param}] \leavevmode
 
9224
\textbf{{[}in{]}} \textbf{context} - Library context
 
9225
 
 
9226
\textbf{{[}in{]}} \textbf{key} - Encryption key
 
9227
 
 
9228
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9229
 
 
9230
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
9231
 
 
9232
\textbf{{[}in{]}} \textbf{input} - Data to be encrypted
 
9233
 
 
9234
\textbf{{[}out{]}} \textbf{output} - Encrypted data
 
9235
 
 
9236
\end{description}\end{quote}
 
9237
\begin{quote}\begin{description}
 
9238
\item[{retval}] \leavevmode\begin{itemize}
 
9239
\item {} 
 
9240
0   Success; otherwise - Kerberos error codes
 
9241
 
 
9242
\end{itemize}
 
9243
 
 
9244
\end{description}\end{quote}
 
9245
 
 
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.
 
9247
 
 
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.
 
9250
\end{notice}
 
9251
 
 
9252
 
 
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)}
 
9255
 
 
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}}{}
 
9258
\end{fulllineitems}
 
9259
 
 
9260
\begin{quote}\begin{description}
 
9261
\item[{param}] \leavevmode
 
9262
\textbf{{[}in{]}} \textbf{context} - Library context
 
9263
 
 
9264
\textbf{{[}in{]}} \textbf{keyblock} - Encryption key
 
9265
 
 
9266
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9267
 
 
9268
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
9269
 
 
9270
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
 
9271
 
 
9272
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
9273
 
 
9274
\end{description}\end{quote}
 
9275
\begin{quote}\begin{description}
 
9276
\item[{retval}] \leavevmode\begin{itemize}
 
9277
\item {} 
 
9278
0   Success; otherwise - Kerberos error codes
 
9279
 
 
9280
\end{itemize}
 
9281
 
 
9282
\end{description}\end{quote}
 
9283
 
 
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.
 
9285
 
 
9286
 
 
9287
\strong{See Also:}
 
9288
 
 
9289
 
 
9290
{\hyperref[appdev/refs/api/krb5_c_decrypt_iov:krb5_c_decrypt_iov]{\code{krb5\_c\_decrypt\_iov()}}}
 
9291
 
 
9292
 
 
9293
 
 
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.
 
9296
 
 
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} .
 
9298
\end{notice}
 
9299
 
 
9300
 
 
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)}
 
9303
 
 
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}}{}
 
9306
\end{fulllineitems}
 
9307
 
 
9308
\begin{quote}\begin{description}
 
9309
\item[{param}] \leavevmode
 
9310
\textbf{{[}in{]}} \textbf{context} - Library context
 
9311
 
 
9312
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9313
 
 
9314
\textbf{{[}in{]}} \textbf{inputlen} - Length of the data to be encrypted
 
9315
 
 
9316
\textbf{{[}out{]}} \textbf{length} - Length of the encrypted data
 
9317
 
 
9318
\end{description}\end{quote}
 
9319
\begin{quote}\begin{description}
 
9320
\item[{retval}] \leavevmode\begin{itemize}
 
9321
\item {} 
 
9322
0   Success; otherwise - Kerberos error codes
 
9323
 
 
9324
\end{itemize}
 
9325
 
 
9326
\end{description}\end{quote}
 
9327
 
 
9328
This function computes the length of the ciphertext produced by encrypting \emph{inputlen} bytes including padding, confounder, and checksum.
 
9329
 
 
9330
 
 
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)}
 
9333
 
 
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}}{}
 
9336
\end{fulllineitems}
 
9337
 
 
9338
\begin{quote}\begin{description}
 
9339
\item[{param}] \leavevmode
 
9340
\textbf{{[}in{]}} \textbf{context} - Library context
 
9341
 
 
9342
\textbf{{[}in{]}} \textbf{e1} - First encryption type
 
9343
 
 
9344
\textbf{{[}in{]}} \textbf{e2} - Second encryption type
 
9345
 
 
9346
\textbf{{[}out{]}} \textbf{similar} - \textbf{TRUE} if types are similar, \textbf{FALSE} if not
 
9347
 
 
9348
\end{description}\end{quote}
 
9349
\begin{quote}\begin{description}
 
9350
\item[{retval}] \leavevmode\begin{itemize}
 
9351
\item {} 
 
9352
0   Success; otherwise - Kerberos error codes
 
9353
 
 
9354
\end{itemize}
 
9355
 
 
9356
\end{description}\end{quote}
 
9357
 
 
9358
This function determines whether two encryption types use the same kind of keys.
 
9359
 
 
9360
 
 
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)}
 
9363
 
 
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}}{}
 
9366
\end{fulllineitems}
 
9367
 
 
9368
\begin{quote}\begin{description}
 
9369
\item[{param}] \leavevmode
 
9370
\textbf{{[}in{]}} \textbf{context} - Library context
 
9371
 
 
9372
\textbf{{[}in{]}} \textbf{key} - Key
 
9373
 
 
9374
\textbf{{[}in{]}} \textbf{state} - Cipher state to be freed
 
9375
 
 
9376
\end{description}\end{quote}
 
9377
\begin{quote}\begin{description}
 
9378
\item[{retval}] \leavevmode\begin{itemize}
 
9379
\item {} 
 
9380
0   Success; otherwise - Kerberos error codes
 
9381
 
 
9382
\end{itemize}
 
9383
 
 
9384
\end{description}\end{quote}
 
9385
 
 
9386
 
 
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)}
 
9389
 
 
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}}{}
 
9392
\end{fulllineitems}
 
9393
 
 
9394
\begin{quote}\begin{description}
 
9395
\item[{param}] \leavevmode
 
9396
\textbf{{[}in{]}} \textbf{context} - Library context
 
9397
 
 
9398
\textbf{{[}in{]}} \textbf{k1} - KDC contribution key
 
9399
 
 
9400
\textbf{{[}in{]}} \textbf{pepper1} - String''PKINIT''
 
9401
 
 
9402
\textbf{{[}in{]}} \textbf{k2} - Reply key
 
9403
 
 
9404
\textbf{{[}in{]}} \textbf{pepper2} - String''KeyExchange''
 
9405
 
 
9406
\textbf{{[}out{]}} \textbf{out} - Output key
 
9407
 
 
9408
\end{description}\end{quote}
 
9409
\begin{quote}\begin{description}
 
9410
\item[{retval}] \leavevmode\begin{itemize}
 
9411
\item {} 
 
9412
0   Success; otherwise - Kerberos error codes
 
9413
 
 
9414
\end{itemize}
 
9415
 
 
9416
\end{description}\end{quote}
 
9417
 
 
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.
 
9419
 
 
9420
 
 
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)}
 
9423
 
 
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}}{}
 
9426
\end{fulllineitems}
 
9427
 
 
9428
\begin{quote}\begin{description}
 
9429
\item[{param}] \leavevmode
 
9430
\textbf{{[}in{]}} \textbf{context} - Library context
 
9431
 
 
9432
\textbf{{[}in{]}} \textbf{key} - Key
 
9433
 
 
9434
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9435
 
 
9436
\textbf{{[}out{]}} \textbf{new\_state} - New cipher state
 
9437
 
 
9438
\end{description}\end{quote}
 
9439
\begin{quote}\begin{description}
 
9440
\item[{retval}] \leavevmode\begin{itemize}
 
9441
\item {} 
 
9442
0   Success; otherwise - Kerberos error codes
 
9443
 
 
9444
\end{itemize}
 
9445
 
 
9446
\end{description}\end{quote}
 
9447
 
 
9448
 
 
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)}
 
9451
 
 
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}}{}
 
9454
\end{fulllineitems}
 
9455
 
 
9456
\begin{quote}\begin{description}
 
9457
\item[{param}] \leavevmode
 
9458
\textbf{{[}in{]}} \textbf{ctype} - Checksum type
 
9459
 
 
9460
\end{description}\end{quote}
 
9461
\begin{quote}\begin{description}
 
9462
\item[{return}] \leavevmode\begin{itemize}
 
9463
\item {} 
 
9464
TRUE if ctype is collision-proof, FALSE if it is not collision-proof or not a valid checksum type.
 
9465
 
 
9466
\end{itemize}
 
9467
 
 
9468
\end{description}\end{quote}
 
9469
 
 
9470
 
 
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)}
 
9473
 
 
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}}{}
 
9476
\end{fulllineitems}
 
9477
 
 
9478
\begin{quote}\begin{description}
 
9479
\item[{param}] \leavevmode
 
9480
\textbf{{[}in{]}} \textbf{ctype} - Checksum type
 
9481
 
 
9482
\end{description}\end{quote}
 
9483
\begin{quote}\begin{description}
 
9484
\item[{return}] \leavevmode\begin{itemize}
 
9485
\item {} 
 
9486
TRUE if ctype is a keyed checksum type, FALSE otherwise.
 
9487
 
 
9488
\end{itemize}
 
9489
 
 
9490
\end{description}\end{quote}
 
9491
 
 
9492
 
 
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)}
 
9495
 
 
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}}{}
 
9498
\end{fulllineitems}
 
9499
 
 
9500
\begin{quote}\begin{description}
 
9501
\item[{param}] \leavevmode
 
9502
\textbf{{[}in{]}} \textbf{context} - Library context
 
9503
 
 
9504
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9505
 
 
9506
\textbf{{[}out{]}} \textbf{count} - Count of allowable checksum types
 
9507
 
 
9508
\textbf{{[}out{]}} \textbf{cksumtypes} - Array of allowable checksum types
 
9509
 
 
9510
\end{description}\end{quote}
 
9511
\begin{quote}\begin{description}
 
9512
\item[{retval}] \leavevmode\begin{itemize}
 
9513
\item {} 
 
9514
0   Success; otherwise - Kerberos error codes
 
9515
 
 
9516
\end{itemize}
 
9517
 
 
9518
\end{description}\end{quote}
 
9519
 
 
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.
 
9521
 
 
9522
 
 
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)}
 
9525
 
 
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}}{}
 
9528
\end{fulllineitems}
 
9529
 
 
9530
\begin{quote}\begin{description}
 
9531
\item[{param}] \leavevmode
 
9532
\textbf{{[}in{]}} \textbf{context} - Library context
 
9533
 
 
9534
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9535
 
 
9536
\textbf{{[}out{]}} \textbf{keybytes} - Number of bytes required to make a key
 
9537
 
 
9538
\textbf{{[}out{]}} \textbf{keylength} - Length of final key
 
9539
 
 
9540
\end{description}\end{quote}
 
9541
\begin{quote}\begin{description}
 
9542
\item[{retval}] \leavevmode\begin{itemize}
 
9543
\item {} 
 
9544
0   Success; otherwise - Kerberos error codes
 
9545
 
 
9546
\end{itemize}
 
9547
 
 
9548
\end{description}\end{quote}
 
9549
 
 
9550
 
 
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)}
 
9553
 
 
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}}{}
 
9556
\end{fulllineitems}
 
9557
 
 
9558
\begin{quote}\begin{description}
 
9559
\item[{param}] \leavevmode
 
9560
\textbf{{[}in{]}} \textbf{context} - Library context
 
9561
 
 
9562
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
 
9563
 
 
9564
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
9565
 
 
9566
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9567
 
 
9568
\textbf{{[}in{]}} \textbf{input} - Input data
 
9569
 
 
9570
\textbf{{[}out{]}} \textbf{cksum} - Generated checksum
 
9571
 
 
9572
\end{description}\end{quote}
 
9573
\begin{quote}\begin{description}
 
9574
\item[{retval}] \leavevmode\begin{itemize}
 
9575
\item {} 
 
9576
0   Success; otherwise - Kerberos error codes
 
9577
 
 
9578
\end{itemize}
 
9579
 
 
9580
\end{description}\end{quote}
 
9581
 
 
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.
 
9583
 
 
9584
 
 
9585
\strong{See Also:}
 
9586
 
 
9587
 
 
9588
{\hyperref[appdev/refs/api/krb5_c_verify_checksum:krb5_c_verify_checksum]{\code{krb5\_c\_verify\_checksum()}}}
 
9589
 
 
9590
 
 
9591
 
 
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} .
 
9594
\end{notice}
 
9595
 
 
9596
 
 
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)}
 
9599
 
 
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}}{}
 
9602
\end{fulllineitems}
 
9603
 
 
9604
\begin{quote}\begin{description}
 
9605
\item[{param}] \leavevmode
 
9606
\textbf{{[}in{]}} \textbf{context} - Library context
 
9607
 
 
9608
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
 
9609
 
 
9610
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
9611
 
 
9612
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
9613
 
 
9614
\textbf{{[}inout{]}} \textbf{data} - IOV array
 
9615
 
 
9616
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
9617
 
 
9618
\end{description}\end{quote}
 
9619
\begin{quote}\begin{description}
 
9620
\item[{retval}] \leavevmode\begin{itemize}
 
9621
\item {} 
 
9622
0   Success; otherwise - Kerberos error codes
 
9623
 
 
9624
\end{itemize}
 
9625
 
 
9626
\end{description}\end{quote}
 
9627
 
 
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.
 
9629
 
 
9630
 
 
9631
\strong{See Also:}
 
9632
 
 
9633
 
 
9634
{\hyperref[appdev/refs/api/krb5_c_verify_checksum_iov:krb5_c_verify_checksum_iov]{\code{krb5\_c\_verify\_checksum\_iov()}}}
 
9635
 
 
9636
 
 
9637
 
 
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} .
 
9640
\end{notice}
 
9641
 
 
9642
 
 
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)}
 
9645
 
 
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}}{}
 
9648
\end{fulllineitems}
 
9649
 
 
9650
\begin{quote}\begin{description}
 
9651
\item[{param}] \leavevmode
 
9652
\textbf{{[}in{]}} \textbf{context} - Library context
 
9653
 
 
9654
\textbf{{[}in{]}} \textbf{enctype} - Encryption type of the generated key
 
9655
 
 
9656
\textbf{{[}out{]}} \textbf{k5\_random\_key} - An allocated and initialized keyblock
 
9657
 
 
9658
\end{description}\end{quote}
 
9659
\begin{quote}\begin{description}
 
9660
\item[{retval}] \leavevmode\begin{itemize}
 
9661
\item {} 
 
9662
0   Success; otherwise - Kerberos error codes
 
9663
 
 
9664
\end{itemize}
 
9665
 
 
9666
\end{description}\end{quote}
 
9667
 
 
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.
 
9669
 
 
9670
 
 
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)}
 
9673
 
 
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}}{}
 
9676
\end{fulllineitems}
 
9677
 
 
9678
\begin{quote}\begin{description}
 
9679
\item[{param}] \leavevmode
 
9680
\textbf{{[}in{]}} \textbf{context} - Library context
 
9681
 
 
9682
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9683
 
 
9684
\textbf{{[}in{]}} \textbf{data\_length} - Length of the plaintext to pad
 
9685
 
 
9686
\textbf{{[}out{]}} \textbf{size} - Number of padding octets
 
9687
 
 
9688
\end{description}\end{quote}
 
9689
\begin{quote}\begin{description}
 
9690
\item[{retval}] \leavevmode\begin{itemize}
 
9691
\item {} 
 
9692
0   Success; otherwise - KRB5\_BAD\_ENCTYPE
 
9693
 
 
9694
\end{itemize}
 
9695
 
 
9696
\end{description}\end{quote}
 
9697
 
 
9698
This function returns the number of the padding octets required to pad \emph{data\_length} octets of plaintext.
 
9699
 
 
9700
 
 
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)}
 
9703
 
 
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}}{}
 
9706
\end{fulllineitems}
 
9707
 
 
9708
\begin{quote}\begin{description}
 
9709
\item[{param}] \leavevmode
 
9710
\textbf{{[}in{]}} \textbf{context} - Library context
 
9711
 
 
9712
\textbf{{[}in{]}} \textbf{keyblock} - Key
 
9713
 
 
9714
\textbf{{[}in{]}} \textbf{input} - Input data
 
9715
 
 
9716
\textbf{{[}out{]}} \textbf{output} - Output data
 
9717
 
 
9718
\end{description}\end{quote}
 
9719
\begin{quote}\begin{description}
 
9720
\item[{retval}] \leavevmode\begin{itemize}
 
9721
\item {} 
 
9722
0   Success; otherwise - Kerberos error codes
 
9723
 
 
9724
\end{itemize}
 
9725
 
 
9726
\end{description}\end{quote}
 
9727
 
 
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.
 
9729
 
 
9730
 
 
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)}
 
9733
 
 
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}}{}
 
9736
\end{fulllineitems}
 
9737
 
 
9738
\begin{quote}\begin{description}
 
9739
\item[{param}] \leavevmode
 
9740
\textbf{{[}in{]}} \textbf{context} - Library context
 
9741
 
 
9742
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9743
 
 
9744
\textbf{{[}out{]}} \textbf{len} - Length of PRF output
 
9745
 
 
9746
\end{description}\end{quote}
 
9747
\begin{quote}\begin{description}
 
9748
\item[{retval}] \leavevmode\begin{itemize}
 
9749
\item {} 
 
9750
0   Success; otherwise - Kerberos error codes
 
9751
 
 
9752
\end{itemize}
 
9753
 
 
9754
\end{description}\end{quote}
 
9755
 
 
9756
 
 
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)}
 
9759
 
 
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}}{}
 
9762
\end{fulllineitems}
 
9763
 
 
9764
\begin{quote}\begin{description}
 
9765
\item[{param}] \leavevmode
 
9766
\textbf{{[}in{]}} \textbf{context} - Library context
 
9767
 
 
9768
\textbf{{[}in{]}} \textbf{randsource} - Entropy source (see KRB5\_RANDSOURCE types)
 
9769
 
 
9770
\textbf{{[}in{]}} \textbf{data} - Data
 
9771
 
 
9772
\end{description}\end{quote}
 
9773
\begin{quote}\begin{description}
 
9774
\item[{retval}] \leavevmode\begin{itemize}
 
9775
\item {} 
 
9776
0   Success; otherwise - Kerberos error codes
 
9777
 
 
9778
\end{itemize}
 
9779
 
 
9780
\end{description}\end{quote}
 
9781
 
 
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.
 
9783
 
 
9784
 
 
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)}
 
9787
 
 
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}}{}
 
9790
\end{fulllineitems}
 
9791
 
 
9792
\begin{quote}\begin{description}
 
9793
\item[{param}] \leavevmode
 
9794
\textbf{{[}in{]}} \textbf{context} - Library context
 
9795
 
 
9796
\textbf{{[}out{]}} \textbf{data} - Random data
 
9797
 
 
9798
\end{description}\end{quote}
 
9799
\begin{quote}\begin{description}
 
9800
\item[{retval}] \leavevmode\begin{itemize}
 
9801
\item {} 
 
9802
0   Success; otherwise - Kerberos error codes
 
9803
 
 
9804
\end{itemize}
 
9805
 
 
9806
\end{description}\end{quote}
 
9807
 
 
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.
 
9809
 
 
9810
 
 
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)}
 
9813
 
 
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}}{}
 
9816
\end{fulllineitems}
 
9817
 
 
9818
\begin{quote}\begin{description}
 
9819
\item[{param}] \leavevmode
 
9820
\textbf{{[}in{]}} \textbf{context} - Library context
 
9821
 
 
9822
\textbf{{[}in{]}} \textbf{strong} - Strongest available source of entropy
 
9823
 
 
9824
\textbf{{[}out{]}} \textbf{success} - 1 if OS provides entropy, 0 otherwise
 
9825
 
 
9826
\end{description}\end{quote}
 
9827
\begin{quote}\begin{description}
 
9828
\item[{retval}] \leavevmode\begin{itemize}
 
9829
\item {} 
 
9830
0   Success; otherwise - Kerberos error codes
 
9831
 
 
9832
\end{itemize}
 
9833
 
 
9834
\end{description}\end{quote}
 
9835
 
 
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.
 
9837
 
 
9838
 
 
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)}
 
9841
 
 
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}}{}
 
9844
\end{fulllineitems}
 
9845
 
 
9846
\begin{quote}\begin{description}
 
9847
\item[{param}] \leavevmode
 
9848
\textbf{{[}in{]}} \textbf{context} - Library context
 
9849
 
 
9850
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9851
 
 
9852
\textbf{{[}in{]}} \textbf{random\_data} - Random input data
 
9853
 
 
9854
\textbf{{[}out{]}} \textbf{k5\_random\_key} - Resulting key
 
9855
 
 
9856
\end{description}\end{quote}
 
9857
\begin{quote}\begin{description}
 
9858
\item[{retval}] \leavevmode\begin{itemize}
 
9859
\item {} 
 
9860
0   Success; otherwise - Kerberos error codes
 
9861
 
 
9862
\end{itemize}
 
9863
 
 
9864
\end{description}\end{quote}
 
9865
 
 
9866
This function takes random input data \emph{random\_data} and produces a valid key \emph{k5\_random\_key} for a given \emph{enctype} .
 
9867
 
 
9868
 
 
9869
\strong{See Also:}
 
9870
 
 
9871
 
 
9872
{\hyperref[appdev/refs/api/krb5_c_keylengths:krb5_c_keylengths]{\code{krb5\_c\_keylengths()}}}
 
9873
 
 
9874
 
 
9875
 
 
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.
 
9878
\end{notice}
 
9879
 
 
9880
 
 
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)}
 
9883
 
 
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}}{}
 
9886
\end{fulllineitems}
 
9887
 
 
9888
\begin{quote}\begin{description}
 
9889
\item[{param}] \leavevmode
 
9890
\textbf{{[}in{]}} \textbf{context} - Library context
 
9891
 
 
9892
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9893
 
 
9894
\textbf{{[}in{]}} \textbf{string} - String to be converted
 
9895
 
 
9896
\textbf{{[}in{]}} \textbf{salt} - Salt value
 
9897
 
 
9898
\textbf{{[}out{]}} \textbf{key} - Generated key
 
9899
 
 
9900
\end{description}\end{quote}
 
9901
\begin{quote}\begin{description}
 
9902
\item[{retval}] \leavevmode\begin{itemize}
 
9903
\item {} 
 
9904
0   Success; otherwise - Kerberos error codes
 
9905
 
 
9906
\end{itemize}
 
9907
 
 
9908
\end{description}\end{quote}
 
9909
 
 
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.
 
9911
 
 
9912
 
 
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)}
 
9915
 
 
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}}{}
 
9918
\end{fulllineitems}
 
9919
 
 
9920
\begin{quote}\begin{description}
 
9921
\item[{param}] \leavevmode
 
9922
\textbf{{[}in{]}} \textbf{context} - Library context
 
9923
 
 
9924
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
9925
 
 
9926
\textbf{{[}in{]}} \textbf{string} - String to be converted
 
9927
 
 
9928
\textbf{{[}in{]}} \textbf{salt} - Salt value
 
9929
 
 
9930
\textbf{{[}in{]}} \textbf{params} - Parameters
 
9931
 
 
9932
\textbf{{[}out{]}} \textbf{key} - Generated key
 
9933
 
 
9934
\end{description}\end{quote}
 
9935
\begin{quote}\begin{description}
 
9936
\item[{retval}] \leavevmode\begin{itemize}
 
9937
\item {} 
 
9938
0   Success; otherwise - Kerberos error codes
 
9939
 
 
9940
\end{itemize}
 
9941
 
 
9942
\end{description}\end{quote}
 
9943
 
 
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.
 
9945
 
 
9946
 
 
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)}
 
9949
 
 
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}}{}
 
9952
\end{fulllineitems}
 
9953
 
 
9954
\begin{quote}\begin{description}
 
9955
\item[{param}] \leavevmode
 
9956
\textbf{{[}in{]}} \textbf{ctype} - Checksum type
 
9957
 
 
9958
\end{description}\end{quote}
 
9959
\begin{quote}\begin{description}
 
9960
\item[{return}] \leavevmode\begin{itemize}
 
9961
\item {} 
 
9962
TRUE if ctype is valid, FALSE if not
 
9963
 
 
9964
\end{itemize}
 
9965
 
 
9966
\end{description}\end{quote}
 
9967
 
 
9968
 
 
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)}
 
9971
 
 
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}}{}
 
9974
\end{fulllineitems}
 
9975
 
 
9976
\begin{quote}\begin{description}
 
9977
\item[{param}] \leavevmode
 
9978
\textbf{{[}in{]}} \textbf{ktype} - Encryption type
 
9979
 
 
9980
\end{description}\end{quote}
 
9981
\begin{quote}\begin{description}
 
9982
\item[{return}] \leavevmode\begin{itemize}
 
9983
\item {} 
 
9984
TRUE if ktype is valid, FALSE if not
 
9985
 
 
9986
\end{itemize}
 
9987
 
 
9988
\end{description}\end{quote}
 
9989
 
 
9990
 
 
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)}
 
9993
 
 
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}}{}
 
9996
\end{fulllineitems}
 
9997
 
 
9998
\begin{quote}\begin{description}
 
9999
\item[{param}] \leavevmode
 
10000
\textbf{{[}in{]}} \textbf{context} - Library context
 
10001
 
 
10002
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
10003
 
 
10004
\textbf{{[}in{]}} \textbf{usage} - \emph{key} usage
 
10005
 
 
10006
\textbf{{[}in{]}} \textbf{data} - Data to be used to compute a new checksum using \emph{key} to compare \emph{cksum} against
 
10007
 
 
10008
\textbf{{[}in{]}} \textbf{cksum} - Checksum to be verified
 
10009
 
 
10010
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
 
10011
 
 
10012
\end{description}\end{quote}
 
10013
\begin{quote}\begin{description}
 
10014
\item[{retval}] \leavevmode\begin{itemize}
 
10015
\item {} 
 
10016
0   Success; otherwise - Kerberos error codes
 
10017
 
 
10018
\end{itemize}
 
10019
 
 
10020
\end{description}\end{quote}
 
10021
 
 
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.
 
10023
 
 
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} .
 
10026
\end{notice}
 
10027
 
 
10028
 
 
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)}
 
10031
 
 
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}
 
10035
 
 
10036
\begin{quote}\begin{description}
 
10037
\item[{param}] \leavevmode
 
10038
\textbf{{[}in{]}} \textbf{context} - Library context
 
10039
 
 
10040
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
 
10041
 
 
10042
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
10043
 
 
10044
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10045
 
 
10046
\textbf{{[}in{]}} \textbf{data} - IOV array
 
10047
 
 
10048
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
10049
 
 
10050
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
 
10051
 
 
10052
\end{description}\end{quote}
 
10053
\begin{quote}\begin{description}
 
10054
\item[{retval}] \leavevmode\begin{itemize}
 
10055
\item {} 
 
10056
0   Success; otherwise - Kerberos error codes
 
10057
 
 
10058
\end{itemize}
 
10059
 
 
10060
\end{description}\end{quote}
 
10061
 
 
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.
 
10063
 
 
10064
 
 
10065
\strong{See Also:}
 
10066
 
 
10067
 
 
10068
{\hyperref[appdev/refs/api/krb5_c_make_checksum_iov:krb5_c_make_checksum_iov]{\code{krb5\_c\_make\_checksum\_iov()}}}
 
10069
 
 
10070
 
 
10071
 
 
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} .
 
10074
\end{notice}
 
10075
 
 
10076
 
 
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)}
 
10079
 
 
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}
 
10083
 
 
10084
\begin{quote}\begin{description}
 
10085
\item[{param}] \leavevmode
 
10086
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type
 
10087
 
 
10088
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold converted checksum type
 
10089
 
 
10090
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
 
10091
 
 
10092
\end{description}\end{quote}
 
10093
\begin{quote}\begin{description}
 
10094
\item[{retval}] \leavevmode\begin{itemize}
 
10095
\item {} 
 
10096
0   Success; otherwise - Kerberos error codes
 
10097
 
 
10098
\end{itemize}
 
10099
 
 
10100
\end{description}\end{quote}
 
10101
 
 
10102
 
 
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)}
 
10105
 
 
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}
 
10109
 
 
10110
\begin{quote}\begin{description}
 
10111
\item[{param}] \leavevmode
 
10112
\textbf{{[}in{]}} \textbf{context} - Library context
 
10113
 
 
10114
\textbf{{[}in{]}} \textbf{type} - \code{KRB5\_AUTHDATA} type of \emph{container}
 
10115
 
 
10116
\textbf{{[}in{]}} \textbf{container} - Authorization data to be decoded
 
10117
 
 
10118
\textbf{{[}out{]}} \textbf{authdata} - List of decoded authorization data
 
10119
 
 
10120
\end{description}\end{quote}
 
10121
\begin{quote}\begin{description}
 
10122
\item[{retval}] \leavevmode\begin{itemize}
 
10123
\item {} 
 
10124
0   Success; otherwise - Kerberos error codes
 
10125
 
 
10126
\end{itemize}
 
10127
 
 
10128
\end{description}\end{quote}
 
10129
 
 
10130
 
 
10131
\strong{See Also:}
 
10132
 
 
10133
 
 
10134
{\hyperref[appdev/refs/api/krb5_encode_authdata_container:krb5_encode_authdata_container]{\code{krb5\_encode\_authdata\_container()}}}
 
10135
 
 
10136
 
 
10137
 
 
10138
 
 
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)}
 
10141
 
 
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}
 
10145
 
 
10146
\begin{quote}\begin{description}
 
10147
\item[{param}] \leavevmode
 
10148
\textbf{{[}in{]}} \textbf{code} - ASN.1-formatted ticket
 
10149
 
 
10150
\textbf{{[}out{]}} \textbf{rep} - Decoded ticket information
 
10151
 
 
10152
\end{description}\end{quote}
 
10153
\begin{quote}\begin{description}
 
10154
\item[{retval}] \leavevmode\begin{itemize}
 
10155
\item {} 
 
10156
0   Success; otherwise - Kerberos error codes
 
10157
 
 
10158
\end{itemize}
 
10159
 
 
10160
\end{description}\end{quote}
 
10161
 
 
10162
 
 
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)}
 
10165
 
 
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}
 
10169
 
 
10170
\begin{quote}\begin{description}
 
10171
\item[{param}] \leavevmode
 
10172
\textbf{{[}in{]}} \textbf{deltat} - Relative time value to convert
 
10173
 
 
10174
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold time string
 
10175
 
 
10176
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
 
10177
 
 
10178
\end{description}\end{quote}
 
10179
\begin{quote}\begin{description}
 
10180
\item[{retval}] \leavevmode\begin{itemize}
 
10181
\item {} 
 
10182
0   Success; otherwise - Kerberos error codes
 
10183
 
 
10184
\end{itemize}
 
10185
 
 
10186
\end{description}\end{quote}
 
10187
 
 
10188
 
 
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)}
 
10191
 
 
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}
 
10195
 
 
10196
\begin{quote}\begin{description}
 
10197
\item[{param}] \leavevmode
 
10198
\textbf{{[}in{]}} \textbf{context} - Library context
 
10199
 
 
10200
\textbf{{[}in{]}} \textbf{type} - \code{KRB5\_AUTHDATA} type of \emph{container}
 
10201
 
 
10202
\textbf{{[}in{]}} \textbf{authdata} - List of authorization data to be encoded
 
10203
 
 
10204
\textbf{{[}out{]}} \textbf{container} - List of encoded authorization data
 
10205
 
 
10206
\end{description}\end{quote}
 
10207
\begin{quote}\begin{description}
 
10208
\item[{retval}] \leavevmode\begin{itemize}
 
10209
\item {} 
 
10210
0   Success; otherwise - Kerberos error codes
 
10211
 
 
10212
\end{itemize}
 
10213
 
 
10214
\end{description}\end{quote}
 
10215
 
 
10216
The result is returned in \emph{container} as a single-element list.
 
10217
 
 
10218
 
 
10219
\strong{See Also:}
 
10220
 
 
10221
 
 
10222
{\hyperref[appdev/refs/api/krb5_decode_authdata_container:krb5_decode_authdata_container]{\code{krb5\_decode\_authdata\_container()}}}
 
10223
 
 
10224
 
 
10225
 
 
10226
 
 
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)}
 
10229
 
 
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}
 
10233
 
 
10234
\begin{quote}\begin{description}
 
10235
\item[{param}] \leavevmode
 
10236
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
10237
 
 
10238
\textbf{{[}in{]}} \textbf{shortest} - Flag
 
10239
 
 
10240
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold encryption type string
 
10241
 
 
10242
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
 
10243
 
 
10244
\end{description}\end{quote}
 
10245
\begin{quote}\begin{description}
 
10246
\item[{retval}] \leavevmode\begin{itemize}
 
10247
\item {} 
 
10248
0   Success; otherwise - Kerberos error codes
 
10249
 
 
10250
\end{itemize}
 
10251
 
 
10252
\end{description}\end{quote}
 
10253
 
 
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'').
 
10255
 
 
10256
\begin{notice}{note}{Note:}
 
10257
First introduced in 1.9
 
10258
\end{notice}
 
10259
 
 
10260
 
 
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)}
 
10263
 
 
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}
 
10267
 
 
10268
\begin{quote}\begin{description}
 
10269
\item[{param}] \leavevmode
 
10270
\textbf{{[}in{]}} \textbf{enctype} - Encryption type
 
10271
 
 
10272
\textbf{{[}out{]}} \textbf{buffer} - Buffer to hold encryption type string
 
10273
 
 
10274
\textbf{{[}in{]}} \textbf{buflen} - Storage available in \emph{buffer}
 
10275
 
 
10276
\end{description}\end{quote}
 
10277
\begin{quote}\begin{description}
 
10278
\item[{retval}] \leavevmode\begin{itemize}
 
10279
\item {} 
 
10280
0   Success; otherwise - Kerberos error codes
 
10281
 
 
10282
\end{itemize}
 
10283
 
 
10284
\end{description}\end{quote}
 
10285
 
 
10286
 
 
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)}
 
10289
 
 
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}
 
10293
 
 
10294
\begin{quote}\begin{description}
 
10295
\item[{param}] \leavevmode
 
10296
\textbf{{[}in{]}} \textbf{context} - Library context
 
10297
 
 
10298
\textbf{{[}in{]}} \textbf{val} - Checksum structure to be freed
 
10299
 
 
10300
\end{description}\end{quote}
 
10301
 
 
10302
This function frees the contents of \emph{val} and the structure itself.
 
10303
 
 
10304
 
 
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)}
 
10307
 
 
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}
 
10311
 
 
10312
\begin{quote}\begin{description}
 
10313
\item[{param}] \leavevmode
 
10314
\textbf{{[}in{]}} \textbf{context} - Library context
 
10315
 
 
10316
\textbf{{[}in{]}} \textbf{val} - Checksum structure to free contents of
 
10317
 
 
10318
\end{description}\end{quote}
 
10319
 
 
10320
This function frees the contents of \emph{val} , but not the structure itself.
 
10321
 
 
10322
 
 
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)}
 
10325
 
 
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}
 
10329
 
 
10330
\begin{quote}\begin{description}
 
10331
\item[{param}] \leavevmode
 
10332
\textbf{{[}in{]}} \textbf{context} - Library context
 
10333
 
 
10334
\textbf{{[}in{]}} \textbf{val} - Array of checksum types to be freed
 
10335
 
 
10336
\end{description}\end{quote}
 
10337
 
 
10338
 
 
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)}
 
10341
 
 
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}
 
10345
 
 
10346
\begin{quote}\begin{description}
 
10347
\item[{param}] \leavevmode
 
10348
\textbf{{[}in{]}} \textbf{context} - Library context
 
10349
 
 
10350
\textbf{{[}in{]}} \textbf{tgts} - Null-terminated array of credentials to free
 
10351
 
 
10352
\end{description}\end{quote}
 
10353
 
 
10354
\begin{notice}{note}{Note:}
 
10355
The last entry in the array \emph{tgts} must be a NULL pointer.
 
10356
\end{notice}
 
10357
 
 
10358
 
 
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)}
 
10361
 
 
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}
 
10365
 
 
10366
\begin{quote}\begin{description}
 
10367
\item[{param}] \leavevmode
 
10368
\textbf{{[}in{]}} \textbf{context} - Library context
 
10369
 
 
10370
\textbf{{[}in{]}} \textbf{key\_data} - Keyblock
 
10371
 
 
10372
\textbf{{[}out{]}} \textbf{out} - Opaque key
 
10373
 
 
10374
\end{description}\end{quote}
 
10375
\begin{quote}\begin{description}
 
10376
\item[{retval}] \leavevmode\begin{itemize}
 
10377
\item {} 
 
10378
0   Success; otherwise - KRB5\_BAD\_ENCTYPE
 
10379
 
 
10380
\end{itemize}
 
10381
 
 
10382
\end{description}\end{quote}
 
10383
 
 
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.
 
10385
 
 
10386
 
 
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)}
 
10389
 
 
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}
 
10393
 
 
10394
\begin{quote}\begin{description}
 
10395
\item[{param}] \leavevmode
 
10396
\textbf{{[}in{]}} \textbf{context} - Library context
 
10397
 
 
10398
\textbf{{[}in{]}} \textbf{key} - Encryption key
 
10399
 
 
10400
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10401
 
 
10402
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
10403
 
 
10404
\textbf{{[}in{]}} \textbf{input} - Encrypted data
 
10405
 
 
10406
\textbf{{[}out{]}} \textbf{output} - Decrypted data
 
10407
 
 
10408
\end{description}\end{quote}
 
10409
\begin{quote}\begin{description}
 
10410
\item[{retval}] \leavevmode\begin{itemize}
 
10411
\item {} 
 
10412
0   Success; otherwise - Kerberos error codes
 
10413
 
 
10414
\end{itemize}
 
10415
 
 
10416
\end{description}\end{quote}
 
10417
 
 
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.
 
10419
 
 
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.
 
10422
\end{notice}
 
10423
 
 
10424
 
 
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)}
 
10427
 
 
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}
 
10431
 
 
10432
\begin{quote}\begin{description}
 
10433
\item[{param}] \leavevmode
 
10434
\textbf{{[}in{]}} \textbf{context} - Library context
 
10435
 
 
10436
\textbf{{[}in{]}} \textbf{key} - Encryption key
 
10437
 
 
10438
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10439
 
 
10440
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
10441
 
 
10442
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
 
10443
 
 
10444
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
10445
 
 
10446
\end{description}\end{quote}
 
10447
\begin{quote}\begin{description}
 
10448
\item[{retval}] \leavevmode\begin{itemize}
 
10449
\item {} 
 
10450
0   Success; otherwise - Kerberos error codes
 
10451
 
 
10452
\end{itemize}
 
10453
 
 
10454
\end{description}\end{quote}
 
10455
 
 
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.
 
10457
 
 
10458
 
 
10459
\strong{See Also:}
 
10460
 
 
10461
 
 
10462
{\hyperref[appdev/refs/api/krb5_k_encrypt_iov:krb5_k_encrypt_iov]{\code{krb5\_k\_encrypt\_iov()}}}
 
10463
 
 
10464
 
 
10465
 
 
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.
 
10468
 
 
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} .
 
10470
\end{notice}
 
10471
 
 
10472
 
 
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)}
 
10475
 
 
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}
 
10479
 
 
10480
\begin{quote}\begin{description}
 
10481
\item[{param}] \leavevmode
 
10482
\textbf{{[}in{]}} \textbf{context} - Library context
 
10483
 
 
10484
\textbf{{[}in{]}} \textbf{key} - Encryption key
 
10485
 
 
10486
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10487
 
 
10488
\textbf{{[}inout{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
10489
 
 
10490
\textbf{{[}in{]}} \textbf{input} - Data to be encrypted
 
10491
 
 
10492
\textbf{{[}out{]}} \textbf{output} - Encrypted data
 
10493
 
 
10494
\end{description}\end{quote}
 
10495
\begin{quote}\begin{description}
 
10496
\item[{retval}] \leavevmode\begin{itemize}
 
10497
\item {} 
 
10498
0   Success; otherwise - Kerberos error codes
 
10499
 
 
10500
\end{itemize}
 
10501
 
 
10502
\end{description}\end{quote}
 
10503
 
 
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.
 
10505
 
 
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.
 
10508
\end{notice}
 
10509
 
 
10510
 
 
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)}
 
10513
 
 
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}
 
10517
 
 
10518
\begin{quote}\begin{description}
 
10519
\item[{param}] \leavevmode
 
10520
\textbf{{[}in{]}} \textbf{context} - Library context
 
10521
 
 
10522
\textbf{{[}in{]}} \textbf{key} - Encryption key
 
10523
 
 
10524
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10525
 
 
10526
\textbf{{[}in{]}} \textbf{cipher\_state} - Cipher state; specify NULL if not needed
 
10527
 
 
10528
\textbf{{[}inout{]}} \textbf{data} - IOV array. Modified in-place.
 
10529
 
 
10530
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
10531
 
 
10532
\end{description}\end{quote}
 
10533
\begin{quote}\begin{description}
 
10534
\item[{retval}] \leavevmode\begin{itemize}
 
10535
\item {} 
 
10536
0   Success; otherwise - Kerberos error codes
 
10537
 
 
10538
\end{itemize}
 
10539
 
 
10540
\end{description}\end{quote}
 
10541
 
 
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.
 
10543
 
 
10544
 
 
10545
\strong{See Also:}
 
10546
 
 
10547
 
 
10548
{\hyperref[appdev/refs/api/krb5_k_decrypt_iov:krb5_k_decrypt_iov]{\code{krb5\_k\_decrypt\_iov()}}}
 
10549
 
 
10550
 
 
10551
 
 
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.
 
10554
 
 
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} .
 
10556
\end{notice}
 
10557
 
 
10558
 
 
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)}
 
10561
 
 
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}
 
10565
 
 
10566
\begin{quote}\begin{description}
 
10567
\item[{param}] \leavevmode
 
10568
\textbf{context}
 
10569
 
 
10570
\textbf{key}
 
10571
 
 
10572
\end{description}\end{quote}
 
10573
 
 
10574
 
 
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)}
 
10577
 
 
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}
 
10581
 
 
10582
\begin{quote}\begin{description}
 
10583
\item[{param}] \leavevmode
 
10584
\textbf{context}
 
10585
 
 
10586
\textbf{key}
 
10587
 
 
10588
\end{description}\end{quote}
 
10589
 
 
10590
 
 
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)}
 
10593
 
 
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}
 
10597
 
 
10598
\begin{quote}\begin{description}
 
10599
\item[{param}] \leavevmode
 
10600
\textbf{context}
 
10601
 
 
10602
\textbf{key}
 
10603
 
 
10604
\textbf{key\_data}
 
10605
 
 
10606
\end{description}\end{quote}
 
10607
 
 
10608
 
 
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)}
 
10611
 
 
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}
 
10615
 
 
10616
\begin{quote}\begin{description}
 
10617
\item[{param}] \leavevmode
 
10618
\textbf{{[}in{]}} \textbf{context} - Library context
 
10619
 
 
10620
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
 
10621
 
 
10622
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
10623
 
 
10624
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10625
 
 
10626
\textbf{{[}in{]}} \textbf{input} - Input data
 
10627
 
 
10628
\textbf{{[}out{]}} \textbf{cksum} - Generated checksum
 
10629
 
 
10630
\end{description}\end{quote}
 
10631
\begin{quote}\begin{description}
 
10632
\item[{retval}] \leavevmode\begin{itemize}
 
10633
\item {} 
 
10634
0   Success; otherwise - Kerberos error codes
 
10635
 
 
10636
\end{itemize}
 
10637
 
 
10638
\end{description}\end{quote}
 
10639
 
 
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.
 
10641
 
 
10642
 
 
10643
\strong{See Also:}
 
10644
 
 
10645
 
 
10646
{\hyperref[appdev/refs/api/krb5_c_verify_checksum:krb5_c_verify_checksum]{\code{krb5\_c\_verify\_checksum()}}}
 
10647
 
 
10648
 
 
10649
 
 
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} .
 
10652
\end{notice}
 
10653
 
 
10654
 
 
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)}
 
10657
 
 
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}
 
10661
 
 
10662
\begin{quote}\begin{description}
 
10663
\item[{param}] \leavevmode
 
10664
\textbf{{[}in{]}} \textbf{context} - Library context
 
10665
 
 
10666
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
 
10667
 
 
10668
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
10669
 
 
10670
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10671
 
 
10672
\textbf{{[}inout{]}} \textbf{data} - IOV array
 
10673
 
 
10674
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
10675
 
 
10676
\end{description}\end{quote}
 
10677
\begin{quote}\begin{description}
 
10678
\item[{retval}] \leavevmode\begin{itemize}
 
10679
\item {} 
 
10680
0   Success; otherwise - Kerberos error codes
 
10681
 
 
10682
\end{itemize}
 
10683
 
 
10684
\end{description}\end{quote}
 
10685
 
 
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.
 
10687
 
 
10688
 
 
10689
\strong{See Also:}
 
10690
 
 
10691
 
 
10692
{\hyperref[appdev/refs/api/krb5_k_verify_checksum_iov:krb5_k_verify_checksum_iov]{\code{krb5\_k\_verify\_checksum\_iov()}}}
 
10693
 
 
10694
 
 
10695
 
 
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} .
 
10698
\end{notice}
 
10699
 
 
10700
 
 
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)}
 
10703
 
 
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}
 
10707
 
 
10708
\begin{quote}\begin{description}
 
10709
\item[{param}] \leavevmode
 
10710
\textbf{{[}in{]}} \textbf{context} - Library context
 
10711
 
 
10712
\textbf{{[}in{]}} \textbf{key} - Key
 
10713
 
 
10714
\textbf{{[}in{]}} \textbf{input} - Input data
 
10715
 
 
10716
\textbf{{[}out{]}} \textbf{output} - Output data
 
10717
 
 
10718
\end{description}\end{quote}
 
10719
\begin{quote}\begin{description}
 
10720
\item[{retval}] \leavevmode\begin{itemize}
 
10721
\item {} 
 
10722
0   Success; otherwise - Kerberos error codes
 
10723
 
 
10724
\end{itemize}
 
10725
 
 
10726
\end{description}\end{quote}
 
10727
 
 
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.
 
10729
 
 
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} .
 
10732
\end{notice}
 
10733
 
 
10734
 
 
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)}
 
10737
 
 
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}
 
10741
 
 
10742
\begin{quote}\begin{description}
 
10743
\item[{param}] \leavevmode
 
10744
\textbf{context}
 
10745
 
 
10746
\textbf{key}
 
10747
 
 
10748
\end{description}\end{quote}
 
10749
 
 
10750
 
 
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)}
 
10753
 
 
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}
 
10757
 
 
10758
\begin{quote}\begin{description}
 
10759
\item[{param}] \leavevmode
 
10760
\textbf{{[}in{]}} \textbf{context} - Library context
 
10761
 
 
10762
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
10763
 
 
10764
\textbf{{[}in{]}} \textbf{usage} - \emph{key} usage
 
10765
 
 
10766
\textbf{{[}in{]}} \textbf{data} - Data to be used to compute a new checksum using \emph{key} to compare \emph{cksum} against
 
10767
 
 
10768
\textbf{{[}in{]}} \textbf{cksum} - Checksum to be verified
 
10769
 
 
10770
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
 
10771
 
 
10772
\end{description}\end{quote}
 
10773
\begin{quote}\begin{description}
 
10774
\item[{retval}] \leavevmode\begin{itemize}
 
10775
\item {} 
 
10776
0   Success; otherwise - Kerberos error codes
 
10777
 
 
10778
\end{itemize}
 
10779
 
 
10780
\end{description}\end{quote}
 
10781
 
 
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.
 
10783
 
 
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} .
 
10786
\end{notice}
 
10787
 
 
10788
 
 
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)}
 
10791
 
 
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}
 
10795
 
 
10796
\begin{quote}\begin{description}
 
10797
\item[{param}] \leavevmode
 
10798
\textbf{{[}in{]}} \textbf{context} - Library context
 
10799
 
 
10800
\textbf{{[}in{]}} \textbf{cksumtype} - Checksum type (0 for mandatory type)
 
10801
 
 
10802
\textbf{{[}in{]}} \textbf{key} - Encryption key for a keyed checksum
 
10803
 
 
10804
\textbf{{[}in{]}} \textbf{usage} - Key usage (see \code{KRB5\_KEYUSAGE} types)
 
10805
 
 
10806
\textbf{{[}in{]}} \textbf{data} - IOV array
 
10807
 
 
10808
\textbf{{[}in{]}} \textbf{num\_data} - Size of \emph{data}
 
10809
 
 
10810
\textbf{{[}out{]}} \textbf{valid} - Non-zero for success, zero for failure
 
10811
 
 
10812
\end{description}\end{quote}
 
10813
\begin{quote}\begin{description}
 
10814
\item[{retval}] \leavevmode\begin{itemize}
 
10815
\item {} 
 
10816
0   Success; otherwise - Kerberos error codes
 
10817
 
 
10818
\end{itemize}
 
10819
 
 
10820
\end{description}\end{quote}
 
10821
 
 
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.
 
10823
 
 
10824
 
 
10825
\strong{See Also:}
 
10826
 
 
10827
 
 
10828
{\hyperref[appdev/refs/api/krb5_k_make_checksum_iov:krb5_k_make_checksum_iov]{\code{krb5\_k\_make\_checksum\_iov()}}}
 
10829
 
 
10830
 
 
10831
 
 
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} .
 
10834
\end{notice}
 
10835
 
 
10836
 
 
10837
\subsection{Legacy convenience interfaces}
 
10838
\label{appdev/refs/api/index:legacy-convenience-interfaces}
 
10839
 
 
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)}
 
10842
 
 
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}
 
10846
 
 
10847
\begin{quote}\begin{description}
 
10848
\item[{param}] \leavevmode
 
10849
\textbf{{[}in{]}} \textbf{context} - Library context
 
10850
 
 
10851
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
10852
 
 
10853
\textbf{{[}in{]}} \textbf{fd} - File descriptor
 
10854
 
 
10855
\textbf{{[}in{]}} \textbf{appl\_version} - Application protocol version to be matched against the client's application version
 
10856
 
 
10857
\textbf{{[}in{]}} \textbf{server} - Server principal (NULL for any in \emph{keytab} )
 
10858
 
 
10859
\textbf{{[}in{]}} \textbf{flags} - Additional specifications
 
10860
 
 
10861
\textbf{{[}in{]}} \textbf{keytab} - Key table containing service keys
 
10862
 
 
10863
\textbf{{[}out{]}} \textbf{ticket} - Ticket (NULL if not needed)
 
10864
 
 
10865
\end{description}\end{quote}
 
10866
\begin{quote}\begin{description}
 
10867
\item[{retval}] \leavevmode\begin{itemize}
 
10868
\item {} 
 
10869
0   Success; otherwise - Kerberos error codes
 
10870
 
 
10871
\end{itemize}
 
10872
 
 
10873
\end{description}\end{quote}
 
10874
 
 
10875
This function performs the srever side of a sendauth/recvauth exchange by sending and receiving messages over \emph{fd} .
 
10876
 
 
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.
 
10878
 
 
10879
 
 
10880
\strong{See Also:}
 
10881
 
 
10882
 
 
10883
{\hyperref[appdev/refs/api/krb5_sendauth:krb5_sendauth]{\code{krb5\_sendauth()}}}
 
10884
 
 
10885
 
 
10886
 
 
10887
 
 
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)}
 
10890
 
 
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}
 
10894
 
 
10895
\begin{quote}\begin{description}
 
10896
\item[{param}] \leavevmode
 
10897
\textbf{{[}in{]}} \textbf{context} - Library context
 
10898
 
 
10899
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
10900
 
 
10901
\textbf{{[}in{]}} \textbf{fd} - File descriptor
 
10902
 
 
10903
\textbf{{[}in{]}} \textbf{server} - Server principal (NULL for any in \emph{keytab} )
 
10904
 
 
10905
\textbf{{[}in{]}} \textbf{flags} - Additional specifications
 
10906
 
 
10907
\textbf{{[}in{]}} \textbf{keytab} - Decryption key
 
10908
 
 
10909
\textbf{{[}out{]}} \textbf{ticket} - Ticket (NULL if not needed)
 
10910
 
 
10911
\textbf{{[}out{]}} \textbf{version} - sendauth protocol version (NULL if not needed)
 
10912
 
 
10913
\end{description}\end{quote}
 
10914
\begin{quote}\begin{description}
 
10915
\item[{retval}] \leavevmode\begin{itemize}
 
10916
\item {} 
 
10917
0   Success; otherwise - Kerberos error codes
 
10918
 
 
10919
\end{itemize}
 
10920
 
 
10921
\end{description}\end{quote}
 
10922
 
 
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} .
 
10924
 
 
10925
 
 
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)}
 
10928
 
 
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}
 
10932
 
 
10933
\begin{quote}\begin{description}
 
10934
\item[{param}] \leavevmode
 
10935
\textbf{{[}in{]}} \textbf{context} - Library context
 
10936
 
 
10937
\textbf{{[}inout{]}} \textbf{auth\_context} - Authentication context
 
10938
 
 
10939
\textbf{{[}in{]}} \textbf{fd} - File descriptor that describes network socket
 
10940
 
 
10941
\textbf{{[}in{]}} \textbf{appl\_version} - Application protocol version to be matched with the receiver's application version
 
10942
 
 
10943
\textbf{{[}in{]}} \textbf{client} - Client principal
 
10944
 
 
10945
\textbf{{[}in{]}} \textbf{server} - Server principal
 
10946
 
 
10947
\textbf{{[}in{]}} \textbf{ap\_req\_options} - \code{AP\_OPTS} options
 
10948
 
 
10949
\textbf{{[}in{]}} \textbf{in\_data} - Data to be sent to the server
 
10950
 
 
10951
\textbf{{[}in{]}} \textbf{in\_creds} - Input credentials, or NULL to use \emph{ccache}
 
10952
 
 
10953
\textbf{{[}in{]}} \textbf{ccache} - Credential cache
 
10954
 
 
10955
\textbf{{[}out{]}} \textbf{error} - If non-null, contains KRB\_ERROR message returned from server
 
10956
 
 
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
 
10958
 
 
10959
\textbf{{[}out{]}} \textbf{out\_creds} - If non-null, the retrieved credentials
 
10960
 
 
10961
\end{description}\end{quote}
 
10962
\begin{quote}\begin{description}
 
10963
\item[{retval}] \leavevmode\begin{itemize}
 
10964
\item {} 
 
10965
0   Success; otherwise - Kerberos error codes
 
10966
 
 
10967
\end{itemize}
 
10968
 
 
10969
\end{description}\end{quote}
 
10970
 
 
10971
This function performs the client side of a sendauth/recvauth exchange by sending and receiving messages over \emph{fd} .
 
10972
 
 
10973
Credentials may be specified in three ways:
 
10974
\begin{quote}
 
10975
\begin{itemize}
 
10976
\item {} 
 
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} .
 
10978
 
 
10979
\item {} 
 
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.
 
10981
 
 
10982
\item {} 
 
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.
 
10984
 
 
10985
\end{itemize}
 
10986
 
 
10987
If the server is using a different application protocol than that specified in \emph{appl\_version} , an error will be returned.
 
10988
\end{quote}
 
10989
 
 
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.
 
10991
 
 
10992
 
 
10993
\strong{See Also:}
 
10994
 
 
10995
 
 
10996
{\hyperref[appdev/refs/api/krb5_recvauth:krb5_recvauth]{\code{krb5\_recvauth()}}}
 
10997
 
 
10998
 
 
10999
 
 
11000
 
 
11001
\subsection{Deprecated public interfaces}
 
11002
\label{appdev/refs/api/index:deprecated-public-interfaces}
 
11003
 
 
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)}
 
11006
 
 
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}
 
11010
 
 
11011
\begin{quote}\begin{description}
 
11012
\item[{param}] \leavevmode
 
11013
\textbf{context}
 
11014
 
 
11015
\textbf{v5creds}
 
11016
 
 
11017
\textbf{v4creds}
 
11018
 
 
11019
\end{description}\end{quote}
 
11020
\begin{quote}\begin{description}
 
11021
\item[{retval}] \leavevmode\begin{itemize}
 
11022
\item {} 
 
11023
KRB524\_KRB4\_DISABLED   (always)
 
11024
 
 
11025
\end{itemize}
 
11026
 
 
11027
\end{description}\end{quote}
 
11028
 
 
11029
\begin{notice}{note}{Note:}
 
11030
Not implemented
 
11031
\end{notice}
 
11032
 
 
11033
 
 
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)}
 
11036
 
 
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}
 
11040
 
 
11041
\begin{quote}\begin{description}
 
11042
\item[{param}] \leavevmode
 
11043
\textbf{context}
 
11044
 
 
11045
\textbf{auth\_context}
 
11046
 
 
11047
\textbf{keyblock}
 
11048
 
 
11049
\end{description}\end{quote}
 
11050
 
 
11051
DEPRECATED Replaced by krb5\_auth\_con\_getsendsubkey() .
 
11052
 
 
11053
 
 
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)}
 
11056
 
 
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}
 
11060
 
 
11061
\begin{quote}\begin{description}
 
11062
\item[{param}] \leavevmode
 
11063
\textbf{context}
 
11064
 
 
11065
\textbf{auth\_context}
 
11066
 
 
11067
\textbf{keyblock}
 
11068
 
 
11069
\end{description}\end{quote}
 
11070
 
 
11071
DEPRECATED Replaced by krb5\_auth\_con\_getrecvsubkey() .
 
11072
 
 
11073
 
 
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)}
 
11076
 
 
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}
 
11080
 
 
11081
\begin{quote}\begin{description}
 
11082
\item[{param}] \leavevmode
 
11083
\textbf{context}
 
11084
 
 
11085
\textbf{auth\_context}
 
11086
 
 
11087
\end{description}\end{quote}
 
11088
 
 
11089
DEPRECATED Not replaced.
 
11090
 
 
11091
RFC 4120 doesn't have anything like the initvector concept; only really old protocols may need this API.
 
11092
 
 
11093
 
 
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)}
 
11096
 
 
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}
 
11100
 
 
11101
\begin{quote}\begin{description}
 
11102
\item[{param}] \leavevmode
 
11103
\textbf{context}
 
11104
 
 
11105
\textbf{princ}
 
11106
 
 
11107
\textbf{rlen}
 
11108
 
 
11109
\textbf{realm}
 
11110
 
 
11111
\textbf{ap}
 
11112
 
 
11113
\end{description}\end{quote}
 
11114
 
 
11115
DEPRECATED Replaced by krb5\_build\_principal\_alloc\_va() .
 
11116
 
 
11117
 
 
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)}
 
11120
 
 
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}
 
11124
 
 
11125
\begin{quote}\begin{description}
 
11126
\item[{param}] \leavevmode
 
11127
\textbf{context}
 
11128
 
 
11129
\textbf{data}
 
11130
 
 
11131
\end{description}\end{quote}
 
11132
 
 
11133
DEPRECATED Replaced by krb5\_c\_* API family.
 
11134
 
 
11135
 
 
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)}
 
11138
 
 
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}
 
11142
 
 
11143
\begin{quote}\begin{description}
 
11144
\item[{param}] \leavevmode
 
11145
\textbf{context}
 
11146
 
 
11147
\textbf{ctype}
 
11148
 
 
11149
\textbf{in}
 
11150
 
 
11151
\textbf{in\_length}
 
11152
 
 
11153
\textbf{seed}
 
11154
 
 
11155
\textbf{seed\_length}
 
11156
 
 
11157
\textbf{outcksum}
 
11158
 
 
11159
\end{description}\end{quote}
 
11160
 
 
11161
DEPRECATED See krb5\_c\_make\_checksum()
 
11162
 
 
11163
 
 
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)}
 
11166
 
 
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}
 
11170
 
 
11171
\begin{quote}\begin{description}
 
11172
\item[{param}] \leavevmode
 
11173
\textbf{context}
 
11174
 
 
11175
\textbf{ctype}
 
11176
 
 
11177
\end{description}\end{quote}
 
11178
 
 
11179
DEPRECATED See krb5\_c\_checksum\_length()
 
11180
 
 
11181
 
 
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)}
 
11184
 
 
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}
 
11188
 
 
11189
\begin{quote}\begin{description}
 
11190
\item[{param}] \leavevmode
 
11191
\textbf{context}
 
11192
 
 
11193
\textbf{inptr}
 
11194
 
 
11195
\textbf{outptr}
 
11196
 
 
11197
\textbf{size}
 
11198
 
 
11199
\textbf{eblock}
 
11200
 
 
11201
\textbf{ivec}
 
11202
 
 
11203
\end{description}\end{quote}
 
11204
 
 
11205
DEPRECATED Replaced by krb5\_c\_* API family.
 
11206
 
 
11207
 
 
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)}
 
11210
 
 
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}
 
11214
 
 
11215
\begin{quote}\begin{description}
 
11216
\item[{param}] \leavevmode
 
11217
\textbf{context}
 
11218
 
 
11219
\textbf{inptr}
 
11220
 
 
11221
\textbf{outptr}
 
11222
 
 
11223
\textbf{size}
 
11224
 
 
11225
\textbf{eblock}
 
11226
 
 
11227
\textbf{ivec}
 
11228
 
 
11229
\end{description}\end{quote}
 
11230
 
 
11231
DEPRECATED Replaced by krb5\_c\_* API family.
 
11232
 
 
11233
 
 
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)}
 
11236
 
 
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}
 
11240
 
 
11241
\begin{quote}\begin{description}
 
11242
\item[{param}] \leavevmode
 
11243
\textbf{context}
 
11244
 
 
11245
\textbf{eblock}
 
11246
 
 
11247
\end{description}\end{quote}
 
11248
 
 
11249
DEPRECATED Replaced by krb5\_c\_* API family.
 
11250
 
 
11251
 
 
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)}
 
11254
 
 
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}
 
11258
 
 
11259
\begin{quote}\begin{description}
 
11260
\item[{param}] \leavevmode
 
11261
\textbf{length}
 
11262
 
 
11263
\textbf{crypto}
 
11264
 
 
11265
\end{description}\end{quote}
 
11266
 
 
11267
DEPRECATED Replaced by krb5\_c\_* API family.
 
11268
 
 
11269
 
 
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)}
 
11272
 
 
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}
 
11276
 
 
11277
\begin{quote}\begin{description}
 
11278
\item[{param}] \leavevmode
 
11279
\textbf{context}
 
11280
 
 
11281
\textbf{eblock}
 
11282
 
 
11283
\end{description}\end{quote}
 
11284
 
 
11285
DEPRECATED Replaced by krb5\_c\_* API family.
 
11286
 
 
11287
 
 
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)}
 
11290
 
 
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}
 
11294
 
 
11295
\begin{quote}\begin{description}
 
11296
\item[{param}] \leavevmode
 
11297
\textbf{context}
 
11298
 
 
11299
\textbf{eblock}
 
11300
 
 
11301
\textbf{ptr}
 
11302
 
 
11303
\end{description}\end{quote}
 
11304
 
 
11305
DEPRECATED Replaced by krb5\_c\_* API family.
 
11306
 
 
11307
 
 
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)}
 
11310
 
 
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}
 
11314
 
 
11315
\begin{quote}\begin{description}
 
11316
\item[{param}] \leavevmode
 
11317
\textbf{context}
 
11318
 
 
11319
\textbf{cache}
 
11320
 
 
11321
\end{description}\end{quote}
 
11322
 
 
11323
 
 
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)}
 
11326
 
 
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}
 
11330
 
 
11331
\begin{quote}\begin{description}
 
11332
\item[{param}] \leavevmode
 
11333
\textbf{context}
 
11334
 
 
11335
\textbf{options}
 
11336
 
 
11337
\textbf{ccache}
 
11338
 
 
11339
\textbf{in\_creds}
 
11340
 
 
11341
\textbf{out\_creds}
 
11342
 
 
11343
\end{description}\end{quote}
 
11344
 
 
11345
DEPRECATED Replaced by krb5\_get\_renewed\_creds.
 
11346
 
 
11347
 
 
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)}
 
11350
 
 
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}
 
11354
 
 
11355
\begin{quote}\begin{description}
 
11356
\item[{param}] \leavevmode
 
11357
\textbf{context}
 
11358
 
 
11359
\textbf{options}
 
11360
 
 
11361
\textbf{ccache}
 
11362
 
 
11363
\textbf{in\_creds}
 
11364
 
 
11365
\textbf{out\_creds}
 
11366
 
 
11367
\end{description}\end{quote}
 
11368
 
 
11369
DEPRECATED Replaced by krb5\_get\_validated\_creds.
 
11370
 
 
11371
 
 
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)}
 
11374
 
 
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}
 
11378
 
 
11379
\begin{quote}\begin{description}
 
11380
\item[{param}] \leavevmode
 
11381
\textbf{context}
 
11382
 
 
11383
\textbf{options}
 
11384
 
 
11385
\textbf{addrs}
 
11386
 
 
11387
\textbf{ktypes}
 
11388
 
 
11389
\textbf{pre\_auth\_types}
 
11390
 
 
11391
\textbf{password}
 
11392
 
 
11393
\textbf{ccache}
 
11394
 
 
11395
\textbf{creds}
 
11396
 
 
11397
\textbf{ret\_as\_reply}
 
11398
 
 
11399
\end{description}\end{quote}
 
11400
 
 
11401
DEPRECATED Replaced by krb5\_get\_init\_creds\_password() .
 
11402
 
 
11403
 
 
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)}
 
11406
 
 
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}
 
11410
 
 
11411
\begin{quote}\begin{description}
 
11412
\item[{param}] \leavevmode
 
11413
\textbf{context}
 
11414
 
 
11415
\textbf{options}
 
11416
 
 
11417
\textbf{addrs}
 
11418
 
 
11419
\textbf{ktypes}
 
11420
 
 
11421
\textbf{pre\_auth\_types}
 
11422
 
 
11423
\textbf{key}
 
11424
 
 
11425
\textbf{ccache}
 
11426
 
 
11427
\textbf{creds}
 
11428
 
 
11429
\textbf{ret\_as\_reply}
 
11430
 
 
11431
\end{description}\end{quote}
 
11432
 
 
11433
DEPRECATED Replaced by krb5\_get\_init\_creds().
 
11434
 
 
11435
 
 
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)}
 
11438
 
 
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}
 
11442
 
 
11443
\begin{quote}\begin{description}
 
11444
\item[{param}] \leavevmode
 
11445
\textbf{context}
 
11446
 
 
11447
\textbf{options}
 
11448
 
 
11449
\textbf{addrs}
 
11450
 
 
11451
\textbf{ktypes}
 
11452
 
 
11453
\textbf{pre\_auth\_types}
 
11454
 
 
11455
\textbf{arg\_keytab}
 
11456
 
 
11457
\textbf{ccache}
 
11458
 
 
11459
\textbf{creds}
 
11460
 
 
11461
\textbf{ret\_as\_reply}
 
11462
 
 
11463
\end{description}\end{quote}
 
11464
 
 
11465
DEPRECATED Replaced by krb5\_get\_init\_creds\_keytab() .
 
11466
 
 
11467
 
 
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)}
 
11470
 
 
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}
 
11474
 
 
11475
\begin{quote}\begin{description}
 
11476
\item[{param}] \leavevmode
 
11477
\textbf{opt}
 
11478
 
 
11479
\end{description}\end{quote}
 
11480
 
 
11481
DEPRECATED Use krb5\_get\_init\_creds\_opt\_alloc() instead.
 
11482
 
 
11483
 
 
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)}
 
11486
 
 
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}
 
11490
 
 
11491
\begin{quote}\begin{description}
 
11492
\item[{param}] \leavevmode
 
11493
\textbf{context}
 
11494
 
 
11495
\textbf{eblock}
 
11496
 
 
11497
\textbf{keyblock}
 
11498
 
 
11499
\textbf{ptr}
 
11500
 
 
11501
\end{description}\end{quote}
 
11502
 
 
11503
DEPRECATED Replaced by krb5\_c\_* API family.
 
11504
 
 
11505
 
 
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)}
 
11508
 
 
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}
 
11512
 
 
11513
\begin{quote}\begin{description}
 
11514
\item[{param}] \leavevmode
 
11515
\textbf{context}
 
11516
 
 
11517
\textbf{entry}
 
11518
 
 
11519
\end{description}\end{quote}
 
11520
 
 
11521
DEPRECATED Use krb5\_free\_keytab\_entry\_contents instead.
 
11522
 
 
11523
 
 
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)}
 
11526
 
 
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}
 
11530
 
 
11531
\begin{quote}\begin{description}
 
11532
\item[{param}] \leavevmode
 
11533
\textbf{context}
 
11534
 
 
11535
\textbf{eblock}
 
11536
 
 
11537
\textbf{ptr}
 
11538
 
 
11539
\textbf{keyblock}
 
11540
 
 
11541
\end{description}\end{quote}
 
11542
 
 
11543
DEPRECATED Replaced by krb5\_c\_* API family.
 
11544
 
 
11545
 
 
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)}
 
11548
 
 
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}
 
11552
 
 
11553
\begin{quote}\begin{description}
 
11554
\item[{param}] \leavevmode
 
11555
\textbf{context}
 
11556
 
 
11557
\textbf{eblock}
 
11558
 
 
11559
\textbf{key}
 
11560
 
 
11561
\end{description}\end{quote}
 
11562
 
 
11563
DEPRECATED Replaced by krb5\_c\_* API family.
 
11564
 
 
11565
 
 
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)}
 
11568
 
 
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}
 
11572
 
 
11573
\begin{quote}\begin{description}
 
11574
\item[{param}] \leavevmode
 
11575
\textbf{context}
 
11576
 
 
11577
\textbf{eblock}
 
11578
 
 
11579
\textbf{keyblock}
 
11580
 
 
11581
\textbf{data}
 
11582
 
 
11583
\textbf{salt}
 
11584
 
 
11585
\end{description}\end{quote}
 
11586
 
 
11587
DEPRECATED See krb5\_c\_string\_to\_key()
 
11588
 
 
11589
 
 
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)}
 
11592
 
 
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}
 
11596
 
 
11597
\begin{quote}\begin{description}
 
11598
\item[{param}] \leavevmode
 
11599
\textbf{context}
 
11600
 
 
11601
\textbf{eblock}
 
11602
 
 
11603
\textbf{enctype}
 
11604
 
 
11605
\end{description}\end{quote}
 
11606
 
 
11607
DEPRECATED Replaced by krb5\_c\_* API family.
 
11608
 
 
11609
 
 
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)}
 
11612
 
 
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}
 
11616
 
 
11617
\begin{quote}\begin{description}
 
11618
\item[{param}] \leavevmode
 
11619
\textbf{context}
 
11620
 
 
11621
\textbf{ctype}
 
11622
 
 
11623
\textbf{cksum}
 
11624
 
 
11625
\textbf{in}
 
11626
 
 
11627
\textbf{in\_length}
 
11628
 
 
11629
\textbf{seed}
 
11630
 
 
11631
\textbf{seed\_length}
 
11632
 
 
11633
\end{description}\end{quote}
 
11634
 
 
11635
DEPRECATED See krb5\_c\_verify\_checksum()
 
11636
 
 
11637
 
 
11638
\section{krb5 types and structures}
 
11639
\label{appdev/refs/types/index::doc}\label{appdev/refs/types/index:krb5-types-and-structures}
 
11640
 
 
11641
\subsection{Public}
 
11642
\label{appdev/refs/types/index:public}
 
11643
 
 
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)}
 
11646
 
 
11647
\begin{fulllineitems}
 
11648
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address}\pysigline{\bfcode{krb5\_address}}
 
11649
\end{fulllineitems}
 
11650
 
 
11651
 
 
11652
Structure for address.
 
11653
 
 
11654
 
 
11655
\paragraph{Declaration}
 
11656
\label{appdev/refs/types/krb5_address:declaration}
 
11657
typedef struct \_krb5\_address  krb5\_address
 
11658
 
 
11659
 
 
11660
\paragraph{Members}
 
11661
\label{appdev/refs/types/krb5_address:members}\index{krb5\_address.magic (C member)}
 
11662
 
 
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}
 
11666
 
 
11667
\index{krb5\_address.addrtype (C member)}
 
11668
 
 
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}
 
11672
 
 
11673
\index{krb5\_address.length (C member)}
 
11674
 
 
11675
\begin{fulllineitems}
 
11676
\phantomsection\label{appdev/refs/types/krb5_address:krb5_address.length}\pysigline{unsigned int      \bfcode{krb5\_address.length}}
 
11677
\end{fulllineitems}
 
11678
 
 
11679
\index{krb5\_address.contents (C member)}
 
11680
 
 
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}
 
11684
 
 
11685
 
 
11686
 
 
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)}
 
11689
 
 
11690
\begin{fulllineitems}
 
11691
\phantomsection\label{appdev/refs/types/krb5_addrtype:krb5_addrtype}\pysigline{\bfcode{krb5\_addrtype}}
 
11692
\end{fulllineitems}
 
11693
 
 
11694
 
 
11695
 
 
11696
\paragraph{Declaration}
 
11697
\label{appdev/refs/types/krb5_addrtype:declaration}
 
11698
typedef krb5\_int32 krb5\_addrtype
 
11699
 
 
11700
 
 
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)}
 
11703
 
 
11704
\begin{fulllineitems}
 
11705
\phantomsection\label{appdev/refs/types/krb5_ap_req:krb5_ap_req}\pysigline{\bfcode{krb5\_ap\_req}}
 
11706
\end{fulllineitems}
 
11707
 
 
11708
 
 
11709
Authentication header.
 
11710
 
 
11711
 
 
11712
\paragraph{Declaration}
 
11713
\label{appdev/refs/types/krb5_ap_req:declaration}
 
11714
typedef struct \_krb5\_ap\_req  krb5\_ap\_req
 
11715
 
 
11716
 
 
11717
\paragraph{Members}
 
11718
\label{appdev/refs/types/krb5_ap_req:members}\index{krb5\_ap\_req.magic (C member)}
 
11719
 
 
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}
 
11723
 
 
11724
\index{krb5\_ap\_req.ap\_options (C member)}
 
11725
 
 
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}}
 
11728
Requested options.
 
11729
 
 
11730
\end{fulllineitems}
 
11731
 
 
11732
\index{krb5\_ap\_req.ticket (C member)}
 
11733
 
 
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}}
 
11736
Ticket.
 
11737
 
 
11738
\end{fulllineitems}
 
11739
 
 
11740
\index{krb5\_ap\_req.authenticator (C member)}
 
11741
 
 
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.
 
11745
 
 
11746
\end{fulllineitems}
 
11747
 
 
11748
 
 
11749
 
 
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)}
 
11752
 
 
11753
\begin{fulllineitems}
 
11754
\phantomsection\label{appdev/refs/types/krb5_ap_rep:krb5_ap_rep}\pysigline{\bfcode{krb5\_ap\_rep}}
 
11755
\end{fulllineitems}
 
11756
 
 
11757
 
 
11758
C representaton of AP-REP message.
 
11759
 
 
11760
The server's response to a client's request for mutual authentication.
 
11761
 
 
11762
 
 
11763
\paragraph{Declaration}
 
11764
\label{appdev/refs/types/krb5_ap_rep:declaration}
 
11765
typedef struct \_krb5\_ap\_rep  krb5\_ap\_rep
 
11766
 
 
11767
 
 
11768
\paragraph{Members}
 
11769
\label{appdev/refs/types/krb5_ap_rep:members}\index{krb5\_ap\_rep.magic (C member)}
 
11770
 
 
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}
 
11774
 
 
11775
\index{krb5\_ap\_rep.enc\_part (C member)}
 
11776
 
 
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.
 
11780
 
 
11781
\end{fulllineitems}
 
11782
 
 
11783
 
 
11784
 
 
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)}
 
11787
 
 
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}
 
11791
 
 
11792
 
 
11793
Cleartext that is encrypted and put into \code{\_krb5\_ap\_rep} .
 
11794
 
 
11795
 
 
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
 
11799
 
 
11800
 
 
11801
\paragraph{Members}
 
11802
\label{appdev/refs/types/krb5_ap_rep_enc_part:members}\index{krb5\_ap\_rep\_enc\_part.magic (C member)}
 
11803
 
 
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}
 
11807
 
 
11808
\index{krb5\_ap\_rep\_enc\_part.ctime (C member)}
 
11809
 
 
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.
 
11813
 
 
11814
\end{fulllineitems}
 
11815
 
 
11816
\index{krb5\_ap\_rep\_enc\_part.cusec (C member)}
 
11817
 
 
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.
 
11821
 
 
11822
\end{fulllineitems}
 
11823
 
 
11824
\index{krb5\_ap\_rep\_enc\_part.subkey (C member)}
 
11825
 
 
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}}
 
11828
Subkey (optional)
 
11829
 
 
11830
\end{fulllineitems}
 
11831
 
 
11832
\index{krb5\_ap\_rep\_enc\_part.seq\_number (C member)}
 
11833
 
 
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}}
 
11836
Sequence number.
 
11837
 
 
11838
\end{fulllineitems}
 
11839
 
 
11840
 
 
11841
 
 
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)}
 
11844
 
 
11845
\begin{fulllineitems}
 
11846
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata}\pysigline{\bfcode{krb5\_authdata}}
 
11847
\end{fulllineitems}
 
11848
 
 
11849
 
 
11850
Structure for auth data.
 
11851
 
 
11852
 
 
11853
\paragraph{Declaration}
 
11854
\label{appdev/refs/types/krb5_authdata:declaration}
 
11855
typedef struct \_krb5\_authdata  krb5\_authdata
 
11856
 
 
11857
 
 
11858
\paragraph{Members}
 
11859
\label{appdev/refs/types/krb5_authdata:members}\index{krb5\_authdata.magic (C member)}
 
11860
 
 
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}
 
11864
 
 
11865
\index{krb5\_authdata.ad\_type (C member)}
 
11866
 
 
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}}
 
11869
ADTYPE.
 
11870
 
 
11871
\end{fulllineitems}
 
11872
 
 
11873
\index{krb5\_authdata.length (C member)}
 
11874
 
 
11875
\begin{fulllineitems}
 
11876
\phantomsection\label{appdev/refs/types/krb5_authdata:krb5_authdata.length}\pysigline{unsigned int      \bfcode{krb5\_authdata.length}}
 
11877
Length of data.
 
11878
 
 
11879
\end{fulllineitems}
 
11880
 
 
11881
\index{krb5\_authdata.contents (C member)}
 
11882
 
 
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}}
 
11885
Data.
 
11886
 
 
11887
\end{fulllineitems}
 
11888
 
 
11889
 
 
11890
 
 
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)}
 
11893
 
 
11894
\begin{fulllineitems}
 
11895
\phantomsection\label{appdev/refs/types/krb5_authdatatype:krb5_authdatatype}\pysigline{\bfcode{krb5\_authdatatype}}
 
11896
\end{fulllineitems}
 
11897
 
 
11898
 
 
11899
 
 
11900
\paragraph{Declaration}
 
11901
\label{appdev/refs/types/krb5_authdatatype:declaration}
 
11902
typedef krb5\_int32 krb5\_authdatatype
 
11903
 
 
11904
 
 
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)}
 
11907
 
 
11908
\begin{fulllineitems}
 
11909
\phantomsection\label{appdev/refs/types/krb5_authenticator:krb5_authenticator}\pysigline{\bfcode{krb5\_authenticator}}
 
11910
\end{fulllineitems}
 
11911
 
 
11912
 
 
11913
Ticket authenticator.
 
11914
 
 
11915
The C representation of an unencrypted authenticator.
 
11916
 
 
11917
 
 
11918
\paragraph{Declaration}
 
11919
\label{appdev/refs/types/krb5_authenticator:declaration}
 
11920
typedef struct \_krb5\_authenticator  krb5\_authenticator
 
11921
 
 
11922
 
 
11923
\paragraph{Members}
 
11924
\label{appdev/refs/types/krb5_authenticator:members}\index{krb5\_authenticator.magic (C member)}
 
11925
 
 
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}
 
11929
 
 
11930
\index{krb5\_authenticator.client (C member)}
 
11931
 
 
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}}
 
11934
client name/realm
 
11935
 
 
11936
\end{fulllineitems}
 
11937
 
 
11938
\index{krb5\_authenticator.checksum (C member)}
 
11939
 
 
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
 
11943
 
 
11944
\end{fulllineitems}
 
11945
 
 
11946
\index{krb5\_authenticator.cusec (C member)}
 
11947
 
 
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
 
11951
 
 
11952
\end{fulllineitems}
 
11953
 
 
11954
\index{krb5\_authenticator.ctime (C member)}
 
11955
 
 
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}}
 
11958
client sec portion
 
11959
 
 
11960
\end{fulllineitems}
 
11961
 
 
11962
\index{krb5\_authenticator.subkey (C member)}
 
11963
 
 
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
 
11967
 
 
11968
\end{fulllineitems}
 
11969
 
 
11970
\index{krb5\_authenticator.seq\_number (C member)}
 
11971
 
 
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
 
11975
 
 
11976
\end{fulllineitems}
 
11977
 
 
11978
\index{krb5\_authenticator.authorization\_data (C member)}
 
11979
 
 
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
 
11983
 
 
11984
\end{fulllineitems}
 
11985
 
 
11986
 
 
11987
 
 
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)}
 
11990
 
 
11991
\begin{fulllineitems}
 
11992
\phantomsection\label{appdev/refs/types/krb5_boolean:krb5_boolean}\pysigline{\bfcode{krb5\_boolean}}
 
11993
\end{fulllineitems}
 
11994
 
 
11995
 
 
11996
 
 
11997
\paragraph{Declaration}
 
11998
\label{appdev/refs/types/krb5_boolean:declaration}
 
11999
typedef unsigned int krb5\_boolean
 
12000
 
 
12001
 
 
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)}
 
12004
 
 
12005
\begin{fulllineitems}
 
12006
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum}\pysigline{\bfcode{krb5\_checksum}}
 
12007
\end{fulllineitems}
 
12008
 
 
12009
 
 
12010
 
 
12011
\paragraph{Declaration}
 
12012
\label{appdev/refs/types/krb5_checksum:declaration}
 
12013
typedef struct \_krb5\_checksum  krb5\_checksum
 
12014
 
 
12015
 
 
12016
\paragraph{Members}
 
12017
\label{appdev/refs/types/krb5_checksum:members}\index{krb5\_checksum.magic (C member)}
 
12018
 
 
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}
 
12022
 
 
12023
\index{krb5\_checksum.checksum\_type (C member)}
 
12024
 
 
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}
 
12028
 
 
12029
\index{krb5\_checksum.length (C member)}
 
12030
 
 
12031
\begin{fulllineitems}
 
12032
\phantomsection\label{appdev/refs/types/krb5_checksum:krb5_checksum.length}\pysigline{unsigned int      \bfcode{krb5\_checksum.length}}
 
12033
\end{fulllineitems}
 
12034
 
 
12035
\index{krb5\_checksum.contents (C member)}
 
12036
 
 
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}
 
12040
 
 
12041
 
 
12042
 
 
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)}
 
12045
 
 
12046
\begin{fulllineitems}
 
12047
\phantomsection\label{appdev/refs/types/krb5_const_pointer:krb5_const_pointer}\pysigline{\bfcode{krb5\_const\_pointer}}
 
12048
\end{fulllineitems}
 
12049
 
 
12050
 
 
12051
 
 
12052
\paragraph{Declaration}
 
12053
\label{appdev/refs/types/krb5_const_pointer:declaration}
 
12054
typedef void const* krb5\_const\_pointer
 
12055
 
 
12056
 
 
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)}
 
12059
 
 
12060
\begin{fulllineitems}
 
12061
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal}\pysigline{\bfcode{krb5\_const\_principal}}
 
12062
\end{fulllineitems}
 
12063
 
 
12064
 
 
12065
Constant version of {\hyperref[appdev/refs/types/krb5_principal_data:krb5_principal_data]{\code{krb5\_principal\_data}}} .
 
12066
 
 
12067
 
 
12068
\paragraph{Declaration}
 
12069
\label{appdev/refs/types/krb5_const_principal:declaration}
 
12070
typedef const krb5\_principal\_data* krb5\_const\_principal
 
12071
 
 
12072
 
 
12073
\paragraph{Members}
 
12074
\label{appdev/refs/types/krb5_const_principal:members}\index{krb5\_const\_principal.magic (C member)}
 
12075
 
 
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}
 
12079
 
 
12080
\index{krb5\_const\_principal.realm (C member)}
 
12081
 
 
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}
 
12085
 
 
12086
\index{krb5\_const\_principal.data (C member)}
 
12087
 
 
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.
 
12091
 
 
12092
\end{fulllineitems}
 
12093
 
 
12094
\index{krb5\_const\_principal.length (C member)}
 
12095
 
 
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}
 
12099
 
 
12100
\index{krb5\_const\_principal.type (C member)}
 
12101
 
 
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}
 
12105
 
 
12106
 
 
12107
 
 
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)}
 
12110
 
 
12111
\begin{fulllineitems}
 
12112
\phantomsection\label{appdev/refs/types/krb5_cred:krb5_cred}\pysigline{\bfcode{krb5\_cred}}
 
12113
\end{fulllineitems}
 
12114
 
 
12115
 
 
12116
Credentials data structure.
 
12117
 
 
12118
 
 
12119
\paragraph{Declaration}
 
12120
\label{appdev/refs/types/krb5_cred:declaration}
 
12121
typedef struct \_krb5\_cred  krb5\_cred
 
12122
 
 
12123
 
 
12124
\paragraph{Members}
 
12125
\label{appdev/refs/types/krb5_cred:members}\index{krb5\_cred.magic (C member)}
 
12126
 
 
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}
 
12130
 
 
12131
\index{krb5\_cred.tickets (C member)}
 
12132
 
 
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}}
 
12135
Tickets.
 
12136
 
 
12137
\end{fulllineitems}
 
12138
 
 
12139
\index{krb5\_cred.enc\_part (C member)}
 
12140
 
 
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}}
 
12143
Encrypted part.
 
12144
 
 
12145
\end{fulllineitems}
 
12146
 
 
12147
\index{krb5\_cred.enc\_part2 (C member)}
 
12148
 
 
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.
 
12152
 
 
12153
\end{fulllineitems}
 
12154
 
 
12155
 
 
12156
 
 
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)}
 
12159
 
 
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}
 
12163
 
 
12164
 
 
12165
Cleartext credentials information.
 
12166
 
 
12167
 
 
12168
\paragraph{Declaration}
 
12169
\label{appdev/refs/types/krb5_cred_enc_part:declaration}
 
12170
typedef struct \_krb5\_cred\_enc\_part  krb5\_cred\_enc\_part
 
12171
 
 
12172
 
 
12173
\paragraph{Members}
 
12174
\label{appdev/refs/types/krb5_cred_enc_part:members}\index{krb5\_cred\_enc\_part.magic (C member)}
 
12175
 
 
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}
 
12179
 
 
12180
\index{krb5\_cred\_enc\_part.nonce (C member)}
 
12181
 
 
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}}
 
12184
Nonce (optional)
 
12185
 
 
12186
\end{fulllineitems}
 
12187
 
 
12188
\index{krb5\_cred\_enc\_part.timestamp (C member)}
 
12189
 
 
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.
 
12193
 
 
12194
\end{fulllineitems}
 
12195
 
 
12196
\index{krb5\_cred\_enc\_part.usec (C member)}
 
12197
 
 
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.
 
12201
 
 
12202
\end{fulllineitems}
 
12203
 
 
12204
\index{krb5\_cred\_enc\_part.s\_address (C member)}
 
12205
 
 
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)
 
12209
 
 
12210
\end{fulllineitems}
 
12211
 
 
12212
\index{krb5\_cred\_enc\_part.r\_address (C member)}
 
12213
 
 
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)
 
12217
 
 
12218
\end{fulllineitems}
 
12219
 
 
12220
\index{krb5\_cred\_enc\_part.ticket\_info (C member)}
 
12221
 
 
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}
 
12225
 
 
12226
 
 
12227
 
 
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)}
 
12230
 
 
12231
\begin{fulllineitems}
 
12232
\phantomsection\label{appdev/refs/types/krb5_cred_info:krb5_cred_info}\pysigline{\bfcode{krb5\_cred\_info}}
 
12233
\end{fulllineitems}
 
12234
 
 
12235
 
 
12236
Credentials information inserted into \emph{EncKrbCredPart} .
 
12237
 
 
12238
 
 
12239
\paragraph{Declaration}
 
12240
\label{appdev/refs/types/krb5_cred_info:declaration}
 
12241
typedef struct \_krb5\_cred\_info  krb5\_cred\_info
 
12242
 
 
12243
 
 
12244
\paragraph{Members}
 
12245
\label{appdev/refs/types/krb5_cred_info:members}\index{krb5\_cred\_info.magic (C member)}
 
12246
 
 
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}
 
12250
 
 
12251
\index{krb5\_cred\_info.session (C member)}
 
12252
 
 
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.
 
12256
 
 
12257
\end{fulllineitems}
 
12258
 
 
12259
\index{krb5\_cred\_info.client (C member)}
 
12260
 
 
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.
 
12264
 
 
12265
\end{fulllineitems}
 
12266
 
 
12267
\index{krb5\_cred\_info.server (C member)}
 
12268
 
 
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.
 
12272
 
 
12273
\end{fulllineitems}
 
12274
 
 
12275
\index{krb5\_cred\_info.flags (C member)}
 
12276
 
 
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}}
 
12279
Ticket flags.
 
12280
 
 
12281
\end{fulllineitems}
 
12282
 
 
12283
\index{krb5\_cred\_info.times (C member)}
 
12284
 
 
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.
 
12288
 
 
12289
\end{fulllineitems}
 
12290
 
 
12291
\index{krb5\_cred\_info.caddrs (C member)}
 
12292
 
 
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)
 
12296
 
 
12297
\end{fulllineitems}
 
12298
 
 
12299
 
 
12300
 
 
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)}
 
12303
 
 
12304
\begin{fulllineitems}
 
12305
\phantomsection\label{appdev/refs/types/krb5_creds:krb5_creds}\pysigline{\bfcode{krb5\_creds}}
 
12306
\end{fulllineitems}
 
12307
 
 
12308
 
 
12309
Credentials structure including ticket, session key, and lifetime info.
 
12310
 
 
12311
 
 
12312
\paragraph{Declaration}
 
12313
\label{appdev/refs/types/krb5_creds:declaration}
 
12314
typedef struct \_krb5\_creds  krb5\_creds
 
12315
 
 
12316
 
 
12317
\paragraph{Members}
 
12318
\label{appdev/refs/types/krb5_creds:members}\index{krb5\_creds.magic (C member)}
 
12319
 
 
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}
 
12323
 
 
12324
\index{krb5\_creds.client (C member)}
 
12325
 
 
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
 
12329
 
 
12330
\end{fulllineitems}
 
12331
 
 
12332
\index{krb5\_creds.server (C member)}
 
12333
 
 
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
 
12337
 
 
12338
\end{fulllineitems}
 
12339
 
 
12340
\index{krb5\_creds.keyblock (C member)}
 
12341
 
 
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
 
12345
 
 
12346
\end{fulllineitems}
 
12347
 
 
12348
\index{krb5\_creds.times (C member)}
 
12349
 
 
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}}
 
12352
lifetime info
 
12353
 
 
12354
\end{fulllineitems}
 
12355
 
 
12356
\index{krb5\_creds.is\_skey (C member)}
 
12357
 
 
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
 
12361
 
 
12362
\end{fulllineitems}
 
12363
 
 
12364
\index{krb5\_creds.ticket\_flags (C member)}
 
12365
 
 
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}}
 
12368
flags in ticket
 
12369
 
 
12370
\end{fulllineitems}
 
12371
 
 
12372
\index{krb5\_creds.addresses (C member)}
 
12373
 
 
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}}
 
12376
addrs in ticket
 
12377
 
 
12378
\end{fulllineitems}
 
12379
 
 
12380
\index{krb5\_creds.ticket (C member)}
 
12381
 
 
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
 
12385
 
 
12386
\end{fulllineitems}
 
12387
 
 
12388
\index{krb5\_creds.second\_ticket (C member)}
 
12389
 
 
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)
 
12393
 
 
12394
\end{fulllineitems}
 
12395
 
 
12396
\index{krb5\_creds.authdata (C member)}
 
12397
 
 
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}}
 
12400
authorization data
 
12401
 
 
12402
\end{fulllineitems}
 
12403
 
 
12404
 
 
12405
 
 
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)}
 
12408
 
 
12409
\begin{fulllineitems}
 
12410
\phantomsection\label{appdev/refs/types/krb5_crypto_iov:krb5_crypto_iov}\pysigline{\bfcode{krb5\_crypto\_iov}}
 
12411
\end{fulllineitems}
 
12412
 
 
12413
 
 
12414
Structure to describe a region of text to be encrypted or decrypted.
 
12415
 
 
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.
 
12417
 
 
12418
 
 
12419
\paragraph{Declaration}
 
12420
\label{appdev/refs/types/krb5_crypto_iov:declaration}
 
12421
typedef struct \_krb5\_crypto\_iov  krb5\_crypto\_iov
 
12422
 
 
12423
 
 
12424
\paragraph{Members}
 
12425
\label{appdev/refs/types/krb5_crypto_iov:members}\index{krb5\_crypto\_iov.flags (C member)}
 
12426
 
 
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
 
12430
 
 
12431
\end{fulllineitems}
 
12432
 
 
12433
\index{krb5\_crypto\_iov.data (C member)}
 
12434
 
 
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}
 
12438
 
 
12439
 
 
12440
 
 
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)}
 
12443
 
 
12444
\begin{fulllineitems}
 
12445
\phantomsection\label{appdev/refs/types/krb5_cryptotype:krb5_cryptotype}\pysigline{\bfcode{krb5\_cryptotype}}
 
12446
\end{fulllineitems}
 
12447
 
 
12448
 
 
12449
 
 
12450
\paragraph{Declaration}
 
12451
\label{appdev/refs/types/krb5_cryptotype:declaration}
 
12452
typedef krb5\_int32 krb5\_cryptotype
 
12453
 
 
12454
 
 
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)}
 
12457
 
 
12458
\begin{fulllineitems}
 
12459
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data}\pysigline{\bfcode{krb5\_data}}
 
12460
\end{fulllineitems}
 
12461
 
 
12462
 
 
12463
 
 
12464
\paragraph{Declaration}
 
12465
\label{appdev/refs/types/krb5_data:declaration}
 
12466
typedef struct \_krb5\_data  krb5\_data
 
12467
 
 
12468
 
 
12469
\paragraph{Members}
 
12470
\label{appdev/refs/types/krb5_data:members}\index{krb5\_data.magic (C member)}
 
12471
 
 
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}
 
12475
 
 
12476
\index{krb5\_data.length (C member)}
 
12477
 
 
12478
\begin{fulllineitems}
 
12479
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data.length}\pysigline{unsigned int      \bfcode{krb5\_data.length}}
 
12480
\end{fulllineitems}
 
12481
 
 
12482
\index{krb5\_data.data (C member)}
 
12483
 
 
12484
\begin{fulllineitems}
 
12485
\phantomsection\label{appdev/refs/types/krb5_data:krb5_data.data}\pysigline{char *    \bfcode{krb5\_data.data}}
 
12486
\end{fulllineitems}
 
12487
 
 
12488
 
 
12489
 
 
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)}
 
12492
 
 
12493
\begin{fulllineitems}
 
12494
\phantomsection\label{appdev/refs/types/krb5_deltat:krb5_deltat}\pysigline{\bfcode{krb5\_deltat}}
 
12495
\end{fulllineitems}
 
12496
 
 
12497
 
 
12498
 
 
12499
\paragraph{Declaration}
 
12500
\label{appdev/refs/types/krb5_deltat:declaration}
 
12501
typedef krb5\_int32 krb5\_deltat
 
12502
 
 
12503
 
 
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)}
 
12506
 
 
12507
\begin{fulllineitems}
 
12508
\phantomsection\label{appdev/refs/types/krb5_enc_data:krb5_enc_data}\pysigline{\bfcode{krb5\_enc\_data}}
 
12509
\end{fulllineitems}
 
12510
 
 
12511
 
 
12512
 
 
12513
\paragraph{Declaration}
 
12514
\label{appdev/refs/types/krb5_enc_data:declaration}
 
12515
typedef struct \_krb5\_enc\_data  krb5\_enc\_data
 
12516
 
 
12517
 
 
12518
\paragraph{Members}
 
12519
\label{appdev/refs/types/krb5_enc_data:members}\index{krb5\_enc\_data.magic (C member)}
 
12520
 
 
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}
 
12524
 
 
12525
\index{krb5\_enc\_data.enctype (C member)}
 
12526
 
 
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}
 
12530
 
 
12531
\index{krb5\_enc\_data.kvno (C member)}
 
12532
 
 
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}
 
12536
 
 
12537
\index{krb5\_enc\_data.ciphertext (C member)}
 
12538
 
 
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}
 
12542
 
 
12543
 
 
12544
 
 
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)}
 
12547
 
 
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}
 
12551
 
 
12552
 
 
12553
C representation of \emph{EncKDCRepPart} protocol message.
 
12554
 
 
12555
This is the cleartext message that is encrypted and inserted in \emph{KDC-REP} .
 
12556
 
 
12557
 
 
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
 
12561
 
 
12562
 
 
12563
\paragraph{Members}
 
12564
\label{appdev/refs/types/krb5_enc_kdc_rep_part:members}\index{krb5\_enc\_kdc\_rep\_part.magic (C member)}
 
12565
 
 
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}
 
12569
 
 
12570
\index{krb5\_enc\_kdc\_rep\_part.msg\_type (C member)}
 
12571
 
 
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}}
 
12574
krb5 message type
 
12575
 
 
12576
\end{fulllineitems}
 
12577
 
 
12578
\index{krb5\_enc\_kdc\_rep\_part.session (C member)}
 
12579
 
 
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}}
 
12582
Session key.
 
12583
 
 
12584
\end{fulllineitems}
 
12585
 
 
12586
\index{krb5\_enc\_kdc\_rep\_part.last\_req (C member)}
 
12587
 
 
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.
 
12591
 
 
12592
\end{fulllineitems}
 
12593
 
 
12594
\index{krb5\_enc\_kdc\_rep\_part.nonce (C member)}
 
12595
 
 
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.
 
12599
 
 
12600
\end{fulllineitems}
 
12601
 
 
12602
\index{krb5\_enc\_kdc\_rep\_part.key\_exp (C member)}
 
12603
 
 
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}}
 
12606
Expiration date.
 
12607
 
 
12608
\end{fulllineitems}
 
12609
 
 
12610
\index{krb5\_enc\_kdc\_rep\_part.flags (C member)}
 
12611
 
 
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}}
 
12614
Ticket flags.
 
12615
 
 
12616
\end{fulllineitems}
 
12617
 
 
12618
\index{krb5\_enc\_kdc\_rep\_part.times (C member)}
 
12619
 
 
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}}
 
12622
Lifetime info.
 
12623
 
 
12624
\end{fulllineitems}
 
12625
 
 
12626
\index{krb5\_enc\_kdc\_rep\_part.server (C member)}
 
12627
 
 
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.
 
12631
 
 
12632
\end{fulllineitems}
 
12633
 
 
12634
\index{krb5\_enc\_kdc\_rep\_part.caddrs (C member)}
 
12635
 
 
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.
 
12639
 
 
12640
\end{fulllineitems}
 
12641
 
 
12642
\index{krb5\_enc\_kdc\_rep\_part.enc\_padata (C member)}
 
12643
 
 
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.
 
12647
 
 
12648
\end{fulllineitems}
 
12649
 
 
12650
 
 
12651
 
 
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)}
 
12654
 
 
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}
 
12658
 
 
12659
 
 
12660
Encrypted part of ticket.
 
12661
 
 
12662
 
 
12663
\paragraph{Declaration}
 
12664
\label{appdev/refs/types/krb5_enc_tkt_part:declaration}
 
12665
typedef struct \_krb5\_enc\_tkt\_part  krb5\_enc\_tkt\_part
 
12666
 
 
12667
 
 
12668
\paragraph{Members}
 
12669
\label{appdev/refs/types/krb5_enc_tkt_part:members}\index{krb5\_enc\_tkt\_part.magic (C member)}
 
12670
 
 
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}
 
12674
 
 
12675
\index{krb5\_enc\_tkt\_part.flags (C member)}
 
12676
 
 
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}}
 
12679
flags
 
12680
 
 
12681
\end{fulllineitems}
 
12682
 
 
12683
\index{krb5\_enc\_tkt\_part.session (C member)}
 
12684
 
 
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
 
12688
 
 
12689
\end{fulllineitems}
 
12690
 
 
12691
\index{krb5\_enc\_tkt\_part.client (C member)}
 
12692
 
 
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}}
 
12695
client name/realm
 
12696
 
 
12697
\end{fulllineitems}
 
12698
 
 
12699
\index{krb5\_enc\_tkt\_part.transited (C member)}
 
12700
 
 
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
 
12704
 
 
12705
\end{fulllineitems}
 
12706
 
 
12707
\index{krb5\_enc\_tkt\_part.times (C member)}
 
12708
 
 
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
 
12712
 
 
12713
\end{fulllineitems}
 
12714
 
 
12715
\index{krb5\_enc\_tkt\_part.caddrs (C member)}
 
12716
 
 
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
 
12720
 
 
12721
\end{fulllineitems}
 
12722
 
 
12723
\index{krb5\_enc\_tkt\_part.authorization\_data (C member)}
 
12724
 
 
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}}
 
12727
auth data
 
12728
 
 
12729
\end{fulllineitems}
 
12730
 
 
12731
 
 
12732
 
 
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)}
 
12735
 
 
12736
\begin{fulllineitems}
 
12737
\phantomsection\label{appdev/refs/types/krb5_encrypt_block:krb5_encrypt_block}\pysigline{\bfcode{krb5\_encrypt\_block}}
 
12738
\end{fulllineitems}
 
12739
 
 
12740
 
 
12741
 
 
12742
\paragraph{Declaration}
 
12743
\label{appdev/refs/types/krb5_encrypt_block:declaration}
 
12744
typedef struct \_krb5\_encrypt\_block  krb5\_encrypt\_block
 
12745
 
 
12746
 
 
12747
\paragraph{Members}
 
12748
\label{appdev/refs/types/krb5_encrypt_block:members}\index{krb5\_encrypt\_block.magic (C member)}
 
12749
 
 
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}
 
12753
 
 
12754
\index{krb5\_encrypt\_block.crypto\_entry (C member)}
 
12755
 
 
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}
 
12759
 
 
12760
\index{krb5\_encrypt\_block.key (C member)}
 
12761
 
 
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}
 
12765
 
 
12766
 
 
12767
 
 
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)}
 
12770
 
 
12771
\begin{fulllineitems}
 
12772
\phantomsection\label{appdev/refs/types/krb5_enctype:krb5_enctype}\pysigline{\bfcode{krb5\_enctype}}
 
12773
\end{fulllineitems}
 
12774
 
 
12775
 
 
12776
 
 
12777
\paragraph{Declaration}
 
12778
\label{appdev/refs/types/krb5_enctype:declaration}
 
12779
typedef krb5\_int32 krb5\_enctype
 
12780
 
 
12781
 
 
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)}
 
12784
 
 
12785
\begin{fulllineitems}
 
12786
\phantomsection\label{appdev/refs/types/krb5_error:krb5_error}\pysigline{\bfcode{krb5\_error}}
 
12787
\end{fulllineitems}
 
12788
 
 
12789
 
 
12790
Error message structure.
 
12791
 
 
12792
 
 
12793
\paragraph{Declaration}
 
12794
\label{appdev/refs/types/krb5_error:declaration}
 
12795
typedef struct \_krb5\_error  krb5\_error
 
12796
 
 
12797
 
 
12798
\paragraph{Members}
 
12799
\label{appdev/refs/types/krb5_error:members}\index{krb5\_error.magic (C member)}
 
12800
 
 
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}
 
12804
 
 
12805
\index{krb5\_error.ctime (C member)}
 
12806
 
 
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.
 
12810
 
 
12811
\end{fulllineitems}
 
12812
 
 
12813
\index{krb5\_error.cusec (C member)}
 
12814
 
 
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.
 
12818
 
 
12819
\end{fulllineitems}
 
12820
 
 
12821
\index{krb5\_error.susec (C member)}
 
12822
 
 
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.
 
12826
 
 
12827
\end{fulllineitems}
 
12828
 
 
12829
\index{krb5\_error.stime (C member)}
 
12830
 
 
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.
 
12834
 
 
12835
\end{fulllineitems}
 
12836
 
 
12837
\index{krb5\_error.error (C member)}
 
12838
 
 
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)
 
12842
 
 
12843
\end{fulllineitems}
 
12844
 
 
12845
\index{krb5\_error.client (C member)}
 
12846
 
 
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.
 
12850
 
 
12851
\end{fulllineitems}
 
12852
 
 
12853
\index{krb5\_error.server (C member)}
 
12854
 
 
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.
 
12858
 
 
12859
\end{fulllineitems}
 
12860
 
 
12861
\index{krb5\_error.text (C member)}
 
12862
 
 
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}}
 
12865
Descriptive text.
 
12866
 
 
12867
\end{fulllineitems}
 
12868
 
 
12869
\index{krb5\_error.e\_data (C member)}
 
12870
 
 
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.
 
12874
 
 
12875
\end{fulllineitems}
 
12876
 
 
12877
 
 
12878
 
 
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)}
 
12881
 
 
12882
\begin{fulllineitems}
 
12883
\phantomsection\label{appdev/refs/types/krb5_error_code:krb5_error_code}\pysigline{\bfcode{krb5\_error\_code}}
 
12884
\end{fulllineitems}
 
12885
 
 
12886
 
 
12887
 
 
12888
\paragraph{Declaration}
 
12889
\label{appdev/refs/types/krb5_error_code:declaration}
 
12890
typedef krb5\_int32 krb5\_error\_code
 
12891
 
 
12892
 
 
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)}
 
12895
 
 
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}
 
12899
 
 
12900
 
 
12901
 
 
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)
 
12905
 
 
12906
 
 
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)}
 
12909
 
 
12910
\begin{fulllineitems}
 
12911
\phantomsection\label{appdev/refs/types/krb5_flags:krb5_flags}\pysigline{\bfcode{krb5\_flags}}
 
12912
\end{fulllineitems}
 
12913
 
 
12914
 
 
12915
 
 
12916
\paragraph{Declaration}
 
12917
\label{appdev/refs/types/krb5_flags:declaration}
 
12918
typedef krb5\_int32 krb5\_flags
 
12919
 
 
12920
 
 
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)}
 
12923
 
 
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}
 
12927
 
 
12928
 
 
12929
Store options for \emph{\_krb5\_get\_init\_creds} .
 
12930
 
 
12931
 
 
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
 
12935
 
 
12936
 
 
12937
\paragraph{Members}
 
12938
\label{appdev/refs/types/krb5_get_init_creds_opt:members}\index{krb5\_get\_init\_creds\_opt.flags (C member)}
 
12939
 
 
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}
 
12943
 
 
12944
\index{krb5\_get\_init\_creds\_opt.tkt\_life (C member)}
 
12945
 
 
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}
 
12949
 
 
12950
\index{krb5\_get\_init\_creds\_opt.renew\_life (C member)}
 
12951
 
 
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}
 
12955
 
 
12956
\index{krb5\_get\_init\_creds\_opt.forwardable (C member)}
 
12957
 
 
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}
 
12961
 
 
12962
\index{krb5\_get\_init\_creds\_opt.proxiable (C member)}
 
12963
 
 
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}
 
12967
 
 
12968
\index{krb5\_get\_init\_creds\_opt.etype\_list (C member)}
 
12969
 
 
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}
 
12973
 
 
12974
\index{krb5\_get\_init\_creds\_opt.etype\_list\_length (C member)}
 
12975
 
 
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}
 
12979
 
 
12980
\index{krb5\_get\_init\_creds\_opt.address\_list (C member)}
 
12981
 
 
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}
 
12985
 
 
12986
\index{krb5\_get\_init\_creds\_opt.preauth\_list (C member)}
 
12987
 
 
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}
 
12991
 
 
12992
\index{krb5\_get\_init\_creds\_opt.preauth\_list\_length (C member)}
 
12993
 
 
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}
 
12997
 
 
12998
\index{krb5\_get\_init\_creds\_opt.salt (C member)}
 
12999
 
 
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}
 
13003
 
 
13004
 
 
13005
 
 
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)}
 
13008
 
 
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}
 
13012
 
 
13013
 
 
13014
Generic preauth option attribute/value pairs.
 
13015
 
 
13016
 
 
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
 
13020
 
 
13021
 
 
13022
\paragraph{Members}
 
13023
\label{appdev/refs/types/krb5_gic_opt_pa_data:members}\index{krb5\_gic\_opt\_pa\_data.attr (C member)}
 
13024
 
 
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}
 
13028
 
 
13029
\index{krb5\_gic\_opt\_pa\_data.value (C member)}
 
13030
 
 
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}
 
13034
 
 
13035
 
 
13036
 
 
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)}
 
13039
 
 
13040
\begin{fulllineitems}
 
13041
\phantomsection\label{appdev/refs/types/krb5_int32:krb5_int32}\pysigline{\bfcode{krb5\_int32}}
 
13042
\end{fulllineitems}
 
13043
 
 
13044
 
 
13045
krb5\_int32 is a signed 32-bit integer type
 
13046
 
 
13047
 
 
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)}
 
13050
 
 
13051
\begin{fulllineitems}
 
13052
\phantomsection\label{appdev/refs/types/krb5_kdc_rep:krb5_kdc_rep}\pysigline{\bfcode{krb5\_kdc\_rep}}
 
13053
\end{fulllineitems}
 
13054
 
 
13055
 
 
13056
Representation of the \emph{KDC-REP} protocol message.
 
13057
 
 
13058
 
 
13059
\paragraph{Declaration}
 
13060
\label{appdev/refs/types/krb5_kdc_rep:declaration}
 
13061
typedef struct \_krb5\_kdc\_rep  krb5\_kdc\_rep
 
13062
 
 
13063
 
 
13064
\paragraph{Members}
 
13065
\label{appdev/refs/types/krb5_kdc_rep:members}\index{krb5\_kdc\_rep.magic (C member)}
 
13066
 
 
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}
 
13070
 
 
13071
\index{krb5\_kdc\_rep.msg\_type (C member)}
 
13072
 
 
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.
 
13076
 
 
13077
\end{fulllineitems}
 
13078
 
 
13079
\index{krb5\_kdc\_rep.padata (C member)}
 
13080
 
 
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.
 
13084
 
 
13085
\end{fulllineitems}
 
13086
 
 
13087
\index{krb5\_kdc\_rep.client (C member)}
 
13088
 
 
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.
 
13092
 
 
13093
\end{fulllineitems}
 
13094
 
 
13095
\index{krb5\_kdc\_rep.ticket (C member)}
 
13096
 
 
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}}
 
13099
Ticket.
 
13100
 
 
13101
\end{fulllineitems}
 
13102
 
 
13103
\index{krb5\_kdc\_rep.enc\_part (C member)}
 
13104
 
 
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.
 
13108
 
 
13109
\end{fulllineitems}
 
13110
 
 
13111
\index{krb5\_kdc\_rep.enc\_part2 (C member)}
 
13112
 
 
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.
 
13116
 
 
13117
\end{fulllineitems}
 
13118
 
 
13119
 
 
13120
 
 
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)}
 
13123
 
 
13124
\begin{fulllineitems}
 
13125
\phantomsection\label{appdev/refs/types/krb5_kdc_req:krb5_kdc_req}\pysigline{\bfcode{krb5\_kdc\_req}}
 
13126
\end{fulllineitems}
 
13127
 
 
13128
 
 
13129
C representation of KDC-REQ protocol message, including KDC-REQ-BODY.
 
13130
 
 
13131
 
 
13132
\paragraph{Declaration}
 
13133
\label{appdev/refs/types/krb5_kdc_req:declaration}
 
13134
typedef struct \_krb5\_kdc\_req  krb5\_kdc\_req
 
13135
 
 
13136
 
 
13137
\paragraph{Members}
 
13138
\label{appdev/refs/types/krb5_kdc_req:members}\index{krb5\_kdc\_req.magic (C member)}
 
13139
 
 
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}
 
13143
 
 
13144
\index{krb5\_kdc\_req.msg\_type (C member)}
 
13145
 
 
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.
 
13149
 
 
13150
\end{fulllineitems}
 
13151
 
 
13152
\index{krb5\_kdc\_req.padata (C member)}
 
13153
 
 
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.
 
13157
 
 
13158
\end{fulllineitems}
 
13159
 
 
13160
\index{krb5\_kdc\_req.kdc\_options (C member)}
 
13161
 
 
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}}
 
13164
Requested options.
 
13165
 
 
13166
\end{fulllineitems}
 
13167
 
 
13168
\index{krb5\_kdc\_req.client (C member)}
 
13169
 
 
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.
 
13173
 
 
13174
\end{fulllineitems}
 
13175
 
 
13176
\index{krb5\_kdc\_req.server (C member)}
 
13177
 
 
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.
 
13181
 
 
13182
\end{fulllineitems}
 
13183
 
 
13184
\index{krb5\_kdc\_req.from (C member)}
 
13185
 
 
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.
 
13189
 
 
13190
\end{fulllineitems}
 
13191
 
 
13192
\index{krb5\_kdc\_req.till (C member)}
 
13193
 
 
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.
 
13197
 
 
13198
\end{fulllineitems}
 
13199
 
 
13200
\index{krb5\_kdc\_req.rtime (C member)}
 
13201
 
 
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.
 
13205
 
 
13206
\end{fulllineitems}
 
13207
 
 
13208
\index{krb5\_kdc\_req.nonce (C member)}
 
13209
 
 
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.
 
13213
 
 
13214
\end{fulllineitems}
 
13215
 
 
13216
\index{krb5\_kdc\_req.nktypes (C member)}
 
13217
 
 
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.
 
13221
 
 
13222
\end{fulllineitems}
 
13223
 
 
13224
\index{krb5\_kdc\_req.ktype (C member)}
 
13225
 
 
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.
 
13229
 
 
13230
\end{fulllineitems}
 
13231
 
 
13232
\index{krb5\_kdc\_req.addresses (C member)}
 
13233
 
 
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)
 
13237
 
 
13238
\end{fulllineitems}
 
13239
 
 
13240
\index{krb5\_kdc\_req.authorization\_data (C member)}
 
13241
 
 
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)
 
13245
 
 
13246
\end{fulllineitems}
 
13247
 
 
13248
\index{krb5\_kdc\_req.unenc\_authdata (C member)}
 
13249
 
 
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.
 
13253
 
 
13254
\end{fulllineitems}
 
13255
 
 
13256
\index{krb5\_kdc\_req.second\_ticket (C member)}
 
13257
 
 
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)
 
13261
 
 
13262
\end{fulllineitems}
 
13263
 
 
13264
 
 
13265
 
 
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)}
 
13268
 
 
13269
\begin{fulllineitems}
 
13270
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock}\pysigline{\bfcode{krb5\_keyblock}}
 
13271
\end{fulllineitems}
 
13272
 
 
13273
 
 
13274
Exposed contents of a key.
 
13275
 
 
13276
 
 
13277
\paragraph{Declaration}
 
13278
\label{appdev/refs/types/krb5_keyblock:declaration}
 
13279
typedef struct \_krb5\_keyblock  krb5\_keyblock
 
13280
 
 
13281
 
 
13282
\paragraph{Members}
 
13283
\label{appdev/refs/types/krb5_keyblock:members}\index{krb5\_keyblock.magic (C member)}
 
13284
 
 
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}
 
13288
 
 
13289
\index{krb5\_keyblock.enctype (C member)}
 
13290
 
 
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}
 
13294
 
 
13295
\index{krb5\_keyblock.length (C member)}
 
13296
 
 
13297
\begin{fulllineitems}
 
13298
\phantomsection\label{appdev/refs/types/krb5_keyblock:krb5_keyblock.length}\pysigline{unsigned int      \bfcode{krb5\_keyblock.length}}
 
13299
\end{fulllineitems}
 
13300
 
 
13301
\index{krb5\_keyblock.contents (C member)}
 
13302
 
 
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}
 
13306
 
 
13307
 
 
13308
 
 
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)}
 
13311
 
 
13312
\begin{fulllineitems}
 
13313
\phantomsection\label{appdev/refs/types/krb5_keytab_entry:krb5_keytab_entry}\pysigline{\bfcode{krb5\_keytab\_entry}}
 
13314
\end{fulllineitems}
 
13315
 
 
13316
 
 
13317
A key table entry.
 
13318
 
 
13319
 
 
13320
\paragraph{Declaration}
 
13321
\label{appdev/refs/types/krb5_keytab_entry:declaration}
 
13322
typedef struct krb5\_keytab\_entry\_st  krb5\_keytab\_entry
 
13323
 
 
13324
 
 
13325
\paragraph{Members}
 
13326
\label{appdev/refs/types/krb5_keytab_entry:members}\index{krb5\_keytab\_entry.magic (C member)}
 
13327
 
 
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}
 
13331
 
 
13332
\index{krb5\_keytab\_entry.principal (C member)}
 
13333
 
 
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.
 
13337
 
 
13338
\end{fulllineitems}
 
13339
 
 
13340
\index{krb5\_keytab\_entry.timestamp (C member)}
 
13341
 
 
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.
 
13345
 
 
13346
\end{fulllineitems}
 
13347
 
 
13348
\index{krb5\_keytab\_entry.vno (C member)}
 
13349
 
 
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.
 
13353
 
 
13354
\end{fulllineitems}
 
13355
 
 
13356
\index{krb5\_keytab\_entry.key (C member)}
 
13357
 
 
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}}
 
13360
The secret key.
 
13361
 
 
13362
\end{fulllineitems}
 
13363
 
 
13364
 
 
13365
 
 
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)}
 
13368
 
 
13369
\begin{fulllineitems}
 
13370
\phantomsection\label{appdev/refs/types/krb5_keyusage:krb5_keyusage}\pysigline{\bfcode{krb5\_keyusage}}
 
13371
\end{fulllineitems}
 
13372
 
 
13373
 
 
13374
 
 
13375
\paragraph{Declaration}
 
13376
\label{appdev/refs/types/krb5_keyusage:declaration}
 
13377
typedef krb5\_int32 krb5\_keyusage
 
13378
 
 
13379
 
 
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)}
 
13382
 
 
13383
\begin{fulllineitems}
 
13384
\phantomsection\label{appdev/refs/types/krb5_kt_cursor:krb5_kt_cursor}\pysigline{\bfcode{krb5\_kt\_cursor}}
 
13385
\end{fulllineitems}
 
13386
 
 
13387
 
 
13388
 
 
13389
\paragraph{Declaration}
 
13390
\label{appdev/refs/types/krb5_kt_cursor:declaration}
 
13391
typedef krb5\_pointer krb5\_kt\_cursor
 
13392
 
 
13393
 
 
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)}
 
13396
 
 
13397
\begin{fulllineitems}
 
13398
\phantomsection\label{appdev/refs/types/krb5_kvno:krb5_kvno}\pysigline{\bfcode{krb5\_kvno}}
 
13399
\end{fulllineitems}
 
13400
 
 
13401
 
 
13402
 
 
13403
\paragraph{Declaration}
 
13404
\label{appdev/refs/types/krb5_kvno:declaration}
 
13405
typedef unsigned int krb5\_kvno
 
13406
 
 
13407
 
 
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)}
 
13410
 
 
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}
 
13414
 
 
13415
 
 
13416
Last request entry.
 
13417
 
 
13418
 
 
13419
\paragraph{Declaration}
 
13420
\label{appdev/refs/types/krb5_last_req_entry:declaration}
 
13421
typedef struct \_krb5\_last\_req\_entry  krb5\_last\_req\_entry
 
13422
 
 
13423
 
 
13424
\paragraph{Members}
 
13425
\label{appdev/refs/types/krb5_last_req_entry:members}\index{krb5\_last\_req\_entry.magic (C member)}
 
13426
 
 
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}
 
13430
 
 
13431
\index{krb5\_last\_req\_entry.lr\_type (C member)}
 
13432
 
 
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}}
 
13435
LR type.
 
13436
 
 
13437
\end{fulllineitems}
 
13438
 
 
13439
\index{krb5\_last\_req\_entry.value (C member)}
 
13440
 
 
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}}
 
13443
Timestamp.
 
13444
 
 
13445
\end{fulllineitems}
 
13446
 
 
13447
 
 
13448
 
 
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)}
 
13451
 
 
13452
\begin{fulllineitems}
 
13453
\phantomsection\label{appdev/refs/types/krb5_magic:krb5_magic}\pysigline{\bfcode{krb5\_magic}}
 
13454
\end{fulllineitems}
 
13455
 
 
13456
 
 
13457
 
 
13458
\paragraph{Declaration}
 
13459
\label{appdev/refs/types/krb5_magic:declaration}
 
13460
typedef krb5\_error\_code krb5\_magic
 
13461
 
 
13462
 
 
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)}
 
13465
 
 
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}
 
13469
 
 
13470
 
 
13471
Type of function used as a callback to generate checksum data for mk\_req.
 
13472
 
 
13473
 
 
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 **)
 
13477
 
 
13478
 
 
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)}
 
13481
 
 
13482
\begin{fulllineitems}
 
13483
\phantomsection\label{appdev/refs/types/krb5_msgtype:krb5_msgtype}\pysigline{\bfcode{krb5\_msgtype}}
 
13484
\end{fulllineitems}
 
13485
 
 
13486
 
 
13487
 
 
13488
\paragraph{Declaration}
 
13489
\label{appdev/refs/types/krb5_msgtype:declaration}
 
13490
typedef unsigned int krb5\_msgtype
 
13491
 
 
13492
 
 
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)}
 
13495
 
 
13496
\begin{fulllineitems}
 
13497
\phantomsection\label{appdev/refs/types/krb5_octet:krb5_octet}\pysigline{\bfcode{krb5\_octet}}
 
13498
\end{fulllineitems}
 
13499
 
 
13500
 
 
13501
 
 
13502
\paragraph{Declaration}
 
13503
\label{appdev/refs/types/krb5_octet:declaration}
 
13504
typedef unsigned char krb5\_octet
 
13505
 
 
13506
 
 
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)}
 
13509
 
 
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}
 
13513
 
 
13514
 
 
13515
 
 
13516
\paragraph{Declaration}
 
13517
\label{appdev/refs/types/krb5_pa_pac_req:declaration}
 
13518
typedef struct \_krb5\_pa\_pac\_req  krb5\_pa\_pac\_req
 
13519
 
 
13520
 
 
13521
\paragraph{Members}
 
13522
\label{appdev/refs/types/krb5_pa_pac_req:members}\index{krb5\_pa\_pac\_req.include\_pac (C member)}
 
13523
 
 
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.
 
13527
 
 
13528
\end{fulllineitems}
 
13529
 
 
13530
 
 
13531
 
 
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)}
 
13534
 
 
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}
 
13538
 
 
13539
 
 
13540
 
 
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
 
13544
 
 
13545
 
 
13546
\paragraph{Members}
 
13547
\label{appdev/refs/types/krb5_pa_server_referral_data:members}\index{krb5\_pa\_server\_referral\_data.referred\_realm (C member)}
 
13548
 
 
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}
 
13552
 
 
13553
\index{krb5\_pa\_server\_referral\_data.true\_principal\_name (C member)}
 
13554
 
 
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}
 
13558
 
 
13559
\index{krb5\_pa\_server\_referral\_data.requested\_principal\_name (C member)}
 
13560
 
 
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}
 
13564
 
 
13565
\index{krb5\_pa\_server\_referral\_data.referral\_valid\_until (C member)}
 
13566
 
 
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}
 
13570
 
 
13571
\index{krb5\_pa\_server\_referral\_data.rep\_cksum (C member)}
 
13572
 
 
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}
 
13576
 
 
13577
 
 
13578
 
 
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)}
 
13581
 
 
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}
 
13585
 
 
13586
 
 
13587
 
 
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
 
13591
 
 
13592
 
 
13593
\paragraph{Members}
 
13594
\label{appdev/refs/types/krb5_pa_svr_referral_data:members}\index{krb5\_pa\_svr\_referral\_data.principal (C member)}
 
13595
 
 
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.
 
13599
 
 
13600
\end{fulllineitems}
 
13601
 
 
13602
 
 
13603
 
 
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)}
 
13606
 
 
13607
\begin{fulllineitems}
 
13608
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data}\pysigline{\bfcode{krb5\_pa\_data}}
 
13609
\end{fulllineitems}
 
13610
 
 
13611
 
 
13612
Pre-authentication data.
 
13613
 
 
13614
 
 
13615
\paragraph{Declaration}
 
13616
\label{appdev/refs/types/krb5_pa_data:declaration}
 
13617
typedef struct \_krb5\_pa\_data  krb5\_pa\_data
 
13618
 
 
13619
 
 
13620
\paragraph{Members}
 
13621
\label{appdev/refs/types/krb5_pa_data:members}\index{krb5\_pa\_data.magic (C member)}
 
13622
 
 
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}
 
13626
 
 
13627
\index{krb5\_pa\_data.pa\_type (C member)}
 
13628
 
 
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.
 
13632
 
 
13633
\end{fulllineitems}
 
13634
 
 
13635
\index{krb5\_pa\_data.length (C member)}
 
13636
 
 
13637
\begin{fulllineitems}
 
13638
\phantomsection\label{appdev/refs/types/krb5_pa_data:krb5_pa_data.length}\pysigline{unsigned int      \bfcode{krb5\_pa\_data.length}}
 
13639
Length of data.
 
13640
 
 
13641
\end{fulllineitems}
 
13642
 
 
13643
\index{krb5\_pa\_data.contents (C member)}
 
13644
 
 
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}}
 
13647
Data.
 
13648
 
 
13649
\end{fulllineitems}
 
13650
 
 
13651
 
 
13652
 
 
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)}
 
13655
 
 
13656
\begin{fulllineitems}
 
13657
\phantomsection\label{appdev/refs/types/krb5_pointer:krb5_pointer}\pysigline{\bfcode{krb5\_pointer}}
 
13658
\end{fulllineitems}
 
13659
 
 
13660
 
 
13661
 
 
13662
\paragraph{Declaration}
 
13663
\label{appdev/refs/types/krb5_pointer:declaration}
 
13664
typedef void* krb5\_pointer
 
13665
 
 
13666
 
 
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)}
 
13669
 
 
13670
\begin{fulllineitems}
 
13671
\phantomsection\label{appdev/refs/types/krb5_preauthtype:krb5_preauthtype}\pysigline{\bfcode{krb5\_preauthtype}}
 
13672
\end{fulllineitems}
 
13673
 
 
13674
 
 
13675
 
 
13676
\paragraph{Declaration}
 
13677
\label{appdev/refs/types/krb5_preauthtype:declaration}
 
13678
typedef krb5\_int32 krb5\_preauthtype
 
13679
 
 
13680
 
 
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)}
 
13683
 
 
13684
\begin{fulllineitems}
 
13685
\phantomsection\label{appdev/refs/types/krb5_principal:krb5_principal}\pysigline{\bfcode{krb5\_principal}}
 
13686
\end{fulllineitems}
 
13687
 
 
13688
 
 
13689
 
 
13690
\paragraph{Declaration}
 
13691
\label{appdev/refs/types/krb5_principal:declaration}
 
13692
typedef krb5\_principal\_data* krb5\_principal
 
13693
 
 
13694
 
 
13695
\paragraph{Members}
 
13696
\label{appdev/refs/types/krb5_principal:members}\index{krb5\_principal.magic (C member)}
 
13697
 
 
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}
 
13701
 
 
13702
\index{krb5\_principal.realm (C member)}
 
13703
 
 
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}
 
13707
 
 
13708
\index{krb5\_principal.data (C member)}
 
13709
 
 
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.
 
13713
 
 
13714
\end{fulllineitems}
 
13715
 
 
13716
\index{krb5\_principal.length (C member)}
 
13717
 
 
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}
 
13721
 
 
13722
\index{krb5\_principal.type (C member)}
 
13723
 
 
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}
 
13727
 
 
13728
 
 
13729
 
 
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)}
 
13732
 
 
13733
\begin{fulllineitems}
 
13734
\phantomsection\label{appdev/refs/types/krb5_principal_data:krb5_principal_data}\pysigline{\bfcode{krb5\_principal\_data}}
 
13735
\end{fulllineitems}
 
13736
 
 
13737
 
 
13738
 
 
13739
\paragraph{Declaration}
 
13740
\label{appdev/refs/types/krb5_principal_data:declaration}
 
13741
typedef struct krb5\_principal\_data  krb5\_principal\_data
 
13742
 
 
13743
 
 
13744
\paragraph{Members}
 
13745
\label{appdev/refs/types/krb5_principal_data:members}\index{krb5\_principal\_data.magic (C member)}
 
13746
 
 
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}
 
13750
 
 
13751
\index{krb5\_principal\_data.realm (C member)}
 
13752
 
 
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}
 
13756
 
 
13757
\index{krb5\_principal\_data.data (C member)}
 
13758
 
 
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.
 
13762
 
 
13763
\end{fulllineitems}
 
13764
 
 
13765
\index{krb5\_principal\_data.length (C member)}
 
13766
 
 
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}
 
13770
 
 
13771
\index{krb5\_principal\_data.type (C member)}
 
13772
 
 
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}
 
13776
 
 
13777
 
 
13778
 
 
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)}
 
13781
 
 
13782
\begin{fulllineitems}
 
13783
\phantomsection\label{appdev/refs/types/krb5_const_principal:krb5_const_principal}\pysigline{\bfcode{krb5\_const\_principal}}
 
13784
\end{fulllineitems}
 
13785
 
 
13786
 
 
13787
Constant version of {\hyperref[appdev/refs/types/krb5_principal_data:krb5_principal_data]{\code{krb5\_principal\_data}}} .
 
13788
 
 
13789
 
 
13790
\paragraph{Declaration}
 
13791
\label{appdev/refs/types/krb5_const_principal:declaration}
 
13792
typedef const krb5\_principal\_data* krb5\_const\_principal
 
13793
 
 
13794
 
 
13795
\paragraph{Members}
 
13796
\label{appdev/refs/types/krb5_const_principal:members}\index{krb5\_const\_principal.magic (C member)}
 
13797
 
 
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}
 
13801
 
 
13802
\index{krb5\_const\_principal.realm (C member)}
 
13803
 
 
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}
 
13807
 
 
13808
\index{krb5\_const\_principal.data (C member)}
 
13809
 
 
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.
 
13813
 
 
13814
\end{fulllineitems}
 
13815
 
 
13816
\index{krb5\_const\_principal.length (C member)}
 
13817
 
 
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}
 
13821
 
 
13822
\index{krb5\_const\_principal.type (C member)}
 
13823
 
 
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}
 
13827
 
 
13828
 
 
13829
 
 
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)}
 
13832
 
 
13833
\begin{fulllineitems}
 
13834
\phantomsection\label{appdev/refs/types/krb5_prompt:krb5_prompt}\pysigline{\bfcode{krb5\_prompt}}
 
13835
\end{fulllineitems}
 
13836
 
 
13837
 
 
13838
Text for prompt used in prompter callback function.
 
13839
 
 
13840
 
 
13841
\paragraph{Declaration}
 
13842
\label{appdev/refs/types/krb5_prompt:declaration}
 
13843
typedef struct \_krb5\_prompt  krb5\_prompt
 
13844
 
 
13845
 
 
13846
\paragraph{Members}
 
13847
\label{appdev/refs/types/krb5_prompt:members}\index{krb5\_prompt.prompt (C member)}
 
13848
 
 
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.
 
13852
 
 
13853
\end{fulllineitems}
 
13854
 
 
13855
\index{krb5\_prompt.hidden (C member)}
 
13856
 
 
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.
 
13860
PIN)
 
13861
 
 
13862
\end{fulllineitems}
 
13863
 
 
13864
\index{krb5\_prompt.reply (C member)}
 
13865
 
 
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.
 
13869
 
 
13870
\end{fulllineitems}
 
13871
 
 
13872
 
 
13873
 
 
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)}
 
13876
 
 
13877
\begin{fulllineitems}
 
13878
\phantomsection\label{appdev/refs/types/krb5_prompt_type:krb5_prompt_type}\pysigline{\bfcode{krb5\_prompt\_type}}
 
13879
\end{fulllineitems}
 
13880
 
 
13881
 
 
13882
 
 
13883
\paragraph{Declaration}
 
13884
\label{appdev/refs/types/krb5_prompt_type:declaration}
 
13885
typedef krb5\_int32 krb5\_prompt\_type
 
13886
 
 
13887
 
 
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)}
 
13890
 
 
13891
\begin{fulllineitems}
 
13892
\phantomsection\label{appdev/refs/types/krb5_prompter_fct:krb5_prompter_fct}\pysigline{\bfcode{krb5\_prompter\_fct}}
 
13893
\end{fulllineitems}
 
13894
 
 
13895
 
 
13896
Pointer to a prompter callback function.
 
13897
 
 
13898
 
 
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{[}{]})
 
13902
 
 
13903
 
 
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)}
 
13906
 
 
13907
\begin{fulllineitems}
 
13908
\phantomsection\label{appdev/refs/types/krb5_pwd_data:krb5_pwd_data}\pysigline{\bfcode{krb5\_pwd\_data}}
 
13909
\end{fulllineitems}
 
13910
 
 
13911
 
 
13912
 
 
13913
\paragraph{Declaration}
 
13914
\label{appdev/refs/types/krb5_pwd_data:declaration}
 
13915
typedef struct \_krb5\_pwd\_data  krb5\_pwd\_data
 
13916
 
 
13917
 
 
13918
\paragraph{Members}
 
13919
\label{appdev/refs/types/krb5_pwd_data:members}\index{krb5\_pwd\_data.magic (C member)}
 
13920
 
 
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}
 
13924
 
 
13925
\index{krb5\_pwd\_data.sequence\_count (C member)}
 
13926
 
 
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}
 
13930
 
 
13931
\index{krb5\_pwd\_data.element (C member)}
 
13932
 
 
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}
 
13936
 
 
13937
 
 
13938
 
 
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)}
 
13941
 
 
13942
\begin{fulllineitems}
 
13943
\phantomsection\label{appdev/refs/types/krb5_responder_fn:krb5_responder_fn}\pysigline{\bfcode{krb5\_responder\_fn}}
 
13944
\end{fulllineitems}
 
13945
 
 
13946
 
 
13947
Responder function for an initial credential exchange.
 
13948
 
 
13949
If a required question is unanswered, the prompter may be called.
 
13950
 
 
13951
 
 
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)
 
13955
 
 
13956
 
 
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)}
 
13959
 
 
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}
 
13963
 
 
13964
 
 
13965
 
 
13966
\paragraph{Declaration}
 
13967
\label{appdev/refs/types/krb5_responder_otp_challenge:declaration}
 
13968
typedef struct \_krb5\_responder\_otp\_challenge  krb5\_responder\_otp\_challenge
 
13969
 
 
13970
 
 
13971
\paragraph{Members}
 
13972
\label{appdev/refs/types/krb5_responder_otp_challenge:members}\index{krb5\_responder\_otp\_challenge.service (C member)}
 
13973
 
 
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}
 
13977
 
 
13978
\index{krb5\_responder\_otp\_challenge.tokeninfo (C member)}
 
13979
 
 
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}
 
13983
 
 
13984
 
 
13985
 
 
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)}
 
13988
 
 
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}
 
13992
 
 
13993
 
 
13994
 
 
13995
\paragraph{Declaration}
 
13996
\label{appdev/refs/types/krb5_responder_otp_tokeninfo:declaration}
 
13997
typedef struct \_krb5\_responder\_otp\_tokeninfo  krb5\_responder\_otp\_tokeninfo
 
13998
 
 
13999
 
 
14000
\paragraph{Members}
 
14001
\label{appdev/refs/types/krb5_responder_otp_tokeninfo:members}\index{krb5\_responder\_otp\_tokeninfo.flags (C member)}
 
14002
 
 
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}
 
14006
 
 
14007
\index{krb5\_responder\_otp\_tokeninfo.format (C member)}
 
14008
 
 
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}
 
14012
 
 
14013
\index{krb5\_responder\_otp\_tokeninfo.length (C member)}
 
14014
 
 
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}
 
14018
 
 
14019
\index{krb5\_responder\_otp\_tokeninfo.vendor (C member)}
 
14020
 
 
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}
 
14024
 
 
14025
\index{krb5\_responder\_otp\_tokeninfo.challenge (C member)}
 
14026
 
 
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}
 
14030
 
 
14031
\index{krb5\_responder\_otp\_tokeninfo.token\_id (C member)}
 
14032
 
 
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}
 
14036
 
 
14037
\index{krb5\_responder\_otp\_tokeninfo.alg\_id (C member)}
 
14038
 
 
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}
 
14042
 
 
14043
 
 
14044
 
 
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)}
 
14047
 
 
14048
\begin{fulllineitems}
 
14049
\phantomsection\label{appdev/refs/types/krb5_response:krb5_response}\pysigline{\bfcode{krb5\_response}}
 
14050
\end{fulllineitems}
 
14051
 
 
14052
 
 
14053
 
 
14054
\paragraph{Declaration}
 
14055
\label{appdev/refs/types/krb5_response:declaration}
 
14056
typedef struct \_krb5\_response  krb5\_response
 
14057
 
 
14058
 
 
14059
\paragraph{Members}
 
14060
\label{appdev/refs/types/krb5_response:members}\index{krb5\_response.magic (C member)}
 
14061
 
 
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}
 
14065
 
 
14066
\index{krb5\_response.message\_type (C member)}
 
14067
 
 
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}
 
14071
 
 
14072
\index{krb5\_response.response (C member)}
 
14073
 
 
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}
 
14077
 
 
14078
\index{krb5\_response.expected\_nonce (C member)}
 
14079
 
 
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}
 
14083
 
 
14084
\index{krb5\_response.request\_time (C member)}
 
14085
 
 
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}
 
14089
 
 
14090
 
 
14091
 
 
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)}
 
14094
 
 
14095
\begin{fulllineitems}
 
14096
\phantomsection\label{appdev/refs/types/krb5_replay_data:krb5_replay_data}\pysigline{\bfcode{krb5\_replay\_data}}
 
14097
\end{fulllineitems}
 
14098
 
 
14099
 
 
14100
Replay data.
 
14101
 
 
14102
Sequence number and timestamp information output by \code{krb5\_rd\_priv()} and \code{krb5\_rd\_safe()} .
 
14103
 
 
14104
 
 
14105
\paragraph{Declaration}
 
14106
\label{appdev/refs/types/krb5_replay_data:declaration}
 
14107
typedef struct krb5\_replay\_data  krb5\_replay\_data
 
14108
 
 
14109
 
 
14110
\paragraph{Members}
 
14111
\label{appdev/refs/types/krb5_replay_data:members}\index{krb5\_replay\_data.timestamp (C member)}
 
14112
 
 
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.
 
14116
 
 
14117
\end{fulllineitems}
 
14118
 
 
14119
\index{krb5\_replay\_data.usec (C member)}
 
14120
 
 
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.
 
14124
 
 
14125
\end{fulllineitems}
 
14126
 
 
14127
\index{krb5\_replay\_data.seq (C member)}
 
14128
 
 
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}}
 
14131
Sequence number.
 
14132
 
 
14133
\end{fulllineitems}
 
14134
 
 
14135
 
 
14136
 
 
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)}
 
14139
 
 
14140
\begin{fulllineitems}
 
14141
\phantomsection\label{appdev/refs/types/krb5_ticket:krb5_ticket}\pysigline{\bfcode{krb5\_ticket}}
 
14142
\end{fulllineitems}
 
14143
 
 
14144
 
 
14145
Ticket structure.
 
14146
 
 
14147
The C representation of the ticket message, with a pointer to the C representation of the encrypted part.
 
14148
 
 
14149
 
 
14150
\paragraph{Declaration}
 
14151
\label{appdev/refs/types/krb5_ticket:declaration}
 
14152
typedef struct \_krb5\_ticket  krb5\_ticket
 
14153
 
 
14154
 
 
14155
\paragraph{Members}
 
14156
\label{appdev/refs/types/krb5_ticket:members}\index{krb5\_ticket.magic (C member)}
 
14157
 
 
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}
 
14161
 
 
14162
\index{krb5\_ticket.server (C member)}
 
14163
 
 
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}}
 
14166
server name/realm
 
14167
 
 
14168
\end{fulllineitems}
 
14169
 
 
14170
\index{krb5\_ticket.enc\_part (C member)}
 
14171
 
 
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
 
14175
 
 
14176
\end{fulllineitems}
 
14177
 
 
14178
\index{krb5\_ticket.enc\_part2 (C member)}
 
14179
 
 
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
 
14183
 
 
14184
\end{fulllineitems}
 
14185
 
 
14186
 
 
14187
 
 
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)}
 
14190
 
 
14191
\begin{fulllineitems}
 
14192
\phantomsection\label{appdev/refs/types/krb5_ticket_times:krb5_ticket_times}\pysigline{\bfcode{krb5\_ticket\_times}}
 
14193
\end{fulllineitems}
 
14194
 
 
14195
 
 
14196
Ticket start time, end time, and renewal duration.
 
14197
 
 
14198
 
 
14199
\paragraph{Declaration}
 
14200
\label{appdev/refs/types/krb5_ticket_times:declaration}
 
14201
typedef struct \_krb5\_ticket\_times  krb5\_ticket\_times
 
14202
 
 
14203
 
 
14204
\paragraph{Members}
 
14205
\label{appdev/refs/types/krb5_ticket_times:members}\index{krb5\_ticket\_times.authtime (C member)}
 
14206
 
 
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.
 
14210
 
 
14211
\end{fulllineitems}
 
14212
 
 
14213
\index{krb5\_ticket\_times.starttime (C member)}
 
14214
 
 
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}
 
14218
 
 
14219
\end{fulllineitems}
 
14220
 
 
14221
\index{krb5\_ticket\_times.endtime (C member)}
 
14222
 
 
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.
 
14226
 
 
14227
\end{fulllineitems}
 
14228
 
 
14229
\index{krb5\_ticket\_times.renew\_till (C member)}
 
14230
 
 
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.
 
14234
 
 
14235
\end{fulllineitems}
 
14236
 
 
14237
 
 
14238
 
 
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)}
 
14241
 
 
14242
\begin{fulllineitems}
 
14243
\phantomsection\label{appdev/refs/types/krb5_timestamp:krb5_timestamp}\pysigline{\bfcode{krb5\_timestamp}}
 
14244
\end{fulllineitems}
 
14245
 
 
14246
 
 
14247
 
 
14248
\paragraph{Declaration}
 
14249
\label{appdev/refs/types/krb5_timestamp:declaration}
 
14250
typedef krb5\_int32 krb5\_timestamp
 
14251
 
 
14252
 
 
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)}
 
14255
 
 
14256
\begin{fulllineitems}
 
14257
\phantomsection\label{appdev/refs/types/krb5_tkt_authent:krb5_tkt_authent}\pysigline{\bfcode{krb5\_tkt\_authent}}
 
14258
\end{fulllineitems}
 
14259
 
 
14260
 
 
14261
Ticket authentication data.
 
14262
 
 
14263
 
 
14264
\paragraph{Declaration}
 
14265
\label{appdev/refs/types/krb5_tkt_authent:declaration}
 
14266
typedef struct \_krb5\_tkt\_authent  krb5\_tkt\_authent
 
14267
 
 
14268
 
 
14269
\paragraph{Members}
 
14270
\label{appdev/refs/types/krb5_tkt_authent:members}\index{krb5\_tkt\_authent.magic (C member)}
 
14271
 
 
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}
 
14275
 
 
14276
\index{krb5\_tkt\_authent.ticket (C member)}
 
14277
 
 
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}
 
14281
 
 
14282
\index{krb5\_tkt\_authent.authenticator (C member)}
 
14283
 
 
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}
 
14287
 
 
14288
\index{krb5\_tkt\_authent.ap\_options (C member)}
 
14289
 
 
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}
 
14293
 
 
14294
 
 
14295
 
 
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)}
 
14298
 
 
14299
\begin{fulllineitems}
 
14300
\phantomsection\label{appdev/refs/types/krb5_trace_callback:krb5_trace_callback}\pysigline{\bfcode{krb5\_trace\_callback}}
 
14301
\end{fulllineitems}
 
14302
 
 
14303
 
 
14304
 
 
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)
 
14308
 
 
14309
 
 
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)}
 
14312
 
 
14313
\begin{fulllineitems}
 
14314
\phantomsection\label{appdev/refs/types/krb5_trace_info:krb5_trace_info}\pysigline{\bfcode{krb5\_trace\_info}}
 
14315
\end{fulllineitems}
 
14316
 
 
14317
 
 
14318
A wrapper for passing information to a \emph{krb5\_trace\_callback} .
 
14319
 
 
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.
 
14321
 
 
14322
 
 
14323
\paragraph{Declaration}
 
14324
\label{appdev/refs/types/krb5_trace_info:declaration}
 
14325
typedef struct \_krb5\_trace\_info  krb5\_trace\_info
 
14326
 
 
14327
 
 
14328
\paragraph{Members}
 
14329
\label{appdev/refs/types/krb5_trace_info:members}\index{krb5\_trace\_info.message (C member)}
 
14330
 
 
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}
 
14334
 
 
14335
 
 
14336
 
 
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)}
 
14339
 
 
14340
\begin{fulllineitems}
 
14341
\phantomsection\label{appdev/refs/types/krb5_transited:krb5_transited}\pysigline{\bfcode{krb5\_transited}}
 
14342
\end{fulllineitems}
 
14343
 
 
14344
 
 
14345
Structure for transited encoding.
 
14346
 
 
14347
 
 
14348
\paragraph{Declaration}
 
14349
\label{appdev/refs/types/krb5_transited:declaration}
 
14350
typedef struct \_krb5\_transited  krb5\_transited
 
14351
 
 
14352
 
 
14353
\paragraph{Members}
 
14354
\label{appdev/refs/types/krb5_transited:members}\index{krb5\_transited.magic (C member)}
 
14355
 
 
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}
 
14359
 
 
14360
\index{krb5\_transited.tr\_type (C member)}
 
14361
 
 
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.
 
14365
 
 
14366
\end{fulllineitems}
 
14367
 
 
14368
\index{krb5\_transited.tr\_contents (C member)}
 
14369
 
 
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}}
 
14372
Contents.
 
14373
 
 
14374
\end{fulllineitems}
 
14375
 
 
14376
 
 
14377
 
 
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)}
 
14380
 
 
14381
\begin{fulllineitems}
 
14382
\phantomsection\label{appdev/refs/types/krb5_typed_data:krb5_typed_data}\pysigline{\bfcode{krb5\_typed\_data}}
 
14383
\end{fulllineitems}
 
14384
 
 
14385
 
 
14386
 
 
14387
\paragraph{Declaration}
 
14388
\label{appdev/refs/types/krb5_typed_data:declaration}
 
14389
typedef struct \_krb5\_typed\_data  krb5\_typed\_data
 
14390
 
 
14391
 
 
14392
\paragraph{Members}
 
14393
\label{appdev/refs/types/krb5_typed_data:members}\index{krb5\_typed\_data.magic (C member)}
 
14394
 
 
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}
 
14398
 
 
14399
\index{krb5\_typed\_data.type (C member)}
 
14400
 
 
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}
 
14404
 
 
14405
\index{krb5\_typed\_data.length (C member)}
 
14406
 
 
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}
 
14410
 
 
14411
\index{krb5\_typed\_data.data (C member)}
 
14412
 
 
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}
 
14416
 
 
14417
 
 
14418
 
 
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)}
 
14421
 
 
14422
\begin{fulllineitems}
 
14423
\phantomsection\label{appdev/refs/types/krb5_ui_4:krb5_ui_4}\pysigline{\bfcode{krb5\_ui\_4}}
 
14424
\end{fulllineitems}
 
14425
 
 
14426
 
 
14427
krb5\_ui\_4 is an unsigned 32-bit integer type.
 
14428
 
 
14429
 
 
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)}
 
14432
 
 
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}
 
14436
 
 
14437
 
 
14438
 
 
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
 
14442
 
 
14443
 
 
14444
\paragraph{Members}
 
14445
\label{appdev/refs/types/krb5_verify_init_creds_opt:members}\index{krb5\_verify\_init\_creds\_opt.flags (C member)}
 
14446
 
 
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}
 
14450
 
 
14451
\index{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail (C member)}
 
14452
 
 
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}}
 
14455
boolean
 
14456
 
 
14457
\end{fulllineitems}
 
14458
 
 
14459
 
 
14460
 
 
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)}
 
14463
 
 
14464
\begin{fulllineitems}
 
14465
\phantomsection\label{appdev/refs/types/passwd_phrase_element:passwd_phrase_element}\pysigline{\bfcode{passwd\_phrase\_element}}
 
14466
\end{fulllineitems}
 
14467
 
 
14468
 
 
14469
 
 
14470
\paragraph{Declaration}
 
14471
\label{appdev/refs/types/passwd_phrase_element:declaration}
 
14472
typedef struct \_passwd\_phrase\_element  passwd\_phrase\_element
 
14473
 
 
14474
 
 
14475
\paragraph{Members}
 
14476
\label{appdev/refs/types/passwd_phrase_element:members}\index{passwd\_phrase\_element.magic (C member)}
 
14477
 
 
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}
 
14481
 
 
14482
\index{passwd\_phrase\_element.passwd (C member)}
 
14483
 
 
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}
 
14487
 
 
14488
\index{passwd\_phrase\_element.phrase (C member)}
 
14489
 
 
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}
 
14493
 
 
14494
 
 
14495
 
 
14496
\subsection{Internal}
 
14497
\label{appdev/refs/types/index:internal}
 
14498
 
 
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)}
 
14501
 
 
14502
\begin{fulllineitems}
 
14503
\phantomsection\label{appdev/refs/types/krb5_auth_context:krb5_auth_context}\pysigline{\bfcode{krb5\_auth\_context}}
 
14504
\end{fulllineitems}
 
14505
 
 
14506
 
 
14507
 
 
14508
\paragraph{Declaration}
 
14509
\label{appdev/refs/types/krb5_auth_context:declaration}
 
14510
typedef struct \_krb5\_auth\_context* krb5\_auth\_context
 
14511
 
 
14512
 
 
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)}
 
14515
 
 
14516
\begin{fulllineitems}
 
14517
\phantomsection\label{appdev/refs/types/krb5_cksumtype:krb5_cksumtype}\pysigline{\bfcode{krb5\_cksumtype}}
 
14518
\end{fulllineitems}
 
14519
 
 
14520
 
 
14521
 
 
14522
\paragraph{Declaration}
 
14523
\label{appdev/refs/types/krb5_cksumtype:declaration}
 
14524
typedef krb5\_int32 krb5\_cksumtype
 
14525
 
 
14526
 
 
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)}
 
14529
 
 
14530
\begin{fulllineitems}
 
14531
\phantomsection\label{appdev/refs/types/krb5_context:krb5_context}\pysigline{\bfcode{krb5\_context}}
 
14532
\end{fulllineitems}
 
14533
 
 
14534
 
 
14535
 
 
14536
\paragraph{Declaration}
 
14537
\label{appdev/refs/types/krb5_context:declaration}
 
14538
typedef struct \_krb5\_context* krb5\_context
 
14539
 
 
14540
 
 
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)}
 
14543
 
 
14544
\begin{fulllineitems}
 
14545
\phantomsection\label{appdev/refs/types/krb5_cc_cursor:krb5_cc_cursor}\pysigline{\bfcode{krb5\_cc\_cursor}}
 
14546
\end{fulllineitems}
 
14547
 
 
14548
 
 
14549
Cursor for sequential lookup.
 
14550
 
 
14551
 
 
14552
\paragraph{Declaration}
 
14553
\label{appdev/refs/types/krb5_cc_cursor:declaration}
 
14554
typedef krb5\_pointer krb5\_cc\_cursor
 
14555
 
 
14556
 
 
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)}
 
14559
 
 
14560
\begin{fulllineitems}
 
14561
\phantomsection\label{appdev/refs/types/krb5_ccache:krb5_ccache}\pysigline{\bfcode{krb5\_ccache}}
 
14562
\end{fulllineitems}
 
14563
 
 
14564
 
 
14565
 
 
14566
\paragraph{Declaration}
 
14567
\label{appdev/refs/types/krb5_ccache:declaration}
 
14568
typedef struct \_krb5\_ccache* krb5\_ccache
 
14569
 
 
14570
 
 
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)}
 
14573
 
 
14574
\begin{fulllineitems}
 
14575
\phantomsection\label{appdev/refs/types/krb5_cccol_cursor:krb5_cccol_cursor}\pysigline{\bfcode{krb5\_cccol\_cursor}}
 
14576
\end{fulllineitems}
 
14577
 
 
14578
 
 
14579
Cursor for iterating over all ccaches.
 
14580
 
 
14581
 
 
14582
\paragraph{Declaration}
 
14583
\label{appdev/refs/types/krb5_cccol_cursor:declaration}
 
14584
typedef struct \_krb5\_cccol\_cursor* krb5\_cccol\_cursor
 
14585
 
 
14586
 
 
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)}
 
14589
 
 
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}
 
14593
 
 
14594
 
 
14595
 
 
14596
\paragraph{Declaration}
 
14597
\label{appdev/refs/types/krb5_init_creds_context:declaration}
 
14598
typedef struct \_krb5\_init\_creds\_context* krb5\_init\_creds\_context
 
14599
 
 
14600
 
 
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)}
 
14603
 
 
14604
\begin{fulllineitems}
 
14605
\phantomsection\label{appdev/refs/types/krb5_key:krb5_key}\pysigline{\bfcode{krb5\_key}}
 
14606
\end{fulllineitems}
 
14607
 
 
14608
 
 
14609
Opaque identifier for a key.
 
14610
 
 
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.
 
14612
 
 
14613
 
 
14614
\paragraph{Declaration}
 
14615
\label{appdev/refs/types/krb5_key:declaration}
 
14616
typedef struct krb5\_key\_st* krb5\_key
 
14617
 
 
14618
 
 
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)}
 
14621
 
 
14622
\begin{fulllineitems}
 
14623
\phantomsection\label{appdev/refs/types/krb5_keytab:krb5_keytab}\pysigline{\bfcode{krb5\_keytab}}
 
14624
\end{fulllineitems}
 
14625
 
 
14626
 
 
14627
 
 
14628
\paragraph{Declaration}
 
14629
\label{appdev/refs/types/krb5_keytab:declaration}
 
14630
typedef struct \_krb5\_kt* krb5\_keytab
 
14631
 
 
14632
 
 
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)}
 
14635
 
 
14636
\begin{fulllineitems}
 
14637
\phantomsection\label{appdev/refs/types/krb5_pac:krb5_pac}\pysigline{\bfcode{krb5\_pac}}
 
14638
\end{fulllineitems}
 
14639
 
 
14640
 
 
14641
PAC data structure to convey authorization information.
 
14642
 
 
14643
 
 
14644
\paragraph{Declaration}
 
14645
\label{appdev/refs/types/krb5_pac:declaration}
 
14646
typedef struct krb5\_pac\_data* krb5\_pac
 
14647
 
 
14648
 
 
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)}
 
14651
 
 
14652
\begin{fulllineitems}
 
14653
\phantomsection\label{appdev/refs/types/krb5_rcache:krb5_rcache}\pysigline{\bfcode{krb5\_rcache}}
 
14654
\end{fulllineitems}
 
14655
 
 
14656
 
 
14657
 
 
14658
\paragraph{Declaration}
 
14659
\label{appdev/refs/types/krb5_rcache:declaration}
 
14660
typedef struct krb5\_rc\_st* krb5\_rcache
 
14661
 
 
14662
 
 
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)}
 
14665
 
 
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}
 
14669
 
 
14670
 
 
14671
 
 
14672
\paragraph{Declaration}
 
14673
\label{appdev/refs/types/krb5_tkt_creds_context:declaration}
 
14674
typedef struct \_krb5\_tkt\_creds\_context* krb5\_tkt\_creds\_context
 
14675
 
 
14676
 
 
14677
\section{krb5 simple macros}
 
14678
\label{appdev/refs/macros/index:krb5-simple-macros}\label{appdev/refs/macros/index::doc}
 
14679
 
 
14680
\subsection{Public}
 
14681
\label{appdev/refs/macros/index:public}
 
14682
 
 
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)}
 
14685
 
 
14686
\begin{fulllineitems}
 
14687
\phantomsection\label{appdev/refs/macros/ADDRTYPE_ADDRPORT:ADDRTYPE_ADDRPORT}\pysigline{\bfcode{ADDRTYPE\_ADDRPORT}}
 
14688
\end{fulllineitems}
 
14689
 
 
14690
 
 
14691
\begin{tabulary}{\linewidth}{|L|L|}
 
14692
\hline
 
14693
 
 
14694
\code{ADDRTYPE\_ADDRPORT}
 
14695
 & 
 
14696
\code{0x0100}
 
14697
\\\hline
 
14698
\end{tabulary}
 
14699
 
 
14700
 
 
14701
 
 
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)}
 
14704
 
 
14705
\begin{fulllineitems}
 
14706
\phantomsection\label{appdev/refs/macros/ADDRTYPE_CHAOS:ADDRTYPE_CHAOS}\pysigline{\bfcode{ADDRTYPE\_CHAOS}}
 
14707
\end{fulllineitems}
 
14708
 
 
14709
 
 
14710
\begin{tabulary}{\linewidth}{|L|L|}
 
14711
\hline
 
14712
 
 
14713
\code{ADDRTYPE\_CHAOS}
 
14714
 & 
 
14715
\code{0x0005}
 
14716
\\\hline
 
14717
\end{tabulary}
 
14718
 
 
14719
 
 
14720
 
 
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)}
 
14723
 
 
14724
\begin{fulllineitems}
 
14725
\phantomsection\label{appdev/refs/macros/ADDRTYPE_DDP:ADDRTYPE_DDP}\pysigline{\bfcode{ADDRTYPE\_DDP}}
 
14726
\end{fulllineitems}
 
14727
 
 
14728
 
 
14729
\begin{tabulary}{\linewidth}{|L|L|}
 
14730
\hline
 
14731
 
 
14732
\code{ADDRTYPE\_DDP}
 
14733
 & 
 
14734
\code{0x0010}
 
14735
\\\hline
 
14736
\end{tabulary}
 
14737
 
 
14738
 
 
14739
 
 
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)}
 
14742
 
 
14743
\begin{fulllineitems}
 
14744
\phantomsection\label{appdev/refs/macros/ADDRTYPE_INET:ADDRTYPE_INET}\pysigline{\bfcode{ADDRTYPE\_INET}}
 
14745
\end{fulllineitems}
 
14746
 
 
14747
 
 
14748
\begin{tabulary}{\linewidth}{|L|L|}
 
14749
\hline
 
14750
 
 
14751
\code{ADDRTYPE\_INET}
 
14752
 & 
 
14753
\code{0x0002}
 
14754
\\\hline
 
14755
\end{tabulary}
 
14756
 
 
14757
 
 
14758
 
 
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)}
 
14761
 
 
14762
\begin{fulllineitems}
 
14763
\phantomsection\label{appdev/refs/macros/ADDRTYPE_INET6:ADDRTYPE_INET6}\pysigline{\bfcode{ADDRTYPE\_INET6}}
 
14764
\end{fulllineitems}
 
14765
 
 
14766
 
 
14767
\begin{tabulary}{\linewidth}{|L|L|}
 
14768
\hline
 
14769
 
 
14770
\code{ADDRTYPE\_INET6}
 
14771
 & 
 
14772
\code{0x0018}
 
14773
\\\hline
 
14774
\end{tabulary}
 
14775
 
 
14776
 
 
14777
 
 
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)}
 
14780
 
 
14781
\begin{fulllineitems}
 
14782
\phantomsection\label{appdev/refs/macros/ADDRTYPE_IPPORT:ADDRTYPE_IPPORT}\pysigline{\bfcode{ADDRTYPE\_IPPORT}}
 
14783
\end{fulllineitems}
 
14784
 
 
14785
 
 
14786
\begin{tabulary}{\linewidth}{|L|L|}
 
14787
\hline
 
14788
 
 
14789
\code{ADDRTYPE\_IPPORT}
 
14790
 & 
 
14791
\code{0x0101}
 
14792
\\\hline
 
14793
\end{tabulary}
 
14794
 
 
14795
 
 
14796
 
 
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)}
 
14799
 
 
14800
\begin{fulllineitems}
 
14801
\phantomsection\label{appdev/refs/macros/ADDRTYPE_ISO:ADDRTYPE_ISO}\pysigline{\bfcode{ADDRTYPE\_ISO}}
 
14802
\end{fulllineitems}
 
14803
 
 
14804
 
 
14805
\begin{tabulary}{\linewidth}{|L|L|}
 
14806
\hline
 
14807
 
 
14808
\code{ADDRTYPE\_ISO}
 
14809
 & 
 
14810
\code{0x0007}
 
14811
\\\hline
 
14812
\end{tabulary}
 
14813
 
 
14814
 
 
14815
 
 
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)}
 
14818
 
 
14819
\begin{fulllineitems}
 
14820
\phantomsection\label{appdev/refs/macros/ADDRTYPE_IS_LOCAL:ADDRTYPE_IS_LOCAL}\pysigline{\bfcode{ADDRTYPE\_IS\_LOCAL}}
 
14821
\end{fulllineitems}
 
14822
 
 
14823
 
 
14824
\begin{tabulary}{\linewidth}{|L|L|}
 
14825
\hline
 
14826
 
 
14827
\code{ADDRTYPE\_IS\_LOCAL (addrtype)}
 
14828
 & 
 
14829
\code{(addrtype \& 0x8000)}
 
14830
\\\hline
 
14831
\end{tabulary}
 
14832
 
 
14833
 
 
14834
 
 
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)}
 
14837
 
 
14838
\begin{fulllineitems}
 
14839
\phantomsection\label{appdev/refs/macros/ADDRTYPE_NETBIOS:ADDRTYPE_NETBIOS}\pysigline{\bfcode{ADDRTYPE\_NETBIOS}}
 
14840
\end{fulllineitems}
 
14841
 
 
14842
 
 
14843
\begin{tabulary}{\linewidth}{|L|L|}
 
14844
\hline
 
14845
 
 
14846
\code{ADDRTYPE\_NETBIOS}
 
14847
 & 
 
14848
\code{0x0014}
 
14849
\\\hline
 
14850
\end{tabulary}
 
14851
 
 
14852
 
 
14853
 
 
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)}
 
14856
 
 
14857
\begin{fulllineitems}
 
14858
\phantomsection\label{appdev/refs/macros/ADDRTYPE_XNS:ADDRTYPE_XNS}\pysigline{\bfcode{ADDRTYPE\_XNS}}
 
14859
\end{fulllineitems}
 
14860
 
 
14861
 
 
14862
\begin{tabulary}{\linewidth}{|L|L|}
 
14863
\hline
 
14864
 
 
14865
\code{ADDRTYPE\_XNS}
 
14866
 & 
 
14867
\code{0x0006}
 
14868
\\\hline
 
14869
\end{tabulary}
 
14870
 
 
14871
 
 
14872
 
 
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)}
 
14875
 
 
14876
\begin{fulllineitems}
 
14877
\phantomsection\label{appdev/refs/macros/AD_TYPE_EXTERNAL:AD_TYPE_EXTERNAL}\pysigline{\bfcode{AD\_TYPE\_EXTERNAL}}
 
14878
\end{fulllineitems}
 
14879
 
 
14880
 
 
14881
\begin{tabulary}{\linewidth}{|L|L|}
 
14882
\hline
 
14883
 
 
14884
\code{AD\_TYPE\_EXTERNAL}
 
14885
 & 
 
14886
\code{0x4000}
 
14887
\\\hline
 
14888
\end{tabulary}
 
14889
 
 
14890
 
 
14891
 
 
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)}
 
14894
 
 
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}
 
14898
 
 
14899
 
 
14900
\begin{tabulary}{\linewidth}{|L|L|}
 
14901
\hline
 
14902
 
 
14903
\code{AD\_TYPE\_FIELD\_TYPE\_MASK}
 
14904
 & 
 
14905
\code{0x1fff}
 
14906
\\\hline
 
14907
\end{tabulary}
 
14908
 
 
14909
 
 
14910
 
 
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)}
 
14913
 
 
14914
\begin{fulllineitems}
 
14915
\phantomsection\label{appdev/refs/macros/AD_TYPE_REGISTERED:AD_TYPE_REGISTERED}\pysigline{\bfcode{AD\_TYPE\_REGISTERED}}
 
14916
\end{fulllineitems}
 
14917
 
 
14918
 
 
14919
\begin{tabulary}{\linewidth}{|L|L|}
 
14920
\hline
 
14921
 
 
14922
\code{AD\_TYPE\_REGISTERED}
 
14923
 & 
 
14924
\code{0x2000}
 
14925
\\\hline
 
14926
\end{tabulary}
 
14927
 
 
14928
 
 
14929
 
 
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)}
 
14932
 
 
14933
\begin{fulllineitems}
 
14934
\phantomsection\label{appdev/refs/macros/AD_TYPE_RESERVED:AD_TYPE_RESERVED}\pysigline{\bfcode{AD\_TYPE\_RESERVED}}
 
14935
\end{fulllineitems}
 
14936
 
 
14937
 
 
14938
\begin{tabulary}{\linewidth}{|L|L|}
 
14939
\hline
 
14940
 
 
14941
\code{AD\_TYPE\_RESERVED}
 
14942
 & 
 
14943
\code{0x8000}
 
14944
\\\hline
 
14945
\end{tabulary}
 
14946
 
 
14947
 
 
14948
 
 
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)}
 
14951
 
 
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}
 
14955
 
 
14956
 
 
14957
\begin{tabulary}{\linewidth}{|L|L|}
 
14958
\hline
 
14959
 
 
14960
\code{AP\_OPTS\_ETYPE\_NEGOTIATION}
 
14961
 & 
 
14962
\code{0x00000002}
 
14963
\\\hline
 
14964
\end{tabulary}
 
14965
 
 
14966
 
 
14967
 
 
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)}
 
14970
 
 
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}
 
14974
 
 
14975
 
 
14976
Perform a mutual authentication exchange.
 
14977
 
 
14978
\begin{tabulary}{\linewidth}{|L|L|}
 
14979
\hline
 
14980
 
 
14981
\code{AP\_OPTS\_MUTUAL\_REQUIRED}
 
14982
 & 
 
14983
\code{0x20000000}
 
14984
\\\hline
 
14985
\end{tabulary}
 
14986
 
 
14987
 
 
14988
 
 
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)}
 
14991
 
 
14992
\begin{fulllineitems}
 
14993
\phantomsection\label{appdev/refs/macros/AP_OPTS_RESERVED:AP_OPTS_RESERVED}\pysigline{\bfcode{AP\_OPTS\_RESERVED}}
 
14994
\end{fulllineitems}
 
14995
 
 
14996
 
 
14997
\begin{tabulary}{\linewidth}{|L|L|}
 
14998
\hline
 
14999
 
 
15000
\code{AP\_OPTS\_RESERVED}
 
15001
 & 
 
15002
\code{0x80000000}
 
15003
\\\hline
 
15004
\end{tabulary}
 
15005
 
 
15006
 
 
15007
 
 
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)}
 
15010
 
 
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}
 
15014
 
 
15015
 
 
15016
Use session key.
 
15017
 
 
15018
\begin{tabulary}{\linewidth}{|L|L|}
 
15019
\hline
 
15020
 
 
15021
\code{AP\_OPTS\_USE\_SESSION\_KEY}
 
15022
 & 
 
15023
\code{0x40000000}
 
15024
\\\hline
 
15025
\end{tabulary}
 
15026
 
 
15027
 
 
15028
 
 
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)}
 
15031
 
 
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}
 
15035
 
 
15036
 
 
15037
Generate a subsession key from the current session key obtained from the credentials.
 
15038
 
 
15039
\begin{tabulary}{\linewidth}{|L|L|}
 
15040
\hline
 
15041
 
 
15042
\code{AP\_OPTS\_USE\_SUBKEY}
 
15043
 & 
 
15044
\code{0x00000001}
 
15045
\\\hline
 
15046
\end{tabulary}
 
15047
 
 
15048
 
 
15049
 
 
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)}
 
15052
 
 
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}
 
15056
 
 
15057
 
 
15058
\begin{tabulary}{\linewidth}{|L|L|}
 
15059
\hline
 
15060
 
 
15061
\code{AP\_OPTS\_WIRE\_MASK}
 
15062
 & 
 
15063
\code{0xfffffff0}
 
15064
\\\hline
 
15065
\end{tabulary}
 
15066
 
 
15067
 
 
15068
 
 
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)}
 
15071
 
 
15072
\begin{fulllineitems}
 
15073
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:CKSUMTYPE_CMAC_CAMELLIA128}\pysigline{\bfcode{CKSUMTYPE\_CMAC\_CAMELLIA128}}
 
15074
\end{fulllineitems}
 
15075
 
 
15076
 
 
15077
\begin{tabulary}{\linewidth}{|L|L|}
 
15078
\hline
 
15079
 
 
15080
\code{CKSUMTYPE\_CMAC\_CAMELLIA128}
 
15081
 & 
 
15082
\code{0x0011}
 
15083
\\\hline
 
15084
\end{tabulary}
 
15085
 
 
15086
 
 
15087
 
 
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)}
 
15090
 
 
15091
\begin{fulllineitems}
 
15092
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:CKSUMTYPE_CMAC_CAMELLIA256}\pysigline{\bfcode{CKSUMTYPE\_CMAC\_CAMELLIA256}}
 
15093
\end{fulllineitems}
 
15094
 
 
15095
 
 
15096
\begin{tabulary}{\linewidth}{|L|L|}
 
15097
\hline
 
15098
 
 
15099
\code{CKSUMTYPE\_CMAC\_CAMELLIA256}
 
15100
 & 
 
15101
\code{0x0012}
 
15102
\\\hline
 
15103
\end{tabulary}
 
15104
 
 
15105
 
 
15106
 
 
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)}
 
15109
 
 
15110
\begin{fulllineitems}
 
15111
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_CRC32:CKSUMTYPE_CRC32}\pysigline{\bfcode{CKSUMTYPE\_CRC32}}
 
15112
\end{fulllineitems}
 
15113
 
 
15114
 
 
15115
\begin{tabulary}{\linewidth}{|L|L|}
 
15116
\hline
 
15117
 
 
15118
\code{CKSUMTYPE\_CRC32}
 
15119
 & 
 
15120
\code{0x0001}
 
15121
\\\hline
 
15122
\end{tabulary}
 
15123
 
 
15124
 
 
15125
 
 
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)}
 
15128
 
 
15129
\begin{fulllineitems}
 
15130
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_DESCBC:CKSUMTYPE_DESCBC}\pysigline{\bfcode{CKSUMTYPE\_DESCBC}}
 
15131
\end{fulllineitems}
 
15132
 
 
15133
 
 
15134
\begin{tabulary}{\linewidth}{|L|L|}
 
15135
\hline
 
15136
 
 
15137
\code{CKSUMTYPE\_DESCBC}
 
15138
 & 
 
15139
\code{0x0004}
 
15140
\\\hline
 
15141
\end{tabulary}
 
15142
 
 
15143
 
 
15144
 
 
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)}
 
15147
 
 
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}
 
15151
 
 
15152
 
 
15153
\begin{tabulary}{\linewidth}{|L|L|}
 
15154
\hline
 
15155
 
 
15156
\code{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}
 
15157
 & 
 
15158
\code{-138 /*Microsoft md5 hmac cksumtype*/}
 
15159
\\\hline
 
15160
\end{tabulary}
 
15161
 
 
15162
 
 
15163
 
 
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)}
 
15166
 
 
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}
 
15170
 
 
15171
 
 
15172
RFC 3962.
 
15173
 
 
15174
Used with ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96
 
15175
 
 
15176
\begin{tabulary}{\linewidth}{|L|L|}
 
15177
\hline
 
15178
 
 
15179
\code{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}
 
15180
 & 
 
15181
\code{0x000f}
 
15182
\\\hline
 
15183
\end{tabulary}
 
15184
 
 
15185
 
 
15186
 
 
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)}
 
15189
 
 
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}
 
15193
 
 
15194
 
 
15195
RFC 3962.
 
15196
 
 
15197
Used with ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96
 
15198
 
 
15199
\begin{tabulary}{\linewidth}{|L|L|}
 
15200
\hline
 
15201
 
 
15202
\code{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}
 
15203
 & 
 
15204
\code{0x0010}
 
15205
\\\hline
 
15206
\end{tabulary}
 
15207
 
 
15208
 
 
15209
 
 
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)}
 
15212
 
 
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}
 
15216
 
 
15217
 
 
15218
\begin{tabulary}{\linewidth}{|L|L|}
 
15219
\hline
 
15220
 
 
15221
\code{CKSUMTYPE\_HMAC\_SHA1\_DES3}
 
15222
 & 
 
15223
\code{0x000c}
 
15224
\\\hline
 
15225
\end{tabulary}
 
15226
 
 
15227
 
 
15228
 
 
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)}
 
15231
 
 
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}
 
15235
 
 
15236
 
 
15237
\begin{tabulary}{\linewidth}{|L|L|}
 
15238
\hline
 
15239
 
 
15240
\code{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}
 
15241
 & 
 
15242
\code{-137 /*Microsoft netlogon cksumtype*/}
 
15243
\\\hline
 
15244
\end{tabulary}
 
15245
 
 
15246
 
 
15247
 
 
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)}
 
15250
 
 
15251
\begin{fulllineitems}
 
15252
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_NIST_SHA:CKSUMTYPE_NIST_SHA}\pysigline{\bfcode{CKSUMTYPE\_NIST\_SHA}}
 
15253
\end{fulllineitems}
 
15254
 
 
15255
 
 
15256
\begin{tabulary}{\linewidth}{|L|L|}
 
15257
\hline
 
15258
 
 
15259
\code{CKSUMTYPE\_NIST\_SHA}
 
15260
 & 
 
15261
\code{0x0009}
 
15262
\\\hline
 
15263
\end{tabulary}
 
15264
 
 
15265
 
 
15266
 
 
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)}
 
15269
 
 
15270
\begin{fulllineitems}
 
15271
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_RSA_MD4:CKSUMTYPE_RSA_MD4}\pysigline{\bfcode{CKSUMTYPE\_RSA\_MD4}}
 
15272
\end{fulllineitems}
 
15273
 
 
15274
 
 
15275
\begin{tabulary}{\linewidth}{|L|L|}
 
15276
\hline
 
15277
 
 
15278
\code{CKSUMTYPE\_RSA\_MD4}
 
15279
 & 
 
15280
\code{0x0002}
 
15281
\\\hline
 
15282
\end{tabulary}
 
15283
 
 
15284
 
 
15285
 
 
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)}
 
15288
 
 
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}
 
15292
 
 
15293
 
 
15294
\begin{tabulary}{\linewidth}{|L|L|}
 
15295
\hline
 
15296
 
 
15297
\code{CKSUMTYPE\_RSA\_MD4\_DES}
 
15298
 & 
 
15299
\code{0x0003}
 
15300
\\\hline
 
15301
\end{tabulary}
 
15302
 
 
15303
 
 
15304
 
 
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)}
 
15307
 
 
15308
\begin{fulllineitems}
 
15309
\phantomsection\label{appdev/refs/macros/CKSUMTYPE_RSA_MD5:CKSUMTYPE_RSA_MD5}\pysigline{\bfcode{CKSUMTYPE\_RSA\_MD5}}
 
15310
\end{fulllineitems}
 
15311
 
 
15312
 
 
15313
\begin{tabulary}{\linewidth}{|L|L|}
 
15314
\hline
 
15315
 
 
15316
\code{CKSUMTYPE\_RSA\_MD5}
 
15317
 & 
 
15318
\code{0x0007}
 
15319
\\\hline
 
15320
\end{tabulary}
 
15321
 
 
15322
 
 
15323
 
 
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)}
 
15326
 
 
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}
 
15330
 
 
15331
 
 
15332
\begin{tabulary}{\linewidth}{|L|L|}
 
15333
\hline
 
15334
 
 
15335
\code{CKSUMTYPE\_RSA\_MD5\_DES}
 
15336
 & 
 
15337
\code{0x0008}
 
15338
\\\hline
 
15339
\end{tabulary}
 
15340
 
 
15341
 
 
15342
 
 
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)}
 
15345
 
 
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}
 
15349
 
 
15350
 
 
15351
RFC 3962.
 
15352
 
 
15353
\begin{tabulary}{\linewidth}{|L|L|}
 
15354
\hline
 
15355
 
 
15356
\code{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}
 
15357
 & 
 
15358
\code{0x0011}
 
15359
\\\hline
 
15360
\end{tabulary}
 
15361
 
 
15362
 
 
15363
 
 
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)}
 
15366
 
 
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}
 
15370
 
 
15371
 
 
15372
RFC 3962.
 
15373
 
 
15374
\begin{tabulary}{\linewidth}{|L|L|}
 
15375
\hline
 
15376
 
 
15377
\code{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}
 
15378
 & 
 
15379
\code{0x0012}
 
15380
\\\hline
 
15381
\end{tabulary}
 
15382
 
 
15383
 
 
15384
 
 
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)}
 
15387
 
 
15388
\begin{fulllineitems}
 
15389
\phantomsection\label{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:ENCTYPE_ARCFOUR_HMAC}\pysigline{\bfcode{ENCTYPE\_ARCFOUR\_HMAC}}
 
15390
\end{fulllineitems}
 
15391
 
 
15392
 
 
15393
\begin{tabulary}{\linewidth}{|L|L|}
 
15394
\hline
 
15395
 
 
15396
\code{ENCTYPE\_ARCFOUR\_HMAC}
 
15397
 & 
 
15398
\code{0x0017}
 
15399
\\\hline
 
15400
\end{tabulary}
 
15401
 
 
15402
 
 
15403
 
 
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)}
 
15406
 
 
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}
 
15410
 
 
15411
 
 
15412
\begin{tabulary}{\linewidth}{|L|L|}
 
15413
\hline
 
15414
 
 
15415
\code{ENCTYPE\_ARCFOUR\_HMAC\_EXP}
 
15416
 & 
 
15417
\code{0x0018}
 
15418
\\\hline
 
15419
\end{tabulary}
 
15420
 
 
15421
 
 
15422
 
 
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)}
 
15425
 
 
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}
 
15429
 
 
15430
 
 
15431
\begin{tabulary}{\linewidth}{|L|L|}
 
15432
\hline
 
15433
 
 
15434
\code{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}
 
15435
 & 
 
15436
\code{0x0019}
 
15437
\\\hline
 
15438
\end{tabulary}
 
15439
 
 
15440
 
 
15441
 
 
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)}
 
15444
 
 
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}
 
15448
 
 
15449
 
 
15450
\begin{tabulary}{\linewidth}{|L|L|}
 
15451
\hline
 
15452
 
 
15453
\code{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}
 
15454
 & 
 
15455
\code{0x001a}
 
15456
\\\hline
 
15457
\end{tabulary}
 
15458
 
 
15459
 
 
15460
 
 
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)}
 
15463
 
 
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}
 
15467
 
 
15468
 
 
15469
DES-3 cbc mode, CMS enveloped data.
 
15470
 
 
15471
\begin{tabulary}{\linewidth}{|L|L|}
 
15472
\hline
 
15473
 
 
15474
\code{ENCTYPE\_DES3\_CBC\_ENV}
 
15475
 & 
 
15476
\code{0x000f}
 
15477
\\\hline
 
15478
\end{tabulary}
 
15479
 
 
15480
 
 
15481
 
 
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)}
 
15484
 
 
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}
 
15488
 
 
15489
 
 
15490
\begin{tabulary}{\linewidth}{|L|L|}
 
15491
\hline
 
15492
 
 
15493
\code{ENCTYPE\_DES3\_CBC\_RAW}
 
15494
 & 
 
15495
\code{0x0006}
 
15496
\\\hline
 
15497
\end{tabulary}
 
15498
 
 
15499
 
 
15500
 
 
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)}
 
15503
 
 
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}
 
15507
 
 
15508
 
 
15509
\begin{tabulary}{\linewidth}{|L|L|}
 
15510
\hline
 
15511
 
 
15512
\code{ENCTYPE\_DES3\_CBC\_SHA}
 
15513
 & 
 
15514
\code{0x0005}
 
15515
\\\hline
 
15516
\end{tabulary}
 
15517
 
 
15518
 
 
15519
 
 
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)}
 
15522
 
 
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}
 
15526
 
 
15527
 
 
15528
\begin{tabulary}{\linewidth}{|L|L|}
 
15529
\hline
 
15530
 
 
15531
\code{ENCTYPE\_DES3\_CBC\_SHA1}
 
15532
 & 
 
15533
\code{0x0010}
 
15534
\\\hline
 
15535
\end{tabulary}
 
15536
 
 
15537
 
 
15538
 
 
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)}
 
15541
 
 
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}
 
15545
 
 
15546
 
 
15547
DES cbc mode with CRC-32.
 
15548
 
 
15549
\begin{tabulary}{\linewidth}{|L|L|}
 
15550
\hline
 
15551
 
 
15552
\code{ENCTYPE\_DES\_CBC\_CRC}
 
15553
 & 
 
15554
\code{0x0001}
 
15555
\\\hline
 
15556
\end{tabulary}
 
15557
 
 
15558
 
 
15559
 
 
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)}
 
15562
 
 
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}
 
15566
 
 
15567
 
 
15568
DES cbc mode with RSA-MD4.
 
15569
 
 
15570
\begin{tabulary}{\linewidth}{|L|L|}
 
15571
\hline
 
15572
 
 
15573
\code{ENCTYPE\_DES\_CBC\_MD4}
 
15574
 & 
 
15575
\code{0x0002}
 
15576
\\\hline
 
15577
\end{tabulary}
 
15578
 
 
15579
 
 
15580
 
 
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)}
 
15583
 
 
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}
 
15587
 
 
15588
 
 
15589
DES cbc mode with RSA-MD5.
 
15590
 
 
15591
\begin{tabulary}{\linewidth}{|L|L|}
 
15592
\hline
 
15593
 
 
15594
\code{ENCTYPE\_DES\_CBC\_MD5}
 
15595
 & 
 
15596
\code{0x0003}
 
15597
\\\hline
 
15598
\end{tabulary}
 
15599
 
 
15600
 
 
15601
 
 
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)}
 
15604
 
 
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}
 
15608
 
 
15609
 
 
15610
\begin{tabulary}{\linewidth}{|L|L|}
 
15611
\hline
 
15612
 
 
15613
\code{ENCTYPE\_DES\_CBC\_RAW}
 
15614
 & 
 
15615
\code{0x0004}
 
15616
\\\hline
 
15617
\end{tabulary}
 
15618
 
 
15619
 
 
15620
 
 
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)}
 
15623
 
 
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}
 
15627
 
 
15628
 
 
15629
\begin{tabulary}{\linewidth}{|L|L|}
 
15630
\hline
 
15631
 
 
15632
\code{ENCTYPE\_DES\_HMAC\_SHA1}
 
15633
 & 
 
15634
\code{0x0008}
 
15635
\\\hline
 
15636
\end{tabulary}
 
15637
 
 
15638
 
 
15639
 
 
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)}
 
15642
 
 
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}
 
15646
 
 
15647
 
 
15648
DSA with SHA1, CMS signature.
 
15649
 
 
15650
\begin{tabulary}{\linewidth}{|L|L|}
 
15651
\hline
 
15652
 
 
15653
\code{ENCTYPE\_DSA\_SHA1\_CMS}
 
15654
 & 
 
15655
\code{0x0009}
 
15656
\\\hline
 
15657
\end{tabulary}
 
15658
 
 
15659
 
 
15660
 
 
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)}
 
15663
 
 
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}
 
15667
 
 
15668
 
 
15669
MD5 with RSA, CMS signature.
 
15670
 
 
15671
\begin{tabulary}{\linewidth}{|L|L|}
 
15672
\hline
 
15673
 
 
15674
\code{ENCTYPE\_MD5\_RSA\_CMS}
 
15675
 & 
 
15676
\code{0x000a}
 
15677
\\\hline
 
15678
\end{tabulary}
 
15679
 
 
15680
 
 
15681
 
 
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)}
 
15684
 
 
15685
\begin{fulllineitems}
 
15686
\phantomsection\label{appdev/refs/macros/ENCTYPE_NULL:ENCTYPE_NULL}\pysigline{\bfcode{ENCTYPE\_NULL}}
 
15687
\end{fulllineitems}
 
15688
 
 
15689
 
 
15690
\begin{tabulary}{\linewidth}{|L|L|}
 
15691
\hline
 
15692
 
 
15693
\code{ENCTYPE\_NULL}
 
15694
 & 
 
15695
\code{0x0000}
 
15696
\\\hline
 
15697
\end{tabulary}
 
15698
 
 
15699
 
 
15700
 
 
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)}
 
15703
 
 
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}
 
15707
 
 
15708
 
 
15709
RC2 cbc mode, CMS enveloped data.
 
15710
 
 
15711
\begin{tabulary}{\linewidth}{|L|L|}
 
15712
\hline
 
15713
 
 
15714
\code{ENCTYPE\_RC2\_CBC\_ENV}
 
15715
 & 
 
15716
\code{0x000c}
 
15717
\\\hline
 
15718
\end{tabulary}
 
15719
 
 
15720
 
 
15721
 
 
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)}
 
15724
 
 
15725
\begin{fulllineitems}
 
15726
\phantomsection\label{appdev/refs/macros/ENCTYPE_RSA_ENV:ENCTYPE_RSA_ENV}\pysigline{\bfcode{ENCTYPE\_RSA\_ENV}}
 
15727
\end{fulllineitems}
 
15728
 
 
15729
 
 
15730
RSA encryption, CMS enveloped data.
 
15731
 
 
15732
\begin{tabulary}{\linewidth}{|L|L|}
 
15733
\hline
 
15734
 
 
15735
\code{ENCTYPE\_RSA\_ENV}
 
15736
 & 
 
15737
\code{0x000d}
 
15738
\\\hline
 
15739
\end{tabulary}
 
15740
 
 
15741
 
 
15742
 
 
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)}
 
15745
 
 
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}
 
15749
 
 
15750
 
 
15751
RSA w/OEAP encryption, CMS enveloped data.
 
15752
 
 
15753
\begin{tabulary}{\linewidth}{|L|L|}
 
15754
\hline
 
15755
 
 
15756
\code{ENCTYPE\_RSA\_ES\_OAEP\_ENV}
 
15757
 & 
 
15758
\code{0x000e}
 
15759
\\\hline
 
15760
\end{tabulary}
 
15761
 
 
15762
 
 
15763
 
 
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)}
 
15766
 
 
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}
 
15770
 
 
15771
 
 
15772
SHA1 with RSA, CMS signature.
 
15773
 
 
15774
\begin{tabulary}{\linewidth}{|L|L|}
 
15775
\hline
 
15776
 
 
15777
\code{ENCTYPE\_SHA1\_RSA\_CMS}
 
15778
 & 
 
15779
\code{0x000b}
 
15780
\\\hline
 
15781
\end{tabulary}
 
15782
 
 
15783
 
 
15784
 
 
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)}
 
15787
 
 
15788
\begin{fulllineitems}
 
15789
\phantomsection\label{appdev/refs/macros/ENCTYPE_UNKNOWN:ENCTYPE_UNKNOWN}\pysigline{\bfcode{ENCTYPE\_UNKNOWN}}
 
15790
\end{fulllineitems}
 
15791
 
 
15792
 
 
15793
\begin{tabulary}{\linewidth}{|L|L|}
 
15794
\hline
 
15795
 
 
15796
\code{ENCTYPE\_UNKNOWN}
 
15797
 & 
 
15798
\code{0x01ff}
 
15799
\\\hline
 
15800
\end{tabulary}
 
15801
 
 
15802
 
 
15803
 
 
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)}
 
15806
 
 
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}
 
15810
 
 
15811
 
 
15812
\begin{tabulary}{\linewidth}{|L|L|}
 
15813
\hline
 
15814
 
 
15815
\code{KDC\_OPT\_ALLOW\_POSTDATE}
 
15816
 & 
 
15817
\code{0x04000000}
 
15818
\\\hline
 
15819
\end{tabulary}
 
15820
 
 
15821
 
 
15822
 
 
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)}
 
15825
 
 
15826
\begin{fulllineitems}
 
15827
\phantomsection\label{appdev/refs/macros/KDC_OPT_CANONICALIZE:KDC_OPT_CANONICALIZE}\pysigline{\bfcode{KDC\_OPT\_CANONICALIZE}}
 
15828
\end{fulllineitems}
 
15829
 
 
15830
 
 
15831
\begin{tabulary}{\linewidth}{|L|L|}
 
15832
\hline
 
15833
 
 
15834
\code{KDC\_OPT\_CANONICALIZE}
 
15835
 & 
 
15836
\code{0x00010000}
 
15837
\\\hline
 
15838
\end{tabulary}
 
15839
 
 
15840
 
 
15841
 
 
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)}
 
15844
 
 
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}
 
15848
 
 
15849
 
 
15850
\begin{tabulary}{\linewidth}{|L|L|}
 
15851
\hline
 
15852
 
 
15853
\code{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}
 
15854
 & 
 
15855
\code{0x00020000}
 
15856
\\\hline
 
15857
\end{tabulary}
 
15858
 
 
15859
 
 
15860
 
 
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)}
 
15863
 
 
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}
 
15867
 
 
15868
 
 
15869
\begin{tabulary}{\linewidth}{|L|L|}
 
15870
\hline
 
15871
 
 
15872
\code{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}
 
15873
 & 
 
15874
\code{0x00000020}
 
15875
\\\hline
 
15876
\end{tabulary}
 
15877
 
 
15878
 
 
15879
 
 
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)}
 
15882
 
 
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}
 
15886
 
 
15887
 
 
15888
\begin{tabulary}{\linewidth}{|L|L|}
 
15889
\hline
 
15890
 
 
15891
\code{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}
 
15892
 & 
 
15893
\code{0x00000008}
 
15894
\\\hline
 
15895
\end{tabulary}
 
15896
 
 
15897
 
 
15898
 
 
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)}
 
15901
 
 
15902
\begin{fulllineitems}
 
15903
\phantomsection\label{appdev/refs/macros/KDC_OPT_FORWARDABLE:KDC_OPT_FORWARDABLE}\pysigline{\bfcode{KDC\_OPT\_FORWARDABLE}}
 
15904
\end{fulllineitems}
 
15905
 
 
15906
 
 
15907
\begin{tabulary}{\linewidth}{|L|L|}
 
15908
\hline
 
15909
 
 
15910
\code{KDC\_OPT\_FORWARDABLE}
 
15911
 & 
 
15912
\code{0x40000000}
 
15913
\\\hline
 
15914
\end{tabulary}
 
15915
 
 
15916
 
 
15917
 
 
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)}
 
15920
 
 
15921
\begin{fulllineitems}
 
15922
\phantomsection\label{appdev/refs/macros/KDC_OPT_FORWARDED:KDC_OPT_FORWARDED}\pysigline{\bfcode{KDC\_OPT\_FORWARDED}}
 
15923
\end{fulllineitems}
 
15924
 
 
15925
 
 
15926
\begin{tabulary}{\linewidth}{|L|L|}
 
15927
\hline
 
15928
 
 
15929
\code{KDC\_OPT\_FORWARDED}
 
15930
 & 
 
15931
\code{0x20000000}
 
15932
\\\hline
 
15933
\end{tabulary}
 
15934
 
 
15935
 
 
15936
 
 
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)}
 
15939
 
 
15940
\begin{fulllineitems}
 
15941
\phantomsection\label{appdev/refs/macros/KDC_OPT_POSTDATED:KDC_OPT_POSTDATED}\pysigline{\bfcode{KDC\_OPT\_POSTDATED}}
 
15942
\end{fulllineitems}
 
15943
 
 
15944
 
 
15945
\begin{tabulary}{\linewidth}{|L|L|}
 
15946
\hline
 
15947
 
 
15948
\code{KDC\_OPT\_POSTDATED}
 
15949
 & 
 
15950
\code{0x02000000}
 
15951
\\\hline
 
15952
\end{tabulary}
 
15953
 
 
15954
 
 
15955
 
 
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)}
 
15958
 
 
15959
\begin{fulllineitems}
 
15960
\phantomsection\label{appdev/refs/macros/KDC_OPT_PROXIABLE:KDC_OPT_PROXIABLE}\pysigline{\bfcode{KDC\_OPT\_PROXIABLE}}
 
15961
\end{fulllineitems}
 
15962
 
 
15963
 
 
15964
\begin{tabulary}{\linewidth}{|L|L|}
 
15965
\hline
 
15966
 
 
15967
\code{KDC\_OPT\_PROXIABLE}
 
15968
 & 
 
15969
\code{0x10000000}
 
15970
\\\hline
 
15971
\end{tabulary}
 
15972
 
 
15973
 
 
15974
 
 
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)}
 
15977
 
 
15978
\begin{fulllineitems}
 
15979
\phantomsection\label{appdev/refs/macros/KDC_OPT_PROXY:KDC_OPT_PROXY}\pysigline{\bfcode{KDC\_OPT\_PROXY}}
 
15980
\end{fulllineitems}
 
15981
 
 
15982
 
 
15983
\begin{tabulary}{\linewidth}{|L|L|}
 
15984
\hline
 
15985
 
 
15986
\code{KDC\_OPT\_PROXY}
 
15987
 & 
 
15988
\code{0x08000000}
 
15989
\\\hline
 
15990
\end{tabulary}
 
15991
 
 
15992
 
 
15993
 
 
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)}
 
15996
 
 
15997
\begin{fulllineitems}
 
15998
\phantomsection\label{appdev/refs/macros/KDC_OPT_RENEW:KDC_OPT_RENEW}\pysigline{\bfcode{KDC\_OPT\_RENEW}}
 
15999
\end{fulllineitems}
 
16000
 
 
16001
 
 
16002
\begin{tabulary}{\linewidth}{|L|L|}
 
16003
\hline
 
16004
 
 
16005
\code{KDC\_OPT\_RENEW}
 
16006
 & 
 
16007
\code{0x00000002}
 
16008
\\\hline
 
16009
\end{tabulary}
 
16010
 
 
16011
 
 
16012
 
 
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)}
 
16015
 
 
16016
\begin{fulllineitems}
 
16017
\phantomsection\label{appdev/refs/macros/KDC_OPT_RENEWABLE:KDC_OPT_RENEWABLE}\pysigline{\bfcode{KDC\_OPT\_RENEWABLE}}
 
16018
\end{fulllineitems}
 
16019
 
 
16020
 
 
16021
\begin{tabulary}{\linewidth}{|L|L|}
 
16022
\hline
 
16023
 
 
16024
\code{KDC\_OPT\_RENEWABLE}
 
16025
 & 
 
16026
\code{0x00800000}
 
16027
\\\hline
 
16028
\end{tabulary}
 
16029
 
 
16030
 
 
16031
 
 
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)}
 
16034
 
 
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}
 
16038
 
 
16039
 
 
16040
\begin{tabulary}{\linewidth}{|L|L|}
 
16041
\hline
 
16042
 
 
16043
\code{KDC\_OPT\_RENEWABLE\_OK}
 
16044
 & 
 
16045
\code{0x00000010}
 
16046
\\\hline
 
16047
\end{tabulary}
 
16048
 
 
16049
 
 
16050
 
 
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)}
 
16053
 
 
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}
 
16057
 
 
16058
 
 
16059
\begin{tabulary}{\linewidth}{|L|L|}
 
16060
\hline
 
16061
 
 
16062
\code{KDC\_OPT\_REQUEST\_ANONYMOUS}
 
16063
 & 
 
16064
\code{0x00008000}
 
16065
\\\hline
 
16066
\end{tabulary}
 
16067
 
 
16068
 
 
16069
 
 
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)}
 
16072
 
 
16073
\begin{fulllineitems}
 
16074
\phantomsection\label{appdev/refs/macros/KDC_OPT_VALIDATE:KDC_OPT_VALIDATE}\pysigline{\bfcode{KDC\_OPT\_VALIDATE}}
 
16075
\end{fulllineitems}
 
16076
 
 
16077
 
 
16078
\begin{tabulary}{\linewidth}{|L|L|}
 
16079
\hline
 
16080
 
 
16081
\code{KDC\_OPT\_VALIDATE}
 
16082
 & 
 
16083
\code{0x00000001}
 
16084
\\\hline
 
16085
\end{tabulary}
 
16086
 
 
16087
 
 
16088
 
 
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)}
 
16091
 
 
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}
 
16095
 
 
16096
 
 
16097
\begin{tabulary}{\linewidth}{|L|L|}
 
16098
\hline
 
16099
 
 
16100
\code{KDC\_TKT\_COMMON\_MASK}
 
16101
 & 
 
16102
\code{0x54800000}
 
16103
\\\hline
 
16104
\end{tabulary}
 
16105
 
 
16106
 
 
16107
 
 
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)}
 
16110
 
 
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}
 
16114
 
 
16115
 
 
16116
alternate authentication types
 
16117
 
 
16118
\begin{tabulary}{\linewidth}{|L|L|}
 
16119
\hline
 
16120
 
 
16121
\code{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}
 
16122
 & 
 
16123
\code{64}
 
16124
\\\hline
 
16125
\end{tabulary}
 
16126
 
 
16127
 
 
16128
 
 
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)}
 
16131
 
 
16132
\begin{fulllineitems}
 
16133
\phantomsection\label{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR}\pysigline{\bfcode{KRB5\_ANONYMOUS\_PRINCSTR}}
 
16134
\end{fulllineitems}
 
16135
 
 
16136
 
 
16137
Anonymous principal name.
 
16138
 
 
16139
\begin{tabulary}{\linewidth}{|L|L|}
 
16140
\hline
 
16141
 
 
16142
\code{KRB5\_ANONYMOUS\_PRINCSTR}
 
16143
 & 
 
16144
\code{"ANONYMOUS"}
 
16145
\\\hline
 
16146
\end{tabulary}
 
16147
 
 
16148
 
 
16149
 
 
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)}
 
16152
 
 
16153
\begin{fulllineitems}
 
16154
\phantomsection\label{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR}\pysigline{\bfcode{KRB5\_ANONYMOUS\_REALMSTR}}
 
16155
\end{fulllineitems}
 
16156
 
 
16157
 
 
16158
Anonymous realm.
 
16159
 
 
16160
\begin{tabulary}{\linewidth}{|L|L|}
 
16161
\hline
 
16162
 
 
16163
\code{KRB5\_ANONYMOUS\_REALMSTR}
 
16164
 & 
 
16165
\code{"WELLKNOWN:ANONYMOUS"}
 
16166
\\\hline
 
16167
\end{tabulary}
 
16168
 
 
16169
 
 
16170
 
 
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)}
 
16173
 
 
16174
\begin{fulllineitems}
 
16175
\phantomsection\label{appdev/refs/macros/KRB5_AP_REP:KRB5_AP_REP}\pysigline{\bfcode{KRB5\_AP\_REP}}
 
16176
\end{fulllineitems}
 
16177
 
 
16178
 
 
16179
Response to mutual AP request.
 
16180
 
 
16181
\begin{tabulary}{\linewidth}{|L|L|}
 
16182
\hline
 
16183
 
 
16184
\code{KRB5\_AP\_REP}
 
16185
 & 
 
16186
\code{((krb5\_msgtype)15)}
 
16187
\\\hline
 
16188
\end{tabulary}
 
16189
 
 
16190
 
 
16191
 
 
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)}
 
16194
 
 
16195
\begin{fulllineitems}
 
16196
\phantomsection\label{appdev/refs/macros/KRB5_AP_REQ:KRB5_AP_REQ}\pysigline{\bfcode{KRB5\_AP\_REQ}}
 
16197
\end{fulllineitems}
 
16198
 
 
16199
 
 
16200
Auth req to application server.
 
16201
 
 
16202
\begin{tabulary}{\linewidth}{|L|L|}
 
16203
\hline
 
16204
 
 
16205
\code{KRB5\_AP\_REQ}
 
16206
 & 
 
16207
\code{((krb5\_msgtype)14)}
 
16208
\\\hline
 
16209
\end{tabulary}
 
16210
 
 
16211
 
 
16212
 
 
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)}
 
16215
 
 
16216
\begin{fulllineitems}
 
16217
\phantomsection\label{appdev/refs/macros/KRB5_AS_REP:KRB5_AS_REP}\pysigline{\bfcode{KRB5\_AS\_REP}}
 
16218
\end{fulllineitems}
 
16219
 
 
16220
 
 
16221
Response to AS request.
 
16222
 
 
16223
\begin{tabulary}{\linewidth}{|L|L|}
 
16224
\hline
 
16225
 
 
16226
\code{KRB5\_AS\_REP}
 
16227
 & 
 
16228
\code{((krb5\_msgtype)11)}
 
16229
\\\hline
 
16230
\end{tabulary}
 
16231
 
 
16232
 
 
16233
 
 
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)}
 
16236
 
 
16237
\begin{fulllineitems}
 
16238
\phantomsection\label{appdev/refs/macros/KRB5_AS_REQ:KRB5_AS_REQ}\pysigline{\bfcode{KRB5\_AS\_REQ}}
 
16239
\end{fulllineitems}
 
16240
 
 
16241
 
 
16242
Initial authentication request.
 
16243
 
 
16244
\begin{tabulary}{\linewidth}{|L|L|}
 
16245
\hline
 
16246
 
 
16247
\code{KRB5\_AS\_REQ}
 
16248
 & 
 
16249
\code{((krb5\_msgtype)10)}
 
16250
\\\hline
 
16251
\end{tabulary}
 
16252
 
 
16253
 
 
16254
 
 
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)}
 
16257
 
 
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}
 
16261
 
 
16262
 
 
16263
\begin{tabulary}{\linewidth}{|L|L|}
 
16264
\hline
 
16265
 
 
16266
\code{KRB5\_AUTHDATA\_AND\_OR}
 
16267
 & 
 
16268
\code{5}
 
16269
\\\hline
 
16270
\end{tabulary}
 
16271
 
 
16272
 
 
16273
 
 
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)}
 
16276
 
 
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}
 
16280
 
 
16281
 
 
16282
RFC 4537.
 
16283
 
 
16284
\begin{tabulary}{\linewidth}{|L|L|}
 
16285
\hline
 
16286
 
 
16287
\code{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}
 
16288
 & 
 
16289
\code{129}
 
16290
\\\hline
 
16291
\end{tabulary}
 
16292
 
 
16293
 
 
16294
 
 
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)}
 
16297
 
 
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}
 
16301
 
 
16302
 
 
16303
\begin{tabulary}{\linewidth}{|L|L|}
 
16304
\hline
 
16305
 
 
16306
\code{KRB5\_AUTHDATA\_FX\_ARMOR}
 
16307
 & 
 
16308
\code{71}
 
16309
\\\hline
 
16310
\end{tabulary}
 
16311
 
 
16312
 
 
16313
 
 
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)}
 
16316
 
 
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}
 
16320
 
 
16321
 
 
16322
\begin{tabulary}{\linewidth}{|L|L|}
 
16323
\hline
 
16324
 
 
16325
\code{KRB5\_AUTHDATA\_IF\_RELEVANT}
 
16326
 & 
 
16327
\code{1}
 
16328
\\\hline
 
16329
\end{tabulary}
 
16330
 
 
16331
 
 
16332
 
 
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)}
 
16335
 
 
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}
 
16339
 
 
16340
 
 
16341
\begin{tabulary}{\linewidth}{|L|L|}
 
16342
\hline
 
16343
 
 
16344
\code{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}
 
16345
 & 
 
16346
\code{9}
 
16347
\\\hline
 
16348
\end{tabulary}
 
16349
 
 
16350
 
 
16351
 
 
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)}
 
16354
 
 
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}
 
16358
 
 
16359
 
 
16360
\begin{tabulary}{\linewidth}{|L|L|}
 
16361
\hline
 
16362
 
 
16363
\code{KRB5\_AUTHDATA\_KDC\_ISSUED}
 
16364
 & 
 
16365
\code{4}
 
16366
\\\hline
 
16367
\end{tabulary}
 
16368
 
 
16369
 
 
16370
 
 
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)}
 
16373
 
 
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}
 
16377
 
 
16378
 
 
16379
\begin{tabulary}{\linewidth}{|L|L|}
 
16380
\hline
 
16381
 
 
16382
\code{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}
 
16383
 & 
 
16384
\code{8}
 
16385
\\\hline
 
16386
\end{tabulary}
 
16387
 
 
16388
 
 
16389
 
 
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)}
 
16392
 
 
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}
 
16396
 
 
16397
 
 
16398
\begin{tabulary}{\linewidth}{|L|L|}
 
16399
\hline
 
16400
 
 
16401
\code{KRB5\_AUTHDATA\_OSF\_DCE}
 
16402
 & 
 
16403
\code{64}
 
16404
\\\hline
 
16405
\end{tabulary}
 
16406
 
 
16407
 
 
16408
 
 
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)}
 
16411
 
 
16412
\begin{fulllineitems}
 
16413
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_SESAME:KRB5_AUTHDATA_SESAME}\pysigline{\bfcode{KRB5\_AUTHDATA\_SESAME}}
 
16414
\end{fulllineitems}
 
16415
 
 
16416
 
 
16417
\begin{tabulary}{\linewidth}{|L|L|}
 
16418
\hline
 
16419
 
 
16420
\code{KRB5\_AUTHDATA\_SESAME}
 
16421
 & 
 
16422
\code{65}
 
16423
\\\hline
 
16424
\end{tabulary}
 
16425
 
 
16426
 
 
16427
 
 
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)}
 
16430
 
 
16431
\begin{fulllineitems}
 
16432
\phantomsection\label{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:KRB5_AUTHDATA_SIGNTICKET}\pysigline{\bfcode{KRB5\_AUTHDATA\_SIGNTICKET}}
 
16433
\end{fulllineitems}
 
16434
 
 
16435
 
 
16436
formerly 142 in krb5 1.8
 
16437
 
 
16438
\begin{tabulary}{\linewidth}{|L|L|}
 
16439
\hline
 
16440
 
 
16441
\code{KRB5\_AUTHDATA\_SIGNTICKET}
 
16442
 & 
 
16443
\code{512}
 
16444
\\\hline
 
16445
\end{tabulary}
 
16446
 
 
16447
 
 
16448
 
 
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)}
 
16451
 
 
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}
 
16455
 
 
16456
 
 
16457
\begin{tabulary}{\linewidth}{|L|L|}
 
16458
\hline
 
16459
 
 
16460
\code{KRB5\_AUTHDATA\_WIN2K\_PAC}
 
16461
 & 
 
16462
\code{128}
 
16463
\\\hline
 
16464
\end{tabulary}
 
16465
 
 
16466
 
 
16467
 
 
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)}
 
16470
 
 
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}
 
16474
 
 
16475
 
 
16476
Prevent replays with sequence numbers.
 
16477
 
 
16478
\begin{tabulary}{\linewidth}{|L|L|}
 
16479
\hline
 
16480
 
 
16481
\code{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}
 
16482
 & 
 
16483
\code{0x00000004}
 
16484
\\\hline
 
16485
\end{tabulary}
 
16486
 
 
16487
 
 
16488
 
 
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)}
 
16491
 
 
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}
 
16495
 
 
16496
 
 
16497
Prevent replays with timestamps and replay cache.
 
16498
 
 
16499
\begin{tabulary}{\linewidth}{|L|L|}
 
16500
\hline
 
16501
 
 
16502
\code{KRB5\_AUTH\_CONTEXT\_DO\_TIME}
 
16503
 & 
 
16504
\code{0x00000001}
 
16505
\\\hline
 
16506
\end{tabulary}
 
16507
 
 
16508
 
 
16509
 
 
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)}
 
16512
 
 
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}
 
16516
 
 
16517
 
 
16518
Generate the local network address.
 
16519
 
 
16520
\begin{tabulary}{\linewidth}{|L|L|}
 
16521
\hline
 
16522
 
 
16523
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}
 
16524
 & 
 
16525
\code{0x00000001}
 
16526
\\\hline
 
16527
\end{tabulary}
 
16528
 
 
16529
 
 
16530
 
 
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)}
 
16533
 
 
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}
 
16537
 
 
16538
 
 
16539
Generate the local network address and the local port.
 
16540
 
 
16541
\begin{tabulary}{\linewidth}{|L|L|}
 
16542
\hline
 
16543
 
 
16544
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}
 
16545
 & 
 
16546
\code{0x00000004}
 
16547
\\\hline
 
16548
\end{tabulary}
 
16549
 
 
16550
 
 
16551
 
 
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)}
 
16554
 
 
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}
 
16558
 
 
16559
 
 
16560
Generate the remote network address.
 
16561
 
 
16562
\begin{tabulary}{\linewidth}{|L|L|}
 
16563
\hline
 
16564
 
 
16565
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}
 
16566
 & 
 
16567
\code{0x00000002}
 
16568
\\\hline
 
16569
\end{tabulary}
 
16570
 
 
16571
 
 
16572
 
 
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)}
 
16575
 
 
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}
 
16579
 
 
16580
 
 
16581
Generate the remote network address and the remote port.
 
16582
 
 
16583
\begin{tabulary}{\linewidth}{|L|L|}
 
16584
\hline
 
16585
 
 
16586
\code{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}
 
16587
 & 
 
16588
\code{0x00000008}
 
16589
\\\hline
 
16590
\end{tabulary}
 
16591
 
 
16592
 
 
16593
 
 
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)}
 
16596
 
 
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}
 
16600
 
 
16601
 
 
16602
\begin{tabulary}{\linewidth}{|L|L|}
 
16603
\hline
 
16604
 
 
16605
\code{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}
 
16606
 & 
 
16607
\code{0x00000010}
 
16608
\\\hline
 
16609
\end{tabulary}
 
16610
 
 
16611
 
 
16612
 
 
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)}
 
16615
 
 
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}
 
16619
 
 
16620
 
 
16621
Save sequence numbers for application.
 
16622
 
 
16623
\begin{tabulary}{\linewidth}{|L|L|}
 
16624
\hline
 
16625
 
 
16626
\code{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}
 
16627
 & 
 
16628
\code{0x00000008}
 
16629
\\\hline
 
16630
\end{tabulary}
 
16631
 
 
16632
 
 
16633
 
 
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)}
 
16636
 
 
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}
 
16640
 
 
16641
 
 
16642
Save timestamps for application.
 
16643
 
 
16644
\begin{tabulary}{\linewidth}{|L|L|}
 
16645
\hline
 
16646
 
 
16647
\code{KRB5\_AUTH\_CONTEXT\_RET\_TIME}
 
16648
 & 
 
16649
\code{0x00000002}
 
16650
\\\hline
 
16651
\end{tabulary}
 
16652
 
 
16653
 
 
16654
 
 
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)}
 
16657
 
 
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}
 
16661
 
 
16662
 
 
16663
\begin{tabulary}{\linewidth}{|L|L|}
 
16664
\hline
 
16665
 
 
16666
\code{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}
 
16667
 & 
 
16668
\code{0x00000020}
 
16669
\\\hline
 
16670
\end{tabulary}
 
16671
 
 
16672
 
 
16673
 
 
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)}
 
16676
 
 
16677
\begin{fulllineitems}
 
16678
\phantomsection\label{appdev/refs/macros/KRB5_CRED:KRB5_CRED}\pysigline{\bfcode{KRB5\_CRED}}
 
16679
\end{fulllineitems}
 
16680
 
 
16681
 
 
16682
Cred forwarding message.
 
16683
 
 
16684
\begin{tabulary}{\linewidth}{|L|L|}
 
16685
\hline
 
16686
 
 
16687
\code{KRB5\_CRED}
 
16688
 & 
 
16689
\code{((krb5\_msgtype)22)}
 
16690
\\\hline
 
16691
\end{tabulary}
 
16692
 
 
16693
 
 
16694
 
 
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)}
 
16697
 
 
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}
 
16701
 
 
16702
 
 
16703
{[}out{]} checksum for MIC
 
16704
 
 
16705
\begin{tabulary}{\linewidth}{|L|L|}
 
16706
\hline
 
16707
 
 
16708
\code{KRB5\_CRYPTO\_TYPE\_CHECKSUM}
 
16709
 & 
 
16710
\code{6}
 
16711
\\\hline
 
16712
\end{tabulary}
 
16713
 
 
16714
 
 
16715
 
 
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)}
 
16718
 
 
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}
 
16722
 
 
16723
 
 
16724
{[}in, out{]} plaintext
 
16725
 
 
16726
\begin{tabulary}{\linewidth}{|L|L|}
 
16727
\hline
 
16728
 
 
16729
\code{KRB5\_CRYPTO\_TYPE\_DATA}
 
16730
 & 
 
16731
\code{2}
 
16732
\\\hline
 
16733
\end{tabulary}
 
16734
 
 
16735
 
 
16736
 
 
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)}
 
16739
 
 
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}
 
16743
 
 
16744
 
 
16745
{[}in{]} ignored
 
16746
 
 
16747
\begin{tabulary}{\linewidth}{|L|L|}
 
16748
\hline
 
16749
 
 
16750
\code{KRB5\_CRYPTO\_TYPE\_EMPTY}
 
16751
 & 
 
16752
\code{0}
 
16753
\\\hline
 
16754
\end{tabulary}
 
16755
 
 
16756
 
 
16757
 
 
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)}
 
16760
 
 
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}
 
16764
 
 
16765
 
 
16766
{[}out{]} header
 
16767
 
 
16768
\begin{tabulary}{\linewidth}{|L|L|}
 
16769
\hline
 
16770
 
 
16771
\code{KRB5\_CRYPTO\_TYPE\_HEADER}
 
16772
 & 
 
16773
\code{1}
 
16774
\\\hline
 
16775
\end{tabulary}
 
16776
 
 
16777
 
 
16778
 
 
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)}
 
16781
 
 
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}
 
16785
 
 
16786
 
 
16787
{[}out{]} padding
 
16788
 
 
16789
\begin{tabulary}{\linewidth}{|L|L|}
 
16790
\hline
 
16791
 
 
16792
\code{KRB5\_CRYPTO\_TYPE\_PADDING}
 
16793
 & 
 
16794
\code{4}
 
16795
\\\hline
 
16796
\end{tabulary}
 
16797
 
 
16798
 
 
16799
 
 
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)}
 
16802
 
 
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}
 
16806
 
 
16807
 
 
16808
{[}in{]} associated data
 
16809
 
 
16810
\begin{tabulary}{\linewidth}{|L|L|}
 
16811
\hline
 
16812
 
 
16813
\code{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}
 
16814
 & 
 
16815
\code{3}
 
16816
\\\hline
 
16817
\end{tabulary}
 
16818
 
 
16819
 
 
16820
 
 
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)}
 
16823
 
 
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}
 
16827
 
 
16828
 
 
16829
{[}in{]} entire message without decomposing the structure into header, data and trailer buffers
 
16830
 
 
16831
\begin{tabulary}{\linewidth}{|L|L|}
 
16832
\hline
 
16833
 
 
16834
\code{KRB5\_CRYPTO\_TYPE\_STREAM}
 
16835
 & 
 
16836
\code{7}
 
16837
\\\hline
 
16838
\end{tabulary}
 
16839
 
 
16840
 
 
16841
 
 
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)}
 
16844
 
 
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}
 
16848
 
 
16849
 
 
16850
{[}out{]} checksum for encrypt
 
16851
 
 
16852
\begin{tabulary}{\linewidth}{|L|L|}
 
16853
\hline
 
16854
 
 
16855
\code{KRB5\_CRYPTO\_TYPE\_TRAILER}
 
16856
 & 
 
16857
\code{5}
 
16858
\\\hline
 
16859
\end{tabulary}
 
16860
 
 
16861
 
 
16862
 
 
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)}
 
16865
 
 
16866
\begin{fulllineitems}
 
16867
\phantomsection\label{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:KRB5_CYBERSAFE_SECUREID}\pysigline{\bfcode{KRB5\_CYBERSAFE\_SECUREID}}
 
16868
\end{fulllineitems}
 
16869
 
 
16870
 
 
16871
Cybersafe.
 
16872
 
 
16873
\begin{tabulary}{\linewidth}{|L|L|}
 
16874
\hline
 
16875
 
 
16876
\code{KRB5\_CYBERSAFE\_SECUREID}
 
16877
 & 
 
16878
\code{9}
 
16879
\\\hline
 
16880
\end{tabulary}
 
16881
 
 
16882
 
 
16883
 
 
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)}
 
16886
 
 
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}
 
16890
 
 
16891
 
 
16892
Transited encoding types.
 
16893
 
 
16894
\begin{tabulary}{\linewidth}{|L|L|}
 
16895
\hline
 
16896
 
 
16897
\code{KRB5\_DOMAIN\_X500\_COMPRESS}
 
16898
 & 
 
16899
\code{1}
 
16900
\\\hline
 
16901
\end{tabulary}
 
16902
 
 
16903
 
 
16904
 
 
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)}
 
16907
 
 
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}
 
16911
 
 
16912
 
 
16913
\begin{tabulary}{\linewidth}{|L|L|}
 
16914
\hline
 
16915
 
 
16916
\code{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}
 
16917
 & 
 
16918
\code{149}
 
16919
\\\hline
 
16920
\end{tabulary}
 
16921
 
 
16922
 
 
16923
 
 
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)}
 
16926
 
 
16927
\begin{fulllineitems}
 
16928
\phantomsection\label{appdev/refs/macros/KRB5_ERROR:KRB5_ERROR}\pysigline{\bfcode{KRB5\_ERROR}}
 
16929
\end{fulllineitems}
 
16930
 
 
16931
 
 
16932
Error response.
 
16933
 
 
16934
\begin{tabulary}{\linewidth}{|L|L|}
 
16935
\hline
 
16936
 
 
16937
\code{KRB5\_ERROR}
 
16938
 & 
 
16939
\code{((krb5\_msgtype)30)}
 
16940
\\\hline
 
16941
\end{tabulary}
 
16942
 
 
16943
 
 
16944
 
 
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)}
 
16947
 
 
16948
\begin{fulllineitems}
 
16949
\phantomsection\label{appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED}\pysigline{\bfcode{KRB5\_FAST\_REQUIRED}}
 
16950
\end{fulllineitems}
 
16951
 
 
16952
 
 
16953
Require KDC to support FAST.
 
16954
 
 
16955
\begin{tabulary}{\linewidth}{|L|L|}
 
16956
\hline
 
16957
 
 
16958
\code{KRB5\_FAST\_REQUIRED}
 
16959
 & 
 
16960
\code{0x0001}
 
16961
\\\hline
 
16962
\end{tabulary}
 
16963
 
 
16964
 
 
16965
 
 
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)}
 
16968
 
 
16969
\begin{fulllineitems}
 
16970
\phantomsection\label{appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED}\pysigline{\bfcode{KRB5\_GC\_CACHED}}
 
16971
\end{fulllineitems}
 
16972
 
 
16973
 
 
16974
Want cached ticket only.
 
16975
 
 
16976
\begin{tabulary}{\linewidth}{|L|L|}
 
16977
\hline
 
16978
 
 
16979
\code{KRB5\_GC\_CACHED}
 
16980
 & 
 
16981
\code{2}
 
16982
\\\hline
 
16983
\end{tabulary}
 
16984
 
 
16985
 
 
16986
 
 
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)}
 
16989
 
 
16990
\begin{fulllineitems}
 
16991
\phantomsection\label{appdev/refs/macros/KRB5_GC_CANONICALIZE:KRB5_GC_CANONICALIZE}\pysigline{\bfcode{KRB5\_GC\_CANONICALIZE}}
 
16992
\end{fulllineitems}
 
16993
 
 
16994
 
 
16995
Set canonicalize KDC option.
 
16996
 
 
16997
\begin{tabulary}{\linewidth}{|L|L|}
 
16998
\hline
 
16999
 
 
17000
\code{KRB5\_GC\_CANONICALIZE}
 
17001
 & 
 
17002
\code{4}
 
17003
\\\hline
 
17004
\end{tabulary}
 
17005
 
 
17006
 
 
17007
 
 
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)}
 
17010
 
 
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}
 
17014
 
 
17015
 
 
17016
Constrained delegation.
 
17017
 
 
17018
\begin{tabulary}{\linewidth}{|L|L|}
 
17019
\hline
 
17020
 
 
17021
\code{KRB5\_GC\_CONSTRAINED\_DELEGATION}
 
17022
 & 
 
17023
\code{64}
 
17024
\\\hline
 
17025
\end{tabulary}
 
17026
 
 
17027
 
 
17028
 
 
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)}
 
17031
 
 
17032
\begin{fulllineitems}
 
17033
\phantomsection\label{appdev/refs/macros/KRB5_GC_FORWARDABLE:KRB5_GC_FORWARDABLE}\pysigline{\bfcode{KRB5\_GC\_FORWARDABLE}}
 
17034
\end{fulllineitems}
 
17035
 
 
17036
 
 
17037
Acquire forwardable tickets.
 
17038
 
 
17039
\begin{tabulary}{\linewidth}{|L|L|}
 
17040
\hline
 
17041
 
 
17042
\code{KRB5\_GC\_FORWARDABLE}
 
17043
 & 
 
17044
\code{16}
 
17045
\\\hline
 
17046
\end{tabulary}
 
17047
 
 
17048
 
 
17049
 
 
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)}
 
17052
 
 
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}
 
17056
 
 
17057
 
 
17058
Do not store in credential cache.
 
17059
 
 
17060
\begin{tabulary}{\linewidth}{|L|L|}
 
17061
\hline
 
17062
 
 
17063
\code{KRB5\_GC\_NO\_STORE}
 
17064
 & 
 
17065
\code{8}
 
17066
\\\hline
 
17067
\end{tabulary}
 
17068
 
 
17069
 
 
17070
 
 
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)}
 
17073
 
 
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}
 
17077
 
 
17078
 
 
17079
Disable transited check.
 
17080
 
 
17081
\begin{tabulary}{\linewidth}{|L|L|}
 
17082
\hline
 
17083
 
 
17084
\code{KRB5\_GC\_NO\_TRANSIT\_CHECK}
 
17085
 & 
 
17086
\code{32}
 
17087
\\\hline
 
17088
\end{tabulary}
 
17089
 
 
17090
 
 
17091
 
 
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)}
 
17094
 
 
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}
 
17098
 
 
17099
 
 
17100
Want user-user ticket.
 
17101
 
 
17102
\begin{tabulary}{\linewidth}{|L|L|}
 
17103
\hline
 
17104
 
 
17105
\code{KRB5\_GC\_USER\_USER}
 
17106
 & 
 
17107
\code{1}
 
17108
\\\hline
 
17109
\end{tabulary}
 
17110
 
 
17111
 
 
17112
 
 
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)}
 
17115
 
 
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}
 
17119
 
 
17120
 
 
17121
\begin{tabulary}{\linewidth}{|L|L|}
 
17122
\hline
 
17123
 
 
17124
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}
 
17125
 & 
 
17126
\code{0x0020}
 
17127
\\\hline
 
17128
\end{tabulary}
 
17129
 
 
17130
 
 
17131
 
 
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)}
 
17134
 
 
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}
 
17138
 
 
17139
 
 
17140
\begin{tabulary}{\linewidth}{|L|L|}
 
17141
\hline
 
17142
 
 
17143
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}
 
17144
 & 
 
17145
\code{0x0400}
 
17146
\\\hline
 
17147
\end{tabulary}
 
17148
 
 
17149
 
 
17150
 
 
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)}
 
17153
 
 
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}
 
17157
 
 
17158
 
 
17159
\begin{tabulary}{\linewidth}{|L|L|}
 
17160
\hline
 
17161
 
 
17162
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}
 
17163
 & 
 
17164
\code{0x0200}
 
17165
\\\hline
 
17166
\end{tabulary}
 
17167
 
 
17168
 
 
17169
 
 
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)}
 
17172
 
 
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}
 
17176
 
 
17177
 
 
17178
\begin{tabulary}{\linewidth}{|L|L|}
 
17179
\hline
 
17180
 
 
17181
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}
 
17182
 & 
 
17183
\code{0x0100}
 
17184
\\\hline
 
17185
\end{tabulary}
 
17186
 
 
17187
 
 
17188
 
 
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)}
 
17191
 
 
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}
 
17195
 
 
17196
 
 
17197
\begin{tabulary}{\linewidth}{|L|L|}
 
17198
\hline
 
17199
 
 
17200
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}
 
17201
 & 
 
17202
\code{0x0010}
 
17203
\\\hline
 
17204
\end{tabulary}
 
17205
 
 
17206
 
 
17207
 
 
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)}
 
17210
 
 
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}
 
17214
 
 
17215
 
 
17216
\begin{tabulary}{\linewidth}{|L|L|}
 
17217
\hline
 
17218
 
 
17219
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}
 
17220
 & 
 
17221
\code{0x0004}
 
17222
\\\hline
 
17223
\end{tabulary}
 
17224
 
 
17225
 
 
17226
 
 
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)}
 
17229
 
 
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}
 
17233
 
 
17234
 
 
17235
\begin{tabulary}{\linewidth}{|L|L|}
 
17236
\hline
 
17237
 
 
17238
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}
 
17239
 & 
 
17240
\code{0x0040}
 
17241
\\\hline
 
17242
\end{tabulary}
 
17243
 
 
17244
 
 
17245
 
 
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)}
 
17248
 
 
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}
 
17252
 
 
17253
 
 
17254
\begin{tabulary}{\linewidth}{|L|L|}
 
17255
\hline
 
17256
 
 
17257
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}
 
17258
 & 
 
17259
\code{0x0008}
 
17260
\\\hline
 
17261
\end{tabulary}
 
17262
 
 
17263
 
 
17264
 
 
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)}
 
17267
 
 
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}
 
17271
 
 
17272
 
 
17273
\begin{tabulary}{\linewidth}{|L|L|}
 
17274
\hline
 
17275
 
 
17276
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}
 
17277
 & 
 
17278
\code{0x0002}
 
17279
\\\hline
 
17280
\end{tabulary}
 
17281
 
 
17282
 
 
17283
 
 
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)}
 
17286
 
 
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}
 
17290
 
 
17291
 
 
17292
\begin{tabulary}{\linewidth}{|L|L|}
 
17293
\hline
 
17294
 
 
17295
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}
 
17296
 & 
 
17297
\code{0x0080}
 
17298
\\\hline
 
17299
\end{tabulary}
 
17300
 
 
17301
 
 
17302
 
 
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)}
 
17305
 
 
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}
 
17309
 
 
17310
 
 
17311
\begin{tabulary}{\linewidth}{|L|L|}
 
17312
\hline
 
17313
 
 
17314
\code{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}
 
17315
 & 
 
17316
\code{0x0001}
 
17317
\\\hline
 
17318
\end{tabulary}
 
17319
 
 
17320
 
 
17321
 
 
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)}
 
17324
 
 
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}
 
17328
 
 
17329
 
 
17330
Use secure context configuration.
 
17331
 
 
17332
\begin{tabulary}{\linewidth}{|L|L|}
 
17333
\hline
 
17334
 
 
17335
\code{KRB5\_INIT\_CONTEXT\_SECURE}
 
17336
 & 
 
17337
\code{0x1}
 
17338
\\\hline
 
17339
\end{tabulary}
 
17340
 
 
17341
 
 
17342
 
 
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)}
 
17345
 
 
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}
 
17349
 
 
17350
 
 
17351
Use KDC configuration if available.
 
17352
 
 
17353
\begin{tabulary}{\linewidth}{|L|L|}
 
17354
\hline
 
17355
 
 
17356
\code{KRB5\_INIT\_CONTEXT\_KDC}
 
17357
 & 
 
17358
\code{0x2}
 
17359
\\\hline
 
17360
\end{tabulary}
 
17361
 
 
17362
 
 
17363
 
 
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)}
 
17366
 
 
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}
 
17370
 
 
17371
 
 
17372
More responses needed.
 
17373
 
 
17374
\begin{tabulary}{\linewidth}{|L|L|}
 
17375
\hline
 
17376
 
 
17377
\code{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}
 
17378
 & 
 
17379
\code{0x1}
 
17380
\\\hline
 
17381
\end{tabulary}
 
17382
 
 
17383
 
 
17384
 
 
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)}
 
17387
 
 
17388
\begin{fulllineitems}
 
17389
\phantomsection\label{appdev/refs/macros/KRB5_INT16_MAX:KRB5_INT16_MAX}\pysigline{\bfcode{KRB5\_INT16\_MAX}}
 
17390
\end{fulllineitems}
 
17391
 
 
17392
 
 
17393
\begin{tabulary}{\linewidth}{|L|L|}
 
17394
\hline
 
17395
 
 
17396
\code{KRB5\_INT16\_MAX}
 
17397
 & 
 
17398
\code{65535}
 
17399
\\\hline
 
17400
\end{tabulary}
 
17401
 
 
17402
 
 
17403
 
 
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)}
 
17406
 
 
17407
\begin{fulllineitems}
 
17408
\phantomsection\label{appdev/refs/macros/KRB5_INT16_MIN:KRB5_INT16_MIN}\pysigline{\bfcode{KRB5\_INT16\_MIN}}
 
17409
\end{fulllineitems}
 
17410
 
 
17411
 
 
17412
\begin{tabulary}{\linewidth}{|L|L|}
 
17413
\hline
 
17414
 
 
17415
\code{KRB5\_INT16\_MIN}
 
17416
 & 
 
17417
\code{(-KRB5\_INT16\_MAX-1)}
 
17418
\\\hline
 
17419
\end{tabulary}
 
17420
 
 
17421
 
 
17422
 
 
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)}
 
17425
 
 
17426
\begin{fulllineitems}
 
17427
\phantomsection\label{appdev/refs/macros/KRB5_INT32_MAX:KRB5_INT32_MAX}\pysigline{\bfcode{KRB5\_INT32\_MAX}}
 
17428
\end{fulllineitems}
 
17429
 
 
17430
 
 
17431
\begin{tabulary}{\linewidth}{|L|L|}
 
17432
\hline
 
17433
 
 
17434
\code{KRB5\_INT32\_MAX}
 
17435
 & 
 
17436
\code{2147483647}
 
17437
\\\hline
 
17438
\end{tabulary}
 
17439
 
 
17440
 
 
17441
 
 
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)}
 
17444
 
 
17445
\begin{fulllineitems}
 
17446
\phantomsection\label{appdev/refs/macros/KRB5_INT32_MIN:KRB5_INT32_MIN}\pysigline{\bfcode{KRB5\_INT32\_MIN}}
 
17447
\end{fulllineitems}
 
17448
 
 
17449
 
 
17450
\begin{tabulary}{\linewidth}{|L|L|}
 
17451
\hline
 
17452
 
 
17453
\code{KRB5\_INT32\_MIN}
 
17454
 & 
 
17455
\code{(-KRB5\_INT32\_MAX-1)}
 
17456
\\\hline
 
17457
\end{tabulary}
 
17458
 
 
17459
 
 
17460
 
 
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)}
 
17463
 
 
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}
 
17467
 
 
17468
 
 
17469
\begin{tabulary}{\linewidth}{|L|L|}
 
17470
\hline
 
17471
 
 
17472
\code{KRB5\_KEYUSAGE\_AD\_ITE}
 
17473
 & 
 
17474
\code{21}
 
17475
\\\hline
 
17476
\end{tabulary}
 
17477
 
 
17478
 
 
17479
 
 
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)}
 
17482
 
 
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}
 
17486
 
 
17487
 
 
17488
\begin{tabulary}{\linewidth}{|L|L|}
 
17489
\hline
 
17490
 
 
17491
\code{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}
 
17492
 & 
 
17493
\code{19}
 
17494
\\\hline
 
17495
\end{tabulary}
 
17496
 
 
17497
 
 
17498
 
 
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)}
 
17501
 
 
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}
 
17505
 
 
17506
 
 
17507
\begin{tabulary}{\linewidth}{|L|L|}
 
17508
\hline
 
17509
 
 
17510
\code{KRB5\_KEYUSAGE\_AD\_MTE}
 
17511
 & 
 
17512
\code{20}
 
17513
\\\hline
 
17514
\end{tabulary}
 
17515
 
 
17516
 
 
17517
 
 
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)}
 
17520
 
 
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}
 
17524
 
 
17525
 
 
17526
\begin{tabulary}{\linewidth}{|L|L|}
 
17527
\hline
 
17528
 
 
17529
\code{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}
 
17530
 & 
 
17531
\code{-21}
 
17532
\\\hline
 
17533
\end{tabulary}
 
17534
 
 
17535
 
 
17536
 
 
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)}
 
17539
 
 
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}
 
17543
 
 
17544
 
 
17545
\begin{tabulary}{\linewidth}{|L|L|}
 
17546
\hline
 
17547
 
 
17548
\code{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}
 
17549
 & 
 
17550
\code{17}
 
17551
\\\hline
 
17552
\end{tabulary}
 
17553
 
 
17554
 
 
17555
 
 
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)}
 
17558
 
 
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}
 
17562
 
 
17563
 
 
17564
\begin{tabulary}{\linewidth}{|L|L|}
 
17565
\hline
 
17566
 
 
17567
\code{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}
 
17568
 & 
 
17569
\code{16}
 
17570
\\\hline
 
17571
\end{tabulary}
 
17572
 
 
17573
 
 
17574
 
 
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)}
 
17577
 
 
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}
 
17581
 
 
17582
 
 
17583
\begin{tabulary}{\linewidth}{|L|L|}
 
17584
\hline
 
17585
 
 
17586
\code{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}
 
17587
 & 
 
17588
\code{12}
 
17589
\\\hline
 
17590
\end{tabulary}
 
17591
 
 
17592
 
 
17593
 
 
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)}
 
17596
 
 
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}
 
17600
 
 
17601
 
 
17602
\begin{tabulary}{\linewidth}{|L|L|}
 
17603
\hline
 
17604
 
 
17605
\code{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}
 
17606
 & 
 
17607
\code{11}
 
17608
\\\hline
 
17609
\end{tabulary}
 
17610
 
 
17611
 
 
17612
 
 
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)}
 
17615
 
 
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}
 
17619
 
 
17620
 
 
17621
\begin{tabulary}{\linewidth}{|L|L|}
 
17622
\hline
 
17623
 
 
17624
\code{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}
 
17625
 & 
 
17626
\code{10}
 
17627
\\\hline
 
17628
\end{tabulary}
 
17629
 
 
17630
 
 
17631
 
 
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)}
 
17634
 
 
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}
 
17638
 
 
17639
 
 
17640
\begin{tabulary}{\linewidth}{|L|L|}
 
17641
\hline
 
17642
 
 
17643
\code{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}
 
17644
 & 
 
17645
\code{3}
 
17646
\\\hline
 
17647
\end{tabulary}
 
17648
 
 
17649
 
 
17650
 
 
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)}
 
17653
 
 
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}
 
17657
 
 
17658
 
 
17659
\begin{tabulary}{\linewidth}{|L|L|}
 
17660
\hline
 
17661
 
 
17662
\code{KRB5\_KEYUSAGE\_AS\_REQ}
 
17663
 & 
 
17664
\code{56}
 
17665
\\\hline
 
17666
\end{tabulary}
 
17667
 
 
17668
 
 
17669
 
 
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)}
 
17672
 
 
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}
 
17676
 
 
17677
 
 
17678
\begin{tabulary}{\linewidth}{|L|L|}
 
17679
\hline
 
17680
 
 
17681
\code{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}
 
17682
 & 
 
17683
\code{1}
 
17684
\\\hline
 
17685
\end{tabulary}
 
17686
 
 
17687
 
 
17688
 
 
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)}
 
17691
 
 
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}
 
17695
 
 
17696
 
 
17697
\begin{tabulary}{\linewidth}{|L|L|}
 
17698
\hline
 
17699
 
 
17700
\code{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}
 
17701
 & 
 
17702
\code{54}
 
17703
\\\hline
 
17704
\end{tabulary}
 
17705
 
 
17706
 
 
17707
 
 
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)}
 
17710
 
 
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}
 
17714
 
 
17715
 
 
17716
\begin{tabulary}{\linewidth}{|L|L|}
 
17717
\hline
 
17718
 
 
17719
\code{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}
 
17720
 & 
 
17721
\code{55}
 
17722
\\\hline
 
17723
\end{tabulary}
 
17724
 
 
17725
 
 
17726
 
 
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)}
 
17729
 
 
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}
 
17733
 
 
17734
 
 
17735
\begin{tabulary}{\linewidth}{|L|L|}
 
17736
\hline
 
17737
 
 
17738
\code{KRB5\_KEYUSAGE\_FAST\_ENC}
 
17739
 & 
 
17740
\code{51}
 
17741
\\\hline
 
17742
\end{tabulary}
 
17743
 
 
17744
 
 
17745
 
 
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)}
 
17748
 
 
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}
 
17752
 
 
17753
 
 
17754
\begin{tabulary}{\linewidth}{|L|L|}
 
17755
\hline
 
17756
 
 
17757
\code{KRB5\_KEYUSAGE\_FAST\_FINISHED}
 
17758
 & 
 
17759
\code{53}
 
17760
\\\hline
 
17761
\end{tabulary}
 
17762
 
 
17763
 
 
17764
 
 
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)}
 
17767
 
 
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}
 
17771
 
 
17772
 
 
17773
\begin{tabulary}{\linewidth}{|L|L|}
 
17774
\hline
 
17775
 
 
17776
\code{KRB5\_KEYUSAGE\_FAST\_REP}
 
17777
 & 
 
17778
\code{52}
 
17779
\\\hline
 
17780
\end{tabulary}
 
17781
 
 
17782
 
 
17783
 
 
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)}
 
17786
 
 
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}
 
17790
 
 
17791
 
 
17792
\begin{tabulary}{\linewidth}{|L|L|}
 
17793
\hline
 
17794
 
 
17795
\code{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}
 
17796
 & 
 
17797
\code{50}
 
17798
\\\hline
 
17799
\end{tabulary}
 
17800
 
 
17801
 
 
17802
 
 
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)}
 
17805
 
 
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}
 
17809
 
 
17810
 
 
17811
\begin{tabulary}{\linewidth}{|L|L|}
 
17812
\hline
 
17813
 
 
17814
\code{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}
 
17815
 & 
 
17816
\code{22}
 
17817
\\\hline
 
17818
\end{tabulary}
 
17819
 
 
17820
 
 
17821
 
 
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)}
 
17824
 
 
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}
 
17828
 
 
17829
 
 
17830
\begin{tabulary}{\linewidth}{|L|L|}
 
17831
\hline
 
17832
 
 
17833
\code{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}
 
17834
 & 
 
17835
\code{23}
 
17836
\\\hline
 
17837
\end{tabulary}
 
17838
 
 
17839
 
 
17840
 
 
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)}
 
17843
 
 
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}
 
17847
 
 
17848
 
 
17849
\begin{tabulary}{\linewidth}{|L|L|}
 
17850
\hline
 
17851
 
 
17852
\code{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}
 
17853
 & 
 
17854
\code{24}
 
17855
\\\hline
 
17856
\end{tabulary}
 
17857
 
 
17858
 
 
17859
 
 
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)}
 
17862
 
 
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}
 
17866
 
 
17867
 
 
17868
\begin{tabulary}{\linewidth}{|L|L|}
 
17869
\hline
 
17870
 
 
17871
\code{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}
 
17872
 & 
 
17873
\code{42}
 
17874
\\\hline
 
17875
\end{tabulary}
 
17876
 
 
17877
 
 
17878
 
 
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)}
 
17881
 
 
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}
 
17885
 
 
17886
 
 
17887
\begin{tabulary}{\linewidth}{|L|L|}
 
17888
\hline
 
17889
 
 
17890
\code{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}
 
17891
 & 
 
17892
\code{2}
 
17893
\\\hline
 
17894
\end{tabulary}
 
17895
 
 
17896
 
 
17897
 
 
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)}
 
17900
 
 
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}
 
17904
 
 
17905
 
 
17906
\begin{tabulary}{\linewidth}{|L|L|}
 
17907
\hline
 
17908
 
 
17909
\code{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}
 
17910
 & 
 
17911
\code{14}
 
17912
\\\hline
 
17913
\end{tabulary}
 
17914
 
 
17915
 
 
17916
 
 
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)}
 
17919
 
 
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}
 
17923
 
 
17924
 
 
17925
\begin{tabulary}{\linewidth}{|L|L|}
 
17926
\hline
 
17927
 
 
17928
\code{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}
 
17929
 & 
 
17930
\code{18}
 
17931
\\\hline
 
17932
\end{tabulary}
 
17933
 
 
17934
 
 
17935
 
 
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)}
 
17938
 
 
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}
 
17942
 
 
17943
 
 
17944
\begin{tabulary}{\linewidth}{|L|L|}
 
17945
\hline
 
17946
 
 
17947
\code{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}
 
17948
 & 
 
17949
\code{13}
 
17950
\\\hline
 
17951
\end{tabulary}
 
17952
 
 
17953
 
 
17954
 
 
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)}
 
17957
 
 
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}
 
17961
 
 
17962
 
 
17963
\begin{tabulary}{\linewidth}{|L|L|}
 
17964
\hline
 
17965
 
 
17966
\code{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}
 
17967
 & 
 
17968
\code{15}
 
17969
\\\hline
 
17970
\end{tabulary}
 
17971
 
 
17972
 
 
17973
 
 
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)}
 
17976
 
 
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}
 
17980
 
 
17981
 
 
17982
See RFC 6560 section 4.2.
 
17983
 
 
17984
\begin{tabulary}{\linewidth}{|L|L|}
 
17985
\hline
 
17986
 
 
17987
\code{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}
 
17988
 & 
 
17989
\code{45}
 
17990
\\\hline
 
17991
\end{tabulary}
 
17992
 
 
17993
 
 
17994
 
 
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)}
 
17997
 
 
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}
 
18001
 
 
18002
 
 
18003
\begin{tabulary}{\linewidth}{|L|L|}
 
18004
\hline
 
18005
 
 
18006
\code{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}
 
18007
 & 
 
18008
\code{44}
 
18009
\\\hline
 
18010
\end{tabulary}
 
18011
 
 
18012
 
 
18013
 
 
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)}
 
18016
 
 
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}
 
18020
 
 
18021
 
 
18022
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE} .
 
18023
 
 
18024
\begin{tabulary}{\linewidth}{|L|L|}
 
18025
\hline
 
18026
 
 
18027
\code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}
 
18028
 & 
 
18029
\code{27}
 
18030
\\\hline
 
18031
\end{tabulary}
 
18032
 
 
18033
 
 
18034
 
 
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)}
 
18037
 
 
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}
 
18041
 
 
18042
 
 
18043
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID} .
 
18044
 
 
18045
\begin{tabulary}{\linewidth}{|L|L|}
 
18046
\hline
 
18047
 
 
18048
\code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}
 
18049
 & 
 
18050
\code{26}
 
18051
\\\hline
 
18052
\end{tabulary}
 
18053
 
 
18054
 
 
18055
 
 
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)}
 
18058
 
 
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}
 
18062
 
 
18063
 
 
18064
\begin{tabulary}{\linewidth}{|L|L|}
 
18065
\hline
 
18066
 
 
18067
\code{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}
 
18068
 & 
 
18069
\code{25}
 
18070
\\\hline
 
18071
\end{tabulary}
 
18072
 
 
18073
 
 
18074
 
 
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)}
 
18077
 
 
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}
 
18081
 
 
18082
 
 
18083
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST} .
 
18084
 
 
18085
\begin{tabulary}{\linewidth}{|L|L|}
 
18086
\hline
 
18087
 
 
18088
\code{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}
 
18089
 & 
 
18090
\code{26}
 
18091
\\\hline
 
18092
\end{tabulary}
 
18093
 
 
18094
 
 
18095
 
 
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)}
 
18098
 
 
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}
 
18102
 
 
18103
 
 
18104
Note conflict with \code{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY} .
 
18105
 
 
18106
\begin{tabulary}{\linewidth}{|L|L|}
 
18107
\hline
 
18108
 
 
18109
\code{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}
 
18110
 & 
 
18111
\code{27}
 
18112
\\\hline
 
18113
\end{tabulary}
 
18114
 
 
18115
 
 
18116
 
 
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)}
 
18119
 
 
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}
 
18123
 
 
18124
 
 
18125
\begin{tabulary}{\linewidth}{|L|L|}
 
18126
\hline
 
18127
 
 
18128
\code{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}
 
18129
 & 
 
18130
\code{8}
 
18131
\\\hline
 
18132
\end{tabulary}
 
18133
 
 
18134
 
 
18135
 
 
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)}
 
18138
 
 
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}
 
18142
 
 
18143
 
 
18144
\begin{tabulary}{\linewidth}{|L|L|}
 
18145
\hline
 
18146
 
 
18147
\code{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}
 
18148
 & 
 
18149
\code{9}
 
18150
\\\hline
 
18151
\end{tabulary}
 
18152
 
 
18153
 
 
18154
 
 
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)}
 
18157
 
 
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}
 
18161
 
 
18162
 
 
18163
\begin{tabulary}{\linewidth}{|L|L|}
 
18164
\hline
 
18165
 
 
18166
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}
 
18167
 & 
 
18168
\code{4}
 
18169
\\\hline
 
18170
\end{tabulary}
 
18171
 
 
18172
 
 
18173
 
 
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)}
 
18176
 
 
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}
 
18180
 
 
18181
 
 
18182
\begin{tabulary}{\linewidth}{|L|L|}
 
18183
\hline
 
18184
 
 
18185
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}
 
18186
 & 
 
18187
\code{5}
 
18188
\\\hline
 
18189
\end{tabulary}
 
18190
 
 
18191
 
 
18192
 
 
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)}
 
18195
 
 
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}
 
18199
 
 
18200
 
 
18201
\begin{tabulary}{\linewidth}{|L|L|}
 
18202
\hline
 
18203
 
 
18204
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}
 
18205
 & 
 
18206
\code{7}
 
18207
\\\hline
 
18208
\end{tabulary}
 
18209
 
 
18210
 
 
18211
 
 
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)}
 
18214
 
 
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}
 
18218
 
 
18219
 
 
18220
\begin{tabulary}{\linewidth}{|L|L|}
 
18221
\hline
 
18222
 
 
18223
\code{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}
 
18224
 & 
 
18225
\code{6}
 
18226
\\\hline
 
18227
\end{tabulary}
 
18228
 
 
18229
 
 
18230
 
 
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)}
 
18233
 
 
18234
\begin{fulllineitems}
 
18235
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:KRB5_KPASSWD_ACCESSDENIED}\pysigline{\bfcode{KRB5\_KPASSWD\_ACCESSDENIED}}
 
18236
\end{fulllineitems}
 
18237
 
 
18238
 
 
18239
Not authorized.
 
18240
 
 
18241
\begin{tabulary}{\linewidth}{|L|L|}
 
18242
\hline
 
18243
 
 
18244
\code{KRB5\_KPASSWD\_ACCESSDENIED}
 
18245
 & 
 
18246
\code{5}
 
18247
\\\hline
 
18248
\end{tabulary}
 
18249
 
 
18250
 
 
18251
 
 
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)}
 
18254
 
 
18255
\begin{fulllineitems}
 
18256
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR}\pysigline{\bfcode{KRB5\_KPASSWD\_AUTHERROR}}
 
18257
\end{fulllineitems}
 
18258
 
 
18259
 
 
18260
Authentication error.
 
18261
 
 
18262
\begin{tabulary}{\linewidth}{|L|L|}
 
18263
\hline
 
18264
 
 
18265
\code{KRB5\_KPASSWD\_AUTHERROR}
 
18266
 & 
 
18267
\code{3}
 
18268
\\\hline
 
18269
\end{tabulary}
 
18270
 
 
18271
 
 
18272
 
 
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)}
 
18275
 
 
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}
 
18279
 
 
18280
 
 
18281
Unknown RPC version.
 
18282
 
 
18283
\begin{tabulary}{\linewidth}{|L|L|}
 
18284
\hline
 
18285
 
 
18286
\code{KRB5\_KPASSWD\_BAD\_VERSION}
 
18287
 & 
 
18288
\code{6}
 
18289
\\\hline
 
18290
\end{tabulary}
 
18291
 
 
18292
 
 
18293
 
 
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)}
 
18296
 
 
18297
\begin{fulllineitems}
 
18298
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR}\pysigline{\bfcode{KRB5\_KPASSWD\_HARDERROR}}
 
18299
\end{fulllineitems}
 
18300
 
 
18301
 
 
18302
Server error.
 
18303
 
 
18304
\begin{tabulary}{\linewidth}{|L|L|}
 
18305
\hline
 
18306
 
 
18307
\code{KRB5\_KPASSWD\_HARDERROR}
 
18308
 & 
 
18309
\code{2}
 
18310
\\\hline
 
18311
\end{tabulary}
 
18312
 
 
18313
 
 
18314
 
 
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)}
 
18317
 
 
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}
 
18321
 
 
18322
 
 
18323
The presented credentials were not obtained using a password directly.
 
18324
 
 
18325
\begin{tabulary}{\linewidth}{|L|L|}
 
18326
\hline
 
18327
 
 
18328
\code{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}
 
18329
 & 
 
18330
\code{7}
 
18331
\\\hline
 
18332
\end{tabulary}
 
18333
 
 
18334
 
 
18335
 
 
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)}
 
18338
 
 
18339
\begin{fulllineitems}
 
18340
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED}\pysigline{\bfcode{KRB5\_KPASSWD\_MALFORMED}}
 
18341
\end{fulllineitems}
 
18342
 
 
18343
 
 
18344
Malformed request.
 
18345
 
 
18346
\begin{tabulary}{\linewidth}{|L|L|}
 
18347
\hline
 
18348
 
 
18349
\code{KRB5\_KPASSWD\_MALFORMED}
 
18350
 & 
 
18351
\code{1}
 
18352
\\\hline
 
18353
\end{tabulary}
 
18354
 
 
18355
 
 
18356
 
 
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)}
 
18359
 
 
18360
\begin{fulllineitems}
 
18361
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR}\pysigline{\bfcode{KRB5\_KPASSWD\_SOFTERROR}}
 
18362
\end{fulllineitems}
 
18363
 
 
18364
 
 
18365
Password change rejected.
 
18366
 
 
18367
\begin{tabulary}{\linewidth}{|L|L|}
 
18368
\hline
 
18369
 
 
18370
\code{KRB5\_KPASSWD\_SOFTERROR}
 
18371
 & 
 
18372
\code{4}
 
18373
\\\hline
 
18374
\end{tabulary}
 
18375
 
 
18376
 
 
18377
 
 
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)}
 
18380
 
 
18381
\begin{fulllineitems}
 
18382
\phantomsection\label{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS}\pysigline{\bfcode{KRB5\_KPASSWD\_SUCCESS}}
 
18383
\end{fulllineitems}
 
18384
 
 
18385
 
 
18386
Success.
 
18387
 
 
18388
\begin{tabulary}{\linewidth}{|L|L|}
 
18389
\hline
 
18390
 
 
18391
\code{KRB5\_KPASSWD\_SUCCESS}
 
18392
 & 
 
18393
\code{0}
 
18394
\\\hline
 
18395
\end{tabulary}
 
18396
 
 
18397
 
 
18398
 
 
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)}
 
18401
 
 
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}
 
18405
 
 
18406
 
 
18407
\begin{tabulary}{\linewidth}{|L|L|}
 
18408
\hline
 
18409
 
 
18410
\code{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}
 
18411
 & 
 
18412
\code{7}
 
18413
\\\hline
 
18414
\end{tabulary}
 
18415
 
 
18416
 
 
18417
 
 
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)}
 
18420
 
 
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}
 
18424
 
 
18425
 
 
18426
\begin{tabulary}{\linewidth}{|L|L|}
 
18427
\hline
 
18428
 
 
18429
\code{KRB5\_LRQ\_ALL\_LAST\_INITIAL}
 
18430
 & 
 
18431
\code{2}
 
18432
\\\hline
 
18433
\end{tabulary}
 
18434
 
 
18435
 
 
18436
 
 
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)}
 
18439
 
 
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}
 
18443
 
 
18444
 
 
18445
\begin{tabulary}{\linewidth}{|L|L|}
 
18446
\hline
 
18447
 
 
18448
\code{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}
 
18449
 & 
 
18450
\code{4}
 
18451
\\\hline
 
18452
\end{tabulary}
 
18453
 
 
18454
 
 
18455
 
 
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)}
 
18458
 
 
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}
 
18462
 
 
18463
 
 
18464
\begin{tabulary}{\linewidth}{|L|L|}
 
18465
\hline
 
18466
 
 
18467
\code{KRB5\_LRQ\_ALL\_LAST\_REQ}
 
18468
 & 
 
18469
\code{5}
 
18470
\\\hline
 
18471
\end{tabulary}
 
18472
 
 
18473
 
 
18474
 
 
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)}
 
18477
 
 
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}
 
18481
 
 
18482
 
 
18483
\begin{tabulary}{\linewidth}{|L|L|}
 
18484
\hline
 
18485
 
 
18486
\code{KRB5\_LRQ\_ALL\_LAST\_TGT}
 
18487
 & 
 
18488
\code{1}
 
18489
\\\hline
 
18490
\end{tabulary}
 
18491
 
 
18492
 
 
18493
 
 
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)}
 
18496
 
 
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}
 
18500
 
 
18501
 
 
18502
\begin{tabulary}{\linewidth}{|L|L|}
 
18503
\hline
 
18504
 
 
18505
\code{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}
 
18506
 & 
 
18507
\code{3}
 
18508
\\\hline
 
18509
\end{tabulary}
 
18510
 
 
18511
 
 
18512
 
 
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)}
 
18515
 
 
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}
 
18519
 
 
18520
 
 
18521
\begin{tabulary}{\linewidth}{|L|L|}
 
18522
\hline
 
18523
 
 
18524
\code{KRB5\_LRQ\_ALL\_PW\_EXPTIME}
 
18525
 & 
 
18526
\code{6}
 
18527
\\\hline
 
18528
\end{tabulary}
 
18529
 
 
18530
 
 
18531
 
 
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)}
 
18534
 
 
18535
\begin{fulllineitems}
 
18536
\phantomsection\label{appdev/refs/macros/KRB5_LRQ_NONE:KRB5_LRQ_NONE}\pysigline{\bfcode{KRB5\_LRQ\_NONE}}
 
18537
\end{fulllineitems}
 
18538
 
 
18539
 
 
18540
\begin{tabulary}{\linewidth}{|L|L|}
 
18541
\hline
 
18542
 
 
18543
\code{KRB5\_LRQ\_NONE}
 
18544
 & 
 
18545
\code{0}
 
18546
\\\hline
 
18547
\end{tabulary}
 
18548
 
 
18549
 
 
18550
 
 
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)}
 
18553
 
 
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}
 
18557
 
 
18558
 
 
18559
\begin{tabulary}{\linewidth}{|L|L|}
 
18560
\hline
 
18561
 
 
18562
\code{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}
 
18563
 & 
 
18564
\code{(-7)}
 
18565
\\\hline
 
18566
\end{tabulary}
 
18567
 
 
18568
 
 
18569
 
 
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)}
 
18572
 
 
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}
 
18576
 
 
18577
 
 
18578
\begin{tabulary}{\linewidth}{|L|L|}
 
18579
\hline
 
18580
 
 
18581
\code{KRB5\_LRQ\_ONE\_LAST\_INITIAL}
 
18582
 & 
 
18583
\code{(-2)}
 
18584
\\\hline
 
18585
\end{tabulary}
 
18586
 
 
18587
 
 
18588
 
 
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)}
 
18591
 
 
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}
 
18595
 
 
18596
 
 
18597
\begin{tabulary}{\linewidth}{|L|L|}
 
18598
\hline
 
18599
 
 
18600
\code{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}
 
18601
 & 
 
18602
\code{(-4)}
 
18603
\\\hline
 
18604
\end{tabulary}
 
18605
 
 
18606
 
 
18607
 
 
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)}
 
18610
 
 
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}
 
18614
 
 
18615
 
 
18616
\begin{tabulary}{\linewidth}{|L|L|}
 
18617
\hline
 
18618
 
 
18619
\code{KRB5\_LRQ\_ONE\_LAST\_REQ}
 
18620
 & 
 
18621
\code{(-5)}
 
18622
\\\hline
 
18623
\end{tabulary}
 
18624
 
 
18625
 
 
18626
 
 
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)}
 
18629
 
 
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}
 
18633
 
 
18634
 
 
18635
\begin{tabulary}{\linewidth}{|L|L|}
 
18636
\hline
 
18637
 
 
18638
\code{KRB5\_LRQ\_ONE\_LAST\_TGT}
 
18639
 & 
 
18640
\code{(-1)}
 
18641
\\\hline
 
18642
\end{tabulary}
 
18643
 
 
18644
 
 
18645
 
 
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)}
 
18648
 
 
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}
 
18652
 
 
18653
 
 
18654
\begin{tabulary}{\linewidth}{|L|L|}
 
18655
\hline
 
18656
 
 
18657
\code{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}
 
18658
 & 
 
18659
\code{(-3)}
 
18660
\\\hline
 
18661
\end{tabulary}
 
18662
 
 
18663
 
 
18664
 
 
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)}
 
18667
 
 
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}
 
18671
 
 
18672
 
 
18673
\begin{tabulary}{\linewidth}{|L|L|}
 
18674
\hline
 
18675
 
 
18676
\code{KRB5\_LRQ\_ONE\_PW\_EXPTIME}
 
18677
 & 
 
18678
\code{(-6)}
 
18679
\\\hline
 
18680
\end{tabulary}
 
18681
 
 
18682
 
 
18683
 
 
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)}
 
18686
 
 
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}
 
18690
 
 
18691
 
 
18692
Windows 2000 UPN.
 
18693
 
 
18694
\begin{tabulary}{\linewidth}{|L|L|}
 
18695
\hline
 
18696
 
 
18697
\code{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}
 
18698
 & 
 
18699
\code{10}
 
18700
\\\hline
 
18701
\end{tabulary}
 
18702
 
 
18703
 
 
18704
 
 
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)}
 
18707
 
 
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}
 
18711
 
 
18712
 
 
18713
NT 4 style name and SID.
 
18714
 
 
18715
\begin{tabulary}{\linewidth}{|L|L|}
 
18716
\hline
 
18717
 
 
18718
\code{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}
 
18719
 & 
 
18720
\code{-130}
 
18721
\\\hline
 
18722
\end{tabulary}
 
18723
 
 
18724
 
 
18725
 
 
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)}
 
18728
 
 
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}
 
18732
 
 
18733
 
 
18734
Windows 2000 UPN and SID.
 
18735
 
 
18736
\begin{tabulary}{\linewidth}{|L|L|}
 
18737
\hline
 
18738
 
 
18739
\code{KRB5\_NT\_MS\_PRINCIPAL}
 
18740
 & 
 
18741
\code{-128}
 
18742
\\\hline
 
18743
\end{tabulary}
 
18744
 
 
18745
 
 
18746
 
 
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)}
 
18749
 
 
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}
 
18753
 
 
18754
 
 
18755
NT 4 style name.
 
18756
 
 
18757
\begin{tabulary}{\linewidth}{|L|L|}
 
18758
\hline
 
18759
 
 
18760
\code{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}
 
18761
 & 
 
18762
\code{-129}
 
18763
\\\hline
 
18764
\end{tabulary}
 
18765
 
 
18766
 
 
18767
 
 
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)}
 
18770
 
 
18771
\begin{fulllineitems}
 
18772
\phantomsection\label{appdev/refs/macros/KRB5_NT_PRINCIPAL:KRB5_NT_PRINCIPAL}\pysigline{\bfcode{KRB5\_NT\_PRINCIPAL}}
 
18773
\end{fulllineitems}
 
18774
 
 
18775
 
 
18776
Just the name of the principal as in DCE, or for users.
 
18777
 
 
18778
\begin{tabulary}{\linewidth}{|L|L|}
 
18779
\hline
 
18780
 
 
18781
\code{KRB5\_NT\_PRINCIPAL}
 
18782
 & 
 
18783
\code{1}
 
18784
\\\hline
 
18785
\end{tabulary}
 
18786
 
 
18787
 
 
18788
 
 
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)}
 
18791
 
 
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}
 
18795
 
 
18796
 
 
18797
Name in form of SMTP email name.
 
18798
 
 
18799
\begin{tabulary}{\linewidth}{|L|L|}
 
18800
\hline
 
18801
 
 
18802
\code{KRB5\_NT\_SMTP\_NAME}
 
18803
 & 
 
18804
\code{7}
 
18805
\\\hline
 
18806
\end{tabulary}
 
18807
 
 
18808
 
 
18809
 
 
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)}
 
18812
 
 
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}
 
18816
 
 
18817
 
 
18818
Service with host name as instance (telnet, rcommands)
 
18819
 
 
18820
\begin{tabulary}{\linewidth}{|L|L|}
 
18821
\hline
 
18822
 
 
18823
\code{KRB5\_NT\_SRV\_HST}
 
18824
 & 
 
18825
\code{3}
 
18826
\\\hline
 
18827
\end{tabulary}
 
18828
 
 
18829
 
 
18830
 
 
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)}
 
18833
 
 
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}
 
18837
 
 
18838
 
 
18839
Service and other unique instance (krbtgt)
 
18840
 
 
18841
\begin{tabulary}{\linewidth}{|L|L|}
 
18842
\hline
 
18843
 
 
18844
\code{KRB5\_NT\_SRV\_INST}
 
18845
 & 
 
18846
\code{2}
 
18847
\\\hline
 
18848
\end{tabulary}
 
18849
 
 
18850
 
 
18851
 
 
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)}
 
18854
 
 
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}
 
18858
 
 
18859
 
 
18860
Service with host as remaining components.
 
18861
 
 
18862
\begin{tabulary}{\linewidth}{|L|L|}
 
18863
\hline
 
18864
 
 
18865
\code{KRB5\_NT\_SRV\_XHST}
 
18866
 & 
 
18867
\code{4}
 
18868
\\\hline
 
18869
\end{tabulary}
 
18870
 
 
18871
 
 
18872
 
 
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)}
 
18875
 
 
18876
\begin{fulllineitems}
 
18877
\phantomsection\label{appdev/refs/macros/KRB5_NT_UID:KRB5_NT_UID}\pysigline{\bfcode{KRB5\_NT\_UID}}
 
18878
\end{fulllineitems}
 
18879
 
 
18880
 
 
18881
Unique ID.
 
18882
 
 
18883
\begin{tabulary}{\linewidth}{|L|L|}
 
18884
\hline
 
18885
 
 
18886
\code{KRB5\_NT\_UID}
 
18887
 & 
 
18888
\code{5}
 
18889
\\\hline
 
18890
\end{tabulary}
 
18891
 
 
18892
 
 
18893
 
 
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)}
 
18896
 
 
18897
\begin{fulllineitems}
 
18898
\phantomsection\label{appdev/refs/macros/KRB5_NT_UNKNOWN:KRB5_NT_UNKNOWN}\pysigline{\bfcode{KRB5\_NT\_UNKNOWN}}
 
18899
\end{fulllineitems}
 
18900
 
 
18901
 
 
18902
Name type not known.
 
18903
 
 
18904
\begin{tabulary}{\linewidth}{|L|L|}
 
18905
\hline
 
18906
 
 
18907
\code{KRB5\_NT\_UNKNOWN}
 
18908
 & 
 
18909
\code{0}
 
18910
\\\hline
 
18911
\end{tabulary}
 
18912
 
 
18913
 
 
18914
 
 
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)}
 
18917
 
 
18918
\begin{fulllineitems}
 
18919
\phantomsection\label{appdev/refs/macros/KRB5_NT_WELLKNOWN:KRB5_NT_WELLKNOWN}\pysigline{\bfcode{KRB5\_NT\_WELLKNOWN}}
 
18920
\end{fulllineitems}
 
18921
 
 
18922
 
 
18923
Well-known (special) principal.
 
18924
 
 
18925
\begin{tabulary}{\linewidth}{|L|L|}
 
18926
\hline
 
18927
 
 
18928
\code{KRB5\_NT\_WELLKNOWN}
 
18929
 & 
 
18930
\code{11}
 
18931
\\\hline
 
18932
\end{tabulary}
 
18933
 
 
18934
 
 
18935
 
 
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)}
 
18938
 
 
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}
 
18942
 
 
18943
 
 
18944
PKINIT.
 
18945
 
 
18946
\begin{tabulary}{\linewidth}{|L|L|}
 
18947
\hline
 
18948
 
 
18949
\code{KRB5\_NT\_X500\_PRINCIPAL}
 
18950
 & 
 
18951
\code{6}
 
18952
\\\hline
 
18953
\end{tabulary}
 
18954
 
 
18955
 
 
18956
 
 
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)}
 
18959
 
 
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}
 
18963
 
 
18964
 
 
18965
Client name and ticket info.
 
18966
 
 
18967
\begin{tabulary}{\linewidth}{|L|L|}
 
18968
\hline
 
18969
 
 
18970
\code{KRB5\_PAC\_CLIENT\_INFO}
 
18971
 & 
 
18972
\code{10}
 
18973
\\\hline
 
18974
\end{tabulary}
 
18975
 
 
18976
 
 
18977
 
 
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)}
 
18980
 
 
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}
 
18984
 
 
18985
 
 
18986
Credentials information.
 
18987
 
 
18988
\begin{tabulary}{\linewidth}{|L|L|}
 
18989
\hline
 
18990
 
 
18991
\code{KRB5\_PAC\_CREDENTIALS\_INFO}
 
18992
 & 
 
18993
\code{2}
 
18994
\\\hline
 
18995
\end{tabulary}
 
18996
 
 
18997
 
 
18998
 
 
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)}
 
19001
 
 
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}
 
19005
 
 
19006
 
 
19007
Constrained delegation info.
 
19008
 
 
19009
\begin{tabulary}{\linewidth}{|L|L|}
 
19010
\hline
 
19011
 
 
19012
\code{KRB5\_PAC\_DELEGATION\_INFO}
 
19013
 & 
 
19014
\code{11}
 
19015
\\\hline
 
19016
\end{tabulary}
 
19017
 
 
19018
 
 
19019
 
 
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)}
 
19022
 
 
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}
 
19026
 
 
19027
 
 
19028
Logon information.
 
19029
 
 
19030
\begin{tabulary}{\linewidth}{|L|L|}
 
19031
\hline
 
19032
 
 
19033
\code{KRB5\_PAC\_LOGON\_INFO}
 
19034
 & 
 
19035
\code{1}
 
19036
\\\hline
 
19037
\end{tabulary}
 
19038
 
 
19039
 
 
19040
 
 
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)}
 
19043
 
 
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}
 
19047
 
 
19048
 
 
19049
KDC checksum.
 
19050
 
 
19051
\begin{tabulary}{\linewidth}{|L|L|}
 
19052
\hline
 
19053
 
 
19054
\code{KRB5\_PAC\_PRIVSVR\_CHECKSUM}
 
19055
 & 
 
19056
\code{7}
 
19057
\\\hline
 
19058
\end{tabulary}
 
19059
 
 
19060
 
 
19061
 
 
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)}
 
19064
 
 
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}
 
19068
 
 
19069
 
 
19070
Server checksum.
 
19071
 
 
19072
\begin{tabulary}{\linewidth}{|L|L|}
 
19073
\hline
 
19074
 
 
19075
\code{KRB5\_PAC\_SERVER\_CHECKSUM}
 
19076
 & 
 
19077
\code{6}
 
19078
\\\hline
 
19079
\end{tabulary}
 
19080
 
 
19081
 
 
19082
 
 
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)}
 
19085
 
 
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}
 
19089
 
 
19090
 
 
19091
User principal name and DNS info.
 
19092
 
 
19093
\begin{tabulary}{\linewidth}{|L|L|}
 
19094
\hline
 
19095
 
 
19096
\code{KRB5\_PAC\_UPN\_DNS\_INFO}
 
19097
 & 
 
19098
\code{12}
 
19099
\\\hline
 
19100
\end{tabulary}
 
19101
 
 
19102
 
 
19103
 
 
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)}
 
19106
 
 
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}
 
19110
 
 
19111
 
 
19112
Cygnus.
 
19113
 
 
19114
\begin{tabulary}{\linewidth}{|L|L|}
 
19115
\hline
 
19116
 
 
19117
\code{KRB5\_PADATA\_AFS3\_SALT}
 
19118
 & 
 
19119
\code{10}
 
19120
\\\hline
 
19121
\end{tabulary}
 
19122
 
 
19123
 
 
19124
 
 
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)}
 
19127
 
 
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}
 
19131
 
 
19132
 
 
19133
\begin{tabulary}{\linewidth}{|L|L|}
 
19134
\hline
 
19135
 
 
19136
\code{KRB5\_PADATA\_AP\_REQ}
 
19137
 & 
 
19138
\code{1}
 
19139
\\\hline
 
19140
\end{tabulary}
 
19141
 
 
19142
 
 
19143
 
 
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)}
 
19146
 
 
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}
 
19150
 
 
19151
 
 
19152
\begin{tabulary}{\linewidth}{|L|L|}
 
19153
\hline
 
19154
 
 
19155
\code{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}
 
19156
 & 
 
19157
\code{138}
 
19158
\\\hline
 
19159
\end{tabulary}
 
19160
 
 
19161
 
 
19162
 
 
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)}
 
19165
 
 
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}
 
19169
 
 
19170
 
 
19171
SecurId passcode.
 
19172
 
 
19173
\begin{tabulary}{\linewidth}{|L|L|}
 
19174
\hline
 
19175
 
 
19176
\code{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}
 
19177
 & 
 
19178
\code{6}
 
19179
\\\hline
 
19180
\end{tabulary}
 
19181
 
 
19182
 
 
19183
 
 
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)}
 
19186
 
 
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}
 
19190
 
 
19191
 
 
19192
\begin{tabulary}{\linewidth}{|L|L|}
 
19193
\hline
 
19194
 
 
19195
\code{KRB5\_PADATA\_ENC\_TIMESTAMP}
 
19196
 & 
 
19197
\code{2}
 
19198
\\\hline
 
19199
\end{tabulary}
 
19200
 
 
19201
 
 
19202
 
 
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)}
 
19205
 
 
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}
 
19209
 
 
19210
 
 
19211
timestamp encrypted in key
 
19212
 
 
19213
\begin{tabulary}{\linewidth}{|L|L|}
 
19214
\hline
 
19215
 
 
19216
\code{KRB5\_PADATA\_ENC\_UNIX\_TIME}
 
19217
 & 
 
19218
\code{5}
 
19219
\\\hline
 
19220
\end{tabulary}
 
19221
 
 
19222
 
 
19223
 
 
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)}
 
19226
 
 
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}
 
19230
 
 
19231
 
 
19232
Etype info for preauth.
 
19233
 
 
19234
\begin{tabulary}{\linewidth}{|L|L|}
 
19235
\hline
 
19236
 
 
19237
\code{KRB5\_PADATA\_ETYPE\_INFO}
 
19238
 & 
 
19239
\code{11}
 
19240
\\\hline
 
19241
\end{tabulary}
 
19242
 
 
19243
 
 
19244
 
 
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)}
 
19247
 
 
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}
 
19251
 
 
19252
 
 
19253
\begin{tabulary}{\linewidth}{|L|L|}
 
19254
\hline
 
19255
 
 
19256
\code{KRB5\_PADATA\_ETYPE\_INFO2}
 
19257
 & 
 
19258
\code{19}
 
19259
\\\hline
 
19260
\end{tabulary}
 
19261
 
 
19262
 
 
19263
 
 
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)}
 
19266
 
 
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}
 
19270
 
 
19271
 
 
19272
username protocol transition request
 
19273
 
 
19274
\begin{tabulary}{\linewidth}{|L|L|}
 
19275
\hline
 
19276
 
 
19277
\code{KRB5\_PADATA\_FOR\_USER}
 
19278
 & 
 
19279
\code{129}
 
19280
\\\hline
 
19281
\end{tabulary}
 
19282
 
 
19283
 
 
19284
 
 
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)}
 
19287
 
 
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}
 
19291
 
 
19292
 
 
19293
\begin{tabulary}{\linewidth}{|L|L|}
 
19294
\hline
 
19295
 
 
19296
\code{KRB5\_PADATA\_FX\_COOKIE}
 
19297
 & 
 
19298
\code{133}
 
19299
\\\hline
 
19300
\end{tabulary}
 
19301
 
 
19302
 
 
19303
 
 
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)}
 
19306
 
 
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}
 
19310
 
 
19311
 
 
19312
\begin{tabulary}{\linewidth}{|L|L|}
 
19313
\hline
 
19314
 
 
19315
\code{KRB5\_PADATA\_FX\_ERROR}
 
19316
 & 
 
19317
\code{137}
 
19318
\\\hline
 
19319
\end{tabulary}
 
19320
 
 
19321
 
 
19322
 
 
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)}
 
19325
 
 
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}
 
19329
 
 
19330
 
 
19331
\begin{tabulary}{\linewidth}{|L|L|}
 
19332
\hline
 
19333
 
 
19334
\code{KRB5\_PADATA\_FX\_FAST}
 
19335
 & 
 
19336
\code{136}
 
19337
\\\hline
 
19338
\end{tabulary}
 
19339
 
 
19340
 
 
19341
 
 
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)}
 
19344
 
 
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}
 
19348
 
 
19349
 
 
19350
\begin{tabulary}{\linewidth}{|L|L|}
 
19351
\hline
 
19352
 
 
19353
\code{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}
 
19354
 & 
 
19355
\code{22}
 
19356
\\\hline
 
19357
\end{tabulary}
 
19358
 
 
19359
 
 
19360
 
 
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)}
 
19363
 
 
19364
\begin{fulllineitems}
 
19365
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_NONE:KRB5_PADATA_NONE}\pysigline{\bfcode{KRB5\_PADATA\_NONE}}
 
19366
\end{fulllineitems}
 
19367
 
 
19368
 
 
19369
\begin{tabulary}{\linewidth}{|L|L|}
 
19370
\hline
 
19371
 
 
19372
\code{KRB5\_PADATA\_NONE}
 
19373
 & 
 
19374
\code{0}
 
19375
\\\hline
 
19376
\end{tabulary}
 
19377
 
 
19378
 
 
19379
 
 
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)}
 
19382
 
 
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}
 
19386
 
 
19387
 
 
19388
OSF DCE.
 
19389
 
 
19390
\begin{tabulary}{\linewidth}{|L|L|}
 
19391
\hline
 
19392
 
 
19393
\code{KRB5\_PADATA\_OSF\_DCE}
 
19394
 & 
 
19395
\code{8}
 
19396
\\\hline
 
19397
\end{tabulary}
 
19398
 
 
19399
 
 
19400
 
 
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)}
 
19403
 
 
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}
 
19407
 
 
19408
 
 
19409
See RFC 6560 section 4.1.
 
19410
 
 
19411
\begin{tabulary}{\linewidth}{|L|L|}
 
19412
\hline
 
19413
 
 
19414
\code{KRB5\_PADATA\_OTP\_CHALLENGE}
 
19415
 & 
 
19416
\code{141}
 
19417
\\\hline
 
19418
\end{tabulary}
 
19419
 
 
19420
 
 
19421
 
 
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)}
 
19424
 
 
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}
 
19428
 
 
19429
 
 
19430
See RFC 6560 section 4.3.
 
19431
 
 
19432
\begin{tabulary}{\linewidth}{|L|L|}
 
19433
\hline
 
19434
 
 
19435
\code{KRB5\_PADATA\_OTP\_PIN\_CHANGE}
 
19436
 & 
 
19437
\code{144}
 
19438
\\\hline
 
19439
\end{tabulary}
 
19440
 
 
19441
 
 
19442
 
 
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)}
 
19445
 
 
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}
 
19449
 
 
19450
 
 
19451
See RFC 6560 section 4.2.
 
19452
 
 
19453
\begin{tabulary}{\linewidth}{|L|L|}
 
19454
\hline
 
19455
 
 
19456
\code{KRB5\_PADATA\_OTP\_REQUEST}
 
19457
 & 
 
19458
\code{142}
 
19459
\\\hline
 
19460
\end{tabulary}
 
19461
 
 
19462
 
 
19463
 
 
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)}
 
19466
 
 
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}
 
19470
 
 
19471
 
 
19472
include Windows PAC
 
19473
 
 
19474
\begin{tabulary}{\linewidth}{|L|L|}
 
19475
\hline
 
19476
 
 
19477
\code{KRB5\_PADATA\_PAC\_REQUEST}
 
19478
 & 
 
19479
\code{128}
 
19480
\\\hline
 
19481
\end{tabulary}
 
19482
 
 
19483
 
 
19484
 
 
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)}
 
19487
 
 
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}
 
19491
 
 
19492
 
 
19493
\begin{tabulary}{\linewidth}{|L|L|}
 
19494
\hline
 
19495
 
 
19496
\code{KRB5\_PADATA\_PKINIT\_KX}
 
19497
 & 
 
19498
\code{147}
 
19499
\\\hline
 
19500
\end{tabulary}
 
19501
 
 
19502
 
 
19503
 
 
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)}
 
19506
 
 
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}
 
19510
 
 
19511
 
 
19512
PKINIT.
 
19513
 
 
19514
\begin{tabulary}{\linewidth}{|L|L|}
 
19515
\hline
 
19516
 
 
19517
\code{KRB5\_PADATA\_PK\_AS\_REP}
 
19518
 & 
 
19519
\code{17}
 
19520
\\\hline
 
19521
\end{tabulary}
 
19522
 
 
19523
 
 
19524
 
 
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)}
 
19527
 
 
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}
 
19531
 
 
19532
 
 
19533
PKINIT.
 
19534
 
 
19535
\begin{tabulary}{\linewidth}{|L|L|}
 
19536
\hline
 
19537
 
 
19538
\code{KRB5\_PADATA\_PK\_AS\_REP\_OLD}
 
19539
 & 
 
19540
\code{15}
 
19541
\\\hline
 
19542
\end{tabulary}
 
19543
 
 
19544
 
 
19545
 
 
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)}
 
19548
 
 
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}
 
19552
 
 
19553
 
 
19554
PKINIT.
 
19555
 
 
19556
\begin{tabulary}{\linewidth}{|L|L|}
 
19557
\hline
 
19558
 
 
19559
\code{KRB5\_PADATA\_PK\_AS\_REQ}
 
19560
 & 
 
19561
\code{16}
 
19562
\\\hline
 
19563
\end{tabulary}
 
19564
 
 
19565
 
 
19566
 
 
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)}
 
19569
 
 
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}
 
19573
 
 
19574
 
 
19575
PKINIT.
 
19576
 
 
19577
\begin{tabulary}{\linewidth}{|L|L|}
 
19578
\hline
 
19579
 
 
19580
\code{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}
 
19581
 & 
 
19582
\code{14}
 
19583
\\\hline
 
19584
\end{tabulary}
 
19585
 
 
19586
 
 
19587
 
 
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)}
 
19590
 
 
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}
 
19594
 
 
19595
 
 
19596
\begin{tabulary}{\linewidth}{|L|L|}
 
19597
\hline
 
19598
 
 
19599
\code{KRB5\_PADATA\_PW\_SALT}
 
19600
 & 
 
19601
\code{3}
 
19602
\\\hline
 
19603
\end{tabulary}
 
19604
 
 
19605
 
 
19606
 
 
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)}
 
19609
 
 
19610
\begin{fulllineitems}
 
19611
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_REFERRAL:KRB5_PADATA_REFERRAL}\pysigline{\bfcode{KRB5\_PADATA\_REFERRAL}}
 
19612
\end{fulllineitems}
 
19613
 
 
19614
 
 
19615
draft referral system
 
19616
 
 
19617
\begin{tabulary}{\linewidth}{|L|L|}
 
19618
\hline
 
19619
 
 
19620
\code{KRB5\_PADATA\_REFERRAL}
 
19621
 & 
 
19622
\code{25}
 
19623
\\\hline
 
19624
\end{tabulary}
 
19625
 
 
19626
 
 
19627
 
 
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)}
 
19630
 
 
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}
 
19634
 
 
19635
 
 
19636
certificate protocol transition request
 
19637
 
 
19638
\begin{tabulary}{\linewidth}{|L|L|}
 
19639
\hline
 
19640
 
 
19641
\code{KRB5\_PADATA\_S4U\_X509\_USER}
 
19642
 & 
 
19643
\code{130}
 
19644
\\\hline
 
19645
\end{tabulary}
 
19646
 
 
19647
 
 
19648
 
 
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)}
 
19651
 
 
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}
 
19655
 
 
19656
 
 
19657
draft challenge system
 
19658
 
 
19659
\begin{tabulary}{\linewidth}{|L|L|}
 
19660
\hline
 
19661
 
 
19662
\code{KRB5\_PADATA\_SAM\_CHALLENGE}
 
19663
 & 
 
19664
\code{12}
 
19665
\\\hline
 
19666
\end{tabulary}
 
19667
 
 
19668
 
 
19669
 
 
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)}
 
19672
 
 
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}
 
19676
 
 
19677
 
 
19678
draft challenge system, updated
 
19679
 
 
19680
\begin{tabulary}{\linewidth}{|L|L|}
 
19681
\hline
 
19682
 
 
19683
\code{KRB5\_PADATA\_SAM\_CHALLENGE\_2}
 
19684
 & 
 
19685
\code{30}
 
19686
\\\hline
 
19687
\end{tabulary}
 
19688
 
 
19689
 
 
19690
 
 
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)}
 
19693
 
 
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}
 
19697
 
 
19698
 
 
19699
\begin{tabulary}{\linewidth}{|L|L|}
 
19700
\hline
 
19701
 
 
19702
\code{KRB5\_PADATA\_SAM\_REDIRECT}
 
19703
 & 
 
19704
\code{21}
 
19705
\\\hline
 
19706
\end{tabulary}
 
19707
 
 
19708
 
 
19709
 
 
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)}
 
19712
 
 
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}
 
19716
 
 
19717
 
 
19718
draft challenge system response
 
19719
 
 
19720
\begin{tabulary}{\linewidth}{|L|L|}
 
19721
\hline
 
19722
 
 
19723
\code{KRB5\_PADATA\_SAM\_RESPONSE}
 
19724
 & 
 
19725
\code{13}
 
19726
\\\hline
 
19727
\end{tabulary}
 
19728
 
 
19729
 
 
19730
 
 
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)}
 
19733
 
 
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}
 
19737
 
 
19738
 
 
19739
draft challenge system, updated
 
19740
 
 
19741
\begin{tabulary}{\linewidth}{|L|L|}
 
19742
\hline
 
19743
 
 
19744
\code{KRB5\_PADATA\_SAM\_RESPONSE\_2}
 
19745
 & 
 
19746
\code{31}
 
19747
\\\hline
 
19748
\end{tabulary}
 
19749
 
 
19750
 
 
19751
 
 
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)}
 
19754
 
 
19755
\begin{fulllineitems}
 
19756
\phantomsection\label{appdev/refs/macros/KRB5_PADATA_SESAME:KRB5_PADATA_SESAME}\pysigline{\bfcode{KRB5\_PADATA\_SESAME}}
 
19757
\end{fulllineitems}
 
19758
 
 
19759
 
 
19760
Sesame project.
 
19761
 
 
19762
\begin{tabulary}{\linewidth}{|L|L|}
 
19763
\hline
 
19764
 
 
19765
\code{KRB5\_PADATA\_SESAME}
 
19766
 & 
 
19767
\code{7}
 
19768
\\\hline
 
19769
\end{tabulary}
 
19770
 
 
19771
 
 
19772
 
 
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)}
 
19775
 
 
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}
 
19779
 
 
19780
 
 
19781
Windows 2000 referrals.
 
19782
 
 
19783
\begin{tabulary}{\linewidth}{|L|L|}
 
19784
\hline
 
19785
 
 
19786
\code{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}
 
19787
 & 
 
19788
\code{20}
 
19789
\\\hline
 
19790
\end{tabulary}
 
19791
 
 
19792
 
 
19793
 
 
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)}
 
19796
 
 
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}
 
19800
 
 
19801
 
 
19802
\begin{tabulary}{\linewidth}{|L|L|}
 
19803
\hline
 
19804
 
 
19805
\code{KRB5\_PADATA\_TGS\_REQ}
 
19806
 & 
 
19807
\code{KRB5\_PADATA\_AP\_REQ}
 
19808
\\\hline
 
19809
\end{tabulary}
 
19810
 
 
19811
 
 
19812
 
 
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)}
 
19815
 
 
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}
 
19819
 
 
19820
 
 
19821
\begin{tabulary}{\linewidth}{|L|L|}
 
19822
\hline
 
19823
 
 
19824
\code{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}
 
19825
 & 
 
19826
\code{20}
 
19827
\\\hline
 
19828
\end{tabulary}
 
19829
 
 
19830
 
 
19831
 
 
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)}
 
19834
 
 
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}
 
19838
 
 
19839
 
 
19840
case-insensitive
 
19841
 
 
19842
\begin{tabulary}{\linewidth}{|L|L|}
 
19843
\hline
 
19844
 
 
19845
\code{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}
 
19846
 & 
 
19847
\code{4}
 
19848
\\\hline
 
19849
\end{tabulary}
 
19850
 
 
19851
 
 
19852
 
 
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)}
 
19855
 
 
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}
 
19859
 
 
19860
 
 
19861
UPNs as real principals.
 
19862
 
 
19863
\begin{tabulary}{\linewidth}{|L|L|}
 
19864
\hline
 
19865
 
 
19866
\code{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}
 
19867
 & 
 
19868
\code{2}
 
19869
\\\hline
 
19870
\end{tabulary}
 
19871
 
 
19872
 
 
19873
 
 
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)}
 
19876
 
 
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}
 
19880
 
 
19881
 
 
19882
ignore realm component
 
19883
 
 
19884
\begin{tabulary}{\linewidth}{|L|L|}
 
19885
\hline
 
19886
 
 
19887
\code{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}
 
19888
 & 
 
19889
\code{1}
 
19890
\\\hline
 
19891
\end{tabulary}
 
19892
 
 
19893
 
 
19894
 
 
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)}
 
19897
 
 
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}
 
19901
 
 
19902
 
 
19903
treat principals as UTF-8
 
19904
 
 
19905
\begin{tabulary}{\linewidth}{|L|L|}
 
19906
\hline
 
19907
 
 
19908
\code{KRB5\_PRINCIPAL\_COMPARE\_UTF8}
 
19909
 & 
 
19910
\code{8}
 
19911
\\\hline
 
19912
\end{tabulary}
 
19913
 
 
19914
 
 
19915
 
 
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)}
 
19918
 
 
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}
 
19922
 
 
19923
 
 
19924
Create single-component enterprise principle.
 
19925
 
 
19926
\begin{tabulary}{\linewidth}{|L|L|}
 
19927
\hline
 
19928
 
 
19929
\code{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}
 
19930
 & 
 
19931
\code{0x4}
 
19932
\\\hline
 
19933
\end{tabulary}
 
19934
 
 
19935
 
 
19936
 
 
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)}
 
19939
 
 
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}
 
19943
 
 
19944
 
 
19945
Ignore realm if present.
 
19946
 
 
19947
\begin{tabulary}{\linewidth}{|L|L|}
 
19948
\hline
 
19949
 
 
19950
\code{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}
 
19951
 & 
 
19952
\code{0x8}
 
19953
\\\hline
 
19954
\end{tabulary}
 
19955
 
 
19956
 
 
19957
 
 
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)}
 
19960
 
 
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}
 
19964
 
 
19965
 
 
19966
Error if realm is present.
 
19967
 
 
19968
\begin{tabulary}{\linewidth}{|L|L|}
 
19969
\hline
 
19970
 
 
19971
\code{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}
 
19972
 & 
 
19973
\code{0x1}
 
19974
\\\hline
 
19975
\end{tabulary}
 
19976
 
 
19977
 
 
19978
 
 
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)}
 
19981
 
 
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}
 
19985
 
 
19986
 
 
19987
Error if realm is not present.
 
19988
 
 
19989
\begin{tabulary}{\linewidth}{|L|L|}
 
19990
\hline
 
19991
 
 
19992
\code{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}
 
19993
 & 
 
19994
\code{0x2}
 
19995
\\\hline
 
19996
\end{tabulary}
 
19997
 
 
19998
 
 
19999
 
 
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)}
 
20002
 
 
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}
 
20006
 
 
20007
 
 
20008
Don't escape special characters.
 
20009
 
 
20010
\begin{tabulary}{\linewidth}{|L|L|}
 
20011
\hline
 
20012
 
 
20013
\code{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}
 
20014
 & 
 
20015
\code{0x4}
 
20016
\\\hline
 
20017
\end{tabulary}
 
20018
 
 
20019
 
 
20020
 
 
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)}
 
20023
 
 
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}
 
20027
 
 
20028
 
 
20029
Omit realm always.
 
20030
 
 
20031
\begin{tabulary}{\linewidth}{|L|L|}
 
20032
\hline
 
20033
 
 
20034
\code{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}
 
20035
 & 
 
20036
\code{0x2}
 
20037
\\\hline
 
20038
\end{tabulary}
 
20039
 
 
20040
 
 
20041
 
 
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)}
 
20044
 
 
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}
 
20048
 
 
20049
 
 
20050
Omit realm if it is the local realm.
 
20051
 
 
20052
\begin{tabulary}{\linewidth}{|L|L|}
 
20053
\hline
 
20054
 
 
20055
\code{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}
 
20056
 & 
 
20057
\code{0x1}
 
20058
\\\hline
 
20059
\end{tabulary}
 
20060
 
 
20061
 
 
20062
 
 
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)}
 
20065
 
 
20066
\begin{fulllineitems}
 
20067
\phantomsection\label{appdev/refs/macros/KRB5_PRIV:KRB5_PRIV}\pysigline{\bfcode{KRB5\_PRIV}}
 
20068
\end{fulllineitems}
 
20069
 
 
20070
 
 
20071
Private application message.
 
20072
 
 
20073
\begin{tabulary}{\linewidth}{|L|L|}
 
20074
\hline
 
20075
 
 
20076
\code{KRB5\_PRIV}
 
20077
 & 
 
20078
\code{((krb5\_msgtype)21)}
 
20079
\\\hline
 
20080
\end{tabulary}
 
20081
 
 
20082
 
 
20083
 
 
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)}
 
20086
 
 
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}
 
20090
 
 
20091
 
 
20092
Prompt for new password (during password change)
 
20093
 
 
20094
\begin{tabulary}{\linewidth}{|L|L|}
 
20095
\hline
 
20096
 
 
20097
\code{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}
 
20098
 & 
 
20099
\code{0x2}
 
20100
\\\hline
 
20101
\end{tabulary}
 
20102
 
 
20103
 
 
20104
 
 
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)}
 
20107
 
 
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}
 
20111
 
 
20112
 
 
20113
Prompt for new password again.
 
20114
 
 
20115
\begin{tabulary}{\linewidth}{|L|L|}
 
20116
\hline
 
20117
 
 
20118
\code{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}
 
20119
 & 
 
20120
\code{0x3}
 
20121
\\\hline
 
20122
\end{tabulary}
 
20123
 
 
20124
 
 
20125
 
 
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)}
 
20128
 
 
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}
 
20132
 
 
20133
 
 
20134
Prompt for password.
 
20135
 
 
20136
\begin{tabulary}{\linewidth}{|L|L|}
 
20137
\hline
 
20138
 
 
20139
\code{KRB5\_PROMPT\_TYPE\_PASSWORD}
 
20140
 & 
 
20141
\code{0x1}
 
20142
\\\hline
 
20143
\end{tabulary}
 
20144
 
 
20145
 
 
20146
 
 
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)}
 
20149
 
 
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}
 
20153
 
 
20154
 
 
20155
Prompt for preauthentication data (such as an OTP value)
 
20156
 
 
20157
\begin{tabulary}{\linewidth}{|L|L|}
 
20158
\hline
 
20159
 
 
20160
\code{KRB5\_PROMPT\_TYPE\_PREAUTH}
 
20161
 & 
 
20162
\code{0x4}
 
20163
\\\hline
 
20164
\end{tabulary}
 
20165
 
 
20166
 
 
20167
 
 
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)}
 
20170
 
 
20171
\begin{fulllineitems}
 
20172
\phantomsection\label{appdev/refs/macros/KRB5_PVNO:KRB5_PVNO}\pysigline{\bfcode{KRB5\_PVNO}}
 
20173
\end{fulllineitems}
 
20174
 
 
20175
 
 
20176
Protocol version number.
 
20177
 
 
20178
\begin{tabulary}{\linewidth}{|L|L|}
 
20179
\hline
 
20180
 
 
20181
\code{KRB5\_PVNO}
 
20182
 & 
 
20183
\code{5}
 
20184
\\\hline
 
20185
\end{tabulary}
 
20186
 
 
20187
 
 
20188
 
 
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)}
 
20191
 
 
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}
 
20195
 
 
20196
 
 
20197
\begin{tabulary}{\linewidth}{|L|L|}
 
20198
\hline
 
20199
 
 
20200
\code{KRB5\_REALM\_BRANCH\_CHAR}
 
20201
 & 
 
20202
\code{'.'}
 
20203
\\\hline
 
20204
\end{tabulary}
 
20205
 
 
20206
 
 
20207
 
 
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)}
 
20210
 
 
20211
\begin{fulllineitems}
 
20212
\phantomsection\label{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:KRB5_RECVAUTH_BADAUTHVERS}\pysigline{\bfcode{KRB5\_RECVAUTH\_BADAUTHVERS}}
 
20213
\end{fulllineitems}
 
20214
 
 
20215
 
 
20216
\begin{tabulary}{\linewidth}{|L|L|}
 
20217
\hline
 
20218
 
 
20219
\code{KRB5\_RECVAUTH\_BADAUTHVERS}
 
20220
 & 
 
20221
\code{0x0002}
 
20222
\\\hline
 
20223
\end{tabulary}
 
20224
 
 
20225
 
 
20226
 
 
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)}
 
20229
 
 
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}
 
20233
 
 
20234
 
 
20235
\begin{tabulary}{\linewidth}{|L|L|}
 
20236
\hline
 
20237
 
 
20238
\code{KRB5\_RECVAUTH\_SKIP\_VERSION}
 
20239
 & 
 
20240
\code{0x0001}
 
20241
\\\hline
 
20242
\end{tabulary}
 
20243
 
 
20244
 
 
20245
 
 
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)}
 
20248
 
 
20249
\begin{fulllineitems}
 
20250
\phantomsection\label{appdev/refs/macros/KRB5_REFERRAL_REALM:KRB5_REFERRAL_REALM}\pysigline{\bfcode{KRB5\_REFERRAL\_REALM}}
 
20251
\end{fulllineitems}
 
20252
 
 
20253
 
 
20254
Constant for realm referrals.
 
20255
 
 
20256
\begin{tabulary}{\linewidth}{|L|L|}
 
20257
\hline
 
20258
 
 
20259
\code{KRB5\_REFERRAL\_REALM}
 
20260
 & 
 
20261
\code{""}
 
20262
\\\hline
 
20263
\end{tabulary}
 
20264
 
 
20265
 
 
20266
 
 
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)}
 
20269
 
 
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}
 
20273
 
 
20274
 
 
20275
This flag indicates that the PIN value MUST be collected.
 
20276
 
 
20277
\begin{tabulary}{\linewidth}{|L|L|}
 
20278
\hline
 
20279
 
 
20280
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}
 
20281
 & 
 
20282
\code{0x0002}
 
20283
\\\hline
 
20284
\end{tabulary}
 
20285
 
 
20286
 
 
20287
 
 
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)}
 
20290
 
 
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}
 
20294
 
 
20295
 
 
20296
This flag indicates that the token value MUST be collected.
 
20297
 
 
20298
\begin{tabulary}{\linewidth}{|L|L|}
 
20299
\hline
 
20300
 
 
20301
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}
 
20302
 & 
 
20303
\code{0x0001}
 
20304
\\\hline
 
20305
\end{tabulary}
 
20306
 
 
20307
 
 
20308
 
 
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)}
 
20311
 
 
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}
 
20315
 
 
20316
 
 
20317
This flag indicates that the token is now in re-synchronization mode with the server.
 
20318
 
 
20319
The user is expected to reply with the next code displayed on the token.
 
20320
 
 
20321
\begin{tabulary}{\linewidth}{|L|L|}
 
20322
\hline
 
20323
 
 
20324
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}
 
20325
 & 
 
20326
\code{0x0004}
 
20327
\\\hline
 
20328
\end{tabulary}
 
20329
 
 
20330
 
 
20331
 
 
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)}
 
20334
 
 
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}
 
20338
 
 
20339
 
 
20340
This flag indicates that the PIN MUST be returned as a separate item.
 
20341
 
 
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.
 
20343
 
 
20344
\begin{tabulary}{\linewidth}{|L|L|}
 
20345
\hline
 
20346
 
 
20347
\code{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}
 
20348
 & 
 
20349
\code{0x0008}
 
20350
\\\hline
 
20351
\end{tabulary}
 
20352
 
 
20353
 
 
20354
 
 
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)}
 
20357
 
 
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}
 
20361
 
 
20362
 
 
20363
\begin{tabulary}{\linewidth}{|L|L|}
 
20364
\hline
 
20365
 
 
20366
\code{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}
 
20367
 & 
 
20368
\code{2}
 
20369
\\\hline
 
20370
\end{tabulary}
 
20371
 
 
20372
 
 
20373
 
 
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)}
 
20376
 
 
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}
 
20380
 
 
20381
 
 
20382
These format constants identify the format of the token value.
 
20383
 
 
20384
\begin{tabulary}{\linewidth}{|L|L|}
 
20385
\hline
 
20386
 
 
20387
\code{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}
 
20388
 & 
 
20389
\code{0}
 
20390
\\\hline
 
20391
\end{tabulary}
 
20392
 
 
20393
 
 
20394
 
 
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)}
 
20397
 
 
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}
 
20401
 
 
20402
 
 
20403
\begin{tabulary}{\linewidth}{|L|L|}
 
20404
\hline
 
20405
 
 
20406
\code{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}
 
20407
 & 
 
20408
\code{1}
 
20409
\\\hline
 
20410
\end{tabulary}
 
20411
 
 
20412
 
 
20413
 
 
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)}
 
20416
 
 
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}
 
20420
 
 
20421
 
 
20422
OTP responder question.
 
20423
 
 
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.
 
20427
 
 
20428
\begin{tabulary}{\linewidth}{|L|L|}
 
20429
\hline
 
20430
 
 
20431
\code{KRB5\_RESPONDER\_QUESTION\_OTP}
 
20432
 & 
 
20433
\code{"otp"}
 
20434
\\\hline
 
20435
\end{tabulary}
 
20436
 
 
20437
 
 
20438
 
 
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)}
 
20441
 
 
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}
 
20445
 
 
20446
 
 
20447
Long-term password responder question.
 
20448
 
 
20449
This question is asked when the long-term password is needed. It has no challenge and the response is simply the password string.
 
20450
 
 
20451
\begin{tabulary}{\linewidth}{|L|L|}
 
20452
\hline
 
20453
 
 
20454
\code{KRB5\_RESPONDER\_QUESTION\_PASSWORD}
 
20455
 & 
 
20456
\code{"password"}
 
20457
\\\hline
 
20458
\end{tabulary}
 
20459
 
 
20460
 
 
20461
 
 
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)}
 
20464
 
 
20465
\begin{fulllineitems}
 
20466
\phantomsection\label{appdev/refs/macros/KRB5_SAFE:KRB5_SAFE}\pysigline{\bfcode{KRB5\_SAFE}}
 
20467
\end{fulllineitems}
 
20468
 
 
20469
 
 
20470
Safe application message.
 
20471
 
 
20472
\begin{tabulary}{\linewidth}{|L|L|}
 
20473
\hline
 
20474
 
 
20475
\code{KRB5\_SAFE}
 
20476
 & 
 
20477
\code{((krb5\_msgtype)20)}
 
20478
\\\hline
 
20479
\end{tabulary}
 
20480
 
 
20481
 
 
20482
 
 
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)}
 
20485
 
 
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}
 
20489
 
 
20490
 
 
20491
currently must be zero
 
20492
 
 
20493
\begin{tabulary}{\linewidth}{|L|L|}
 
20494
\hline
 
20495
 
 
20496
\code{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}
 
20497
 & 
 
20498
\code{0x20000000}
 
20499
\\\hline
 
20500
\end{tabulary}
 
20501
 
 
20502
 
 
20503
 
 
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)}
 
20506
 
 
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}
 
20510
 
 
20511
 
 
20512
\begin{tabulary}{\linewidth}{|L|L|}
 
20513
\hline
 
20514
 
 
20515
\code{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}
 
20516
 & 
 
20517
\code{0x40000000}
 
20518
\\\hline
 
20519
\end{tabulary}
 
20520
 
 
20521
 
 
20522
 
 
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)}
 
20525
 
 
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}
 
20529
 
 
20530
 
 
20531
\begin{tabulary}{\linewidth}{|L|L|}
 
20532
\hline
 
20533
 
 
20534
\code{KRB5\_SAM\_USE\_SAD\_AS\_KEY}
 
20535
 & 
 
20536
\code{0x80000000}
 
20537
\\\hline
 
20538
\end{tabulary}
 
20539
 
 
20540
 
 
20541
 
 
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)}
 
20544
 
 
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}
 
20548
 
 
20549
 
 
20550
The second ticket must match.
 
20551
 
 
20552
\begin{tabulary}{\linewidth}{|L|L|}
 
20553
\hline
 
20554
 
 
20555
\code{KRB5\_TC\_MATCH\_2ND\_TKT}
 
20556
 & 
 
20557
\code{0x00000080}
 
20558
\\\hline
 
20559
\end{tabulary}
 
20560
 
 
20561
 
 
20562
 
 
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)}
 
20565
 
 
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}
 
20569
 
 
20570
 
 
20571
The authorization data must match.
 
20572
 
 
20573
\begin{tabulary}{\linewidth}{|L|L|}
 
20574
\hline
 
20575
 
 
20576
\code{KRB5\_TC\_MATCH\_AUTHDATA}
 
20577
 & 
 
20578
\code{0x00000020}
 
20579
\\\hline
 
20580
\end{tabulary}
 
20581
 
 
20582
 
 
20583
 
 
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)}
 
20586
 
 
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}
 
20590
 
 
20591
 
 
20592
All the flags set in the match credentials must be set.
 
20593
 
 
20594
\begin{tabulary}{\linewidth}{|L|L|}
 
20595
\hline
 
20596
 
 
20597
\code{KRB5\_TC\_MATCH\_FLAGS}
 
20598
 & 
 
20599
\code{0x00000004}
 
20600
\\\hline
 
20601
\end{tabulary}
 
20602
 
 
20603
 
 
20604
 
 
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)}
 
20607
 
 
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}
 
20611
 
 
20612
 
 
20613
All the flags must match exactly.
 
20614
 
 
20615
\begin{tabulary}{\linewidth}{|L|L|}
 
20616
\hline
 
20617
 
 
20618
\code{KRB5\_TC\_MATCH\_FLAGS\_EXACT}
 
20619
 & 
 
20620
\code{0x00000010}
 
20621
\\\hline
 
20622
\end{tabulary}
 
20623
 
 
20624
 
 
20625
 
 
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)}
 
20628
 
 
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}
 
20632
 
 
20633
 
 
20634
The is\_skey field must match exactly.
 
20635
 
 
20636
\begin{tabulary}{\linewidth}{|L|L|}
 
20637
\hline
 
20638
 
 
20639
\code{KRB5\_TC\_MATCH\_IS\_SKEY}
 
20640
 & 
 
20641
\code{0x00000002}
 
20642
\\\hline
 
20643
\end{tabulary}
 
20644
 
 
20645
 
 
20646
 
 
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)}
 
20649
 
 
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}
 
20653
 
 
20654
 
 
20655
The encryption key type must match.
 
20656
 
 
20657
\begin{tabulary}{\linewidth}{|L|L|}
 
20658
\hline
 
20659
 
 
20660
\code{KRB5\_TC\_MATCH\_KTYPE}
 
20661
 & 
 
20662
\code{0x00000100}
 
20663
\\\hline
 
20664
\end{tabulary}
 
20665
 
 
20666
 
 
20667
 
 
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)}
 
20670
 
 
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}
 
20674
 
 
20675
 
 
20676
Only the name portion of the principal name must match.
 
20677
 
 
20678
\begin{tabulary}{\linewidth}{|L|L|}
 
20679
\hline
 
20680
 
 
20681
\code{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}
 
20682
 & 
 
20683
\code{0x00000040}
 
20684
\\\hline
 
20685
\end{tabulary}
 
20686
 
 
20687
 
 
20688
 
 
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)}
 
20691
 
 
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}
 
20695
 
 
20696
 
 
20697
The requested lifetime must be at least as great as the time specified.
 
20698
 
 
20699
\begin{tabulary}{\linewidth}{|L|L|}
 
20700
\hline
 
20701
 
 
20702
\code{KRB5\_TC\_MATCH\_TIMES}
 
20703
 & 
 
20704
\code{0x00000001}
 
20705
\\\hline
 
20706
\end{tabulary}
 
20707
 
 
20708
 
 
20709
 
 
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)}
 
20712
 
 
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}
 
20716
 
 
20717
 
 
20718
All the time fields must match exactly.
 
20719
 
 
20720
\begin{tabulary}{\linewidth}{|L|L|}
 
20721
\hline
 
20722
 
 
20723
\code{KRB5\_TC\_MATCH\_TIMES\_EXACT}
 
20724
 & 
 
20725
\code{0x00000008}
 
20726
\\\hline
 
20727
\end{tabulary}
 
20728
 
 
20729
 
 
20730
 
 
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)}
 
20733
 
 
20734
\begin{fulllineitems}
 
20735
\phantomsection\label{appdev/refs/macros/KRB5_TC_NOTICKET:KRB5_TC_NOTICKET}\pysigline{\bfcode{KRB5\_TC\_NOTICKET}}
 
20736
\end{fulllineitems}
 
20737
 
 
20738
 
 
20739
\begin{tabulary}{\linewidth}{|L|L|}
 
20740
\hline
 
20741
 
 
20742
\code{KRB5\_TC\_NOTICKET}
 
20743
 & 
 
20744
\code{0x00000002}
 
20745
\\\hline
 
20746
\end{tabulary}
 
20747
 
 
20748
 
 
20749
 
 
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)}
 
20752
 
 
20753
\begin{fulllineitems}
 
20754
\phantomsection\label{appdev/refs/macros/KRB5_TC_OPENCLOSE:KRB5_TC_OPENCLOSE}\pysigline{\bfcode{KRB5\_TC\_OPENCLOSE}}
 
20755
\end{fulllineitems}
 
20756
 
 
20757
 
 
20758
Open and close the file for each cache operation.
 
20759
 
 
20760
\begin{tabulary}{\linewidth}{|L|L|}
 
20761
\hline
 
20762
 
 
20763
\code{KRB5\_TC\_OPENCLOSE}
 
20764
 & 
 
20765
\code{0x00000001}
 
20766
\\\hline
 
20767
\end{tabulary}
 
20768
 
 
20769
 
 
20770
 
 
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)}
 
20773
 
 
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}
 
20777
 
 
20778
 
 
20779
The supported key types must match.
 
20780
 
 
20781
\begin{tabulary}{\linewidth}{|L|L|}
 
20782
\hline
 
20783
 
 
20784
\code{KRB5\_TC\_SUPPORTED\_KTYPES}
 
20785
 & 
 
20786
\code{0x00000200}
 
20787
\\\hline
 
20788
\end{tabulary}
 
20789
 
 
20790
 
 
20791
 
 
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)}
 
20794
 
 
20795
\begin{fulllineitems}
 
20796
\phantomsection\label{appdev/refs/macros/KRB5_TGS_NAME:KRB5_TGS_NAME}\pysigline{\bfcode{KRB5\_TGS\_NAME}}
 
20797
\end{fulllineitems}
 
20798
 
 
20799
 
 
20800
\begin{tabulary}{\linewidth}{|L|L|}
 
20801
\hline
 
20802
 
 
20803
\code{KRB5\_TGS\_NAME}
 
20804
 & 
 
20805
\code{"krbtgt"}
 
20806
\\\hline
 
20807
\end{tabulary}
 
20808
 
 
20809
 
 
20810
 
 
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)}
 
20813
 
 
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}
 
20817
 
 
20818
 
 
20819
\begin{tabulary}{\linewidth}{|L|L|}
 
20820
\hline
 
20821
 
 
20822
\code{KRB5\_TGS\_NAME\_SIZE}
 
20823
 & 
 
20824
\code{6}
 
20825
\\\hline
 
20826
\end{tabulary}
 
20827
 
 
20828
 
 
20829
 
 
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)}
 
20832
 
 
20833
\begin{fulllineitems}
 
20834
\phantomsection\label{appdev/refs/macros/KRB5_TGS_REP:KRB5_TGS_REP}\pysigline{\bfcode{KRB5\_TGS\_REP}}
 
20835
\end{fulllineitems}
 
20836
 
 
20837
 
 
20838
Response to TGS request.
 
20839
 
 
20840
\begin{tabulary}{\linewidth}{|L|L|}
 
20841
\hline
 
20842
 
 
20843
\code{KRB5\_TGS\_REP}
 
20844
 & 
 
20845
\code{((krb5\_msgtype)13)}
 
20846
\\\hline
 
20847
\end{tabulary}
 
20848
 
 
20849
 
 
20850
 
 
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)}
 
20853
 
 
20854
\begin{fulllineitems}
 
20855
\phantomsection\label{appdev/refs/macros/KRB5_TGS_REQ:KRB5_TGS_REQ}\pysigline{\bfcode{KRB5\_TGS\_REQ}}
 
20856
\end{fulllineitems}
 
20857
 
 
20858
 
 
20859
Ticket granting server request.
 
20860
 
 
20861
\begin{tabulary}{\linewidth}{|L|L|}
 
20862
\hline
 
20863
 
 
20864
\code{KRB5\_TGS\_REQ}
 
20865
 & 
 
20866
\code{((krb5\_msgtype)12)}
 
20867
\\\hline
 
20868
\end{tabulary}
 
20869
 
 
20870
 
 
20871
 
 
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)}
 
20874
 
 
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}
 
20878
 
 
20879
 
 
20880
More responses needed.
 
20881
 
 
20882
\begin{tabulary}{\linewidth}{|L|L|}
 
20883
\hline
 
20884
 
 
20885
\code{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}
 
20886
 & 
 
20887
\code{0x1}
 
20888
\\\hline
 
20889
\end{tabulary}
 
20890
 
 
20891
 
 
20892
 
 
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)}
 
20895
 
 
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}
 
20899
 
 
20900
 
 
20901
\begin{tabulary}{\linewidth}{|L|L|}
 
20902
\hline
 
20903
 
 
20904
\code{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}
 
20905
 & 
 
20906
\code{0x0001}
 
20907
\\\hline
 
20908
\end{tabulary}
 
20909
 
 
20910
 
 
20911
 
 
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)}
 
20914
 
 
20915
\begin{fulllineitems}
 
20916
\phantomsection\label{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:KRB5_WELLKNOWN_NAMESTR}\pysigline{\bfcode{KRB5\_WELLKNOWN\_NAMESTR}}
 
20917
\end{fulllineitems}
 
20918
 
 
20919
 
 
20920
First component of NT\_WELLKNOWN principals.
 
20921
 
 
20922
\begin{tabulary}{\linewidth}{|L|L|}
 
20923
\hline
 
20924
 
 
20925
\code{KRB5\_WELLKNOWN\_NAMESTR}
 
20926
 & 
 
20927
\code{"WELLKNOWN"}
 
20928
\\\hline
 
20929
\end{tabulary}
 
20930
 
 
20931
 
 
20932
 
 
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)}
 
20935
 
 
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}
 
20939
 
 
20940
 
 
20941
\begin{tabulary}{\linewidth}{|L|L|}
 
20942
\hline
 
20943
 
 
20944
\code{LR\_TYPE\_INTERPRETATION\_MASK}
 
20945
 & 
 
20946
\code{0x7fff}
 
20947
\\\hline
 
20948
\end{tabulary}
 
20949
 
 
20950
 
 
20951
 
 
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)}
 
20954
 
 
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}
 
20958
 
 
20959
 
 
20960
\begin{tabulary}{\linewidth}{|L|L|}
 
20961
\hline
 
20962
 
 
20963
\code{LR\_TYPE\_THIS\_SERVER\_ONLY}
 
20964
 & 
 
20965
\code{0x8000}
 
20966
\\\hline
 
20967
\end{tabulary}
 
20968
 
 
20969
 
 
20970
 
 
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)}
 
20973
 
 
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}
 
20977
 
 
20978
 
 
20979
Long enough for MAXPATHLEN + some extra.
 
20980
 
 
20981
\begin{tabulary}{\linewidth}{|L|L|}
 
20982
\hline
 
20983
 
 
20984
\code{MAX\_KEYTAB\_NAME\_LEN}
 
20985
 & 
 
20986
\code{1100}
 
20987
\\\hline
 
20988
\end{tabulary}
 
20989
 
 
20990
 
 
20991
 
 
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)}
 
20994
 
 
20995
\begin{fulllineitems}
 
20996
\phantomsection\label{appdev/refs/macros/MSEC_DIRBIT:MSEC_DIRBIT}\pysigline{\bfcode{MSEC\_DIRBIT}}
 
20997
\end{fulllineitems}
 
20998
 
 
20999
 
 
21000
\begin{tabulary}{\linewidth}{|L|L|}
 
21001
\hline
 
21002
 
 
21003
\code{MSEC\_DIRBIT}
 
21004
 & 
 
21005
\code{0x8000}
 
21006
\\\hline
 
21007
\end{tabulary}
 
21008
 
 
21009
 
 
21010
 
 
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)}
 
21013
 
 
21014
\begin{fulllineitems}
 
21015
\phantomsection\label{appdev/refs/macros/MSEC_VAL_MASK:MSEC_VAL_MASK}\pysigline{\bfcode{MSEC\_VAL\_MASK}}
 
21016
\end{fulllineitems}
 
21017
 
 
21018
 
 
21019
\begin{tabulary}{\linewidth}{|L|L|}
 
21020
\hline
 
21021
 
 
21022
\code{MSEC\_VAL\_MASK}
 
21023
 & 
 
21024
\code{0x7fff}
 
21025
\\\hline
 
21026
\end{tabulary}
 
21027
 
 
21028
 
 
21029
 
 
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)}
 
21032
 
 
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}
 
21036
 
 
21037
 
 
21038
\begin{tabulary}{\linewidth}{|L|L|}
 
21039
\hline
 
21040
 
 
21041
\code{SALT\_TYPE\_AFS\_LENGTH}
 
21042
 & 
 
21043
\code{UINT\_MAX}
 
21044
\\\hline
 
21045
\end{tabulary}
 
21046
 
 
21047
 
 
21048
 
 
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)}
 
21051
 
 
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}
 
21055
 
 
21056
 
 
21057
\begin{tabulary}{\linewidth}{|L|L|}
 
21058
\hline
 
21059
 
 
21060
\code{SALT\_TYPE\_NO\_LENGTH}
 
21061
 & 
 
21062
\code{UINT\_MAX}
 
21063
\\\hline
 
21064
\end{tabulary}
 
21065
 
 
21066
 
 
21067
 
 
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)}
 
21070
 
 
21071
\begin{fulllineitems}
 
21072
\phantomsection\label{appdev/refs/macros/THREEPARAMOPEN:THREEPARAMOPEN}\pysigline{\bfcode{THREEPARAMOPEN}}
 
21073
\end{fulllineitems}
 
21074
 
 
21075
 
 
21076
\begin{tabulary}{\linewidth}{|L|L|}
 
21077
\hline
 
21078
 
 
21079
\code{THREEPARAMOPEN (x, y, z)}
 
21080
 & 
 
21081
\code{open(x,y,z)}
 
21082
\\\hline
 
21083
\end{tabulary}
 
21084
 
 
21085
 
 
21086
 
 
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)}
 
21089
 
 
21090
\begin{fulllineitems}
 
21091
\phantomsection\label{appdev/refs/macros/TKT_FLG_ANONYMOUS:TKT_FLG_ANONYMOUS}\pysigline{\bfcode{TKT\_FLG\_ANONYMOUS}}
 
21092
\end{fulllineitems}
 
21093
 
 
21094
 
 
21095
\begin{tabulary}{\linewidth}{|L|L|}
 
21096
\hline
 
21097
 
 
21098
\code{TKT\_FLG\_ANONYMOUS}
 
21099
 & 
 
21100
\code{0x00008000}
 
21101
\\\hline
 
21102
\end{tabulary}
 
21103
 
 
21104
 
 
21105
 
 
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)}
 
21108
 
 
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}
 
21112
 
 
21113
 
 
21114
\begin{tabulary}{\linewidth}{|L|L|}
 
21115
\hline
 
21116
 
 
21117
\code{TKT\_FLG\_ENC\_PA\_REP}
 
21118
 & 
 
21119
\code{0x00010000}
 
21120
\\\hline
 
21121
\end{tabulary}
 
21122
 
 
21123
 
 
21124
 
 
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)}
 
21127
 
 
21128
\begin{fulllineitems}
 
21129
\phantomsection\label{appdev/refs/macros/TKT_FLG_FORWARDABLE:TKT_FLG_FORWARDABLE}\pysigline{\bfcode{TKT\_FLG\_FORWARDABLE}}
 
21130
\end{fulllineitems}
 
21131
 
 
21132
 
 
21133
\begin{tabulary}{\linewidth}{|L|L|}
 
21134
\hline
 
21135
 
 
21136
\code{TKT\_FLG\_FORWARDABLE}
 
21137
 & 
 
21138
\code{0x40000000}
 
21139
\\\hline
 
21140
\end{tabulary}
 
21141
 
 
21142
 
 
21143
 
 
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)}
 
21146
 
 
21147
\begin{fulllineitems}
 
21148
\phantomsection\label{appdev/refs/macros/TKT_FLG_FORWARDED:TKT_FLG_FORWARDED}\pysigline{\bfcode{TKT\_FLG\_FORWARDED}}
 
21149
\end{fulllineitems}
 
21150
 
 
21151
 
 
21152
\begin{tabulary}{\linewidth}{|L|L|}
 
21153
\hline
 
21154
 
 
21155
\code{TKT\_FLG\_FORWARDED}
 
21156
 & 
 
21157
\code{0x20000000}
 
21158
\\\hline
 
21159
\end{tabulary}
 
21160
 
 
21161
 
 
21162
 
 
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)}
 
21165
 
 
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}
 
21169
 
 
21170
 
 
21171
\begin{tabulary}{\linewidth}{|L|L|}
 
21172
\hline
 
21173
 
 
21174
\code{TKT\_FLG\_HW\_AUTH}
 
21175
 & 
 
21176
\code{0x00100000}
 
21177
\\\hline
 
21178
\end{tabulary}
 
21179
 
 
21180
 
 
21181
 
 
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)}
 
21184
 
 
21185
\begin{fulllineitems}
 
21186
\phantomsection\label{appdev/refs/macros/TKT_FLG_INITIAL:TKT_FLG_INITIAL}\pysigline{\bfcode{TKT\_FLG\_INITIAL}}
 
21187
\end{fulllineitems}
 
21188
 
 
21189
 
 
21190
\begin{tabulary}{\linewidth}{|L|L|}
 
21191
\hline
 
21192
 
 
21193
\code{TKT\_FLG\_INITIAL}
 
21194
 & 
 
21195
\code{0x00400000}
 
21196
\\\hline
 
21197
\end{tabulary}
 
21198
 
 
21199
 
 
21200
 
 
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)}
 
21203
 
 
21204
\begin{fulllineitems}
 
21205
\phantomsection\label{appdev/refs/macros/TKT_FLG_INVALID:TKT_FLG_INVALID}\pysigline{\bfcode{TKT\_FLG\_INVALID}}
 
21206
\end{fulllineitems}
 
21207
 
 
21208
 
 
21209
\begin{tabulary}{\linewidth}{|L|L|}
 
21210
\hline
 
21211
 
 
21212
\code{TKT\_FLG\_INVALID}
 
21213
 & 
 
21214
\code{0x01000000}
 
21215
\\\hline
 
21216
\end{tabulary}
 
21217
 
 
21218
 
 
21219
 
 
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)}
 
21222
 
 
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}
 
21226
 
 
21227
 
 
21228
\begin{tabulary}{\linewidth}{|L|L|}
 
21229
\hline
 
21230
 
 
21231
\code{TKT\_FLG\_MAY\_POSTDATE}
 
21232
 & 
 
21233
\code{0x04000000}
 
21234
\\\hline
 
21235
\end{tabulary}
 
21236
 
 
21237
 
 
21238
 
 
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)}
 
21241
 
 
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}
 
21245
 
 
21246
 
 
21247
\begin{tabulary}{\linewidth}{|L|L|}
 
21248
\hline
 
21249
 
 
21250
\code{TKT\_FLG\_OK\_AS\_DELEGATE}
 
21251
 & 
 
21252
\code{0x00040000}
 
21253
\\\hline
 
21254
\end{tabulary}
 
21255
 
 
21256
 
 
21257
 
 
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)}
 
21260
 
 
21261
\begin{fulllineitems}
 
21262
\phantomsection\label{appdev/refs/macros/TKT_FLG_POSTDATED:TKT_FLG_POSTDATED}\pysigline{\bfcode{TKT\_FLG\_POSTDATED}}
 
21263
\end{fulllineitems}
 
21264
 
 
21265
 
 
21266
\begin{tabulary}{\linewidth}{|L|L|}
 
21267
\hline
 
21268
 
 
21269
\code{TKT\_FLG\_POSTDATED}
 
21270
 & 
 
21271
\code{0x02000000}
 
21272
\\\hline
 
21273
\end{tabulary}
 
21274
 
 
21275
 
 
21276
 
 
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)}
 
21279
 
 
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}
 
21283
 
 
21284
 
 
21285
\begin{tabulary}{\linewidth}{|L|L|}
 
21286
\hline
 
21287
 
 
21288
\code{TKT\_FLG\_PRE\_AUTH}
 
21289
 & 
 
21290
\code{0x00200000}
 
21291
\\\hline
 
21292
\end{tabulary}
 
21293
 
 
21294
 
 
21295
 
 
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)}
 
21298
 
 
21299
\begin{fulllineitems}
 
21300
\phantomsection\label{appdev/refs/macros/TKT_FLG_PROXIABLE:TKT_FLG_PROXIABLE}\pysigline{\bfcode{TKT\_FLG\_PROXIABLE}}
 
21301
\end{fulllineitems}
 
21302
 
 
21303
 
 
21304
\begin{tabulary}{\linewidth}{|L|L|}
 
21305
\hline
 
21306
 
 
21307
\code{TKT\_FLG\_PROXIABLE}
 
21308
 & 
 
21309
\code{0x10000000}
 
21310
\\\hline
 
21311
\end{tabulary}
 
21312
 
 
21313
 
 
21314
 
 
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)}
 
21317
 
 
21318
\begin{fulllineitems}
 
21319
\phantomsection\label{appdev/refs/macros/TKT_FLG_PROXY:TKT_FLG_PROXY}\pysigline{\bfcode{TKT\_FLG\_PROXY}}
 
21320
\end{fulllineitems}
 
21321
 
 
21322
 
 
21323
\begin{tabulary}{\linewidth}{|L|L|}
 
21324
\hline
 
21325
 
 
21326
\code{TKT\_FLG\_PROXY}
 
21327
 & 
 
21328
\code{0x08000000}
 
21329
\\\hline
 
21330
\end{tabulary}
 
21331
 
 
21332
 
 
21333
 
 
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)}
 
21336
 
 
21337
\begin{fulllineitems}
 
21338
\phantomsection\label{appdev/refs/macros/TKT_FLG_RENEWABLE:TKT_FLG_RENEWABLE}\pysigline{\bfcode{TKT\_FLG\_RENEWABLE}}
 
21339
\end{fulllineitems}
 
21340
 
 
21341
 
 
21342
\begin{tabulary}{\linewidth}{|L|L|}
 
21343
\hline
 
21344
 
 
21345
\code{TKT\_FLG\_RENEWABLE}
 
21346
 & 
 
21347
\code{0x00800000}
 
21348
\\\hline
 
21349
\end{tabulary}
 
21350
 
 
21351
 
 
21352
 
 
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)}
 
21355
 
 
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}
 
21359
 
 
21360
 
 
21361
\begin{tabulary}{\linewidth}{|L|L|}
 
21362
\hline
 
21363
 
 
21364
\code{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}
 
21365
 & 
 
21366
\code{0x00080000}
 
21367
\\\hline
 
21368
\end{tabulary}
 
21369
 
 
21370
 
 
21371
 
 
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)}
 
21374
 
 
21375
\begin{fulllineitems}
 
21376
\phantomsection\label{appdev/refs/macros/VALID_INT_BITS:VALID_INT_BITS}\pysigline{\bfcode{VALID\_INT\_BITS}}
 
21377
\end{fulllineitems}
 
21378
 
 
21379
 
 
21380
\begin{tabulary}{\linewidth}{|L|L|}
 
21381
\hline
 
21382
 
 
21383
\code{VALID\_INT\_BITS}
 
21384
 & 
 
21385
\code{INT\_MAX}
 
21386
\\\hline
 
21387
\end{tabulary}
 
21388
 
 
21389
 
 
21390
 
 
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)}
 
21393
 
 
21394
\begin{fulllineitems}
 
21395
\phantomsection\label{appdev/refs/macros/VALID_UINT_BITS:VALID_UINT_BITS}\pysigline{\bfcode{VALID\_UINT\_BITS}}
 
21396
\end{fulllineitems}
 
21397
 
 
21398
 
 
21399
\begin{tabulary}{\linewidth}{|L|L|}
 
21400
\hline
 
21401
 
 
21402
\code{VALID\_UINT\_BITS}
 
21403
 & 
 
21404
\code{UINT\_MAX}
 
21405
\\\hline
 
21406
\end{tabulary}
 
21407
 
 
21408
 
 
21409
 
 
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)}
 
21412
 
 
21413
\begin{fulllineitems}
 
21414
\phantomsection\label{appdev/refs/macros/krb5_const:krb5_const}\pysigline{\bfcode{krb5\_const}}
 
21415
\end{fulllineitems}
 
21416
 
 
21417
 
 
21418
\begin{tabulary}{\linewidth}{|L|L|}
 
21419
\hline
 
21420
 
 
21421
\code{krb5\_const}
 
21422
 & 
 
21423
\code{const}
 
21424
\\\hline
 
21425
\end{tabulary}
 
21426
 
 
21427
 
 
21428
 
 
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)}
 
21431
 
 
21432
\begin{fulllineitems}
 
21433
\phantomsection\label{appdev/refs/macros/krb5_princ_component:krb5_princ_component}\pysigline{\bfcode{krb5\_princ\_component}}
 
21434
\end{fulllineitems}
 
21435
 
 
21436
 
 
21437
\begin{tabulary}{\linewidth}{|L|L|}
 
21438
\hline
 
21439
 
 
21440
\code{krb5\_princ\_component (context, princ, i)}
 
21441
 & 
 
21442
\code{(((i) \textless{} krb5\_princ\_size(context, princ)) ? (princ)-\textgreater{}data + (i) : NULL)}
 
21443
\\\hline
 
21444
\end{tabulary}
 
21445
 
 
21446
 
 
21447
 
 
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)}
 
21450
 
 
21451
\begin{fulllineitems}
 
21452
\phantomsection\label{appdev/refs/macros/krb5_princ_name:krb5_princ_name}\pysigline{\bfcode{krb5\_princ\_name}}
 
21453
\end{fulllineitems}
 
21454
 
 
21455
 
 
21456
\begin{tabulary}{\linewidth}{|L|L|}
 
21457
\hline
 
21458
 
 
21459
\code{krb5\_princ\_name (context, princ)}
 
21460
 & 
 
21461
\code{(princ)-\textgreater{}data}
 
21462
\\\hline
 
21463
\end{tabulary}
 
21464
 
 
21465
 
 
21466
 
 
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)}
 
21469
 
 
21470
\begin{fulllineitems}
 
21471
\phantomsection\label{appdev/refs/macros/krb5_princ_realm:krb5_princ_realm}\pysigline{\bfcode{krb5\_princ\_realm}}
 
21472
\end{fulllineitems}
 
21473
 
 
21474
 
 
21475
\begin{tabulary}{\linewidth}{|L|L|}
 
21476
\hline
 
21477
 
 
21478
\code{krb5\_princ\_realm (context, princ)}
 
21479
 & 
 
21480
\code{(\&(princ)-\textgreater{}realm)}
 
21481
\\\hline
 
21482
\end{tabulary}
 
21483
 
 
21484
 
 
21485
 
 
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)}
 
21488
 
 
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}
 
21492
 
 
21493
 
 
21494
\begin{tabulary}{\linewidth}{|L|L|}
 
21495
\hline
 
21496
 
 
21497
\code{krb5\_princ\_set\_realm (context, princ, value)}
 
21498
 & 
 
21499
\code{((princ)-\textgreater{}realm = *(value))}
 
21500
\\\hline
 
21501
\end{tabulary}
 
21502
 
 
21503
 
 
21504
 
 
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)}
 
21507
 
 
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}
 
21511
 
 
21512
 
 
21513
\begin{tabulary}{\linewidth}{|L|L|}
 
21514
\hline
 
21515
 
 
21516
\code{krb5\_princ\_set\_realm\_data (context, princ, value)}
 
21517
 & 
 
21518
\code{(princ)-\textgreater{}realm.data = (value)}
 
21519
\\\hline
 
21520
\end{tabulary}
 
21521
 
 
21522
 
 
21523
 
 
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)}
 
21526
 
 
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}
 
21530
 
 
21531
 
 
21532
\begin{tabulary}{\linewidth}{|L|L|}
 
21533
\hline
 
21534
 
 
21535
\code{krb5\_princ\_set\_realm\_length (context, princ, value)}
 
21536
 & 
 
21537
\code{(princ)-\textgreater{}realm.length = (value)}
 
21538
\\\hline
 
21539
\end{tabulary}
 
21540
 
 
21541
 
 
21542
 
 
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)}
 
21545
 
 
21546
\begin{fulllineitems}
 
21547
\phantomsection\label{appdev/refs/macros/krb5_princ_size:krb5_princ_size}\pysigline{\bfcode{krb5\_princ\_size}}
 
21548
\end{fulllineitems}
 
21549
 
 
21550
 
 
21551
\begin{tabulary}{\linewidth}{|L|L|}
 
21552
\hline
 
21553
 
 
21554
\code{krb5\_princ\_size (context, princ)}
 
21555
 & 
 
21556
\code{(princ)-\textgreater{}length}
 
21557
\\\hline
 
21558
\end{tabulary}
 
21559
 
 
21560
 
 
21561
 
 
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)}
 
21564
 
 
21565
\begin{fulllineitems}
 
21566
\phantomsection\label{appdev/refs/macros/krb5_princ_type:krb5_princ_type}\pysigline{\bfcode{krb5\_princ\_type}}
 
21567
\end{fulllineitems}
 
21568
 
 
21569
 
 
21570
\begin{tabulary}{\linewidth}{|L|L|}
 
21571
\hline
 
21572
 
 
21573
\code{krb5\_princ\_type (context, princ)}
 
21574
 & 
 
21575
\code{(princ)-\textgreater{}type}
 
21576
\\\hline
 
21577
\end{tabulary}
 
21578
 
 
21579
 
 
21580
 
 
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)}
 
21583
 
 
21584
\begin{fulllineitems}
 
21585
\phantomsection\label{appdev/refs/macros/krb5_roundup:krb5_roundup}\pysigline{\bfcode{krb5\_roundup}}
 
21586
\end{fulllineitems}
 
21587
 
 
21588
 
 
21589
\begin{tabulary}{\linewidth}{|L|L|}
 
21590
\hline
 
21591
 
 
21592
\code{krb5\_roundup (x, y)}
 
21593
 & 
 
21594
\code{((((x) + (y) - 1)/(y))*(y))}
 
21595
\\\hline
 
21596
\end{tabulary}
 
21597
 
 
21598
 
 
21599
 
 
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)}
 
21602
 
 
21603
\begin{fulllineitems}
 
21604
\phantomsection\label{appdev/refs/macros/krb5_x:krb5_x}\pysigline{\bfcode{krb5\_x}}
 
21605
\end{fulllineitems}
 
21606
 
 
21607
 
 
21608
\begin{tabulary}{\linewidth}{|L|L|}
 
21609
\hline
 
21610
 
 
21611
\code{krb5\_x (ptr, args)}
 
21612
 & 
 
21613
\code{((ptr)?((*(ptr)) args):(abort(),1))}
 
21614
\\\hline
 
21615
\end{tabulary}
 
21616
 
 
21617
 
 
21618
 
 
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)}
 
21621
 
 
21622
\begin{fulllineitems}
 
21623
\phantomsection\label{appdev/refs/macros/krb5_xc:krb5_xc}\pysigline{\bfcode{krb5\_xc}}
 
21624
\end{fulllineitems}
 
21625
 
 
21626
 
 
21627
\begin{tabulary}{\linewidth}{|L|L|}
 
21628
\hline
 
21629
 
 
21630
\code{krb5\_xc (ptr, args)}
 
21631
 & 
 
21632
\code{((ptr)?((*(ptr)) args):(abort(),(char*)0))}
 
21633
\\\hline
 
21634
\end{tabulary}
 
21635
 
 
21636
 
 
21637
 
 
21638
\subsection{Deprecated macros}
 
21639
\label{appdev/refs/macros/index:deprecated-macros}
 
21640
 
 
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)}
 
21643
 
 
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}
 
21647
 
 
21648
 
 
21649
\begin{tabulary}{\linewidth}{|L|L|}
 
21650
\hline
 
21651
 
 
21652
\code{krb524\_convert\_creds\_kdc}
 
21653
 & 
 
21654
\code{krb5\_524\_convert\_creds}
 
21655
\\\hline
 
21656
\end{tabulary}
 
21657
 
 
21658
 
 
21659
 
 
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)}
 
21662
 
 
21663
\begin{fulllineitems}
 
21664
\phantomsection\label{appdev/refs/macros/krb524_init_ets:krb524_init_ets}\pysigline{\bfcode{krb524\_init\_ets}}
 
21665
\end{fulllineitems}
 
21666
 
 
21667
 
 
21668
\begin{tabulary}{\linewidth}{|L|L|}
 
21669
\hline
 
21670
 
 
21671
\code{krb524\_init\_ets (x)}
 
21672
 & 
 
21673
\code{(0)}
 
21674
\\\hline
 
21675
\end{tabulary}
 
21676
 
 
21677
 
 
21678
 
 
21679
 
 
21680
\renewcommand{\indexname}{Index}
 
21681
\printindex
 
21682
\end{document}