1%% Generated by Sphinx. 2\def\sphinxdocclass{report} 3\documentclass[letterpaper,10pt,english]{sphinxmanual} 4\ifdefined\pdfpxdimen 5 \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen 6\fi \sphinxpxdimen=.75bp\relax 7 8\usepackage[utf8]{inputenc} 9\ifdefined\DeclareUnicodeCharacter 10 \ifdefined\DeclareUnicodeCharacterAsOptional 11 \DeclareUnicodeCharacter{"00A0}{\nobreakspace} 12 \DeclareUnicodeCharacter{"2500}{\sphinxunichar{2500}} 13 \DeclareUnicodeCharacter{"2502}{\sphinxunichar{2502}} 14 \DeclareUnicodeCharacter{"2514}{\sphinxunichar{2514}} 15 \DeclareUnicodeCharacter{"251C}{\sphinxunichar{251C}} 16 \DeclareUnicodeCharacter{"2572}{\textbackslash} 17 \else 18 \DeclareUnicodeCharacter{00A0}{\nobreakspace} 19 \DeclareUnicodeCharacter{2500}{\sphinxunichar{2500}} 20 \DeclareUnicodeCharacter{2502}{\sphinxunichar{2502}} 21 \DeclareUnicodeCharacter{2514}{\sphinxunichar{2514}} 22 \DeclareUnicodeCharacter{251C}{\sphinxunichar{251C}} 23 \DeclareUnicodeCharacter{2572}{\textbackslash} 24 \fi 25\fi 26\usepackage{cmap} 27\usepackage[T1]{fontenc} 28\usepackage{amsmath,amssymb,amstext} 29\usepackage{babel} 30\usepackage{times} 31\usepackage[Bjarne]{fncychap} 32\usepackage[dontkeepoldnames]{sphinx} 33 34\usepackage{geometry} 35 36% Include hyperref last. 37\usepackage{hyperref} 38% Fix anchor placement for figures with captions. 39\usepackage{hypcap}% it must be loaded after hyperref. 40% Set up styles of URL: it should be placed after hyperref. 41\urlstyle{same} 42 43\addto\captionsenglish{\renewcommand{\figurename}{Fig.}} 44\addto\captionsenglish{\renewcommand{\tablename}{Table}} 45\addto\captionsenglish{\renewcommand{\literalblockname}{Listing}} 46 47\addto\captionsenglish{\renewcommand{\literalblockcontinuedname}{continued from previous page}} 48\addto\captionsenglish{\renewcommand{\literalblockcontinuesname}{continues on next page}} 49 50\addto\extrasenglish{\def\pageautorefname{page}} 51 52\setcounter{tocdepth}{0} 53 54 55 56\title{Kerberos Application Developer Guide} 57\date{ } 58\release{1.18.2} 59\author{MIT} 60\newcommand{\sphinxlogo}{\vbox{}} 61\renewcommand{\releasename}{Release} 62\makeindex 63 64\begin{document} 65 66\maketitle 67\sphinxtableofcontents 68\phantomsection\label{\detokenize{appdev/index::doc}} 69 70 71 72\chapter{Developing with GSSAPI} 73\label{\detokenize{appdev/gssapi:for-application-developers}}\label{\detokenize{appdev/gssapi::doc}}\label{\detokenize{appdev/gssapi:developing-with-gssapi}} 74The GSSAPI (Generic Security Services API) allows applications to 75communicate securely using Kerberos 5 or other security mechanisms. 76We recommend using the GSSAPI (or a higher-level framework which 77encompasses GSSAPI, such as SASL) for secure network communication 78over using the libkrb5 API directly. 79 80GSSAPIv2 is specified in \index{RFC!RFC 2743}\sphinxhref{https://tools.ietf.org/html/rfc2743.html}{\sphinxstylestrong{RFC 2743}} and \index{RFC!RFC 2744}\sphinxhref{https://tools.ietf.org/html/rfc2744.html}{\sphinxstylestrong{RFC 2744}}. Also see 81\index{RFC!RFC 7546}\sphinxhref{https://tools.ietf.org/html/rfc7546.html}{\sphinxstylestrong{RFC 7546}} for a description of how to use the GSSAPI in a client or 82server program. 83 84This documentation will describe how various ways of using the 85GSSAPI will behave with the krb5 mechanism as implemented in MIT krb5, 86as well as krb5-specific extensions to the GSSAPI. 87 88 89\section{Name types} 90\label{\detokenize{appdev/gssapi:name-types}} 91A GSSAPI application can name a local or remote entity by calling 92\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.16}{gss\_import\_name}, specifying a name type and a value. The following 93name types are supported by the krb5 mechanism: 94\begin{itemize} 95\item {} 96\sphinxstylestrong{GSS\_C\_NT\_HOSTBASED\_SERVICE}: The value should be a string of the 97form \sphinxcode{service} or \sphinxcode{service@hostname}. This is the most common 98way to name target services when initiating a security context, and 99is the most likely name type to work across multiple mechanisms. 100 101\item {} 102\sphinxstylestrong{GSS\_KRB5\_NT\_PRINCIPAL\_NAME}: The value should be a principal name 103string. This name type only works with the krb5 mechanism, and is 104defined in the \sphinxcode{\textless{}gssapi/gssapi\_krb5.h\textgreater{}} header. 105 106\item {} 107\sphinxstylestrong{GSS\_C\_NT\_USER\_NAME} or \sphinxstylestrong{GSS\_C\_NULL\_OID}: The value is treated 108as an unparsed principal name string, as above. These name types 109may work with mechanisms other than krb5, but will have different 110interpretations in those mechanisms. \sphinxstylestrong{GSS\_C\_NT\_USER\_NAME} is 111intended to be used with a local username, which will parse into a 112single-component principal in the default realm. 113 114\item {} 115\sphinxstylestrong{GSS\_C\_NT\_ANONYMOUS}: The value is ignored. The anonymous 116principal is used, allowing a client to authenticate to a server 117without asserting a particular identity (which may or may not be 118allowed by a particular server or Kerberos realm). 119 120\item {} 121\sphinxstylestrong{GSS\_C\_NT\_MACHINE\_UID\_NAME}: The value is uid\_t object. On 122Unix-like systems, the username of the uid is looked up in the 123system user database and the resulting username is parsed as a 124principal name. 125 126\item {} 127\sphinxstylestrong{GSS\_C\_NT\_STRING\_UID\_NAME}: As above, but the value is a decimal 128string representation of the uid. 129 130\item {} 131\sphinxstylestrong{GSS\_C\_NT\_EXPORT\_NAME}: The value must be the result of a 132\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.13}{gss\_export\_name} call. 133 134\item {} 135\sphinxstylestrong{GSS\_KRB5\_NT\_ENTERPRISE\_NAME}: The value should be a krb5 136enterprise name string (see \index{RFC!RFC 6806}\sphinxhref{https://tools.ietf.org/html/rfc6806.html}{\sphinxstylestrong{RFC 6806}} section 5), in the form 137\sphinxcode{user@suffix}. This name type is used to convey alias names, and 138is defined in the \sphinxcode{\textless{}gssapi/gssapi\_krb5.h\textgreater{}} header. (New in 139release 1.17.) 140 141\end{itemize} 142 143 144\section{Initiator credentials} 145\label{\detokenize{appdev/gssapi:initiator-credentials}} 146A GSSAPI client application uses \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} to establish a 147security context. The \sphinxstyleemphasis{initiator\_cred\_handle} parameter determines 148what tickets are used to establish the connection. An application can 149either pass \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} to use the default client 150credential, or it can use \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} beforehand to acquire an 151initiator credential. The call to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} may include a 152\sphinxstyleemphasis{desired\_name} parameter, or it may pass \sphinxstylestrong{GSS\_C\_NO\_NAME} if it does 153not have a specific name preference. 154 155If the desired name for a krb5 initiator credential is a host-based 156name, it is converted to a principal name of the form 157\sphinxcode{service/hostname} in the local realm, where \sphinxstyleemphasis{hostname} is the local 158hostname if not specified. The hostname will be canonicalized using 159forward name resolution, and possibly also using reverse name 160resolution depending on the value of the \sphinxstylestrong{rdns} variable in 161\DUrole{xref,std,std-ref}{libdefaults}. 162 163If a desired name is specified in the call to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, the 164krb5 mechanism will attempt to find existing tickets for that client 165principal name in the default credential cache or collection. If the 166default cache type does not support a collection, and the default 167cache contains credentials for a different principal than the desired 168name, a \sphinxstylestrong{GSS\_S\_CRED\_UNAVAIL} error will be returned with a minor 169code indicating a mismatch. 170 171If no existing tickets are available for the desired name, but the 172name has an entry in the default client \DUrole{xref,std,std-ref}{keytab\_definition}, the 173krb5 mechanism will acquire initial tickets for the name using the 174default client keytab. 175 176If no desired name is specified, credential acquisition will be 177deferred until the credential is used in a call to 178\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} or \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.21}{gss\_inquire\_cred}. If the call is to 179\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context}, the target name will be used to choose a client 180principal name using the credential cache selection facility. (This 181facility might, for instance, try to choose existing tickets for a 182client principal in the same realm as the target service). If there 183are no existing tickets for the chosen principal, but it is present in 184the default client keytab, the krb5 mechanism will acquire initial 185tickets using the keytab. 186 187If the target name cannot be used to select a client principal 188(because the credentials are used in a call to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.21}{gss\_inquire\_cred}), or 189if the credential cache selection facility cannot choose a principal 190for it, the default credential cache will be selected if it exists and 191contains tickets. 192 193If the default credential cache does not exist, but the default client 194keytab does, the krb5 mechanism will try to acquire initial tickets 195for the first principal in the default client keytab. 196 197If the krb5 mechanism acquires initial tickets using the default 198client keytab, the resulting tickets will be stored in the default 199cache or collection, and will be refreshed by future calls to 200\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} as they approach their expire time. 201 202 203\section{Acceptor names} 204\label{\detokenize{appdev/gssapi:acceptor-names}} 205A GSSAPI server application uses \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context} to establish 206a security context based on tokens provided by the client. The 207\sphinxstyleemphasis{acceptor\_cred\_handle} parameter determines what 208\DUrole{xref,std,std-ref}{keytab\_definition} entries may be authenticated to by the 209client, if the krb5 mechanism is used. 210 211The simplest choice is to pass \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} as the acceptor 212credential. In this case, clients may authenticate to any service 213principal in the default keytab (typically \DUrole{xref,std,std-ref}{DEFKTNAME}, or the value of 214the \sphinxstylestrong{KRB5\_KTNAME} environment variable). This is the recommended 215approach if the server application has no specific requirements to the 216contrary. 217 218A server may acquire an acceptor credential with \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} and 219a \sphinxstyleemphasis{cred\_usage} of \sphinxstylestrong{GSS\_C\_ACCEPT} or \sphinxstylestrong{GSS\_C\_BOTH}. If the 220\sphinxstyleemphasis{desired\_name} parameter is \sphinxstylestrong{GSS\_C\_NO\_NAME}, then clients will be 221allowed to authenticate to any service principal in the default 222keytab, just as if no acceptor credential was supplied. 223 224If a server wishes to specify a \sphinxstyleemphasis{desired\_name} to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, 225the most common choice is a host-based name. If the host-based 226\sphinxstyleemphasis{desired\_name} contains just a \sphinxstyleemphasis{service}, then clients will be allowed 227to authenticate to any host-based service principal (that is, a 228principal of the form \sphinxcode{service/hostname@REALM}) for the named 229service, regardless of hostname or realm, as long as it is present in 230the default keytab. If the input name contains both a \sphinxstyleemphasis{service} and a 231\sphinxstyleemphasis{hostname}, clients will be allowed to authenticate to any host-based 232principal for the named service and hostname, regardless of realm. 233 234\begin{sphinxadmonition}{note}{Note:} 235If a \sphinxstyleemphasis{hostname} is specified, it will be canonicalized 236using forward name resolution, and possibly also using 237reverse name resolution depending on the value of the 238\sphinxstylestrong{rdns} variable in \DUrole{xref,std,std-ref}{libdefaults}. 239\end{sphinxadmonition} 240 241\begin{sphinxadmonition}{note}{Note:} 242If the \sphinxstylestrong{ignore\_acceptor\_hostname} variable in 243\DUrole{xref,std,std-ref}{libdefaults} is enabled, then \sphinxstyleemphasis{hostname} will be 244ignored even if one is specified in the input name. 245\end{sphinxadmonition} 246 247\begin{sphinxadmonition}{note}{Note:} 248In MIT krb5 versions prior to 1.10, and in Heimdal’s 249implementation of the krb5 mechanism, an input name with 250just a \sphinxstyleemphasis{service} is treated like an input name of 251\sphinxcode{service@localhostname}, where \sphinxstyleemphasis{localhostname} is the 252string returned by gethostname(). 253\end{sphinxadmonition} 254 255If the \sphinxstyleemphasis{desired\_name} is a krb5 principal name or a local system name 256type which is mapped to a krb5 principal name, clients will only be 257allowed to authenticate to that principal in the default keytab. 258 259 260\section{Name Attributes} 261\label{\detokenize{appdev/gssapi:name-attributes}} 262In release 1.8 or later, the \sphinxhref{https://tools.ietf.org/html/rfc6680.txt\#section-7.4}{gss\_inquire\_name} and 263\sphinxhref{https://tools.ietf.org/html/6680.html\#section-7.5}{gss\_get\_name\_attribute} functions, specified in \index{RFC!RFC 6680}\sphinxhref{https://tools.ietf.org/html/rfc6680.html}{\sphinxstylestrong{RFC 6680}}, can be 264used to retrieve name attributes from the \sphinxstyleemphasis{src\_name} returned by 265\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}. The following attributes are defined when 266the krb5 mechanism is used: 267 268\phantomsection\label{\detokenize{appdev/gssapi:gssapi-authind-attr}}\begin{itemize} 269\item {} 270“auth-indicators” attribute: 271 272\end{itemize} 273 274This attribute will be included in the \sphinxhref{https://tools.ietf.org/html/rfc6680.txt\#section-7.4}{gss\_inquire\_name} output if the 275ticket contains \DUrole{xref,std,std-ref}{authentication indicators}. 276One indicator is returned per invocation of \sphinxhref{https://tools.ietf.org/html/6680.html\#section-7.5}{gss\_get\_name\_attribute}, 277so multiple invocations may be necessary to retrieve all of the 278indicators from the ticket. (New in release 1.15.) 279 280 281\section{Importing and exporting credentials} 282\label{\detokenize{appdev/gssapi:importing-and-exporting-credentials}} 283The following GSSAPI extensions can be used to import and export 284credentials (declared in \sphinxcode{\textless{}gssapi/gssapi\_ext.h\textgreater{}}): 285 286\fvset{hllines={, ,}}% 287\begin{sphinxVerbatim}[commandchars=\\\{\}] 288\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}export\PYGZus{}cred}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 289 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{cred\PYGZus{}handle}\PYG{p}{,} 290 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{token}\PYG{p}{)}\PYG{p}{;} 291 292\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}import\PYGZus{}cred}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 293 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{token}\PYG{p}{,} 294 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{o}{*}\PYG{n}{cred\PYGZus{}handle}\PYG{p}{)}\PYG{p}{;} 295\end{sphinxVerbatim} 296 297The first function serializes a GSSAPI credential handle into a 298buffer; the second unseralizes a buffer into a GSSAPI credential 299handle. Serializing a credential does not destroy it. If any of the 300mechanisms used in \sphinxstyleemphasis{cred\_handle} do not support serialization, 301gss\_export\_cred will return \sphinxstylestrong{GSS\_S\_UNAVAILABLE}. As with other 302GSSAPI serialization functions, these extensions are only intended to 303work with a matching implementation on the other side; they do not 304serialize credentials in a standardized format. 305 306A serialized credential may contain secret information such as ticket 307session keys. The serialization format does not protect this 308information from eavesdropping or tampering. The calling application 309must take care to protect the serialized credential when communicating 310it over an insecure channel or to an untrusted party. 311 312A krb5 GSSAPI credential may contain references to a credential cache, 313a client keytab, an acceptor keytab, and a replay cache. These 314resources are normally serialized as references to their external 315locations (such as the filename of the credential cache). Because of 316this, a serialized krb5 credential can only be imported by a process 317with similar privileges to the exporter. A serialized credential 318should not be trusted if it originates from a source with lower 319privileges than the importer, as it may contain references to external 320credential cache, keytab, or replay cache resources not accessible to 321the originator. 322 323An exception to the above rule applies when a krb5 GSSAPI credential 324refers to a memory credential cache, as is normally the case for 325delegated credentials received by \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}. In this 326case, the contents of the credential cache are serialized, so that the 327resulting token may be imported even if the original memory credential 328cache no longer exists. 329 330 331\section{Constrained delegation (S4U)} 332\label{\detokenize{appdev/gssapi:constrained-delegation-s4u}} 333The Microsoft S4U2Self and S4U2Proxy Kerberos protocol extensions 334allow an intermediate service to acquire credentials from a client to 335a target service without requiring the client to delegate a 336ticket-granting ticket, if the KDC is configured to allow it. 337 338To perform a constrained delegation operation, the intermediate 339service must submit to the KDC an “evidence ticket” from the client to 340the intermediate service. An evidence ticket can be acquired when the 341client authenticates to the intermediate service with Kerberos, or 342with an S4U2Self request if the KDC allows it. The MIT krb5 GSSAPI 343library represents an evidence ticket using a “proxy credential”, 344which is a special kind of gss\_cred\_id\_t object whose underlying 345credential cache contains the evidence ticket and a krbtgt ticket for 346the intermediate service. 347 348To acquire a proxy credential during client authentication, the 349service should first create an acceptor credential using the 350\sphinxstylestrong{GSS\_C\_BOTH} usage. The application should then pass this 351credential as the \sphinxstyleemphasis{acceptor\_cred\_handle} to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}, 352and also pass a \sphinxstyleemphasis{delegated\_cred\_handle} output parameter to receive a 353proxy credential containing the evidence ticket. The output value of 354\sphinxstyleemphasis{delegated\_cred\_handle} may be a delegated ticket-granting ticket if 355the client sent one, or a proxy credential if not. If the library can 356determine that the client’s ticket is not a valid evidence ticket, it 357will place \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} in \sphinxstyleemphasis{delegated\_cred\_handle}. 358 359To acquire a proxy credential using an S4U2Self request, the service 360can use the following GSSAPI extension: 361 362\fvset{hllines={, ,}}% 363\begin{sphinxVerbatim}[commandchars=\\\{\}] 364\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}acquire\PYGZus{}cred\PYGZus{}impersonate\PYGZus{}name}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 365 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{icred}\PYG{p}{,} 366 \PYG{n}{gss\PYGZus{}name\PYGZus{}t} \PYG{n}{desired\PYGZus{}name}\PYG{p}{,} 367 \PYG{n}{OM\PYGZus{}uint32} \PYG{n}{time\PYGZus{}req}\PYG{p}{,} 368 \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{n}{desired\PYGZus{}mechs}\PYG{p}{,} 369 \PYG{n}{gss\PYGZus{}cred\PYGZus{}usage\PYGZus{}t} \PYG{n}{cred\PYGZus{}usage}\PYG{p}{,} 370 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{o}{*}\PYG{n}{output\PYGZus{}cred}\PYG{p}{,} 371 \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{o}{*}\PYG{n}{actual\PYGZus{}mechs}\PYG{p}{,} 372 \PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{time\PYGZus{}rec}\PYG{p}{)}\PYG{p}{;} 373\end{sphinxVerbatim} 374 375The parameters to this function are similar to those of 376\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, except that \sphinxstyleemphasis{icred} is used to make an S4U2Self 377request to the KDC for a ticket from \sphinxstyleemphasis{desired\_name} to the 378intermediate service. Both \sphinxstyleemphasis{icred} and \sphinxstyleemphasis{desired\_name} are required 379for this function; passing \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} or 380\sphinxstylestrong{GSS\_C\_NO\_NAME} will cause the call to fail. \sphinxstyleemphasis{icred} must contain a 381krbtgt ticket for the intermediate service. The result of this 382operation is a proxy credential. (Prior to release 1.18, the result 383of this operation may be a regular credential for \sphinxstyleemphasis{desired\_name}, if 384the KDC issues a non-forwardable ticket.) 385 386Once the intermediate service has a proxy credential, it can simply 387pass it to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} as the \sphinxstyleemphasis{initiator\_cred\_handle} 388parameter, and the desired service as the \sphinxstyleemphasis{target\_name} parameter. 389The GSSAPI library will present the krbtgt ticket and evidence ticket 390in the proxy credential to the KDC in an S4U2Proxy request; if the 391intermediate service has the appropriate permissions, the KDC will 392issue a ticket from the client to the target service. The GSSAPI 393library will then use this ticket to authenticate to the target 394service. 395 396If an application needs to find out whether a credential it holds is a 397proxy credential and the name of the intermediate service, it can 398query the credential with the \sphinxstylestrong{GSS\_KRB5\_GET\_CRED\_IMPERSONATOR} OID 399(new in release 1.16, declared in \sphinxcode{\textless{}gssapi/gssapi\_krb5.h\textgreater{}}) using 400the gss\_inquire\_cred\_by\_oid extension (declared in 401\sphinxcode{\textless{}gssapi/gssapi\_ext.h\textgreater{}}): 402 403\fvset{hllines={, ,}}% 404\begin{sphinxVerbatim}[commandchars=\\\{\}] 405\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}inquire\PYGZus{}cred\PYGZus{}by\PYGZus{}oid}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 406 \PYG{n}{const} \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{cred\PYGZus{}handle}\PYG{p}{,} 407 \PYG{n}{gss\PYGZus{}OID} \PYG{n}{desired\PYGZus{}object}\PYG{p}{,} 408 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}set\PYGZus{}t} \PYG{o}{*}\PYG{n}{data\PYGZus{}set}\PYG{p}{)}\PYG{p}{;} 409\end{sphinxVerbatim} 410 411If the call succeeds and \sphinxstyleemphasis{cred\_handle} is a proxy credential, 412\sphinxstyleemphasis{data\_set} will be set to a single-element buffer set containing the 413unparsed principal name of the intermediate service. If \sphinxstyleemphasis{cred\_handle} 414is not a proxy credential, \sphinxstyleemphasis{data\_set} will be set to an empty buffer 415set. If the library does not support the query, 416gss\_inquire\_cred\_by\_oid will return \sphinxstylestrong{GSS\_S\_UNAVAILABLE}. 417 418 419\section{AEAD message wrapping} 420\label{\detokenize{appdev/gssapi:aead-message-wrapping}} 421The following GSSAPI extensions (declared in 422\sphinxcode{\textless{}gssapi/gssapi\_ext.h\textgreater{}}) can be used to wrap and unwrap messages 423with additional “associated data” which is integrity-checked but is 424not included in the output buffer: 425 426\fvset{hllines={, ,}}% 427\begin{sphinxVerbatim}[commandchars=\\\{\}] 428\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}wrap\PYGZus{}aead}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 429 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 430 \PYG{n+nb}{int} \PYG{n}{conf\PYGZus{}req\PYGZus{}flag}\PYG{p}{,} \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} 431 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}assoc\PYGZus{}buffer}\PYG{p}{,} 432 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}payload\PYGZus{}buffer}\PYG{p}{,} 433 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 434 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{output\PYGZus{}message\PYGZus{}buffer}\PYG{p}{)}\PYG{p}{;} 435 436\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}unwrap\PYGZus{}aead}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 437 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 438 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}message\PYGZus{}buffer}\PYG{p}{,} 439 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}assoc\PYGZus{}buffer}\PYG{p}{,} 440 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{output\PYGZus{}payload\PYGZus{}buffer}\PYG{p}{,} 441 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 442 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{o}{*}\PYG{n}{qop\PYGZus{}state}\PYG{p}{)}\PYG{p}{;} 443\end{sphinxVerbatim} 444 445Wrap tokens created with gss\_wrap\_aead will successfully unwrap only 446if the same \sphinxstyleemphasis{input\_assoc\_buffer} contents are presented to 447gss\_unwrap\_aead. 448 449 450\section{IOV message wrapping} 451\label{\detokenize{appdev/gssapi:iov-message-wrapping}} 452The following extensions (declared in \sphinxcode{\textless{}gssapi/gssapi\_ext.h\textgreater{}}) can 453be used for in-place encryption, fine-grained control over wrap token 454layout, and for constructing wrap tokens compatible with Microsoft DCE 455RPC: 456 457\fvset{hllines={, ,}}% 458\begin{sphinxVerbatim}[commandchars=\\\{\}] 459\PYG{n}{typedef} \PYG{n}{struct} \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc\PYGZus{}struct} \PYG{p}{\PYGZob{}} 460 \PYG{n}{OM\PYGZus{}uint32} \PYG{n+nb}{type}\PYG{p}{;} 461 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{buffer}\PYG{p}{;} 462\PYG{p}{\PYGZcb{}} \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc}\PYG{p}{,} \PYG{o}{*}\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}t}\PYG{p}{;} 463 464\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}wrap\PYGZus{}iov}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 465 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 466 \PYG{n+nb}{int} \PYG{n}{conf\PYGZus{}req\PYGZus{}flag}\PYG{p}{,} \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} 467 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 468 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 469 470\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}unwrap\PYGZus{}iov}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 471 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 472 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{o}{*}\PYG{n}{qop\PYGZus{}state}\PYG{p}{,} 473 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 474 475\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}wrap\PYGZus{}iov\PYGZus{}length}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 476 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 477 \PYG{n+nb}{int} \PYG{n}{conf\PYGZus{}req\PYGZus{}flag}\PYG{p}{,} 478 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 479 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 480 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 481 482\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}release\PYGZus{}iov\PYGZus{}buffer}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 483 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 484 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 485\end{sphinxVerbatim} 486 487The caller of gss\_wrap\_iov provides an array of gss\_iov\_buffer\_desc 488structures, each containing a type and a gss\_buffer\_desc structure. 489Valid types include: 490\begin{itemize} 491\item {} 492\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_DATA}: A data buffer to be included in the 493token, and to be encrypted or decrypted in-place if the token is 494confidentiality-protected. 495 496\item {} 497\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_HEADER}: The GSSAPI wrap token header and 498underlying cryptographic header. 499 500\item {} 501\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_TRAILER}: The cryptographic trailer, if one is 502required. 503 504\item {} 505\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_PADDING}: Padding to be combined with the data 506during encryption and decryption. (The implementation may choose to 507place padding in the trailer buffer, in which case it will set the 508padding buffer length to 0.) 509 510\item {} 511\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_STREAM}: For unwrapping only, a buffer 512containing a complete wrap token in standard format to be unwrapped. 513 514\item {} 515\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_SIGN\_ONLY}: A buffer to be included in the 516token’s integrity protection checksum, but not to be encrypted or 517included in the token itself. 518 519\end{itemize} 520 521For gss\_wrap\_iov, the IOV list should contain one HEADER buffer, 522followed by zero or more SIGN\_ONLY buffers, followed by one or more 523DATA buffers, followed by a TRAILER buffer. The memory pointed to by 524the buffers is not required to be contiguous or in any particular 525order. If \sphinxstyleemphasis{conf\_req\_flag} is true, DATA buffers will be encrypted 526in-place, while SIGN\_ONLY buffers will not be modified. 527 528The type of an output buffer may be combined with 529\sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATE} to request that gss\_wrap\_iov allocate 530the buffer contents. If gss\_wrap\_iov allocates a buffer, it sets the 531\sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATED} flag on the buffer type. 532gss\_release\_iov\_buffer can be used to release all allocated buffers 533within an iov list and unset their allocated flags. Here is an 534example of how gss\_wrap\_iov can be used with allocation requested 535(\sphinxstyleemphasis{ctx} is assumed to be a previously established gss\_ctx\_id\_t): 536 537\fvset{hllines={, ,}}% 538\begin{sphinxVerbatim}[commandchars=\\\{\}] 539\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 540\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{4}\PYG{p}{]}\PYG{p}{;} 541\PYG{n}{char} \PYG{n+nb}{str}\PYG{p}{[}\PYG{p}{]} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{message}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;} 542 543\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}HEADER} \PYG{o}{\textbar{}} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 544\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}DATA}\PYG{p}{;} 545\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n+nb}{str}\PYG{p}{;} 546\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{=} \PYG{n}{strlen}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{)}\PYG{p}{;} 547\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}PADDING} \PYG{o}{\textbar{}} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 548\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{3}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}TRAILER} \PYG{o}{\textbar{}} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 549 550\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}wrap\PYGZus{}iov}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{GSS\PYGZus{}C\PYGZus{}QOP\PYGZus{}DEFAULT}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} 551 \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 552\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 553 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 554 555\PYG{o}{/}\PYG{o}{*} \PYG{n}{Transmit} \PYG{o+ow}{or} \PYG{n}{otherwise} \PYG{n}{use} \PYG{n}{resulting} \PYG{n}{buffers}\PYG{o}{.} \PYG{o}{*}\PYG{o}{/} 556 557\PYG{p}{(}\PYG{n}{void}\PYG{p}{)}\PYG{n}{gss\PYGZus{}release\PYGZus{}iov\PYGZus{}buffer}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 558\end{sphinxVerbatim} 559 560If the caller does not choose to request buffer allocation by 561gss\_wrap\_iov, it should first call gss\_wrap\_iov\_length to query the 562lengths of the HEADER, PADDING, and TRAILER buffers. DATA buffers 563must be provided in the iov list so that padding length can be 564computed correctly, but the output buffers need not be initialized. 565Here is an example of using gss\_wrap\_iov\_length and gss\_wrap\_iov: 566 567\fvset{hllines={, ,}}% 568\begin{sphinxVerbatim}[commandchars=\\\{\}] 569\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 570\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{4}\PYG{p}{]}\PYG{p}{;} 571\PYG{n}{char} \PYG{n+nb}{str}\PYG{p}{[}\PYG{l+m+mi}{1024}\PYG{p}{]} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{message}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,} \PYG{o}{*}\PYG{n}{ptr}\PYG{p}{;} 572 573\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}HEADER}\PYG{p}{;} 574\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}DATA}\PYG{p}{;} 575\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n+nb}{str}\PYG{p}{;} 576\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{=} \PYG{n}{strlen}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{)}\PYG{p}{;} 577 578\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}PADDING}\PYG{p}{;} 579\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{3}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}TRAILER}\PYG{p}{;} 580 581\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}wrap\PYGZus{}iov\PYGZus{}length}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{GSS\PYGZus{}C\PYGZus{}QOP\PYGZus{}DEFAULT}\PYG{p}{,} 582 \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 583\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 584 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 585\PYG{k}{if} \PYG{p}{(}\PYG{n}{strlen}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{)} \PYG{o}{+} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{+} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{+} 586 \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{3}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{\PYGZgt{}} \PYG{n}{sizeof}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{)}\PYG{p}{)} 587 \PYG{n}{handle\PYGZus{}out\PYGZus{}of\PYGZus{}space\PYGZus{}error}\PYG{p}{(}\PYG{p}{)}\PYG{p}{;} 588\PYG{n}{ptr} \PYG{o}{=} \PYG{n+nb}{str} \PYG{o}{+} \PYG{n}{strlen}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{)}\PYG{p}{;} 589\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n}{ptr}\PYG{p}{;} 590\PYG{n}{ptr} \PYG{o}{+}\PYG{o}{=} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length}\PYG{p}{;} 591\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n}{ptr}\PYG{p}{;} 592\PYG{n}{ptr} \PYG{o}{+}\PYG{o}{=} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length}\PYG{p}{;} 593\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{3}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n}{ptr}\PYG{p}{;} 594 595\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}wrap\PYGZus{}iov}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{GSS\PYGZus{}C\PYGZus{}QOP\PYGZus{}DEFAULT}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} 596 \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 597\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 598 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 599\end{sphinxVerbatim} 600 601If the context was established using the \sphinxstylestrong{GSS\_C\_DCE\_STYLE} flag 602(described in \index{RFC!RFC 4757}\sphinxhref{https://tools.ietf.org/html/rfc4757.html}{\sphinxstylestrong{RFC 4757}}), wrap tokens compatible with Microsoft DCE 603RPC can be constructed. In this case, the IOV list must include a 604SIGN\_ONLY buffer, a DATA buffer, a second SIGN\_ONLY buffer, and a 605HEADER buffer in that order (the order of the buffer contents remains 606arbitrary). The application must pad the DATA buffer to a multiple of 60716 bytes as no padding or trailer buffer is used. 608 609gss\_unwrap\_iov may be called with an IOV list just like one which 610would be provided to gss\_wrap\_iov. DATA buffers will be decrypted 611in-place if they were encrypted, and SIGN\_ONLY buffers will not be 612modified. 613 614Alternatively, gss\_unwrap\_iov may be called with a single STREAM 615buffer, zero or more SIGN\_ONLY buffers, and a single DATA buffer. The 616STREAM buffer is interpreted as a complete wrap token. The STREAM 617buffer will be modified in-place to decrypt its contents. The DATA 618buffer will be initialized to point to the decrypted data within the 619STREAM buffer, unless it has the \sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATE} flag 620set, in which case it will be initialized with a copy of the decrypted 621data. Here is an example (\sphinxstyleemphasis{token} and \sphinxstyleemphasis{token\_len} are assumed to be a 622pre-existing pointer and length for a modifiable region of data): 623 624\fvset{hllines={, ,}}% 625\begin{sphinxVerbatim}[commandchars=\\\{\}] 626\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 627\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{p}{;} 628 629\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}STREAM}\PYG{p}{;} 630\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n}{token}\PYG{p}{;} 631\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{=} \PYG{n}{token\PYGZus{}len}\PYG{p}{;} 632\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}DATA}\PYG{p}{;} 633\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}unwrap\PYGZus{}iov}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{2}\PYG{p}{)}\PYG{p}{;} 634\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 635 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 636 637\PYG{o}{/}\PYG{o}{*} \PYG{n}{Decrypted} \PYG{n}{data} \PYG{o+ow}{is} \PYG{o+ow}{in} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{p}{,} \PYG{n}{pointing} \PYG{n}{to} \PYG{n}{a} \PYG{n}{subregion} \PYG{n}{of} 638 \PYG{o}{*} \PYG{n}{token}\PYG{o}{.} \PYG{o}{*}\PYG{o}{/} 639\end{sphinxVerbatim} 640 641 642\section{IOV MIC tokens} 643\label{\detokenize{appdev/gssapi:gssapi-mic-token}}\label{\detokenize{appdev/gssapi:iov-mic-tokens}} 644The following extensions (declared in \sphinxcode{\textless{}gssapi/gssapi\_ext.h\textgreater{}}) can 645be used in release 1.12 or later to construct and verify MIC tokens 646using an IOV list: 647 648\fvset{hllines={, ,}}% 649\begin{sphinxVerbatim}[commandchars=\\\{\}] 650\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}get\PYGZus{}mic\PYGZus{}iov}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 651 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 652 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} 653 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 654 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 655 656\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}get\PYGZus{}mic\PYGZus{}iov\PYGZus{}length}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 657 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 658 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} 659 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 660 \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 661 662\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}verify\PYGZus{}mic\PYGZus{}iov}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 663 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 664 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{o}{*}\PYG{n}{qop\PYGZus{}state}\PYG{p}{,} 665 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 666 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 667\end{sphinxVerbatim} 668 669The caller of gss\_get\_mic\_iov provides an array of gss\_iov\_buffer\_desc 670structures, each containing a type and a gss\_buffer\_desc structure. 671Valid types include: 672\begin{itemize} 673\item {} 674\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_DATA} and \sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_SIGN\_ONLY}: The 675corresponding buffer for each of these types will be signed for the 676MIC token, in the order provided. 677 678\item {} 679\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_MIC\_TOKEN}: The GSSAPI MIC token. 680 681\end{itemize} 682 683The type of the MIC\_TOKEN buffer may be combined with 684\sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATE} to request that gss\_get\_mic\_iov 685allocate the buffer contents. If gss\_get\_mic\_iov allocates the 686buffer, it sets the \sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATED} flag on the buffer 687type. gss\_release\_iov\_buffer can be used to release all allocated 688buffers within an iov list and unset their allocated flags. Here is 689an example of how gss\_get\_mic\_iov can be used with allocation 690requested (\sphinxstyleemphasis{ctx} is assumed to be a previously established 691gss\_ctx\_id\_t): 692 693\fvset{hllines={, ,}}% 694\begin{sphinxVerbatim}[commandchars=\\\{\}] 695\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 696\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{3}\PYG{p}{]}\PYG{p}{;} 697 698\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}DATA}\PYG{p}{;} 699\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{sign1}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;} 700\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{=} \PYG{l+m+mi}{5}\PYG{p}{;} 701\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}SIGN\PYGZus{}ONLY}\PYG{p}{;} 702\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{sign2}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;} 703\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{=} \PYG{l+m+mi}{5}\PYG{p}{;} 704\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}MIC\PYGZus{}TOKEN} \PYG{o}{\textbar{}} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 705 706\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}get\PYGZus{}mic\PYGZus{}iov}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{n}{GSS\PYGZus{}C\PYGZus{}QOP\PYGZus{}DEFAULT}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{)}\PYG{p}{;} 707\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 708 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 709 710\PYG{o}{/}\PYG{o}{*} \PYG{n}{Transmit} \PYG{o+ow}{or} \PYG{n}{otherwise} \PYG{n}{use} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.} \PYG{o}{*}\PYG{o}{/} 711 712\PYG{p}{(}\PYG{n}{void}\PYG{p}{)}\PYG{n}{gss\PYGZus{}release\PYGZus{}iov\PYGZus{}buffer}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{)}\PYG{p}{;} 713\end{sphinxVerbatim} 714 715If the caller does not choose to request buffer allocation by 716gss\_get\_mic\_iov, it should first call gss\_get\_mic\_iov\_length to query 717the length of the MIC\_TOKEN buffer. Here is an example of using 718gss\_get\_mic\_iov\_length and gss\_get\_mic\_iov: 719 720\fvset{hllines={, ,}}% 721\begin{sphinxVerbatim}[commandchars=\\\{\}] 722\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 723\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{p}{;} 724\PYG{n}{char} \PYG{n}{data}\PYG{p}{[}\PYG{l+m+mi}{1024}\PYG{p}{]}\PYG{p}{;} 725 726\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}MIC\PYGZus{}TOKEN}\PYG{p}{;} 727\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{type} \PYG{o}{=} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}TYPE\PYGZus{}DATA}\PYG{p}{;} 728\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{message}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{;} 729\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{=} \PYG{l+m+mi}{7}\PYG{p}{;} 730 731\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}get\PYGZus{}mic\PYGZus{}iov\PYGZus{}length}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{n}{GSS\PYGZus{}C\PYGZus{}QOP\PYGZus{}DEFAULT}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{2}\PYG{p}{)}\PYG{p}{;} 732\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 733 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 734\PYG{k}{if} \PYG{p}{(}\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{length} \PYG{o}{\PYGZgt{}} \PYG{n}{sizeof}\PYG{p}{(}\PYG{n}{data}\PYG{p}{)}\PYG{p}{)} 735 \PYG{n}{handle\PYGZus{}out\PYGZus{}of\PYGZus{}space\PYGZus{}error}\PYG{p}{(}\PYG{p}{)}\PYG{p}{;} 736\PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{o}{.}\PYG{n}{buffer}\PYG{o}{.}\PYG{n}{value} \PYG{o}{=} \PYG{n}{data}\PYG{p}{;} 737 738\PYG{n}{major} \PYG{o}{=} \PYG{n}{gss\PYGZus{}get\PYGZus{}mic\PYGZus{}iov}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{minor}\PYG{p}{,} \PYG{n}{ctx}\PYG{p}{,} \PYG{n}{GSS\PYGZus{}C\PYGZus{}QOP\PYGZus{}DEFAULT}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{2}\PYG{p}{)}\PYG{p}{;} 739\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 740 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 741\end{sphinxVerbatim} 742 743 744\chapter{Year 2038 considerations for uses of krb5\_timestamp} 745\label{\detokenize{appdev/y2038::doc}}\label{\detokenize{appdev/y2038:year-2038-considerations-for-uses-of-krb5-timestamp}} 746POSIX time values, which measure the number of seconds since January 1 7471970, will exceed the maximum value representable in a signed 32-bit 748integer in January 2038. This documentation describes considerations 749for consumers of the MIT krb5 libraries. 750 751Applications or libraries which use libkrb5 and consume the timestamps 752included in credentials or other structures make use of the 753{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\sphinxcode{krb5\_timestamp}}}} type. For historical reasons, krb5\_timestamp 754is a signed 32-bit integer, even on platforms where a larger type is 755natively used to represent time values. To behave properly for time 756values after January 2038, calling code should cast krb5\_timestamp 757values to uint32\_t, and then to time\_t: 758 759\fvset{hllines={, ,}}% 760\begin{sphinxVerbatim}[commandchars=\\\{\}] 761\PYG{p}{(}\PYG{n}{time\PYGZus{}t}\PYG{p}{)}\PYG{p}{(}\PYG{n}{uint32\PYGZus{}t}\PYG{p}{)}\PYG{n}{timestamp} 762\end{sphinxVerbatim} 763 764Used in this way, krb5\_timestamp values can represent time values up 765until February 2106, provided that the platform uses a 64-bit or 766larger time\_t type. This usage will also remain safe if a later 767version of MIT krb5 changes krb5\_timestamp to an unsigned 32-bit 768integer. 769 770The GSSAPI only uses representations of time intervals, not absolute 771times. Callers of the GSSAPI should require no changes to behave 772correctly after January 2038, provided that they use MIT krb5 release 7731.16 or later. 774 775 776\chapter{Differences between Heimdal and MIT Kerberos API} 777\label{\detokenize{appdev/h5l_mit_apidiff:differences-between-heimdal-and-mit-kerberos-api}}\label{\detokenize{appdev/h5l_mit_apidiff::doc}} 778 779\begin{savenotes}\sphinxattablestart 780\centering 781\begin{tabulary}{\linewidth}[t]{|l|l|} 782\hline 783 784{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_getaddrs:c.krb5_auth_con_getaddrs}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_getaddrs()}}}} 785& 786H5l: If either of the pointers to local\_addr 787and remote\_addr is not NULL, it is freed 788first and then reallocated before being 789populated with the content of corresponding 790address from authentication context. 791\\ 792\hline 793{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setaddrs:c.krb5_auth_con_setaddrs}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_setaddrs()}}}} 794& 795H5l: If either address is NULL, the previous 796address remains in place 797\\ 798\hline 799{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setports:c.krb5_auth_con_setports}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_setports()}}}} 800& 801H5l: Not implemented as of version 1.3.3 802\\ 803\hline 804{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey:c.krb5_auth_con_setrecvsubkey}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_setrecvsubkey()}}}} 805& 806H5l: If either port is NULL, the previous 807port remains in place 808\\ 809\hline 810{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey:c.krb5_auth_con_setsendsubkey}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_setsendsubkey()}}}} 811& 812H5l: Not implemented as of version 1.3.3 813\\ 814\hline 815{\hyperref[\detokenize{appdev/refs/api/krb5_cc_set_config:c.krb5_cc_set_config}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_set\_config()}}}} 816& 817MIT: Before version 1.10 it was assumed that 818the last argument \sphinxstyleemphasis{data} is ALWAYS non-zero. 819\\ 820\hline 821\sphinxcode{krb5\_cccol\_last\_change\_time()} 822& 823MIT: not implemented 824\\ 825\hline 826{\hyperref[\detokenize{appdev/refs/api/krb5_set_default_realm:c.krb5_set_default_realm}]{\sphinxcrossref{\sphinxcode{krb5\_set\_default\_realm()}}}} 827& 828H5l: Caches the computed default realm context 829field. If the second argument is NULL, 830it tries to retrieve it from libdefaults or DNS. 831MIT: Computes the default realm each time 832if it wasn’t explicitly set in the context 833\\ 834\hline 835\end{tabulary} 836\par 837\sphinxattableend\end{savenotes} 838 839 840\chapter{Initial credentials} 841\label{\detokenize{appdev/init_creds:initial-credentials}}\label{\detokenize{appdev/init_creds::doc}} 842Software that performs tasks such as logging users into a computer 843when they type their Kerberos password needs to get initial 844credentials (usually ticket granting tickets) from Kerberos. Such 845software shares some behavior with the \DUrole{xref,std,std-ref}{kinit(1)} program. 846 847Whenever a program grants access to a resource (such as a local login 848session on a desktop computer) based on a user successfully getting 849initial Kerberos credentials, it must verify those credentials against 850a secure shared secret (e.g., a host keytab) to ensure that the user 851credentials actually originate from a legitimate KDC. Failure to 852perform this verification is a critical vulnerability, because a 853malicious user can execute the “Zanarotti attack”: the user constructs 854a fake response that appears to come from the legitimate KDC, but 855whose contents come from an attacker-controlled KDC. 856 857Some applications read a Kerberos password over the network (ideally 858over a secure channel), which they then verify against the KDC. While 859this technique may be the only practical way to integrate Kerberos 860into some existing legacy systems, its use is contrary to the original 861design goals of Kerberos. 862 863The function {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} will get initial 864credentials for a client using a password. An application that needs 865to verify the credentials can call {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}}. 866Here is an example of code to obtain and verify TGT credentials, given 867strings \sphinxstyleemphasis{princname} and \sphinxstyleemphasis{password} for the client principal name and 868password: 869 870\fvset{hllines={, ,}}% 871\begin{sphinxVerbatim}[commandchars=\\\{\}] 872\PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 873\PYG{n}{krb5\PYGZus{}creds} \PYG{n}{creds}\PYG{p}{;} 874\PYG{n}{krb5\PYGZus{}principal} \PYG{n}{client\PYGZus{}princ} \PYG{o}{=} \PYG{n}{NULL}\PYG{p}{;} 875 876\PYG{n}{memset}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{sizeof}\PYG{p}{(}\PYG{n}{creds}\PYG{p}{)}\PYG{p}{)}\PYG{p}{;} 877\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}parse\PYGZus{}name}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{princname}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{client\PYGZus{}princ}\PYG{p}{)}\PYG{p}{;} 878\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 879 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 880\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}password}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{,} 881 \PYG{n}{password}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 882\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 883 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 884\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}verify\PYGZus{}init\PYGZus{}creds}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 885 886\PYG{n}{cleanup}\PYG{p}{:} 887\PYG{n}{krb5\PYGZus{}free\PYGZus{}principal}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{)}\PYG{p}{;} 888\PYG{n}{krb5\PYGZus{}free\PYGZus{}cred\PYGZus{}contents}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{)}\PYG{p}{;} 889\PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 890\end{sphinxVerbatim} 891 892 893\section{Options for get\_init\_creds} 894\label{\detokenize{appdev/init_creds:options-for-get-init-creds}} 895The function {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} takes an options 896parameter (which can be a null pointer). Use the function 897{\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc:c.krb5_get_init_creds_opt_alloc}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_alloc()}}}} to allocate an options 898structure, and {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free:c.krb5_get_init_creds_opt_free}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_free()}}}} to free it. For 899example: 900 901\fvset{hllines={, ,}}% 902\begin{sphinxVerbatim}[commandchars=\\\{\}] 903\PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 904\PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt} \PYG{o}{*}\PYG{n}{opt} \PYG{o}{=} \PYG{n}{NULL}\PYG{p}{;} 905\PYG{n}{krb5\PYGZus{}creds} \PYG{n}{creds}\PYG{p}{;} 906 907\PYG{n}{memset}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{sizeof}\PYG{p}{(}\PYG{n}{creds}\PYG{p}{)}\PYG{p}{)}\PYG{p}{;} 908\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}alloc}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 909\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 910 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 911\PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}set\PYGZus{}tkt\PYGZus{}life}\PYG{p}{(}\PYG{n}{opt}\PYG{p}{,} \PYG{l+m+mi}{24} \PYG{o}{*} \PYG{l+m+mi}{60} \PYG{o}{*} \PYG{l+m+mi}{60}\PYG{p}{)}\PYG{p}{;} 912\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}password}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{,} 913 \PYG{n}{password}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 914\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 915 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 916 917\PYG{n}{cleanup}\PYG{p}{:} 918\PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}free}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 919\PYG{n}{krb5\PYGZus{}free\PYGZus{}cred\PYGZus{}contents}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{)}\PYG{p}{;} 920\PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 921\end{sphinxVerbatim} 922 923 924\section{Getting anonymous credentials} 925\label{\detokenize{appdev/init_creds:getting-anonymous-credentials}} 926As of release 1.8, it is possible to obtain fully anonymous or 927partially anonymous (realm-exposed) credentials, if the KDC supports 928it. The MIT KDC supports issuing fully anonymous credentials as of 929release 1.8 if configured appropriately (see \DUrole{xref,std,std-ref}{anonymous\_pkinit}), 930but does not support issuing realm-exposed anonymous credentials at 931this time. 932 933To obtain fully anonymous credentials, call 934{\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:c.krb5_get_init_creds_opt_set_anonymous}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_anonymous()}}}} on the options 935structure to set the anonymous flag, and specify a client principal 936with the KDC’s realm and a single empty data component (the principal 937obtained by parsing \sphinxcode{@}\sphinxstyleemphasis{realmname}). Authentication will take 938place using anonymous PKINIT; if successful, the client principal of 939the resulting tickets will be 940\sphinxcode{WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS}. Here is an example: 941 942\fvset{hllines={, ,}}% 943\begin{sphinxVerbatim}[commandchars=\\\{\}] 944\PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}set\PYGZus{}anonymous}\PYG{p}{(}\PYG{n}{opt}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{)}\PYG{p}{;} 945\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}build\PYGZus{}principal}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{client\PYGZus{}princ}\PYG{p}{,} \PYG{n}{strlen}\PYG{p}{(}\PYG{n}{myrealm}\PYG{p}{)}\PYG{p}{,} 946 \PYG{n}{myrealm}\PYG{p}{,} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,} \PYG{p}{(}\PYG{n}{char} \PYG{o}{*}\PYG{p}{)}\PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 947\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 948 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 949\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}password}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{,} 950 \PYG{n}{password}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 951\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 952 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 953\end{sphinxVerbatim} 954 955To obtain realm-exposed anonymous credentials, set the anonymous flag 956on the options structure as above, but specify a normal client 957principal in order to prove membership in the realm. Authentication 958will take place as it normally does; if successful, the client 959principal of the resulting tickets will be \sphinxcode{WELLKNOWN/ANONYMOUS@}\sphinxstyleemphasis{realmname}. 960 961 962\section{User interaction} 963\label{\detokenize{appdev/init_creds:user-interaction}} 964Authenticating a user usually requires the entry of secret 965information, such as a password. A password can be supplied directly 966to {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} via the \sphinxstyleemphasis{password} 967parameter, or the application can supply prompter and/or responder 968callbacks instead. If callbacks are used, the user can also be 969queried for other secret information such as a PIN, informed of 970impending password expiration, or prompted to change a password which 971has expired. 972 973 974\subsection{Prompter callback} 975\label{\detokenize{appdev/init_creds:prompter-callback}} 976A prompter callback can be specified via the \sphinxstyleemphasis{prompter} and \sphinxstyleemphasis{data} 977parameters to {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}}. The prompter 978will be invoked each time the krb5 library has a question to ask or 979information to present. When the prompter callback is invoked, the 980\sphinxstyleemphasis{banner} argument (if not null) is intended to be displayed to the 981user, and the questions to be answered are specified in the \sphinxstyleemphasis{prompts} 982array. Each prompt contains a text question in the \sphinxstyleemphasis{prompt} field, a 983\sphinxstyleemphasis{hidden} bit to indicate whether the answer should be hidden from 984display, and a storage area for the answer in the \sphinxstyleemphasis{reply} field. The 985callback should fill in each question’s \sphinxcode{reply-\textgreater{}data} with the 986answer, up to a maximum number of \sphinxcode{reply-\textgreater{}length} bytes, and then 987reset \sphinxcode{reply-\textgreater{}length} to the length of the answer. 988 989A prompter callback can call {\hyperref[\detokenize{appdev/refs/api/krb5_get_prompt_types:c.krb5_get_prompt_types}]{\sphinxcrossref{\sphinxcode{krb5\_get\_prompt\_types()}}}} to get an 990array of type constants corresponding to the prompts, to get 991programmatic information about the semantic meaning of the questions. 992{\hyperref[\detokenize{appdev/refs/api/krb5_get_prompt_types:c.krb5_get_prompt_types}]{\sphinxcrossref{\sphinxcode{krb5\_get\_prompt\_types()}}}} may return a null pointer if no prompt 993type information is available. 994 995Text-based applications can use a built-in text prompter 996implementation by supplying {\hyperref[\detokenize{appdev/refs/api/krb5_prompter_posix:c.krb5_prompter_posix}]{\sphinxcrossref{\sphinxcode{krb5\_prompter\_posix()}}}} as the 997\sphinxstyleemphasis{prompter} parameter and a null pointer as the \sphinxstyleemphasis{data} parameter. For 998example: 999 1000\fvset{hllines={, ,}}% 1001\begin{sphinxVerbatim}[commandchars=\\\{\}] 1002\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}password}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{,} 1003 \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{krb5\PYGZus{}prompter\PYGZus{}posix}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} 1004 \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 1005\end{sphinxVerbatim} 1006 1007 1008\subsection{Responder callback} 1009\label{\detokenize{appdev/init_creds:responder-callback}} 1010A responder callback can be specified through the init\_creds options 1011using the {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_responder:c.krb5_get_init_creds_opt_set_responder}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_responder()}}}} function. 1012Responder callbacks can present a more sophisticated user interface 1013for authentication secrets. The responder callback is usually invoked 1014only once per authentication, with a list of questions produced by all 1015of the allowed preauthentication mechanisms. 1016 1017When the responder callback is invoked, the \sphinxstyleemphasis{rctx} argument can be 1018accessed to obtain the list of questions and to answer them. The 1019{\hyperref[\detokenize{appdev/refs/api/krb5_responder_list_questions:c.krb5_responder_list_questions}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_list\_questions()}}}} function retrieves an array of 1020question types. For each question type, the 1021{\hyperref[\detokenize{appdev/refs/api/krb5_responder_get_challenge:c.krb5_responder_get_challenge}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_get\_challenge()}}}} function retrieves additional 1022information about the question, if applicable, and the 1023{\hyperref[\detokenize{appdev/refs/api/krb5_responder_set_answer:c.krb5_responder_set_answer}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_set\_answer()}}}} function sets the answer. 1024 1025Responder question types, challenges, and answers are UTF-8 strings. 1026The question type is a well-known string; the meaning of the challenge 1027and answer depend on the question type. If an application does not 1028understand a question type, it cannot interpret the challenge or 1029provide an answer. Failing to answer a question typically results in 1030the prompter callback being used as a fallback. 1031 1032 1033\subsubsection{Password question} 1034\label{\detokenize{appdev/init_creds:password-question}} 1035The \sphinxcode{KRB5\_RESPONDER\_QUESTION\_PASSWORD} (or \sphinxcode{"password"}) 1036question type requests the user’s password. This question does not 1037have a challenge, and the response is simply the password string. 1038 1039 1040\subsubsection{One-time password question} 1041\label{\detokenize{appdev/init_creds:one-time-password-question}} 1042The \sphinxcode{KRB5\_RESPONDER\_QUESTION\_OTP} (or \sphinxcode{"otp"}) question 1043type requests a choice among one-time password tokens and the PIN and 1044value for the chosen token. The challenge and answer are JSON-encoded 1045strings, but an application can use convenience functions to avoid 1046doing any JSON processing itself. 1047 1048The {\hyperref[\detokenize{appdev/refs/api/krb5_responder_otp_get_challenge:c.krb5_responder_otp_get_challenge}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_otp\_get\_challenge()}}}} function decodes the 1049challenge into a krb5\_responder\_otp\_challenge structure. The 1050{\hyperref[\detokenize{appdev/refs/api/krb5_responder_otp_set_answer:c.krb5_responder_otp_set_answer}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_otp\_set\_answer()}}}} function selects one of the 1051token information elements from the challenge and supplies the value 1052and pin for that token. 1053 1054 1055\subsubsection{PKINIT password or PIN question} 1056\label{\detokenize{appdev/init_creds:pkinit-password-or-pin-question}} 1057The \sphinxcode{KRB5\_RESPONDER\_QUESTION\_PKINIT} (or \sphinxcode{"pkinit"}) question 1058type requests PINs for hardware devices and/or passwords for encrypted 1059credentials which are stored on disk, potentially also supplying 1060information about the state of the hardware devices. The challenge and 1061answer are JSON-encoded strings, but an application can use convenience 1062functions to avoid doing any JSON processing itself. 1063 1064The {\hyperref[\detokenize{appdev/refs/api/krb5_responder_pkinit_get_challenge:c.krb5_responder_pkinit_get_challenge}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_pkinit\_get\_challenge()}}}} function decodes the 1065challenges into a krb5\_responder\_pkinit\_challenge structure. The 1066{\hyperref[\detokenize{appdev/refs/api/krb5_responder_pkinit_set_answer:c.krb5_responder_pkinit_set_answer}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_pkinit\_set\_answer()}}}} function can be used to 1067supply the PIN or password for a particular client credential, and can 1068be called multiple times. 1069 1070 1071\subsubsection{Example} 1072\label{\detokenize{appdev/init_creds:example}} 1073Here is an example of using a responder callback: 1074 1075\fvset{hllines={, ,}}% 1076\begin{sphinxVerbatim}[commandchars=\\\{\}] 1077\PYG{n}{static} \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} 1078\PYG{n}{my\PYGZus{}responder}\PYG{p}{(}\PYG{n}{krb5\PYGZus{}context} \PYG{n}{context}\PYG{p}{,} \PYG{n}{void} \PYG{o}{*}\PYG{n}{data}\PYG{p}{,} 1079 \PYG{n}{krb5\PYGZus{}responder\PYGZus{}context} \PYG{n}{rctx}\PYG{p}{)} 1080\PYG{p}{\PYGZob{}} 1081 \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 1082 \PYG{n}{krb5\PYGZus{}responder\PYGZus{}otp\PYGZus{}challenge} \PYG{o}{*}\PYG{n}{chl}\PYG{p}{;} 1083 1084 \PYG{k}{if} \PYG{p}{(}\PYG{n}{krb5\PYGZus{}responder\PYGZus{}get\PYGZus{}challenge}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{rctx}\PYG{p}{,} 1085 \PYG{n}{KRB5\PYGZus{}RESPONDER\PYGZus{}QUESTION\PYGZus{}PASSWORD}\PYG{p}{)}\PYG{p}{)} \PYG{p}{\PYGZob{}} 1086 \PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}responder\PYGZus{}set\PYGZus{}answer}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{rctx}\PYG{p}{,} 1087 \PYG{n}{KRB5\PYGZus{}RESPONDER\PYGZus{}QUESTION\PYGZus{}PASSWORD}\PYG{p}{,} 1088 \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{open sesame}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{)}\PYG{p}{;} 1089 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1090 \PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1091 \PYG{p}{\PYGZcb{}} 1092 \PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}responder\PYGZus{}otp\PYGZus{}get\PYGZus{}challenge}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{rctx}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{chl}\PYG{p}{)}\PYG{p}{;} 1093 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret} \PYG{o}{==} \PYG{l+m+mi}{0} \PYG{o}{\PYGZam{}}\PYG{o}{\PYGZam{}} \PYG{n}{chl} \PYG{o}{!=} \PYG{n}{NULL}\PYG{p}{)} \PYG{p}{\PYGZob{}} 1094 \PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}responder\PYGZus{}otp\PYGZus{}set\PYGZus{}answer}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{rctx}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{1234}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{,} 1095 \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 1096 \PYG{n}{krb5\PYGZus{}responder\PYGZus{}otp\PYGZus{}challenge\PYGZus{}free}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{rctx}\PYG{p}{,} \PYG{n}{chl}\PYG{p}{)}\PYG{p}{;} 1097 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1098 \PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1099 \PYG{p}{\PYGZcb{}} 1100 \PYG{k}{return} \PYG{l+m+mi}{0}\PYG{p}{;} 1101\PYG{p}{\PYGZcb{}} 1102 1103\PYG{n}{static} \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} 1104\PYG{n}{get\PYGZus{}creds}\PYG{p}{(}\PYG{n}{krb5\PYGZus{}context} \PYG{n}{context}\PYG{p}{,} \PYG{n}{krb5\PYGZus{}principal} \PYG{n}{client\PYGZus{}princ}\PYG{p}{)} 1105\PYG{p}{\PYGZob{}} 1106 \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 1107 \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt} \PYG{o}{*}\PYG{n}{opt} \PYG{o}{=} \PYG{n}{NULL}\PYG{p}{;} 1108 \PYG{n}{krb5\PYGZus{}creds} \PYG{n}{creds}\PYG{p}{;} 1109 1110 \PYG{n}{memset}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{sizeof}\PYG{p}{(}\PYG{n}{creds}\PYG{p}{)}\PYG{p}{)}\PYG{p}{;} 1111 \PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}alloc}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 1112 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1113 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1114 \PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}set\PYGZus{}responder}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{opt}\PYG{p}{,} \PYG{n}{my\PYGZus{}responder}\PYG{p}{,} 1115 \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 1116 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1117 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1118 \PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}password}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{,} 1119 \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 1120 1121\PYG{n}{cleanup}\PYG{p}{:} 1122 \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}free}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{opt}\PYG{p}{)}\PYG{p}{;} 1123 \PYG{n}{krb5\PYGZus{}free\PYGZus{}cred\PYGZus{}contents}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{)}\PYG{p}{;} 1124 \PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1125\PYG{p}{\PYGZcb{}} 1126\end{sphinxVerbatim} 1127 1128 1129\section{Verifying initial credentials} 1130\label{\detokenize{appdev/init_creds:verifying-initial-credentials}} 1131Use the function {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}} to verify initial 1132credentials. It takes an options structure (which can be a null 1133pointer). Use {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init:c.krb5_verify_init_creds_opt_init}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds\_opt\_init()}}}} to initialize 1134the caller-allocated options structure, and 1135{\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:c.krb5_verify_init_creds_opt_set_ap_req_nofail}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail()}}}} to set the 1136“nofail” option. For example: 1137 1138\fvset{hllines={, ,}}% 1139\begin{sphinxVerbatim}[commandchars=\\\{\}] 1140\PYG{n}{krb5\PYGZus{}verify\PYGZus{}init\PYGZus{}creds\PYGZus{}opt} \PYG{n}{vopt}\PYG{p}{;} 1141 1142\PYG{n}{krb5\PYGZus{}verify\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}init}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{vopt}\PYG{p}{)}\PYG{p}{;} 1143\PYG{n}{krb5\PYGZus{}verify\PYGZus{}init\PYGZus{}creds\PYGZus{}opt\PYGZus{}set\PYGZus{}ap\PYGZus{}req\PYGZus{}nofail}\PYG{p}{(}\PYG{o}{\PYGZam{}}\PYG{n}{vopt}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{)}\PYG{p}{;} 1144\PYG{n}{ret} \PYG{o}{=} \PYG{n}{krb5\PYGZus{}verify\PYGZus{}init\PYGZus{}creds}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{creds}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{,} \PYG{o}{\PYGZam{}}\PYG{n}{vopt}\PYG{p}{)}\PYG{p}{;} 1145\end{sphinxVerbatim} 1146 1147The confusingly named “nofail” option, when set, means that the 1148verification must actually succeed in order for 1149{\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}} to indicate success. The default 1150state of this option (cleared) means that if there is no key material 1151available to verify the user credentials, the verification will 1152succeed anyway. (The default can be changed by a configuration file 1153setting.) 1154 1155This accommodates a use case where a large number of unkeyed shared 1156desktop workstations need to allow users to log in using Kerberos. 1157The security risks from this practice are mitigated by the absence of 1158valuable state on the shared workstations—any valuable resources 1159that the users would access reside on networked servers. 1160 1161 1162\chapter{Principal manipulation and parsing} 1163\label{\detokenize{appdev/princ_handle:principal-manipulation-and-parsing}}\label{\detokenize{appdev/princ_handle::doc}} 1164Kerberos principal structure 1165 1166{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_data}}}} 1167 1168{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\sphinxcode{krb5\_principal}}}} 1169 1170Create and free principal 1171 1172{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal()}}}} 1173 1174{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:c.krb5_build_principal_alloc_va}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal\_alloc\_va()}}}} 1175 1176{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal_ext:c.krb5_build_principal_ext}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal\_ext()}}}} 1177 1178{\hyperref[\detokenize{appdev/refs/api/krb5_copy_principal:c.krb5_copy_principal}]{\sphinxcrossref{\sphinxcode{krb5\_copy\_principal()}}}} 1179 1180{\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} 1181 1182{\hyperref[\detokenize{appdev/refs/api/krb5_cc_get_principal:c.krb5_cc_get_principal}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_get\_principal()}}}} 1183 1184Comparing 1185 1186{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare:c.krb5_principal_compare}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_compare()}}}} 1187 1188{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare_flags:c.krb5_principal_compare_flags}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_compare\_flags()}}}} 1189 1190{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare_any_realm:c.krb5_principal_compare_any_realm}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_compare\_any\_realm()}}}} 1191 1192{\hyperref[\detokenize{appdev/refs/api/krb5_sname_match:c.krb5_sname_match}]{\sphinxcrossref{\sphinxcode{krb5\_sname\_match()}}}} 1193 1194{\hyperref[\detokenize{appdev/refs/api/krb5_sname_to_principal:c.krb5_sname_to_principal}]{\sphinxcrossref{\sphinxcode{krb5\_sname\_to\_principal()}}}} 1195 1196Parsing: 1197 1198{\hyperref[\detokenize{appdev/refs/api/krb5_parse_name:c.krb5_parse_name}]{\sphinxcrossref{\sphinxcode{krb5\_parse\_name()}}}} 1199 1200{\hyperref[\detokenize{appdev/refs/api/krb5_parse_name_flags:c.krb5_parse_name_flags}]{\sphinxcrossref{\sphinxcode{krb5\_parse\_name\_flags()}}}} 1201 1202{\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}]{\sphinxcrossref{\sphinxcode{krb5\_unparse\_name()}}}} 1203 1204{\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name_flags:c.krb5_unparse_name_flags}]{\sphinxcrossref{\sphinxcode{krb5\_unparse\_name\_flags()}}}} 1205 1206Utilities: 1207 1208{\hyperref[\detokenize{appdev/refs/api/krb5_is_config_principal:c.krb5_is_config_principal}]{\sphinxcrossref{\sphinxcode{krb5\_is\_config\_principal()}}}} 1209 1210{\hyperref[\detokenize{appdev/refs/api/krb5_kuserok:c.krb5_kuserok}]{\sphinxcrossref{\sphinxcode{krb5\_kuserok()}}}} 1211 1212{\hyperref[\detokenize{appdev/refs/api/krb5_set_password:c.krb5_set_password}]{\sphinxcrossref{\sphinxcode{krb5\_set\_password()}}}} 1213 1214{\hyperref[\detokenize{appdev/refs/api/krb5_set_password_using_ccache:c.krb5_set_password_using_ccache}]{\sphinxcrossref{\sphinxcode{krb5\_set\_password\_using\_ccache()}}}} 1215 1216{\hyperref[\detokenize{appdev/refs/api/krb5_set_principal_realm:c.krb5_set_principal_realm}]{\sphinxcrossref{\sphinxcode{krb5\_set\_principal\_realm()}}}} 1217 1218{\hyperref[\detokenize{appdev/refs/api/krb5_realm_compare:c.krb5_realm_compare}]{\sphinxcrossref{\sphinxcode{krb5\_realm\_compare()}}}} 1219 1220 1221\chapter{Complete reference - API and datatypes} 1222\label{\detokenize{appdev/refs/index:complete-reference-api-and-datatypes}}\label{\detokenize{appdev/refs/index::doc}} 1223 1224\section{krb5 API} 1225\label{\detokenize{appdev/refs/api/index:krb5-api}}\label{\detokenize{appdev/refs/api/index::doc}} 1226 1227\subsection{Frequently used public interfaces} 1228\label{\detokenize{appdev/refs/api/index:frequently-used-public-interfaces}} 1229 1230\subsubsection{krb5\_build\_principal - Build a principal name using null-terminated strings.} 1231\label{\detokenize{appdev/refs/api/krb5_build_principal:krb5-build-principal-build-a-principal-name-using-null-terminated-strings}}\label{\detokenize{appdev/refs/api/krb5_build_principal::doc}}\index{krb5\_build\_principal (C function)} 1232 1233\begin{fulllineitems} 1234\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_build\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ princ}, unsigned int\sphinxstyleemphasis{ rlen}, const char *\sphinxstyleemphasis{ realm}, ...}{} 1235\end{fulllineitems} 1236 1237\begin{quote}\begin{description} 1238\item[{param}] \leavevmode 1239\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1240 1241\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} - Principal name 1242 1243\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rlen} - Realm name length 1244 1245\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm name 1246 1247\end{description}\end{quote} 1248\begin{quote}\begin{description} 1249\item[{retval}] \leavevmode\begin{itemize} 1250\item {} 12510 Success 1252 1253\end{itemize} 1254 1255\item[{return}] \leavevmode\begin{itemize} 1256\item {} 1257Kerberos error codes 1258 1259\end{itemize} 1260 1261\end{description}\end{quote} 1262 1263Call {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free \sphinxstyleemphasis{princ} when it is no longer needed. 1264 1265\begin{sphinxadmonition}{note}{Note:} 1266{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal()}}}} and {\hyperref[\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:c.krb5_build_principal_alloc_va}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal\_alloc\_va()}}}} perform the same task. {\hyperref[\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal()}}}} takes variadic arguments. {\hyperref[\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:c.krb5_build_principal_alloc_va}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal\_alloc\_va()}}}} takes a pre-computed \sphinxstyleemphasis{varargs} pointer. 1267\end{sphinxadmonition} 1268 1269 1270\subsubsection{krb5\_build\_principal\_alloc\_va - Build a principal name, using a precomputed variable argument list.} 1271\label{\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:krb5-build-principal-alloc-va-build-a-principal-name-using-a-precomputed-variable-argument-list}}\label{\detokenize{appdev/refs/api/krb5_build_principal_alloc_va::doc}}\index{krb5\_build\_principal\_alloc\_va (C function)} 1272 1273\begin{fulllineitems} 1274\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:c.krb5_build_principal_alloc_va}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_build\_principal\_alloc\_va}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ princ}, unsigned int\sphinxstyleemphasis{ rlen}, const char *\sphinxstyleemphasis{ realm}, va\_list\sphinxstyleemphasis{ ap}}{} 1275\end{fulllineitems} 1276 1277\begin{quote}\begin{description} 1278\item[{param}] \leavevmode 1279\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1280 1281\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} - Principal structure 1282 1283\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rlen} - Realm name length 1284 1285\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm name 1286 1287\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap} - List of char * components, ending with NULL 1288 1289\end{description}\end{quote} 1290\begin{quote}\begin{description} 1291\item[{retval}] \leavevmode\begin{itemize} 1292\item {} 12930 Success 1294 1295\end{itemize} 1296 1297\item[{return}] \leavevmode\begin{itemize} 1298\item {} 1299Kerberos error codes 1300 1301\end{itemize} 1302 1303\end{description}\end{quote} 1304 1305Similar to {\hyperref[\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}]{\sphinxcrossref{\sphinxcode{krb5\_build\_principal()}}}} , this function builds a principal name, but its name components are specified as a va\_list. 1306 1307Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to deallocate \sphinxstyleemphasis{princ} when it is no longer needed. 1308 1309 1310\subsubsection{krb5\_build\_principal\_ext - Build a principal name using length-counted strings.} 1311\label{\detokenize{appdev/refs/api/krb5_build_principal_ext:krb5-build-principal-ext-build-a-principal-name-using-length-counted-strings}}\label{\detokenize{appdev/refs/api/krb5_build_principal_ext::doc}}\index{krb5\_build\_principal\_ext (C function)} 1312 1313\begin{fulllineitems} 1314\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal_ext:c.krb5_build_principal_ext}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_build\_principal\_ext}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ princ}, unsigned int\sphinxstyleemphasis{ rlen}, const char *\sphinxstyleemphasis{ realm}, ...}{} 1315\end{fulllineitems} 1316 1317\begin{quote}\begin{description} 1318\item[{param}] \leavevmode 1319\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1320 1321\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} - Principal name 1322 1323\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rlen} - Realm name length 1324 1325\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm name 1326 1327\end{description}\end{quote} 1328\begin{quote}\begin{description} 1329\item[{retval}] \leavevmode\begin{itemize} 1330\item {} 13310 Success 1332 1333\end{itemize} 1334 1335\item[{return}] \leavevmode\begin{itemize} 1336\item {} 1337Kerberos error codes 1338 1339\end{itemize} 1340 1341\end{description}\end{quote} 1342 1343This 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[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free allocated memory for principal when it is no longer needed. 1344 1345 1346\subsubsection{krb5\_cc\_close - Close a credential cache handle.} 1347\label{\detokenize{appdev/refs/api/krb5_cc_close:krb5-cc-close-close-a-credential-cache-handle}}\label{\detokenize{appdev/refs/api/krb5_cc_close::doc}}\index{krb5\_cc\_close (C function)} 1348 1349\begin{fulllineitems} 1350\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_close:c.krb5_cc_close}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_close}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}}{} 1351\end{fulllineitems} 1352 1353\begin{quote}\begin{description} 1354\item[{param}] \leavevmode 1355\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1356 1357\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 1358 1359\end{description}\end{quote} 1360\begin{quote}\begin{description} 1361\item[{retval}] \leavevmode\begin{itemize} 1362\item {} 13630 Success 1364 1365\end{itemize} 1366 1367\item[{return}] \leavevmode\begin{itemize} 1368\item {} 1369Kerberos error codes 1370 1371\end{itemize} 1372 1373\end{description}\end{quote} 1374 1375This function closes a credential cache handle \sphinxstyleemphasis{cache} without affecting the contents of the cache. 1376 1377 1378\subsubsection{krb5\_cc\_default - Resolve the default credential cache name.} 1379\label{\detokenize{appdev/refs/api/krb5_cc_default::doc}}\label{\detokenize{appdev/refs/api/krb5_cc_default:krb5-cc-default-resolve-the-default-credential-cache-name}}\index{krb5\_cc\_default (C function)} 1380 1381\begin{fulllineitems} 1382\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_default:c.krb5_cc_default}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_default}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ ccache}}{} 1383\end{fulllineitems} 1384 1385\begin{quote}\begin{description} 1386\item[{param}] \leavevmode 1387\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1388 1389\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ccache} - Pointer to credential cache name 1390 1391\end{description}\end{quote} 1392\begin{quote}\begin{description} 1393\item[{retval}] \leavevmode\begin{itemize} 1394\item {} 13950 Success 1396 1397\item {} 1398KV5M\_CONTEXT Bad magic number for \_krb5\_context structure 1399 1400\item {} 1401KRB5\_FCC\_INTERNAL The name of the default credential cache cannot be obtained 1402 1403\end{itemize} 1404 1405\item[{return}] \leavevmode\begin{itemize} 1406\item {} 1407Kerberos error codes 1408 1409\end{itemize} 1410 1411\end{description}\end{quote} 1412 1413Create a handle to the default credential cache as given by {\hyperref[\detokenize{appdev/refs/api/krb5_cc_default_name:c.krb5_cc_default_name}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_default\_name()}}}} . 1414 1415 1416\subsubsection{krb5\_cc\_default\_name - Return the name of the default credential cache.} 1417\label{\detokenize{appdev/refs/api/krb5_cc_default_name::doc}}\label{\detokenize{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)} 1418 1419\begin{fulllineitems} 1420\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_default_name:c.krb5_cc_default_name}}\pysiglinewithargsret{const char * \sphinxbfcode{krb5\_cc\_default\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}}{} 1421\end{fulllineitems} 1422 1423\begin{quote}\begin{description} 1424\item[{param}] \leavevmode 1425\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1426 1427\end{description}\end{quote} 1428\begin{quote}\begin{description} 1429\item[{return}] \leavevmode\begin{itemize} 1430\item {} 1431Name of default credential cache for the current user. 1432 1433\end{itemize} 1434 1435\end{description}\end{quote} 1436 1437Return a pointer to the default credential cache name for \sphinxstyleemphasis{context} , as determined by a prior call to {\hyperref[\detokenize{appdev/refs/api/krb5_cc_set_default_name:c.krb5_cc_set_default_name}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_set\_default\_name()}}}} , by the KRB5CCNAME environment variable, by the default\_ccache\_name profile variable, or by the operating system or build-time default value. The returned value must not be modified or freed by the caller. The returned value becomes invalid when \sphinxstyleemphasis{context} is destroyed {\hyperref[\detokenize{appdev/refs/api/krb5_free_context:c.krb5_free_context}]{\sphinxcrossref{\sphinxcode{krb5\_free\_context()}}}} or if a subsequent call to {\hyperref[\detokenize{appdev/refs/api/krb5_cc_set_default_name:c.krb5_cc_set_default_name}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_set\_default\_name()}}}} is made on \sphinxstyleemphasis{context} . 1438 1439The default credential cache name is cached in \sphinxstyleemphasis{context} between calls to this function, so if the value of KRB5CCNAME changes in the process environment after the first call to this function on, that change will not be reflected in later calls with the same context. The caller can invoke {\hyperref[\detokenize{appdev/refs/api/krb5_cc_set_default_name:c.krb5_cc_set_default_name}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_set\_default\_name()}}}} with a NULL value of \sphinxstyleemphasis{name} to clear the cached value and force the default name to be recomputed. 1440 1441 1442\subsubsection{krb5\_cc\_destroy - Destroy a credential cache.} 1443\label{\detokenize{appdev/refs/api/krb5_cc_destroy:krb5-cc-destroy-destroy-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_destroy::doc}}\index{krb5\_cc\_destroy (C function)} 1444 1445\begin{fulllineitems} 1446\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_destroy:c.krb5_cc_destroy}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_destroy}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}}{} 1447\end{fulllineitems} 1448 1449\begin{quote}\begin{description} 1450\item[{param}] \leavevmode 1451\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1452 1453\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 1454 1455\end{description}\end{quote} 1456\begin{quote}\begin{description} 1457\item[{retval}] \leavevmode\begin{itemize} 1458\item {} 14590 Success 1460 1461\end{itemize} 1462 1463\item[{return}] \leavevmode\begin{itemize} 1464\item {} 1465Permission errors 1466 1467\end{itemize} 1468 1469\end{description}\end{quote} 1470 1471This function destroys any existing contents of \sphinxstyleemphasis{cache} and closes the handle to it. 1472 1473 1474\subsubsection{krb5\_cc\_dup - Duplicate ccache handle.} 1475\label{\detokenize{appdev/refs/api/krb5_cc_dup:krb5-cc-dup-duplicate-ccache-handle}}\label{\detokenize{appdev/refs/api/krb5_cc_dup::doc}}\index{krb5\_cc\_dup (C function)} 1476 1477\begin{fulllineitems} 1478\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_dup:c.krb5_cc_dup}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_dup}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ in}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ out}}{} 1479\end{fulllineitems} 1480 1481\begin{quote}\begin{description} 1482\item[{param}] \leavevmode 1483\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1484 1485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} - Credential cache handle to be duplicated 1486 1487\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Credential cache handle 1488 1489\end{description}\end{quote} 1490 1491Create a new handle referring to the same cache as \sphinxstyleemphasis{in} . The new handle and \sphinxstyleemphasis{in} can be closed independently. 1492 1493 1494\subsubsection{krb5\_cc\_get\_name - Retrieve the name, but not type of a credential cache.} 1495\label{\detokenize{appdev/refs/api/krb5_cc_get_name::doc}}\label{\detokenize{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)} 1496 1497\begin{fulllineitems} 1498\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_name:c.krb5_cc_get_name}}\pysiglinewithargsret{const char * \sphinxbfcode{krb5\_cc\_get\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}}{} 1499\end{fulllineitems} 1500 1501\begin{quote}\begin{description} 1502\item[{param}] \leavevmode 1503\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1504 1505\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 1506 1507\end{description}\end{quote} 1508\begin{quote}\begin{description} 1509\item[{return}] \leavevmode\begin{itemize} 1510\item {} 1511On success - the name of the credential cache. 1512 1513\end{itemize} 1514 1515\end{description}\end{quote} 1516 1517\begin{sphinxadmonition}{warning}{Warning:} 1518Returns the name of the credential cache. The result is an alias into \sphinxstyleemphasis{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[\detokenize{appdev/refs/api/krb5_cc_resolve:c.krb5_cc_resolve}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_resolve()}}}} . 1519\end{sphinxadmonition} 1520 1521 1522\subsubsection{krb5\_cc\_get\_principal - Get the default principal of a credential cache.} 1523\label{\detokenize{appdev/refs/api/krb5_cc_get_principal:krb5-cc-get-principal-get-the-default-principal-of-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_get_principal::doc}}\index{krb5\_cc\_get\_principal (C function)} 1524 1525\begin{fulllineitems} 1526\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_principal:c.krb5_cc_get_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_get\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ principal}}{} 1527\end{fulllineitems} 1528 1529\begin{quote}\begin{description} 1530\item[{param}] \leavevmode 1531\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1532 1533\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 1534 1535\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{principal} - Primary principal 1536 1537\end{description}\end{quote} 1538\begin{quote}\begin{description} 1539\item[{retval}] \leavevmode\begin{itemize} 1540\item {} 15410 Success 1542 1543\end{itemize} 1544 1545\item[{return}] \leavevmode\begin{itemize} 1546\item {} 1547Kerberos error codes 1548 1549\end{itemize} 1550 1551\end{description}\end{quote} 1552 1553Returns the default client principal of a credential cache as set by {\hyperref[\detokenize{appdev/refs/api/krb5_cc_initialize:c.krb5_cc_initialize}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_initialize()}}}} . 1554 1555Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free \sphinxstyleemphasis{principal} when it is no longer needed. 1556 1557 1558\subsubsection{krb5\_cc\_get\_type - Retrieve the type of a credential cache.} 1559\label{\detokenize{appdev/refs/api/krb5_cc_get_type:krb5-cc-get-type-retrieve-the-type-of-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_get_type::doc}}\index{krb5\_cc\_get\_type (C function)} 1560 1561\begin{fulllineitems} 1562\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_type:c.krb5_cc_get_type}}\pysiglinewithargsret{const char * \sphinxbfcode{krb5\_cc\_get\_type}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}}{} 1563\end{fulllineitems} 1564 1565\begin{quote}\begin{description} 1566\item[{param}] \leavevmode 1567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1568 1569\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 1570 1571\end{description}\end{quote} 1572\begin{quote}\begin{description} 1573\item[{return}] \leavevmode\begin{itemize} 1574\item {} 1575The type of a credential cache as an alias that must not be modified or freed by the caller. 1576 1577\end{itemize} 1578 1579\end{description}\end{quote} 1580 1581 1582\subsubsection{krb5\_cc\_initialize - Initialize a credential cache.} 1583\label{\detokenize{appdev/refs/api/krb5_cc_initialize::doc}}\label{\detokenize{appdev/refs/api/krb5_cc_initialize:krb5-cc-initialize-initialize-a-credential-cache}}\index{krb5\_cc\_initialize (C function)} 1584 1585\begin{fulllineitems} 1586\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_initialize:c.krb5_cc_initialize}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_initialize}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ principal}}{} 1587\end{fulllineitems} 1588 1589\begin{quote}\begin{description} 1590\item[{param}] \leavevmode 1591\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1592 1593\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 1594 1595\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Default principal name 1596 1597\end{description}\end{quote} 1598\begin{quote}\begin{description} 1599\item[{retval}] \leavevmode\begin{itemize} 1600\item {} 16010 Success 1602 1603\end{itemize} 1604 1605\item[{return}] \leavevmode\begin{itemize} 1606\item {} 1607System errors; Permission errors; Kerberos error codes 1608 1609\end{itemize} 1610 1611\end{description}\end{quote} 1612 1613Destroy any existing contents of \sphinxstyleemphasis{cache} and initialize it for the default principal \sphinxstyleemphasis{principal} . 1614 1615 1616\subsubsection{krb5\_cc\_new\_unique - Create a new credential cache of the specified type with a unique name.} 1617\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_cc_new_unique::doc}}\index{krb5\_cc\_new\_unique (C function)} 1618 1619\begin{fulllineitems} 1620\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_new_unique:c.krb5_cc_new_unique}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_new\_unique}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ type}, const char *\sphinxstyleemphasis{ hint}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ id}}{} 1621\end{fulllineitems} 1622 1623\begin{quote}\begin{description} 1624\item[{param}] \leavevmode 1625\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1626 1627\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - Credential cache type name 1628 1629\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hint} - Unused 1630 1631\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{id} - Credential cache handle 1632 1633\end{description}\end{quote} 1634\begin{quote}\begin{description} 1635\item[{retval}] \leavevmode\begin{itemize} 1636\item {} 16370 Success 1638 1639\end{itemize} 1640 1641\item[{return}] \leavevmode\begin{itemize} 1642\item {} 1643Kerberos error codes 1644 1645\end{itemize} 1646 1647\end{description}\end{quote} 1648 1649 1650\subsubsection{krb5\_cc\_resolve - Resolve a credential cache name.} 1651\label{\detokenize{appdev/refs/api/krb5_cc_resolve:krb5-cc-resolve-resolve-a-credential-cache-name}}\label{\detokenize{appdev/refs/api/krb5_cc_resolve::doc}}\index{krb5\_cc\_resolve (C function)} 1652 1653\begin{fulllineitems} 1654\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_resolve:c.krb5_cc_resolve}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_resolve}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ name}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ cache}}{} 1655\end{fulllineitems} 1656 1657\begin{quote}\begin{description} 1658\item[{param}] \leavevmode 1659\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1660 1661\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - Credential cache name to be resolved 1662 1663\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cache} - Credential cache handle 1664 1665\end{description}\end{quote} 1666\begin{quote}\begin{description} 1667\item[{retval}] \leavevmode\begin{itemize} 1668\item {} 16690 Success 1670 1671\end{itemize} 1672 1673\item[{return}] \leavevmode\begin{itemize} 1674\item {} 1675Kerberos error codes 1676 1677\end{itemize} 1678 1679\end{description}\end{quote} 1680 1681Fills in \sphinxstyleemphasis{cache} with a \sphinxstyleemphasis{cache} handle that corresponds to the name in \sphinxstyleemphasis{name} . \sphinxstyleemphasis{name} should be of the form \sphinxstylestrong{type:residual} , and \sphinxstyleemphasis{type} must be a type known to the library. If the \sphinxstyleemphasis{name} does not contain a colon, interpret it as a file name. 1682 1683 1684\subsubsection{krb5\_change\_password - Change a password for an existing Kerberos account.} 1685\label{\detokenize{appdev/refs/api/krb5_change_password:krb5-change-password-change-a-password-for-an-existing-kerberos-account}}\label{\detokenize{appdev/refs/api/krb5_change_password::doc}}\index{krb5\_change\_password (C function)} 1686 1687\begin{fulllineitems} 1688\phantomsection\label{\detokenize{appdev/refs/api/krb5_change_password:c.krb5_change_password}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_change\_password}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, const char *\sphinxstyleemphasis{ newpw}, int *\sphinxstyleemphasis{ result\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ result\_code\_string}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ result\_string}}{} 1689\end{fulllineitems} 1690 1691\begin{quote}\begin{description} 1692\item[{param}] \leavevmode 1693\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1694 1695\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Credentials for kadmin/changepw service 1696 1697\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{newpw} - New password 1698 1699\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code} - Numeric error code from server 1700 1701\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code\_string} - String equivalent to \sphinxstyleemphasis{result\_code} 1702 1703\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_string} - Change password response from the KDC 1704 1705\end{description}\end{quote} 1706\begin{quote}\begin{description} 1707\item[{retval}] \leavevmode\begin{itemize} 1708\item {} 17090 Success; otherwise - Kerberos error codes 1710 1711\end{itemize} 1712 1713\end{description}\end{quote} 1714 1715Change the password for the existing principal identified by \sphinxstyleemphasis{creds} . 1716 1717The possible values of the output \sphinxstyleemphasis{result\_code} are: 1718\begin{itemize} 1719\item {} 1720{\hyperref[\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS}]{\sphinxcrossref{\sphinxcode{KRB5\_KPASSWD\_SUCCESS}}}} (0) - success 1721 1722\item {} 1723{\hyperref[\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED}]{\sphinxcrossref{\sphinxcode{KRB5\_KPASSWD\_MALFORMED}}}} (1) - Malformed request error 1724 1725\item {} 1726{\hyperref[\detokenize{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR}]{\sphinxcrossref{\sphinxcode{KRB5\_KPASSWD\_HARDERROR}}}} (2) - Server error 1727 1728\item {} 1729{\hyperref[\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR}]{\sphinxcrossref{\sphinxcode{KRB5\_KPASSWD\_AUTHERROR}}}} (3) - Authentication error 1730 1731\item {} 1732{\hyperref[\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR}]{\sphinxcrossref{\sphinxcode{KRB5\_KPASSWD\_SOFTERROR}}}} (4) - Password change rejected 1733 1734\end{itemize} 1735 1736 1737\subsubsection{krb5\_chpw\_message - Get a result message for changing or setting a password.} 1738\label{\detokenize{appdev/refs/api/krb5_chpw_message:krb5-chpw-message-get-a-result-message-for-changing-or-setting-a-password}}\label{\detokenize{appdev/refs/api/krb5_chpw_message::doc}}\index{krb5\_chpw\_message (C function)} 1739 1740\begin{fulllineitems} 1741\phantomsection\label{\detokenize{appdev/refs/api/krb5_chpw_message:c.krb5_chpw_message}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_chpw\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ server\_string}, char **\sphinxstyleemphasis{ message\_out}}{} 1742\end{fulllineitems} 1743 1744\begin{quote}\begin{description} 1745\item[{param}] \leavevmode 1746\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1747 1748\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server\_string} - Data returned from the remote system 1749 1750\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{message\_out} - A message displayable to the user 1751 1752\end{description}\end{quote} 1753\begin{quote}\begin{description} 1754\item[{retval}] \leavevmode\begin{itemize} 1755\item {} 17560 Success 1757 1758\end{itemize} 1759 1760\item[{return}] \leavevmode\begin{itemize} 1761\item {} 1762Kerberos error codes 1763 1764\end{itemize} 1765 1766\end{description}\end{quote} 1767 1768This function processes the \sphinxstyleemphasis{server\_string} returned in the \sphinxstyleemphasis{result\_string} parameter of {\hyperref[\detokenize{appdev/refs/api/krb5_change_password:c.krb5_change_password}]{\sphinxcrossref{\sphinxcode{krb5\_change\_password()}}}} , {\hyperref[\detokenize{appdev/refs/api/krb5_set_password:c.krb5_set_password}]{\sphinxcrossref{\sphinxcode{krb5\_set\_password()}}}} , and related functions, and returns a displayable string. If \sphinxstyleemphasis{server\_string} contains Active Directory structured policy information, it will be converted into human-readable text. 1769 1770Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_string:c.krb5_free_string}]{\sphinxcrossref{\sphinxcode{krb5\_free\_string()}}}} to free \sphinxstyleemphasis{message\_out} when it is no longer needed. 1771 1772\begin{sphinxadmonition}{note}{Note:} 1773New in 1.11 1774\end{sphinxadmonition} 1775 1776 1777\subsubsection{krb5\_expand\_hostname - Canonicalize a hostname, possibly using name service.} 1778\label{\detokenize{appdev/refs/api/krb5_expand_hostname:krb5-expand-hostname-canonicalize-a-hostname-possibly-using-name-service}}\label{\detokenize{appdev/refs/api/krb5_expand_hostname::doc}}\index{krb5\_expand\_hostname (C function)} 1779 1780\begin{fulllineitems} 1781\phantomsection\label{\detokenize{appdev/refs/api/krb5_expand_hostname:c.krb5_expand_hostname}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_expand\_hostname}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ host}, char **\sphinxstyleemphasis{ canonhost\_out}}{} 1782\end{fulllineitems} 1783 1784\begin{quote}\begin{description} 1785\item[{param}] \leavevmode 1786\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1787 1788\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{host} - Input hostname 1789 1790\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{canonhost\_out} - Canonicalized hostname 1791 1792\end{description}\end{quote} 1793 1794This function canonicalizes orig\_hostname, possibly using name service lookups if configuration permits. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_string:c.krb5_free_string}]{\sphinxcrossref{\sphinxcode{krb5\_free\_string()}}}} to free \sphinxstyleemphasis{canonhost\_out} when it is no longer needed. 1795 1796\begin{sphinxadmonition}{note}{Note:} 1797New in 1.15 1798\end{sphinxadmonition} 1799 1800 1801\subsubsection{krb5\_free\_context - Free a krb5 library context.} 1802\label{\detokenize{appdev/refs/api/krb5_free_context:krb5-free-context-free-a-krb5-library-context}}\label{\detokenize{appdev/refs/api/krb5_free_context::doc}}\index{krb5\_free\_context (C function)} 1803 1804\begin{fulllineitems} 1805\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_context:c.krb5_free_context}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_context}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}}{} 1806\end{fulllineitems} 1807 1808\begin{quote}\begin{description} 1809\item[{param}] \leavevmode 1810\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1811 1812\end{description}\end{quote} 1813 1814This function frees a \sphinxstyleemphasis{context} that was created by {\hyperref[\detokenize{appdev/refs/api/krb5_init_context:c.krb5_init_context}]{\sphinxcrossref{\sphinxcode{krb5\_init\_context()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_init_secure_context:c.krb5_init_secure_context}]{\sphinxcrossref{\sphinxcode{krb5\_init\_secure\_context()}}}} . 1815 1816 1817\subsubsection{krb5\_free\_error\_message - Free an error message generated by krb5\_get\_error\_message() .} 1818\label{\detokenize{appdev/refs/api/krb5_free_error_message:krb5-free-error-message-free-an-error-message-generated-by-krb5-get-error-message}}\label{\detokenize{appdev/refs/api/krb5_free_error_message::doc}}\index{krb5\_free\_error\_message (C function)} 1819 1820\begin{fulllineitems} 1821\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_error_message:c.krb5_free_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, const char *\sphinxstyleemphasis{ msg}}{} 1822\end{fulllineitems} 1823 1824\begin{quote}\begin{description} 1825\item[{param}] \leavevmode 1826\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 1827 1828\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{msg} - Pointer to error message 1829 1830\end{description}\end{quote} 1831 1832 1833\subsubsection{krb5\_free\_principal - Free the storage assigned to a principal.} 1834\label{\detokenize{appdev/refs/api/krb5_free_principal::doc}}\label{\detokenize{appdev/refs/api/krb5_free_principal:krb5-free-principal-free-the-storage-assigned-to-a-principal}}\index{krb5\_free\_principal (C function)} 1835 1836\begin{fulllineitems} 1837\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ val}}{} 1838\end{fulllineitems} 1839 1840\begin{quote}\begin{description} 1841\item[{param}] \leavevmode 1842\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1843 1844\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Principal to be freed 1845 1846\end{description}\end{quote} 1847 1848 1849\subsubsection{krb5\_fwd\_tgt\_creds - Get a forwarded TGT and format a KRB-CRED message.} 1850\label{\detokenize{appdev/refs/api/krb5_fwd_tgt_creds:krb5-fwd-tgt-creds-get-a-forwarded-tgt-and-format-a-krb-cred-message}}\label{\detokenize{appdev/refs/api/krb5_fwd_tgt_creds::doc}}\index{krb5\_fwd\_tgt\_creds (C function)} 1851 1852\begin{fulllineitems} 1853\phantomsection\label{\detokenize{appdev/refs/api/krb5_fwd_tgt_creds:c.krb5_fwd_tgt_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_fwd\_tgt\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const char *\sphinxstyleemphasis{ rhost}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cc}, int\sphinxstyleemphasis{ forwardable}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ outbuf}}{} 1854\end{fulllineitems} 1855 1856\begin{quote}\begin{description} 1857\item[{param}] \leavevmode 1858\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1859 1860\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 1861 1862\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rhost} - Remote host 1863 1864\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal of TGT 1865 1866\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Principal of server to receive TGT 1867 1868\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cc} - Credential cache handle (NULL to use default) 1869 1870\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{forwardable} - Whether TGT should be forwardable 1871 1872\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} - KRB-CRED message 1873 1874\end{description}\end{quote} 1875\begin{quote}\begin{description} 1876\item[{retval}] \leavevmode\begin{itemize} 1877\item {} 18780 Success 1879 1880\item {} 1881ENOMEM Insufficient memory 1882 1883\item {} 1884KRB5\_PRINC\_NOMATCH Requested principal and ticket do not match 1885 1886\item {} 1887KRB5\_NO\_TKT\_SUPPLIED Request did not supply a ticket 1888 1889\item {} 1890KRB5\_CC\_BADNAME Credential cache name or principal name malformed 1891 1892\end{itemize} 1893 1894\item[{return}] \leavevmode\begin{itemize} 1895\item {} 1896Kerberos error codes 1897 1898\end{itemize} 1899 1900\end{description}\end{quote} 1901 1902Get a TGT for use at the remote host \sphinxstyleemphasis{rhost} and format it into a KRB-CRED message. If \sphinxstyleemphasis{rhost} is NULL and \sphinxstyleemphasis{server} is of type {\hyperref[\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST}]{\sphinxcrossref{\sphinxcode{KRB5\_NT\_SRV\_HST}}}} , the second component of \sphinxstyleemphasis{server} will be used. 1903 1904 1905\subsubsection{krb5\_get\_default\_realm - Retrieve the default realm.} 1906\label{\detokenize{appdev/refs/api/krb5_get_default_realm:krb5-get-default-realm-retrieve-the-default-realm}}\label{\detokenize{appdev/refs/api/krb5_get_default_realm::doc}}\index{krb5\_get\_default\_realm (C function)} 1907 1908\begin{fulllineitems} 1909\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_default_realm:c.krb5_get_default_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_default\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, char **\sphinxstyleemphasis{ lrealm}}{} 1910\end{fulllineitems} 1911 1912\begin{quote}\begin{description} 1913\item[{param}] \leavevmode 1914\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1915 1916\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{lrealm} - Default realm name 1917 1918\end{description}\end{quote} 1919\begin{quote}\begin{description} 1920\item[{retval}] \leavevmode\begin{itemize} 1921\item {} 19220 Success 1923 1924\end{itemize} 1925 1926\item[{return}] \leavevmode\begin{itemize} 1927\item {} 1928Kerberos error codes 1929 1930\end{itemize} 1931 1932\end{description}\end{quote} 1933 1934Retrieves the default realm to be used if no user-specified realm is available. 1935 1936Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_default_realm:c.krb5_free_default_realm}]{\sphinxcrossref{\sphinxcode{krb5\_free\_default\_realm()}}}} to free \sphinxstyleemphasis{lrealm} when it is no longer needed. 1937 1938 1939\subsubsection{krb5\_get\_error\_message - Get the (possibly extended) error message for a code.} 1940\label{\detokenize{appdev/refs/api/krb5_get_error_message::doc}}\label{\detokenize{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)} 1941 1942\begin{fulllineitems} 1943\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_error_message:c.krb5_get_error_message}}\pysiglinewithargsret{const char * \sphinxbfcode{krb5\_get\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}}{} 1944\end{fulllineitems} 1945 1946\begin{quote}\begin{description} 1947\item[{param}] \leavevmode 1948\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 1949 1950\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 1951 1952\end{description}\end{quote} 1953 1954The behavior of {\hyperref[\detokenize{appdev/refs/api/krb5_get_error_message:c.krb5_get_error_message}]{\sphinxcrossref{\sphinxcode{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. 1955 1956This function never returns NULL, so its result may be used unconditionally as a C string. 1957 1958The string returned by this function must be freed using {\hyperref[\detokenize{appdev/refs/api/krb5_free_error_message:c.krb5_free_error_message}]{\sphinxcrossref{\sphinxcode{krb5\_free\_error\_message()}}}} 1959 1960\begin{sphinxadmonition}{note}{Note:} 1961Future versions may return the same string for the second and following calls. 1962\end{sphinxadmonition} 1963 1964 1965\subsubsection{krb5\_get\_host\_realm - Get the Kerberos realm names for a host.} 1966\label{\detokenize{appdev/refs/api/krb5_get_host_realm:krb5-get-host-realm-get-the-kerberos-realm-names-for-a-host}}\label{\detokenize{appdev/refs/api/krb5_get_host_realm::doc}}\index{krb5\_get\_host\_realm (C function)} 1967 1968\begin{fulllineitems} 1969\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_host_realm:c.krb5_get_host_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_host\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ host}, char ***\sphinxstyleemphasis{ realmsp}}{} 1970\end{fulllineitems} 1971 1972\begin{quote}\begin{description} 1973\item[{param}] \leavevmode 1974\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 1975 1976\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{host} - Host name (or NULL) 1977 1978\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realmsp} - Null-terminated list of realm names 1979 1980\end{description}\end{quote} 1981\begin{quote}\begin{description} 1982\item[{retval}] \leavevmode\begin{itemize} 1983\item {} 19840 Success 1985 1986\item {} 1987ENOMEM Insufficient memory 1988 1989\end{itemize} 1990 1991\item[{return}] \leavevmode\begin{itemize} 1992\item {} 1993Kerberos error codes 1994 1995\end{itemize} 1996 1997\end{description}\end{quote} 1998 1999Fill in \sphinxstyleemphasis{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. 2000 2001If \sphinxstyleemphasis{host} is NULL, the local host’s realms are determined. 2002 2003Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_host_realm:c.krb5_free_host_realm}]{\sphinxcrossref{\sphinxcode{krb5\_free\_host\_realm()}}}} to release \sphinxstyleemphasis{realmsp} when it is no longer needed. 2004 2005 2006\subsubsection{krb5\_get\_credentials - Get an additional ticket.} 2007\label{\detokenize{appdev/refs/api/krb5_get_credentials:krb5-get-credentials-get-an-additional-ticket}}\label{\detokenize{appdev/refs/api/krb5_get_credentials::doc}}\index{krb5\_get\_credentials (C function)} 2008 2009\begin{fulllineitems} 2010\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_credentials}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ out\_creds}}{} 2011\end{fulllineitems} 2012 2013\begin{quote}\begin{description} 2014\item[{param}] \leavevmode 2015\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2016 2017\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} - Options 2018 2019\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache handle 2020 2021\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} - Input credentials 2022 2023\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out\_creds} - Output updated credentials 2024 2025\end{description}\end{quote} 2026\begin{quote}\begin{description} 2027\item[{retval}] \leavevmode\begin{itemize} 2028\item {} 20290 Success 2030 2031\end{itemize} 2032 2033\item[{return}] \leavevmode\begin{itemize} 2034\item {} 2035Kerberos error codes 2036 2037\end{itemize} 2038 2039\end{description}\end{quote} 2040 2041Use \sphinxstyleemphasis{ccache} or a TGS exchange to get a service ticket matching \sphinxstyleemphasis{in\_creds} . 2042 2043Valid values for \sphinxstyleemphasis{options} are: 2044\begin{quote} 2045\begin{itemize} 2046\item {} 2047{\hyperref[\detokenize{appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED}]{\sphinxcrossref{\sphinxcode{KRB5\_GC\_CACHED}}}} Search only credential cache for the ticket 2048 2049\item {} 2050{\hyperref[\detokenize{appdev/refs/macros/KRB5_GC_USER_USER:KRB5_GC_USER_USER}]{\sphinxcrossref{\sphinxcode{KRB5\_GC\_USER\_USER}}}} Return a user to user authentication ticket 2051 2052\end{itemize} 2053 2054\sphinxstyleemphasis{in\_creds} must be non-null. \sphinxstyleemphasis{in\_creds-\textgreater{}client} and \sphinxstyleemphasis{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 \sphinxstyleemphasis{in\_creds-\textgreater{}authdata} ; otherwise set \sphinxstyleemphasis{in\_creds-\textgreater{}authdata} to NULL. The session key type is specified in \sphinxstyleemphasis{in\_creds-\textgreater{}keyblock.enctype} , if it is nonzero. 2055\end{quote} 2056 2057The expiration date is specified in \sphinxstyleemphasis{in\_creds-\textgreater{}times.endtime} . The KDC may return tickets with an earlier expiration date. If \sphinxstyleemphasis{in\_creds-\textgreater{}times.endtime} is set to 0, the latest possible expiration date will be requested. 2058 2059Any returned ticket and intermediate ticket-granting tickets are stored in \sphinxstyleemphasis{ccache} . 2060 2061Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_creds:c.krb5_free_creds}]{\sphinxcrossref{\sphinxcode{krb5\_free\_creds()}}}} to free \sphinxstyleemphasis{out\_creds} when it is no longer needed. 2062 2063 2064\subsubsection{krb5\_get\_fallback\_host\_realm} 2065\label{\detokenize{appdev/refs/api/krb5_get_fallback_host_realm:krb5-get-fallback-host-realm}}\label{\detokenize{appdev/refs/api/krb5_get_fallback_host_realm::doc}}\index{krb5\_get\_fallback\_host\_realm (C function)} 2066 2067\begin{fulllineitems} 2068\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_fallback_host_realm:c.krb5_get_fallback_host_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_fallback\_host\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ hdata}, char ***\sphinxstyleemphasis{ realmsp}}{} 2069\end{fulllineitems} 2070 2071\begin{quote}\begin{description} 2072\item[{param}] \leavevmode 2073\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2074 2075\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hdata} - Host name (or NULL) 2076 2077\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realmsp} - Null-terminated list of realm names 2078 2079\end{description}\end{quote} 2080 2081Fill in \sphinxstyleemphasis{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. 2082 2083If \sphinxstyleemphasis{host} is NULL, the local host’s realms are determined. 2084 2085Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_host_realm:c.krb5_free_host_realm}]{\sphinxcrossref{\sphinxcode{krb5\_free\_host\_realm()}}}} to release \sphinxstyleemphasis{realmsp} when it is no longer needed. 2086 2087 2088\subsubsection{krb5\_get\_init\_creds\_keytab - Get initial credentials using a key table.} 2089\label{\detokenize{appdev/refs/api/krb5_get_init_creds_keytab:krb5-get-init-creds-keytab-get-initial-credentials-using-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_keytab::doc}}\index{krb5\_get\_init\_creds\_keytab (C function)} 2090 2091\begin{fulllineitems} 2092\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_keytab:c.krb5_get_init_creds_keytab}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_keytab}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ arg\_keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}}\sphinxstyleemphasis{ start\_time}, const char *\sphinxstyleemphasis{ in\_tkt\_service}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ k5\_gic\_options}}{} 2093\end{fulllineitems} 2094 2095\begin{quote}\begin{description} 2096\item[{param}] \leavevmode 2097\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2098 2099\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - New credentials 2100 2101\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal 2102 2103\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{arg\_keytab} - Key table handle 2104 2105\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{start\_time} - Time when ticket becomes valid (0 for now) 2106 2107\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} - Service name of initial credentials (or NULL) 2108 2109\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_gic\_options} - Initial credential options 2110 2111\end{description}\end{quote} 2112\begin{quote}\begin{description} 2113\item[{retval}] \leavevmode\begin{itemize} 2114\item {} 21150 Success 2116 2117\end{itemize} 2118 2119\item[{return}] \leavevmode\begin{itemize} 2120\item {} 2121Kerberos error codes 2122 2123\end{itemize} 2124 2125\end{description}\end{quote} 2126 2127This function requests KDC for an initial credentials for \sphinxstyleemphasis{client} using a client key stored in \sphinxstyleemphasis{arg\_keytab} . If \sphinxstyleemphasis{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. 2128 2129 2130\subsubsection{krb5\_get\_init\_creds\_opt\_alloc - Allocate a new initial credential options structure.} 2131\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc:krb5-get-init-creds-opt-alloc-allocate-a-new-initial-credential-options-structure}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc::doc}}\index{krb5\_get\_init\_creds\_opt\_alloc (C function)} 2132 2133\begin{fulllineitems} 2134\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc:c.krb5_get_init_creds_opt_alloc}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_alloc}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} **\sphinxstyleemphasis{ opt}}{} 2135\end{fulllineitems} 2136 2137\begin{quote}\begin{description} 2138\item[{param}] \leavevmode 2139\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2140 2141\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{opt} - New options structure 2142 2143\end{description}\end{quote} 2144\begin{quote}\begin{description} 2145\item[{retval}] \leavevmode\begin{itemize} 2146\item {} 21470 - Success; Kerberos errors otherwise. 2148 2149\end{itemize} 2150 2151\end{description}\end{quote} 2152 2153This 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[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free:c.krb5_get_init_creds_opt_free}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_free()}}}} to free \sphinxstyleemphasis{opt} when it is no longer needed. 2154 2155 2156\subsubsection{krb5\_get\_init\_creds\_opt\_free - Free initial credential options.} 2157\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free::doc}}\label{\detokenize{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)} 2158 2159\begin{fulllineitems} 2160\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free:c.krb5_get_init_creds_opt_free}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}}{} 2161\end{fulllineitems} 2162 2163\begin{quote}\begin{description} 2164\item[{param}] \leavevmode 2165\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2166 2167\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure to free 2168 2169\end{description}\end{quote} 2170 2171 2172\sphinxstrong{See also:} 2173 2174 2175{\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc:c.krb5_get_init_creds_opt_alloc}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_alloc()}}}} 2176 2177 2178 2179 2180\subsubsection{krb5\_get\_init\_creds\_opt\_get\_fast\_flags - Retrieve FAST flags from initial credential options.} 2181\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags::doc}}\label{\detokenize{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)} 2182 2183\begin{fulllineitems} 2184\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags:c.krb5_get_init_creds_opt_get_fast_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_get\_fast\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} *\sphinxstyleemphasis{ out\_flags}}{} 2185\end{fulllineitems} 2186 2187\begin{quote}\begin{description} 2188\item[{param}] \leavevmode 2189\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2190 2191\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options 2192 2193\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out\_flags} - FAST flags 2194 2195\end{description}\end{quote} 2196\begin{quote}\begin{description} 2197\item[{retval}] \leavevmode\begin{itemize} 2198\item {} 21990 - Success; Kerberos errors otherwise. 2200 2201\end{itemize} 2202 2203\end{description}\end{quote} 2204 2205 2206\subsubsection{krb5\_get\_init\_creds\_opt\_set\_address\_list - Set address restrictions in initial credential options.} 2207\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_address_list::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_address\_list (C function)} 2208 2209\begin{fulllineitems} 2210\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_address_list:c.krb5_get_init_creds_opt_set_address_list}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_address\_list}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} **\sphinxstyleemphasis{ addresses}}{} 2211\end{fulllineitems} 2212 2213\begin{quote}\begin{description} 2214\item[{param}] \leavevmode 2215\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2216 2217\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addresses} - Null-terminated array of addresses 2218 2219\end{description}\end{quote} 2220 2221 2222\subsubsection{krb5\_get\_init\_creds\_opt\_set\_anonymous - Set or unset the anonymous flag in initial credential options.} 2223\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_anonymous (C function)} 2224 2225\begin{fulllineitems} 2226\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:c.krb5_get_init_creds_opt_set_anonymous}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_anonymous}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, int\sphinxstyleemphasis{ anonymous}}{} 2227\end{fulllineitems} 2228 2229\begin{quote}\begin{description} 2230\item[{param}] \leavevmode 2231\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2232 2233\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{anonymous} - Whether to make an anonymous request 2234 2235\end{description}\end{quote} 2236 2237This function may be used to request anonymous credentials from the KDC by setting \sphinxstyleemphasis{anonymous} to non-zero. Note that anonymous credentials are only a request; clients must verify that credentials are anonymous if that is a requirement. 2238 2239 2240\subsubsection{krb5\_get\_init\_creds\_opt\_set\_canonicalize - Set or unset the canonicalize flag in initial credential options.} 2241\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_canonicalize::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_canonicalize (C function)} 2242 2243\begin{fulllineitems} 2244\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_canonicalize:c.krb5_get_init_creds_opt_set_canonicalize}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_canonicalize}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, int\sphinxstyleemphasis{ canonicalize}}{} 2245\end{fulllineitems} 2246 2247\begin{quote}\begin{description} 2248\item[{param}] \leavevmode 2249\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2250 2251\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{canonicalize} - Whether to canonicalize client principal 2252 2253\end{description}\end{quote} 2254 2255 2256\subsubsection{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt - Set or unset change-password-prompt flag in initial credential options.} 2257\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_change_password_prompt::doc}}\label{\detokenize{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)} 2258 2259\begin{fulllineitems} 2260\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_change_password_prompt:c.krb5_get_init_creds_opt_set_change_password_prompt}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, int\sphinxstyleemphasis{ prompt}}{} 2261\end{fulllineitems} 2262 2263\begin{quote}\begin{description} 2264\item[{param}] \leavevmode 2265\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2266 2267\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompt} - Whether to prompt to change password 2268 2269\end{description}\end{quote} 2270 2271This flag is on by default. It controls whether {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{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. 2272 2273 2274\subsubsection{krb5\_get\_init\_creds\_opt\_set\_etype\_list - Set allowable encryption types in initial credential options.} 2275\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_etype\_list (C function)} 2276 2277\begin{fulllineitems} 2278\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list:c.krb5_get_init_creds_opt_set_etype_list}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_etype\_list}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ etype\_list}, int\sphinxstyleemphasis{ etype\_list\_length}}{} 2279\end{fulllineitems} 2280 2281\begin{quote}\begin{description} 2282\item[{param}] \leavevmode 2283\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2284 2285\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{etype\_list} - Array of encryption types 2286 2287\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{etype\_list\_length} - Length of \sphinxstyleemphasis{etype\_list} 2288 2289\end{description}\end{quote} 2290 2291 2292\subsubsection{krb5\_get\_init\_creds\_opt\_set\_expire\_callback - Set an expiration callback in initial credential options.} 2293\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback::doc}}\label{\detokenize{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)} 2294 2295\begin{fulllineitems} 2296\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback:c.krb5_get_init_creds_opt_set_expire_callback}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_expire\_callback}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_expire_callback_func:c.krb5_expire_callback_func}]{\sphinxcrossref{krb5\_expire\_callback\_func}}}\sphinxstyleemphasis{ cb}, void *\sphinxstyleemphasis{ data}}{} 2297\end{fulllineitems} 2298 2299\begin{quote}\begin{description} 2300\item[{param}] \leavevmode 2301\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2302 2303\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2304 2305\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cb} - Callback function 2306 2307\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Callback argument 2308 2309\end{description}\end{quote} 2310 2311Set a callback to receive password and account expiration times. 2312 2313This option only applies to {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} . \sphinxstyleemphasis{cb} will be invoked if and only if credentials are successfully acquired. The callback will receive the \sphinxstyleemphasis{context} from the {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} call and the \sphinxstyleemphasis{data} argument supplied with this API. The remaining arguments should be interpreted as follows: 2314 2315If \sphinxstyleemphasis{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 \sphinxstyleemphasis{password\_expiration} should be taken as a suggestion from the KDC that a warning be displayed. 2316 2317If \sphinxstyleemphasis{is\_last\_req} is false, then \sphinxstyleemphasis{account\_expiration} will be 0 and \sphinxstyleemphasis{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. 2318 2319Note that \sphinxstyleemphasis{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. 2320 2321\begin{sphinxadmonition}{warning}{Warning:} 2322Setting an expire callback with this API will cause {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} not to send password expiry warnings to the prompter, as it ordinarily may. 2323\end{sphinxadmonition} 2324 2325\begin{sphinxadmonition}{note}{Note:} 2326New in 1.9 2327\end{sphinxadmonition} 2328 2329 2330\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache - Set FAST armor cache in initial credential options.} 2331\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache::doc}}\label{\detokenize{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)} 2332 2333\begin{fulllineitems} 2334\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache:c.krb5_get_init_creds_opt_set_fast_ccache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}}{} 2335\end{fulllineitems} 2336 2337\begin{quote}\begin{description} 2338\item[{param}] \leavevmode 2339\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2340 2341\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options 2342 2343\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache handle 2344 2345\end{description}\end{quote} 2346 2347This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name:c.krb5_get_init_creds_opt_set_fast_ccache_name}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name()}}}} , but uses a credential cache handle instead of a name. 2348 2349\begin{sphinxadmonition}{note}{Note:} 2350New in 1.9 2351\end{sphinxadmonition} 2352 2353 2354\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name - Set location of FAST armor ccache in initial credential options.} 2355\label{\detokenize{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{\detokenize{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)} 2356 2357\begin{fulllineitems} 2358\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name:c.krb5_get_init_creds_opt_set_fast_ccache_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, const char *\sphinxstyleemphasis{ fast\_ccache\_name}}{} 2359\end{fulllineitems} 2360 2361\begin{quote}\begin{description} 2362\item[{param}] \leavevmode 2363\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2364 2365\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options 2366 2367\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fast\_ccache\_name} - Credential cache name 2368 2369\end{description}\end{quote} 2370 2371Sets the location of a credential cache containing an armor ticket to protect an initial credential exchange using the FAST protocol extension. 2372 2373In 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[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags:c.krb5_get_init_creds_opt_set_fast_flags}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_fast\_flags()}}}} must be used to require that FAST be used. 2374 2375 2376\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_flags - Set FAST flags in initial credential options.} 2377\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_fast\_flags (C function)} 2378 2379\begin{fulllineitems} 2380\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags:c.krb5_get_init_creds_opt_set_fast_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_fast\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ flags}}{} 2381\end{fulllineitems} 2382 2383\begin{quote}\begin{description} 2384\item[{param}] \leavevmode 2385\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2386 2387\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options 2388 2389\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - FAST flags 2390 2391\end{description}\end{quote} 2392\begin{quote}\begin{description} 2393\item[{retval}] \leavevmode\begin{itemize} 2394\item {} 23950 - Success; Kerberos errors otherwise. 2396 2397\end{itemize} 2398 2399\end{description}\end{quote} 2400 2401The following flag values are valid: 2402\begin{itemize} 2403\item {} 2404{\hyperref[\detokenize{appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED}]{\sphinxcrossref{\sphinxcode{KRB5\_FAST\_REQUIRED}}}} - Require FAST to be used 2405 2406\end{itemize} 2407 2408 2409\subsubsection{krb5\_get\_init\_creds\_opt\_set\_forwardable - Set or unset the forwardable flag in initial credential options.} 2410\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_forwardable::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_forwardable (C function)} 2411 2412\begin{fulllineitems} 2413\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_forwardable:c.krb5_get_init_creds_opt_set_forwardable}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_forwardable}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, int\sphinxstyleemphasis{ forwardable}}{} 2414\end{fulllineitems} 2415 2416\begin{quote}\begin{description} 2417\item[{param}] \leavevmode 2418\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2419 2420\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{forwardable} - Whether credentials should be forwardable 2421 2422\end{description}\end{quote} 2423 2424 2425\subsubsection{krb5\_get\_init\_creds\_opt\_set\_in\_ccache - Set an input credential cache in initial credential options.} 2426\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache::doc}}\label{\detokenize{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)} 2427 2428\begin{fulllineitems} 2429\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache:c.krb5_get_init_creds_opt_set_in_ccache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_in\_ccache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}}{} 2430\end{fulllineitems} 2431 2432\begin{quote}\begin{description} 2433\item[{param}] \leavevmode 2434\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2435 2436\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options 2437 2438\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache handle 2439 2440\end{description}\end{quote} 2441 2442If 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. 2443 2444\begin{sphinxadmonition}{note}{Note:} 2445New in 1.11 2446\end{sphinxadmonition} 2447 2448 2449\subsubsection{krb5\_get\_init\_creds\_opt\_set\_out\_ccache - Set an output credential cache in initial credential options.} 2450\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_out_ccache::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_out\_ccache (C function)} 2451 2452\begin{fulllineitems} 2453\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_out_ccache:c.krb5_get_init_creds_opt_set_out_ccache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_out\_ccache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}}{} 2454\end{fulllineitems} 2455 2456\begin{quote}\begin{description} 2457\item[{param}] \leavevmode 2458\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2459 2460\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options 2461 2462\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache handle 2463 2464\end{description}\end{quote} 2465 2466If 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. 2467 2468 2469\subsubsection{krb5\_get\_init\_creds\_opt\_set\_pa - Supply options for preauthentication in initial credential options.} 2470\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pa::doc}}\label{\detokenize{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)} 2471 2472\begin{fulllineitems} 2473\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pa:c.krb5_get_init_creds_opt_set_pa}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_pa}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, const char *\sphinxstyleemphasis{ attr}, const char *\sphinxstyleemphasis{ value}}{} 2474\end{fulllineitems} 2475 2476\begin{quote}\begin{description} 2477\item[{param}] \leavevmode 2478\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2479 2480\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2481 2482\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{attr} - Preauthentication option name 2483 2484\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{value} - Preauthentication option value 2485 2486\end{description}\end{quote} 2487 2488This function allows the caller to supply options for preauthentication. The values of \sphinxstyleemphasis{attr} and \sphinxstyleemphasis{value} are supplied to each preauthentication module available within \sphinxstyleemphasis{context} . 2489 2490 2491\subsubsection{krb5\_get\_init\_creds\_opt\_set\_pac\_request - Ask the KDC to include or not include a PAC in the ticket.} 2492\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pac_request:krb5-get-init-creds-opt-set-pac-request-ask-the-kdc-to-include-or-not-include-a-pac-in-the-ticket}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pac_request::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_pac\_request (C function)} 2493 2494\begin{fulllineitems} 2495\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pac_request:c.krb5_get_init_creds_opt_set_pac_request}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_pac\_request}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}}\sphinxstyleemphasis{ req\_pac}}{} 2496\end{fulllineitems} 2497 2498\begin{quote}\begin{description} 2499\item[{param}] \leavevmode 2500\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2501 2502\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2503 2504\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{req\_pac} - Whether to request a PAC or not 2505 2506\end{description}\end{quote} 2507 2508If this option is set, the AS request will include a PAC-REQUEST pa-data item explicitly asking the KDC to either include or not include a privilege attribute certificate in the ticket authorization data. By default, no request is made; typically the KDC will default to including a PAC if it supports them. 2509 2510\begin{sphinxadmonition}{note}{Note:} 2511New in 1.15 2512\end{sphinxadmonition} 2513 2514 2515\subsubsection{krb5\_get\_init\_creds\_opt\_set\_preauth\_list - Set preauthentication types in initial credential options.} 2516\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_preauth_list::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_preauth\_list (C function)} 2517 2518\begin{fulllineitems} 2519\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_preauth_list:c.krb5_get_init_creds_opt_set_preauth_list}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_preauth\_list}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{krb5\_preauthtype}}} *\sphinxstyleemphasis{ preauth\_list}, int\sphinxstyleemphasis{ preauth\_list\_length}}{} 2520\end{fulllineitems} 2521 2522\begin{quote}\begin{description} 2523\item[{param}] \leavevmode 2524\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2525 2526\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{preauth\_list} - Array of preauthentication types 2527 2528\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{preauth\_list\_length} - Length of \sphinxstyleemphasis{preauth\_list} 2529 2530\end{description}\end{quote} 2531 2532This function can be used to perform optimistic preauthentication when getting initial credentials, in combination with {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_salt:c.krb5_get_init_creds_opt_set_salt}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_salt()}}}} and {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pa:c.krb5_get_init_creds_opt_set_pa}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_pa()}}}} . 2533 2534 2535\subsubsection{krb5\_get\_init\_creds\_opt\_set\_proxiable - Set or unset the proxiable flag in initial credential options.} 2536\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable::doc}}\label{\detokenize{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)} 2537 2538\begin{fulllineitems} 2539\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable:c.krb5_get_init_creds_opt_set_proxiable}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_proxiable}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, int\sphinxstyleemphasis{ proxiable}}{} 2540\end{fulllineitems} 2541 2542\begin{quote}\begin{description} 2543\item[{param}] \leavevmode 2544\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2545 2546\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{proxiable} - Whether credentials should be proxiable 2547 2548\end{description}\end{quote} 2549 2550 2551\subsubsection{krb5\_get\_init\_creds\_opt\_set\_renew\_life - Set the ticket renewal lifetime in initial credential options.} 2552\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life::doc}}\label{\detokenize{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)} 2553 2554\begin{fulllineitems} 2555\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life:c.krb5_get_init_creds_opt_set_renew_life}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_renew\_life}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}}\sphinxstyleemphasis{ renew\_life}}{} 2556\end{fulllineitems} 2557 2558\begin{quote}\begin{description} 2559\item[{param}] \leavevmode 2560\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Pointer to \sphinxstyleemphasis{options} field 2561 2562\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{renew\_life} - Ticket renewal lifetime 2563 2564\end{description}\end{quote} 2565 2566 2567\subsubsection{krb5\_get\_init\_creds\_opt\_set\_responder - Set the responder function in initial credential options.} 2568\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_responder::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_responder (C function)} 2569 2570\begin{fulllineitems} 2571\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_responder:c.krb5_get_init_creds_opt_set_responder}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_responder}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_fn:c.krb5_responder_fn}]{\sphinxcrossref{krb5\_responder\_fn}}}\sphinxstyleemphasis{ responder}, void *\sphinxstyleemphasis{ data}}{} 2572\end{fulllineitems} 2573 2574\begin{quote}\begin{description} 2575\item[{param}] \leavevmode 2576\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2577 2578\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2579 2580\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{responder} - Responder function 2581 2582\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Responder data argument 2583 2584\end{description}\end{quote} 2585 2586\begin{sphinxadmonition}{note}{Note:} 2587New in 1.11 2588\end{sphinxadmonition} 2589 2590 2591\subsubsection{krb5\_get\_init\_creds\_opt\_set\_salt - Set salt for optimistic preauthentication in initial credential options.} 2592\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_salt::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_salt (C function)} 2593 2594\begin{fulllineitems} 2595\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_salt:c.krb5_get_init_creds_opt_set_salt}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_salt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ salt}}{} 2596\end{fulllineitems} 2597 2598\begin{quote}\begin{description} 2599\item[{param}] \leavevmode 2600\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2601 2602\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salt} - Salt data 2603 2604\end{description}\end{quote} 2605 2606When 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. 2607 2608 2609\subsubsection{krb5\_get\_init\_creds\_opt\_set\_tkt\_life - Set the ticket lifetime in initial credential options.} 2610\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_tkt_life::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_tkt\_life (C function)} 2611 2612\begin{fulllineitems} 2613\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_tkt_life:c.krb5_get_init_creds_opt_set_tkt_life}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_set\_tkt\_life}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}}\sphinxstyleemphasis{ tkt\_life}}{} 2614\end{fulllineitems} 2615 2616\begin{quote}\begin{description} 2617\item[{param}] \leavevmode 2618\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Options structure 2619 2620\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{tkt\_life} - Ticket lifetime 2621 2622\end{description}\end{quote} 2623 2624 2625\subsubsection{krb5\_get\_init\_creds\_password - Get initial credentials using a password.} 2626\label{\detokenize{appdev/refs/api/krb5_get_init_creds_password::doc}}\label{\detokenize{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)} 2627 2628\begin{fulllineitems} 2629\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_init\_creds\_password}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, const char *\sphinxstyleemphasis{ password}, {\hyperref[\detokenize{appdev/refs/types/krb5_prompter_fct:c.krb5_prompter_fct}]{\sphinxcrossref{krb5\_prompter\_fct}}}\sphinxstyleemphasis{ prompter}, void *\sphinxstyleemphasis{ data}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}}\sphinxstyleemphasis{ start\_time}, const char *\sphinxstyleemphasis{ in\_tkt\_service}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ k5\_gic\_options}}{} 2630\end{fulllineitems} 2631 2632\begin{quote}\begin{description} 2633\item[{param}] \leavevmode 2634\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2635 2636\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - New credentials 2637 2638\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal 2639 2640\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{password} - Password (or NULL) 2641 2642\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompter} - Prompter function 2643 2644\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Prompter callback data 2645 2646\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{start\_time} - Time when ticket becomes valid (0 for now) 2647 2648\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} - Service name of initial credentials (or NULL) 2649 2650\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_gic\_options} - Initial credential options 2651 2652\end{description}\end{quote} 2653\begin{quote}\begin{description} 2654\item[{retval}] \leavevmode\begin{itemize} 2655\item {} 26560 Success 2657 2658\item {} 2659EINVAL Invalid argument 2660 2661\item {} 2662KRB5\_KDC\_UNREACH Cannot contact any KDC for requested realm 2663 2664\item {} 2665KRB5\_PREAUTH\_FAILED Generic Pre-athentication failure 2666 2667\item {} 2668KRB5\_LIBOS\_PWDINTR Password read interrupted 2669 2670\item {} 2671KRB5\_REALM\_CANT\_RESOLVE Cannot resolve network address for KDC in requested realm 2672 2673\item {} 2674KRB5KDC\_ERR\_KEY\_EXP Password has expired 2675 2676\item {} 2677KRB5\_LIBOS\_BADPWDMATCH Password mismatch 2678 2679\item {} 2680KRB5\_CHPW\_PWDNULL New password cannot be zero length 2681 2682\item {} 2683KRB5\_CHPW\_FAIL Password change failed 2684 2685\end{itemize} 2686 2687\item[{return}] \leavevmode\begin{itemize} 2688\item {} 2689Kerberos error codes 2690 2691\end{itemize} 2692 2693\end{description}\end{quote} 2694 2695This function requests KDC for an initial credentials for \sphinxstyleemphasis{client} using \sphinxstyleemphasis{password} . If \sphinxstyleemphasis{password} is NULL, a password will be prompted for using \sphinxstyleemphasis{prompter} if necessary. If \sphinxstyleemphasis{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. 2696 2697 2698\subsubsection{krb5\_get\_profile - Retrieve configuration profile from the context.} 2699\label{\detokenize{appdev/refs/api/krb5_get_profile::doc}}\label{\detokenize{appdev/refs/api/krb5_get_profile:krb5-get-profile-retrieve-configuration-profile-from-the-context}}\index{krb5\_get\_profile (C function)} 2700 2701\begin{fulllineitems} 2702\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_profile:c.krb5_get_profile}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_profile}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, struct \_profile\_t **\sphinxstyleemphasis{ profile}}{} 2703\end{fulllineitems} 2704 2705\begin{quote}\begin{description} 2706\item[{param}] \leavevmode 2707\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2708 2709\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{profile} - Pointer to data read from a configuration file 2710 2711\end{description}\end{quote} 2712\begin{quote}\begin{description} 2713\item[{retval}] \leavevmode\begin{itemize} 2714\item {} 27150 Success 2716 2717\end{itemize} 2718 2719\item[{return}] \leavevmode\begin{itemize} 2720\item {} 2721Kerberos error codes 2722 2723\end{itemize} 2724 2725\end{description}\end{quote} 2726 2727This function creates a new \sphinxstyleemphasis{profile} object that reflects profile in the supplied \sphinxstyleemphasis{context} . 2728 2729The \sphinxstyleemphasis{profile} object may be freed with profile\_release() function. See profile.h and profile API for more details. 2730 2731 2732\subsubsection{krb5\_get\_prompt\_types - Get prompt types array from a context.} 2733\label{\detokenize{appdev/refs/api/krb5_get_prompt_types::doc}}\label{\detokenize{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)} 2734 2735\begin{fulllineitems} 2736\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_prompt_types:c.krb5_get_prompt_types}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_prompt_type:c.krb5_prompt_type}]{\sphinxcrossref{krb5\_prompt\_type}}} * \sphinxbfcode{krb5\_get\_prompt\_types}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}}{} 2737\end{fulllineitems} 2738 2739\begin{quote}\begin{description} 2740\item[{param}] \leavevmode 2741\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2742 2743\end{description}\end{quote} 2744\begin{quote}\begin{description} 2745\item[{return}] \leavevmode\begin{itemize} 2746\item {} 2747Pointer 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 2748 2749\end{itemize} 2750 2751\end{description}\end{quote} 2752 2753 2754\subsubsection{krb5\_get\_renewed\_creds - Get renewed credential from KDC using an existing credential.} 2755\label{\detokenize{appdev/refs/api/krb5_get_renewed_creds:krb5-get-renewed-creds-get-renewed-credential-from-kdc-using-an-existing-credential}}\label{\detokenize{appdev/refs/api/krb5_get_renewed_creds::doc}}\index{krb5\_get\_renewed\_creds (C function)} 2756 2757\begin{fulllineitems} 2758\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_renewed_creds:c.krb5_get_renewed_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_renewed\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, const char *\sphinxstyleemphasis{ in\_tkt\_service}}{} 2759\end{fulllineitems} 2760 2761\begin{quote}\begin{description} 2762\item[{param}] \leavevmode 2763\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2764 2765\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - Renewed credentials 2766 2767\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal name 2768 2769\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache 2770 2771\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} - Server principal string (or NULL) 2772 2773\end{description}\end{quote} 2774\begin{quote}\begin{description} 2775\item[{retval}] \leavevmode\begin{itemize} 2776\item {} 27770 Success 2778 2779\end{itemize} 2780 2781\item[{return}] \leavevmode\begin{itemize} 2782\item {} 2783Kerberos error codes 2784 2785\end{itemize} 2786 2787\end{description}\end{quote} 2788 2789This function gets a renewed credential using an existing one from \sphinxstyleemphasis{ccache} . If \sphinxstyleemphasis{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. 2790 2791If successful, the renewed credential is placed in \sphinxstyleemphasis{creds} . 2792 2793 2794\subsubsection{krb5\_get\_validated\_creds - Get validated credentials from the KDC.} 2795\label{\detokenize{appdev/refs/api/krb5_get_validated_creds:krb5-get-validated-creds-get-validated-credentials-from-the-kdc}}\label{\detokenize{appdev/refs/api/krb5_get_validated_creds::doc}}\index{krb5\_get\_validated\_creds (C function)} 2796 2797\begin{fulllineitems} 2798\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_validated_creds:c.krb5_get_validated_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_validated\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, const char *\sphinxstyleemphasis{ in\_tkt\_service}}{} 2799\end{fulllineitems} 2800 2801\begin{quote}\begin{description} 2802\item[{param}] \leavevmode 2803\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2804 2805\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - Validated credentials 2806 2807\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal name 2808 2809\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache 2810 2811\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} - Server principal string (or NULL) 2812 2813\end{description}\end{quote} 2814\begin{quote}\begin{description} 2815\item[{retval}] \leavevmode\begin{itemize} 2816\item {} 28170 Success 2818 2819\item {} 2820KRB5\_NO\_2ND\_TKT Request missing second ticket 2821 2822\item {} 2823KRB5\_NO\_TKT\_SUPPLIED Request did not supply a ticket 2824 2825\item {} 2826KRB5\_PRINC\_NOMATCH Requested principal and ticket do not match 2827 2828\item {} 2829KRB5\_KDCREP\_MODIFIED KDC reply did not match expectations 2830 2831\item {} 2832KRB5\_KDCREP\_SKEW Clock skew too great in KDC reply 2833 2834\end{itemize} 2835 2836\item[{return}] \leavevmode\begin{itemize} 2837\item {} 2838Kerberos error codes 2839 2840\end{itemize} 2841 2842\end{description}\end{quote} 2843 2844This function gets a validated credential using a postdated credential from \sphinxstyleemphasis{ccache} . If \sphinxstyleemphasis{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. 2845 2846If successful, the validated credential is placed in \sphinxstyleemphasis{creds} . 2847 2848 2849\subsubsection{krb5\_init\_context - Create a krb5 library context.} 2850\label{\detokenize{appdev/refs/api/krb5_init_context:krb5-init-context-create-a-krb5-library-context}}\label{\detokenize{appdev/refs/api/krb5_init_context::doc}}\index{krb5\_init\_context (C function)} 2851 2852\begin{fulllineitems} 2853\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_context:c.krb5_init_context}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_context}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}} *\sphinxstyleemphasis{ context}}{} 2854\end{fulllineitems} 2855 2856\begin{quote}\begin{description} 2857\item[{param}] \leavevmode 2858\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{context} - Library context 2859 2860\end{description}\end{quote} 2861\begin{quote}\begin{description} 2862\item[{retval}] \leavevmode\begin{itemize} 2863\item {} 28640 Success 2865 2866\end{itemize} 2867 2868\item[{return}] \leavevmode\begin{itemize} 2869\item {} 2870Kerberos error codes 2871 2872\end{itemize} 2873 2874\end{description}\end{quote} 2875 2876The \sphinxstyleemphasis{context} must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_context:c.krb5_free_context}]{\sphinxcrossref{\sphinxcode{krb5\_free\_context()}}}} when it is no longer needed. 2877 2878\begin{sphinxadmonition}{warning}{Warning:} 2879Any program or module that needs the Kerberos code to not trust the environment must use {\hyperref[\detokenize{appdev/refs/api/krb5_init_secure_context:c.krb5_init_secure_context}]{\sphinxcrossref{\sphinxcode{krb5\_init\_secure\_context()}}}} , or clean out the environment. 2880\end{sphinxadmonition} 2881 2882 2883\subsubsection{krb5\_init\_secure\_context - Create a krb5 library context using only configuration files.} 2884\label{\detokenize{appdev/refs/api/krb5_init_secure_context::doc}}\label{\detokenize{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)} 2885 2886\begin{fulllineitems} 2887\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_secure_context:c.krb5_init_secure_context}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_secure\_context}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}} *\sphinxstyleemphasis{ context}}{} 2888\end{fulllineitems} 2889 2890\begin{quote}\begin{description} 2891\item[{param}] \leavevmode 2892\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{context} - Library context 2893 2894\end{description}\end{quote} 2895\begin{quote}\begin{description} 2896\item[{retval}] \leavevmode\begin{itemize} 2897\item {} 28980 Success 2899 2900\end{itemize} 2901 2902\item[{return}] \leavevmode\begin{itemize} 2903\item {} 2904Kerberos error codes 2905 2906\end{itemize} 2907 2908\end{description}\end{quote} 2909 2910Create a context structure, using only system configuration files. All information passed through the environment variables is ignored. 2911 2912The \sphinxstyleemphasis{context} must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_context:c.krb5_free_context}]{\sphinxcrossref{\sphinxcode{krb5\_free\_context()}}}} when it is no longer needed. 2913 2914 2915\subsubsection{krb5\_is\_config\_principal - Test whether a principal is a configuration principal.} 2916\label{\detokenize{appdev/refs/api/krb5_is_config_principal:krb5-is-config-principal-test-whether-a-principal-is-a-configuration-principal}}\label{\detokenize{appdev/refs/api/krb5_is_config_principal::doc}}\index{krb5\_is\_config\_principal (C function)} 2917 2918\begin{fulllineitems} 2919\phantomsection\label{\detokenize{appdev/refs/api/krb5_is_config_principal:c.krb5_is_config_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_is\_config\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}}{} 2920\end{fulllineitems} 2921 2922\begin{quote}\begin{description} 2923\item[{param}] \leavevmode 2924\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2925 2926\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal to check 2927 2928\end{description}\end{quote} 2929\begin{quote}\begin{description} 2930\item[{return}] \leavevmode\begin{itemize} 2931\item {} 2932TRUE if the principal is a configuration principal (generated part of krb5\_cc\_set\_config() ); FALSE otherwise. 2933 2934\end{itemize} 2935 2936\end{description}\end{quote} 2937 2938 2939\subsubsection{krb5\_is\_thread\_safe - Test whether the Kerberos library was built with multithread support.} 2940\label{\detokenize{appdev/refs/api/krb5_is_thread_safe::doc}}\label{\detokenize{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)} 2941 2942\begin{fulllineitems} 2943\phantomsection\label{\detokenize{appdev/refs/api/krb5_is_thread_safe:c.krb5_is_thread_safe}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_is\_thread\_safe}}{void\sphinxstyleemphasis{ None}}{} 2944\end{fulllineitems} 2945 2946\begin{quote}\begin{description} 2947\item[{param}] \leavevmode 2948\sphinxstylestrong{None} 2949 2950\end{description}\end{quote} 2951\begin{quote}\begin{description} 2952\item[{retval}] \leavevmode\begin{itemize} 2953\item {} 2954TRUE if the library is threadsafe; FALSE otherwise 2955 2956\end{itemize} 2957 2958\end{description}\end{quote} 2959 2960 2961\subsubsection{krb5\_kt\_close - Close a key table handle.} 2962\label{\detokenize{appdev/refs/api/krb5_kt_close:krb5-kt-close-close-a-key-table-handle}}\label{\detokenize{appdev/refs/api/krb5_kt_close::doc}}\index{krb5\_kt\_close (C function)} 2963 2964\begin{fulllineitems} 2965\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_close:c.krb5_kt_close}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_close}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}}{} 2966\end{fulllineitems} 2967 2968\begin{quote}\begin{description} 2969\item[{param}] \leavevmode 2970\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2971 2972\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 2973 2974\end{description}\end{quote} 2975\begin{quote}\begin{description} 2976\item[{retval}] \leavevmode\begin{itemize} 2977\item {} 29780 None 2979 2980\end{itemize} 2981 2982\end{description}\end{quote} 2983 2984 2985\subsubsection{krb5\_kt\_client\_default - Resolve the default client key table.} 2986\label{\detokenize{appdev/refs/api/krb5_kt_client_default::doc}}\label{\detokenize{appdev/refs/api/krb5_kt_client_default:krb5-kt-client-default-resolve-the-default-client-key-table}}\index{krb5\_kt\_client\_default (C function)} 2987 2988\begin{fulllineitems} 2989\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_client_default:c.krb5_kt_client_default}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_client\_default}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}} *\sphinxstyleemphasis{ keytab\_out}}{} 2990\end{fulllineitems} 2991 2992\begin{quote}\begin{description} 2993\item[{param}] \leavevmode 2994\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 2995 2996\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keytab\_out} - Key table handle 2997 2998\end{description}\end{quote} 2999\begin{quote}\begin{description} 3000\item[{retval}] \leavevmode\begin{itemize} 3001\item {} 30020 Success 3003 3004\end{itemize} 3005 3006\item[{return}] \leavevmode\begin{itemize} 3007\item {} 3008Kerberos error codes 3009 3010\end{itemize} 3011 3012\end{description}\end{quote} 3013 3014Fill \sphinxstyleemphasis{keytab\_out} with a handle to the default client key table. 3015 3016\begin{sphinxadmonition}{note}{Note:} 3017New in 1.11 3018\end{sphinxadmonition} 3019 3020 3021\subsubsection{krb5\_kt\_default - Resolve the default key table.} 3022\label{\detokenize{appdev/refs/api/krb5_kt_default:krb5-kt-default-resolve-the-default-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_default::doc}}\index{krb5\_kt\_default (C function)} 3023 3024\begin{fulllineitems} 3025\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_default:c.krb5_kt_default}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_default}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}} *\sphinxstyleemphasis{ id}}{} 3026\end{fulllineitems} 3027 3028\begin{quote}\begin{description} 3029\item[{param}] \leavevmode 3030\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3031 3032\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{id} - Key table handle 3033 3034\end{description}\end{quote} 3035\begin{quote}\begin{description} 3036\item[{retval}] \leavevmode\begin{itemize} 3037\item {} 30380 Success 3039 3040\end{itemize} 3041 3042\item[{return}] \leavevmode\begin{itemize} 3043\item {} 3044Kerberos error codes 3045 3046\end{itemize} 3047 3048\end{description}\end{quote} 3049 3050Set \sphinxstyleemphasis{id} to a handle to the default key table. The key table is not opened. 3051 3052 3053\subsubsection{krb5\_kt\_default\_name - Get the default key table name.} 3054\label{\detokenize{appdev/refs/api/krb5_kt_default_name::doc}}\label{\detokenize{appdev/refs/api/krb5_kt_default_name:krb5-kt-default-name-get-the-default-key-table-name}}\index{krb5\_kt\_default\_name (C function)} 3055 3056\begin{fulllineitems} 3057\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_default_name:c.krb5_kt_default_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_default\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, char *\sphinxstyleemphasis{ name}, int\sphinxstyleemphasis{ name\_size}}{} 3058\end{fulllineitems} 3059 3060\begin{quote}\begin{description} 3061\item[{param}] \leavevmode 3062\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3063 3064\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} - Default key table name 3065 3066\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name\_size} - Space available in \sphinxstyleemphasis{name} 3067 3068\end{description}\end{quote} 3069\begin{quote}\begin{description} 3070\item[{retval}] \leavevmode\begin{itemize} 3071\item {} 30720 Success 3073 3074\item {} 3075KRB5\_CONFIG\_NOTENUFSPACE Buffer is too short 3076 3077\end{itemize} 3078 3079\item[{return}] \leavevmode\begin{itemize} 3080\item {} 3081Kerberos error codes 3082 3083\end{itemize} 3084 3085\end{description}\end{quote} 3086 3087Fill \sphinxstyleemphasis{name} with the name of the default key table for \sphinxstyleemphasis{context} . 3088 3089 3090\subsubsection{krb5\_kt\_dup - Duplicate keytab handle.} 3091\label{\detokenize{appdev/refs/api/krb5_kt_dup:krb5-kt-dup-duplicate-keytab-handle}}\label{\detokenize{appdev/refs/api/krb5_kt_dup::doc}}\index{krb5\_kt\_dup (C function)} 3092 3093\begin{fulllineitems} 3094\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_dup:c.krb5_kt_dup}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_dup}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ in}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}} *\sphinxstyleemphasis{ out}}{} 3095\end{fulllineitems} 3096 3097\begin{quote}\begin{description} 3098\item[{param}] \leavevmode 3099\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3100 3101\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} - Key table handle to be duplicated 3102 3103\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Key table handle 3104 3105\end{description}\end{quote} 3106 3107Create a new handle referring to the same key table as \sphinxstyleemphasis{in} . The new handle and \sphinxstyleemphasis{in} can be closed independently. 3108 3109\begin{sphinxadmonition}{note}{Note:} 3110New in 1.12 3111\end{sphinxadmonition} 3112 3113 3114\subsubsection{krb5\_kt\_get\_name - Get a key table name.} 3115\label{\detokenize{appdev/refs/api/krb5_kt_get_name::doc}}\label{\detokenize{appdev/refs/api/krb5_kt_get_name:krb5-kt-get-name-get-a-key-table-name}}\index{krb5\_kt\_get\_name (C function)} 3116 3117\begin{fulllineitems} 3118\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_get_name:c.krb5_kt_get_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_get\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, char *\sphinxstyleemphasis{ name}, unsigned int\sphinxstyleemphasis{ namelen}}{} 3119\end{fulllineitems} 3120 3121\begin{quote}\begin{description} 3122\item[{param}] \leavevmode 3123\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3124 3125\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 3126 3127\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} - Key table name 3128 3129\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{namelen} - Maximum length to fill in name 3130 3131\end{description}\end{quote} 3132\begin{quote}\begin{description} 3133\item[{retval}] \leavevmode\begin{itemize} 3134\item {} 31350 Success 3136 3137\item {} 3138KRB5\_KT\_NAME\_TOOLONG Key table name does not fit in namelen bytes 3139 3140\end{itemize} 3141 3142\item[{return}] \leavevmode\begin{itemize} 3143\item {} 3144Kerberos error codes 3145 3146\end{itemize} 3147 3148\end{description}\end{quote} 3149 3150Fill \sphinxstyleemphasis{name} with the name of \sphinxstyleemphasis{keytab} including the type and delimiter. 3151 3152 3153\subsubsection{krb5\_kt\_get\_type - Return the type of a key table.} 3154\label{\detokenize{appdev/refs/api/krb5_kt_get_type:krb5-kt-get-type-return-the-type-of-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_get_type::doc}}\index{krb5\_kt\_get\_type (C function)} 3155 3156\begin{fulllineitems} 3157\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_get_type:c.krb5_kt_get_type}}\pysiglinewithargsret{const char * \sphinxbfcode{krb5\_kt\_get\_type}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}}{} 3158\end{fulllineitems} 3159 3160\begin{quote}\begin{description} 3161\item[{param}] \leavevmode 3162\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3163 3164\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 3165 3166\end{description}\end{quote} 3167\begin{quote}\begin{description} 3168\item[{return}] \leavevmode\begin{itemize} 3169\item {} 3170The type of a key table as an alias that must not be modified or freed by the caller. 3171 3172\end{itemize} 3173 3174\end{description}\end{quote} 3175 3176 3177\subsubsection{krb5\_kt\_resolve - Get a handle for a key table.} 3178\label{\detokenize{appdev/refs/api/krb5_kt_resolve:krb5-kt-resolve-get-a-handle-for-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_resolve::doc}}\index{krb5\_kt\_resolve (C function)} 3179 3180\begin{fulllineitems} 3181\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_resolve:c.krb5_kt_resolve}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_resolve}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ name}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}} *\sphinxstyleemphasis{ ktid}}{} 3182\end{fulllineitems} 3183 3184\begin{quote}\begin{description} 3185\item[{param}] \leavevmode 3186\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3187 3188\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - Name of the key table 3189 3190\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ktid} - Key table handle 3191 3192\end{description}\end{quote} 3193\begin{quote}\begin{description} 3194\item[{retval}] \leavevmode\begin{itemize} 3195\item {} 31960 Success 3197 3198\end{itemize} 3199 3200\item[{return}] \leavevmode\begin{itemize} 3201\item {} 3202Kerberos error codes 3203 3204\end{itemize} 3205 3206\end{description}\end{quote} 3207 3208Resolve the key table name \sphinxstyleemphasis{name} and set \sphinxstyleemphasis{ktid} to a handle identifying the key table. Use {\hyperref[\detokenize{appdev/refs/api/krb5_kt_close:c.krb5_kt_close}]{\sphinxcrossref{\sphinxcode{krb5\_kt\_close()}}}} to free \sphinxstyleemphasis{ktid} when it is no longer needed. 3209\begin{quote} 3210 3211\sphinxstyleemphasis{name} must be of the form \sphinxstylestrong{type:residual} , where \sphinxstyleemphasis{type} must be a type known to the library and \sphinxstyleemphasis{residual} portion should be specific to the particular keytab type. If no \sphinxstyleemphasis{type} is given, the default is \sphinxstylestrong{FILE} . 3212\end{quote} 3213 3214If \sphinxstyleemphasis{name} is of type \sphinxstylestrong{FILE} , the keytab file is not opened by this call. 3215 3216 3217\subsubsection{krb5\_kuserok - Determine if a principal is authorized to log in as a local user.} 3218\label{\detokenize{appdev/refs/api/krb5_kuserok:krb5-kuserok-determine-if-a-principal-is-authorized-to-log-in-as-a-local-user}}\label{\detokenize{appdev/refs/api/krb5_kuserok::doc}}\index{krb5\_kuserok (C function)} 3219 3220\begin{fulllineitems} 3221\phantomsection\label{\detokenize{appdev/refs/api/krb5_kuserok:c.krb5_kuserok}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_kuserok}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ principal}, const char *\sphinxstyleemphasis{ luser}}{} 3222\end{fulllineitems} 3223 3224\begin{quote}\begin{description} 3225\item[{param}] \leavevmode 3226\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3227 3228\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal name 3229 3230\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{luser} - Local username 3231 3232\end{description}\end{quote} 3233\begin{quote}\begin{description} 3234\item[{retval}] \leavevmode\begin{itemize} 3235\item {} 3236TRUE Principal is authorized to log in as user; FALSE otherwise. 3237 3238\end{itemize} 3239 3240\end{description}\end{quote} 3241 3242Determine whether \sphinxstyleemphasis{principal} is authorized to log in as a local user \sphinxstyleemphasis{luser} . 3243 3244 3245\subsubsection{krb5\_parse\_name - Convert a string principal name to a krb5\_principal structure.} 3246\label{\detokenize{appdev/refs/api/krb5_parse_name::doc}}\label{\detokenize{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)} 3247 3248\begin{fulllineitems} 3249\phantomsection\label{\detokenize{appdev/refs/api/krb5_parse_name:c.krb5_parse_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_parse\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ name}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ principal\_out}}{} 3250\end{fulllineitems} 3251 3252\begin{quote}\begin{description} 3253\item[{param}] \leavevmode 3254\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3255 3256\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - String representation of a principal name 3257 3258\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{principal\_out} - New principal 3259 3260\end{description}\end{quote} 3261\begin{quote}\begin{description} 3262\item[{retval}] \leavevmode\begin{itemize} 3263\item {} 32640 Success 3265 3266\end{itemize} 3267 3268\item[{return}] \leavevmode\begin{itemize} 3269\item {} 3270Kerberos error codes 3271 3272\end{itemize} 3273 3274\end{description}\end{quote} 3275 3276Convert a string representation of a principal name to a krb5\_principal structure. 3277 3278A 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. 3279 3280To 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 \sphinxstylestrong{n} , \sphinxstylestrong{t} , \sphinxstylestrong{b} or \sphinxstylestrong{0} , respectively. 3281 3282Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free \sphinxstyleemphasis{principal\_out} when it is no longer needed. 3283 3284\begin{sphinxadmonition}{note}{Note:} 3285The realm in a Kerberos \sphinxstyleemphasis{name} cannot contain slash, colon, or NULL characters. 3286\end{sphinxadmonition} 3287 3288 3289\subsubsection{krb5\_parse\_name\_flags - Convert a string principal name to a krb5\_principal with flags.} 3290\label{\detokenize{appdev/refs/api/krb5_parse_name_flags:krb5-parse-name-flags-convert-a-string-principal-name-to-a-krb5-principal-with-flags}}\label{\detokenize{appdev/refs/api/krb5_parse_name_flags::doc}}\index{krb5\_parse\_name\_flags (C function)} 3291 3292\begin{fulllineitems} 3293\phantomsection\label{\detokenize{appdev/refs/api/krb5_parse_name_flags:c.krb5_parse_name_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_parse\_name\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ name}, int\sphinxstyleemphasis{ flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ principal\_out}}{} 3294\end{fulllineitems} 3295 3296\begin{quote}\begin{description} 3297\item[{param}] \leavevmode 3298\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3299 3300\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - String representation of a principal name 3301 3302\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flag 3303 3304\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{principal\_out} - New principal 3305 3306\end{description}\end{quote} 3307\begin{quote}\begin{description} 3308\item[{retval}] \leavevmode\begin{itemize} 3309\item {} 33100 Success 3311 3312\end{itemize} 3313 3314\item[{return}] \leavevmode\begin{itemize} 3315\item {} 3316Kerberos error codes 3317 3318\end{itemize} 3319 3320\end{description}\end{quote} 3321 3322Similar to {\hyperref[\detokenize{appdev/refs/api/krb5_parse_name:c.krb5_parse_name}]{\sphinxcrossref{\sphinxcode{krb5\_parse\_name()}}}} , this function converts a single-string representation of a principal name to a krb5\_principal structure. 3323 3324The following flags are valid: 3325\begin{quote} 3326\begin{itemize} 3327\item {} 3328{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:KRB5_PRINCIPAL_PARSE_NO_REALM}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}}}} - no realm must be present in \sphinxstyleemphasis{name} 3329 3330\item {} 3331{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:KRB5_PRINCIPAL_PARSE_REQUIRE_REALM}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}}}} - realm must be present in \sphinxstyleemphasis{name} 3332 3333\item {} 3334{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:KRB5_PRINCIPAL_PARSE_ENTERPRISE}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}}}} - create single-component enterprise principal 3335 3336\item {} 3337{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:KRB5_PRINCIPAL_PARSE_IGNORE_REALM}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}}}} - ignore realm if present in \sphinxstyleemphasis{name} 3338 3339\end{itemize} 3340 3341If \sphinxstylestrong{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM} or \sphinxstylestrong{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM} is specified in \sphinxstyleemphasis{flags} , the realm of the new principal will be empty. Otherwise, the default realm for \sphinxstyleemphasis{context} will be used if \sphinxstyleemphasis{name} does not specify a realm. 3342\end{quote} 3343 3344Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free \sphinxstyleemphasis{principal\_out} when it is no longer needed. 3345 3346 3347\subsubsection{krb5\_principal\_compare - Compare two principals.} 3348\label{\detokenize{appdev/refs/api/krb5_principal_compare:krb5-principal-compare-compare-two-principals}}\label{\detokenize{appdev/refs/api/krb5_principal_compare::doc}}\index{krb5\_principal\_compare (C function)} 3349 3350\begin{fulllineitems} 3351\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal_compare:c.krb5_principal_compare}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_principal\_compare}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ2}}{} 3352\end{fulllineitems} 3353 3354\begin{quote}\begin{description} 3355\item[{param}] \leavevmode 3356\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3357 3358\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} - First principal 3359 3360\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} - Second principal 3361 3362\end{description}\end{quote} 3363\begin{quote}\begin{description} 3364\item[{retval}] \leavevmode\begin{itemize} 3365\item {} 3366TRUE if the principals are the same; FALSE otherwise 3367 3368\end{itemize} 3369 3370\end{description}\end{quote} 3371 3372 3373\subsubsection{krb5\_principal\_compare\_any\_realm - Compare two principals ignoring realm components.} 3374\label{\detokenize{appdev/refs/api/krb5_principal_compare_any_realm:krb5-principal-compare-any-realm-compare-two-principals-ignoring-realm-components}}\label{\detokenize{appdev/refs/api/krb5_principal_compare_any_realm::doc}}\index{krb5\_principal\_compare\_any\_realm (C function)} 3375 3376\begin{fulllineitems} 3377\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal_compare_any_realm:c.krb5_principal_compare_any_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_principal\_compare\_any\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ2}}{} 3378\end{fulllineitems} 3379 3380\begin{quote}\begin{description} 3381\item[{param}] \leavevmode 3382\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3383 3384\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} - First principal 3385 3386\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} - Second principal 3387 3388\end{description}\end{quote} 3389\begin{quote}\begin{description} 3390\item[{retval}] \leavevmode\begin{itemize} 3391\item {} 3392TRUE if the principals are the same; FALSE otherwise 3393 3394\end{itemize} 3395 3396\end{description}\end{quote} 3397 3398Similar to {\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare:c.krb5_principal_compare}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_compare()}}}} , but do not compare the realm components of the principals. 3399 3400 3401\subsubsection{krb5\_principal\_compare\_flags - Compare two principals with additional flags.} 3402\label{\detokenize{appdev/refs/api/krb5_principal_compare_flags:krb5-principal-compare-flags-compare-two-principals-with-additional-flags}}\label{\detokenize{appdev/refs/api/krb5_principal_compare_flags::doc}}\index{krb5\_principal\_compare\_flags (C function)} 3403 3404\begin{fulllineitems} 3405\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal_compare_flags:c.krb5_principal_compare_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_principal\_compare\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ2}, int\sphinxstyleemphasis{ flags}}{} 3406\end{fulllineitems} 3407 3408\begin{quote}\begin{description} 3409\item[{param}] \leavevmode 3410\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3411 3412\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} - First principal 3413 3414\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} - Second principal 3415 3416\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flags 3417 3418\end{description}\end{quote} 3419\begin{quote}\begin{description} 3420\item[{retval}] \leavevmode\begin{itemize} 3421\item {} 3422TRUE if the principal names are the same; FALSE otherwise 3423 3424\end{itemize} 3425 3426\end{description}\end{quote} 3427 3428Valid flags are: 3429\begin{itemize} 3430\item {} 3431{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:KRB5_PRINCIPAL_COMPARE_IGNORE_REALM}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}}}} - ignore realm component 3432 3433\item {} 3434{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:KRB5_PRINCIPAL_COMPARE_ENTERPRISE}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}}}} - UPNs as real principals 3435 3436\item {} 3437{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:KRB5_PRINCIPAL_COMPARE_CASEFOLD}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}}}} case-insensitive 3438 3439\item {} 3440{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:KRB5_PRINCIPAL_COMPARE_UTF8}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_UTF8}}}} - treat principals as UTF-8 3441 3442\end{itemize} 3443 3444 3445\sphinxstrong{See also:} 3446 3447 3448{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare:c.krb5_principal_compare}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_compare()}}}} 3449 3450 3451 3452 3453\subsubsection{krb5\_prompter\_posix - Prompt user for password.} 3454\label{\detokenize{appdev/refs/api/krb5_prompter_posix:krb5-prompter-posix-prompt-user-for-password}}\label{\detokenize{appdev/refs/api/krb5_prompter_posix::doc}}\index{krb5\_prompter\_posix (C function)} 3455 3456\begin{fulllineitems} 3457\phantomsection\label{\detokenize{appdev/refs/api/krb5_prompter_posix:c.krb5_prompter_posix}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_prompter\_posix}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, void *\sphinxstyleemphasis{ data}, const char *\sphinxstyleemphasis{ name}, const char *\sphinxstyleemphasis{ banner}, int\sphinxstyleemphasis{ num\_prompts}, {\hyperref[\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}]{\sphinxcrossref{krb5\_prompt}}}\sphinxstyleemphasis{ prompts}}{} 3458\end{fulllineitems} 3459 3460\begin{quote}\begin{description} 3461\item[{param}] \leavevmode 3462\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3463 3464\sphinxstylestrong{data} - Unused (callback argument) 3465 3466\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - Name to output during prompt 3467 3468\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{banner} - Banner to output during prompt 3469 3470\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_prompts} - Number of prompts in \sphinxstyleemphasis{prompts} 3471 3472\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompts} - Array of prompts and replies 3473 3474\end{description}\end{quote} 3475\begin{quote}\begin{description} 3476\item[{retval}] \leavevmode\begin{itemize} 3477\item {} 34780 Success 3479 3480\end{itemize} 3481 3482\item[{return}] \leavevmode\begin{itemize} 3483\item {} 3484Kerberos error codes 3485 3486\end{itemize} 3487 3488\end{description}\end{quote} 3489 3490This function is intended to be used as a prompter callback for {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_password()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_init()}}}} . 3491 3492Writes \sphinxstyleemphasis{name} and \sphinxstyleemphasis{banner} to stdout, each followed by a newline, then writes each prompt field in the \sphinxstyleemphasis{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. 3493 3494 3495\subsubsection{krb5\_realm\_compare - Compare the realms of two principals.} 3496\label{\detokenize{appdev/refs/api/krb5_realm_compare::doc}}\label{\detokenize{appdev/refs/api/krb5_realm_compare:krb5-realm-compare-compare-the-realms-of-two-principals}}\index{krb5\_realm\_compare (C function)} 3497 3498\begin{fulllineitems} 3499\phantomsection\label{\detokenize{appdev/refs/api/krb5_realm_compare:c.krb5_realm_compare}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_realm\_compare}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ2}}{} 3500\end{fulllineitems} 3501 3502\begin{quote}\begin{description} 3503\item[{param}] \leavevmode 3504\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3505 3506\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} - First principal 3507 3508\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} - Second principal 3509 3510\end{description}\end{quote} 3511\begin{quote}\begin{description} 3512\item[{retval}] \leavevmode\begin{itemize} 3513\item {} 3514TRUE if the realm names are the same; FALSE otherwise 3515 3516\end{itemize} 3517 3518\end{description}\end{quote} 3519 3520 3521\subsubsection{krb5\_responder\_get\_challenge - Retrieve the challenge data for a given question in the responder context.} 3522\label{\detokenize{appdev/refs/api/krb5_responder_get_challenge:krb5-responder-get-challenge-retrieve-the-challenge-data-for-a-given-question-in-the-responder-context}}\label{\detokenize{appdev/refs/api/krb5_responder_get_challenge::doc}}\index{krb5\_responder\_get\_challenge (C function)} 3523 3524\begin{fulllineitems} 3525\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_get_challenge:c.krb5_responder_get_challenge}}\pysiglinewithargsret{const char * \sphinxbfcode{krb5\_responder\_get\_challenge}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, const char *\sphinxstyleemphasis{ question}}{} 3526\end{fulllineitems} 3527 3528\begin{quote}\begin{description} 3529\item[{param}] \leavevmode 3530\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3531 3532\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3533 3534\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{question} - Question name 3535 3536\end{description}\end{quote} 3537 3538Return a pointer to a C string containing the challenge for \sphinxstyleemphasis{question} within \sphinxstyleemphasis{rctx} , or NULL if the question is not present in \sphinxstyleemphasis{rctx} . The structure of the question depends on the question name, but will always be printable UTF-8 text. The returned pointer is an alias, valid only as long as the lifetime of \sphinxstyleemphasis{rctx} , and should not be modified or freed by the caller. 3539 3540\begin{sphinxadmonition}{note}{Note:} 3541New in 1.11 3542\end{sphinxadmonition} 3543 3544 3545\subsubsection{krb5\_responder\_list\_questions - List the question names contained in the responder context.} 3546\label{\detokenize{appdev/refs/api/krb5_responder_list_questions::doc}}\label{\detokenize{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)} 3547 3548\begin{fulllineitems} 3549\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_list_questions:c.krb5_responder_list_questions}}\pysiglinewithargsret{const char *const * \sphinxbfcode{krb5\_responder\_list\_questions}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}}{} 3550\end{fulllineitems} 3551 3552\begin{quote}\begin{description} 3553\item[{param}] \leavevmode 3554\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3555 3556\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3557 3558\end{description}\end{quote} 3559 3560Return a pointer to a null-terminated list of question names which are present in \sphinxstyleemphasis{rctx} . The pointer is an alias, valid only as long as the lifetime of \sphinxstyleemphasis{rctx} , and should not be modified or freed by the caller. A question’s challenge can be retrieved using {\hyperref[\detokenize{appdev/refs/api/krb5_responder_get_challenge:c.krb5_responder_get_challenge}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_get\_challenge()}}}} and answered using {\hyperref[\detokenize{appdev/refs/api/krb5_responder_set_answer:c.krb5_responder_set_answer}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_set\_answer()}}}} . 3561 3562\begin{sphinxadmonition}{note}{Note:} 3563New in 1.11 3564\end{sphinxadmonition} 3565 3566 3567\subsubsection{krb5\_responder\_set\_answer - Answer a named question in the responder context.} 3568\label{\detokenize{appdev/refs/api/krb5_responder_set_answer:krb5-responder-set-answer-answer-a-named-question-in-the-responder-context}}\label{\detokenize{appdev/refs/api/krb5_responder_set_answer::doc}}\index{krb5\_responder\_set\_answer (C function)} 3569 3570\begin{fulllineitems} 3571\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_set_answer:c.krb5_responder_set_answer}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_responder\_set\_answer}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, const char *\sphinxstyleemphasis{ question}, const char *\sphinxstyleemphasis{ answer}}{} 3572\end{fulllineitems} 3573 3574\begin{quote}\begin{description} 3575\item[{param}] \leavevmode 3576\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3577 3578\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3579 3580\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{question} - Question name 3581 3582\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{answer} - The string to set (MUST be printable UTF-8) 3583 3584\end{description}\end{quote} 3585\begin{quote}\begin{description} 3586\item[{retval}] \leavevmode\begin{itemize} 3587\item {} 3588EINVAL question is not present within rctx 3589 3590\end{itemize} 3591 3592\end{description}\end{quote} 3593 3594This function supplies an answer to \sphinxstyleemphasis{question} within \sphinxstyleemphasis{rctx} . The appropriate form of the answer depends on the question name. 3595 3596\begin{sphinxadmonition}{note}{Note:} 3597New in 1.11 3598\end{sphinxadmonition} 3599 3600 3601\subsubsection{krb5\_responder\_otp\_get\_challenge - Decode the KRB5\_RESPONDER\_QUESTION\_OTP to a C struct.} 3602\label{\detokenize{appdev/refs/api/krb5_responder_otp_get_challenge:krb5-responder-otp-get-challenge-decode-the-krb5-responder-question-otp-to-a-c-struct}}\label{\detokenize{appdev/refs/api/krb5_responder_otp_get_challenge::doc}}\index{krb5\_responder\_otp\_get\_challenge (C function)} 3603 3604\begin{fulllineitems} 3605\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_otp_get_challenge:c.krb5_responder_otp_get_challenge}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_responder\_otp\_get\_challenge}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}]{\sphinxcrossref{krb5\_responder\_otp\_challenge}}} **\sphinxstyleemphasis{ chl}}{} 3606\end{fulllineitems} 3607 3608\begin{quote}\begin{description} 3609\item[{param}] \leavevmode 3610\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3611 3612\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3613 3614\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{chl} - Challenge structure 3615 3616\end{description}\end{quote} 3617 3618A 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. 3619 3620The returned value must be passed to {\hyperref[\detokenize{appdev/refs/api/krb5_responder_otp_challenge_free:c.krb5_responder_otp_challenge_free}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_otp\_challenge\_free()}}}} to be freed. 3621 3622\begin{sphinxadmonition}{note}{Note:} 3623New in 1.11 3624\end{sphinxadmonition} 3625 3626 3627\subsubsection{krb5\_responder\_otp\_set\_answer - Answer the KRB5\_RESPONDER\_QUESTION\_OTP question.} 3628\label{\detokenize{appdev/refs/api/krb5_responder_otp_set_answer:krb5-responder-otp-set-answer-answer-the-krb5-responder-question-otp-question}}\label{\detokenize{appdev/refs/api/krb5_responder_otp_set_answer::doc}}\index{krb5\_responder\_otp\_set\_answer (C function)} 3629 3630\begin{fulllineitems} 3631\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_otp_set_answer:c.krb5_responder_otp_set_answer}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_responder\_otp\_set\_answer}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, size\_t\sphinxstyleemphasis{ ti}, const char *\sphinxstyleemphasis{ value}, const char *\sphinxstyleemphasis{ pin}}{} 3632\end{fulllineitems} 3633 3634\begin{quote}\begin{description} 3635\item[{param}] \leavevmode 3636\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3637 3638\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3639 3640\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ti} - The index of the tokeninfo selected 3641 3642\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{value} - The value to set, or NULL for none 3643 3644\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pin} - The pin to set, or NULL for none 3645 3646\end{description}\end{quote} 3647 3648\begin{sphinxadmonition}{note}{Note:} 3649New in 1.11 3650\end{sphinxadmonition} 3651 3652 3653\subsubsection{krb5\_responder\_otp\_challenge\_free - Free the value returned by krb5\_responder\_otp\_get\_challenge() .} 3654\label{\detokenize{appdev/refs/api/krb5_responder_otp_challenge_free:krb5-responder-otp-challenge-free-free-the-value-returned-by-krb5-responder-otp-get-challenge}}\label{\detokenize{appdev/refs/api/krb5_responder_otp_challenge_free::doc}}\index{krb5\_responder\_otp\_challenge\_free (C function)} 3655 3656\begin{fulllineitems} 3657\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_otp_challenge_free:c.krb5_responder_otp_challenge_free}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_responder\_otp\_challenge\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}]{\sphinxcrossref{krb5\_responder\_otp\_challenge}}} *\sphinxstyleemphasis{ chl}}{} 3658\end{fulllineitems} 3659 3660\begin{quote}\begin{description} 3661\item[{param}] \leavevmode 3662\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3663 3664\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3665 3666\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{chl} - The challenge to free 3667 3668\end{description}\end{quote} 3669 3670\begin{sphinxadmonition}{note}{Note:} 3671New in 1.11 3672\end{sphinxadmonition} 3673 3674 3675\subsubsection{krb5\_responder\_pkinit\_get\_challenge - Decode the KRB5\_RESPONDER\_QUESTION\_PKINIT to a C struct.} 3676\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_get_challenge:krb5-responder-pkinit-get-challenge-decode-the-krb5-responder-question-pkinit-to-a-c-struct}}\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_get_challenge::doc}}\index{krb5\_responder\_pkinit\_get\_challenge (C function)} 3677 3678\begin{fulllineitems} 3679\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_get_challenge:c.krb5_responder_pkinit_get_challenge}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_responder\_pkinit\_get\_challenge}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}]{\sphinxcrossref{krb5\_responder\_pkinit\_challenge}}} **\sphinxstyleemphasis{ chl\_out}}{} 3680\end{fulllineitems} 3681 3682\begin{quote}\begin{description} 3683\item[{param}] \leavevmode 3684\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3685 3686\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3687 3688\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{chl\_out} - Challenge structure 3689 3690\end{description}\end{quote} 3691 3692A convenience function which parses the KRB5\_RESPONDER\_QUESTION\_PKINIT question challenge data, making it available in native C. The main feature of this function is the ability to read the challenge without parsing the JSON. 3693 3694The returned value must be passed to {\hyperref[\detokenize{appdev/refs/api/krb5_responder_pkinit_challenge_free:c.krb5_responder_pkinit_challenge_free}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_pkinit\_challenge\_free()}}}} to be freed. 3695 3696\begin{sphinxadmonition}{note}{Note:} 3697New in 1.12 3698\end{sphinxadmonition} 3699 3700 3701\subsubsection{krb5\_responder\_pkinit\_set\_answer - Answer the KRB5\_RESPONDER\_QUESTION\_PKINIT question for one identity.} 3702\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_set_answer:krb5-responder-pkinit-set-answer-answer-the-krb5-responder-question-pkinit-question-for-one-identity}}\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_set_answer::doc}}\index{krb5\_responder\_pkinit\_set\_answer (C function)} 3703 3704\begin{fulllineitems} 3705\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_set_answer:c.krb5_responder_pkinit_set_answer}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_responder\_pkinit\_set\_answer}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, const char *\sphinxstyleemphasis{ identity}, const char *\sphinxstyleemphasis{ pin}}{} 3706\end{fulllineitems} 3707 3708\begin{quote}\begin{description} 3709\item[{param}] \leavevmode 3710\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3711 3712\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3713 3714\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{identity} - The identity for which a PIN is being supplied 3715 3716\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pin} - The provided PIN, or NULL for none 3717 3718\end{description}\end{quote} 3719 3720\begin{sphinxadmonition}{note}{Note:} 3721New in 1.12 3722\end{sphinxadmonition} 3723 3724 3725\subsubsection{krb5\_responder\_pkinit\_challenge\_free - Free the value returned by krb5\_responder\_pkinit\_get\_challenge() .} 3726\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_challenge_free:krb5-responder-pkinit-challenge-free-free-the-value-returned-by-krb5-responder-pkinit-get-challenge}}\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_challenge_free::doc}}\index{krb5\_responder\_pkinit\_challenge\_free (C function)} 3727 3728\begin{fulllineitems} 3729\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_challenge_free:c.krb5_responder_pkinit_challenge_free}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_responder\_pkinit\_challenge\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{krb5\_responder\_context}}}\sphinxstyleemphasis{ rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}]{\sphinxcrossref{krb5\_responder\_pkinit\_challenge}}} *\sphinxstyleemphasis{ chl}}{} 3730\end{fulllineitems} 3731 3732\begin{quote}\begin{description} 3733\item[{param}] \leavevmode 3734\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 3735 3736\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} - Responder context 3737 3738\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{chl} - The challenge to free 3739 3740\end{description}\end{quote} 3741 3742\begin{sphinxadmonition}{note}{Note:} 3743New in 1.12 3744\end{sphinxadmonition} 3745 3746 3747\subsubsection{krb5\_set\_default\_realm - Override the default realm for the specified context.} 3748\label{\detokenize{appdev/refs/api/krb5_set_default_realm::doc}}\label{\detokenize{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)} 3749 3750\begin{fulllineitems} 3751\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_default_realm:c.krb5_set_default_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_default\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ lrealm}}{} 3752\end{fulllineitems} 3753 3754\begin{quote}\begin{description} 3755\item[{param}] \leavevmode 3756\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3757 3758\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{lrealm} - Realm name for the default realm 3759 3760\end{description}\end{quote} 3761\begin{quote}\begin{description} 3762\item[{retval}] \leavevmode\begin{itemize} 3763\item {} 37640 Success 3765 3766\end{itemize} 3767 3768\item[{return}] \leavevmode\begin{itemize} 3769\item {} 3770Kerberos error codes 3771 3772\end{itemize} 3773 3774\end{description}\end{quote} 3775 3776If \sphinxstyleemphasis{lrealm} is NULL, clear the default realm setting. 3777 3778 3779\subsubsection{krb5\_set\_password - Set a password for a principal using specified credentials.} 3780\label{\detokenize{appdev/refs/api/krb5_set_password:krb5-set-password-set-a-password-for-a-principal-using-specified-credentials}}\label{\detokenize{appdev/refs/api/krb5_set_password::doc}}\index{krb5\_set\_password (C function)} 3781 3782\begin{fulllineitems} 3783\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_password:c.krb5_set_password}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_password}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, const char *\sphinxstyleemphasis{ newpw}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ change\_password\_for}, int *\sphinxstyleemphasis{ result\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ result\_code\_string}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ result\_string}}{} 3784\end{fulllineitems} 3785 3786\begin{quote}\begin{description} 3787\item[{param}] \leavevmode 3788\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3789 3790\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Credentials for kadmin/changepw service 3791 3792\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{newpw} - New password 3793 3794\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{change\_password\_for} - Change the password for this principal 3795 3796\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code} - Numeric error code from server 3797 3798\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code\_string} - String equivalent to \sphinxstyleemphasis{result\_code} 3799 3800\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_string} - Data returned from the remote system 3801 3802\end{description}\end{quote} 3803\begin{quote}\begin{description} 3804\item[{retval}] \leavevmode\begin{itemize} 3805\item {} 38060 Success and result\_code is set to KRB5\_KPASSWD\_SUCCESS . 3807 3808\end{itemize} 3809 3810\item[{return}] \leavevmode\begin{itemize} 3811\item {} 3812Kerberos error codes. 3813 3814\end{itemize} 3815 3816\end{description}\end{quote} 3817 3818This function uses the credentials \sphinxstyleemphasis{creds} to set the password \sphinxstyleemphasis{newpw} for the principal \sphinxstyleemphasis{change\_password\_for} . It implements the set password operation of RFC 3244, for interoperability with Microsoft Windows implementations. 3819 3820The error code and strings are returned in \sphinxstyleemphasis{result\_code} , \sphinxstyleemphasis{result\_code\_string} and \sphinxstyleemphasis{result\_string} . 3821 3822\begin{sphinxadmonition}{note}{Note:} 3823If \sphinxstyleemphasis{change\_password\_for} is NULL, the change is performed on the current principal. If \sphinxstyleemphasis{change\_password\_for} is non-null, the change is performed on the principal name passed in \sphinxstyleemphasis{change\_password\_for} . 3824\end{sphinxadmonition} 3825 3826 3827\subsubsection{krb5\_set\_password\_using\_ccache - Set a password for a principal using cached credentials.} 3828\label{\detokenize{appdev/refs/api/krb5_set_password_using_ccache:krb5-set-password-using-ccache-set-a-password-for-a-principal-using-cached-credentials}}\label{\detokenize{appdev/refs/api/krb5_set_password_using_ccache::doc}}\index{krb5\_set\_password\_using\_ccache (C function)} 3829 3830\begin{fulllineitems} 3831\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_password_using_ccache:c.krb5_set_password_using_ccache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_password\_using\_ccache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, const char *\sphinxstyleemphasis{ newpw}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ change\_password\_for}, int *\sphinxstyleemphasis{ result\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ result\_code\_string}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ result\_string}}{} 3832\end{fulllineitems} 3833 3834\begin{quote}\begin{description} 3835\item[{param}] \leavevmode 3836\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3837 3838\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache 3839 3840\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{newpw} - New password 3841 3842\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{change\_password\_for} - Change the password for this principal 3843 3844\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code} - Numeric error code from server 3845 3846\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code\_string} - String equivalent to \sphinxstyleemphasis{result\_code} 3847 3848\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_string} - Data returned from the remote system 3849 3850\end{description}\end{quote} 3851\begin{quote}\begin{description} 3852\item[{retval}] \leavevmode\begin{itemize} 3853\item {} 38540 Success 3855 3856\end{itemize} 3857 3858\item[{return}] \leavevmode\begin{itemize} 3859\item {} 3860Kerberos error codes 3861 3862\end{itemize} 3863 3864\end{description}\end{quote} 3865 3866This function uses the cached credentials from \sphinxstyleemphasis{ccache} to set the password \sphinxstyleemphasis{newpw} for the principal \sphinxstyleemphasis{change\_password\_for} . It implements RFC 3244 set password operation (interoperable with MS Windows implementations) using the credential cache. 3867 3868The error code and strings are returned in \sphinxstyleemphasis{result\_code} , \sphinxstyleemphasis{result\_code\_string} and \sphinxstyleemphasis{result\_string} . 3869 3870\begin{sphinxadmonition}{note}{Note:} 3871If \sphinxstyleemphasis{change\_password\_for} is set to NULL, the change is performed on the default principal in \sphinxstyleemphasis{ccache} . If \sphinxstyleemphasis{change\_password\_for} is non null, the change is performed on the specified principal. 3872\end{sphinxadmonition} 3873 3874 3875\subsubsection{krb5\_set\_principal\_realm - Set the realm field of a principal.} 3876\label{\detokenize{appdev/refs/api/krb5_set_principal_realm::doc}}\label{\detokenize{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)} 3877 3878\begin{fulllineitems} 3879\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_principal_realm:c.krb5_set_principal_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_principal\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ principal}, const char *\sphinxstyleemphasis{ realm}}{} 3880\end{fulllineitems} 3881 3882\begin{quote}\begin{description} 3883\item[{param}] \leavevmode 3884\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3885 3886\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal name 3887 3888\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm name 3889 3890\end{description}\end{quote} 3891\begin{quote}\begin{description} 3892\item[{retval}] \leavevmode\begin{itemize} 3893\item {} 38940 Success 3895 3896\end{itemize} 3897 3898\item[{return}] \leavevmode\begin{itemize} 3899\item {} 3900Kerberos error codes 3901 3902\end{itemize} 3903 3904\end{description}\end{quote} 3905 3906Set the realm name part of \sphinxstyleemphasis{principal} to \sphinxstyleemphasis{realm} , overwriting the previous realm. 3907 3908 3909\subsubsection{krb5\_set\_trace\_callback - Specify a callback function for trace events.} 3910\label{\detokenize{appdev/refs/api/krb5_set_trace_callback:krb5-set-trace-callback-specify-a-callback-function-for-trace-events}}\label{\detokenize{appdev/refs/api/krb5_set_trace_callback::doc}}\index{krb5\_set\_trace\_callback (C function)} 3911 3912\begin{fulllineitems} 3913\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_trace_callback:c.krb5_set_trace_callback}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_trace\_callback}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_trace_callback:c.krb5_trace_callback}]{\sphinxcrossref{krb5\_trace\_callback}}}\sphinxstyleemphasis{ fn}, void *\sphinxstyleemphasis{ cb\_data}}{} 3914\end{fulllineitems} 3915 3916\begin{quote}\begin{description} 3917\item[{param}] \leavevmode 3918\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3919 3920\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fn} - Callback function 3921 3922\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cb\_data} - Callback data 3923 3924\end{description}\end{quote} 3925\begin{quote}\begin{description} 3926\item[{return}] \leavevmode\begin{itemize} 3927\item {} 3928Returns KRB5\_TRACE\_NOSUPP if tracing is not supported in the library (unless fn is NULL). 3929 3930\end{itemize} 3931 3932\end{description}\end{quote} 3933 3934Specify a callback for trace events occurring in krb5 operations performed within \sphinxstyleemphasis{context} . \sphinxstyleemphasis{fn} will be invoked with \sphinxstyleemphasis{context} as the first argument, \sphinxstyleemphasis{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 \sphinxstyleemphasis{context} is destroyed, \sphinxstyleemphasis{fn} will be invoked with a NULL second argument so it can clean up \sphinxstyleemphasis{cb\_data} . Supply a NULL value for \sphinxstyleemphasis{fn} to disable trace callbacks within \sphinxstyleemphasis{context} . 3935 3936\begin{sphinxadmonition}{note}{Note:} 3937This function overrides the information passed through the \sphinxstyleemphasis{KRB5\_TRACE} environment variable. 3938\end{sphinxadmonition} 3939 3940\begin{sphinxadmonition}{note}{Note:} 3941New in 1.9 3942\end{sphinxadmonition} 3943 3944 3945\subsubsection{krb5\_set\_trace\_filename - Specify a file name for directing trace events.} 3946\label{\detokenize{appdev/refs/api/krb5_set_trace_filename:krb5-set-trace-filename-specify-a-file-name-for-directing-trace-events}}\label{\detokenize{appdev/refs/api/krb5_set_trace_filename::doc}}\index{krb5\_set\_trace\_filename (C function)} 3947 3948\begin{fulllineitems} 3949\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_trace_filename:c.krb5_set_trace_filename}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_trace\_filename}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ filename}}{} 3950\end{fulllineitems} 3951 3952\begin{quote}\begin{description} 3953\item[{param}] \leavevmode 3954\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3955 3956\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{filename} - File name 3957 3958\end{description}\end{quote} 3959\begin{quote}\begin{description} 3960\item[{retval}] \leavevmode\begin{itemize} 3961\item {} 3962KRB5\_TRACE\_NOSUPP Tracing is not supported in the library. 3963 3964\end{itemize} 3965 3966\end{description}\end{quote} 3967 3968Open \sphinxstyleemphasis{filename} for appending (creating it, if necessary) and set up a callback to write trace events to it. 3969 3970\begin{sphinxadmonition}{note}{Note:} 3971This function overrides the information passed through the \sphinxstyleemphasis{KRB5\_TRACE} environment variable. 3972\end{sphinxadmonition} 3973 3974\begin{sphinxadmonition}{note}{Note:} 3975New in 1.9 3976\end{sphinxadmonition} 3977 3978 3979\subsubsection{krb5\_sname\_match - Test whether a principal matches a matching principal.} 3980\label{\detokenize{appdev/refs/api/krb5_sname_match::doc}}\label{\detokenize{appdev/refs/api/krb5_sname_match:krb5-sname-match-test-whether-a-principal-matches-a-matching-principal}}\index{krb5\_sname\_match (C function)} 3981 3982\begin{fulllineitems} 3983\phantomsection\label{\detokenize{appdev/refs/api/krb5_sname_match:c.krb5_sname_match}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_sname\_match}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ matching}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ}}{} 3984\end{fulllineitems} 3985 3986\begin{quote}\begin{description} 3987\item[{param}] \leavevmode 3988\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 3989 3990\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{matching} - Matching principal 3991 3992\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ} - Principal to test 3993 3994\end{description}\end{quote} 3995\begin{quote}\begin{description} 3996\item[{return}] \leavevmode\begin{itemize} 3997\item {} 3998TRUE if princ matches matching , FALSE otherwise. 3999 4000\end{itemize} 4001 4002\end{description}\end{quote} 4003 4004If \sphinxstyleemphasis{matching} is NULL, return TRUE. If \sphinxstyleemphasis{matching} is not a matching principal, return the value of krb5\_principal\_compare(context, matching, princ). 4005 4006\begin{sphinxadmonition}{note}{Note:} 4007A 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. 4008\end{sphinxadmonition} 4009 4010 4011\subsubsection{krb5\_sname\_to\_principal - Generate a full principal name from a service name.} 4012\label{\detokenize{appdev/refs/api/krb5_sname_to_principal:krb5-sname-to-principal-generate-a-full-principal-name-from-a-service-name}}\label{\detokenize{appdev/refs/api/krb5_sname_to_principal::doc}}\index{krb5\_sname\_to\_principal (C function)} 4013 4014\begin{fulllineitems} 4015\phantomsection\label{\detokenize{appdev/refs/api/krb5_sname_to_principal:c.krb5_sname_to_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_sname\_to\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ hostname}, const char *\sphinxstyleemphasis{ sname}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}}\sphinxstyleemphasis{ type}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ ret\_princ}}{} 4016\end{fulllineitems} 4017 4018\begin{quote}\begin{description} 4019\item[{param}] \leavevmode 4020\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4021 4022\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hostname} - Host name, or NULL to use local host 4023 4024\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{sname} - Service name, or NULL to use \sphinxstylestrong{“host”} 4025 4026\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - Principal type 4027 4028\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret\_princ} - Generated principal 4029 4030\end{description}\end{quote} 4031\begin{quote}\begin{description} 4032\item[{retval}] \leavevmode\begin{itemize} 4033\item {} 40340 Success 4035 4036\end{itemize} 4037 4038\item[{return}] \leavevmode\begin{itemize} 4039\item {} 4040Kerberos error codes 4041 4042\end{itemize} 4043 4044\end{description}\end{quote} 4045 4046This function converts a \sphinxstyleemphasis{hostname} and \sphinxstyleemphasis{sname} into \sphinxstyleemphasis{krb5\_principal} structure \sphinxstyleemphasis{ret\_princ} . The returned principal will be of the form \sphinxstyleemphasis{sname/hostname@REALM} where REALM is determined by {\hyperref[\detokenize{appdev/refs/api/krb5_get_host_realm:c.krb5_get_host_realm}]{\sphinxcrossref{\sphinxcode{krb5\_get\_host\_realm()}}}} . In some cases this may be the referral (empty) realm. 4047 4048The \sphinxstyleemphasis{type} can be one of the following: 4049\begin{quote} 4050\begin{itemize} 4051\item {} 4052{\hyperref[\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST}]{\sphinxcrossref{\sphinxcode{KRB5\_NT\_SRV\_HST}}}} canonicalizes the host name before looking up the realm and generating the principal. 4053 4054\item {} 4055{\hyperref[\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:KRB5_NT_UNKNOWN}]{\sphinxcrossref{\sphinxcode{KRB5\_NT\_UNKNOWN}}}} accepts the hostname as given, and does not canonicalize it. 4056 4057\end{itemize} 4058 4059Use krb5\_free\_principal to free \sphinxstyleemphasis{ret\_princ} when it is no longer needed. 4060\end{quote} 4061 4062 4063\subsubsection{krb5\_unparse\_name - Convert a krb5\_principal structure to a string representation.} 4064\label{\detokenize{appdev/refs/api/krb5_unparse_name:krb5-unparse-name-convert-a-krb5-principal-structure-to-a-string-representation}}\label{\detokenize{appdev/refs/api/krb5_unparse_name::doc}}\index{krb5\_unparse\_name (C function)} 4065 4066\begin{fulllineitems} 4067\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_unparse\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, char **\sphinxstyleemphasis{ name}}{} 4068\end{fulllineitems} 4069 4070\begin{quote}\begin{description} 4071\item[{param}] \leavevmode 4072\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4073 4074\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal 4075 4076\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} - String representation of principal name 4077 4078\end{description}\end{quote} 4079\begin{quote}\begin{description} 4080\item[{retval}] \leavevmode\begin{itemize} 4081\item {} 40820 Success 4083 4084\end{itemize} 4085 4086\item[{return}] \leavevmode\begin{itemize} 4087\item {} 4088Kerberos error codes 4089 4090\end{itemize} 4091 4092\end{description}\end{quote} 4093 4094The resulting string representation uses the format and quoting conventions described for {\hyperref[\detokenize{appdev/refs/api/krb5_parse_name:c.krb5_parse_name}]{\sphinxcrossref{\sphinxcode{krb5\_parse\_name()}}}} . 4095 4096Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_unparsed_name:c.krb5_free_unparsed_name}]{\sphinxcrossref{\sphinxcode{krb5\_free\_unparsed\_name()}}}} to free \sphinxstyleemphasis{name} when it is no longer needed. 4097 4098 4099\subsubsection{krb5\_unparse\_name\_ext - Convert krb5\_principal structure to string and length.} 4100\label{\detokenize{appdev/refs/api/krb5_unparse_name_ext:krb5-unparse-name-ext-convert-krb5-principal-structure-to-string-and-length}}\label{\detokenize{appdev/refs/api/krb5_unparse_name_ext::doc}}\index{krb5\_unparse\_name\_ext (C function)} 4101 4102\begin{fulllineitems} 4103\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name_ext:c.krb5_unparse_name_ext}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_unparse\_name\_ext}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, char **\sphinxstyleemphasis{ name}, unsigned int *\sphinxstyleemphasis{ size}}{} 4104\end{fulllineitems} 4105 4106\begin{quote}\begin{description} 4107\item[{param}] \leavevmode 4108\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4109 4110\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal 4111 4112\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{name} - String representation of principal name 4113 4114\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{size} - Size of unparsed name 4115 4116\end{description}\end{quote} 4117\begin{quote}\begin{description} 4118\item[{retval}] \leavevmode\begin{itemize} 4119\item {} 41200 Success 4121 4122\end{itemize} 4123 4124\item[{return}] \leavevmode\begin{itemize} 4125\item {} 4126Kerberos error codes. On failure name is set to NULL 4127 4128\end{itemize} 4129 4130\end{description}\end{quote} 4131 4132This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}]{\sphinxcrossref{\sphinxcode{krb5\_unparse\_name()}}}} , but allows the use of an existing buffer for the result. If size is not NULL, then \sphinxstyleemphasis{name} must point to either NULL or an existing buffer of at least the size pointed to by \sphinxstyleemphasis{size} . The buffer will be allocated or resized if necessary, with the new pointer stored into \sphinxstyleemphasis{name} . Whether or not the buffer is resized, the necessary space for the result, including null terminator, will be stored into \sphinxstyleemphasis{size} . 4133 4134If size is NULL, this function behaves exactly as {\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}]{\sphinxcrossref{\sphinxcode{krb5\_unparse\_name()}}}} . 4135 4136 4137\subsubsection{krb5\_unparse\_name\_flags - Convert krb5\_principal structure to a string with flags.} 4138\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags::doc}}\label{\detokenize{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)} 4139 4140\begin{fulllineitems} 4141\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags:c.krb5_unparse_name_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_unparse\_name\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, int\sphinxstyleemphasis{ flags}, char **\sphinxstyleemphasis{ name}}{} 4142\end{fulllineitems} 4143 4144\begin{quote}\begin{description} 4145\item[{param}] \leavevmode 4146\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4147 4148\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal 4149 4150\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flags 4151 4152\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} - String representation of principal name 4153 4154\end{description}\end{quote} 4155\begin{quote}\begin{description} 4156\item[{retval}] \leavevmode\begin{itemize} 4157\item {} 41580 Success 4159 4160\end{itemize} 4161 4162\item[{return}] \leavevmode\begin{itemize} 4163\item {} 4164Kerberos error codes. On failure name is set to NULL 4165 4166\end{itemize} 4167 4168\end{description}\end{quote} 4169 4170Similar to {\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}]{\sphinxcrossref{\sphinxcode{krb5\_unparse\_name()}}}} , this function converts a krb5\_principal structure to a string representation. 4171 4172The following flags are valid: 4173\begin{quote} 4174\begin{itemize} 4175\item {} 4176{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:KRB5_PRINCIPAL_UNPARSE_SHORT}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}}}} - omit realm if it is the local realm 4177 4178\item {} 4179{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:KRB5_PRINCIPAL_UNPARSE_NO_REALM}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}}}} - omit realm 4180 4181\item {} 4182{\hyperref[\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:KRB5_PRINCIPAL_UNPARSE_DISPLAY}]{\sphinxcrossref{\sphinxcode{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}}}} - do not quote special characters 4183 4184\end{itemize} 4185 4186Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_unparsed_name:c.krb5_free_unparsed_name}]{\sphinxcrossref{\sphinxcode{krb5\_free\_unparsed\_name()}}}} to free \sphinxstyleemphasis{name} when it is no longer needed. 4187\end{quote} 4188 4189 4190\subsubsection{krb5\_unparse\_name\_flags\_ext - Convert krb5\_principal structure to string format with flags.} 4191\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags_ext:krb5-unparse-name-flags-ext-convert-krb5-principal-structure-to-string-format-with-flags}}\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags_ext::doc}}\index{krb5\_unparse\_name\_flags\_ext (C function)} 4192 4193\begin{fulllineitems} 4194\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags_ext:c.krb5_unparse_name_flags_ext}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_unparse\_name\_flags\_ext}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, int\sphinxstyleemphasis{ flags}, char **\sphinxstyleemphasis{ name}, unsigned int *\sphinxstyleemphasis{ size}}{} 4195\end{fulllineitems} 4196 4197\begin{quote}\begin{description} 4198\item[{param}] \leavevmode 4199\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4200 4201\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal 4202 4203\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flags 4204 4205\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} - Single string format of principal name 4206 4207\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{size} - Size of unparsed name buffer 4208 4209\end{description}\end{quote} 4210\begin{quote}\begin{description} 4211\item[{retval}] \leavevmode\begin{itemize} 4212\item {} 42130 Success 4214 4215\end{itemize} 4216 4217\item[{return}] \leavevmode\begin{itemize} 4218\item {} 4219Kerberos error codes. On failure name is set to NULL 4220 4221\end{itemize} 4222 4223\end{description}\end{quote} 4224 4225 4226\subsubsection{krb5\_us\_timeofday - Retrieve the system time of day, in sec and ms, since the epoch.} 4227\label{\detokenize{appdev/refs/api/krb5_us_timeofday:krb5-us-timeofday-retrieve-the-system-time-of-day-in-sec-and-ms-since-the-epoch}}\label{\detokenize{appdev/refs/api/krb5_us_timeofday::doc}}\index{krb5\_us\_timeofday (C function)} 4228 4229\begin{fulllineitems} 4230\phantomsection\label{\detokenize{appdev/refs/api/krb5_us_timeofday:c.krb5_us_timeofday}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_us\_timeofday}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} *\sphinxstyleemphasis{ seconds}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} *\sphinxstyleemphasis{ microseconds}}{} 4231\end{fulllineitems} 4232 4233\begin{quote}\begin{description} 4234\item[{param}] \leavevmode 4235\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4236 4237\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seconds} - System timeofday, seconds portion 4238 4239\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{microseconds} - System timeofday, microseconds portion 4240 4241\end{description}\end{quote} 4242\begin{quote}\begin{description} 4243\item[{retval}] \leavevmode\begin{itemize} 4244\item {} 42450 Success 4246 4247\end{itemize} 4248 4249\item[{return}] \leavevmode\begin{itemize} 4250\item {} 4251Kerberos error codes 4252 4253\end{itemize} 4254 4255\end{description}\end{quote} 4256 4257This function retrieves the system time of day with the context specific time offset adjustment. 4258 4259 4260\subsubsection{krb5\_verify\_authdata\_kdc\_issued - Unwrap and verify AD-KDCIssued authorization data.} 4261\label{\detokenize{appdev/refs/api/krb5_verify_authdata_kdc_issued:krb5-verify-authdata-kdc-issued-unwrap-and-verify-ad-kdcissued-authorization-data}}\label{\detokenize{appdev/refs/api/krb5_verify_authdata_kdc_issued::doc}}\index{krb5\_verify\_authdata\_kdc\_issued (C function)} 4262 4263\begin{fulllineitems} 4264\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_authdata_kdc_issued:c.krb5_verify_authdata_kdc_issued}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_verify\_authdata\_kdc\_issued}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, const {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *\sphinxstyleemphasis{ ad\_kdcissued}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ issuer}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ authdata}}{} 4265\end{fulllineitems} 4266 4267\begin{quote}\begin{description} 4268\item[{param}] \leavevmode 4269\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4270 4271\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Session key 4272 4273\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ad\_kdcissued} - AD-KDCIssued authorization data to be unwrapped 4274 4275\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{issuer} - Name of issuing principal (or NULL) 4276 4277\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authdata} - Unwrapped list of authorization data 4278 4279\end{description}\end{quote} 4280 4281This function unwraps an AD-KDCIssued authdatum (see RFC 4120 section 5.2.6.2) and verifies its signature against \sphinxstyleemphasis{key} . The issuer field of the authdatum element is returned in \sphinxstyleemphasis{issuer} , and the unwrapped list of authdata is returned in \sphinxstyleemphasis{authdata} . 4282 4283 4284\subsection{Rarely used public interfaces} 4285\label{\detokenize{appdev/refs/api/index:rarely-used-public-interfaces}} 4286 4287\subsubsection{krb5\_425\_conv\_principal - Convert a Kerberos V4 principal to a Kerberos V5 principal.} 4288\label{\detokenize{appdev/refs/api/krb5_425_conv_principal:krb5-425-conv-principal-convert-a-kerberos-v4-principal-to-a-kerberos-v5-principal}}\label{\detokenize{appdev/refs/api/krb5_425_conv_principal::doc}}\index{krb5\_425\_conv\_principal (C function)} 4289 4290\begin{fulllineitems} 4291\phantomsection\label{\detokenize{appdev/refs/api/krb5_425_conv_principal:c.krb5_425_conv_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_425\_conv\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ name}, const char *\sphinxstyleemphasis{ instance}, const char *\sphinxstyleemphasis{ realm}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ princ}}{} 4292\end{fulllineitems} 4293 4294\begin{quote}\begin{description} 4295\item[{param}] \leavevmode 4296\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4297 4298\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - V4 name 4299 4300\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{instance} - V4 instance 4301 4302\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm 4303 4304\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} - V5 principal 4305 4306\end{description}\end{quote} 4307\begin{quote}\begin{description} 4308\item[{retval}] \leavevmode\begin{itemize} 4309\item {} 43100 Success; otherwise - Kerberos error codes 4311 4312\end{itemize} 4313 4314\end{description}\end{quote} 4315 4316This function builds a \sphinxstyleemphasis{princ} from V4 specification based on given input \sphinxstyleemphasis{name.instance@realm} . 4317 4318Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free \sphinxstyleemphasis{princ} when it is no longer needed. 4319 4320 4321\subsubsection{krb5\_524\_conv\_principal - Convert a Kerberos V5 principal to a Kerberos V4 principal.} 4322\label{\detokenize{appdev/refs/api/krb5_524_conv_principal:krb5-524-conv-principal-convert-a-kerberos-v5-principal-to-a-kerberos-v4-principal}}\label{\detokenize{appdev/refs/api/krb5_524_conv_principal::doc}}\index{krb5\_524\_conv\_principal (C function)} 4323 4324\begin{fulllineitems} 4325\phantomsection\label{\detokenize{appdev/refs/api/krb5_524_conv_principal:c.krb5_524_conv_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_524\_conv\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ princ}, char *\sphinxstyleemphasis{ name}, char *\sphinxstyleemphasis{ inst}, char *\sphinxstyleemphasis{ realm}}{} 4326\end{fulllineitems} 4327 4328\begin{quote}\begin{description} 4329\item[{param}] \leavevmode 4330\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4331 4332\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ} - V5 Principal 4333 4334\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} - V4 principal’s name to be filled in 4335 4336\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{inst} - V4 principal’s instance name to be filled in 4337 4338\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realm} - Principal’s realm name to be filled in 4339 4340\end{description}\end{quote} 4341\begin{quote}\begin{description} 4342\item[{retval}] \leavevmode\begin{itemize} 4343\item {} 43440 Success 4345 4346\item {} 4347KRB5\_INVALID\_PRINCIPAL Invalid principal name 4348 4349\item {} 4350KRB5\_CONFIG\_CANTOPEN Can’t open or find Kerberos configuration file 4351 4352\end{itemize} 4353 4354\item[{return}] \leavevmode\begin{itemize} 4355\item {} 4356Kerberos error codes 4357 4358\end{itemize} 4359 4360\end{description}\end{quote} 4361 4362This function separates a V5 principal \sphinxstyleemphasis{princ} into \sphinxstyleemphasis{name} , \sphinxstyleemphasis{instance} , and \sphinxstyleemphasis{realm} . 4363 4364 4365\subsubsection{krb5\_address\_compare - Compare two Kerberos addresses.} 4366\label{\detokenize{appdev/refs/api/krb5_address_compare:krb5-address-compare-compare-two-kerberos-addresses}}\label{\detokenize{appdev/refs/api/krb5_address_compare::doc}}\index{krb5\_address\_compare (C function)} 4367 4368\begin{fulllineitems} 4369\phantomsection\label{\detokenize{appdev/refs/api/krb5_address_compare:c.krb5_address_compare}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_address\_compare}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ addr1}, const {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ addr2}}{} 4370\end{fulllineitems} 4371 4372\begin{quote}\begin{description} 4373\item[{param}] \leavevmode 4374\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4375 4376\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr1} - First address to be compared 4377 4378\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr2} - Second address to be compared 4379 4380\end{description}\end{quote} 4381\begin{quote}\begin{description} 4382\item[{return}] \leavevmode\begin{itemize} 4383\item {} 4384TRUE if the addresses are the same, FALSE otherwise 4385 4386\end{itemize} 4387 4388\end{description}\end{quote} 4389 4390 4391\subsubsection{krb5\_address\_order - Return an ordering of the specified addresses.} 4392\label{\detokenize{appdev/refs/api/krb5_address_order:krb5-address-order-return-an-ordering-of-the-specified-addresses}}\label{\detokenize{appdev/refs/api/krb5_address_order::doc}}\index{krb5\_address\_order (C function)} 4393 4394\begin{fulllineitems} 4395\phantomsection\label{\detokenize{appdev/refs/api/krb5_address_order:c.krb5_address_order}}\pysiglinewithargsret{int \sphinxbfcode{krb5\_address\_order}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ addr1}, const {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ addr2}}{} 4396\end{fulllineitems} 4397 4398\begin{quote}\begin{description} 4399\item[{param}] \leavevmode 4400\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4401 4402\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr1} - First address 4403 4404\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr2} - Second address 4405 4406\end{description}\end{quote} 4407\begin{quote}\begin{description} 4408\item[{retval}] \leavevmode\begin{itemize} 4409\item {} 44100 The two addresses are the same 4411 4412\item {} 4413\end{itemize} 4414 4415\end{description}\end{quote} 4416 4417 4418\subsubsection{krb5\_address\_search - Search a list of addresses for a specified address.} 4419\label{\detokenize{appdev/refs/api/krb5_address_search:krb5-address-search-search-a-list-of-addresses-for-a-specified-address}}\label{\detokenize{appdev/refs/api/krb5_address_search::doc}}\index{krb5\_address\_search (C function)} 4420 4421\begin{fulllineitems} 4422\phantomsection\label{\detokenize{appdev/refs/api/krb5_address_search:c.krb5_address_search}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_address\_search}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ addr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *const *\sphinxstyleemphasis{ addrlist}}{} 4423\end{fulllineitems} 4424 4425\begin{quote}\begin{description} 4426\item[{param}] \leavevmode 4427\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4428 4429\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr} - Address to search for 4430 4431\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addrlist} - Address list to be searched (or NULL) 4432 4433\end{description}\end{quote} 4434\begin{quote}\begin{description} 4435\item[{return}] \leavevmode\begin{itemize} 4436\item {} 4437TRUE if addr is listed in addrlist , or addrlist is NULL; FALSE otherwise 4438 4439\end{itemize} 4440 4441\end{description}\end{quote} 4442 4443\begin{sphinxadmonition}{note}{Note:} 4444If \sphinxstyleemphasis{addrlist} contains only a NetBIOS addresses, it will be treated as a null list. 4445\end{sphinxadmonition} 4446 4447 4448\subsubsection{krb5\_allow\_weak\_crypto - Allow the application to override the profile’s allow\_weak\_crypto setting.} 4449\label{\detokenize{appdev/refs/api/krb5_allow_weak_crypto::doc}}\label{\detokenize{appdev/refs/api/krb5_allow_weak_crypto:krb5-allow-weak-crypto-allow-the-application-to-override-the-profile-s-allow-weak-crypto-setting}}\index{krb5\_allow\_weak\_crypto (C function)} 4450 4451\begin{fulllineitems} 4452\phantomsection\label{\detokenize{appdev/refs/api/krb5_allow_weak_crypto:c.krb5_allow_weak_crypto}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_allow\_weak\_crypto}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}}\sphinxstyleemphasis{ enable}}{} 4453\end{fulllineitems} 4454 4455\begin{quote}\begin{description} 4456\item[{param}] \leavevmode 4457\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4458 4459\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enable} - Boolean flag 4460 4461\end{description}\end{quote} 4462\begin{quote}\begin{description} 4463\item[{retval}] \leavevmode\begin{itemize} 4464\item {} 44650 (always) 4466 4467\end{itemize} 4468 4469\end{description}\end{quote} 4470 4471This function allows an application to override the allow\_weak\_crypto setting. It is primarily for use by aklog. 4472 4473 4474\subsubsection{krb5\_aname\_to\_localname - Convert a principal name to a local name.} 4475\label{\detokenize{appdev/refs/api/krb5_aname_to_localname::doc}}\label{\detokenize{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)} 4476 4477\begin{fulllineitems} 4478\phantomsection\label{\detokenize{appdev/refs/api/krb5_aname_to_localname:c.krb5_aname_to_localname}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_aname\_to\_localname}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ aname}, int\sphinxstyleemphasis{ lnsize\_in}, char *\sphinxstyleemphasis{ lname}}{} 4479\end{fulllineitems} 4480 4481\begin{quote}\begin{description} 4482\item[{param}] \leavevmode 4483\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4484 4485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{aname} - Principal name 4486 4487\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{lnsize\_in} - Space available in \sphinxstyleemphasis{lname} 4488 4489\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{lname} - Local name buffer to be filled in 4490 4491\end{description}\end{quote} 4492\begin{quote}\begin{description} 4493\item[{retval}] \leavevmode\begin{itemize} 4494\item {} 44950 Success 4496 4497\item {} 4498System errors 4499 4500\end{itemize} 4501 4502\item[{return}] \leavevmode\begin{itemize} 4503\item {} 4504Kerberos error codes 4505 4506\end{itemize} 4507 4508\end{description}\end{quote} 4509 4510If \sphinxstyleemphasis{aname} does not correspond to any local account, KRB5\_LNAME\_NOTRANS is returned. If \sphinxstyleemphasis{lnsize\_in} is too small for the local name, KRB5\_CONFIG\_NOTENUFSPACE is returned. 4511 4512Local names, rather than principal names, can be used by programs that translate to an environment-specific name (for example, a user account name). 4513 4514 4515\subsubsection{krb5\_anonymous\_principal - Build an anonymous principal.} 4516\label{\detokenize{appdev/refs/api/krb5_anonymous_principal:krb5-anonymous-principal-build-an-anonymous-principal}}\label{\detokenize{appdev/refs/api/krb5_anonymous_principal::doc}}\index{krb5\_anonymous\_principal (C function)} 4517 4518\begin{fulllineitems} 4519\phantomsection\label{\detokenize{appdev/refs/api/krb5_anonymous_principal:c.krb5_anonymous_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}} \sphinxbfcode{krb5\_anonymous\_principal}}{void\sphinxstyleemphasis{ None}}{} 4520\end{fulllineitems} 4521 4522\begin{quote}\begin{description} 4523\item[{param}] \leavevmode 4524\sphinxstylestrong{None} 4525 4526\end{description}\end{quote} 4527 4528This function returns constant storage that must not be freed. 4529 4530 4531\sphinxstrong{See also:} 4532 4533 4534{\hyperref[\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR}]{\sphinxcrossref{\sphinxcode{KRB5\_ANONYMOUS\_PRINCSTR}}}} 4535 4536 4537 4538 4539\subsubsection{krb5\_anonymous\_realm - Return an anonymous realm data.} 4540\label{\detokenize{appdev/refs/api/krb5_anonymous_realm::doc}}\label{\detokenize{appdev/refs/api/krb5_anonymous_realm:krb5-anonymous-realm-return-an-anonymous-realm-data}}\index{krb5\_anonymous\_realm (C function)} 4541 4542\begin{fulllineitems} 4543\phantomsection\label{\detokenize{appdev/refs/api/krb5_anonymous_realm:c.krb5_anonymous_realm}}\pysiglinewithargsret{const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_anonymous\_realm}}{void\sphinxstyleemphasis{ None}}{} 4544\end{fulllineitems} 4545 4546\begin{quote}\begin{description} 4547\item[{param}] \leavevmode 4548\sphinxstylestrong{None} 4549 4550\end{description}\end{quote} 4551 4552This function returns constant storage that must not be freed. 4553 4554 4555\sphinxstrong{See also:} 4556 4557 4558{\hyperref[\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR}]{\sphinxcrossref{\sphinxcode{KRB5\_ANONYMOUS\_REALMSTR}}}} 4559 4560 4561 4562 4563\subsubsection{krb5\_appdefault\_boolean - Retrieve a boolean value from the appdefaults section of krb5.conf.} 4564\label{\detokenize{appdev/refs/api/krb5_appdefault_boolean::doc}}\label{\detokenize{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)} 4565 4566\begin{fulllineitems} 4567\phantomsection\label{\detokenize{appdev/refs/api/krb5_appdefault_boolean:c.krb5_appdefault_boolean}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_appdefault\_boolean}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ appname}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ realm}, const char *\sphinxstyleemphasis{ option}, int\sphinxstyleemphasis{ default\_value}, int *\sphinxstyleemphasis{ ret\_value}}{} 4568\end{fulllineitems} 4569 4570\begin{quote}\begin{description} 4571\item[{param}] \leavevmode 4572\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4573 4574\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appname} - Application name 4575 4576\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm name 4577 4578\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{option} - Option to be checked 4579 4580\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{default\_value} - Default value to return if no match is found 4581 4582\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret\_value} - Boolean value of \sphinxstyleemphasis{option} 4583 4584\end{description}\end{quote} 4585 4586This function gets the application defaults for \sphinxstyleemphasis{option} based on the given \sphinxstyleemphasis{appname} and/or \sphinxstyleemphasis{realm} . 4587 4588 4589\sphinxstrong{See also:} 4590 4591 4592{\hyperref[\detokenize{appdev/refs/api/krb5_appdefault_string:c.krb5_appdefault_string}]{\sphinxcrossref{\sphinxcode{krb5\_appdefault\_string()}}}} 4593 4594 4595 4596 4597\subsubsection{krb5\_appdefault\_string - Retrieve a string value from the appdefaults section of krb5.conf.} 4598\label{\detokenize{appdev/refs/api/krb5_appdefault_string::doc}}\label{\detokenize{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)} 4599 4600\begin{fulllineitems} 4601\phantomsection\label{\detokenize{appdev/refs/api/krb5_appdefault_string:c.krb5_appdefault_string}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_appdefault\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ appname}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ realm}, const char *\sphinxstyleemphasis{ option}, const char *\sphinxstyleemphasis{ default\_value}, char **\sphinxstyleemphasis{ ret\_value}}{} 4602\end{fulllineitems} 4603 4604\begin{quote}\begin{description} 4605\item[{param}] \leavevmode 4606\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4607 4608\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appname} - Application name 4609 4610\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} - Realm name 4611 4612\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{option} - Option to be checked 4613 4614\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{default\_value} - Default value to return if no match is found 4615 4616\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret\_value} - String value of \sphinxstyleemphasis{option} 4617 4618\end{description}\end{quote} 4619 4620This function gets the application defaults for \sphinxstyleemphasis{option} based on the given \sphinxstyleemphasis{appname} and/or \sphinxstyleemphasis{realm} . 4621 4622 4623\sphinxstrong{See also:} 4624 4625 4626{\hyperref[\detokenize{appdev/refs/api/krb5_appdefault_boolean:c.krb5_appdefault_boolean}]{\sphinxcrossref{\sphinxcode{krb5\_appdefault\_boolean()}}}} 4627 4628 4629 4630 4631\subsubsection{krb5\_auth\_con\_free - Free a krb5\_auth\_context structure.} 4632\label{\detokenize{appdev/refs/api/krb5_auth_con_free:krb5-auth-con-free-free-a-krb5-auth-context-structure}}\label{\detokenize{appdev/refs/api/krb5_auth_con_free::doc}}\index{krb5\_auth\_con\_free (C function)} 4633 4634\begin{fulllineitems} 4635\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_free:c.krb5_auth_con_free}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}}{} 4636\end{fulllineitems} 4637 4638\begin{quote}\begin{description} 4639\item[{param}] \leavevmode 4640\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4641 4642\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context to be freed 4643 4644\end{description}\end{quote} 4645\begin{quote}\begin{description} 4646\item[{retval}] \leavevmode\begin{itemize} 4647\item {} 46480 (always) 4649 4650\end{itemize} 4651 4652\end{description}\end{quote} 4653 4654This function frees an auth context allocated by {\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_init:c.krb5_auth_con_init}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_init()}}}} . 4655 4656 4657\subsubsection{krb5\_auth\_con\_genaddrs - Generate auth context addresses from a connected socket.} 4658\label{\detokenize{appdev/refs/api/krb5_auth_con_genaddrs::doc}}\label{\detokenize{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)} 4659 4660\begin{fulllineitems} 4661\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_genaddrs:c.krb5_auth_con_genaddrs}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_genaddrs}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, int\sphinxstyleemphasis{ infd}, int\sphinxstyleemphasis{ flags}}{} 4662\end{fulllineitems} 4663 4664\begin{quote}\begin{description} 4665\item[{param}] \leavevmode 4666\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4667 4668\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4669 4670\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{infd} - Connected socket descriptor 4671 4672\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flags 4673 4674\end{description}\end{quote} 4675\begin{quote}\begin{description} 4676\item[{retval}] \leavevmode\begin{itemize} 4677\item {} 46780 Success; otherwise - Kerberos error codes 4679 4680\end{itemize} 4681 4682\end{description}\end{quote} 4683 4684This function sets the local and/or remote addresses in \sphinxstyleemphasis{auth\_context} based on the local and remote endpoints of the socket \sphinxstyleemphasis{infd} . The following flags determine the operations performed: 4685\begin{itemize} 4686\item {} 4687{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}}}} Generate local address. 4688 4689\item {} 4690{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}}}} Generate remote address. 4691 4692\item {} 4693{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}}}} Generate local address and port. 4694 4695\item {} 4696{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}}}} Generate remote address and port. 4697 4698\end{itemize} 4699 4700 4701\subsubsection{krb5\_auth\_con\_get\_checksum\_func - Get the checksum callback from an auth context.} 4702\label{\detokenize{appdev/refs/api/krb5_auth_con_get_checksum_func::doc}}\label{\detokenize{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)} 4703 4704\begin{fulllineitems} 4705\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_get_checksum_func:c.krb5_auth_con_get_checksum_func}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_get\_checksum\_func}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:c.krb5_mk_req_checksum_func}]{\sphinxcrossref{krb5\_mk\_req\_checksum\_func}}} *\sphinxstyleemphasis{ func}, void **\sphinxstyleemphasis{ data}}{} 4706\end{fulllineitems} 4707 4708\begin{quote}\begin{description} 4709\item[{param}] \leavevmode 4710\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4711 4712\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4713 4714\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{func} - Checksum callback 4715 4716\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} - Callback argument 4717 4718\end{description}\end{quote} 4719\begin{quote}\begin{description} 4720\item[{retval}] \leavevmode\begin{itemize} 4721\item {} 47220 (always) 4723 4724\end{itemize} 4725 4726\end{description}\end{quote} 4727 4728 4729\subsubsection{krb5\_auth\_con\_getaddrs - Retrieve address fields from an auth context.} 4730\label{\detokenize{appdev/refs/api/krb5_auth_con_getaddrs:krb5-auth-con-getaddrs-retrieve-address-fields-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getaddrs::doc}}\index{krb5\_auth\_con\_getaddrs (C function)} 4731 4732\begin{fulllineitems} 4733\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getaddrs:c.krb5_auth_con_getaddrs}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getaddrs}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} **\sphinxstyleemphasis{ local\_addr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} **\sphinxstyleemphasis{ remote\_addr}}{} 4734\end{fulllineitems} 4735 4736\begin{quote}\begin{description} 4737\item[{param}] \leavevmode 4738\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4739 4740\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4741 4742\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{local\_addr} - Local address (NULL if not needed) 4743 4744\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{remote\_addr} - Remote address (NULL if not needed) 4745 4746\end{description}\end{quote} 4747\begin{quote}\begin{description} 4748\item[{retval}] \leavevmode\begin{itemize} 4749\item {} 47500 Success; otherwise - Kerberos error codes 4751 4752\end{itemize} 4753 4754\end{description}\end{quote} 4755 4756 4757\subsubsection{krb5\_auth\_con\_getauthenticator - Retrieve the authenticator from an auth context.} 4758\label{\detokenize{appdev/refs/api/krb5_auth_con_getauthenticator:krb5-auth-con-getauthenticator-retrieve-the-authenticator-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getauthenticator::doc}}\index{krb5\_auth\_con\_getauthenticator (C function)} 4759 4760\begin{fulllineitems} 4761\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getauthenticator:c.krb5_auth_con_getauthenticator}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getauthenticator}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{krb5\_authenticator}}} **\sphinxstyleemphasis{ authenticator}}{} 4762\end{fulllineitems} 4763 4764\begin{quote}\begin{description} 4765\item[{param}] \leavevmode 4766\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4767 4768\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4769 4770\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authenticator} - Authenticator 4771 4772\end{description}\end{quote} 4773\begin{quote}\begin{description} 4774\item[{retval}] \leavevmode\begin{itemize} 4775\item {} 47760 Success. Otherwise - Kerberos error codes 4777 4778\end{itemize} 4779 4780\end{description}\end{quote} 4781 4782Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_authenticator:c.krb5_free_authenticator}]{\sphinxcrossref{\sphinxcode{krb5\_free\_authenticator()}}}} to free \sphinxstyleemphasis{authenticator} when it is no longer needed. 4783 4784 4785\subsubsection{krb5\_auth\_con\_getflags - Retrieve flags from a krb5\_auth\_context structure.} 4786\label{\detokenize{appdev/refs/api/krb5_auth_con_getflags:krb5-auth-con-getflags-retrieve-flags-from-a-krb5-auth-context-structure}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getflags::doc}}\index{krb5\_auth\_con\_getflags (C function)} 4787 4788\begin{fulllineitems} 4789\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getflags:c.krb5_auth_con_getflags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getflags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} *\sphinxstyleemphasis{ flags}}{} 4790\end{fulllineitems} 4791 4792\begin{quote}\begin{description} 4793\item[{param}] \leavevmode 4794\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4795 4796\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4797 4798\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} - Flags bit mask 4799 4800\end{description}\end{quote} 4801\begin{quote}\begin{description} 4802\item[{retval}] \leavevmode\begin{itemize} 4803\item {} 48040 (always) 4805 4806\end{itemize} 4807 4808\end{description}\end{quote} 4809 4810Valid values for \sphinxstyleemphasis{flags} are: 4811\begin{itemize} 4812\item {} 4813{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} Use timestamps 4814 4815\item {} 4816{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} Save timestamps 4817 4818\item {} 4819{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} Use sequence numbers 4820 4821\item {} 4822{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} Save sequence numbers 4823 4824\end{itemize} 4825 4826 4827\subsubsection{krb5\_auth\_con\_getkey - Retrieve the session key from an auth context as a keyblock.} 4828\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey::doc}}\label{\detokenize{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)} 4829 4830\begin{fulllineitems} 4831\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey:c.krb5_auth_con_getkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ keyblock}}{} 4832\end{fulllineitems} 4833 4834\begin{quote}\begin{description} 4835\item[{param}] \leavevmode 4836\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4837 4838\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4839 4840\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keyblock} - Session key 4841 4842\end{description}\end{quote} 4843\begin{quote}\begin{description} 4844\item[{retval}] \leavevmode\begin{itemize} 4845\item {} 48460 Success. Otherwise - Kerberos error codes 4847 4848\end{itemize} 4849 4850\end{description}\end{quote} 4851 4852This function creates a keyblock containing the session key from \sphinxstyleemphasis{auth\_context} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock()}}}} to free \sphinxstyleemphasis{keyblock} when it is no longer needed 4853 4854 4855\subsubsection{krb5\_auth\_con\_getkey\_k - Retrieve the session key from an auth context.} 4856\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey_k:krb5-auth-con-getkey-k-retrieve-the-session-key-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey_k::doc}}\index{krb5\_auth\_con\_getkey\_k (C function)} 4857 4858\begin{fulllineitems} 4859\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey_k:c.krb5_auth_con_getkey_k}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getkey\_k}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}} *\sphinxstyleemphasis{ key}}{} 4860\end{fulllineitems} 4861 4862\begin{quote}\begin{description} 4863\item[{param}] \leavevmode 4864\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4865 4866\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4867 4868\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Session key 4869 4870\end{description}\end{quote} 4871\begin{quote}\begin{description} 4872\item[{retval}] \leavevmode\begin{itemize} 4873\item {} 48740 (always) 4875 4876\end{itemize} 4877 4878\end{description}\end{quote} 4879 4880This function sets \sphinxstyleemphasis{key} to the session key from \sphinxstyleemphasis{auth\_context} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_k_free_key:c.krb5_k_free_key}]{\sphinxcrossref{\sphinxcode{krb5\_k\_free\_key()}}}} to release \sphinxstyleemphasis{key} when it is no longer needed. 4881 4882 4883\subsubsection{krb5\_auth\_con\_getlocalseqnumber - Retrieve the local sequence number from an auth context.} 4884\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalseqnumber::doc}}\label{\detokenize{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)} 4885 4886\begin{fulllineitems} 4887\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalseqnumber:c.krb5_auth_con_getlocalseqnumber}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getlocalseqnumber}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} *\sphinxstyleemphasis{ seqnumber}}{} 4888\end{fulllineitems} 4889 4890\begin{quote}\begin{description} 4891\item[{param}] \leavevmode 4892\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4893 4894\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4895 4896\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seqnumber} - Local sequence number 4897 4898\end{description}\end{quote} 4899\begin{quote}\begin{description} 4900\item[{retval}] \leavevmode\begin{itemize} 4901\item {} 49020 Success; otherwise - Kerberos error codes 4903 4904\end{itemize} 4905 4906\end{description}\end{quote} 4907 4908Retrieve the local sequence number from \sphinxstyleemphasis{auth\_context} and return it in \sphinxstyleemphasis{seqnumber} . The {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} flag must be set in \sphinxstyleemphasis{auth\_context} for this function to be useful. 4909 4910 4911\subsubsection{krb5\_auth\_con\_getrcache - Retrieve the replay cache from an auth context.} 4912\label{\detokenize{appdev/refs/api/krb5_auth_con_getrcache:krb5-auth-con-getrcache-retrieve-the-replay-cache-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getrcache::doc}}\index{krb5\_auth\_con\_getrcache (C function)} 4913 4914\begin{fulllineitems} 4915\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getrcache:c.krb5_auth_con_getrcache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getrcache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}]{\sphinxcrossref{krb5\_rcache}}} *\sphinxstyleemphasis{ rcache}}{} 4916\end{fulllineitems} 4917 4918\begin{quote}\begin{description} 4919\item[{param}] \leavevmode 4920\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 4921 4922\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 4923 4924\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rcache} - Replay cache handle 4925 4926\end{description}\end{quote} 4927\begin{quote}\begin{description} 4928\item[{retval}] \leavevmode\begin{itemize} 4929\item {} 49300 (always) 4931 4932\end{itemize} 4933 4934\end{description}\end{quote} 4935 4936This function fetches the replay cache from \sphinxstyleemphasis{auth\_context} . The caller should not close \sphinxstyleemphasis{rcache} . 4937 4938 4939\subsubsection{krb5\_auth\_con\_getrecvsubkey - Retrieve the receiving subkey from an auth context as a keyblock.} 4940\label{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey:krb5-auth-con-getrecvsubkey-retrieve-the-receiving-subkey-from-an-auth-context-as-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey::doc}}\index{krb5\_auth\_con\_getrecvsubkey (C function)} 4941 4942\begin{fulllineitems} 4943\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey:c.krb5_auth_con_getrecvsubkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getrecvsubkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ keyblock}}{} 4944\end{fulllineitems} 4945 4946\begin{quote}\begin{description} 4947\item[{param}] \leavevmode 4948\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 4949 4950\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 4951 4952\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keyblock} - Receiving subkey 4953 4954\end{description}\end{quote} 4955\begin{quote}\begin{description} 4956\item[{retval}] \leavevmode\begin{itemize} 4957\item {} 49580 Success; otherwise - Kerberos error codes 4959 4960\end{itemize} 4961 4962\end{description}\end{quote} 4963 4964This function creates a keyblock containing the receiving subkey from \sphinxstyleemphasis{auth\_context} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock()}}}} to free \sphinxstyleemphasis{keyblock} when it is no longer needed. 4965 4966 4967\subsubsection{krb5\_auth\_con\_getrecvsubkey\_k - Retrieve the receiving subkey from an auth context as a keyblock.} 4968\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey_k::doc}}\index{krb5\_auth\_con\_getrecvsubkey\_k (C function)} 4969 4970\begin{fulllineitems} 4971\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey_k:c.krb5_auth_con_getrecvsubkey_k}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getrecvsubkey\_k}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}} *\sphinxstyleemphasis{ key}}{} 4972\end{fulllineitems} 4973 4974\begin{quote}\begin{description} 4975\item[{param}] \leavevmode 4976\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 4977 4978\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 4979 4980\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Receiving subkey 4981 4982\end{description}\end{quote} 4983\begin{quote}\begin{description} 4984\item[{retval}] \leavevmode\begin{itemize} 4985\item {} 49860 Success; otherwise - Kerberos error codes 4987 4988\end{itemize} 4989 4990\end{description}\end{quote} 4991 4992This function sets \sphinxstyleemphasis{key} to the receiving subkey from \sphinxstyleemphasis{auth\_context} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_k_free_key:c.krb5_k_free_key}]{\sphinxcrossref{\sphinxcode{krb5\_k\_free\_key()}}}} to release \sphinxstyleemphasis{key} when it is no longer needed. 4993 4994 4995\subsubsection{krb5\_auth\_con\_getremoteseqnumber - Retrieve the remote sequence number from an auth context.} 4996\label{\detokenize{appdev/refs/api/krb5_auth_con_getremoteseqnumber:krb5-auth-con-getremoteseqnumber-retrieve-the-remote-sequence-number-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getremoteseqnumber::doc}}\index{krb5\_auth\_con\_getremoteseqnumber (C function)} 4997 4998\begin{fulllineitems} 4999\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getremoteseqnumber:c.krb5_auth_con_getremoteseqnumber}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getremoteseqnumber}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} *\sphinxstyleemphasis{ seqnumber}}{} 5000\end{fulllineitems} 5001 5002\begin{quote}\begin{description} 5003\item[{param}] \leavevmode 5004\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5005 5006\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5007 5008\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seqnumber} - Remote sequence number 5009 5010\end{description}\end{quote} 5011\begin{quote}\begin{description} 5012\item[{retval}] \leavevmode\begin{itemize} 5013\item {} 50140 Success; otherwise - Kerberos error codes 5015 5016\end{itemize} 5017 5018\end{description}\end{quote} 5019 5020Retrieve the remote sequence number from \sphinxstyleemphasis{auth\_context} and return it in \sphinxstyleemphasis{seqnumber} . The {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} flag must be set in \sphinxstyleemphasis{auth\_context} for this function to be useful. 5021 5022 5023\subsubsection{krb5\_auth\_con\_getsendsubkey - Retrieve the send subkey from an auth context as a keyblock.} 5024\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey:krb5-auth-con-getsendsubkey-retrieve-the-send-subkey-from-an-auth-context-as-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey::doc}}\index{krb5\_auth\_con\_getsendsubkey (C function)} 5025 5026\begin{fulllineitems} 5027\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey:c.krb5_auth_con_getsendsubkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getsendsubkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ keyblock}}{} 5028\end{fulllineitems} 5029 5030\begin{quote}\begin{description} 5031\item[{param}] \leavevmode 5032\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 5033 5034\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 5035 5036\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keyblock} - Send subkey 5037 5038\end{description}\end{quote} 5039\begin{quote}\begin{description} 5040\item[{retval}] \leavevmode\begin{itemize} 5041\item {} 50420 Success; otherwise - Kerberos error codes 5043 5044\end{itemize} 5045 5046\end{description}\end{quote} 5047 5048This function creates a keyblock containing the send subkey from \sphinxstyleemphasis{auth\_context} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock()}}}} to free \sphinxstyleemphasis{keyblock} when it is no longer needed. 5049 5050 5051\subsubsection{krb5\_auth\_con\_getsendsubkey\_k - Retrieve the send subkey from an auth context.} 5052\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey_k:krb5-auth-con-getsendsubkey-k-retrieve-the-send-subkey-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey_k::doc}}\index{krb5\_auth\_con\_getsendsubkey\_k (C function)} 5053 5054\begin{fulllineitems} 5055\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey_k:c.krb5_auth_con_getsendsubkey_k}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getsendsubkey\_k}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}} *\sphinxstyleemphasis{ key}}{} 5056\end{fulllineitems} 5057 5058\begin{quote}\begin{description} 5059\item[{param}] \leavevmode 5060\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 5061 5062\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 5063 5064\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Send subkey 5065 5066\end{description}\end{quote} 5067\begin{quote}\begin{description} 5068\item[{retval}] \leavevmode\begin{itemize} 5069\item {} 50700 Success; otherwise - Kerberos error codes 5071 5072\end{itemize} 5073 5074\end{description}\end{quote} 5075 5076This function sets \sphinxstyleemphasis{key} to the send subkey from \sphinxstyleemphasis{auth\_context} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_k_free_key:c.krb5_k_free_key}]{\sphinxcrossref{\sphinxcode{krb5\_k\_free\_key()}}}} to release \sphinxstyleemphasis{key} when it is no longer needed. 5077 5078 5079\subsubsection{krb5\_auth\_con\_init - Create and initialize an authentication context.} 5080\label{\detokenize{appdev/refs/api/krb5_auth_con_init:krb5-auth-con-init-create-and-initialize-an-authentication-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_init::doc}}\index{krb5\_auth\_con\_init (C function)} 5081 5082\begin{fulllineitems} 5083\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_init:c.krb5_auth_con_init}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_init}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}}{} 5084\end{fulllineitems} 5085 5086\begin{quote}\begin{description} 5087\item[{param}] \leavevmode 5088\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5089 5090\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{auth\_context} - Authentication context 5091 5092\end{description}\end{quote} 5093\begin{quote}\begin{description} 5094\item[{retval}] \leavevmode\begin{itemize} 5095\item {} 50960 Success; otherwise - Kerberos error codes 5097 5098\end{itemize} 5099 5100\end{description}\end{quote} 5101 5102This function creates an authentication context to hold configuration and state relevant to krb5 functions for authenticating principals and protecting messages once authentication has occurred. 5103 5104By default, flags for the context are set to enable the use of the replay cache ( {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} ), but not sequence numbers. Use {\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setflags:c.krb5_auth_con_setflags}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_setflags()}}}} to change the flags. 5105 5106The allocated \sphinxstyleemphasis{auth\_context} must be freed with {\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_free:c.krb5_auth_con_free}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_free()}}}} when it is no longer needed. 5107 5108 5109\subsubsection{krb5\_auth\_con\_set\_checksum\_func - Set a checksum callback in an auth context.} 5110\label{\detokenize{appdev/refs/api/krb5_auth_con_set_checksum_func:krb5-auth-con-set-checksum-func-set-a-checksum-callback-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_set_checksum_func::doc}}\index{krb5\_auth\_con\_set\_checksum\_func (C function)} 5111 5112\begin{fulllineitems} 5113\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_set_checksum_func:c.krb5_auth_con_set_checksum_func}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_set\_checksum\_func}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:c.krb5_mk_req_checksum_func}]{\sphinxcrossref{krb5\_mk\_req\_checksum\_func}}}\sphinxstyleemphasis{ func}, void *\sphinxstyleemphasis{ data}}{} 5114\end{fulllineitems} 5115 5116\begin{quote}\begin{description} 5117\item[{param}] \leavevmode 5118\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5119 5120\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5121 5122\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{func} - Checksum callback 5123 5124\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Callback argument 5125 5126\end{description}\end{quote} 5127\begin{quote}\begin{description} 5128\item[{retval}] \leavevmode\begin{itemize} 5129\item {} 51300 (always) 5131 5132\end{itemize} 5133 5134\end{description}\end{quote} 5135 5136Set a callback to obtain checksum data in {\hyperref[\detokenize{appdev/refs/api/krb5_mk_req:c.krb5_mk_req}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_req()}}}} . The callback will be invoked after the subkey and local sequence number are stored in \sphinxstyleemphasis{auth\_context} . 5137 5138 5139\subsubsection{krb5\_auth\_con\_set\_req\_cksumtype - Set checksum type in an an auth context.} 5140\label{\detokenize{appdev/refs/api/krb5_auth_con_set_req_cksumtype:krb5-auth-con-set-req-cksumtype-set-checksum-type-in-an-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_set_req_cksumtype::doc}}\index{krb5\_auth\_con\_set\_req\_cksumtype (C function)} 5141 5142\begin{fulllineitems} 5143\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_set_req_cksumtype:c.krb5_auth_con_set_req_cksumtype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_set\_req\_cksumtype}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}}{} 5144\end{fulllineitems} 5145 5146\begin{quote}\begin{description} 5147\item[{param}] \leavevmode 5148\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5149 5150\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5151 5152\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type 5153 5154\end{description}\end{quote} 5155\begin{quote}\begin{description} 5156\item[{retval}] \leavevmode\begin{itemize} 5157\item {} 51580 Success. Otherwise - Kerberos error codes 5159 5160\end{itemize} 5161 5162\end{description}\end{quote} 5163 5164This function sets the checksum type in \sphinxstyleemphasis{auth\_context} to be used by {\hyperref[\detokenize{appdev/refs/api/krb5_mk_req:c.krb5_mk_req}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_req()}}}} for the authenticator checksum. 5165 5166 5167\subsubsection{krb5\_auth\_con\_setaddrs - Set the local and remote addresses in an auth context.} 5168\label{\detokenize{appdev/refs/api/krb5_auth_con_setaddrs::doc}}\label{\detokenize{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)} 5169 5170\begin{fulllineitems} 5171\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setaddrs:c.krb5_auth_con_setaddrs}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setaddrs}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ local\_addr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ remote\_addr}}{} 5172\end{fulllineitems} 5173 5174\begin{quote}\begin{description} 5175\item[{param}] \leavevmode 5176\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5177 5178\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5179 5180\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{local\_addr} - Local address 5181 5182\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{remote\_addr} - Remote address 5183 5184\end{description}\end{quote} 5185\begin{quote}\begin{description} 5186\item[{retval}] \leavevmode\begin{itemize} 5187\item {} 51880 Success; otherwise - Kerberos error codes 5189 5190\end{itemize} 5191 5192\end{description}\end{quote} 5193 5194This function releases the storage assigned to the contents of the local and remote addresses of \sphinxstyleemphasis{auth\_context} and then sets them to \sphinxstyleemphasis{local\_addr} and \sphinxstyleemphasis{remote\_addr} respectively. 5195 5196 5197\sphinxstrong{See also:} 5198 5199 5200{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_genaddrs:c.krb5_auth_con_genaddrs}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_genaddrs()}}}} 5201 5202 5203 5204 5205\subsubsection{krb5\_auth\_con\_setflags - Set a flags field in a krb5\_auth\_context structure.} 5206\label{\detokenize{appdev/refs/api/krb5_auth_con_setflags:krb5-auth-con-setflags-set-a-flags-field-in-a-krb5-auth-context-structure}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setflags::doc}}\index{krb5\_auth\_con\_setflags (C function)} 5207 5208\begin{fulllineitems} 5209\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setflags:c.krb5_auth_con_setflags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setflags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}}\sphinxstyleemphasis{ flags}}{} 5210\end{fulllineitems} 5211 5212\begin{quote}\begin{description} 5213\item[{param}] \leavevmode 5214\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5215 5216\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5217 5218\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flags bit mask 5219 5220\end{description}\end{quote} 5221\begin{quote}\begin{description} 5222\item[{retval}] \leavevmode\begin{itemize} 5223\item {} 52240 (always) 5225 5226\end{itemize} 5227 5228\end{description}\end{quote} 5229 5230Valid values for \sphinxstyleemphasis{flags} are: 5231\begin{itemize} 5232\item {} 5233{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} Use timestamps 5234 5235\item {} 5236{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} Save timestamps 5237 5238\item {} 5239{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} Use sequence numbers 5240 5241\item {} 5242{\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} Save sequence numbers 5243 5244\end{itemize} 5245 5246 5247\subsubsection{krb5\_auth\_con\_setports - Set local and remote port fields in an auth context.} 5248\label{\detokenize{appdev/refs/api/krb5_auth_con_setports:krb5-auth-con-setports-set-local-and-remote-port-fields-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setports::doc}}\index{krb5\_auth\_con\_setports (C function)} 5249 5250\begin{fulllineitems} 5251\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setports:c.krb5_auth_con_setports}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setports}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ local\_port}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *\sphinxstyleemphasis{ remote\_port}}{} 5252\end{fulllineitems} 5253 5254\begin{quote}\begin{description} 5255\item[{param}] \leavevmode 5256\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5257 5258\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5259 5260\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{local\_port} - Local port 5261 5262\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{remote\_port} - Remote port 5263 5264\end{description}\end{quote} 5265\begin{quote}\begin{description} 5266\item[{retval}] \leavevmode\begin{itemize} 5267\item {} 52680 Success; otherwise - Kerberos error codes 5269 5270\end{itemize} 5271 5272\end{description}\end{quote} 5273 5274This function releases the storage assigned to the contents of the local and remote ports of \sphinxstyleemphasis{auth\_context} and then sets them to \sphinxstyleemphasis{local\_port} and \sphinxstyleemphasis{remote\_port} respectively. 5275 5276 5277\sphinxstrong{See also:} 5278 5279 5280{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_genaddrs:c.krb5_auth_con_genaddrs}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_genaddrs()}}}} 5281 5282 5283 5284 5285\subsubsection{krb5\_auth\_con\_setrcache - Set the replay cache in an auth context.} 5286\label{\detokenize{appdev/refs/api/krb5_auth_con_setrcache::doc}}\label{\detokenize{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)} 5287 5288\begin{fulllineitems} 5289\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setrcache:c.krb5_auth_con_setrcache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setrcache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}]{\sphinxcrossref{krb5\_rcache}}}\sphinxstyleemphasis{ rcache}}{} 5290\end{fulllineitems} 5291 5292\begin{quote}\begin{description} 5293\item[{param}] \leavevmode 5294\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5295 5296\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5297 5298\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rcache} - Replay cache haddle 5299 5300\end{description}\end{quote} 5301\begin{quote}\begin{description} 5302\item[{retval}] \leavevmode\begin{itemize} 5303\item {} 53040 Success; otherwise - Kerberos error codes 5305 5306\end{itemize} 5307 5308\end{description}\end{quote} 5309 5310This function sets the replay cache in \sphinxstyleemphasis{auth\_context} to \sphinxstyleemphasis{rcache} . \sphinxstyleemphasis{rcache} will be closed when \sphinxstyleemphasis{auth\_context} is freed, so the caller should relinquish that responsibility. 5311 5312 5313\subsubsection{krb5\_auth\_con\_setrecvsubkey - Set the receiving subkey in an auth context with a keyblock.} 5314\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey:krb5-auth-con-setrecvsubkey-set-the-receiving-subkey-in-an-auth-context-with-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey::doc}}\index{krb5\_auth\_con\_setrecvsubkey (C function)} 5315 5316\begin{fulllineitems} 5317\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey:c.krb5_auth_con_setrecvsubkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setrecvsubkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}}{} 5318\end{fulllineitems} 5319 5320\begin{quote}\begin{description} 5321\item[{param}] \leavevmode 5322\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 5323 5324\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 5325 5326\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} - Receiving subkey 5327 5328\end{description}\end{quote} 5329\begin{quote}\begin{description} 5330\item[{retval}] \leavevmode\begin{itemize} 5331\item {} 53320 Success; otherwise - Kerberos error codes 5333 5334\end{itemize} 5335 5336\end{description}\end{quote} 5337 5338This function sets the receiving subkey in \sphinxstyleemphasis{ac} to a copy of \sphinxstyleemphasis{keyblock} . 5339 5340 5341\subsubsection{krb5\_auth\_con\_setrecvsubkey\_k - Set the receiving subkey in an auth context.} 5342\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey_k::doc}}\label{\detokenize{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)} 5343 5344\begin{fulllineitems} 5345\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey_k:c.krb5_auth_con_setrecvsubkey_k}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setrecvsubkey\_k}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}}{} 5346\end{fulllineitems} 5347 5348\begin{quote}\begin{description} 5349\item[{param}] \leavevmode 5350\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 5351 5352\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 5353 5354\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Receiving subkey 5355 5356\end{description}\end{quote} 5357\begin{quote}\begin{description} 5358\item[{retval}] \leavevmode\begin{itemize} 5359\item {} 53600 Success; otherwise - Kerberos error codes 5361 5362\end{itemize} 5363 5364\end{description}\end{quote} 5365 5366This function sets the receiving subkey in \sphinxstyleemphasis{ac} to \sphinxstyleemphasis{key} , incrementing its reference count. 5367 5368\begin{sphinxadmonition}{note}{Note:} 5369New in 1.9 5370\end{sphinxadmonition} 5371 5372 5373\subsubsection{krb5\_auth\_con\_setsendsubkey - Set the send subkey in an auth context with a keyblock.} 5374\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey::doc}}\label{\detokenize{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)} 5375 5376\begin{fulllineitems} 5377\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey:c.krb5_auth_con_setsendsubkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setsendsubkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}}{} 5378\end{fulllineitems} 5379 5380\begin{quote}\begin{description} 5381\item[{param}] \leavevmode 5382\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 5383 5384\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 5385 5386\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} - Send subkey 5387 5388\end{description}\end{quote} 5389\begin{quote}\begin{description} 5390\item[{retval}] \leavevmode\begin{itemize} 5391\item {} 53920 Success. Otherwise - Kerberos error codes 5393 5394\end{itemize} 5395 5396\end{description}\end{quote} 5397 5398This function sets the send subkey in \sphinxstyleemphasis{ac} to a copy of \sphinxstyleemphasis{keyblock} . 5399 5400 5401\subsubsection{krb5\_auth\_con\_setsendsubkey\_k - Set the send subkey in an auth context.} 5402\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey_k:krb5-auth-con-setsendsubkey-k-set-the-send-subkey-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey_k::doc}}\index{krb5\_auth\_con\_setsendsubkey\_k (C function)} 5403 5404\begin{fulllineitems} 5405\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey_k:c.krb5_auth_con_setsendsubkey_k}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setsendsubkey\_k}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}}{} 5406\end{fulllineitems} 5407 5408\begin{quote}\begin{description} 5409\item[{param}] \leavevmode 5410\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 5411 5412\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} - Authentication context 5413 5414\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Send subkey 5415 5416\end{description}\end{quote} 5417\begin{quote}\begin{description} 5418\item[{retval}] \leavevmode\begin{itemize} 5419\item {} 54200 Success; otherwise - Kerberos error codes 5421 5422\end{itemize} 5423 5424\end{description}\end{quote} 5425 5426This function sets the send subkey in \sphinxstyleemphasis{ac} to \sphinxstyleemphasis{key} , incrementing its reference count. 5427 5428\begin{sphinxadmonition}{note}{Note:} 5429New in 1.9 5430\end{sphinxadmonition} 5431 5432 5433\subsubsection{krb5\_auth\_con\_setuseruserkey - Set the session key in an auth context.} 5434\label{\detokenize{appdev/refs/api/krb5_auth_con_setuseruserkey::doc}}\label{\detokenize{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)} 5435 5436\begin{fulllineitems} 5437\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setuseruserkey:c.krb5_auth_con_setuseruserkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_setuseruserkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}}{} 5438\end{fulllineitems} 5439 5440\begin{quote}\begin{description} 5441\item[{param}] \leavevmode 5442\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5443 5444\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 5445 5446\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} - User key 5447 5448\end{description}\end{quote} 5449\begin{quote}\begin{description} 5450\item[{retval}] \leavevmode\begin{itemize} 5451\item {} 54520 Success; otherwise - Kerberos error codes 5453 5454\end{itemize} 5455 5456\end{description}\end{quote} 5457 5458 5459\subsubsection{krb5\_cc\_cache\_match - Find a credential cache with a specified client principal.} 5460\label{\detokenize{appdev/refs/api/krb5_cc_cache_match:krb5-cc-cache-match-find-a-credential-cache-with-a-specified-client-principal}}\label{\detokenize{appdev/refs/api/krb5_cc_cache_match::doc}}\index{krb5\_cc\_cache\_match (C function)} 5461 5462\begin{fulllineitems} 5463\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_cache_match:c.krb5_cc_cache_match}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_cache\_match}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ cache\_out}}{} 5464\end{fulllineitems} 5465 5466\begin{quote}\begin{description} 5467\item[{param}] \leavevmode 5468\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5469 5470\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal 5471 5472\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cache\_out} - Credential cache handle 5473 5474\end{description}\end{quote} 5475\begin{quote}\begin{description} 5476\item[{retval}] \leavevmode\begin{itemize} 5477\item {} 54780 Success 5479 5480\item {} 5481KRB5\_CC\_NOTFOUND None 5482 5483\end{itemize} 5484 5485\end{description}\end{quote} 5486 5487Find a cache within the collection whose default principal is \sphinxstyleemphasis{client} . Use \sphinxstyleemphasis{krb5\_cc\_close} to close \sphinxstyleemphasis{ccache} when it is no longer needed. 5488 5489\begin{sphinxadmonition}{note}{Note:} 5490New in 1.10 5491\end{sphinxadmonition} 5492 5493 5494\subsubsection{krb5\_cc\_copy\_creds - Copy a credential cache.} 5495\label{\detokenize{appdev/refs/api/krb5_cc_copy_creds::doc}}\label{\detokenize{appdev/refs/api/krb5_cc_copy_creds:krb5-cc-copy-creds-copy-a-credential-cache}}\index{krb5\_cc\_copy\_creds (C function)} 5496 5497\begin{fulllineitems} 5498\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_copy_creds:c.krb5_cc_copy_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_copy\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ incc}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ outcc}}{} 5499\end{fulllineitems} 5500 5501\begin{quote}\begin{description} 5502\item[{param}] \leavevmode 5503\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5504 5505\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{incc} - Credential cache to be copied 5506 5507\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outcc} - Copy of credential cache to be filled in 5508 5509\end{description}\end{quote} 5510\begin{quote}\begin{description} 5511\item[{retval}] \leavevmode\begin{itemize} 5512\item {} 55130 Success; otherwise - Kerberos error codes 5514 5515\end{itemize} 5516 5517\end{description}\end{quote} 5518 5519 5520\subsubsection{krb5\_cc\_end\_seq\_get - Finish a series of sequential processing credential cache entries.} 5521\label{\detokenize{appdev/refs/api/krb5_cc_end_seq_get:krb5-cc-end-seq-get-finish-a-series-of-sequential-processing-credential-cache-entries}}\label{\detokenize{appdev/refs/api/krb5_cc_end_seq_get::doc}}\index{krb5\_cc\_end\_seq\_get (C function)} 5522 5523\begin{fulllineitems} 5524\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_end_seq_get:c.krb5_cc_end_seq_get}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_end\_seq\_get}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}]{\sphinxcrossref{krb5\_cc\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 5525\end{fulllineitems} 5526 5527\begin{quote}\begin{description} 5528\item[{param}] \leavevmode 5529\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5530 5531\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5532 5533\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} - Cursor 5534 5535\end{description}\end{quote} 5536\begin{quote}\begin{description} 5537\item[{retval}] \leavevmode\begin{itemize} 5538\item {} 55390 (always) 5540 5541\end{itemize} 5542 5543\end{description}\end{quote} 5544 5545This function finishes processing credential cache entries and invalidates \sphinxstyleemphasis{cursor} . 5546 5547 5548\sphinxstrong{See also:} 5549 5550 5551{\hyperref[\detokenize{appdev/refs/api/krb5_cc_start_seq_get:c.krb5_cc_start_seq_get}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_start\_seq\_get()}}}} , {\hyperref[\detokenize{appdev/refs/api/krb5_cc_next_cred:c.krb5_cc_next_cred}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_next\_cred()}}}} 5552 5553 5554 5555 5556\subsubsection{krb5\_cc\_get\_config - Get a configuration value from a credential cache.} 5557\label{\detokenize{appdev/refs/api/krb5_cc_get_config:krb5-cc-get-config-get-a-configuration-value-from-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_get_config::doc}}\index{krb5\_cc\_get\_config (C function)} 5558 5559\begin{fulllineitems} 5560\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_config:c.krb5_cc_get_config}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_get\_config}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ id}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, const char *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 5561\end{fulllineitems} 5562 5563\begin{quote}\begin{description} 5564\item[{param}] \leavevmode 5565\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5566 5567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} - Credential cache handle 5568 5569\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Configuration for this principal; if NULL, global for the whole cache 5570 5571\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Name of config variable 5572 5573\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} - Data to be fetched 5574 5575\end{description}\end{quote} 5576\begin{quote}\begin{description} 5577\item[{retval}] \leavevmode\begin{itemize} 5578\item {} 55790 Success 5580 5581\end{itemize} 5582 5583\item[{return}] \leavevmode\begin{itemize} 5584\item {} 5585Kerberos error codes 5586 5587\end{itemize} 5588 5589\end{description}\end{quote} 5590 5591Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{data} when it is no longer needed. 5592 5593 5594\subsubsection{krb5\_cc\_get\_flags - Retrieve flags from a credential cache structure.} 5595\label{\detokenize{appdev/refs/api/krb5_cc_get_flags:krb5-cc-get-flags-retrieve-flags-from-a-credential-cache-structure}}\label{\detokenize{appdev/refs/api/krb5_cc_get_flags::doc}}\index{krb5\_cc\_get\_flags (C function)} 5596 5597\begin{fulllineitems} 5598\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_flags:c.krb5_cc_get_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_get\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} *\sphinxstyleemphasis{ flags}}{} 5599\end{fulllineitems} 5600 5601\begin{quote}\begin{description} 5602\item[{param}] \leavevmode 5603\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5604 5605\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5606 5607\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} - Flag bit mask 5608 5609\end{description}\end{quote} 5610\begin{quote}\begin{description} 5611\item[{retval}] \leavevmode\begin{itemize} 5612\item {} 56130 Success; otherwise - Kerberos error codes 5614 5615\end{itemize} 5616 5617\end{description}\end{quote} 5618 5619\begin{sphinxadmonition}{warning}{Warning:} 5620For memory credential cache always returns a flag mask of 0. 5621\end{sphinxadmonition} 5622 5623 5624\subsubsection{krb5\_cc\_get\_full\_name - Retrieve the full name of a credential cache.} 5625\label{\detokenize{appdev/refs/api/krb5_cc_get_full_name::doc}}\label{\detokenize{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)} 5626 5627\begin{fulllineitems} 5628\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_full_name:c.krb5_cc_get_full_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_get\_full\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, char **\sphinxstyleemphasis{ fullname\_out}}{} 5629\end{fulllineitems} 5630 5631\begin{quote}\begin{description} 5632\item[{param}] \leavevmode 5633\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5634 5635\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5636 5637\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{fullname\_out} - Full name of cache 5638 5639\end{description}\end{quote} 5640 5641Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_string:c.krb5_free_string}]{\sphinxcrossref{\sphinxcode{krb5\_free\_string()}}}} to free \sphinxstyleemphasis{fullname\_out} when it is no longer needed. 5642 5643\begin{sphinxadmonition}{note}{Note:} 5644New in 1.10 5645\end{sphinxadmonition} 5646 5647 5648\subsubsection{krb5\_cc\_move - Move a credential cache.} 5649\label{\detokenize{appdev/refs/api/krb5_cc_move:krb5-cc-move-move-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_move::doc}}\index{krb5\_cc\_move (C function)} 5650 5651\begin{fulllineitems} 5652\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_move:c.krb5_cc_move}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_move}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ src}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ dst}}{} 5653\end{fulllineitems} 5654 5655\begin{quote}\begin{description} 5656\item[{param}] \leavevmode 5657\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5658 5659\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{src} - The credential cache to move the content from 5660 5661\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{dst} - The credential cache to move the content to 5662 5663\end{description}\end{quote} 5664\begin{quote}\begin{description} 5665\item[{retval}] \leavevmode\begin{itemize} 5666\item {} 56670 Success; src is closed. 5668 5669\end{itemize} 5670 5671\item[{return}] \leavevmode\begin{itemize} 5672\item {} 5673Kerberos error codes; src is still allocated. 5674 5675\end{itemize} 5676 5677\end{description}\end{quote} 5678 5679This function reinitializes \sphinxstyleemphasis{dst} and populates it with the credentials and default principal of \sphinxstyleemphasis{src} ; then, if successful, destroys \sphinxstyleemphasis{src} . 5680 5681 5682\subsubsection{krb5\_cc\_next\_cred - Retrieve the next entry from the credential cache.} 5683\label{\detokenize{appdev/refs/api/krb5_cc_next_cred::doc}}\label{\detokenize{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)} 5684 5685\begin{fulllineitems} 5686\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_next_cred:c.krb5_cc_next_cred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_next\_cred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}]{\sphinxcrossref{krb5\_cc\_cursor}}} *\sphinxstyleemphasis{ cursor}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}}{} 5687\end{fulllineitems} 5688 5689\begin{quote}\begin{description} 5690\item[{param}] \leavevmode 5691\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5692 5693\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5694 5695\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} - Cursor 5696 5697\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - Next credential cache entry 5698 5699\end{description}\end{quote} 5700\begin{quote}\begin{description} 5701\item[{retval}] \leavevmode\begin{itemize} 5702\item {} 57030 Success; otherwise - Kerberos error codes 5704 5705\end{itemize} 5706 5707\end{description}\end{quote} 5708 5709This function fills in \sphinxstyleemphasis{creds} with the next entry in \sphinxstyleemphasis{cache} and advances \sphinxstyleemphasis{cursor} . 5710 5711Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_cred_contents:c.krb5_free_cred_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_cred\_contents()}}}} to free \sphinxstyleemphasis{creds} when it is no longer needed. 5712 5713 5714\sphinxstrong{See also:} 5715 5716 5717{\hyperref[\detokenize{appdev/refs/api/krb5_cc_start_seq_get:c.krb5_cc_start_seq_get}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_start\_seq\_get()}}}} , krb5\_end\_seq\_get() 5718 5719 5720 5721 5722\subsubsection{krb5\_cc\_remove\_cred - Remove credentials from a credential cache.} 5723\label{\detokenize{appdev/refs/api/krb5_cc_remove_cred:krb5-cc-remove-cred-remove-credentials-from-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_remove_cred::doc}}\index{krb5\_cc\_remove\_cred (C function)} 5724 5725\begin{fulllineitems} 5726\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_remove_cred:c.krb5_cc_remove_cred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_remove\_cred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}}{} 5727\end{fulllineitems} 5728 5729\begin{quote}\begin{description} 5730\item[{param}] \leavevmode 5731\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5732 5733\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5734 5735\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Bitwise-ORed search flags 5736 5737\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Credentials to be matched 5738 5739\end{description}\end{quote} 5740\begin{quote}\begin{description} 5741\item[{retval}] \leavevmode\begin{itemize} 5742\item {} 5743KRB5\_CC\_NOSUPP Not implemented for this cache type 5744 5745\end{itemize} 5746 5747\item[{return}] \leavevmode\begin{itemize} 5748\item {} 5749No matches found; Data cannot be deleted; Kerberos error codes 5750 5751\end{itemize} 5752 5753\end{description}\end{quote} 5754 5755This function accepts the same flag values as {\hyperref[\detokenize{appdev/refs/api/krb5_cc_retrieve_cred:c.krb5_cc_retrieve_cred}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_retrieve\_cred()}}}} . 5756 5757\begin{sphinxadmonition}{warning}{Warning:} 5758This function is not implemented for some cache types. 5759\end{sphinxadmonition} 5760 5761 5762\subsubsection{krb5\_cc\_retrieve\_cred - Retrieve a specified credentials from a credential cache.} 5763\label{\detokenize{appdev/refs/api/krb5_cc_retrieve_cred:krb5-cc-retrieve-cred-retrieve-a-specified-credentials-from-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_retrieve_cred::doc}}\index{krb5\_cc\_retrieve\_cred (C function)} 5764 5765\begin{fulllineitems} 5766\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_retrieve_cred:c.krb5_cc_retrieve_cred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_retrieve\_cred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ mcreds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}}{} 5767\end{fulllineitems} 5768 5769\begin{quote}\begin{description} 5770\item[{param}] \leavevmode 5771\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5772 5773\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5774 5775\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flags bit mask 5776 5777\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{mcreds} - Credentials to match 5778 5779\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - Credentials matching the requested value 5780 5781\end{description}\end{quote} 5782\begin{quote}\begin{description} 5783\item[{retval}] \leavevmode\begin{itemize} 5784\item {} 57850 Success; otherwise - Kerberos error codes 5786 5787\end{itemize} 5788 5789\end{description}\end{quote} 5790 5791This function searches a credential cache for credentials matching \sphinxstyleemphasis{mcreds} and returns it if found. 5792 5793Valid values for \sphinxstyleemphasis{flags} are: 5794\begin{quote} 5795\begin{itemize} 5796\item {} 5797{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES:KRB5_TC_MATCH_TIMES}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_TIMES}}}} The requested lifetime must be at least as great as in \sphinxstyleemphasis{mcreds} . 5798 5799\item {} 5800{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:KRB5_TC_MATCH_IS_SKEY}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_IS\_SKEY}}}} The \sphinxstyleemphasis{is\_skey} field much match exactly. 5801 5802\item {} 5803{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:KRB5_TC_MATCH_FLAGS}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_FLAGS}}}} Flags set in \sphinxstyleemphasis{mcreds} must be set. 5804 5805\item {} 5806{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:KRB5_TC_MATCH_TIMES_EXACT}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_TIMES\_EXACT}}}} The requested lifetime must match exactly. 5807 5808\item {} 5809{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:KRB5_TC_MATCH_FLAGS_EXACT}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_FLAGS\_EXACT}}}} Flags must match exactly. 5810 5811\item {} 5812{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:KRB5_TC_MATCH_AUTHDATA}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_AUTHDATA}}}} The authorization data must match. 5813 5814\item {} 5815{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:KRB5_TC_MATCH_SRV_NAMEONLY}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}}}} Only the name portion of the principal name must match, not the realm. 5816 5817\item {} 5818{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:KRB5_TC_MATCH_2ND_TKT}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_2ND\_TKT}}}} The second tickets must match. 5819 5820\item {} 5821{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:KRB5_TC_MATCH_KTYPE}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_MATCH\_KTYPE}}}} The encryption key types must match. 5822 5823\item {} 5824{\hyperref[\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:KRB5_TC_SUPPORTED_KTYPES}]{\sphinxcrossref{\sphinxcode{KRB5\_TC\_SUPPORTED\_KTYPES}}}} Check all matching entries that have any supported encryption type and return the one with the encryption type listed earliest. 5825 5826\end{itemize} 5827 5828Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_cred_contents:c.krb5_free_cred_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_cred\_contents()}}}} to free \sphinxstyleemphasis{creds} when it is no longer needed. 5829\end{quote} 5830 5831 5832\subsubsection{krb5\_cc\_select - Select a credential cache to use with a server principal.} 5833\label{\detokenize{appdev/refs/api/krb5_cc_select::doc}}\label{\detokenize{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)} 5834 5835\begin{fulllineitems} 5836\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_select:c.krb5_cc_select}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_select}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ cache\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ princ\_out}}{} 5837\end{fulllineitems} 5838 5839\begin{quote}\begin{description} 5840\item[{param}] \leavevmode 5841\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5842 5843\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Server principal 5844 5845\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cache\_out} - Credential cache handle 5846 5847\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ\_out} - Client principal 5848 5849\end{description}\end{quote} 5850\begin{quote}\begin{description} 5851\item[{return}] \leavevmode\begin{itemize} 5852\item {} 5853If 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. 5854 5855\end{itemize} 5856 5857\end{description}\end{quote} 5858 5859Select a cache within the collection containing credentials most appropriate for use with \sphinxstyleemphasis{server} , according to configured rules and heuristics. 5860 5861Use {\hyperref[\detokenize{appdev/refs/api/krb5_cc_close:c.krb5_cc_close}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_close()}}}} to release \sphinxstyleemphasis{cache\_out} when it is no longer needed. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to release \sphinxstyleemphasis{princ\_out} when it is no longer needed. Note that \sphinxstyleemphasis{princ\_out} is set in some error conditions. 5862 5863If the appropriate client principal can be authoritatively determined but the cache collection contains no credentials for that principal, then KRB5\_CC\_NOTFOUND is returned, \sphinxstyleemphasis{cache\_out} is set to NULL, and \sphinxstyleemphasis{princ\_out} is set to the appropriate client principal. 5864 5865If no configured mechanism can determine the appropriate cache or principal, KRB5\_CC\_NOTFOUND is returned and \sphinxstyleemphasis{cache\_out} and \sphinxstyleemphasis{princ\_out} are set to NULL. 5866 5867Any other error code indicates a fatal error in the processing of a cache selection mechanism. 5868 5869\begin{sphinxadmonition}{note}{Note:} 5870New in 1.10 5871\end{sphinxadmonition} 5872 5873 5874\subsubsection{krb5\_cc\_set\_config - Store a configuration value in a credential cache.} 5875\label{\detokenize{appdev/refs/api/krb5_cc_set_config::doc}}\label{\detokenize{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)} 5876 5877\begin{fulllineitems} 5878\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_set_config:c.krb5_cc_set_config}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_set\_config}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ id}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, const char *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 5879\end{fulllineitems} 5880 5881\begin{quote}\begin{description} 5882\item[{param}] \leavevmode 5883\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5884 5885\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} - Credential cache handle 5886 5887\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Configuration for a specific principal; if NULL, global for the whole cache 5888 5889\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Name of config variable 5890 5891\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Data to store, or NULL to remove 5892 5893\end{description}\end{quote} 5894\begin{quote}\begin{description} 5895\item[{retval}] \leavevmode\begin{itemize} 5896\item {} 58970 Success 5898 5899\end{itemize} 5900 5901\item[{return}] \leavevmode\begin{itemize} 5902\item {} 5903Kerberos error codes 5904 5905\end{itemize} 5906 5907\end{description}\end{quote} 5908 5909\begin{sphinxadmonition}{warning}{Warning:} 5910Before version 1.10 \sphinxstyleemphasis{data} was assumed to be always non-null. 5911\end{sphinxadmonition} 5912 5913\begin{sphinxadmonition}{note}{Note:} 5914Existing configuration under the same key is over-written. 5915\end{sphinxadmonition} 5916 5917 5918\subsubsection{krb5\_cc\_set\_default\_name - Set the default credential cache name.} 5919\label{\detokenize{appdev/refs/api/krb5_cc_set_default_name:krb5-cc-set-default-name-set-the-default-credential-cache-name}}\label{\detokenize{appdev/refs/api/krb5_cc_set_default_name::doc}}\index{krb5\_cc\_set\_default\_name (C function)} 5920 5921\begin{fulllineitems} 5922\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_set_default_name:c.krb5_cc_set_default_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_set\_default\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ name}}{} 5923\end{fulllineitems} 5924 5925\begin{quote}\begin{description} 5926\item[{param}] \leavevmode 5927\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5928 5929\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} - Default credential cache name or NULL 5930 5931\end{description}\end{quote} 5932\begin{quote}\begin{description} 5933\item[{retval}] \leavevmode\begin{itemize} 5934\item {} 59350 Success 5936 5937\item {} 5938KV5M\_CONTEXT Bad magic number for \_krb5\_context structure 5939 5940\end{itemize} 5941 5942\item[{return}] \leavevmode\begin{itemize} 5943\item {} 5944Kerberos error codes 5945 5946\end{itemize} 5947 5948\end{description}\end{quote} 5949 5950Set the default credential cache name to \sphinxstyleemphasis{name} for future operations using \sphinxstyleemphasis{context} . If \sphinxstyleemphasis{name} is NULL, clear any previous application-set default name and forget any cached value of the default name for \sphinxstyleemphasis{context} . 5951 5952Calls to this function invalidate the result of any previous calls to {\hyperref[\detokenize{appdev/refs/api/krb5_cc_default_name:c.krb5_cc_default_name}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_default\_name()}}}} using \sphinxstyleemphasis{context} . 5953 5954 5955\subsubsection{krb5\_cc\_set\_flags - Set options flags on a credential cache.} 5956\label{\detokenize{appdev/refs/api/krb5_cc_set_flags:krb5-cc-set-flags-set-options-flags-on-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_set_flags::doc}}\index{krb5\_cc\_set\_flags (C function)} 5957 5958\begin{fulllineitems} 5959\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_set_flags:c.krb5_cc_set_flags}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_set\_flags}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ flags}}{} 5960\end{fulllineitems} 5961 5962\begin{quote}\begin{description} 5963\item[{param}] \leavevmode 5964\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5965 5966\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5967 5968\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Flag bit mask 5969 5970\end{description}\end{quote} 5971\begin{quote}\begin{description} 5972\item[{retval}] \leavevmode\begin{itemize} 5973\item {} 59740 Success; otherwise - Kerberos error codes 5975 5976\end{itemize} 5977 5978\end{description}\end{quote} 5979 5980This function resets \sphinxstyleemphasis{cache} flags to \sphinxstyleemphasis{flags} . 5981 5982 5983\subsubsection{krb5\_cc\_start\_seq\_get - Prepare to sequentially read every credential in a credential cache.} 5984\label{\detokenize{appdev/refs/api/krb5_cc_start_seq_get::doc}}\label{\detokenize{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)} 5985 5986\begin{fulllineitems} 5987\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_start_seq_get:c.krb5_cc_start_seq_get}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_start\_seq\_get}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}]{\sphinxcrossref{krb5\_cc\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 5988\end{fulllineitems} 5989 5990\begin{quote}\begin{description} 5991\item[{param}] \leavevmode 5992\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 5993 5994\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 5995 5996\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} - Cursor 5997 5998\end{description}\end{quote} 5999\begin{quote}\begin{description} 6000\item[{retval}] \leavevmode\begin{itemize} 6001\item {} 60020 Success; otherwise - Kerberos error codes 6003 6004\end{itemize} 6005 6006\end{description}\end{quote} 6007\begin{quote} 6008 6009{\hyperref[\detokenize{appdev/refs/api/krb5_cc_end_seq_get:c.krb5_cc_end_seq_get}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_end\_seq\_get()}}}} must be called to complete the retrieve operation. 6010\end{quote} 6011 6012\begin{sphinxadmonition}{note}{Note:} 6013If the cache represented by \sphinxstyleemphasis{cache} is modified between the time of the call to this function and the time of the final {\hyperref[\detokenize{appdev/refs/api/krb5_cc_end_seq_get:c.krb5_cc_end_seq_get}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_end\_seq\_get()}}}} , these changes may not be reflected in the results of {\hyperref[\detokenize{appdev/refs/api/krb5_cc_next_cred:c.krb5_cc_next_cred}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_next\_cred()}}}} calls. 6014\end{sphinxadmonition} 6015 6016 6017\subsubsection{krb5\_cc\_store\_cred - Store credentials in a credential cache.} 6018\label{\detokenize{appdev/refs/api/krb5_cc_store_cred:krb5-cc-store-cred-store-credentials-in-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_store_cred::doc}}\index{krb5\_cc\_store\_cred (C function)} 6019 6020\begin{fulllineitems} 6021\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_store_cred:c.krb5_cc_store_cred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_store\_cred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}}{} 6022\end{fulllineitems} 6023 6024\begin{quote}\begin{description} 6025\item[{param}] \leavevmode 6026\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6027 6028\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 6029 6030\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Credentials to be stored in cache 6031 6032\end{description}\end{quote} 6033\begin{quote}\begin{description} 6034\item[{retval}] \leavevmode\begin{itemize} 6035\item {} 60360 Success 6037 6038\end{itemize} 6039 6040\item[{return}] \leavevmode\begin{itemize} 6041\item {} 6042Permission errors; storage failure errors; Kerberos error codes 6043 6044\end{itemize} 6045 6046\end{description}\end{quote} 6047 6048This function stores \sphinxstyleemphasis{creds} into \sphinxstyleemphasis{cache} . If \sphinxstyleemphasis{creds-\textgreater{}server} and the server in the decoded ticket \sphinxstyleemphasis{creds-\textgreater{}ticket} differ, the credentials will be stored under both server principal names. 6049 6050 6051\subsubsection{krb5\_cc\_support\_switch - Determine whether a credential cache type supports switching.} 6052\label{\detokenize{appdev/refs/api/krb5_cc_support_switch::doc}}\label{\detokenize{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)} 6053 6054\begin{fulllineitems} 6055\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_support_switch:c.krb5_cc_support_switch}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_cc\_support\_switch}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ type}}{} 6056\end{fulllineitems} 6057 6058\begin{quote}\begin{description} 6059\item[{param}] \leavevmode 6060\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6061 6062\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - Credential cache type 6063 6064\end{description}\end{quote} 6065\begin{quote}\begin{description} 6066\item[{retval}] \leavevmode\begin{itemize} 6067\item {} 6068TRUE if type supports switching 6069 6070\item {} 6071FALSE if it does not or is not a valid credential cache type. 6072 6073\end{itemize} 6074 6075\end{description}\end{quote} 6076 6077\begin{sphinxadmonition}{note}{Note:} 6078New in 1.10 6079\end{sphinxadmonition} 6080 6081 6082\subsubsection{krb5\_cc\_switch - Make a credential cache the primary cache for its collection.} 6083\label{\detokenize{appdev/refs/api/krb5_cc_switch::doc}}\label{\detokenize{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)} 6084 6085\begin{fulllineitems} 6086\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_switch:c.krb5_cc_switch}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_switch}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ cache}}{} 6087\end{fulllineitems} 6088 6089\begin{quote}\begin{description} 6090\item[{param}] \leavevmode 6091\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6092 6093\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} - Credential cache handle 6094 6095\end{description}\end{quote} 6096\begin{quote}\begin{description} 6097\item[{retval}] \leavevmode\begin{itemize} 6098\item {} 60990 Success, or the type of cache doesn’t support switching 6100 6101\end{itemize} 6102 6103\item[{return}] \leavevmode\begin{itemize} 6104\item {} 6105Kerberos error codes 6106 6107\end{itemize} 6108 6109\end{description}\end{quote} 6110 6111If the type of \sphinxstyleemphasis{cache} supports it, set \sphinxstyleemphasis{cache} to be the primary credential cache for the collection it belongs to. 6112 6113 6114\subsubsection{krb5\_cccol\_cursor\_free - Free a credential cache collection cursor.} 6115\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_free::doc}}\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_free:krb5-cccol-cursor-free-free-a-credential-cache-collection-cursor}}\index{krb5\_cccol\_cursor\_free (C function)} 6116 6117\begin{fulllineitems} 6118\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_free:c.krb5_cccol_cursor_free}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cccol\_cursor\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}]{\sphinxcrossref{krb5\_cccol\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 6119\end{fulllineitems} 6120 6121\begin{quote}\begin{description} 6122\item[{param}] \leavevmode 6123\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6124 6125\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} - Cursor 6126 6127\end{description}\end{quote} 6128\begin{quote}\begin{description} 6129\item[{retval}] \leavevmode\begin{itemize} 6130\item {} 61310 Success; otherwise - Kerberos error codes 6132 6133\end{itemize} 6134 6135\end{description}\end{quote} 6136 6137 6138\sphinxstrong{See also:} 6139 6140 6141{\hyperref[\detokenize{appdev/refs/api/krb5_cccol_cursor_new:c.krb5_cccol_cursor_new}]{\sphinxcrossref{\sphinxcode{krb5\_cccol\_cursor\_new()}}}} , {\hyperref[\detokenize{appdev/refs/api/krb5_cccol_cursor_next:c.krb5_cccol_cursor_next}]{\sphinxcrossref{\sphinxcode{krb5\_cccol\_cursor\_next()}}}} 6142 6143 6144 6145 6146\subsubsection{krb5\_cccol\_cursor\_new - Prepare to iterate over the collection of known credential caches.} 6147\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_new::doc}}\label{\detokenize{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)} 6148 6149\begin{fulllineitems} 6150\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_new:c.krb5_cccol_cursor_new}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cccol\_cursor\_new}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}]{\sphinxcrossref{krb5\_cccol\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 6151\end{fulllineitems} 6152 6153\begin{quote}\begin{description} 6154\item[{param}] \leavevmode 6155\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6156 6157\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} - Cursor 6158 6159\end{description}\end{quote} 6160\begin{quote}\begin{description} 6161\item[{retval}] \leavevmode\begin{itemize} 6162\item {} 61630 Success; otherwise - Kerberos error codes 6164 6165\end{itemize} 6166 6167\end{description}\end{quote} 6168 6169Get a new cache iteration \sphinxstyleemphasis{cursor} that will iterate over all known credential caches independent of type. 6170 6171Use {\hyperref[\detokenize{appdev/refs/api/krb5_cccol_cursor_free:c.krb5_cccol_cursor_free}]{\sphinxcrossref{\sphinxcode{krb5\_cccol\_cursor\_free()}}}} to release \sphinxstyleemphasis{cursor} when it is no longer needed. 6172 6173 6174\sphinxstrong{See also:} 6175 6176 6177{\hyperref[\detokenize{appdev/refs/api/krb5_cccol_cursor_next:c.krb5_cccol_cursor_next}]{\sphinxcrossref{\sphinxcode{krb5\_cccol\_cursor\_next()}}}} 6178 6179 6180 6181 6182\subsubsection{krb5\_cccol\_cursor\_next - Get the next credential cache in the collection.} 6183\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_next::doc}}\label{\detokenize{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)} 6184 6185\begin{fulllineitems} 6186\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_next:c.krb5_cccol_cursor_next}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cccol\_cursor\_next}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}]{\sphinxcrossref{krb5\_cccol\_cursor}}}\sphinxstyleemphasis{ cursor}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ ccache}}{} 6187\end{fulllineitems} 6188 6189\begin{quote}\begin{description} 6190\item[{param}] \leavevmode 6191\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6192 6193\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} - Cursor 6194 6195\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ccache} - Credential cache handle 6196 6197\end{description}\end{quote} 6198\begin{quote}\begin{description} 6199\item[{retval}] \leavevmode\begin{itemize} 6200\item {} 62010 Success; otherwise - Kerberos error codes 6202 6203\end{itemize} 6204 6205\end{description}\end{quote} 6206 6207Use {\hyperref[\detokenize{appdev/refs/api/krb5_cc_close:c.krb5_cc_close}]{\sphinxcrossref{\sphinxcode{krb5\_cc\_close()}}}} to close \sphinxstyleemphasis{ccache} when it is no longer needed. 6208 6209 6210\sphinxstrong{See also:} 6211 6212 6213{\hyperref[\detokenize{appdev/refs/api/krb5_cccol_cursor_new:c.krb5_cccol_cursor_new}]{\sphinxcrossref{\sphinxcode{krb5\_cccol\_cursor\_new()}}}} , {\hyperref[\detokenize{appdev/refs/api/krb5_cccol_cursor_free:c.krb5_cccol_cursor_free}]{\sphinxcrossref{\sphinxcode{krb5\_cccol\_cursor\_free()}}}} 6214 6215 6216 6217\begin{sphinxadmonition}{note}{Note:} 6218When all caches are iterated over and the end of the list is reached, \sphinxstyleemphasis{ccache} is set to NULL. 6219\end{sphinxadmonition} 6220 6221 6222\subsubsection{krb5\_cccol\_have\_content - Check if the credential cache collection contains any credentials.} 6223\label{\detokenize{appdev/refs/api/krb5_cccol_have_content:krb5-cccol-have-content-check-if-the-credential-cache-collection-contains-any-credentials}}\label{\detokenize{appdev/refs/api/krb5_cccol_have_content::doc}}\index{krb5\_cccol\_have\_content (C function)} 6224 6225\begin{fulllineitems} 6226\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_have_content:c.krb5_cccol_have_content}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cccol\_have\_content}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}}{} 6227\end{fulllineitems} 6228 6229\begin{quote}\begin{description} 6230\item[{param}] \leavevmode 6231\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6232 6233\end{description}\end{quote} 6234\begin{quote}\begin{description} 6235\item[{retval}] \leavevmode\begin{itemize} 6236\item {} 62370 Credentials are available in the collection 6238 6239\item {} 6240KRB5\_CC\_NOTFOUND The collection contains no credentials 6241 6242\end{itemize} 6243 6244\end{description}\end{quote} 6245 6246\begin{sphinxadmonition}{note}{Note:} 6247New in 1.11 6248\end{sphinxadmonition} 6249 6250 6251\subsubsection{krb5\_clear\_error\_message - Clear the extended error message in a context.} 6252\label{\detokenize{appdev/refs/api/krb5_clear_error_message:krb5-clear-error-message-clear-the-extended-error-message-in-a-context}}\label{\detokenize{appdev/refs/api/krb5_clear_error_message::doc}}\index{krb5\_clear\_error\_message (C function)} 6253 6254\begin{fulllineitems} 6255\phantomsection\label{\detokenize{appdev/refs/api/krb5_clear_error_message:c.krb5_clear_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_clear\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}}{} 6256\end{fulllineitems} 6257 6258\begin{quote}\begin{description} 6259\item[{param}] \leavevmode 6260\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 6261 6262\end{description}\end{quote} 6263 6264This 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. 6265 6266 6267\subsubsection{krb5\_check\_clockskew - Check if a timestamp is within the allowed clock skew of the current time.} 6268\label{\detokenize{appdev/refs/api/krb5_check_clockskew:krb5-check-clockskew-check-if-a-timestamp-is-within-the-allowed-clock-skew-of-the-current-time}}\label{\detokenize{appdev/refs/api/krb5_check_clockskew::doc}}\index{krb5\_check\_clockskew (C function)} 6269 6270\begin{fulllineitems} 6271\phantomsection\label{\detokenize{appdev/refs/api/krb5_check_clockskew:c.krb5_check_clockskew}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_check\_clockskew}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ date}}{} 6272\end{fulllineitems} 6273 6274\begin{quote}\begin{description} 6275\item[{param}] \leavevmode 6276\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6277 6278\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{date} - Timestamp to check 6279 6280\end{description}\end{quote} 6281\begin{quote}\begin{description} 6282\item[{retval}] \leavevmode\begin{itemize} 6283\item {} 62840 Success 6285 6286\item {} 6287KRB5KRB\_AP\_ERR\_SKEW date is not within allowable clock skew 6288 6289\end{itemize} 6290 6291\end{description}\end{quote} 6292 6293This function checks if \sphinxstyleemphasis{date} is close enough to the current time according to the configured allowable clock skew. 6294 6295\begin{sphinxadmonition}{note}{Note:} 6296New in 1.10 6297\end{sphinxadmonition} 6298 6299 6300\subsubsection{krb5\_copy\_addresses - Copy an array of addresses.} 6301\label{\detokenize{appdev/refs/api/krb5_copy_addresses:krb5-copy-addresses-copy-an-array-of-addresses}}\label{\detokenize{appdev/refs/api/krb5_copy_addresses::doc}}\index{krb5\_copy\_addresses (C function)} 6302 6303\begin{fulllineitems} 6304\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_addresses:c.krb5_copy_addresses}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_addresses}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *const *\sphinxstyleemphasis{ inaddr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ***\sphinxstyleemphasis{ outaddr}}{} 6305\end{fulllineitems} 6306 6307\begin{quote}\begin{description} 6308\item[{param}] \leavevmode 6309\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6310 6311\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inaddr} - Array of addresses to be copied 6312 6313\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outaddr} - Copy of array of addresses 6314 6315\end{description}\end{quote} 6316\begin{quote}\begin{description} 6317\item[{retval}] \leavevmode\begin{itemize} 6318\item {} 63190 Success; otherwise - Kerberos error codes 6320 6321\end{itemize} 6322 6323\end{description}\end{quote} 6324 6325This function creates a new address array containing a copy of \sphinxstyleemphasis{inaddr} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_addresses:c.krb5_free_addresses}]{\sphinxcrossref{\sphinxcode{krb5\_free\_addresses()}}}} to free \sphinxstyleemphasis{outaddr} when it is no longer needed. 6326 6327 6328\subsubsection{krb5\_copy\_authdata - Copy an authorization data list.} 6329\label{\detokenize{appdev/refs/api/krb5_copy_authdata:krb5-copy-authdata-copy-an-authorization-data-list}}\label{\detokenize{appdev/refs/api/krb5_copy_authdata::doc}}\index{krb5\_copy\_authdata (C function)} 6330 6331\begin{fulllineitems} 6332\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_authdata:c.krb5_copy_authdata}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_authdata}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ in\_authdat}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ out}}{} 6333\end{fulllineitems} 6334 6335\begin{quote}\begin{description} 6336\item[{param}] \leavevmode 6337\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6338 6339\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_authdat} - List of \sphinxstyleemphasis{krb5\_authdata} structures 6340 6341\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - New array of \sphinxstyleemphasis{krb5\_authdata} structures 6342 6343\end{description}\end{quote} 6344\begin{quote}\begin{description} 6345\item[{retval}] \leavevmode\begin{itemize} 6346\item {} 63470 Success; otherwise - Kerberos error codes 6348 6349\end{itemize} 6350 6351\end{description}\end{quote} 6352 6353This function creates a new authorization data list containing a copy of \sphinxstyleemphasis{in\_authdat} , which must be null-terminated. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_authdata:c.krb5_free_authdata}]{\sphinxcrossref{\sphinxcode{krb5\_free\_authdata()}}}} to free \sphinxstyleemphasis{out} when it is no longer needed. 6354 6355\begin{sphinxadmonition}{note}{Note:} 6356The last array entry in \sphinxstyleemphasis{in\_authdat} must be a NULL pointer. 6357\end{sphinxadmonition} 6358 6359 6360\subsubsection{krb5\_copy\_authenticator - Copy a krb5\_authenticator structure.} 6361\label{\detokenize{appdev/refs/api/krb5_copy_authenticator:krb5-copy-authenticator-copy-a-krb5-authenticator-structure}}\label{\detokenize{appdev/refs/api/krb5_copy_authenticator::doc}}\index{krb5\_copy\_authenticator (C function)} 6362 6363\begin{fulllineitems} 6364\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_authenticator:c.krb5_copy_authenticator}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_authenticator}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{krb5\_authenticator}}} *\sphinxstyleemphasis{ authfrom}, {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{krb5\_authenticator}}} **\sphinxstyleemphasis{ authto}}{} 6365\end{fulllineitems} 6366 6367\begin{quote}\begin{description} 6368\item[{param}] \leavevmode 6369\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6370 6371\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authfrom} - krb5\_authenticator structure to be copied 6372 6373\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authto} - Copy of krb5\_authenticator structure 6374 6375\end{description}\end{quote} 6376\begin{quote}\begin{description} 6377\item[{retval}] \leavevmode\begin{itemize} 6378\item {} 63790 Success; otherwise - Kerberos error codes 6380 6381\end{itemize} 6382 6383\end{description}\end{quote} 6384 6385This function creates a new krb5\_authenticator structure with the content of \sphinxstyleemphasis{authfrom} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_authenticator:c.krb5_free_authenticator}]{\sphinxcrossref{\sphinxcode{krb5\_free\_authenticator()}}}} to free \sphinxstyleemphasis{authto} when it is no longer needed. 6386 6387 6388\subsubsection{krb5\_copy\_checksum - Copy a krb5\_checksum structure.} 6389\label{\detokenize{appdev/refs/api/krb5_copy_checksum:krb5-copy-checksum-copy-a-krb5-checksum-structure}}\label{\detokenize{appdev/refs/api/krb5_copy_checksum::doc}}\index{krb5\_copy\_checksum (C function)} 6390 6391\begin{fulllineitems} 6392\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_checksum:c.krb5_copy_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ ckfrom}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} **\sphinxstyleemphasis{ ckto}}{} 6393\end{fulllineitems} 6394 6395\begin{quote}\begin{description} 6396\item[{param}] \leavevmode 6397\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6398 6399\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ckfrom} - Checksum to be copied 6400 6401\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ckto} - Copy of krb5\_checksum structure 6402 6403\end{description}\end{quote} 6404\begin{quote}\begin{description} 6405\item[{retval}] \leavevmode\begin{itemize} 6406\item {} 64070 Success; otherwise - Kerberos error codes 6408 6409\end{itemize} 6410 6411\end{description}\end{quote} 6412 6413This function creates a new krb5\_checksum structure with the contents of \sphinxstyleemphasis{ckfrom} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_checksum:c.krb5_free_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_free\_checksum()}}}} to free \sphinxstyleemphasis{ckto} when it is no longer needed. 6414 6415 6416\subsubsection{krb5\_copy\_context - Copy a krb5\_context structure.} 6417\label{\detokenize{appdev/refs/api/krb5_copy_context:krb5-copy-context-copy-a-krb5-context-structure}}\label{\detokenize{appdev/refs/api/krb5_copy_context::doc}}\index{krb5\_copy\_context (C function)} 6418 6419\begin{fulllineitems} 6420\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_context:c.krb5_copy_context}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_context}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}} *\sphinxstyleemphasis{ nctx\_out}}{} 6421\end{fulllineitems} 6422 6423\begin{quote}\begin{description} 6424\item[{param}] \leavevmode 6425\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 6426 6427\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{nctx\_out} - New context structure 6428 6429\end{description}\end{quote} 6430\begin{quote}\begin{description} 6431\item[{retval}] \leavevmode\begin{itemize} 6432\item {} 64330 Success 6434 6435\end{itemize} 6436 6437\item[{return}] \leavevmode\begin{itemize} 6438\item {} 6439Kerberos error codes 6440 6441\end{itemize} 6442 6443\end{description}\end{quote} 6444 6445The newly created context must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_context:c.krb5_free_context}]{\sphinxcrossref{\sphinxcode{krb5\_free\_context()}}}} when it is no longer needed. 6446 6447 6448\subsubsection{krb5\_copy\_creds - Copy a krb5\_creds structure.} 6449\label{\detokenize{appdev/refs/api/krb5_copy_creds:krb5-copy-creds-copy-a-krb5-creds-structure}}\label{\detokenize{appdev/refs/api/krb5_copy_creds::doc}}\index{krb5\_copy\_creds (C function)} 6450 6451\begin{fulllineitems} 6452\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_creds:c.krb5_copy_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ incred}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ outcred}}{} 6453\end{fulllineitems} 6454 6455\begin{quote}\begin{description} 6456\item[{param}] \leavevmode 6457\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6458 6459\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{incred} - Credentials structure to be copied 6460 6461\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outcred} - Copy of \sphinxstyleemphasis{incred} 6462 6463\end{description}\end{quote} 6464\begin{quote}\begin{description} 6465\item[{retval}] \leavevmode\begin{itemize} 6466\item {} 64670 Success; otherwise - Kerberos error codes 6468 6469\end{itemize} 6470 6471\end{description}\end{quote} 6472 6473This function creates a new credential with the contents of \sphinxstyleemphasis{incred} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_creds:c.krb5_free_creds}]{\sphinxcrossref{\sphinxcode{krb5\_free\_creds()}}}} to free \sphinxstyleemphasis{outcred} when it is no longer needed. 6474 6475 6476\subsubsection{krb5\_copy\_data - Copy a krb5\_data object.} 6477\label{\detokenize{appdev/refs/api/krb5_copy_data:krb5-copy-data-copy-a-krb5-data-object}}\label{\detokenize{appdev/refs/api/krb5_copy_data::doc}}\index{krb5\_copy\_data (C function)} 6478 6479\begin{fulllineitems} 6480\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_data:c.krb5_copy_data}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_data}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ indata}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} **\sphinxstyleemphasis{ outdata}}{} 6481\end{fulllineitems} 6482 6483\begin{quote}\begin{description} 6484\item[{param}] \leavevmode 6485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6486 6487\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{indata} - Data object to be copied 6488 6489\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outdata} - Copy of \sphinxstyleemphasis{indata} 6490 6491\end{description}\end{quote} 6492\begin{quote}\begin{description} 6493\item[{retval}] \leavevmode\begin{itemize} 6494\item {} 64950 Success; otherwise - Kerberos error codes 6496 6497\end{itemize} 6498 6499\end{description}\end{quote} 6500 6501This function creates a new krb5\_data object with the contents of \sphinxstyleemphasis{indata} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data:c.krb5_free_data}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data()}}}} to free \sphinxstyleemphasis{outdata} when it is no longer needed. 6502 6503 6504\subsubsection{krb5\_copy\_error\_message - Copy the most recent extended error message from one context to another.} 6505\label{\detokenize{appdev/refs/api/krb5_copy_error_message:krb5-copy-error-message-copy-the-most-recent-extended-error-message-from-one-context-to-another}}\label{\detokenize{appdev/refs/api/krb5_copy_error_message::doc}}\index{krb5\_copy\_error\_message (C function)} 6506 6507\begin{fulllineitems} 6508\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_error_message:c.krb5_copy_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_copy\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ dest\_ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ src\_ctx}}{} 6509\end{fulllineitems} 6510 6511\begin{quote}\begin{description} 6512\item[{param}] \leavevmode 6513\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{dest\_ctx} - Library context to copy message to 6514 6515\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{src\_ctx} - Library context with current message 6516 6517\end{description}\end{quote} 6518 6519 6520\subsubsection{krb5\_copy\_keyblock - Copy a keyblock.} 6521\label{\detokenize{appdev/refs/api/krb5_copy_keyblock:krb5-copy-keyblock-copy-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_copy_keyblock::doc}}\index{krb5\_copy\_keyblock (C function)} 6522 6523\begin{fulllineitems} 6524\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_keyblock:c.krb5_copy_keyblock}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_keyblock}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ from}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ to}}{} 6525\end{fulllineitems} 6526 6527\begin{quote}\begin{description} 6528\item[{param}] \leavevmode 6529\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6530 6531\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{from} - Keyblock to be copied 6532 6533\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{to} - Copy of keyblock \sphinxstyleemphasis{from} 6534 6535\end{description}\end{quote} 6536\begin{quote}\begin{description} 6537\item[{retval}] \leavevmode\begin{itemize} 6538\item {} 65390 Success; otherwise - Kerberos error codes 6540 6541\end{itemize} 6542 6543\end{description}\end{quote} 6544 6545This function creates a new keyblock with the same contents as \sphinxstyleemphasis{from} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock()}}}} to free \sphinxstyleemphasis{to} when it is no longer needed. 6546 6547 6548\subsubsection{krb5\_copy\_keyblock\_contents - Copy the contents of a keyblock.} 6549\label{\detokenize{appdev/refs/api/krb5_copy_keyblock_contents:krb5-copy-keyblock-contents-copy-the-contents-of-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_copy_keyblock_contents::doc}}\index{krb5\_copy\_keyblock\_contents (C function)} 6550 6551\begin{fulllineitems} 6552\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_keyblock_contents:c.krb5_copy_keyblock_contents}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_keyblock\_contents}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ from}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ to}}{} 6553\end{fulllineitems} 6554 6555\begin{quote}\begin{description} 6556\item[{param}] \leavevmode 6557\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6558 6559\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{from} - Key to be copied 6560 6561\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{to} - Output key 6562 6563\end{description}\end{quote} 6564\begin{quote}\begin{description} 6565\item[{retval}] \leavevmode\begin{itemize} 6566\item {} 65670 Success; otherwise - Kerberos error codes 6568 6569\end{itemize} 6570 6571\end{description}\end{quote} 6572 6573This function copies the contents of \sphinxstyleemphasis{from} to \sphinxstyleemphasis{to} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock_contents:c.krb5_free_keyblock_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock\_contents()}}}} to free \sphinxstyleemphasis{to} when it is no longer needed. 6574 6575 6576\subsubsection{krb5\_copy\_principal - Copy a principal.} 6577\label{\detokenize{appdev/refs/api/krb5_copy_principal:krb5-copy-principal-copy-a-principal}}\label{\detokenize{appdev/refs/api/krb5_copy_principal::doc}}\index{krb5\_copy\_principal (C function)} 6578 6579\begin{fulllineitems} 6580\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_principal:c.krb5_copy_principal}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_principal}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ inprinc}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} *\sphinxstyleemphasis{ outprinc}}{} 6581\end{fulllineitems} 6582 6583\begin{quote}\begin{description} 6584\item[{param}] \leavevmode 6585\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6586 6587\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inprinc} - Principal to be copied 6588 6589\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outprinc} - Copy of \sphinxstyleemphasis{inprinc} 6590 6591\end{description}\end{quote} 6592\begin{quote}\begin{description} 6593\item[{retval}] \leavevmode\begin{itemize} 6594\item {} 65950 Success; otherwise - Kerberos error codes 6596 6597\end{itemize} 6598 6599\end{description}\end{quote} 6600 6601This function creates a new principal structure with the contents of \sphinxstyleemphasis{inprinc} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{krb5\_free\_principal()}}}} to free \sphinxstyleemphasis{outprinc} when it is no longer needed. 6602 6603 6604\subsubsection{krb5\_copy\_ticket - Copy a krb5\_ticket structure.} 6605\label{\detokenize{appdev/refs/api/krb5_copy_ticket:krb5-copy-ticket-copy-a-krb5-ticket-structure}}\label{\detokenize{appdev/refs/api/krb5_copy_ticket::doc}}\index{krb5\_copy\_ticket (C function)} 6606 6607\begin{fulllineitems} 6608\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_ticket:c.krb5_copy_ticket}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_copy\_ticket}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} *\sphinxstyleemphasis{ from}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} **\sphinxstyleemphasis{ pto}}{} 6609\end{fulllineitems} 6610 6611\begin{quote}\begin{description} 6612\item[{param}] \leavevmode 6613\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6614 6615\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{from} - Ticket to be copied 6616 6617\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pto} - Copy of ticket 6618 6619\end{description}\end{quote} 6620\begin{quote}\begin{description} 6621\item[{retval}] \leavevmode\begin{itemize} 6622\item {} 66230 Success; otherwise - Kerberos error codes 6624 6625\end{itemize} 6626 6627\end{description}\end{quote} 6628 6629This function creates a new krb5\_ticket structure containing the contents of \sphinxstyleemphasis{from} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_ticket:c.krb5_free_ticket}]{\sphinxcrossref{\sphinxcode{krb5\_free\_ticket()}}}} to free \sphinxstyleemphasis{pto} when it is no longer needed. 6630 6631 6632\subsubsection{krb5\_find\_authdata - Find authorization data elements.} 6633\label{\detokenize{appdev/refs/api/krb5_find_authdata:krb5-find-authdata-find-authorization-data-elements}}\label{\detokenize{appdev/refs/api/krb5_find_authdata::doc}}\index{krb5\_find\_authdata (C function)} 6634 6635\begin{fulllineitems} 6636\phantomsection\label{\detokenize{appdev/refs/api/krb5_find_authdata:c.krb5_find_authdata}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_find\_authdata}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ ticket\_authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ ap\_req\_authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{krb5\_authdatatype}}}\sphinxstyleemphasis{ ad\_type}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ results}}{} 6637\end{fulllineitems} 6638 6639\begin{quote}\begin{description} 6640\item[{param}] \leavevmode 6641\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6642 6643\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ticket\_authdata} - Authorization data list from ticket 6644 6645\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_authdata} - Authorization data list from AP request 6646 6647\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ad\_type} - Authorization data type to find 6648 6649\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{results} - List of matching entries 6650 6651\end{description}\end{quote} 6652 6653This function searches \sphinxstyleemphasis{ticket\_authdata} and \sphinxstyleemphasis{ap\_req\_authdata} for elements of type \sphinxstyleemphasis{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[\detokenize{appdev/refs/api/krb5_free_authdata:c.krb5_free_authdata}]{\sphinxcrossref{\sphinxcode{krb5\_free\_authdata()}}}} to free \sphinxstyleemphasis{results} when it is no longer needed. 6654 6655\begin{sphinxadmonition}{note}{Note:} 6656New in 1.10 6657\end{sphinxadmonition} 6658 6659 6660\subsubsection{krb5\_free\_addresses - Free the data stored in array of addresses.} 6661\label{\detokenize{appdev/refs/api/krb5_free_addresses:krb5-free-addresses-free-the-data-stored-in-array-of-addresses}}\label{\detokenize{appdev/refs/api/krb5_free_addresses::doc}}\index{krb5\_free\_addresses (C function)} 6662 6663\begin{fulllineitems} 6664\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_addresses:c.krb5_free_addresses}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_addresses}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} **\sphinxstyleemphasis{ val}}{} 6665\end{fulllineitems} 6666 6667\begin{quote}\begin{description} 6668\item[{param}] \leavevmode 6669\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6670 6671\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Array of addresses to be freed 6672 6673\end{description}\end{quote} 6674 6675This function frees the contents of \sphinxstyleemphasis{val} and the array itself. 6676 6677\begin{sphinxadmonition}{note}{Note:} 6678The last entry in the array must be a NULL pointer. 6679\end{sphinxadmonition} 6680 6681 6682\subsubsection{krb5\_free\_ap\_rep\_enc\_part - Free a krb5\_ap\_rep\_enc\_part structure.} 6683\label{\detokenize{appdev/refs/api/krb5_free_ap_rep_enc_part:krb5-free-ap-rep-enc-part-free-a-krb5-ap-rep-enc-part-structure}}\label{\detokenize{appdev/refs/api/krb5_free_ap_rep_enc_part::doc}}\index{krb5\_free\_ap\_rep\_enc\_part (C function)} 6684 6685\begin{fulllineitems} 6686\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_ap_rep_enc_part:c.krb5_free_ap_rep_enc_part}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_ap\_rep\_enc\_part}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{krb5\_ap\_rep\_enc\_part}}} *\sphinxstyleemphasis{ val}}{} 6687\end{fulllineitems} 6688 6689\begin{quote}\begin{description} 6690\item[{param}] \leavevmode 6691\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6692 6693\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - AP-REP enc part to be freed 6694 6695\end{description}\end{quote} 6696 6697This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6698 6699 6700\subsubsection{krb5\_free\_authdata - Free the storage assigned to array of authentication data.} 6701\label{\detokenize{appdev/refs/api/krb5_free_authdata::doc}}\label{\detokenize{appdev/refs/api/krb5_free_authdata:krb5-free-authdata-free-the-storage-assigned-to-array-of-authentication-data}}\index{krb5\_free\_authdata (C function)} 6702 6703\begin{fulllineitems} 6704\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_authdata:c.krb5_free_authdata}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_authdata}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} **\sphinxstyleemphasis{ val}}{} 6705\end{fulllineitems} 6706 6707\begin{quote}\begin{description} 6708\item[{param}] \leavevmode 6709\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6710 6711\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Array of authentication data to be freed 6712 6713\end{description}\end{quote} 6714 6715This function frees the contents of \sphinxstyleemphasis{val} and the array itself. 6716 6717\begin{sphinxadmonition}{note}{Note:} 6718The last entry in the array must be a NULL pointer. 6719\end{sphinxadmonition} 6720 6721 6722\subsubsection{krb5\_free\_authenticator - Free a krb5\_authenticator structure.} 6723\label{\detokenize{appdev/refs/api/krb5_free_authenticator:krb5-free-authenticator-free-a-krb5-authenticator-structure}}\label{\detokenize{appdev/refs/api/krb5_free_authenticator::doc}}\index{krb5\_free\_authenticator (C function)} 6724 6725\begin{fulllineitems} 6726\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_authenticator:c.krb5_free_authenticator}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_authenticator}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{krb5\_authenticator}}} *\sphinxstyleemphasis{ val}}{} 6727\end{fulllineitems} 6728 6729\begin{quote}\begin{description} 6730\item[{param}] \leavevmode 6731\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6732 6733\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Authenticator structure to be freed 6734 6735\end{description}\end{quote} 6736 6737This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6738 6739 6740\subsubsection{krb5\_free\_cred\_contents - Free the contents of a krb5\_creds structure.} 6741\label{\detokenize{appdev/refs/api/krb5_free_cred_contents::doc}}\label{\detokenize{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)} 6742 6743\begin{fulllineitems} 6744\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_cred_contents:c.krb5_free_cred_contents}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_cred\_contents}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ val}}{} 6745\end{fulllineitems} 6746 6747\begin{quote}\begin{description} 6748\item[{param}] \leavevmode 6749\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6750 6751\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Credential structure to free contents of 6752 6753\end{description}\end{quote} 6754 6755This function frees the contents of \sphinxstyleemphasis{val} , but not the structure itself. 6756 6757 6758\subsubsection{krb5\_free\_creds - Free a krb5\_creds structure.} 6759\label{\detokenize{appdev/refs/api/krb5_free_creds::doc}}\label{\detokenize{appdev/refs/api/krb5_free_creds:krb5-free-creds-free-a-krb5-creds-structure}}\index{krb5\_free\_creds (C function)} 6760 6761\begin{fulllineitems} 6762\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_creds:c.krb5_free_creds}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ val}}{} 6763\end{fulllineitems} 6764 6765\begin{quote}\begin{description} 6766\item[{param}] \leavevmode 6767\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6768 6769\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Credential structure to be freed. 6770 6771\end{description}\end{quote} 6772 6773This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6774 6775 6776\subsubsection{krb5\_free\_data - Free a krb5\_data structure.} 6777\label{\detokenize{appdev/refs/api/krb5_free_data:krb5-free-data-free-a-krb5-data-structure}}\label{\detokenize{appdev/refs/api/krb5_free_data::doc}}\index{krb5\_free\_data (C function)} 6778 6779\begin{fulllineitems} 6780\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_data:c.krb5_free_data}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_data}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ val}}{} 6781\end{fulllineitems} 6782 6783\begin{quote}\begin{description} 6784\item[{param}] \leavevmode 6785\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6786 6787\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Data structure to be freed 6788 6789\end{description}\end{quote} 6790 6791This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6792 6793 6794\subsubsection{krb5\_free\_data\_contents - Free the contents of a krb5\_data structure and zero the data field.} 6795\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_free_data_contents::doc}}\index{krb5\_free\_data\_contents (C function)} 6796 6797\begin{fulllineitems} 6798\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_data\_contents}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ val}}{} 6799\end{fulllineitems} 6800 6801\begin{quote}\begin{description} 6802\item[{param}] \leavevmode 6803\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6804 6805\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Data structure to free contents of 6806 6807\end{description}\end{quote} 6808 6809This function frees the contents of \sphinxstyleemphasis{val} , but not the structure itself. 6810 6811 6812\subsubsection{krb5\_free\_default\_realm - Free a default realm string returned by krb5\_get\_default\_realm() .} 6813\label{\detokenize{appdev/refs/api/krb5_free_default_realm:krb5-free-default-realm-free-a-default-realm-string-returned-by-krb5-get-default-realm}}\label{\detokenize{appdev/refs/api/krb5_free_default_realm::doc}}\index{krb5\_free\_default\_realm (C function)} 6814 6815\begin{fulllineitems} 6816\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_default_realm:c.krb5_free_default_realm}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_default\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, char *\sphinxstyleemphasis{ lrealm}}{} 6817\end{fulllineitems} 6818 6819\begin{quote}\begin{description} 6820\item[{param}] \leavevmode 6821\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6822 6823\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{lrealm} - Realm to be freed 6824 6825\end{description}\end{quote} 6826 6827 6828\subsubsection{krb5\_free\_enctypes - Free an array of encryption types.} 6829\label{\detokenize{appdev/refs/api/krb5_free_enctypes::doc}}\label{\detokenize{appdev/refs/api/krb5_free_enctypes:krb5-free-enctypes-free-an-array-of-encryption-types}}\index{krb5\_free\_enctypes (C function)} 6830 6831\begin{fulllineitems} 6832\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_enctypes:c.krb5_free_enctypes}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_enctypes}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ val}}{} 6833\end{fulllineitems} 6834 6835\begin{quote}\begin{description} 6836\item[{param}] \leavevmode 6837\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6838 6839\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Array of enctypes to be freed 6840 6841\end{description}\end{quote} 6842 6843\begin{sphinxadmonition}{note}{Note:} 6844New in 1.12 6845\end{sphinxadmonition} 6846 6847 6848\subsubsection{krb5\_free\_error - Free an error allocated by krb5\_read\_error() or krb5\_sendauth() .} 6849\label{\detokenize{appdev/refs/api/krb5_free_error::doc}}\label{\detokenize{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)} 6850 6851\begin{fulllineitems} 6852\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_error:c.krb5_free_error}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_error}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{krb5\_error}}} *\sphinxstyleemphasis{ val}}{} 6853\end{fulllineitems} 6854 6855\begin{quote}\begin{description} 6856\item[{param}] \leavevmode 6857\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6858 6859\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Error data structure to be freed 6860 6861\end{description}\end{quote} 6862 6863This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6864 6865 6866\subsubsection{krb5\_free\_host\_realm - Free the memory allocated by krb5\_get\_host\_realm() .} 6867\label{\detokenize{appdev/refs/api/krb5_free_host_realm::doc}}\label{\detokenize{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)} 6868 6869\begin{fulllineitems} 6870\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_host_realm:c.krb5_free_host_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_free\_host\_realm}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, char *const *\sphinxstyleemphasis{ realmlist}}{} 6871\end{fulllineitems} 6872 6873\begin{quote}\begin{description} 6874\item[{param}] \leavevmode 6875\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6876 6877\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realmlist} - List of realm names to be released 6878 6879\end{description}\end{quote} 6880\begin{quote}\begin{description} 6881\item[{retval}] \leavevmode\begin{itemize} 6882\item {} 68830 Success 6884 6885\end{itemize} 6886 6887\item[{return}] \leavevmode\begin{itemize} 6888\item {} 6889Kerberos error codes 6890 6891\end{itemize} 6892 6893\end{description}\end{quote} 6894 6895 6896\subsubsection{krb5\_free\_keyblock - Free a krb5\_keyblock structure.} 6897\label{\detokenize{appdev/refs/api/krb5_free_keyblock:krb5-free-keyblock-free-a-krb5-keyblock-structure}}\label{\detokenize{appdev/refs/api/krb5_free_keyblock::doc}}\index{krb5\_free\_keyblock (C function)} 6898 6899\begin{fulllineitems} 6900\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_keyblock}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ val}}{} 6901\end{fulllineitems} 6902 6903\begin{quote}\begin{description} 6904\item[{param}] \leavevmode 6905\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6906 6907\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Keyblock to be freed 6908 6909\end{description}\end{quote} 6910 6911This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6912 6913 6914\subsubsection{krb5\_free\_keyblock\_contents - Free the contents of a krb5\_keyblock structure.} 6915\label{\detokenize{appdev/refs/api/krb5_free_keyblock_contents::doc}}\label{\detokenize{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)} 6916 6917\begin{fulllineitems} 6918\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_keyblock_contents:c.krb5_free_keyblock_contents}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_keyblock\_contents}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}}{} 6919\end{fulllineitems} 6920 6921\begin{quote}\begin{description} 6922\item[{param}] \leavevmode 6923\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6924 6925\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Keyblock to be freed 6926 6927\end{description}\end{quote} 6928 6929This function frees the contents of \sphinxstyleemphasis{key} , but not the structure itself. 6930 6931 6932\subsubsection{krb5\_free\_keytab\_entry\_contents - Free the contents of a key table entry.} 6933\label{\detokenize{appdev/refs/api/krb5_free_keytab_entry_contents:krb5-free-keytab-entry-contents-free-the-contents-of-a-key-table-entry}}\label{\detokenize{appdev/refs/api/krb5_free_keytab_entry_contents::doc}}\index{krb5\_free\_keytab\_entry\_contents (C function)} 6934 6935\begin{fulllineitems} 6936\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_keytab_entry_contents:c.krb5_free_keytab_entry_contents}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_free\_keytab\_entry\_contents}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{krb5\_keytab\_entry}}} *\sphinxstyleemphasis{ entry}}{} 6937\end{fulllineitems} 6938 6939\begin{quote}\begin{description} 6940\item[{param}] \leavevmode 6941\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6942 6943\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{entry} - Key table entry whose contents are to be freed 6944 6945\end{description}\end{quote} 6946\begin{quote}\begin{description} 6947\item[{retval}] \leavevmode\begin{itemize} 6948\item {} 69490 Success; otherwise - Kerberos error codes 6950 6951\end{itemize} 6952 6953\end{description}\end{quote} 6954 6955\begin{sphinxadmonition}{note}{Note:} 6956The pointer is not freed. 6957\end{sphinxadmonition} 6958 6959 6960\subsubsection{krb5\_free\_string - Free a string allocated by a krb5 function.} 6961\label{\detokenize{appdev/refs/api/krb5_free_string:krb5-free-string-free-a-string-allocated-by-a-krb5-function}}\label{\detokenize{appdev/refs/api/krb5_free_string::doc}}\index{krb5\_free\_string (C function)} 6962 6963\begin{fulllineitems} 6964\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_string:c.krb5_free_string}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, char *\sphinxstyleemphasis{ val}}{} 6965\end{fulllineitems} 6966 6967\begin{quote}\begin{description} 6968\item[{param}] \leavevmode 6969\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6970 6971\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - String to be freed 6972 6973\end{description}\end{quote} 6974 6975\begin{sphinxadmonition}{note}{Note:} 6976New in 1.10 6977\end{sphinxadmonition} 6978 6979 6980\subsubsection{krb5\_free\_ticket - Free a ticket.} 6981\label{\detokenize{appdev/refs/api/krb5_free_ticket:krb5-free-ticket-free-a-ticket}}\label{\detokenize{appdev/refs/api/krb5_free_ticket::doc}}\index{krb5\_free\_ticket (C function)} 6982 6983\begin{fulllineitems} 6984\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_ticket:c.krb5_free_ticket}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_ticket}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} *\sphinxstyleemphasis{ val}}{} 6985\end{fulllineitems} 6986 6987\begin{quote}\begin{description} 6988\item[{param}] \leavevmode 6989\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 6990 6991\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Ticket to be freed 6992 6993\end{description}\end{quote} 6994 6995This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 6996 6997 6998\subsubsection{krb5\_free\_unparsed\_name - Free a string representation of a principal.} 6999\label{\detokenize{appdev/refs/api/krb5_free_unparsed_name::doc}}\label{\detokenize{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)} 7000 7001\begin{fulllineitems} 7002\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_unparsed_name:c.krb5_free_unparsed_name}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_unparsed\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, char *\sphinxstyleemphasis{ val}}{} 7003\end{fulllineitems} 7004 7005\begin{quote}\begin{description} 7006\item[{param}] \leavevmode 7007\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7008 7009\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Name string to be freed 7010 7011\end{description}\end{quote} 7012 7013 7014\subsubsection{krb5\_get\_etype\_info - Retrieve enctype, salt and s2kparams from KDC.} 7015\label{\detokenize{appdev/refs/api/krb5_get_etype_info:krb5-get-etype-info-retrieve-enctype-salt-and-s2kparams-from-kdc}}\label{\detokenize{appdev/refs/api/krb5_get_etype_info::doc}}\index{krb5\_get\_etype\_info (C function)} 7016 7017\begin{fulllineitems} 7018\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_etype_info:c.krb5_get_etype_info}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_etype\_info}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ principal}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ enctype\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ salt\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ s2kparams\_out}}{} 7019\end{fulllineitems} 7020 7021\begin{quote}\begin{description} 7022\item[{param}] \leavevmode 7023\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7024 7025\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal whose information is requested 7026 7027\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} - Initial credential options 7028 7029\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{enctype\_out} - The enctype chosen by KDC 7030 7031\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{salt\_out} - Salt returned from KDC 7032 7033\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{s2kparams\_out} - String-to-key parameters returned from KDC 7034 7035\end{description}\end{quote} 7036\begin{quote}\begin{description} 7037\item[{retval}] \leavevmode\begin{itemize} 7038\item {} 70390 Success 7040 7041\end{itemize} 7042 7043\item[{return}] \leavevmode\begin{itemize} 7044\item {} 7045A Kerberos error code 7046 7047\end{itemize} 7048 7049\end{description}\end{quote} 7050 7051Send an initial ticket request for \sphinxstyleemphasis{principal} and extract the encryption type, salt type, and string-to-key parameters from the KDC response. If the KDC provides no etype-info, set \sphinxstyleemphasis{enctype\_out} to \sphinxstylestrong{ENCTYPE\_NULL} and set \sphinxstyleemphasis{salt\_out} and \sphinxstyleemphasis{s2kparams\_out} to empty. If the KDC etype-info provides no salt, compute the default salt and place it in \sphinxstyleemphasis{salt\_out} . If the KDC etype-info provides no string-to-key parameters, set \sphinxstyleemphasis{s2kparams\_out} to empty. 7052\begin{quote} 7053 7054\sphinxstyleemphasis{opt} may be used to specify options which affect the initial request, such as request encryption types or a FAST armor cache (see {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list:c.krb5_get_init_creds_opt_set_etype_list}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_etype\_list()}}}} and {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache_name:c.krb5_get_init_creds_opt_set_fast_ccache_name}]{\sphinxcrossref{\sphinxcode{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name()}}}} ). 7055\end{quote} 7056 7057Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{salt\_out} and \sphinxstyleemphasis{s2kparams\_out} when they are no longer needed. 7058 7059\begin{sphinxadmonition}{note}{Note:} 7060New in 1.17 7061\end{sphinxadmonition} 7062 7063 7064\subsubsection{krb5\_get\_permitted\_enctypes - Return a list of encryption types permitted for session keys.} 7065\label{\detokenize{appdev/refs/api/krb5_get_permitted_enctypes:krb5-get-permitted-enctypes-return-a-list-of-encryption-types-permitted-for-session-keys}}\label{\detokenize{appdev/refs/api/krb5_get_permitted_enctypes::doc}}\index{krb5\_get\_permitted\_enctypes (C function)} 7066 7067\begin{fulllineitems} 7068\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_permitted_enctypes:c.krb5_get_permitted_enctypes}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_permitted\_enctypes}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} **\sphinxstyleemphasis{ ktypes}}{} 7069\end{fulllineitems} 7070 7071\begin{quote}\begin{description} 7072\item[{param}] \leavevmode 7073\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7074 7075\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ktypes} - Zero-terminated list of encryption types 7076 7077\end{description}\end{quote} 7078\begin{quote}\begin{description} 7079\item[{retval}] \leavevmode\begin{itemize} 7080\item {} 70810 Success; otherwise - Kerberos error codes 7082 7083\end{itemize} 7084 7085\end{description}\end{quote} 7086 7087This function returns the list of encryption types permitted for session keys within \sphinxstyleemphasis{context} , as determined by configuration or by a previous call to {\hyperref[\detokenize{appdev/refs/api/krb5_set_default_tgs_enctypes:c.krb5_set_default_tgs_enctypes}]{\sphinxcrossref{\sphinxcode{krb5\_set\_default\_tgs\_enctypes()}}}} . 7088 7089Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_enctypes:c.krb5_free_enctypes}]{\sphinxcrossref{\sphinxcode{krb5\_free\_enctypes()}}}} to free \sphinxstyleemphasis{ktypes} when it is no longer needed. 7090 7091 7092\subsubsection{krb5\_get\_server\_rcache - Generate a replay cache object for server use and open it.} 7093\label{\detokenize{appdev/refs/api/krb5_get_server_rcache:krb5-get-server-rcache-generate-a-replay-cache-object-for-server-use-and-open-it}}\label{\detokenize{appdev/refs/api/krb5_get_server_rcache::doc}}\index{krb5\_get\_server\_rcache (C function)} 7094 7095\begin{fulllineitems} 7096\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_server_rcache:c.krb5_get_server_rcache}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_server\_rcache}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ piece}, {\hyperref[\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}]{\sphinxcrossref{krb5\_rcache}}} *\sphinxstyleemphasis{ rcptr}}{} 7097\end{fulllineitems} 7098 7099\begin{quote}\begin{description} 7100\item[{param}] \leavevmode 7101\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7102 7103\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{piece} - Unused (replay cache identifier) 7104 7105\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rcptr} - Handle to an open rcache 7106 7107\end{description}\end{quote} 7108\begin{quote}\begin{description} 7109\item[{retval}] \leavevmode\begin{itemize} 7110\item {} 71110 Success; otherwise - Kerberos error codes 7112 7113\end{itemize} 7114 7115\end{description}\end{quote} 7116 7117This function creates a handle to the default replay cache. Use krb5\_rc\_close() to close \sphinxstyleemphasis{rcptr} when it is no longer needed. 7118 7119\begin{sphinxadmonition}{note}{Note:} 7120Prior to release 1.18, this function creates a handle to a different replay cache for each unique value of \sphinxstyleemphasis{piece} . 7121\end{sphinxadmonition} 7122 7123 7124\subsubsection{krb5\_get\_time\_offsets - Return the time offsets from the os context.} 7125\label{\detokenize{appdev/refs/api/krb5_get_time_offsets:krb5-get-time-offsets-return-the-time-offsets-from-the-os-context}}\label{\detokenize{appdev/refs/api/krb5_get_time_offsets::doc}}\index{krb5\_get\_time\_offsets (C function)} 7126 7127\begin{fulllineitems} 7128\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_time_offsets:c.krb5_get_time_offsets}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_time\_offsets}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} *\sphinxstyleemphasis{ seconds}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} *\sphinxstyleemphasis{ microseconds}}{} 7129\end{fulllineitems} 7130 7131\begin{quote}\begin{description} 7132\item[{param}] \leavevmode 7133\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7134 7135\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seconds} - Time offset, seconds portion 7136 7137\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{microseconds} - Time offset, microseconds portion 7138 7139\end{description}\end{quote} 7140\begin{quote}\begin{description} 7141\item[{retval}] \leavevmode\begin{itemize} 7142\item {} 71430 Success; otherwise - Kerberos error codes 7144 7145\end{itemize} 7146 7147\end{description}\end{quote} 7148 7149This function returns the time offsets in \sphinxstyleemphasis{context} . 7150 7151 7152\subsubsection{krb5\_init\_context\_profile - Create a krb5 library context using a specified profile.} 7153\label{\detokenize{appdev/refs/api/krb5_init_context_profile:krb5-init-context-profile-create-a-krb5-library-context-using-a-specified-profile}}\label{\detokenize{appdev/refs/api/krb5_init_context_profile::doc}}\index{krb5\_init\_context\_profile (C function)} 7154 7155\begin{fulllineitems} 7156\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_context_profile:c.krb5_init_context_profile}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_context\_profile}}{struct \_profile\_t *\sphinxstyleemphasis{ profile}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}} *\sphinxstyleemphasis{ context}}{} 7157\end{fulllineitems} 7158 7159\begin{quote}\begin{description} 7160\item[{param}] \leavevmode 7161\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{profile} - Profile object (NULL to create default profile) 7162 7163\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Context initialization flags 7164 7165\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{context} - Library context 7166 7167\end{description}\end{quote} 7168 7169Create a context structure, optionally using a specified profile and initialization flags. If \sphinxstyleemphasis{profile} is NULL, the default profile will be created from config files. If \sphinxstyleemphasis{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: 7170\begin{itemize} 7171\item {} 7172{\hyperref[\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:KRB5_INIT_CONTEXT_SECURE}]{\sphinxcrossref{\sphinxcode{KRB5\_INIT\_CONTEXT\_SECURE}}}} Ignore environment variables 7173 7174\item {} 7175{\hyperref[\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:KRB5_INIT_CONTEXT_KDC}]{\sphinxcrossref{\sphinxcode{KRB5\_INIT\_CONTEXT\_KDC}}}} Use KDC configuration if creating profile 7176 7177\end{itemize} 7178 7179 7180\subsubsection{krb5\_init\_creds\_free - Free an initial credentials context.} 7181\label{\detokenize{appdev/refs/api/krb5_init_creds_free::doc}}\label{\detokenize{appdev/refs/api/krb5_init_creds_free:krb5-init-creds-free-free-an-initial-credentials-context}}\index{krb5\_init\_creds\_free (C function)} 7182 7183\begin{fulllineitems} 7184\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_free:c.krb5_init_creds_free}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_init\_creds\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}}{} 7185\end{fulllineitems} 7186 7187\begin{quote}\begin{description} 7188\item[{param}] \leavevmode 7189\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7190 7191\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7192 7193\end{description}\end{quote} 7194\begin{quote} 7195 7196\sphinxstyleemphasis{context} must be the same as the one passed to {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_init()}}}} for this initial credentials context. 7197\end{quote} 7198 7199 7200\subsubsection{krb5\_init\_creds\_get - Acquire credentials using an initial credentials context.} 7201\label{\detokenize{appdev/refs/api/krb5_init_creds_get::doc}}\label{\detokenize{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)} 7202 7203\begin{fulllineitems} 7204\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get:c.krb5_init_creds_get}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_get}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}}{} 7205\end{fulllineitems} 7206 7207\begin{quote}\begin{description} 7208\item[{param}] \leavevmode 7209\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7210 7211\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7212 7213\end{description}\end{quote} 7214\begin{quote}\begin{description} 7215\item[{retval}] \leavevmode\begin{itemize} 7216\item {} 72170 Success; otherwise - Kerberos error codes 7218 7219\end{itemize} 7220 7221\end{description}\end{quote} 7222 7223This function synchronously obtains credentials using a context created by {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_init()}}}} . On successful return, the credentials can be retrieved with {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_get_creds:c.krb5_init_creds_get_creds}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_get\_creds()}}}} . 7224\begin{quote} 7225 7226\sphinxstyleemphasis{context} must be the same as the one passed to {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_init()}}}} for this initial credentials context. 7227\end{quote} 7228 7229 7230\subsubsection{krb5\_init\_creds\_get\_creds - Retrieve acquired credentials from an initial credentials context.} 7231\label{\detokenize{appdev/refs/api/krb5_init_creds_get_creds::doc}}\label{\detokenize{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)} 7232 7233\begin{fulllineitems} 7234\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get_creds:c.krb5_init_creds_get_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_get\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}}{} 7235\end{fulllineitems} 7236 7237\begin{quote}\begin{description} 7238\item[{param}] \leavevmode 7239\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7240 7241\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7242 7243\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - Acquired credentials 7244 7245\end{description}\end{quote} 7246\begin{quote}\begin{description} 7247\item[{retval}] \leavevmode\begin{itemize} 7248\item {} 72490 Success; otherwise - Kerberos error codes 7250 7251\end{itemize} 7252 7253\end{description}\end{quote} 7254 7255This function copies the acquired initial credentials from \sphinxstyleemphasis{ctx} into \sphinxstyleemphasis{creds} , after the successful completion of {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_get:c.krb5_init_creds_get}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_get()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_step:c.krb5_init_creds_step}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_step()}}}} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_cred_contents:c.krb5_free_cred_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_cred\_contents()}}}} to free \sphinxstyleemphasis{creds} when it is no longer needed. 7256 7257 7258\subsubsection{krb5\_init\_creds\_get\_error - Get the last error from KDC from an initial credentials context.} 7259\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_init_creds_get_error::doc}}\index{krb5\_init\_creds\_get\_error (C function)} 7260 7261\begin{fulllineitems} 7262\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get_error:c.krb5_init_creds_get_error}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_get\_error}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{krb5\_error}}} **\sphinxstyleemphasis{ error}}{} 7263\end{fulllineitems} 7264 7265\begin{quote}\begin{description} 7266\item[{param}] \leavevmode 7267\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7268 7269\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7270 7271\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{error} - Error from KDC, or NULL if none was received 7272 7273\end{description}\end{quote} 7274\begin{quote}\begin{description} 7275\item[{retval}] \leavevmode\begin{itemize} 7276\item {} 72770 Success; otherwise - Kerberos error codes 7278 7279\end{itemize} 7280 7281\end{description}\end{quote} 7282 7283 7284\subsubsection{krb5\_init\_creds\_get\_times - Retrieve ticket times from an initial credentials context.} 7285\label{\detokenize{appdev/refs/api/krb5_init_creds_get_times::doc}}\label{\detokenize{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)} 7286 7287\begin{fulllineitems} 7288\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get_times:c.krb5_init_creds_get_times}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_get\_times}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{krb5\_ticket\_times}}} *\sphinxstyleemphasis{ times}}{} 7289\end{fulllineitems} 7290 7291\begin{quote}\begin{description} 7292\item[{param}] \leavevmode 7293\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7294 7295\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7296 7297\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{times} - Ticket times for acquired credentials 7298 7299\end{description}\end{quote} 7300\begin{quote}\begin{description} 7301\item[{retval}] \leavevmode\begin{itemize} 7302\item {} 73030 Success; otherwise - Kerberos error codes 7304 7305\end{itemize} 7306 7307\end{description}\end{quote} 7308 7309The initial credentials context must have completed obtaining credentials via either {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_get:c.krb5_init_creds_get}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_get()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_step:c.krb5_init_creds_step}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_step()}}}} . 7310 7311 7312\subsubsection{krb5\_init\_creds\_init - Create a context for acquiring initial credentials.} 7313\label{\detokenize{appdev/refs/api/krb5_init_creds_init::doc}}\label{\detokenize{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)} 7314 7315\begin{fulllineitems} 7316\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_init}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_prompter_fct:c.krb5_prompter_fct}]{\sphinxcrossref{krb5\_prompter\_fct}}}\sphinxstyleemphasis{ prompter}, void *\sphinxstyleemphasis{ data}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}}\sphinxstyleemphasis{ start\_time}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}} *\sphinxstyleemphasis{ ctx}}{} 7317\end{fulllineitems} 7318 7319\begin{quote}\begin{description} 7320\item[{param}] \leavevmode 7321\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7322 7323\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal to get initial creds for 7324 7325\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompter} - Prompter callback 7326 7327\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Prompter callback argument 7328 7329\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{start\_time} - Time when credentials become valid (0 for now) 7330 7331\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} - Options structure (NULL for default) 7332 7333\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ctx} - New initial credentials context 7334 7335\end{description}\end{quote} 7336\begin{quote}\begin{description} 7337\item[{retval}] \leavevmode\begin{itemize} 7338\item {} 73390 Success; otherwise - Kerberos error codes 7340 7341\end{itemize} 7342 7343\end{description}\end{quote} 7344 7345This function creates a new context for acquiring initial credentials. Use {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_free:c.krb5_init_creds_free}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_free()}}}} to free \sphinxstyleemphasis{ctx} when it is no longer needed. 7346 7347Any subsequent calls to {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_step:c.krb5_init_creds_step}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_step()}}}} , {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_get:c.krb5_init_creds_get}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_get()}}}} , or {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_free:c.krb5_init_creds_free}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_free()}}}} for this initial credentials context must use the same \sphinxstyleemphasis{context} argument as the one passed to this function. 7348 7349 7350\subsubsection{krb5\_init\_creds\_set\_keytab - Specify a keytab to use for acquiring initial credentials.} 7351\label{\detokenize{appdev/refs/api/krb5_init_creds_set_keytab:krb5-init-creds-set-keytab-specify-a-keytab-to-use-for-acquiring-initial-credentials}}\label{\detokenize{appdev/refs/api/krb5_init_creds_set_keytab::doc}}\index{krb5\_init\_creds\_set\_keytab (C function)} 7352 7353\begin{fulllineitems} 7354\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_set_keytab:c.krb5_init_creds_set_keytab}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_set\_keytab}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}}{} 7355\end{fulllineitems} 7356 7357\begin{quote}\begin{description} 7358\item[{param}] \leavevmode 7359\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7360 7361\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7362 7363\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 7364 7365\end{description}\end{quote} 7366\begin{quote}\begin{description} 7367\item[{retval}] \leavevmode\begin{itemize} 7368\item {} 73690 Success; otherwise - Kerberos error codes 7370 7371\end{itemize} 7372 7373\end{description}\end{quote} 7374 7375This function supplies a keytab containing the client key for an initial credentials request. 7376 7377 7378\subsubsection{krb5\_init\_creds\_set\_password - Set a password for acquiring initial credentials.} 7379\label{\detokenize{appdev/refs/api/krb5_init_creds_set_password:krb5-init-creds-set-password-set-a-password-for-acquiring-initial-credentials}}\label{\detokenize{appdev/refs/api/krb5_init_creds_set_password::doc}}\index{krb5\_init\_creds\_set\_password (C function)} 7380 7381\begin{fulllineitems} 7382\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_set_password:c.krb5_init_creds_set_password}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_set\_password}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, const char *\sphinxstyleemphasis{ password}}{} 7383\end{fulllineitems} 7384 7385\begin{quote}\begin{description} 7386\item[{param}] \leavevmode 7387\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7388 7389\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7390 7391\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{password} - Password 7392 7393\end{description}\end{quote} 7394\begin{quote}\begin{description} 7395\item[{retval}] \leavevmode\begin{itemize} 7396\item {} 73970 Success; otherwise - Kerberos error codes 7398 7399\end{itemize} 7400 7401\end{description}\end{quote} 7402 7403This function supplies a password to be used to construct the client key for an initial credentials request. 7404 7405 7406\subsubsection{krb5\_init\_creds\_set\_service - Specify a service principal for acquiring initial credentials.} 7407\label{\detokenize{appdev/refs/api/krb5_init_creds_set_service::doc}}\label{\detokenize{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)} 7408 7409\begin{fulllineitems} 7410\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_set_service:c.krb5_init_creds_set_service}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_set\_service}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, const char *\sphinxstyleemphasis{ service}}{} 7411\end{fulllineitems} 7412 7413\begin{quote}\begin{description} 7414\item[{param}] \leavevmode 7415\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7416 7417\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7418 7419\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{service} - Service principal string 7420 7421\end{description}\end{quote} 7422\begin{quote}\begin{description} 7423\item[{retval}] \leavevmode\begin{itemize} 7424\item {} 74250 Success; otherwise - Kerberos error codes 7426 7427\end{itemize} 7428 7429\end{description}\end{quote} 7430 7431This function supplies a service principal string to acquire initial credentials for instead of the default krbtgt service. \sphinxstyleemphasis{service} is parsed as a principal name; any realm part is ignored. 7432 7433 7434\subsubsection{krb5\_init\_creds\_step - Get the next KDC request for acquiring initial credentials.} 7435\label{\detokenize{appdev/refs/api/krb5_init_creds_step::doc}}\label{\detokenize{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)} 7436 7437\begin{fulllineitems} 7438\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_step:c.krb5_init_creds_step}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_creds\_step}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{krb5\_init\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ in}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ realm}, unsigned int *\sphinxstyleemphasis{ flags}}{} 7439\end{fulllineitems} 7440 7441\begin{quote}\begin{description} 7442\item[{param}] \leavevmode 7443\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7444 7445\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Initial credentials context 7446 7447\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} - KDC response (empty on the first call) 7448 7449\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Next KDC request 7450 7451\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realm} - Realm for next KDC request 7452 7453\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} - Output flags 7454 7455\end{description}\end{quote} 7456\begin{quote}\begin{description} 7457\item[{retval}] \leavevmode\begin{itemize} 7458\item {} 74590 Success; otherwise - Kerberos error codes 7460 7461\end{itemize} 7462 7463\end{description}\end{quote} 7464 7465This 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, \sphinxstyleemphasis{in} should be set to an empty buffer; on subsequent calls, it should be set to the KDC’s reply to the previous request. 7466 7467If more requests are needed, \sphinxstyleemphasis{flags} will be set to {\hyperref[\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE}]{\sphinxcrossref{\sphinxcode{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}}}} and the next request will be placed in \sphinxstyleemphasis{out} . If no more requests are needed, \sphinxstyleemphasis{flags} will not contain {\hyperref[\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE}]{\sphinxcrossref{\sphinxcode{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}}}} and \sphinxstyleemphasis{out} will be empty. 7468 7469If this function returns \sphinxstylestrong{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. 7470\begin{quote} 7471 7472\sphinxstyleemphasis{context} must be the same as the one passed to {\hyperref[\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}]{\sphinxcrossref{\sphinxcode{krb5\_init\_creds\_init()}}}} for this initial credentials context. 7473\end{quote} 7474 7475 7476\subsubsection{krb5\_init\_keyblock - Initialize an empty krb5\_keyblock .} 7477\label{\detokenize{appdev/refs/api/krb5_init_keyblock:krb5-init-keyblock-initialize-an-empty-krb5-keyblock}}\label{\detokenize{appdev/refs/api/krb5_init_keyblock::doc}}\index{krb5\_init\_keyblock (C function)} 7478 7479\begin{fulllineitems} 7480\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_keyblock:c.krb5_init_keyblock}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_keyblock}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, size\_t\sphinxstyleemphasis{ length}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ out}}{} 7481\end{fulllineitems} 7482 7483\begin{quote}\begin{description} 7484\item[{param}] \leavevmode 7485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7486 7487\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 7488 7489\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{length} - Length of keyblock (or 0) 7490 7491\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - New keyblock structure 7492 7493\end{description}\end{quote} 7494\begin{quote}\begin{description} 7495\item[{retval}] \leavevmode\begin{itemize} 7496\item {} 74970 Success; otherwise - Kerberos error codes 7498 7499\end{itemize} 7500 7501\end{description}\end{quote} 7502 7503Initialize 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[\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock()}}}} to free \sphinxstyleemphasis{out} when it is no longer needed. 7504 7505\begin{sphinxadmonition}{note}{Note:} 7506If \sphinxstyleemphasis{length} is set to 0, contents are left unallocated. 7507\end{sphinxadmonition} 7508 7509 7510\subsubsection{krb5\_is\_referral\_realm - Check for a match with KRB5\_REFERRAL\_REALM.} 7511\label{\detokenize{appdev/refs/api/krb5_is_referral_realm:krb5-is-referral-realm-check-for-a-match-with-krb5-referral-realm}}\label{\detokenize{appdev/refs/api/krb5_is_referral_realm::doc}}\index{krb5\_is\_referral\_realm (C function)} 7512 7513\begin{fulllineitems} 7514\phantomsection\label{\detokenize{appdev/refs/api/krb5_is_referral_realm:c.krb5_is_referral_realm}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_is\_referral\_realm}}{const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ r}}{} 7515\end{fulllineitems} 7516 7517\begin{quote}\begin{description} 7518\item[{param}] \leavevmode 7519\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{r} - Realm to check 7520 7521\end{description}\end{quote} 7522\begin{quote}\begin{description} 7523\item[{return}] \leavevmode\begin{itemize} 7524\item {} 7525TRUE if r is zero-length, FALSE otherwise 7526 7527\end{itemize} 7528 7529\end{description}\end{quote} 7530 7531 7532\subsubsection{krb5\_kt\_add\_entry - Add a new entry to a key table.} 7533\label{\detokenize{appdev/refs/api/krb5_kt_add_entry:krb5-kt-add-entry-add-a-new-entry-to-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_add_entry::doc}}\index{krb5\_kt\_add\_entry (C function)} 7534 7535\begin{fulllineitems} 7536\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_add_entry:c.krb5_kt_add_entry}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_add\_entry}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ id}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{krb5\_keytab\_entry}}} *\sphinxstyleemphasis{ entry}}{} 7537\end{fulllineitems} 7538 7539\begin{quote}\begin{description} 7540\item[{param}] \leavevmode 7541\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7542 7543\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} - Key table handle 7544 7545\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{entry} - Entry to be added 7546 7547\end{description}\end{quote} 7548\begin{quote}\begin{description} 7549\item[{retval}] \leavevmode\begin{itemize} 7550\item {} 75510 Success 7552 7553\item {} 7554ENOMEM Insufficient memory 7555 7556\item {} 7557KRB5\_KT\_NOWRITE Key table is not writeable 7558 7559\end{itemize} 7560 7561\item[{return}] \leavevmode\begin{itemize} 7562\item {} 7563Kerberos error codes 7564 7565\end{itemize} 7566 7567\end{description}\end{quote} 7568 7569 7570\subsubsection{krb5\_kt\_end\_seq\_get - Release a keytab cursor.} 7571\label{\detokenize{appdev/refs/api/krb5_kt_end_seq_get::doc}}\label{\detokenize{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)} 7572 7573\begin{fulllineitems} 7574\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_end_seq_get:c.krb5_kt_end_seq_get}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_end\_seq\_get}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}]{\sphinxcrossref{krb5\_kt\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 7575\end{fulllineitems} 7576 7577\begin{quote}\begin{description} 7578\item[{param}] \leavevmode 7579\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7580 7581\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 7582 7583\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} - Cursor 7584 7585\end{description}\end{quote} 7586\begin{quote}\begin{description} 7587\item[{retval}] \leavevmode\begin{itemize} 7588\item {} 75890 Success 7590 7591\end{itemize} 7592 7593\item[{return}] \leavevmode\begin{itemize} 7594\item {} 7595Kerberos error codes 7596 7597\end{itemize} 7598 7599\end{description}\end{quote} 7600 7601This function should be called to release the cursor created by {\hyperref[\detokenize{appdev/refs/api/krb5_kt_start_seq_get:c.krb5_kt_start_seq_get}]{\sphinxcrossref{\sphinxcode{krb5\_kt\_start\_seq\_get()}}}} . 7602 7603 7604\subsubsection{krb5\_kt\_get\_entry - Get an entry from a key table.} 7605\label{\detokenize{appdev/refs/api/krb5_kt_get_entry:krb5-kt-get-entry-get-an-entry-from-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_get_entry::doc}}\index{krb5\_kt\_get\_entry (C function)} 7606 7607\begin{fulllineitems} 7608\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_get_entry:c.krb5_kt_get_entry}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_get\_entry}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, {\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{krb5\_kvno}}}\sphinxstyleemphasis{ vno}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{krb5\_keytab\_entry}}} *\sphinxstyleemphasis{ entry}}{} 7609\end{fulllineitems} 7610 7611\begin{quote}\begin{description} 7612\item[{param}] \leavevmode 7613\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7614 7615\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 7616 7617\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal name 7618 7619\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{vno} - Key version number (0 for highest available) 7620 7621\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type (0 zero for any enctype) 7622 7623\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{entry} - Returned entry from key table 7624 7625\end{description}\end{quote} 7626\begin{quote}\begin{description} 7627\item[{retval}] \leavevmode\begin{itemize} 7628\item {} 76290 Success 7630 7631\item {} 7632Kerberos error codes on failure 7633 7634\end{itemize} 7635 7636\end{description}\end{quote} 7637 7638Retrieve an entry from a key table which matches the \sphinxstyleemphasis{keytab} , \sphinxstyleemphasis{principal} , \sphinxstyleemphasis{vno} , and \sphinxstyleemphasis{enctype} . If \sphinxstyleemphasis{vno} is zero, retrieve the highest-numbered kvno matching the other fields. If \sphinxstyleemphasis{enctype} is 0, match any enctype. 7639 7640Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keytab_entry_contents:c.krb5_free_keytab_entry_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keytab\_entry\_contents()}}}} to free \sphinxstyleemphasis{entry} when it is no longer needed. 7641 7642\begin{sphinxadmonition}{note}{Note:} 7643If \sphinxstyleemphasis{vno} is zero, the function retrieves the highest-numbered-kvno entry that matches the specified principal. 7644\end{sphinxadmonition} 7645 7646 7647\subsubsection{krb5\_kt\_have\_content - Check if a keytab exists and contains entries.} 7648\label{\detokenize{appdev/refs/api/krb5_kt_have_content::doc}}\label{\detokenize{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)} 7649 7650\begin{fulllineitems} 7651\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_have_content:c.krb5_kt_have_content}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_have\_content}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}}{} 7652\end{fulllineitems} 7653 7654\begin{quote}\begin{description} 7655\item[{param}] \leavevmode 7656\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7657 7658\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 7659 7660\end{description}\end{quote} 7661\begin{quote}\begin{description} 7662\item[{retval}] \leavevmode\begin{itemize} 7663\item {} 76640 Keytab exists and contains entries 7665 7666\item {} 7667KRB5\_KT\_NOTFOUND Keytab does not contain entries 7668 7669\end{itemize} 7670 7671\end{description}\end{quote} 7672 7673\begin{sphinxadmonition}{note}{Note:} 7674New in 1.11 7675\end{sphinxadmonition} 7676 7677 7678\subsubsection{krb5\_kt\_next\_entry - Retrieve the next entry from the key table.} 7679\label{\detokenize{appdev/refs/api/krb5_kt_next_entry:krb5-kt-next-entry-retrieve-the-next-entry-from-the-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_next_entry::doc}}\index{krb5\_kt\_next\_entry (C function)} 7680 7681\begin{fulllineitems} 7682\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_next_entry:c.krb5_kt_next_entry}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_next\_entry}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{krb5\_keytab\_entry}}} *\sphinxstyleemphasis{ entry}, {\hyperref[\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}]{\sphinxcrossref{krb5\_kt\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 7683\end{fulllineitems} 7684 7685\begin{quote}\begin{description} 7686\item[{param}] \leavevmode 7687\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7688 7689\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 7690 7691\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{entry} - Returned key table entry 7692 7693\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} - Key table cursor 7694 7695\end{description}\end{quote} 7696\begin{quote}\begin{description} 7697\item[{retval}] \leavevmode\begin{itemize} 7698\item {} 76990 Success 7700 7701\item {} 7702KRB5\_KT\_END - if the last entry was reached 7703 7704\end{itemize} 7705 7706\item[{return}] \leavevmode\begin{itemize} 7707\item {} 7708Kerberos error codes 7709 7710\end{itemize} 7711 7712\end{description}\end{quote} 7713 7714Return the next sequential entry in \sphinxstyleemphasis{keytab} and advance \sphinxstyleemphasis{cursor} . Callers must release the returned entry with {\hyperref[\detokenize{appdev/refs/api/krb5_kt_free_entry:c.krb5_kt_free_entry}]{\sphinxcrossref{\sphinxcode{krb5\_kt\_free\_entry()}}}} . 7715 7716 7717\subsubsection{krb5\_kt\_read\_service\_key - Retrieve a service key from a key table.} 7718\label{\detokenize{appdev/refs/api/krb5_kt_read_service_key::doc}}\label{\detokenize{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)} 7719 7720\begin{fulllineitems} 7721\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_read_service_key:c.krb5_kt_read_service_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_read\_service\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ keyprocarg}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ principal}, {\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{krb5\_kvno}}}\sphinxstyleemphasis{ vno}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ key}}{} 7722\end{fulllineitems} 7723 7724\begin{quote}\begin{description} 7725\item[{param}] \leavevmode 7726\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7727 7728\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyprocarg} - Name of a key table (NULL to use default name) 7729 7730\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Service principal 7731 7732\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{vno} - Key version number (0 for highest available) 7733 7734\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type (0 for any type) 7735 7736\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Service key from key table 7737 7738\end{description}\end{quote} 7739\begin{quote}\begin{description} 7740\item[{retval}] \leavevmode\begin{itemize} 7741\item {} 77420 Success 7743 7744\end{itemize} 7745 7746\item[{return}] \leavevmode\begin{itemize} 7747\item {} 7748Kerberos error code if not found or keyprocarg is invalid. 7749 7750\end{itemize} 7751 7752\end{description}\end{quote} 7753 7754Open and search the specified key table for the entry identified by \sphinxstyleemphasis{principal} , \sphinxstyleemphasis{enctype} , and \sphinxstyleemphasis{vno} . If no key is found, return an error code. 7755 7756The default key table is used, unless \sphinxstyleemphasis{keyprocarg} is non-null. \sphinxstyleemphasis{keyprocarg} designates a specific key table. 7757 7758Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock()}}}} to free \sphinxstyleemphasis{key} when it is no longer needed. 7759 7760 7761\subsubsection{krb5\_kt\_remove\_entry - Remove an entry from a key table.} 7762\label{\detokenize{appdev/refs/api/krb5_kt_remove_entry::doc}}\label{\detokenize{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)} 7763 7764\begin{fulllineitems} 7765\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_remove_entry:c.krb5_kt_remove_entry}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_remove\_entry}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ id}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{krb5\_keytab\_entry}}} *\sphinxstyleemphasis{ entry}}{} 7766\end{fulllineitems} 7767 7768\begin{quote}\begin{description} 7769\item[{param}] \leavevmode 7770\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7771 7772\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} - Key table handle 7773 7774\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{entry} - Entry to remove from key table 7775 7776\end{description}\end{quote} 7777\begin{quote}\begin{description} 7778\item[{retval}] \leavevmode\begin{itemize} 7779\item {} 77800 Success 7781 7782\item {} 7783KRB5\_KT\_NOWRITE Key table is not writable 7784 7785\end{itemize} 7786 7787\item[{return}] \leavevmode\begin{itemize} 7788\item {} 7789Kerberos error codes 7790 7791\end{itemize} 7792 7793\end{description}\end{quote} 7794 7795 7796\subsubsection{krb5\_kt\_start\_seq\_get - Start a sequential retrieval of key table entries.} 7797\label{\detokenize{appdev/refs/api/krb5_kt_start_seq_get:krb5-kt-start-seq-get-start-a-sequential-retrieval-of-key-table-entries}}\label{\detokenize{appdev/refs/api/krb5_kt_start_seq_get::doc}}\index{krb5\_kt\_start\_seq\_get (C function)} 7798 7799\begin{fulllineitems} 7800\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_start_seq_get:c.krb5_kt_start_seq_get}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_start\_seq\_get}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}]{\sphinxcrossref{krb5\_kt\_cursor}}} *\sphinxstyleemphasis{ cursor}}{} 7801\end{fulllineitems} 7802 7803\begin{quote}\begin{description} 7804\item[{param}] \leavevmode 7805\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7806 7807\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table handle 7808 7809\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} - Cursor 7810 7811\end{description}\end{quote} 7812\begin{quote}\begin{description} 7813\item[{retval}] \leavevmode\begin{itemize} 7814\item {} 78150 Success 7816 7817\end{itemize} 7818 7819\item[{return}] \leavevmode\begin{itemize} 7820\item {} 7821Kerberos error codes 7822 7823\end{itemize} 7824 7825\end{description}\end{quote} 7826 7827Prepare to read sequentially every key in the specified key table. Use {\hyperref[\detokenize{appdev/refs/api/krb5_kt_end_seq_get:c.krb5_kt_end_seq_get}]{\sphinxcrossref{\sphinxcode{krb5\_kt\_end\_seq\_get()}}}} to release the cursor when it is no longer needed. 7828 7829 7830\subsubsection{krb5\_make\_authdata\_kdc\_issued - Encode and sign AD-KDCIssued authorization data.} 7831\label{\detokenize{appdev/refs/api/krb5_make_authdata_kdc_issued:krb5-make-authdata-kdc-issued-encode-and-sign-ad-kdcissued-authorization-data}}\label{\detokenize{appdev/refs/api/krb5_make_authdata_kdc_issued::doc}}\index{krb5\_make\_authdata\_kdc\_issued (C function)} 7832 7833\begin{fulllineitems} 7834\phantomsection\label{\detokenize{appdev/refs/api/krb5_make_authdata_kdc_issued:c.krb5_make_authdata_kdc_issued}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_make\_authdata\_kdc\_issued}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ issuer}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ ad\_kdcissued}}{} 7835\end{fulllineitems} 7836 7837\begin{quote}\begin{description} 7838\item[{param}] \leavevmode 7839\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7840 7841\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Session key 7842 7843\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{issuer} - The name of the issuing principal 7844 7845\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authdata} - List of authorization data to be signed 7846 7847\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ad\_kdcissued} - List containing AD-KDCIssued authdata 7848 7849\end{description}\end{quote} 7850 7851This function wraps a list of authorization data entries \sphinxstyleemphasis{authdata} in an AD-KDCIssued container (see RFC 4120 section 5.2.6.2) signed with \sphinxstyleemphasis{key} . The result is returned in \sphinxstyleemphasis{ad\_kdcissued} as a single-element list. 7852 7853 7854\subsubsection{krb5\_merge\_authdata - Merge two authorization data lists into a new list.} 7855\label{\detokenize{appdev/refs/api/krb5_merge_authdata:krb5-merge-authdata-merge-two-authorization-data-lists-into-a-new-list}}\label{\detokenize{appdev/refs/api/krb5_merge_authdata::doc}}\index{krb5\_merge\_authdata (C function)} 7856 7857\begin{fulllineitems} 7858\phantomsection\label{\detokenize{appdev/refs/api/krb5_merge_authdata:c.krb5_merge_authdata}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_merge\_authdata}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ inauthdat1}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ inauthdat2}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ outauthdat}}{} 7859\end{fulllineitems} 7860 7861\begin{quote}\begin{description} 7862\item[{param}] \leavevmode 7863\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7864 7865\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inauthdat1} - First list of \sphinxstyleemphasis{krb5\_authdata} structures 7866 7867\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inauthdat2} - Second list of \sphinxstyleemphasis{krb5\_authdata} structures 7868 7869\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outauthdat} - Merged list of \sphinxstyleemphasis{krb5\_authdata} structures 7870 7871\end{description}\end{quote} 7872\begin{quote}\begin{description} 7873\item[{retval}] \leavevmode\begin{itemize} 7874\item {} 78750 Success; otherwise - Kerberos error codes 7876 7877\end{itemize} 7878 7879\end{description}\end{quote} 7880 7881Merge two authdata arrays, such as the array from a ticket and authenticator. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_authdata:c.krb5_free_authdata}]{\sphinxcrossref{\sphinxcode{krb5\_free\_authdata()}}}} to free \sphinxstyleemphasis{outauthdat} when it is no longer needed. 7882 7883\begin{sphinxadmonition}{note}{Note:} 7884The last array entry in \sphinxstyleemphasis{inauthdat1} and \sphinxstyleemphasis{inauthdat2} must be a NULL pointer. 7885\end{sphinxadmonition} 7886 7887 7888\subsubsection{krb5\_mk\_1cred - Format a KRB-CRED message for a single set of credentials.} 7889\label{\detokenize{appdev/refs/api/krb5_mk_1cred:krb5-mk-1cred-format-a-krb-cred-message-for-a-single-set-of-credentials}}\label{\detokenize{appdev/refs/api/krb5_mk_1cred::doc}}\index{krb5\_mk\_1cred (C function)} 7890 7891\begin{fulllineitems} 7892\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_1cred:c.krb5_mk_1cred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_1cred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} **\sphinxstyleemphasis{ der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 7893\end{fulllineitems} 7894 7895\begin{quote}\begin{description} 7896\item[{param}] \leavevmode 7897\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7898 7899\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 7900 7901\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Pointer to credentials 7902 7903\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} - Encoded credentials 7904 7905\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay cache data (NULL if not needed) 7906 7907\end{description}\end{quote} 7908\begin{quote}\begin{description} 7909\item[{retval}] \leavevmode\begin{itemize} 7910\item {} 79110 Success 7912 7913\item {} 7914ENOMEM Insufficient memory 7915 7916\item {} 7917KRB5\_RC\_REQUIRED Message replay detection requires rcache parameter 7918 7919\end{itemize} 7920 7921\item[{return}] \leavevmode\begin{itemize} 7922\item {} 7923Kerberos error codes 7924 7925\end{itemize} 7926 7927\end{description}\end{quote} 7928 7929This is a convenience function that calls {\hyperref[\detokenize{appdev/refs/api/krb5_mk_ncred:c.krb5_mk_ncred}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_ncred()}}}} with a single set of credentials. 7930 7931 7932\subsubsection{krb5\_mk\_error - Format and encode a KRB\_ERROR message.} 7933\label{\detokenize{appdev/refs/api/krb5_mk_error:krb5-mk-error-format-and-encode-a-krb-error-message}}\label{\detokenize{appdev/refs/api/krb5_mk_error::doc}}\index{krb5\_mk\_error (C function)} 7934 7935\begin{fulllineitems} 7936\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_error:c.krb5_mk_error}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_error}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{krb5\_error}}} *\sphinxstyleemphasis{ dec\_err}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ enc\_err}}{} 7937\end{fulllineitems} 7938 7939\begin{quote}\begin{description} 7940\item[{param}] \leavevmode 7941\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7942 7943\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{dec\_err} - Error structure to be encoded 7944 7945\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{enc\_err} - Encoded error structure 7946 7947\end{description}\end{quote} 7948\begin{quote}\begin{description} 7949\item[{retval}] \leavevmode\begin{itemize} 7950\item {} 79510 Success; otherwise - Kerberos error codes 7952 7953\end{itemize} 7954 7955\end{description}\end{quote} 7956 7957This function creates a \sphinxstylestrong{KRB\_ERROR} message in \sphinxstyleemphasis{enc\_err} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{enc\_err} when it is no longer needed. 7958 7959 7960\subsubsection{krb5\_mk\_ncred - Format a KRB-CRED message for an array of credentials.} 7961\label{\detokenize{appdev/refs/api/krb5_mk_ncred::doc}}\label{\detokenize{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)} 7962 7963\begin{fulllineitems} 7964\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_ncred:c.krb5_mk_ncred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_ncred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} **\sphinxstyleemphasis{ der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 7965\end{fulllineitems} 7966 7967\begin{quote}\begin{description} 7968\item[{param}] \leavevmode 7969\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 7970 7971\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 7972 7973\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Null-terminated array of credentials 7974 7975\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} - Encoded credentials 7976 7977\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay cache information (NULL if not needed) 7978 7979\end{description}\end{quote} 7980\begin{quote}\begin{description} 7981\item[{retval}] \leavevmode\begin{itemize} 7982\item {} 79830 Success 7984 7985\item {} 7986ENOMEM Insufficient memory 7987 7988\item {} 7989KRB5\_RC\_REQUIRED Message replay detection requires rcache parameter 7990 7991\end{itemize} 7992 7993\item[{return}] \leavevmode\begin{itemize} 7994\item {} 7995Kerberos error codes 7996 7997\end{itemize} 7998 7999\end{description}\end{quote} 8000 8001This function takes an array of credentials \sphinxstyleemphasis{creds} and formats a \sphinxstylestrong{KRB-CRED} message \sphinxstyleemphasis{der\_out} to pass to {\hyperref[\detokenize{appdev/refs/api/krb5_rd_cred:c.krb5_rd_cred}]{\sphinxcrossref{\sphinxcode{krb5\_rd\_cred()}}}} . 8002 8003The local and remote addresses in \sphinxstyleemphasis{auth\_context} are optional; if either is specified, they are used to form the sender and receiver addresses in the KRB-CRED message. 8004 8005If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} flag is set in \sphinxstyleemphasis{auth\_context} , an entry for the message is entered in an in-memory replay cache to detect if the message is reflected by an attacker. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} is not set, no replay cache is used. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} is set in \sphinxstyleemphasis{auth\_context} , the timestamp used for the KRB-CRED message is stored in \sphinxstyleemphasis{rdata\_out} . 8006 8007If either {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} is set, the \sphinxstyleemphasis{auth\_context} local sequence number is included in the KRB-CRED message and then incremented. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} is set, the sequence number used is stored in \sphinxstyleemphasis{rdata\_out} . 8008 8009Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{der\_out} when it is no longer needed. 8010 8011The message will be encrypted using the send subkey of \sphinxstyleemphasis{auth\_context} if it is present, or the session key otherwise. If neither key is present, the credentials will not be encrypted, and the message should only be sent over a secure channel. No replay cache entry is used in this case. 8012 8013\begin{sphinxadmonition}{note}{Note:} 8014The \sphinxstyleemphasis{rdata\_out} argument is required if the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} . 8015\end{sphinxadmonition} 8016 8017 8018\subsubsection{krb5\_mk\_priv - Format a KRB-PRIV message.} 8019\label{\detokenize{appdev/refs/api/krb5_mk_priv:krb5-mk-priv-format-a-krb-priv-message}}\label{\detokenize{appdev/refs/api/krb5_mk_priv::doc}}\index{krb5\_mk\_priv (C function)} 8020 8021\begin{fulllineitems} 8022\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_priv:c.krb5_mk_priv}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_priv}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ userdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 8023\end{fulllineitems} 8024 8025\begin{quote}\begin{description} 8026\item[{param}] \leavevmode 8027\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8028 8029\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8030 8031\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{userdata} - User data for \sphinxstylestrong{KRB-PRIV} message 8032 8033\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} - Formatted \sphinxstylestrong{KRB-PRIV} message 8034 8035\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay data (NULL if not needed) 8036 8037\end{description}\end{quote} 8038\begin{quote}\begin{description} 8039\item[{retval}] \leavevmode\begin{itemize} 8040\item {} 80410 Success; otherwise - Kerberos error codes 8042 8043\end{itemize} 8044 8045\end{description}\end{quote} 8046 8047This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_mk_safe:c.krb5_mk_safe}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_safe()}}}} , but the message is encrypted and integrity-protected, not just integrity-protected. 8048 8049The local address in \sphinxstyleemphasis{auth\_context} must be set, and is used to form the sender address used in the KRB-PRIV message. The remote address is optional; if specified, it will be used to form the receiver address used in the message. 8050 8051If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} flag is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB-PRIV message, and an entry for the message is entered in an in-memory replay cache to detect if the message is reflected by an attacker. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} is not set, no replay cache is used. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB-PRIV message and is stored in \sphinxstyleemphasis{rdata\_out} . 8052 8053If either {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} is set, the \sphinxstyleemphasis{auth\_context} local sequence number is included in the KRB-PRIV message and then incremented. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} is set, the sequence number used is stored in \sphinxstyleemphasis{rdata\_out} . 8054 8055Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{der\_out} when it is no longer needed. 8056 8057\begin{sphinxadmonition}{note}{Note:} 8058The \sphinxstyleemphasis{rdata\_out} argument is required if the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} . 8059\end{sphinxadmonition} 8060 8061 8062\subsubsection{krb5\_mk\_rep - Format and encrypt a KRB\_AP\_REP message.} 8063\label{\detokenize{appdev/refs/api/krb5_mk_rep:krb5-mk-rep-format-and-encrypt-a-krb-ap-rep-message}}\label{\detokenize{appdev/refs/api/krb5_mk_rep::doc}}\index{krb5\_mk\_rep (C function)} 8064 8065\begin{fulllineitems} 8066\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_rep:c.krb5_mk_rep}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_rep}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ outbuf}}{} 8067\end{fulllineitems} 8068 8069\begin{quote}\begin{description} 8070\item[{param}] \leavevmode 8071\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8072 8073\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8074 8075\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} - \sphinxstylestrong{AP-REP} message 8076 8077\end{description}\end{quote} 8078\begin{quote}\begin{description} 8079\item[{retval}] \leavevmode\begin{itemize} 8080\item {} 80810 Success; otherwise - Kerberos error codes 8082 8083\end{itemize} 8084 8085\end{description}\end{quote} 8086 8087This function fills in \sphinxstyleemphasis{outbuf} with an AP-REP message using information from \sphinxstyleemphasis{auth\_context} . 8088 8089If the flags in \sphinxstyleemphasis{auth\_context} indicate that a sequence number should be used (either {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} ) and the local sequence number in \sphinxstyleemphasis{auth\_context} is 0, a new number will be generated with krb5\_generate\_seq\_number(). 8090 8091Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 8092 8093 8094\subsubsection{krb5\_mk\_rep\_dce - Format and encrypt a KRB\_AP\_REP message for DCE RPC.} 8095\label{\detokenize{appdev/refs/api/krb5_mk_rep_dce:krb5-mk-rep-dce-format-and-encrypt-a-krb-ap-rep-message-for-dce-rpc}}\label{\detokenize{appdev/refs/api/krb5_mk_rep_dce::doc}}\index{krb5\_mk\_rep\_dce (C function)} 8096 8097\begin{fulllineitems} 8098\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_rep_dce:c.krb5_mk_rep_dce}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_rep\_dce}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ outbuf}}{} 8099\end{fulllineitems} 8100 8101\begin{quote}\begin{description} 8102\item[{param}] \leavevmode 8103\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8104 8105\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8106 8107\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} - \sphinxstylestrong{AP-REP} message 8108 8109\end{description}\end{quote} 8110\begin{quote}\begin{description} 8111\item[{retval}] \leavevmode\begin{itemize} 8112\item {} 81130 Success; otherwise - Kerberos error codes 8114 8115\end{itemize} 8116 8117\end{description}\end{quote} 8118 8119Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 8120 8121 8122\subsubsection{krb5\_mk\_req - Create a KRB\_AP\_REQ message.} 8123\label{\detokenize{appdev/refs/api/krb5_mk_req:krb5-mk-req-create-a-krb-ap-req-message}}\label{\detokenize{appdev/refs/api/krb5_mk_req::doc}}\index{krb5\_mk\_req (C function)} 8124 8125\begin{fulllineitems} 8126\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_req:c.krb5_mk_req}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_req}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ ap\_req\_options}, const char *\sphinxstyleemphasis{ service}, const char *\sphinxstyleemphasis{ hostname}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ in\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ outbuf}}{} 8127\end{fulllineitems} 8128 8129\begin{quote}\begin{description} 8130\item[{param}] \leavevmode 8131\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8132 8133\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} - Pre-existing or newly created auth context 8134 8135\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_options} - \sphinxcode{AP\_OPTS} options 8136 8137\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{service} - Service name, or NULL to use \sphinxstylestrong{“host”} 8138 8139\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hostname} - Host name, or NULL to use local hostname 8140 8141\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_data} - Application data to be checksummed in the authenticator, or NULL 8142 8143\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache used to obtain credentials for the desired service. 8144 8145\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} - \sphinxstylestrong{AP-REQ} message 8146 8147\end{description}\end{quote} 8148\begin{quote}\begin{description} 8149\item[{retval}] \leavevmode\begin{itemize} 8150\item {} 81510 Success; otherwise - Kerberos error codes 8152 8153\end{itemize} 8154 8155\end{description}\end{quote} 8156 8157This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_mk_req_extended:c.krb5_mk_req_extended}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_req\_extended()}}}} except that it uses a given \sphinxstyleemphasis{hostname} , \sphinxstyleemphasis{service} , and \sphinxstyleemphasis{ccache} to construct a service principal name and obtain credentials. 8158 8159Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 8160 8161 8162\subsubsection{krb5\_mk\_req\_extended - Create a KRB\_AP\_REQ message using supplied credentials.} 8163\label{\detokenize{appdev/refs/api/krb5_mk_req_extended::doc}}\label{\detokenize{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)} 8164 8165\begin{fulllineitems} 8166\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_req_extended:c.krb5_mk_req_extended}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_req\_extended}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ ap\_req\_options}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ in\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ outbuf}}{} 8167\end{fulllineitems} 8168 8169\begin{quote}\begin{description} 8170\item[{param}] \leavevmode 8171\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8172 8173\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} - Pre-existing or newly created auth context 8174 8175\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_options} - \sphinxcode{AP\_OPTS} options 8176 8177\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_data} - Application data to be checksummed in the authenticator, or NULL 8178 8179\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} - Credentials for the service with valid ticket and key 8180 8181\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} - \sphinxstylestrong{AP-REQ} message 8182 8183\end{description}\end{quote} 8184\begin{quote}\begin{description} 8185\item[{retval}] \leavevmode\begin{itemize} 8186\item {} 81870 Success; otherwise - Kerberos error codes 8188 8189\end{itemize} 8190 8191\end{description}\end{quote} 8192 8193Valid \sphinxstyleemphasis{ap\_req\_options} are: 8194\begin{quote} 8195\begin{itemize} 8196\item {} 8197{\hyperref[\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:AP_OPTS_USE_SESSION_KEY}]{\sphinxcrossref{\sphinxcode{AP\_OPTS\_USE\_SESSION\_KEY}}}} - Use the session key when creating the request used for user to user authentication. 8198 8199\item {} 8200{\hyperref[\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED}]{\sphinxcrossref{\sphinxcode{AP\_OPTS\_MUTUAL\_REQUIRED}}}} - Request a mutual authentication packet from the receiver. 8201 8202\item {} 8203{\hyperref[\detokenize{appdev/refs/macros/AP_OPTS_USE_SUBKEY:AP_OPTS_USE_SUBKEY}]{\sphinxcrossref{\sphinxcode{AP\_OPTS\_USE\_SUBKEY}}}} - Generate a subsession key from the current session key obtained from the credentials. 8204 8205\end{itemize} 8206 8207This function creates a KRB\_AP\_REQ message using supplied credentials \sphinxstyleemphasis{in\_creds} . \sphinxstyleemphasis{auth\_context} may point to an existing auth context or to NULL, in which case a new one will be created. If \sphinxstyleemphasis{in\_data} is non-null, a checksum of it will be included in the authenticator contained in the KRB\_AP\_REQ message. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 8208\end{quote} 8209 8210On successful return, the authenticator is stored in \sphinxstyleemphasis{auth\_context} with the \sphinxstyleemphasis{client} and \sphinxstyleemphasis{checksum} fields nulled out. (This is to prevent pointer-sharing problems; the caller should not need these fields anyway, since the caller supplied them.) 8211 8212 8213\sphinxstrong{See also:} 8214 8215 8216{\hyperref[\detokenize{appdev/refs/api/krb5_mk_req:c.krb5_mk_req}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_req()}}}} 8217 8218 8219 8220 8221\subsubsection{krb5\_mk\_safe - Format a KRB-SAFE message.} 8222\label{\detokenize{appdev/refs/api/krb5_mk_safe:krb5-mk-safe-format-a-krb-safe-message}}\label{\detokenize{appdev/refs/api/krb5_mk_safe::doc}}\index{krb5\_mk\_safe (C function)} 8223 8224\begin{fulllineitems} 8225\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_safe:c.krb5_mk_safe}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_mk\_safe}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ userdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 8226\end{fulllineitems} 8227 8228\begin{quote}\begin{description} 8229\item[{param}] \leavevmode 8230\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8231 8232\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8233 8234\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{userdata} - User data in the message 8235 8236\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} - Formatted \sphinxstylestrong{KRB-SAFE} buffer 8237 8238\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay data. Specify NULL if not needed 8239 8240\end{description}\end{quote} 8241\begin{quote}\begin{description} 8242\item[{retval}] \leavevmode\begin{itemize} 8243\item {} 82440 Success; otherwise - Kerberos error codes 8245 8246\end{itemize} 8247 8248\end{description}\end{quote} 8249 8250This function creates an integrity protected \sphinxstylestrong{KRB-SAFE} message using data supplied by the application. 8251 8252Fields in \sphinxstyleemphasis{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 \sphinxcode{KRB5\_AUTH\_CONTEXT} flags. 8253 8254The local address in \sphinxstyleemphasis{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. 8255 8256If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} flag is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB-SAFE message, and an entry for the message is entered in an in-memory replay cache to detect if the message is reflected by an attacker. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} is not set, no replay cache is used. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB-SAFE message and is stored in \sphinxstyleemphasis{rdata\_out} . 8257 8258If either {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} is set, the \sphinxstyleemphasis{auth\_context} local sequence number is included in the KRB-SAFE message and then incremented. If {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} is set, the sequence number used is stored in \sphinxstyleemphasis{rdata\_out} . 8259 8260Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{der\_out} when it is no longer needed. 8261 8262\begin{sphinxadmonition}{note}{Note:} 8263The \sphinxstyleemphasis{rdata\_out} argument is required if the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} . 8264\end{sphinxadmonition} 8265 8266 8267\subsubsection{krb5\_os\_localaddr - Return all interface addresses for this host.} 8268\label{\detokenize{appdev/refs/api/krb5_os_localaddr:krb5-os-localaddr-return-all-interface-addresses-for-this-host}}\label{\detokenize{appdev/refs/api/krb5_os_localaddr::doc}}\index{krb5\_os\_localaddr (C function)} 8269 8270\begin{fulllineitems} 8271\phantomsection\label{\detokenize{appdev/refs/api/krb5_os_localaddr:c.krb5_os_localaddr}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_os\_localaddr}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ***\sphinxstyleemphasis{ addr}}{} 8272\end{fulllineitems} 8273 8274\begin{quote}\begin{description} 8275\item[{param}] \leavevmode 8276\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8277 8278\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{addr} - Array of krb5\_address pointers, ending with NULL 8279 8280\end{description}\end{quote} 8281\begin{quote}\begin{description} 8282\item[{retval}] \leavevmode\begin{itemize} 8283\item {} 82840 Success; otherwise - Kerberos error codes 8285 8286\end{itemize} 8287 8288\end{description}\end{quote} 8289 8290Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_addresses:c.krb5_free_addresses}]{\sphinxcrossref{\sphinxcode{krb5\_free\_addresses()}}}} to free \sphinxstyleemphasis{addr} when it is no longer needed. 8291 8292 8293\subsubsection{krb5\_pac\_add\_buffer - Add a buffer to a PAC handle.} 8294\label{\detokenize{appdev/refs/api/krb5_pac_add_buffer:krb5-pac-add-buffer-add-a-buffer-to-a-pac-handle}}\label{\detokenize{appdev/refs/api/krb5_pac_add_buffer::doc}}\index{krb5\_pac\_add\_buffer (C function)} 8295 8296\begin{fulllineitems} 8297\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_add_buffer:c.krb5_pac_add_buffer}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_add\_buffer}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}}\sphinxstyleemphasis{ type}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 8298\end{fulllineitems} 8299 8300\begin{quote}\begin{description} 8301\item[{param}] \leavevmode 8302\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8303 8304\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8305 8306\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - Buffer type 8307 8308\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - contents 8309 8310\end{description}\end{quote} 8311\begin{quote}\begin{description} 8312\item[{retval}] \leavevmode\begin{itemize} 8313\item {} 83140 Success; otherwise - Kerberos error codes 8315 8316\end{itemize} 8317 8318\end{description}\end{quote} 8319 8320This function adds a buffer of type \sphinxstyleemphasis{type} and contents \sphinxstyleemphasis{data} to \sphinxstyleemphasis{pac} if there isn’t already a buffer of this type present. 8321 8322The valid values of \sphinxstyleemphasis{type} is one of the following: 8323\begin{itemize} 8324\item {} 8325{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_LOGON_INFO:KRB5_PAC_LOGON_INFO}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_LOGON\_INFO}}}} - Logon information 8326 8327\item {} 8328{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:KRB5_PAC_CREDENTIALS_INFO}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_CREDENTIALS\_INFO}}}} - Credentials information 8329 8330\item {} 8331{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:KRB5_PAC_SERVER_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_SERVER\_CHECKSUM}}}} - Server checksum 8332 8333\item {} 8334{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:KRB5_PAC_PRIVSVR_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_PRIVSVR\_CHECKSUM}}}} - KDC checksum 8335 8336\item {} 8337{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:KRB5_PAC_CLIENT_INFO}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_CLIENT\_INFO}}}} - Client name and ticket information 8338 8339\item {} 8340{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:KRB5_PAC_DELEGATION_INFO}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_DELEGATION\_INFO}}}} - Constrained delegation information 8341 8342\item {} 8343{\hyperref[\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:KRB5_PAC_UPN_DNS_INFO}]{\sphinxcrossref{\sphinxcode{KRB5\_PAC\_UPN\_DNS\_INFO}}}} - User principal name and DNS information 8344 8345\end{itemize} 8346 8347 8348\subsubsection{krb5\_pac\_free - Free a PAC handle.} 8349\label{\detokenize{appdev/refs/api/krb5_pac_free:krb5-pac-free-free-a-pac-handle}}\label{\detokenize{appdev/refs/api/krb5_pac_free::doc}}\index{krb5\_pac\_free (C function)} 8350 8351\begin{fulllineitems} 8352\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_free:c.krb5_pac_free}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_pac\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}}{} 8353\end{fulllineitems} 8354 8355\begin{quote}\begin{description} 8356\item[{param}] \leavevmode 8357\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8358 8359\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC to be freed 8360 8361\end{description}\end{quote} 8362 8363This function frees the contents of \sphinxstyleemphasis{pac} and the structure itself. 8364 8365 8366\subsubsection{krb5\_pac\_get\_buffer - Retrieve a buffer value from a PAC.} 8367\label{\detokenize{appdev/refs/api/krb5_pac_get_buffer::doc}}\label{\detokenize{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)} 8368 8369\begin{fulllineitems} 8370\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_get_buffer:c.krb5_pac_get_buffer}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_get\_buffer}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}}\sphinxstyleemphasis{ type}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 8371\end{fulllineitems} 8372 8373\begin{quote}\begin{description} 8374\item[{param}] \leavevmode 8375\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8376 8377\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8378 8379\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - Type of buffer to retrieve 8380 8381\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} - Buffer value 8382 8383\end{description}\end{quote} 8384\begin{quote}\begin{description} 8385\item[{retval}] \leavevmode\begin{itemize} 8386\item {} 83870 Success; otherwise - Kerberos error codes 8388 8389\end{itemize} 8390 8391\end{description}\end{quote} 8392 8393Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{data} when it is no longer needed. 8394 8395 8396\subsubsection{krb5\_pac\_get\_types - Return an array of buffer types in a PAC handle.} 8397\label{\detokenize{appdev/refs/api/krb5_pac_get_types:krb5-pac-get-types-return-an-array-of-buffer-types-in-a-pac-handle}}\label{\detokenize{appdev/refs/api/krb5_pac_get_types::doc}}\index{krb5\_pac\_get\_types (C function)} 8398 8399\begin{fulllineitems} 8400\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_get_types:c.krb5_pac_get_types}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_get\_types}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, size\_t *\sphinxstyleemphasis{ len}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}} **\sphinxstyleemphasis{ types}}{} 8401\end{fulllineitems} 8402 8403\begin{quote}\begin{description} 8404\item[{param}] \leavevmode 8405\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8406 8407\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8408 8409\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{len} - Number of entries in \sphinxstyleemphasis{types} 8410 8411\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{types} - Array of buffer types 8412 8413\end{description}\end{quote} 8414\begin{quote}\begin{description} 8415\item[{retval}] \leavevmode\begin{itemize} 8416\item {} 84170 Success; otherwise - Kerberos error codes 8418 8419\end{itemize} 8420 8421\end{description}\end{quote} 8422 8423 8424\subsubsection{krb5\_pac\_init - Create an empty Privilege Attribute Certificate (PAC) handle.} 8425\label{\detokenize{appdev/refs/api/krb5_pac_init:krb5-pac-init-create-an-empty-privilege-attribute-certificate-pac-handle}}\label{\detokenize{appdev/refs/api/krb5_pac_init::doc}}\index{krb5\_pac\_init (C function)} 8426 8427\begin{fulllineitems} 8428\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_init:c.krb5_pac_init}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_init}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}} *\sphinxstyleemphasis{ pac}}{} 8429\end{fulllineitems} 8430 8431\begin{quote}\begin{description} 8432\item[{param}] \leavevmode 8433\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8434 8435\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pac} - New PAC handle 8436 8437\end{description}\end{quote} 8438\begin{quote}\begin{description} 8439\item[{retval}] \leavevmode\begin{itemize} 8440\item {} 84410 Success; otherwise - Kerberos error codes 8442 8443\end{itemize} 8444 8445\end{description}\end{quote} 8446 8447Use {\hyperref[\detokenize{appdev/refs/api/krb5_pac_free:c.krb5_pac_free}]{\sphinxcrossref{\sphinxcode{krb5\_pac\_free()}}}} to free \sphinxstyleemphasis{pac} when it is no longer needed. 8448 8449 8450\subsubsection{krb5\_pac\_parse - Unparse an encoded PAC into a new handle.} 8451\label{\detokenize{appdev/refs/api/krb5_pac_parse:krb5-pac-parse-unparse-an-encoded-pac-into-a-new-handle}}\label{\detokenize{appdev/refs/api/krb5_pac_parse::doc}}\index{krb5\_pac\_parse (C function)} 8452 8453\begin{fulllineitems} 8454\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_parse:c.krb5_pac_parse}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_parse}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const void *\sphinxstyleemphasis{ ptr}, size\_t\sphinxstyleemphasis{ len}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}} *\sphinxstyleemphasis{ pac}}{} 8455\end{fulllineitems} 8456 8457\begin{quote}\begin{description} 8458\item[{param}] \leavevmode 8459\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8460 8461\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ptr} - PAC buffer 8462 8463\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{len} - Length of \sphinxstyleemphasis{ptr} 8464 8465\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pac} - PAC handle 8466 8467\end{description}\end{quote} 8468\begin{quote}\begin{description} 8469\item[{retval}] \leavevmode\begin{itemize} 8470\item {} 84710 Success; otherwise - Kerberos error codes 8472 8473\end{itemize} 8474 8475\end{description}\end{quote} 8476 8477Use {\hyperref[\detokenize{appdev/refs/api/krb5_pac_free:c.krb5_pac_free}]{\sphinxcrossref{\sphinxcode{krb5\_pac\_free()}}}} to free \sphinxstyleemphasis{pac} when it is no longer needed. 8478 8479 8480\subsubsection{krb5\_pac\_sign - Sign a PAC.} 8481\label{\detokenize{appdev/refs/api/krb5_pac_sign:krb5-pac-sign-sign-a-pac}}\label{\detokenize{appdev/refs/api/krb5_pac_sign::doc}}\index{krb5\_pac\_sign (C function)} 8482 8483\begin{fulllineitems} 8484\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_sign:c.krb5_pac_sign}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_sign}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ server\_key}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ privsvr\_key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 8485\end{fulllineitems} 8486 8487\begin{quote}\begin{description} 8488\item[{param}] \leavevmode 8489\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8490 8491\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8492 8493\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authtime} - Expected timestamp 8494 8495\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Expected principal name (or NULL) 8496 8497\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server\_key} - Key for server checksum 8498 8499\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr\_key} - Key for KDC checksum 8500 8501\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} - Signed PAC encoding 8502 8503\end{description}\end{quote} 8504 8505This function signs \sphinxstyleemphasis{pac} using the keys \sphinxstyleemphasis{server\_key} and \sphinxstyleemphasis{privsvr\_key} and returns the signed encoding in \sphinxstyleemphasis{data} . \sphinxstyleemphasis{pac} is modified to include the server and KDC checksum buffers. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{data} when it is no longer needed. 8506 8507\begin{sphinxadmonition}{note}{Note:} 8508New in 1.10 8509\end{sphinxadmonition} 8510 8511 8512\subsubsection{krb5\_pac\_sign\_ext - Sign a PAC, possibly with a specified realm.} 8513\label{\detokenize{appdev/refs/api/krb5_pac_sign_ext:krb5-pac-sign-ext-sign-a-pac-possibly-with-a-specified-realm}}\label{\detokenize{appdev/refs/api/krb5_pac_sign_ext::doc}}\index{krb5\_pac\_sign\_ext (C function)} 8514 8515\begin{fulllineitems} 8516\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_sign_ext:c.krb5_pac_sign_ext}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_sign\_ext}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ server\_key}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ privsvr\_key}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}}\sphinxstyleemphasis{ with\_realm}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 8517\end{fulllineitems} 8518 8519\begin{quote}\begin{description} 8520\item[{param}] \leavevmode 8521\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8522 8523\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8524 8525\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authtime} - Expected timestamp 8526 8527\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Principal name (or NULL) 8528 8529\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server\_key} - Key for server checksum 8530 8531\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr\_key} - Key for KDC checksum 8532 8533\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{with\_realm} - If true, include the realm of \sphinxstyleemphasis{principal} 8534 8535\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} - Signed PAC encoding 8536 8537\end{description}\end{quote} 8538 8539This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_pac_sign:c.krb5_pac_sign}]{\sphinxcrossref{\sphinxcode{krb5\_pac\_sign()}}}} , but adds a parameter \sphinxstyleemphasis{with\_realm} . If \sphinxstyleemphasis{with\_realm} is true, the PAC\_CLIENT\_INFO field of the signed PAC will include the realm of \sphinxstyleemphasis{principal} as well as the name. This flag is necessary to generate PACs for cross-realm S4U2Self referrals. 8540 8541\begin{sphinxadmonition}{note}{Note:} 8542New in 1.17 8543\end{sphinxadmonition} 8544 8545 8546\subsubsection{krb5\_pac\_verify - Verify a PAC.} 8547\label{\detokenize{appdev/refs/api/krb5_pac_verify::doc}}\label{\detokenize{appdev/refs/api/krb5_pac_verify:krb5-pac-verify-verify-a-pac}}\index{krb5\_pac\_verify (C function)} 8548 8549\begin{fulllineitems} 8550\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_verify:c.krb5_pac_verify}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_verify}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ server}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ privsvr}}{} 8551\end{fulllineitems} 8552 8553\begin{quote}\begin{description} 8554\item[{param}] \leavevmode 8555\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8556 8557\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8558 8559\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authtime} - Expected timestamp 8560 8561\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Expected principal name (or NULL) 8562 8563\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Key to validate server checksum (or NULL) 8564 8565\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr} - Key to validate KDC checksum (or NULL) 8566 8567\end{description}\end{quote} 8568\begin{quote}\begin{description} 8569\item[{retval}] \leavevmode\begin{itemize} 8570\item {} 85710 Success; otherwise - Kerberos error codes 8572 8573\end{itemize} 8574 8575\end{description}\end{quote} 8576 8577This function validates \sphinxstyleemphasis{pac} against the supplied \sphinxstyleemphasis{server} , \sphinxstyleemphasis{privsvr} , \sphinxstyleemphasis{principal} and \sphinxstyleemphasis{authtime} . If \sphinxstyleemphasis{principal} is NULL, the principal and authtime are not verified. If \sphinxstyleemphasis{server} or \sphinxstyleemphasis{privsvr} is NULL, the corresponding checksum is not verified. 8578 8579If successful, \sphinxstyleemphasis{pac} is marked as verified. 8580 8581\begin{sphinxadmonition}{note}{Note:} 8582A checksum mismatch can occur if the PAC was copied from a cross-realm TGT by an ignorant KDC; also macOS 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. 8583\end{sphinxadmonition} 8584 8585 8586\subsubsection{krb5\_pac\_verify\_ext - Verify a PAC, possibly from a specified realm.} 8587\label{\detokenize{appdev/refs/api/krb5_pac_verify_ext:krb5-pac-verify-ext-verify-a-pac-possibly-from-a-specified-realm}}\label{\detokenize{appdev/refs/api/krb5_pac_verify_ext::doc}}\index{krb5\_pac\_verify\_ext (C function)} 8588 8589\begin{fulllineitems} 8590\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_verify_ext:c.krb5_pac_verify_ext}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_verify\_ext}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ principal}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ server}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ privsvr}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}}\sphinxstyleemphasis{ with\_realm}}{} 8591\end{fulllineitems} 8592 8593\begin{quote}\begin{description} 8594\item[{param}] \leavevmode 8595\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8596 8597\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} - PAC handle 8598 8599\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authtime} - Expected timestamp 8600 8601\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} - Expected principal name (or NULL) 8602 8603\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Key to validate server checksum (or NULL) 8604 8605\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr} - Key to validate KDC checksum (or NULL) 8606 8607\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{with\_realm} - If true, expect the realm of \sphinxstyleemphasis{principal} 8608 8609\end{description}\end{quote} 8610 8611This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_pac_verify:c.krb5_pac_verify}]{\sphinxcrossref{\sphinxcode{krb5\_pac\_verify()}}}} , but adds a parameter \sphinxstyleemphasis{with\_realm} . If \sphinxstyleemphasis{with\_realm} is true, the PAC\_CLIENT\_INFO field is expected to include the realm of \sphinxstyleemphasis{principal} as well as the name. This flag is necessary to verify PACs in cross-realm S4U2Self referral TGTs. 8612 8613\begin{sphinxadmonition}{note}{Note:} 8614New in 1.17 8615\end{sphinxadmonition} 8616 8617 8618\subsubsection{krb5\_pac\_get\_client\_info} 8619\label{\detokenize{appdev/refs/api/krb5_pac_get_client_info:krb5-pac-get-client-info}}\label{\detokenize{appdev/refs/api/krb5_pac_get_client_info::doc}}\index{krb5\_pac\_get\_client\_info (C function)} 8620 8621\begin{fulllineitems} 8622\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_get_client_info:c.krb5_pac_get_client_info}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_pac\_get\_client\_info}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{krb5\_pac}}}\sphinxstyleemphasis{ pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} *\sphinxstyleemphasis{ authtime\_out}, char **\sphinxstyleemphasis{ princname\_out}}{} 8623\end{fulllineitems} 8624 8625\begin{quote}\begin{description} 8626\item[{param}] \leavevmode 8627\sphinxstylestrong{context} 8628 8629\sphinxstylestrong{pac} 8630 8631\sphinxstylestrong{authtime\_out} 8632 8633\sphinxstylestrong{princname\_out} 8634 8635\end{description}\end{quote} 8636 8637 8638\subsubsection{krb5\_prepend\_error\_message - Add a prefix to the message for an error code.} 8639\label{\detokenize{appdev/refs/api/krb5_prepend_error_message:krb5-prepend-error-message-add-a-prefix-to-the-message-for-an-error-code}}\label{\detokenize{appdev/refs/api/krb5_prepend_error_message::doc}}\index{krb5\_prepend\_error\_message (C function)} 8640 8641\begin{fulllineitems} 8642\phantomsection\label{\detokenize{appdev/refs/api/krb5_prepend_error_message:c.krb5_prepend_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_prepend\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}, const char *\sphinxstyleemphasis{ fmt}, ...}{} 8643\end{fulllineitems} 8644 8645\begin{quote}\begin{description} 8646\item[{param}] \leavevmode 8647\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 8648 8649\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 8650 8651\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} - Format string for error message prefix 8652 8653\end{description}\end{quote} 8654 8655Format a message and prepend it to the current message for \sphinxstyleemphasis{code} . The prefix will be separated from the old message with a colon and space. 8656 8657 8658\subsubsection{krb5\_principal2salt - Convert a principal name into the default salt for that principal.} 8659\label{\detokenize{appdev/refs/api/krb5_principal2salt:krb5-principal2salt-convert-a-principal-name-into-the-default-salt-for-that-principal}}\label{\detokenize{appdev/refs/api/krb5_principal2salt::doc}}\index{krb5\_principal2salt (C function)} 8660 8661\begin{fulllineitems} 8662\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal2salt:c.krb5_principal2salt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_principal2salt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ pr}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ ret}}{} 8663\end{fulllineitems} 8664 8665\begin{quote}\begin{description} 8666\item[{param}] \leavevmode 8667\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8668 8669\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pr} - Principal name 8670 8671\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret} - Default salt for \sphinxstyleemphasis{pr} to be filled in 8672 8673\end{description}\end{quote} 8674\begin{quote}\begin{description} 8675\item[{retval}] \leavevmode\begin{itemize} 8676\item {} 86770 Success; otherwise - Kerberos error codes 8678 8679\end{itemize} 8680 8681\end{description}\end{quote} 8682 8683 8684\subsubsection{krb5\_rd\_cred - Read and validate a KRB-CRED message.} 8685\label{\detokenize{appdev/refs/api/krb5_rd_cred:krb5-rd-cred-read-and-validate-a-krb-cred-message}}\label{\detokenize{appdev/refs/api/krb5_rd_cred::doc}}\index{krb5\_rd\_cred (C function)} 8686 8687\begin{fulllineitems} 8688\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_cred:c.krb5_rd_cred}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_cred}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ creddata}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} ***\sphinxstyleemphasis{ creds\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 8689\end{fulllineitems} 8690 8691\begin{quote}\begin{description} 8692\item[{param}] \leavevmode 8693\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8694 8695\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8696 8697\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creddata} - \sphinxstylestrong{KRB-CRED} message 8698 8699\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds\_out} - Null-terminated array of forwarded credentials 8700 8701\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay data (NULL if not needed) 8702 8703\end{description}\end{quote} 8704\begin{quote}\begin{description} 8705\item[{retval}] \leavevmode\begin{itemize} 8706\item {} 87070 Success; otherwise - Kerberos error codes 8708 8709\end{itemize} 8710 8711\end{description}\end{quote} 8712\begin{quote} 8713 8714\sphinxstyleemphasis{creddata} will be decrypted using the receiving subkey if it is present in \sphinxstyleemphasis{auth\_context} , or the session key if the receiving subkey is not present or fails to decrypt the message. 8715\end{quote} 8716 8717Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_tgt_creds:c.krb5_free_tgt_creds}]{\sphinxcrossref{\sphinxcode{krb5\_free\_tgt\_creds()}}}} to free \sphinxstyleemphasis{creds\_out} when it is no longer needed. 8718 8719\begin{sphinxadmonition}{note}{Note:} 8720The \sphinxstyleemphasis{rdata\_out} argument is required if the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} .{}` 8721\end{sphinxadmonition} 8722 8723 8724\subsubsection{krb5\_rd\_error - Decode a KRB-ERROR message.} 8725\label{\detokenize{appdev/refs/api/krb5_rd_error:krb5-rd-error-decode-a-krb-error-message}}\label{\detokenize{appdev/refs/api/krb5_rd_error::doc}}\index{krb5\_rd\_error (C function)} 8726 8727\begin{fulllineitems} 8728\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_error:c.krb5_rd_error}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_error}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ enc\_errbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{krb5\_error}}} **\sphinxstyleemphasis{ dec\_error}}{} 8729\end{fulllineitems} 8730 8731\begin{quote}\begin{description} 8732\item[{param}] \leavevmode 8733\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8734 8735\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enc\_errbuf} - Encoded error message 8736 8737\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{dec\_error} - Decoded error message 8738 8739\end{description}\end{quote} 8740\begin{quote}\begin{description} 8741\item[{retval}] \leavevmode\begin{itemize} 8742\item {} 87430 Success; otherwise - Kerberos error codes 8744 8745\end{itemize} 8746 8747\end{description}\end{quote} 8748 8749This function processes \sphinxstylestrong{KRB-ERROR} message \sphinxstyleemphasis{enc\_errbuf} and returns an allocated structure \sphinxstyleemphasis{dec\_error} containing the error message. Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_error:c.krb5_free_error}]{\sphinxcrossref{\sphinxcode{krb5\_free\_error()}}}} to free \sphinxstyleemphasis{dec\_error} when it is no longer needed. 8750 8751 8752\subsubsection{krb5\_rd\_priv - Process a KRB-PRIV message.} 8753\label{\detokenize{appdev/refs/api/krb5_rd_priv:krb5-rd-priv-process-a-krb-priv-message}}\label{\detokenize{appdev/refs/api/krb5_rd_priv::doc}}\index{krb5\_rd\_priv (C function)} 8754 8755\begin{fulllineitems} 8756\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_priv:c.krb5_rd_priv}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_priv}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ userdata\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 8757\end{fulllineitems} 8758 8759\begin{quote}\begin{description} 8760\item[{param}] \leavevmode 8761\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8762 8763\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication structure 8764 8765\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} - \sphinxstylestrong{KRB-PRIV} message to be parsed 8766 8767\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{userdata\_out} - Data parsed from \sphinxstylestrong{KRB-PRIV} message 8768 8769\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay data. Specify NULL if not needed 8770 8771\end{description}\end{quote} 8772\begin{quote}\begin{description} 8773\item[{retval}] \leavevmode\begin{itemize} 8774\item {} 87750 Success; otherwise - Kerberos error codes 8776 8777\end{itemize} 8778 8779\end{description}\end{quote} 8780 8781This function parses a \sphinxstylestrong{KRB-PRIV} message, verifies its integrity, and stores its unencrypted data into \sphinxstyleemphasis{userdata\_out} . 8782 8783If \sphinxstyleemphasis{auth\_context} has a remote address set, the address will be used to verify the sender address in the KRB-PRIV message. If \sphinxstyleemphasis{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. 8784 8785If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} , the sequence number of the KRB-PRIV message is checked against the remote sequence number field of \sphinxstyleemphasis{auth\_context} . Otherwise, the sequence number is not used. 8786 8787If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} flag is set in \sphinxstyleemphasis{auth\_context} , then the timestamp in the message is verified to be within the permitted clock skew of the current time, and the message is checked against an in-memory replay cache to detect reflections or replays. 8788 8789Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{userdata\_out} when it is no longer needed. 8790 8791\begin{sphinxadmonition}{note}{Note:} 8792The \sphinxstyleemphasis{rdata\_out} argument is required if the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} . 8793\end{sphinxadmonition} 8794 8795 8796\subsubsection{krb5\_rd\_rep - Parse and decrypt a KRB\_AP\_REP message.} 8797\label{\detokenize{appdev/refs/api/krb5_rd_rep::doc}}\label{\detokenize{appdev/refs/api/krb5_rd_rep:krb5-rd-rep-parse-and-decrypt-a-krb-ap-rep-message}}\index{krb5\_rd\_rep (C function)} 8798 8799\begin{fulllineitems} 8800\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_rep:c.krb5_rd_rep}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_rep}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{krb5\_ap\_rep\_enc\_part}}} **\sphinxstyleemphasis{ repl}}{} 8801\end{fulllineitems} 8802 8803\begin{quote}\begin{description} 8804\item[{param}] \leavevmode 8805\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8806 8807\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8808 8809\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} - AP-REP message 8810 8811\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{repl} - Decrypted reply message 8812 8813\end{description}\end{quote} 8814\begin{quote}\begin{description} 8815\item[{retval}] \leavevmode\begin{itemize} 8816\item {} 88170 Success; otherwise - Kerberos error codes 8818 8819\end{itemize} 8820 8821\end{description}\end{quote} 8822 8823This function parses, decrypts and verifies a message from \sphinxstyleemphasis{inbuf} and fills in \sphinxstyleemphasis{repl} with a pointer to allocated memory containing the fields from the encrypted response. 8824 8825Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_ap_rep_enc_part:c.krb5_free_ap_rep_enc_part}]{\sphinxcrossref{\sphinxcode{krb5\_free\_ap\_rep\_enc\_part()}}}} to free \sphinxstyleemphasis{repl} when it is no longer needed. 8826 8827 8828\subsubsection{krb5\_rd\_rep\_dce - Parse and decrypt a KRB\_AP\_REP message for DCE RPC.} 8829\label{\detokenize{appdev/refs/api/krb5_rd_rep_dce::doc}}\label{\detokenize{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)} 8830 8831\begin{fulllineitems} 8832\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_rep_dce:c.krb5_rd_rep_dce}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_rep\_dce}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}} *\sphinxstyleemphasis{ nonce}}{} 8833\end{fulllineitems} 8834 8835\begin{quote}\begin{description} 8836\item[{param}] \leavevmode 8837\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8838 8839\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8840 8841\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} - AP-REP message 8842 8843\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{nonce} - Sequence number from the decrypted reply 8844 8845\end{description}\end{quote} 8846\begin{quote}\begin{description} 8847\item[{retval}] \leavevmode\begin{itemize} 8848\item {} 88490 Success; otherwise - Kerberos error codes 8850 8851\end{itemize} 8852 8853\end{description}\end{quote} 8854 8855This function parses, decrypts and verifies a message from \sphinxstyleemphasis{inbuf} and fills in \sphinxstyleemphasis{nonce} with a decrypted reply sequence number. 8856 8857 8858\subsubsection{krb5\_rd\_req - Parse and decrypt a KRB\_AP\_REQ message.} 8859\label{\detokenize{appdev/refs/api/krb5_rd_req::doc}}\label{\detokenize{appdev/refs/api/krb5_rd_req:krb5-rd-req-parse-and-decrypt-a-krb-ap-req-message}}\index{krb5\_rd\_req (C function)} 8860 8861\begin{fulllineitems} 8862\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_req:c.krb5_rd_req}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_req}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{krb5\_const\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} *\sphinxstyleemphasis{ ap\_req\_options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} **\sphinxstyleemphasis{ ticket}}{} 8863\end{fulllineitems} 8864 8865\begin{quote}\begin{description} 8866\item[{param}] \leavevmode 8867\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8868 8869\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} - Pre-existing or newly created auth context 8870 8871\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} - AP-REQ message to be parsed 8872 8873\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Matching principal for server, or NULL to allow any principal in keytab 8874 8875\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table, or NULL to use the default 8876 8877\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ap\_req\_options} - If non-null, the AP-REQ flags on output 8878 8879\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ticket} - If non-null, ticket from the AP-REQ message 8880 8881\end{description}\end{quote} 8882\begin{quote}\begin{description} 8883\item[{retval}] \leavevmode\begin{itemize} 8884\item {} 88850 Success; otherwise - Kerberos error codes 8886 8887\end{itemize} 8888 8889\end{description}\end{quote} 8890 8891This function parses, decrypts and verifies a AP-REQ message from \sphinxstyleemphasis{inbuf} and stores the authenticator in \sphinxstyleemphasis{auth\_context} . 8892 8893If a keyblock was specified in \sphinxstyleemphasis{auth\_context} using {\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setuseruserkey:c.krb5_auth_con_setuseruserkey}]{\sphinxcrossref{\sphinxcode{krb5\_auth\_con\_setuseruserkey()}}}} , that key is used to decrypt the ticket in AP-REQ message and \sphinxstyleemphasis{keytab} is ignored. In this case, \sphinxstyleemphasis{server} should be specified as a complete principal name to allow for proper transited-path checking and replay cache selection. 8894 8895Otherwise, the decryption key is obtained from \sphinxstyleemphasis{keytab} , or from the default keytab if it is NULL. In this case, \sphinxstyleemphasis{server} may be a complete principal name, a matching principal (see {\hyperref[\detokenize{appdev/refs/api/krb5_sname_match:c.krb5_sname_match}]{\sphinxcrossref{\sphinxcode{krb5\_sname\_match()}}}} ), or NULL to match any principal name. The keys tried against the encrypted part of the ticket are determined as follows: 8896\begin{itemize} 8897\item {} 8898If \sphinxstyleemphasis{server} is a complete principal name, then its entry in \sphinxstyleemphasis{keytab} is tried. 8899 8900\item {} 8901Otherwise, if \sphinxstyleemphasis{keytab} is iterable, then all entries in \sphinxstyleemphasis{keytab} which match \sphinxstyleemphasis{server} are tried. 8902 8903\item {} 8904Otherwise, the server principal in the ticket must match \sphinxstyleemphasis{server} , and its entry in \sphinxstyleemphasis{keytab} is tried. 8905 8906\end{itemize} 8907 8908The client specified in the decrypted authenticator must match the client specified in the decrypted ticket. 8909 8910If the \sphinxstyleemphasis{remote\_addr} field of \sphinxstyleemphasis{auth\_context} is set, the request must come from that address. 8911 8912If a replay cache handle is provided in the \sphinxstyleemphasis{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 \sphinxstyleemphasis{auth\_context} . 8913 8914Various other checks are performed on the decoded data, including cross-realm policy, clockskew, and ticket validation times. 8915 8916On success the authenticator, subkey, and remote sequence number of the request are stored in \sphinxstyleemphasis{auth\_context} . If the {\hyperref[\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED}]{\sphinxcrossref{\sphinxcode{AP\_OPTS\_MUTUAL\_REQUIRED}}}} bit is set, the local sequence number is XORed with the remote sequence number in the request. 8917 8918Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_ticket:c.krb5_free_ticket}]{\sphinxcrossref{\sphinxcode{krb5\_free\_ticket()}}}} to free \sphinxstyleemphasis{ticket} when it is no longer needed. 8919 8920 8921\subsubsection{krb5\_rd\_safe - Process KRB-SAFE message.} 8922\label{\detokenize{appdev/refs/api/krb5_rd_safe:krb5-rd-safe-process-krb-safe-message}}\label{\detokenize{appdev/refs/api/krb5_rd_safe::doc}}\index{krb5\_rd\_safe (C function)} 8923 8924\begin{fulllineitems} 8925\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_safe:c.krb5_rd_safe}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_rd\_safe}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ userdata\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{krb5\_replay\_data}}} *\sphinxstyleemphasis{ rdata\_out}}{} 8926\end{fulllineitems} 8927 8928\begin{quote}\begin{description} 8929\item[{param}] \leavevmode 8930\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8931 8932\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 8933 8934\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} - \sphinxstylestrong{KRB-SAFE} message to be parsed 8935 8936\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{userdata\_out} - Data parsed from \sphinxstylestrong{KRB-SAFE} message 8937 8938\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} - Replay data. Specify NULL if not needed 8939 8940\end{description}\end{quote} 8941\begin{quote}\begin{description} 8942\item[{retval}] \leavevmode\begin{itemize} 8943\item {} 89440 Success; otherwise - Kerberos error codes 8945 8946\end{itemize} 8947 8948\end{description}\end{quote} 8949 8950This function parses a \sphinxstylestrong{KRB-SAFE} message, verifies its integrity, and stores its data into \sphinxstyleemphasis{userdata\_out} . 8951 8952If \sphinxstyleemphasis{auth\_context} has a remote address set, the address will be used to verify the sender address in the KRB-SAFE message. If \sphinxstyleemphasis{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. 8953 8954If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} , the sequence number of the KRB-SAFE message is checked against the remote sequence number field of \sphinxstyleemphasis{auth\_context} . Otherwise, the sequence number is not used. 8955 8956If the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}}} flag is set in \sphinxstyleemphasis{auth\_context} , then the timestamp in the message is verified to be within the permitted clock skew of the current time, and the message is checked against an in-memory replay cache to detect reflections or replays. 8957 8958Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_data\_contents()}}}} to free \sphinxstyleemphasis{userdata\_out} when it is no longer needed. 8959 8960\begin{sphinxadmonition}{note}{Note:} 8961The \sphinxstyleemphasis{rdata\_out} argument is required if the {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}}} or {\hyperref[\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}]{\sphinxcrossref{\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}}} flag is set in \sphinxstyleemphasis{auth\_context} . 8962\end{sphinxadmonition} 8963 8964 8965\subsubsection{krb5\_read\_password - Read a password from keyboard input.} 8966\label{\detokenize{appdev/refs/api/krb5_read_password:krb5-read-password-read-a-password-from-keyboard-input}}\label{\detokenize{appdev/refs/api/krb5_read_password::doc}}\index{krb5\_read\_password (C function)} 8967 8968\begin{fulllineitems} 8969\phantomsection\label{\detokenize{appdev/refs/api/krb5_read_password:c.krb5_read_password}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_read\_password}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const char *\sphinxstyleemphasis{ prompt}, const char *\sphinxstyleemphasis{ prompt2}, char *\sphinxstyleemphasis{ return\_pwd}, unsigned int *\sphinxstyleemphasis{ size\_return}}{} 8970\end{fulllineitems} 8971 8972\begin{quote}\begin{description} 8973\item[{param}] \leavevmode 8974\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 8975 8976\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompt} - First user prompt when reading password 8977 8978\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompt2} - Second user prompt (NULL to prompt only once) 8979 8980\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{return\_pwd} - Returned password 8981 8982\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{size\_return} - On input, maximum size of password; on output, size of password read 8983 8984\end{description}\end{quote} 8985\begin{quote}\begin{description} 8986\item[{retval}] \leavevmode\begin{itemize} 8987\item {} 89880 Success 8989 8990\end{itemize} 8991 8992\item[{return}] \leavevmode\begin{itemize} 8993\item {} 8994Error in reading or verifying the password 8995 8996\item {} 8997Kerberos error codes 8998 8999\end{itemize} 9000 9001\end{description}\end{quote} 9002 9003This function reads a password from keyboard input and stores it in \sphinxstyleemphasis{return\_pwd} . \sphinxstyleemphasis{size\_return} should be set by the caller to the amount of storage space available in \sphinxstyleemphasis{return\_pwd} ; on successful return, it will be set to the length of the password read. 9004\begin{quote} 9005 9006\sphinxstyleemphasis{prompt} is printed to the terminal, followed by”:”, and then a password is read from the keyboard. 9007\end{quote} 9008 9009If \sphinxstyleemphasis{prompt2} is NULL, the password is read only once. Otherwise, \sphinxstyleemphasis{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. 9010 9011Echoing is turned off when the password is read. 9012 9013 9014\subsubsection{krb5\_salttype\_to\_string - Convert a salt type to a string.} 9015\label{\detokenize{appdev/refs/api/krb5_salttype_to_string::doc}}\label{\detokenize{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)} 9016 9017\begin{fulllineitems} 9018\phantomsection\label{\detokenize{appdev/refs/api/krb5_salttype_to_string:c.krb5_salttype_to_string}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_salttype\_to\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}}\sphinxstyleemphasis{ salttype}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}}{} 9019\end{fulllineitems} 9020 9021\begin{quote}\begin{description} 9022\item[{param}] \leavevmode 9023\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salttype} - Salttype to convert 9024 9025\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to receive the converted string 9026 9027\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Storage available in \sphinxstyleemphasis{buffer} 9028 9029\end{description}\end{quote} 9030\begin{quote}\begin{description} 9031\item[{retval}] \leavevmode\begin{itemize} 9032\item {} 90330 Success; otherwise - Kerberos error codes 9034 9035\end{itemize} 9036 9037\end{description}\end{quote} 9038 9039 9040\subsubsection{krb5\_server\_decrypt\_ticket\_keytab - Decrypt a ticket using the specified key table.} 9041\label{\detokenize{appdev/refs/api/krb5_server_decrypt_ticket_keytab:krb5-server-decrypt-ticket-keytab-decrypt-a-ticket-using-the-specified-key-table}}\label{\detokenize{appdev/refs/api/krb5_server_decrypt_ticket_keytab::doc}}\index{krb5\_server\_decrypt\_ticket\_keytab (C function)} 9042 9043\begin{fulllineitems} 9044\phantomsection\label{\detokenize{appdev/refs/api/krb5_server_decrypt_ticket_keytab:c.krb5_server_decrypt_ticket_keytab}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_server\_decrypt\_ticket\_keytab}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ kt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} *\sphinxstyleemphasis{ ticket}}{} 9045\end{fulllineitems} 9046 9047\begin{quote}\begin{description} 9048\item[{param}] \leavevmode 9049\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9050 9051\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{kt} - Key table 9052 9053\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ticket} - Ticket to be decrypted 9054 9055\end{description}\end{quote} 9056\begin{quote}\begin{description} 9057\item[{retval}] \leavevmode\begin{itemize} 9058\item {} 90590 Success; otherwise - Kerberos error codes 9060 9061\end{itemize} 9062 9063\end{description}\end{quote} 9064 9065This function takes a \sphinxstyleemphasis{ticket} as input and decrypts it using key data from \sphinxstyleemphasis{kt} . The result is placed into \sphinxstyleemphasis{ticket-\textgreater{}enc\_part2} . 9066 9067 9068\subsubsection{krb5\_set\_default\_tgs\_enctypes - Set default TGS encryption types in a krb5\_context structure.} 9069\label{\detokenize{appdev/refs/api/krb5_set_default_tgs_enctypes::doc}}\label{\detokenize{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)} 9070 9071\begin{fulllineitems} 9072\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_default_tgs_enctypes:c.krb5_set_default_tgs_enctypes}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_default\_tgs\_enctypes}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ etypes}}{} 9073\end{fulllineitems} 9074 9075\begin{quote}\begin{description} 9076\item[{param}] \leavevmode 9077\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9078 9079\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{etypes} - Encryption type(s) to set 9080 9081\end{description}\end{quote} 9082\begin{quote}\begin{description} 9083\item[{retval}] \leavevmode\begin{itemize} 9084\item {} 90850 Success 9086 9087\item {} 9088KRB5\_PROG\_ETYPE\_NOSUPP Program lacks support for encryption type 9089 9090\end{itemize} 9091 9092\item[{return}] \leavevmode\begin{itemize} 9093\item {} 9094Kerberos error codes 9095 9096\end{itemize} 9097 9098\end{description}\end{quote} 9099 9100This function sets the default enctype list for TGS requests made using \sphinxstyleemphasis{context} to \sphinxstyleemphasis{etypes} . 9101 9102\begin{sphinxadmonition}{note}{Note:} 9103This overrides the default list (from config file or built-in). 9104\end{sphinxadmonition} 9105 9106 9107\subsubsection{krb5\_set\_error\_message - Set an extended error message for an error code.} 9108\label{\detokenize{appdev/refs/api/krb5_set_error_message::doc}}\label{\detokenize{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)} 9109 9110\begin{fulllineitems} 9111\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_error_message:c.krb5_set_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_set\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}, const char *\sphinxstyleemphasis{ fmt}, ...}{} 9112\end{fulllineitems} 9113 9114\begin{quote}\begin{description} 9115\item[{param}] \leavevmode 9116\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 9117 9118\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 9119 9120\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} - Error string for the error code 9121 9122\end{description}\end{quote} 9123 9124 9125\subsubsection{krb5\_set\_kdc\_recv\_hook - Set a KDC post-receive hook function.} 9126\label{\detokenize{appdev/refs/api/krb5_set_kdc_recv_hook::doc}}\label{\detokenize{appdev/refs/api/krb5_set_kdc_recv_hook:krb5-set-kdc-recv-hook-set-a-kdc-post-receive-hook-function}}\index{krb5\_set\_kdc\_recv\_hook (C function)} 9127 9128\begin{fulllineitems} 9129\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_kdc_recv_hook:c.krb5_set_kdc_recv_hook}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_set\_kdc\_recv\_hook}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_post_recv_fn:c.krb5_post_recv_fn}]{\sphinxcrossref{krb5\_post\_recv\_fn}}}\sphinxstyleemphasis{ recv\_hook}, void *\sphinxstyleemphasis{ data}}{} 9130\end{fulllineitems} 9131 9132\begin{quote}\begin{description} 9133\item[{param}] \leavevmode 9134\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - The library context. 9135 9136\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{recv\_hook} - Hook function (or NULL to disable the hook) 9137 9138\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Callback data to be passed to \sphinxstyleemphasis{recv\_hook} 9139 9140\end{description}\end{quote} 9141\begin{quote} 9142 9143\sphinxstyleemphasis{recv\_hook} will be called after a reply is received from a KDC during a call to a library function such as {\hyperref[\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}]{\sphinxcrossref{\sphinxcode{krb5\_get\_credentials()}}}} . The hook function may inspect or override the reply. This hook will not be executed if the pre-send hook returns a synthetic reply. 9144\end{quote} 9145 9146\begin{sphinxadmonition}{note}{Note:} 9147New in 1.15 9148\end{sphinxadmonition} 9149 9150 9151\subsubsection{krb5\_set\_kdc\_send\_hook - Set a KDC pre-send hook function.} 9152\label{\detokenize{appdev/refs/api/krb5_set_kdc_send_hook:krb5-set-kdc-send-hook-set-a-kdc-pre-send-hook-function}}\label{\detokenize{appdev/refs/api/krb5_set_kdc_send_hook::doc}}\index{krb5\_set\_kdc\_send\_hook (C function)} 9153 9154\begin{fulllineitems} 9155\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_kdc_send_hook:c.krb5_set_kdc_send_hook}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_set\_kdc\_send\_hook}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pre_send_fn:c.krb5_pre_send_fn}]{\sphinxcrossref{krb5\_pre\_send\_fn}}}\sphinxstyleemphasis{ send\_hook}, void *\sphinxstyleemphasis{ data}}{} 9156\end{fulllineitems} 9157 9158\begin{quote}\begin{description} 9159\item[{param}] \leavevmode 9160\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9161 9162\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{send\_hook} - Hook function (or NULL to disable the hook) 9163 9164\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Callback data to be passed to \sphinxstyleemphasis{send\_hook} 9165 9166\end{description}\end{quote} 9167\begin{quote} 9168 9169\sphinxstyleemphasis{send\_hook} will be called before messages are sent to KDCs by library functions such as {\hyperref[\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}]{\sphinxcrossref{\sphinxcode{krb5\_get\_credentials()}}}} . The hook function may inspect, override, or synthesize its own reply to the message. 9170\end{quote} 9171 9172\begin{sphinxadmonition}{note}{Note:} 9173New in 1.15 9174\end{sphinxadmonition} 9175 9176 9177\subsubsection{krb5\_set\_real\_time - Set time offset field in a krb5\_context structure.} 9178\label{\detokenize{appdev/refs/api/krb5_set_real_time::doc}}\label{\detokenize{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)} 9179 9180\begin{fulllineitems} 9181\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_real_time:c.krb5_set_real_time}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_set\_real\_time}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ seconds}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}}\sphinxstyleemphasis{ microseconds}}{} 9182\end{fulllineitems} 9183 9184\begin{quote}\begin{description} 9185\item[{param}] \leavevmode 9186\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9187 9188\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{seconds} - Real time, seconds portion 9189 9190\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{microseconds} - Real time, microseconds portion 9191 9192\end{description}\end{quote} 9193\begin{quote}\begin{description} 9194\item[{retval}] \leavevmode\begin{itemize} 9195\item {} 91960 Success; otherwise - Kerberos error codes 9197 9198\end{itemize} 9199 9200\end{description}\end{quote} 9201 9202This function sets the time offset in \sphinxstyleemphasis{context} to the difference between the system time and the real time as determined by \sphinxstyleemphasis{seconds} and \sphinxstyleemphasis{microseconds} . 9203 9204 9205\subsubsection{krb5\_string\_to\_cksumtype - Convert a string to a checksum type.} 9206\label{\detokenize{appdev/refs/api/krb5_string_to_cksumtype:krb5-string-to-cksumtype-convert-a-string-to-a-checksum-type}}\label{\detokenize{appdev/refs/api/krb5_string_to_cksumtype::doc}}\index{krb5\_string\_to\_cksumtype (C function)} 9207 9208\begin{fulllineitems} 9209\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_cksumtype:c.krb5_string_to_cksumtype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_string\_to\_cksumtype}}{char *\sphinxstyleemphasis{ string}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}} *\sphinxstyleemphasis{ cksumtypep}}{} 9210\end{fulllineitems} 9211 9212\begin{quote}\begin{description} 9213\item[{param}] \leavevmode 9214\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to be converted 9215 9216\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksumtypep} - Checksum type to be filled in 9217 9218\end{description}\end{quote} 9219\begin{quote}\begin{description} 9220\item[{retval}] \leavevmode\begin{itemize} 9221\item {} 92220 Success; otherwise - EINVAL 9223 9224\end{itemize} 9225 9226\end{description}\end{quote} 9227 9228 9229\subsubsection{krb5\_string\_to\_deltat - Convert a string to a delta time value.} 9230\label{\detokenize{appdev/refs/api/krb5_string_to_deltat::doc}}\label{\detokenize{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)} 9231 9232\begin{fulllineitems} 9233\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_deltat:c.krb5_string_to_deltat}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_string\_to\_deltat}}{char *\sphinxstyleemphasis{ string}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}} *\sphinxstyleemphasis{ deltatp}}{} 9234\end{fulllineitems} 9235 9236\begin{quote}\begin{description} 9237\item[{param}] \leavevmode 9238\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to be converted 9239 9240\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{deltatp} - Delta time to be filled in 9241 9242\end{description}\end{quote} 9243\begin{quote}\begin{description} 9244\item[{retval}] \leavevmode\begin{itemize} 9245\item {} 92460 Success; otherwise - KRB5\_DELTAT\_BADFORMAT 9247 9248\end{itemize} 9249 9250\end{description}\end{quote} 9251 9252 9253\subsubsection{krb5\_string\_to\_enctype - Convert a string to an encryption type.} 9254\label{\detokenize{appdev/refs/api/krb5_string_to_enctype::doc}}\label{\detokenize{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)} 9255 9256\begin{fulllineitems} 9257\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_enctype:c.krb5_string_to_enctype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_string\_to\_enctype}}{char *\sphinxstyleemphasis{ string}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ enctypep}}{} 9258\end{fulllineitems} 9259 9260\begin{quote}\begin{description} 9261\item[{param}] \leavevmode 9262\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to convert to an encryption type 9263 9264\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{enctypep} - Encryption type 9265 9266\end{description}\end{quote} 9267\begin{quote}\begin{description} 9268\item[{retval}] \leavevmode\begin{itemize} 9269\item {} 92700 Success; otherwise - EINVAL 9271 9272\end{itemize} 9273 9274\end{description}\end{quote} 9275 9276 9277\subsubsection{krb5\_string\_to\_salttype - Convert a string to a salt type.} 9278\label{\detokenize{appdev/refs/api/krb5_string_to_salttype:krb5-string-to-salttype-convert-a-string-to-a-salt-type}}\label{\detokenize{appdev/refs/api/krb5_string_to_salttype::doc}}\index{krb5\_string\_to\_salttype (C function)} 9279 9280\begin{fulllineitems} 9281\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_salttype:c.krb5_string_to_salttype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_string\_to\_salttype}}{char *\sphinxstyleemphasis{ string}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} *\sphinxstyleemphasis{ salttypep}}{} 9282\end{fulllineitems} 9283 9284\begin{quote}\begin{description} 9285\item[{param}] \leavevmode 9286\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to convert to an encryption type 9287 9288\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{salttypep} - Salt type to be filled in 9289 9290\end{description}\end{quote} 9291\begin{quote}\begin{description} 9292\item[{retval}] \leavevmode\begin{itemize} 9293\item {} 92940 Success; otherwise - EINVAL 9295 9296\end{itemize} 9297 9298\end{description}\end{quote} 9299 9300 9301\subsubsection{krb5\_string\_to\_timestamp - Convert a string to a timestamp.} 9302\label{\detokenize{appdev/refs/api/krb5_string_to_timestamp::doc}}\label{\detokenize{appdev/refs/api/krb5_string_to_timestamp:krb5-string-to-timestamp-convert-a-string-to-a-timestamp}}\index{krb5\_string\_to\_timestamp (C function)} 9303 9304\begin{fulllineitems} 9305\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_timestamp:c.krb5_string_to_timestamp}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_string\_to\_timestamp}}{char *\sphinxstyleemphasis{ string}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} *\sphinxstyleemphasis{ timestampp}}{} 9306\end{fulllineitems} 9307 9308\begin{quote}\begin{description} 9309\item[{param}] \leavevmode 9310\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to be converted 9311 9312\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{timestampp} - Pointer to timestamp 9313 9314\end{description}\end{quote} 9315\begin{quote}\begin{description} 9316\item[{retval}] \leavevmode\begin{itemize} 9317\item {} 93180 Success; otherwise - EINVAL 9319 9320\end{itemize} 9321 9322\end{description}\end{quote} 9323 9324 9325\subsubsection{krb5\_timeofday - Retrieve the current time with context specific time offset adjustment.} 9326\label{\detokenize{appdev/refs/api/krb5_timeofday:krb5-timeofday-retrieve-the-current-time-with-context-specific-time-offset-adjustment}}\label{\detokenize{appdev/refs/api/krb5_timeofday::doc}}\index{krb5\_timeofday (C function)} 9327 9328\begin{fulllineitems} 9329\phantomsection\label{\detokenize{appdev/refs/api/krb5_timeofday:c.krb5_timeofday}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_timeofday}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} *\sphinxstyleemphasis{ timeret}}{} 9330\end{fulllineitems} 9331 9332\begin{quote}\begin{description} 9333\item[{param}] \leavevmode 9334\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9335 9336\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{timeret} - Timestamp to fill in 9337 9338\end{description}\end{quote} 9339\begin{quote}\begin{description} 9340\item[{retval}] \leavevmode\begin{itemize} 9341\item {} 93420 Success 9343 9344\end{itemize} 9345 9346\item[{return}] \leavevmode\begin{itemize} 9347\item {} 9348Kerberos error codes 9349 9350\end{itemize} 9351 9352\end{description}\end{quote} 9353 9354This function retrieves the system time of day with the context specific time offset adjustment. 9355 9356 9357\subsubsection{krb5\_timestamp\_to\_sfstring - Convert a timestamp to a string, with optional output padding.} 9358\label{\detokenize{appdev/refs/api/krb5_timestamp_to_sfstring:krb5-timestamp-to-sfstring-convert-a-timestamp-to-a-string-with-optional-output-padding}}\label{\detokenize{appdev/refs/api/krb5_timestamp_to_sfstring::doc}}\index{krb5\_timestamp\_to\_sfstring (C function)} 9359 9360\begin{fulllineitems} 9361\phantomsection\label{\detokenize{appdev/refs/api/krb5_timestamp_to_sfstring:c.krb5_timestamp_to_sfstring}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_timestamp\_to\_sfstring}}{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ timestamp}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}, char *\sphinxstyleemphasis{ pad}}{} 9362\end{fulllineitems} 9363 9364\begin{quote}\begin{description} 9365\item[{param}] \leavevmode 9366\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{timestamp} - Timestamp to convert 9367 9368\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to hold the converted timestamp 9369 9370\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Length of buffer 9371 9372\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pad} - Optional value to pad \sphinxstyleemphasis{buffer} if converted timestamp does not fill it 9373 9374\end{description}\end{quote} 9375\begin{quote}\begin{description} 9376\item[{retval}] \leavevmode\begin{itemize} 9377\item {} 93780 Success; otherwise - Kerberos error codes 9379 9380\end{itemize} 9381 9382\end{description}\end{quote} 9383 9384If \sphinxstyleemphasis{pad} is not NULL, \sphinxstyleemphasis{buffer} is padded out to \sphinxstyleemphasis{buflen} - 1 characters with the value of * \sphinxstyleemphasis{pad} . 9385 9386 9387\subsubsection{krb5\_timestamp\_to\_string - Convert a timestamp to a string.} 9388\label{\detokenize{appdev/refs/api/krb5_timestamp_to_string::doc}}\label{\detokenize{appdev/refs/api/krb5_timestamp_to_string:krb5-timestamp-to-string-convert-a-timestamp-to-a-string}}\index{krb5\_timestamp\_to\_string (C function)} 9389 9390\begin{fulllineitems} 9391\phantomsection\label{\detokenize{appdev/refs/api/krb5_timestamp_to_string:c.krb5_timestamp_to_string}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_timestamp\_to\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}}\sphinxstyleemphasis{ timestamp}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}}{} 9392\end{fulllineitems} 9393 9394\begin{quote}\begin{description} 9395\item[{param}] \leavevmode 9396\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{timestamp} - Timestamp to convert 9397 9398\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to hold converted timestamp 9399 9400\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Storage available in \sphinxstyleemphasis{buffer} 9401 9402\end{description}\end{quote} 9403\begin{quote}\begin{description} 9404\item[{retval}] \leavevmode\begin{itemize} 9405\item {} 94060 Success; otherwise - Kerberos error codes 9407 9408\end{itemize} 9409 9410\end{description}\end{quote} 9411 9412The string is returned in the locale’s appropriate date and time representation. 9413 9414 9415\subsubsection{krb5\_tkt\_creds\_free - Free a TGS request context.} 9416\label{\detokenize{appdev/refs/api/krb5_tkt_creds_free::doc}}\label{\detokenize{appdev/refs/api/krb5_tkt_creds_free:krb5-tkt-creds-free-free-a-tgs-request-context}}\index{krb5\_tkt\_creds\_free (C function)} 9417 9418\begin{fulllineitems} 9419\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_free:c.krb5_tkt_creds_free}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_tkt\_creds\_free}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{krb5\_tkt\_creds\_context}}}\sphinxstyleemphasis{ ctx}}{} 9420\end{fulllineitems} 9421 9422\begin{quote}\begin{description} 9423\item[{param}] \leavevmode 9424\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9425 9426\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - TGS request context 9427 9428\end{description}\end{quote} 9429 9430\begin{sphinxadmonition}{note}{Note:} 9431New in 1.9 9432\end{sphinxadmonition} 9433 9434 9435\subsubsection{krb5\_tkt\_creds\_get - Synchronously obtain credentials using a TGS request context.} 9436\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get:krb5-tkt-creds-get-synchronously-obtain-credentials-using-a-tgs-request-context}}\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get::doc}}\index{krb5\_tkt\_creds\_get (C function)} 9437 9438\begin{fulllineitems} 9439\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get:c.krb5_tkt_creds_get}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_tkt\_creds\_get}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{krb5\_tkt\_creds\_context}}}\sphinxstyleemphasis{ ctx}}{} 9440\end{fulllineitems} 9441 9442\begin{quote}\begin{description} 9443\item[{param}] \leavevmode 9444\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9445 9446\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - TGS request context 9447 9448\end{description}\end{quote} 9449\begin{quote}\begin{description} 9450\item[{retval}] \leavevmode\begin{itemize} 9451\item {} 94520 Success; otherwise - Kerberos error codes 9453 9454\end{itemize} 9455 9456\end{description}\end{quote} 9457 9458This function synchronously obtains credentials using a context created by {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_init:c.krb5_tkt_creds_init}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_init()}}}} . On successful return, the credentials can be retrieved with {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_get_creds:c.krb5_tkt_creds_get_creds}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_get\_creds()}}}} . 9459 9460\begin{sphinxadmonition}{note}{Note:} 9461New in 1.9 9462\end{sphinxadmonition} 9463 9464 9465\subsubsection{krb5\_tkt\_creds\_get\_creds - Retrieve acquired credentials from a TGS request context.} 9466\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_creds:krb5-tkt-creds-get-creds-retrieve-acquired-credentials-from-a-tgs-request-context}}\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_creds::doc}}\index{krb5\_tkt\_creds\_get\_creds (C function)} 9467 9468\begin{fulllineitems} 9469\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_creds:c.krb5_tkt_creds_get_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_tkt\_creds\_get\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{krb5\_tkt\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}}{} 9470\end{fulllineitems} 9471 9472\begin{quote}\begin{description} 9473\item[{param}] \leavevmode 9474\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9475 9476\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - TGS request context 9477 9478\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} - Acquired credentials 9479 9480\end{description}\end{quote} 9481\begin{quote}\begin{description} 9482\item[{retval}] \leavevmode\begin{itemize} 9483\item {} 94840 Success; otherwise - Kerberos error codes 9485 9486\end{itemize} 9487 9488\end{description}\end{quote} 9489 9490This function copies the acquired initial credentials from \sphinxstyleemphasis{ctx} into \sphinxstyleemphasis{creds} , after the successful completion of {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_get:c.krb5_tkt_creds_get}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_get()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_step:c.krb5_tkt_creds_step}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_step()}}}} . Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_cred_contents:c.krb5_free_cred_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_cred\_contents()}}}} to free \sphinxstyleemphasis{creds} when it is no longer needed. 9491 9492\begin{sphinxadmonition}{note}{Note:} 9493New in 1.9 9494\end{sphinxadmonition} 9495 9496 9497\subsubsection{krb5\_tkt\_creds\_get\_times - Retrieve ticket times from a TGS request context.} 9498\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_times:krb5-tkt-creds-get-times-retrieve-ticket-times-from-a-tgs-request-context}}\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_times::doc}}\index{krb5\_tkt\_creds\_get\_times (C function)} 9499 9500\begin{fulllineitems} 9501\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_times:c.krb5_tkt_creds_get_times}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_tkt\_creds\_get\_times}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{krb5\_tkt\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{krb5\_ticket\_times}}} *\sphinxstyleemphasis{ times}}{} 9502\end{fulllineitems} 9503 9504\begin{quote}\begin{description} 9505\item[{param}] \leavevmode 9506\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9507 9508\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - TGS request context 9509 9510\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{times} - Ticket times for acquired credentials 9511 9512\end{description}\end{quote} 9513\begin{quote}\begin{description} 9514\item[{retval}] \leavevmode\begin{itemize} 9515\item {} 95160 Success; otherwise - Kerberos error codes 9517 9518\end{itemize} 9519 9520\end{description}\end{quote} 9521 9522The TGS request context must have completed obtaining credentials via either {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_get:c.krb5_tkt_creds_get}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_get()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_step:c.krb5_tkt_creds_step}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_step()}}}} . 9523 9524\begin{sphinxadmonition}{note}{Note:} 9525New in 1.9 9526\end{sphinxadmonition} 9527 9528 9529\subsubsection{krb5\_tkt\_creds\_init - Create a context to get credentials from a KDC’s Ticket Granting Service.} 9530\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_tkt_creds_init::doc}}\index{krb5\_tkt\_creds\_init (C function)} 9531 9532\begin{fulllineitems} 9533\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_init:c.krb5_tkt_creds_init}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_tkt\_creds\_init}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{krb5\_tkt\_creds\_context}}} *\sphinxstyleemphasis{ ctx}}{} 9534\end{fulllineitems} 9535 9536\begin{quote}\begin{description} 9537\item[{param}] \leavevmode 9538\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9539 9540\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache handle 9541 9542\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Input credentials 9543 9544\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} - \sphinxcode{KRB5\_GC} options for this request. 9545 9546\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ctx} - New TGS request context 9547 9548\end{description}\end{quote} 9549\begin{quote}\begin{description} 9550\item[{retval}] \leavevmode\begin{itemize} 9551\item {} 95520 Success; otherwise - Kerberos error codes 9553 9554\end{itemize} 9555 9556\end{description}\end{quote} 9557 9558This function prepares to obtain credentials matching \sphinxstyleemphasis{creds} , either by retrieving them from \sphinxstyleemphasis{ccache} or by making requests to ticket-granting services beginning with a ticket-granting ticket for the client principal’s realm. 9559 9560The resulting TGS acquisition context can be used asynchronously with {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_step:c.krb5_tkt_creds_step}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_step()}}}} or synchronously with {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_get:c.krb5_tkt_creds_get}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_get()}}}} . See also {\hyperref[\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}]{\sphinxcrossref{\sphinxcode{krb5\_get\_credentials()}}}} for synchronous use. 9561 9562Use {\hyperref[\detokenize{appdev/refs/api/krb5_tkt_creds_free:c.krb5_tkt_creds_free}]{\sphinxcrossref{\sphinxcode{krb5\_tkt\_creds\_free()}}}} to free \sphinxstyleemphasis{ctx} when it is no longer needed. 9563 9564\begin{sphinxadmonition}{note}{Note:} 9565New in 1.9 9566\end{sphinxadmonition} 9567 9568 9569\subsubsection{krb5\_tkt\_creds\_step - Get the next KDC request in a TGS exchange.} 9570\label{\detokenize{appdev/refs/api/krb5_tkt_creds_step:krb5-tkt-creds-step-get-the-next-kdc-request-in-a-tgs-exchange}}\label{\detokenize{appdev/refs/api/krb5_tkt_creds_step::doc}}\index{krb5\_tkt\_creds\_step (C function)} 9571 9572\begin{fulllineitems} 9573\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_step:c.krb5_tkt_creds_step}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_tkt\_creds\_step}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{krb5\_tkt\_creds\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ in}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ realm}, unsigned int *\sphinxstyleemphasis{ flags}}{} 9574\end{fulllineitems} 9575 9576\begin{quote}\begin{description} 9577\item[{param}] \leavevmode 9578\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9579 9580\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - TGS request context 9581 9582\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} - KDC response (empty on the first call) 9583 9584\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Next KDC request 9585 9586\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realm} - Realm for next KDC request 9587 9588\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} - Output flags 9589 9590\end{description}\end{quote} 9591\begin{quote}\begin{description} 9592\item[{retval}] \leavevmode\begin{itemize} 9593\item {} 95940 Success; otherwise - Kerberos error codes 9595 9596\end{itemize} 9597 9598\end{description}\end{quote} 9599 9600This 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, \sphinxstyleemphasis{in} should be set to an empty buffer; on subsequent calls, it should be set to the KDC’s reply to the previous request. 9601 9602If more requests are needed, \sphinxstyleemphasis{flags} will be set to {\hyperref[\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE}]{\sphinxcrossref{\sphinxcode{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}}}} and the next request will be placed in \sphinxstyleemphasis{out} . If no more requests are needed, \sphinxstyleemphasis{flags} will not contain {\hyperref[\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE}]{\sphinxcrossref{\sphinxcode{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}}}} and \sphinxstyleemphasis{out} will be empty. 9603 9604If this function returns \sphinxstylestrong{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. 9605 9606\begin{sphinxadmonition}{note}{Note:} 9607New in 1.9 9608\end{sphinxadmonition} 9609 9610 9611\subsubsection{krb5\_verify\_init\_creds - Verify initial credentials against a keytab.} 9612\label{\detokenize{appdev/refs/api/krb5_verify_init_creds:krb5-verify-init-creds-verify-initial-credentials-against-a-keytab}}\label{\detokenize{appdev/refs/api/krb5_verify_init_creds::doc}}\index{krb5\_verify\_init\_creds (C function)} 9613 9614\begin{fulllineitems} 9615\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_verify\_init\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{krb5\_verify\_init\_creds\_opt}}} *\sphinxstyleemphasis{ options}}{} 9616\end{fulllineitems} 9617 9618\begin{quote}\begin{description} 9619\item[{param}] \leavevmode 9620\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9621 9622\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} - Initial credentials to be verified 9623 9624\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Server principal (or NULL) 9625 9626\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table (NULL to use default keytab) 9627 9628\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache for fetched creds (or NULL) 9629 9630\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} - Verification options (NULL for default options) 9631 9632\end{description}\end{quote} 9633\begin{quote}\begin{description} 9634\item[{retval}] \leavevmode\begin{itemize} 9635\item {} 96360 Success; otherwise - Kerberos error codes 9637 9638\end{itemize} 9639 9640\end{description}\end{quote} 9641 9642This function attempts to verify that \sphinxstyleemphasis{creds} were obtained from a KDC with knowledge of a key in \sphinxstyleemphasis{keytab} , or the default keytab if \sphinxstyleemphasis{keytab} is NULL. If \sphinxstyleemphasis{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. 9643 9644If the specified keytab does not exist, or is empty, or cannot be read, or does not contain an entry for \sphinxstyleemphasis{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[\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init:c.krb5_verify_init_creds_opt_init}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds\_opt\_init()}}}} and {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:c.krb5_verify_init_creds_opt_set_ap_req_nofail}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail()}}}} . 9645 9646If \sphinxstyleemphasis{ccache} is NULL, any additional credentials fetched during the verification process will be destroyed. If \sphinxstyleemphasis{ccache} points to NULL, a memory ccache will be created for the additional credentials and returned in \sphinxstyleemphasis{ccache} . If \sphinxstyleemphasis{ccache} points to a valid credential cache handle, the additional credentials will be stored in that cache. 9647 9648 9649\subsubsection{krb5\_verify\_init\_creds\_opt\_init - Initialize a credential verification options structure.} 9650\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init:krb5-verify-init-creds-opt-init-initialize-a-credential-verification-options-structure}}\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init::doc}}\index{krb5\_verify\_init\_creds\_opt\_init (C function)} 9651 9652\begin{fulllineitems} 9653\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init:c.krb5_verify_init_creds_opt_init}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_verify\_init\_creds\_opt\_init}}{{\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{krb5\_verify\_init\_creds\_opt}}} *\sphinxstyleemphasis{ k5\_vic\_options}}{} 9654\end{fulllineitems} 9655 9656\begin{quote}\begin{description} 9657\item[{param}] \leavevmode 9658\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_vic\_options} - Verification options structure 9659 9660\end{description}\end{quote} 9661 9662 9663\subsubsection{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail - Set whether credential verification is required.} 9664\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail::doc}}\label{\detokenize{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)} 9665 9666\begin{fulllineitems} 9667\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail:c.krb5_verify_init_creds_opt_set_ap_req_nofail}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail}}{{\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{krb5\_verify\_init\_creds\_opt}}} *\sphinxstyleemphasis{ k5\_vic\_options}, int\sphinxstyleemphasis{ ap\_req\_nofail}}{} 9668\end{fulllineitems} 9669 9670\begin{quote}\begin{description} 9671\item[{param}] \leavevmode 9672\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_vic\_options} - Verification options structure 9673 9674\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_nofail} - Whether to require successful verification 9675 9676\end{description}\end{quote} 9677 9678This function determines how {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}} behaves if no keytab information is available. If \sphinxstyleemphasis{ap\_req\_nofail} is \sphinxstylestrong{FALSE} , verification will be skipped in this case and {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}} will return successfully. If \sphinxstyleemphasis{ap\_req\_nofail} is \sphinxstylestrong{TRUE} , {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}} will not return successfully unless verification can be performed. 9679 9680If this function is not used, the behavior of {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{krb5\_verify\_init\_creds()}}}} is determined through configuration. 9681 9682 9683\subsubsection{krb5\_vprepend\_error\_message - Add a prefix to the message for an error code using a va\_list.} 9684\label{\detokenize{appdev/refs/api/krb5_vprepend_error_message::doc}}\label{\detokenize{appdev/refs/api/krb5_vprepend_error_message:krb5-vprepend-error-message-add-a-prefix-to-the-message-for-an-error-code-using-a-va-list}}\index{krb5\_vprepend\_error\_message (C function)} 9685 9686\begin{fulllineitems} 9687\phantomsection\label{\detokenize{appdev/refs/api/krb5_vprepend_error_message:c.krb5_vprepend_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_vprepend\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}, const char *\sphinxstyleemphasis{ fmt}, va\_list\sphinxstyleemphasis{ args}}{} 9688\end{fulllineitems} 9689 9690\begin{quote}\begin{description} 9691\item[{param}] \leavevmode 9692\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 9693 9694\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 9695 9696\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} - Format string for error message prefix 9697 9698\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{args} - List of vprintf(3) style arguments 9699 9700\end{description}\end{quote} 9701 9702This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_prepend_error_message:c.krb5_prepend_error_message}]{\sphinxcrossref{\sphinxcode{krb5\_prepend\_error\_message()}}}} , but uses a va\_list instead of variadic arguments. 9703 9704 9705\subsubsection{krb5\_vset\_error\_message - Set an extended error message for an error code using a va\_list.} 9706\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_vset_error_message::doc}}\index{krb5\_vset\_error\_message (C function)} 9707 9708\begin{fulllineitems} 9709\phantomsection\label{\detokenize{appdev/refs/api/krb5_vset_error_message:c.krb5_vset_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_vset\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}, const char *\sphinxstyleemphasis{ fmt}, va\_list\sphinxstyleemphasis{ args}}{} 9710\end{fulllineitems} 9711 9712\begin{quote}\begin{description} 9713\item[{param}] \leavevmode 9714\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 9715 9716\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 9717 9718\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} - Error string for the error code 9719 9720\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{args} - List of vprintf(3) style arguments 9721 9722\end{description}\end{quote} 9723 9724 9725\subsubsection{krb5\_vwrap\_error\_message - Add a prefix to a different error code’s message using a va\_list.} 9726\label{\detokenize{appdev/refs/api/krb5_vwrap_error_message:krb5-vwrap-error-message-add-a-prefix-to-a-different-error-code-s-message-using-a-va-list}}\label{\detokenize{appdev/refs/api/krb5_vwrap_error_message::doc}}\index{krb5\_vwrap\_error\_message (C function)} 9727 9728\begin{fulllineitems} 9729\phantomsection\label{\detokenize{appdev/refs/api/krb5_vwrap_error_message:c.krb5_vwrap_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_vwrap\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ old\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}, const char *\sphinxstyleemphasis{ fmt}, va\_list\sphinxstyleemphasis{ args}}{} 9730\end{fulllineitems} 9731 9732\begin{quote}\begin{description} 9733\item[{param}] \leavevmode 9734\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 9735 9736\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{old\_code} - Previous error code 9737 9738\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 9739 9740\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} - Format string for error message prefix 9741 9742\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{args} - List of vprintf(3) style arguments 9743 9744\end{description}\end{quote} 9745 9746This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_wrap_error_message:c.krb5_wrap_error_message}]{\sphinxcrossref{\sphinxcode{krb5\_wrap\_error\_message()}}}} , but uses a va\_list instead of variadic arguments. 9747 9748 9749\subsubsection{krb5\_wrap\_error\_message - Add a prefix to a different error code’s message.} 9750\label{\detokenize{appdev/refs/api/krb5_wrap_error_message:krb5-wrap-error-message-add-a-prefix-to-a-different-error-code-s-message}}\label{\detokenize{appdev/refs/api/krb5_wrap_error_message::doc}}\index{krb5\_wrap\_error\_message (C function)} 9751 9752\begin{fulllineitems} 9753\phantomsection\label{\detokenize{appdev/refs/api/krb5_wrap_error_message:c.krb5_wrap_error_message}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_wrap\_error\_message}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ old\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}}\sphinxstyleemphasis{ code}, const char *\sphinxstyleemphasis{ fmt}, ...}{} 9754\end{fulllineitems} 9755 9756\begin{quote}\begin{description} 9757\item[{param}] \leavevmode 9758\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} - Library context 9759 9760\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{old\_code} - Previous error code 9761 9762\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - Error code 9763 9764\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} - Format string for error message prefix 9765 9766\end{description}\end{quote} 9767 9768Format a message and prepend it to the message for \sphinxstyleemphasis{old\_code} . The prefix will be separated from the old message with a colon and space. Set the resulting message as the extended error message for \sphinxstyleemphasis{code} . 9769 9770 9771\subsection{Public interfaces that should not be called directly} 9772\label{\detokenize{appdev/refs/api/index:public-interfaces-that-should-not-be-called-directly}} 9773 9774\subsubsection{krb5\_c\_block\_size - Return cipher block size.} 9775\label{\detokenize{appdev/refs/api/krb5_c_block_size:krb5-c-block-size-return-cipher-block-size}}\label{\detokenize{appdev/refs/api/krb5_c_block_size::doc}}\index{krb5\_c\_block\_size (C function)} 9776 9777\begin{fulllineitems} 9778\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_block_size:c.krb5_c_block_size}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_block\_size}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, size\_t *\sphinxstyleemphasis{ blocksize}}{} 9779\end{fulllineitems} 9780 9781\begin{quote}\begin{description} 9782\item[{param}] \leavevmode 9783\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9784 9785\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 9786 9787\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{blocksize} - Block size for \sphinxstyleemphasis{enctype} 9788 9789\end{description}\end{quote} 9790\begin{quote}\begin{description} 9791\item[{retval}] \leavevmode\begin{itemize} 9792\item {} 97930 Success; otherwise - Kerberos error codes 9794 9795\end{itemize} 9796 9797\end{description}\end{quote} 9798 9799 9800\subsubsection{krb5\_c\_checksum\_length - Return the length of checksums for a checksum type.} 9801\label{\detokenize{appdev/refs/api/krb5_c_checksum_length:krb5-c-checksum-length-return-the-length-of-checksums-for-a-checksum-type}}\label{\detokenize{appdev/refs/api/krb5_c_checksum_length::doc}}\index{krb5\_c\_checksum\_length (C function)} 9802 9803\begin{fulllineitems} 9804\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_checksum_length:c.krb5_c_checksum_length}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_checksum\_length}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, size\_t *\sphinxstyleemphasis{ length}}{} 9805\end{fulllineitems} 9806 9807\begin{quote}\begin{description} 9808\item[{param}] \leavevmode 9809\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9810 9811\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type 9812 9813\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{length} - Checksum length 9814 9815\end{description}\end{quote} 9816\begin{quote}\begin{description} 9817\item[{retval}] \leavevmode\begin{itemize} 9818\item {} 98190 Success; otherwise - Kerberos error codes 9820 9821\end{itemize} 9822 9823\end{description}\end{quote} 9824 9825 9826\subsubsection{krb5\_c\_crypto\_length - Return a length of a message field specific to the encryption type.} 9827\label{\detokenize{appdev/refs/api/krb5_c_crypto_length:krb5-c-crypto-length-return-a-length-of-a-message-field-specific-to-the-encryption-type}}\label{\detokenize{appdev/refs/api/krb5_c_crypto_length::doc}}\index{krb5\_c\_crypto\_length (C function)} 9828 9829\begin{fulllineitems} 9830\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_crypto_length:c.krb5_c_crypto_length}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_crypto\_length}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_cryptotype:c.krb5_cryptotype}]{\sphinxcrossref{krb5\_cryptotype}}}\sphinxstyleemphasis{ type}, unsigned int *\sphinxstyleemphasis{ size}}{} 9831\end{fulllineitems} 9832 9833\begin{quote}\begin{description} 9834\item[{param}] \leavevmode 9835\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9836 9837\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 9838 9839\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - Type field (See \sphinxcode{KRB5\_CRYPTO\_TYPE} types) 9840 9841\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{size} - Length of the \sphinxstyleemphasis{type} specific to \sphinxstyleemphasis{enctype} 9842 9843\end{description}\end{quote} 9844\begin{quote}\begin{description} 9845\item[{retval}] \leavevmode\begin{itemize} 9846\item {} 98470 Success; otherwise - Kerberos error codes 9848 9849\end{itemize} 9850 9851\end{description}\end{quote} 9852 9853 9854\subsubsection{krb5\_c\_crypto\_length\_iov - Fill in lengths for header, trailer and padding in a IOV array.} 9855\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_c_crypto_length_iov::doc}}\index{krb5\_c\_crypto\_length\_iov (C function)} 9856 9857\begin{fulllineitems} 9858\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_crypto_length_iov:c.krb5_c_crypto_length_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_crypto\_length\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 9859\end{fulllineitems} 9860 9861\begin{quote}\begin{description} 9862\item[{param}] \leavevmode 9863\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9864 9865\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 9866 9867\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array 9868 9869\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 9870 9871\end{description}\end{quote} 9872\begin{quote}\begin{description} 9873\item[{retval}] \leavevmode\begin{itemize} 9874\item {} 98750 Success; otherwise - Kerberos error codes 9876 9877\end{itemize} 9878 9879\end{description}\end{quote} 9880 9881Padding is set to the actual padding required based on the provided \sphinxstyleemphasis{data} buffers. Typically this API is used after setting up the data buffers and {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}}} buffers, but before actually allocating header, trailer and padding. 9882 9883 9884\subsubsection{krb5\_c\_decrypt - Decrypt data using a key (operates on keyblock).} 9885\label{\detokenize{appdev/refs/api/krb5_c_decrypt::doc}}\label{\detokenize{appdev/refs/api/krb5_c_decrypt:krb5-c-decrypt-decrypt-data-using-a-key-operates-on-keyblock}}\index{krb5\_c\_decrypt (C function)} 9886 9887\begin{fulllineitems} 9888\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_decrypt:c.krb5_c_decrypt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_decrypt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, const {\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ output}}{} 9889\end{fulllineitems} 9890 9891\begin{quote}\begin{description} 9892\item[{param}] \leavevmode 9893\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9894 9895\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key 9896 9897\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 9898 9899\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 9900 9901\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Encrypted data 9902 9903\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Decrypted data 9904 9905\end{description}\end{quote} 9906\begin{quote}\begin{description} 9907\item[{retval}] \leavevmode\begin{itemize} 9908\item {} 99090 Success; otherwise - Kerberos error codes 9910 9911\end{itemize} 9912 9913\end{description}\end{quote} 9914 9915This function decrypts the data block \sphinxstyleemphasis{input} and stores the output into \sphinxstyleemphasis{output} . The actual decryption key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 9916 9917\begin{sphinxadmonition}{note}{Note:} 9918The caller must initialize \sphinxstyleemphasis{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[\detokenize{appdev/refs/api/krb5_c_decrypt:c.krb5_c_decrypt}]{\sphinxcrossref{\sphinxcode{krb5\_c\_decrypt()}}}} trim \sphinxstyleemphasis{output-\textgreater{}length} . For some enctypes, the resulting \sphinxstyleemphasis{output-\textgreater{}length} may include padding bytes. 9919\end{sphinxadmonition} 9920 9921 9922\subsubsection{krb5\_c\_decrypt\_iov - Decrypt data in place supporting AEAD (operates on keyblock).} 9923\label{\detokenize{appdev/refs/api/krb5_c_decrypt_iov:krb5-c-decrypt-iov-decrypt-data-in-place-supporting-aead-operates-on-keyblock}}\label{\detokenize{appdev/refs/api/krb5_c_decrypt_iov::doc}}\index{krb5\_c\_decrypt\_iov (C function)} 9924 9925\begin{fulllineitems} 9926\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_decrypt_iov:c.krb5_c_decrypt_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_decrypt\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 9927\end{fulllineitems} 9928 9929\begin{quote}\begin{description} 9930\item[{param}] \leavevmode 9931\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9932 9933\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} - Encryption key 9934 9935\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 9936 9937\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 9938 9939\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array. Modified in-place. 9940 9941\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 9942 9943\end{description}\end{quote} 9944\begin{quote}\begin{description} 9945\item[{retval}] \leavevmode\begin{itemize} 9946\item {} 99470 Success; otherwise - Kerberos error codes 9948 9949\end{itemize} 9950 9951\end{description}\end{quote} 9952 9953This function decrypts the data block \sphinxstyleemphasis{data} and stores the output in-place. The actual decryption key will be derived from \sphinxstyleemphasis{keyblock} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 9954 9955 9956\sphinxstrong{See also:} 9957 9958 9959{\hyperref[\detokenize{appdev/refs/api/krb5_c_decrypt_iov:c.krb5_c_decrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_decrypt\_iov()}}}} 9960 9961 9962 9963\begin{sphinxadmonition}{note}{Note:} 9964On return from a {\hyperref[\detokenize{appdev/refs/api/krb5_c_decrypt_iov:c.krb5_c_decrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_decrypt\_iov()}}}} call, the \sphinxstyleemphasis{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. 9965\end{sphinxadmonition} 9966 9967 9968\subsubsection{krb5\_c\_derive\_prfplus - Derive a key using some input data (via RFC 6113 PRF+).} 9969\label{\detokenize{appdev/refs/api/krb5_c_derive_prfplus::doc}}\label{\detokenize{appdev/refs/api/krb5_c_derive_prfplus:krb5-c-derive-prfplus-derive-a-key-using-some-input-data-via-rfc-6113-prf}}\index{krb5\_c\_derive\_prfplus (C function)} 9970 9971\begin{fulllineitems} 9972\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_derive_prfplus:c.krb5_c_derive_prfplus}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_derive\_prfplus}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ k}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ out}}{} 9973\end{fulllineitems} 9974 9975\begin{quote}\begin{description} 9976\item[{param}] \leavevmode 9977\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 9978 9979\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k} - KDC contribution key 9980 9981\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Input string 9982 9983\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Output key enctype (or \sphinxstylestrong{ENCTYPE\_NULL} ) 9984 9985\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Derived keyblock 9986 9987\end{description}\end{quote} 9988 9989This function uses PRF+ as defined in RFC 6113 to derive a key from another key and an input string. If \sphinxstyleemphasis{enctype} is \sphinxstylestrong{ENCTYPE\_NULL} , the output key will have the same enctype as the input key. 9990 9991 9992\subsubsection{krb5\_c\_encrypt - Encrypt data using a key (operates on keyblock).} 9993\label{\detokenize{appdev/refs/api/krb5_c_encrypt::doc}}\label{\detokenize{appdev/refs/api/krb5_c_encrypt:krb5-c-encrypt-encrypt-data-using-a-key-operates-on-keyblock}}\index{krb5\_c\_encrypt (C function)} 9994 9995\begin{fulllineitems} 9996\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_encrypt:c.krb5_c_encrypt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_encrypt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} *\sphinxstyleemphasis{ output}}{} 9997\end{fulllineitems} 9998 9999\begin{quote}\begin{description} 10000\item[{param}] \leavevmode 10001\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10002 10003\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key 10004 10005\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 10006 10007\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 10008 10009\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Data to be encrypted 10010 10011\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Encrypted data 10012 10013\end{description}\end{quote} 10014\begin{quote}\begin{description} 10015\item[{retval}] \leavevmode\begin{itemize} 10016\item {} 100170 Success; otherwise - Kerberos error codes 10018 10019\end{itemize} 10020 10021\end{description}\end{quote} 10022 10023This function encrypts the data block \sphinxstyleemphasis{input} and stores the output into \sphinxstyleemphasis{output} . The actual encryption key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 10024 10025\begin{sphinxadmonition}{note}{Note:} 10026The caller must initialize \sphinxstyleemphasis{output} and allocate at least enough space for the result (using {\hyperref[\detokenize{appdev/refs/api/krb5_c_encrypt_length:c.krb5_c_encrypt_length}]{\sphinxcrossref{\sphinxcode{krb5\_c\_encrypt\_length()}}}} to determine the amount of space needed). \sphinxstyleemphasis{output-\textgreater{}length} will be set to the actual length of the ciphertext. 10027\end{sphinxadmonition} 10028 10029 10030\subsubsection{krb5\_c\_encrypt\_iov - Encrypt data in place supporting AEAD (operates on keyblock).} 10031\label{\detokenize{appdev/refs/api/krb5_c_encrypt_iov:krb5-c-encrypt-iov-encrypt-data-in-place-supporting-aead-operates-on-keyblock}}\label{\detokenize{appdev/refs/api/krb5_c_encrypt_iov::doc}}\index{krb5\_c\_encrypt\_iov (C function)} 10032 10033\begin{fulllineitems} 10034\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_encrypt_iov:c.krb5_c_encrypt_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_encrypt\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 10035\end{fulllineitems} 10036 10037\begin{quote}\begin{description} 10038\item[{param}] \leavevmode 10039\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10040 10041\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} - Encryption key 10042 10043\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 10044 10045\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 10046 10047\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array. Modified in-place. 10048 10049\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 10050 10051\end{description}\end{quote} 10052\begin{quote}\begin{description} 10053\item[{retval}] \leavevmode\begin{itemize} 10054\item {} 100550 Success; otherwise - Kerberos error codes 10056 10057\end{itemize} 10058 10059\end{description}\end{quote} 10060 10061This function encrypts the data block \sphinxstyleemphasis{data} and stores the output in-place. The actual encryption key will be derived from \sphinxstyleemphasis{keyblock} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 10062 10063 10064\sphinxstrong{See also:} 10065 10066 10067{\hyperref[\detokenize{appdev/refs/api/krb5_c_decrypt_iov:c.krb5_c_decrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_decrypt\_iov()}}}} 10068 10069 10070 10071\begin{sphinxadmonition}{note}{Note:} 10072On return from a {\hyperref[\detokenize{appdev/refs/api/krb5_c_encrypt_iov:c.krb5_c_encrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_encrypt\_iov()}}}} call, the \sphinxstyleemphasis{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. 10073\end{sphinxadmonition} 10074 10075 10076\subsubsection{krb5\_c\_encrypt\_length - Compute encrypted data length.} 10077\label{\detokenize{appdev/refs/api/krb5_c_encrypt_length:krb5-c-encrypt-length-compute-encrypted-data-length}}\label{\detokenize{appdev/refs/api/krb5_c_encrypt_length::doc}}\index{krb5\_c\_encrypt\_length (C function)} 10078 10079\begin{fulllineitems} 10080\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_encrypt_length:c.krb5_c_encrypt_length}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_encrypt\_length}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, size\_t\sphinxstyleemphasis{ inputlen}, size\_t *\sphinxstyleemphasis{ length}}{} 10081\end{fulllineitems} 10082 10083\begin{quote}\begin{description} 10084\item[{param}] \leavevmode 10085\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10086 10087\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10088 10089\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inputlen} - Length of the data to be encrypted 10090 10091\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{length} - Length of the encrypted data 10092 10093\end{description}\end{quote} 10094\begin{quote}\begin{description} 10095\item[{retval}] \leavevmode\begin{itemize} 10096\item {} 100970 Success; otherwise - Kerberos error codes 10098 10099\end{itemize} 10100 10101\end{description}\end{quote} 10102 10103This function computes the length of the ciphertext produced by encrypting \sphinxstyleemphasis{inputlen} bytes including padding, confounder, and checksum. 10104 10105 10106\subsubsection{krb5\_c\_enctype\_compare - Compare two encryption types.} 10107\label{\detokenize{appdev/refs/api/krb5_c_enctype_compare::doc}}\label{\detokenize{appdev/refs/api/krb5_c_enctype_compare:krb5-c-enctype-compare-compare-two-encryption-types}}\index{krb5\_c\_enctype\_compare (C function)} 10108 10109\begin{fulllineitems} 10110\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_enctype_compare:c.krb5_c_enctype_compare}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_enctype\_compare}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ e1}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ e2}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} *\sphinxstyleemphasis{ similar}}{} 10111\end{fulllineitems} 10112 10113\begin{quote}\begin{description} 10114\item[{param}] \leavevmode 10115\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10116 10117\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{e1} - First encryption type 10118 10119\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{e2} - Second encryption type 10120 10121\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{similar} - \sphinxstylestrong{TRUE} if types are similar, \sphinxstylestrong{FALSE} if not 10122 10123\end{description}\end{quote} 10124\begin{quote}\begin{description} 10125\item[{retval}] \leavevmode\begin{itemize} 10126\item {} 101270 Success; otherwise - Kerberos error codes 10128 10129\end{itemize} 10130 10131\end{description}\end{quote} 10132 10133This function determines whether two encryption types use the same kind of keys. 10134 10135 10136\subsubsection{krb5\_c\_free\_state - Free a cipher state previously allocated by krb5\_c\_init\_state() .} 10137\label{\detokenize{appdev/refs/api/krb5_c_free_state:krb5-c-free-state-free-a-cipher-state-previously-allocated-by-krb5-c-init-state}}\label{\detokenize{appdev/refs/api/krb5_c_free_state::doc}}\index{krb5\_c\_free\_state (C function)} 10138 10139\begin{fulllineitems} 10140\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_free_state:c.krb5_c_free_state}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_free\_state}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ state}}{} 10141\end{fulllineitems} 10142 10143\begin{quote}\begin{description} 10144\item[{param}] \leavevmode 10145\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10146 10147\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Key 10148 10149\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{state} - Cipher state to be freed 10150 10151\end{description}\end{quote} 10152\begin{quote}\begin{description} 10153\item[{retval}] \leavevmode\begin{itemize} 10154\item {} 101550 Success; otherwise - Kerberos error codes 10156 10157\end{itemize} 10158 10159\end{description}\end{quote} 10160 10161 10162\subsubsection{krb5\_c\_fx\_cf2\_simple - Compute the KRB-FX-CF2 combination of two keys and pepper strings.} 10163\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_c_fx_cf2_simple::doc}}\index{krb5\_c\_fx\_cf2\_simple (C function)} 10164 10165\begin{fulllineitems} 10166\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_fx_cf2_simple:c.krb5_c_fx_cf2_simple}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_fx\_cf2\_simple}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ k1}, const char *\sphinxstyleemphasis{ pepper1}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ k2}, const char *\sphinxstyleemphasis{ pepper2}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ out}}{} 10167\end{fulllineitems} 10168 10169\begin{quote}\begin{description} 10170\item[{param}] \leavevmode 10171\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10172 10173\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k1} - KDC contribution key 10174 10175\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pepper1} - String”PKINIT” 10176 10177\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k2} - Reply key 10178 10179\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pepper2} - String”KeyExchange” 10180 10181\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Output key 10182 10183\end{description}\end{quote} 10184\begin{quote}\begin{description} 10185\item[{retval}] \leavevmode\begin{itemize} 10186\item {} 101870 Success; otherwise - Kerberos error codes 10188 10189\end{itemize} 10190 10191\end{description}\end{quote} 10192 10193This 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 \sphinxstyleemphasis{pepper1} and \sphinxstyleemphasis{pepper2} are C strings with no internal nulls and that the enctype of the result will be the same as that of \sphinxstyleemphasis{k1} . \sphinxstyleemphasis{k1} and \sphinxstyleemphasis{k2} may be of different enctypes. 10194 10195 10196\subsubsection{krb5\_c\_init\_state - Initialize a new cipher state.} 10197\label{\detokenize{appdev/refs/api/krb5_c_init_state:krb5-c-init-state-initialize-a-new-cipher-state}}\label{\detokenize{appdev/refs/api/krb5_c_init_state::doc}}\index{krb5\_c\_init\_state (C function)} 10198 10199\begin{fulllineitems} 10200\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_init_state:c.krb5_c_init_state}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_init\_state}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ new\_state}}{} 10201\end{fulllineitems} 10202 10203\begin{quote}\begin{description} 10204\item[{param}] \leavevmode 10205\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10206 10207\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Key 10208 10209\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 10210 10211\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{new\_state} - New cipher state 10212 10213\end{description}\end{quote} 10214\begin{quote}\begin{description} 10215\item[{retval}] \leavevmode\begin{itemize} 10216\item {} 102170 Success; otherwise - Kerberos error codes 10218 10219\end{itemize} 10220 10221\end{description}\end{quote} 10222 10223 10224\subsubsection{krb5\_c\_is\_coll\_proof\_cksum - Test whether a checksum type is collision-proof.} 10225\label{\detokenize{appdev/refs/api/krb5_c_is_coll_proof_cksum:krb5-c-is-coll-proof-cksum-test-whether-a-checksum-type-is-collision-proof}}\label{\detokenize{appdev/refs/api/krb5_c_is_coll_proof_cksum::doc}}\index{krb5\_c\_is\_coll\_proof\_cksum (C function)} 10226 10227\begin{fulllineitems} 10228\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_is_coll_proof_cksum:c.krb5_c_is_coll_proof_cksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_c\_is\_coll\_proof\_cksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ ctype}}{} 10229\end{fulllineitems} 10230 10231\begin{quote}\begin{description} 10232\item[{param}] \leavevmode 10233\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctype} - Checksum type 10234 10235\end{description}\end{quote} 10236\begin{quote}\begin{description} 10237\item[{return}] \leavevmode\begin{itemize} 10238\item {} 10239TRUE if ctype is collision-proof, FALSE if it is not collision-proof or not a valid checksum type. 10240 10241\end{itemize} 10242 10243\end{description}\end{quote} 10244 10245 10246\subsubsection{krb5\_c\_is\_keyed\_cksum - Test whether a checksum type is keyed.} 10247\label{\detokenize{appdev/refs/api/krb5_c_is_keyed_cksum::doc}}\label{\detokenize{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)} 10248 10249\begin{fulllineitems} 10250\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_is_keyed_cksum:c.krb5_c_is_keyed_cksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_c\_is\_keyed\_cksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ ctype}}{} 10251\end{fulllineitems} 10252 10253\begin{quote}\begin{description} 10254\item[{param}] \leavevmode 10255\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctype} - Checksum type 10256 10257\end{description}\end{quote} 10258\begin{quote}\begin{description} 10259\item[{return}] \leavevmode\begin{itemize} 10260\item {} 10261TRUE if ctype is a keyed checksum type, FALSE otherwise. 10262 10263\end{itemize} 10264 10265\end{description}\end{quote} 10266 10267 10268\subsubsection{krb5\_c\_keyed\_checksum\_types - Return a list of keyed checksum types usable with an encryption type.} 10269\label{\detokenize{appdev/refs/api/krb5_c_keyed_checksum_types::doc}}\label{\detokenize{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)} 10270 10271\begin{fulllineitems} 10272\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_keyed_checksum_types:c.krb5_c_keyed_checksum_types}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_keyed\_checksum\_types}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, unsigned int *\sphinxstyleemphasis{ count}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}} **\sphinxstyleemphasis{ cksumtypes}}{} 10273\end{fulllineitems} 10274 10275\begin{quote}\begin{description} 10276\item[{param}] \leavevmode 10277\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10278 10279\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10280 10281\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{count} - Count of allowable checksum types 10282 10283\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksumtypes} - Array of allowable checksum types 10284 10285\end{description}\end{quote} 10286\begin{quote}\begin{description} 10287\item[{retval}] \leavevmode\begin{itemize} 10288\item {} 102890 Success; otherwise - Kerberos error codes 10290 10291\end{itemize} 10292 10293\end{description}\end{quote} 10294 10295Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_cksumtypes:c.krb5_free_cksumtypes}]{\sphinxcrossref{\sphinxcode{krb5\_free\_cksumtypes()}}}} to free \sphinxstyleemphasis{cksumtypes} when it is no longer needed. 10296 10297 10298\subsubsection{krb5\_c\_keylengths - Return length of the specified key in bytes.} 10299\label{\detokenize{appdev/refs/api/krb5_c_keylengths::doc}}\label{\detokenize{appdev/refs/api/krb5_c_keylengths:krb5-c-keylengths-return-length-of-the-specified-key-in-bytes}}\index{krb5\_c\_keylengths (C function)} 10300 10301\begin{fulllineitems} 10302\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_keylengths:c.krb5_c_keylengths}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_keylengths}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, size\_t *\sphinxstyleemphasis{ keybytes}, size\_t *\sphinxstyleemphasis{ keylength}}{} 10303\end{fulllineitems} 10304 10305\begin{quote}\begin{description} 10306\item[{param}] \leavevmode 10307\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10308 10309\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10310 10311\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keybytes} - Number of bytes required to make a key 10312 10313\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keylength} - Length of final key 10314 10315\end{description}\end{quote} 10316\begin{quote}\begin{description} 10317\item[{retval}] \leavevmode\begin{itemize} 10318\item {} 103190 Success; otherwise - Kerberos error codes 10320 10321\end{itemize} 10322 10323\end{description}\end{quote} 10324 10325 10326\subsubsection{krb5\_c\_make\_checksum - Compute a checksum (operates on keyblock).} 10327\label{\detokenize{appdev/refs/api/krb5_c_make_checksum::doc}}\label{\detokenize{appdev/refs/api/krb5_c_make_checksum:krb5-c-make-checksum-compute-a-checksum-operates-on-keyblock}}\index{krb5\_c\_make\_checksum (C function)} 10328 10329\begin{fulllineitems} 10330\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_make_checksum:c.krb5_c_make_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_make\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ cksum}}{} 10331\end{fulllineitems} 10332 10333\begin{quote}\begin{description} 10334\item[{param}] \leavevmode 10335\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10336 10337\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type (0 for mandatory type) 10338 10339\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 10340 10341\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 10342 10343\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Input data 10344 10345\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksum} - Generated checksum 10346 10347\end{description}\end{quote} 10348\begin{quote}\begin{description} 10349\item[{retval}] \leavevmode\begin{itemize} 10350\item {} 103510 Success; otherwise - Kerberos error codes 10352 10353\end{itemize} 10354 10355\end{description}\end{quote} 10356 10357This function computes a checksum of type \sphinxstyleemphasis{cksumtype} over \sphinxstyleemphasis{input} , using \sphinxstyleemphasis{key} if the checksum type is a keyed checksum. If \sphinxstyleemphasis{cksumtype} is 0 and \sphinxstyleemphasis{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 \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the checksum type. The newly created \sphinxstyleemphasis{cksum} must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_checksum_contents:c.krb5_free_checksum_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_checksum\_contents()}}}} when it is no longer needed. 10358 10359 10360\sphinxstrong{See also:} 10361 10362 10363{\hyperref[\detokenize{appdev/refs/api/krb5_c_verify_checksum:c.krb5_c_verify_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_c\_verify\_checksum()}}}} 10364 10365 10366 10367\begin{sphinxadmonition}{note}{Note:} 10368This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_k_make_checksum:c.krb5_k_make_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_k\_make\_checksum()}}}} , but operates on keyblock \sphinxstyleemphasis{key} . 10369\end{sphinxadmonition} 10370 10371 10372\subsubsection{krb5\_c\_make\_checksum\_iov - Fill in a checksum element in IOV array (operates on keyblock)} 10373\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_c_make_checksum_iov::doc}}\index{krb5\_c\_make\_checksum\_iov (C function)} 10374 10375\begin{fulllineitems} 10376\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_make_checksum_iov:c.krb5_c_make_checksum_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_make\_checksum\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 10377\end{fulllineitems} 10378 10379\begin{quote}\begin{description} 10380\item[{param}] \leavevmode 10381\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10382 10383\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type (0 for mandatory type) 10384 10385\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 10386 10387\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 10388 10389\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array 10390 10391\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 10392 10393\end{description}\end{quote} 10394\begin{quote}\begin{description} 10395\item[{retval}] \leavevmode\begin{itemize} 10396\item {} 103970 Success; otherwise - Kerberos error codes 10398 10399\end{itemize} 10400 10401\end{description}\end{quote} 10402 10403Create a checksum in the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}}} element over {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_DATA}}}} and {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}}} chunks in \sphinxstyleemphasis{data} . Only the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}}} region is modified. 10404 10405 10406\sphinxstrong{See also:} 10407 10408 10409{\hyperref[\detokenize{appdev/refs/api/krb5_c_verify_checksum_iov:c.krb5_c_verify_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_verify\_checksum\_iov()}}}} 10410 10411 10412 10413\begin{sphinxadmonition}{note}{Note:} 10414This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_k_make_checksum_iov:c.krb5_k_make_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_k\_make\_checksum\_iov()}}}} , but operates on keyblock \sphinxstyleemphasis{key} . 10415\end{sphinxadmonition} 10416 10417 10418\subsubsection{krb5\_c\_make\_random\_key - Generate an enctype-specific random encryption key.} 10419\label{\detokenize{appdev/refs/api/krb5_c_make_random_key:krb5-c-make-random-key-generate-an-enctype-specific-random-encryption-key}}\label{\detokenize{appdev/refs/api/krb5_c_make_random_key::doc}}\index{krb5\_c\_make\_random\_key (C function)} 10420 10421\begin{fulllineitems} 10422\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_make_random_key:c.krb5_c_make_random_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_make\_random\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ k5\_random\_key}}{} 10423\end{fulllineitems} 10424 10425\begin{quote}\begin{description} 10426\item[{param}] \leavevmode 10427\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10428 10429\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type of the generated key 10430 10431\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{k5\_random\_key} - An allocated and initialized keyblock 10432 10433\end{description}\end{quote} 10434\begin{quote}\begin{description} 10435\item[{retval}] \leavevmode\begin{itemize} 10436\item {} 104370 Success; otherwise - Kerberos error codes 10438 10439\end{itemize} 10440 10441\end{description}\end{quote} 10442 10443Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock_contents:c.krb5_free_keyblock_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock\_contents()}}}} to free \sphinxstyleemphasis{k5\_random\_key} when no longer needed. 10444 10445 10446\subsubsection{krb5\_c\_padding\_length - Return a number of padding octets.} 10447\label{\detokenize{appdev/refs/api/krb5_c_padding_length:krb5-c-padding-length-return-a-number-of-padding-octets}}\label{\detokenize{appdev/refs/api/krb5_c_padding_length::doc}}\index{krb5\_c\_padding\_length (C function)} 10448 10449\begin{fulllineitems} 10450\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_padding_length:c.krb5_c_padding_length}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_padding\_length}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, size\_t\sphinxstyleemphasis{ data\_length}, unsigned int *\sphinxstyleemphasis{ size}}{} 10451\end{fulllineitems} 10452 10453\begin{quote}\begin{description} 10454\item[{param}] \leavevmode 10455\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10456 10457\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10458 10459\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data\_length} - Length of the plaintext to pad 10460 10461\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{size} - Number of padding octets 10462 10463\end{description}\end{quote} 10464\begin{quote}\begin{description} 10465\item[{retval}] \leavevmode\begin{itemize} 10466\item {} 104670 Success; otherwise - KRB5\_BAD\_ENCTYPE 10468 10469\end{itemize} 10470 10471\end{description}\end{quote} 10472 10473This function returns the number of the padding octets required to pad \sphinxstyleemphasis{data\_length} octets of plaintext. 10474 10475 10476\subsubsection{krb5\_c\_prf - Generate enctype-specific pseudo-random bytes.} 10477\label{\detokenize{appdev/refs/api/krb5_c_prf:krb5-c-prf-generate-enctype-specific-pseudo-random-bytes}}\label{\detokenize{appdev/refs/api/krb5_c_prf::doc}}\index{krb5\_c\_prf (C function)} 10478 10479\begin{fulllineitems} 10480\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_prf:c.krb5_c_prf}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_prf}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ output}}{} 10481\end{fulllineitems} 10482 10483\begin{quote}\begin{description} 10484\item[{param}] \leavevmode 10485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10486 10487\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} - Key 10488 10489\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Input data 10490 10491\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Output data 10492 10493\end{description}\end{quote} 10494\begin{quote}\begin{description} 10495\item[{retval}] \leavevmode\begin{itemize} 10496\item {} 104970 Success; otherwise - Kerberos error codes 10498 10499\end{itemize} 10500 10501\end{description}\end{quote} 10502 10503This function selects a pseudo-random function based on \sphinxstyleemphasis{keyblock} and computes its value over \sphinxstyleemphasis{input} , placing the result into \sphinxstyleemphasis{output} . The caller must preinitialize \sphinxstyleemphasis{output} and allocate space for the result, using {\hyperref[\detokenize{appdev/refs/api/krb5_c_prf_length:c.krb5_c_prf_length}]{\sphinxcrossref{\sphinxcode{krb5\_c\_prf\_length()}}}} to determine the required length. 10504 10505 10506\subsubsection{krb5\_c\_prfplus - Generate pseudo-random bytes using RFC 6113 PRF+.} 10507\label{\detokenize{appdev/refs/api/krb5_c_prfplus:krb5-c-prfplus-generate-pseudo-random-bytes-using-rfc-6113-prf}}\label{\detokenize{appdev/refs/api/krb5_c_prfplus::doc}}\index{krb5\_c\_prfplus (C function)} 10508 10509\begin{fulllineitems} 10510\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_prfplus:c.krb5_c_prfplus}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_prfplus}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ k}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ output}}{} 10511\end{fulllineitems} 10512 10513\begin{quote}\begin{description} 10514\item[{param}] \leavevmode 10515\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10516 10517\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k} - KDC contribution key 10518 10519\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Input data 10520 10521\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Pseudo-random output buffer 10522 10523\end{description}\end{quote} 10524\begin{quote}\begin{description} 10525\item[{return}] \leavevmode\begin{itemize} 10526\item {} 105270 on success, E2BIG if output-\textgreater{}length is too large for PRF+ to generate, ENOMEM on allocation failure, or an error code from krb5\_c\_prf() 10528 10529\end{itemize} 10530 10531\end{description}\end{quote} 10532 10533This function fills \sphinxstyleemphasis{output} with PRF+(k, input) as defined in RFC 6113 section 5.1. The caller must preinitialize \sphinxstyleemphasis{output} and allocate the desired amount of space. The length of the pseudo-random output will match the length of \sphinxstyleemphasis{output} . 10534 10535\begin{sphinxadmonition}{note}{Note:} 10536RFC 4402 defines a different PRF+ operation. This function does not implement that operation. 10537\end{sphinxadmonition} 10538 10539 10540\subsubsection{krb5\_c\_prf\_length - Get the output length of pseudo-random functions for an encryption type.} 10541\label{\detokenize{appdev/refs/api/krb5_c_prf_length::doc}}\label{\detokenize{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)} 10542 10543\begin{fulllineitems} 10544\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_prf_length:c.krb5_c_prf_length}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_prf\_length}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, size\_t *\sphinxstyleemphasis{ len}}{} 10545\end{fulllineitems} 10546 10547\begin{quote}\begin{description} 10548\item[{param}] \leavevmode 10549\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10550 10551\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10552 10553\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{len} - Length of PRF output 10554 10555\end{description}\end{quote} 10556\begin{quote}\begin{description} 10557\item[{retval}] \leavevmode\begin{itemize} 10558\item {} 105590 Success; otherwise - Kerberos error codes 10560 10561\end{itemize} 10562 10563\end{description}\end{quote} 10564 10565 10566\subsubsection{krb5\_c\_random\_add\_entropy - Add entropy to the pseudo-random number generator.} 10567\label{\detokenize{appdev/refs/api/krb5_c_random_add_entropy::doc}}\label{\detokenize{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)} 10568 10569\begin{fulllineitems} 10570\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_add_entropy:c.krb5_c_random_add_entropy}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_random\_add\_entropy}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, unsigned int\sphinxstyleemphasis{ randsource}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 10571\end{fulllineitems} 10572 10573\begin{quote}\begin{description} 10574\item[{param}] \leavevmode 10575\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10576 10577\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{randsource} - Entropy source (see KRB5\_RANDSOURCE types) 10578 10579\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Data 10580 10581\end{description}\end{quote} 10582\begin{quote}\begin{description} 10583\item[{retval}] \leavevmode\begin{itemize} 10584\item {} 105850 Success; otherwise - Kerberos error codes 10586 10587\end{itemize} 10588 10589\end{description}\end{quote} 10590 10591Contribute 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. 10592 10593 10594\subsubsection{krb5\_c\_random\_make\_octets - Generate pseudo-random bytes.} 10595\label{\detokenize{appdev/refs/api/krb5_c_random_make_octets::doc}}\label{\detokenize{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)} 10596 10597\begin{fulllineitems} 10598\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_make_octets:c.krb5_c_random_make_octets}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_random\_make\_octets}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 10599\end{fulllineitems} 10600 10601\begin{quote}\begin{description} 10602\item[{param}] \leavevmode 10603\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10604 10605\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} - Random data 10606 10607\end{description}\end{quote} 10608\begin{quote}\begin{description} 10609\item[{retval}] \leavevmode\begin{itemize} 10610\item {} 106110 Success; otherwise - Kerberos error codes 10612 10613\end{itemize} 10614 10615\end{description}\end{quote} 10616 10617Fills in \sphinxstyleemphasis{data} with bytes from the PRNG used by krb5 crypto operations. The caller must preinitialize \sphinxstyleemphasis{data} and allocate the desired amount of space. 10618 10619 10620\subsubsection{krb5\_c\_random\_os\_entropy - Collect entropy from the OS if possible.} 10621\label{\detokenize{appdev/refs/api/krb5_c_random_os_entropy:krb5-c-random-os-entropy-collect-entropy-from-the-os-if-possible}}\label{\detokenize{appdev/refs/api/krb5_c_random_os_entropy::doc}}\index{krb5\_c\_random\_os\_entropy (C function)} 10622 10623\begin{fulllineitems} 10624\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_os_entropy:c.krb5_c_random_os_entropy}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_random\_os\_entropy}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, int\sphinxstyleemphasis{ strong}, int *\sphinxstyleemphasis{ success}}{} 10625\end{fulllineitems} 10626 10627\begin{quote}\begin{description} 10628\item[{param}] \leavevmode 10629\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10630 10631\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{strong} - Strongest available source of entropy 10632 10633\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{success} - 1 if OS provides entropy, 0 otherwise 10634 10635\end{description}\end{quote} 10636\begin{quote}\begin{description} 10637\item[{retval}] \leavevmode\begin{itemize} 10638\item {} 106390 Success; otherwise - Kerberos error codes 10640 10641\end{itemize} 10642 10643\end{description}\end{quote} 10644 10645If \sphinxstyleemphasis{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. 10646 10647 10648\subsubsection{krb5\_c\_random\_to\_key - Generate an enctype-specific key from random data.} 10649\label{\detokenize{appdev/refs/api/krb5_c_random_to_key:krb5-c-random-to-key-generate-an-enctype-specific-key-from-random-data}}\label{\detokenize{appdev/refs/api/krb5_c_random_to_key::doc}}\index{krb5\_c\_random\_to\_key (C function)} 10650 10651\begin{fulllineitems} 10652\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_to_key:c.krb5_c_random_to_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_random\_to\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ random\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ k5\_random\_key}}{} 10653\end{fulllineitems} 10654 10655\begin{quote}\begin{description} 10656\item[{param}] \leavevmode 10657\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10658 10659\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10660 10661\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{random\_data} - Random input data 10662 10663\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{k5\_random\_key} - Resulting key 10664 10665\end{description}\end{quote} 10666\begin{quote}\begin{description} 10667\item[{retval}] \leavevmode\begin{itemize} 10668\item {} 106690 Success; otherwise - Kerberos error codes 10670 10671\end{itemize} 10672 10673\end{description}\end{quote} 10674 10675This function takes random input data \sphinxstyleemphasis{random\_data} and produces a valid key \sphinxstyleemphasis{k5\_random\_key} for a given \sphinxstyleemphasis{enctype} . 10676 10677 10678\sphinxstrong{See also:} 10679 10680 10681{\hyperref[\detokenize{appdev/refs/api/krb5_c_keylengths:c.krb5_c_keylengths}]{\sphinxcrossref{\sphinxcode{krb5\_c\_keylengths()}}}} 10682 10683 10684 10685\begin{sphinxadmonition}{note}{Note:} 10686It is assumed that \sphinxstyleemphasis{k5\_random\_key} has already been initialized and \sphinxstyleemphasis{k5\_random\_key-\textgreater{}contents} has been allocated with the correct length. 10687\end{sphinxadmonition} 10688 10689 10690\subsubsection{krb5\_c\_string\_to\_key - Convert a string (such a password) to a key.} 10691\label{\detokenize{appdev/refs/api/krb5_c_string_to_key:krb5-c-string-to-key-convert-a-string-such-a-password-to-a-key}}\label{\detokenize{appdev/refs/api/krb5_c_string_to_key::doc}}\index{krb5\_c\_string\_to\_key (C function)} 10692 10693\begin{fulllineitems} 10694\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_string_to_key:c.krb5_c_string_to_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_string\_to\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ string}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ salt}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}}{} 10695\end{fulllineitems} 10696 10697\begin{quote}\begin{description} 10698\item[{param}] \leavevmode 10699\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10700 10701\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10702 10703\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to be converted 10704 10705\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salt} - Salt value 10706 10707\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Generated key 10708 10709\end{description}\end{quote} 10710\begin{quote}\begin{description} 10711\item[{retval}] \leavevmode\begin{itemize} 10712\item {} 107130 Success; otherwise - Kerberos error codes 10714 10715\end{itemize} 10716 10717\end{description}\end{quote} 10718 10719This function converts \sphinxstyleemphasis{string} to a \sphinxstyleemphasis{key} of encryption type \sphinxstyleemphasis{enctype} , using the specified \sphinxstyleemphasis{salt} . The newly created \sphinxstyleemphasis{key} must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock_contents:c.krb5_free_keyblock_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock\_contents()}}}} when it is no longer needed. 10720 10721 10722\subsubsection{krb5\_c\_string\_to\_key\_with\_params - Convert a string (such as a password) to a key with additional parameters.} 10723\label{\detokenize{appdev/refs/api/krb5_c_string_to_key_with_params::doc}}\label{\detokenize{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)} 10724 10725\begin{fulllineitems} 10726\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_string_to_key_with_params:c.krb5_c_string_to_key_with_params}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_string\_to\_key\_with\_params}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ string}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ salt}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ params}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}}{} 10727\end{fulllineitems} 10728 10729\begin{quote}\begin{description} 10730\item[{param}] \leavevmode 10731\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10732 10733\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 10734 10735\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} - String to be converted 10736 10737\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salt} - Salt value 10738 10739\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{params} - Parameters 10740 10741\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} - Generated key 10742 10743\end{description}\end{quote} 10744\begin{quote}\begin{description} 10745\item[{retval}] \leavevmode\begin{itemize} 10746\item {} 107470 Success; otherwise - Kerberos error codes 10748 10749\end{itemize} 10750 10751\end{description}\end{quote} 10752 10753This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_c_string_to_key:c.krb5_c_string_to_key}]{\sphinxcrossref{\sphinxcode{krb5\_c\_string\_to\_key()}}}} , but also takes parameters which may affect the algorithm in an enctype-dependent way. The newly created \sphinxstyleemphasis{key} must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_keyblock_contents:c.krb5_free_keyblock_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_keyblock\_contents()}}}} when it is no longer needed. 10754 10755 10756\subsubsection{krb5\_c\_valid\_cksumtype - Verify that specified checksum type is a valid Kerberos checksum type.} 10757\label{\detokenize{appdev/refs/api/krb5_c_valid_cksumtype:krb5-c-valid-cksumtype-verify-that-specified-checksum-type-is-a-valid-kerberos-checksum-type}}\label{\detokenize{appdev/refs/api/krb5_c_valid_cksumtype::doc}}\index{krb5\_c\_valid\_cksumtype (C function)} 10758 10759\begin{fulllineitems} 10760\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_valid_cksumtype:c.krb5_c_valid_cksumtype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_c\_valid\_cksumtype}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ ctype}}{} 10761\end{fulllineitems} 10762 10763\begin{quote}\begin{description} 10764\item[{param}] \leavevmode 10765\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctype} - Checksum type 10766 10767\end{description}\end{quote} 10768\begin{quote}\begin{description} 10769\item[{return}] \leavevmode\begin{itemize} 10770\item {} 10771TRUE if ctype is valid, FALSE if not 10772 10773\end{itemize} 10774 10775\end{description}\end{quote} 10776 10777 10778\subsubsection{krb5\_c\_valid\_enctype - Verify that a specified encryption type is a valid Kerberos encryption type.} 10779\label{\detokenize{appdev/refs/api/krb5_c_valid_enctype:krb5-c-valid-enctype-verify-that-a-specified-encryption-type-is-a-valid-kerberos-encryption-type}}\label{\detokenize{appdev/refs/api/krb5_c_valid_enctype::doc}}\index{krb5\_c\_valid\_enctype (C function)} 10780 10781\begin{fulllineitems} 10782\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_valid_enctype:c.krb5_c_valid_enctype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_c\_valid\_enctype}}{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ ktype}}{} 10783\end{fulllineitems} 10784 10785\begin{quote}\begin{description} 10786\item[{param}] \leavevmode 10787\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ktype} - Encryption type 10788 10789\end{description}\end{quote} 10790\begin{quote}\begin{description} 10791\item[{return}] \leavevmode\begin{itemize} 10792\item {} 10793TRUE if ktype is valid, FALSE if not 10794 10795\end{itemize} 10796 10797\end{description}\end{quote} 10798 10799 10800\subsubsection{krb5\_c\_verify\_checksum - Verify a checksum (operates on keyblock).} 10801\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum:krb5-c-verify-checksum-verify-a-checksum-operates-on-keyblock}}\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum::doc}}\index{krb5\_c\_verify\_checksum (C function)} 10802 10803\begin{fulllineitems} 10804\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum:c.krb5_c_verify_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_verify\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}, const {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ cksum}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} *\sphinxstyleemphasis{ valid}}{} 10805\end{fulllineitems} 10806 10807\begin{quote}\begin{description} 10808\item[{param}] \leavevmode 10809\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10810 10811\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 10812 10813\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - \sphinxstyleemphasis{key} usage 10814 10815\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Data to be used to compute a new checksum using \sphinxstyleemphasis{key} to compare \sphinxstyleemphasis{cksum} against 10816 10817\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksum} - Checksum to be verified 10818 10819\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} - Non-zero for success, zero for failure 10820 10821\end{description}\end{quote} 10822\begin{quote}\begin{description} 10823\item[{retval}] \leavevmode\begin{itemize} 10824\item {} 108250 Success; otherwise - Kerberos error codes 10826 10827\end{itemize} 10828 10829\end{description}\end{quote} 10830 10831This function verifies that \sphinxstyleemphasis{cksum} is a valid checksum for \sphinxstyleemphasis{data} . If the checksum type of \sphinxstyleemphasis{cksum} is a keyed checksum, \sphinxstyleemphasis{key} is used to verify the checksum. If the checksum type in \sphinxstyleemphasis{cksum} is 0 and \sphinxstyleemphasis{key} is not NULL, the mandatory checksum type for \sphinxstyleemphasis{key} will be used. The actual checksum key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the checksum type. 10832 10833\begin{sphinxadmonition}{note}{Note:} 10834This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_k_verify_checksum:c.krb5_k_verify_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_k\_verify\_checksum()}}}} , but operates on keyblock \sphinxstyleemphasis{key} . 10835\end{sphinxadmonition} 10836 10837 10838\subsubsection{krb5\_c\_verify\_checksum\_iov - Validate a checksum element in IOV array (operates on keyblock).} 10839\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum_iov::doc}}\label{\detokenize{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)} 10840 10841\begin{fulllineitems} 10842\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum_iov:c.krb5_c_verify_checksum_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_verify\_checksum\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} *\sphinxstyleemphasis{ valid}}{} 10843\end{fulllineitems} 10844 10845\begin{quote}\begin{description} 10846\item[{param}] \leavevmode 10847\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10848 10849\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type (0 for mandatory type) 10850 10851\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 10852 10853\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 10854 10855\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - IOV array 10856 10857\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 10858 10859\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} - Non-zero for success, zero for failure 10860 10861\end{description}\end{quote} 10862\begin{quote}\begin{description} 10863\item[{retval}] \leavevmode\begin{itemize} 10864\item {} 108650 Success; otherwise - Kerberos error codes 10866 10867\end{itemize} 10868 10869\end{description}\end{quote} 10870 10871Confirm that the checksum in the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}}} element is a valid checksum of the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_DATA}}}} and {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}}} regions in the iov. 10872 10873 10874\sphinxstrong{See also:} 10875 10876 10877{\hyperref[\detokenize{appdev/refs/api/krb5_c_make_checksum_iov:c.krb5_c_make_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_make\_checksum\_iov()}}}} 10878 10879 10880 10881\begin{sphinxadmonition}{note}{Note:} 10882This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_k_verify_checksum_iov:c.krb5_k_verify_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_k\_verify\_checksum\_iov()}}}} , but operates on keyblock \sphinxstyleemphasis{key} . 10883\end{sphinxadmonition} 10884 10885 10886\subsubsection{krb5\_cksumtype\_to\_string - Convert a checksum type to a string.} 10887\label{\detokenize{appdev/refs/api/krb5_cksumtype_to_string::doc}}\label{\detokenize{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)} 10888 10889\begin{fulllineitems} 10890\phantomsection\label{\detokenize{appdev/refs/api/krb5_cksumtype_to_string:c.krb5_cksumtype_to_string}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cksumtype\_to\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}}{} 10891\end{fulllineitems} 10892 10893\begin{quote}\begin{description} 10894\item[{param}] \leavevmode 10895\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type 10896 10897\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to hold converted checksum type 10898 10899\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Storage available in \sphinxstyleemphasis{buffer} 10900 10901\end{description}\end{quote} 10902\begin{quote}\begin{description} 10903\item[{retval}] \leavevmode\begin{itemize} 10904\item {} 109050 Success; otherwise - Kerberos error codes 10906 10907\end{itemize} 10908 10909\end{description}\end{quote} 10910 10911 10912\subsubsection{krb5\_decode\_authdata\_container - Unwrap authorization data.} 10913\label{\detokenize{appdev/refs/api/krb5_decode_authdata_container::doc}}\label{\detokenize{appdev/refs/api/krb5_decode_authdata_container:krb5-decode-authdata-container-unwrap-authorization-data}}\index{krb5\_decode\_authdata\_container (C function)} 10914 10915\begin{fulllineitems} 10916\phantomsection\label{\detokenize{appdev/refs/api/krb5_decode_authdata_container:c.krb5_decode_authdata_container}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_decode\_authdata\_container}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{krb5\_authdatatype}}}\sphinxstyleemphasis{ type}, const {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *\sphinxstyleemphasis{ container}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ authdata}}{} 10917\end{fulllineitems} 10918 10919\begin{quote}\begin{description} 10920\item[{param}] \leavevmode 10921\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 10922 10923\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - \sphinxcode{KRB5\_AUTHDATA} type of \sphinxstyleemphasis{container} 10924 10925\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{container} - Authorization data to be decoded 10926 10927\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authdata} - List of decoded authorization data 10928 10929\end{description}\end{quote} 10930\begin{quote}\begin{description} 10931\item[{retval}] \leavevmode\begin{itemize} 10932\item {} 109330 Success; otherwise - Kerberos error codes 10934 10935\end{itemize} 10936 10937\end{description}\end{quote} 10938 10939 10940\sphinxstrong{See also:} 10941 10942 10943{\hyperref[\detokenize{appdev/refs/api/krb5_encode_authdata_container:c.krb5_encode_authdata_container}]{\sphinxcrossref{\sphinxcode{krb5\_encode\_authdata\_container()}}}} 10944 10945 10946 10947 10948\subsubsection{krb5\_decode\_ticket - Decode an ASN.1-formatted ticket.} 10949\label{\detokenize{appdev/refs/api/krb5_decode_ticket::doc}}\label{\detokenize{appdev/refs/api/krb5_decode_ticket:krb5-decode-ticket-decode-an-asn-1-formatted-ticket}}\index{krb5\_decode\_ticket (C function)} 10950 10951\begin{fulllineitems} 10952\phantomsection\label{\detokenize{appdev/refs/api/krb5_decode_ticket:c.krb5_decode_ticket}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_decode\_ticket}}{const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ code}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} **\sphinxstyleemphasis{ rep}}{} 10953\end{fulllineitems} 10954 10955\begin{quote}\begin{description} 10956\item[{param}] \leavevmode 10957\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} - ASN.1-formatted ticket 10958 10959\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rep} - Decoded ticket information 10960 10961\end{description}\end{quote} 10962\begin{quote}\begin{description} 10963\item[{retval}] \leavevmode\begin{itemize} 10964\item {} 109650 Success; otherwise - Kerberos error codes 10966 10967\end{itemize} 10968 10969\end{description}\end{quote} 10970 10971 10972\subsubsection{krb5\_deltat\_to\_string - Convert a relative time value to a string.} 10973\label{\detokenize{appdev/refs/api/krb5_deltat_to_string::doc}}\label{\detokenize{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)} 10974 10975\begin{fulllineitems} 10976\phantomsection\label{\detokenize{appdev/refs/api/krb5_deltat_to_string:c.krb5_deltat_to_string}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_deltat\_to\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}}\sphinxstyleemphasis{ deltat}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}}{} 10977\end{fulllineitems} 10978 10979\begin{quote}\begin{description} 10980\item[{param}] \leavevmode 10981\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{deltat} - Relative time value to convert 10982 10983\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to hold time string 10984 10985\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Storage available in \sphinxstyleemphasis{buffer} 10986 10987\end{description}\end{quote} 10988\begin{quote}\begin{description} 10989\item[{retval}] \leavevmode\begin{itemize} 10990\item {} 109910 Success; otherwise - Kerberos error codes 10992 10993\end{itemize} 10994 10995\end{description}\end{quote} 10996 10997 10998\subsubsection{krb5\_encode\_authdata\_container - Wrap authorization data in a container.} 10999\label{\detokenize{appdev/refs/api/krb5_encode_authdata_container::doc}}\label{\detokenize{appdev/refs/api/krb5_encode_authdata_container:krb5-encode-authdata-container-wrap-authorization-data-in-a-container}}\index{krb5\_encode\_authdata\_container (C function)} 11000 11001\begin{fulllineitems} 11002\phantomsection\label{\detokenize{appdev/refs/api/krb5_encode_authdata_container:c.krb5_encode_authdata_container}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_encode\_authdata\_container}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{krb5\_authdatatype}}}\sphinxstyleemphasis{ type}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} *const *\sphinxstyleemphasis{ authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ***\sphinxstyleemphasis{ container}}{} 11003\end{fulllineitems} 11004 11005\begin{quote}\begin{description} 11006\item[{param}] \leavevmode 11007\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11008 11009\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} - \sphinxcode{KRB5\_AUTHDATA} type of \sphinxstyleemphasis{container} 11010 11011\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authdata} - List of authorization data to be encoded 11012 11013\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{container} - List of encoded authorization data 11014 11015\end{description}\end{quote} 11016\begin{quote}\begin{description} 11017\item[{retval}] \leavevmode\begin{itemize} 11018\item {} 110190 Success; otherwise - Kerberos error codes 11020 11021\end{itemize} 11022 11023\end{description}\end{quote} 11024 11025The result is returned in \sphinxstyleemphasis{container} as a single-element list. 11026 11027 11028\sphinxstrong{See also:} 11029 11030 11031{\hyperref[\detokenize{appdev/refs/api/krb5_decode_authdata_container:c.krb5_decode_authdata_container}]{\sphinxcrossref{\sphinxcode{krb5\_decode\_authdata\_container()}}}} 11032 11033 11034 11035 11036\subsubsection{krb5\_enctype\_to\_name - Convert an encryption type to a name or alias.} 11037\label{\detokenize{appdev/refs/api/krb5_enctype_to_name::doc}}\label{\detokenize{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)} 11038 11039\begin{fulllineitems} 11040\phantomsection\label{\detokenize{appdev/refs/api/krb5_enctype_to_name:c.krb5_enctype_to_name}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_enctype\_to\_name}}{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}}\sphinxstyleemphasis{ shortest}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}}{} 11041\end{fulllineitems} 11042 11043\begin{quote}\begin{description} 11044\item[{param}] \leavevmode 11045\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 11046 11047\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{shortest} - Flag 11048 11049\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to hold encryption type string 11050 11051\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Storage available in \sphinxstyleemphasis{buffer} 11052 11053\end{description}\end{quote} 11054\begin{quote}\begin{description} 11055\item[{retval}] \leavevmode\begin{itemize} 11056\item {} 110570 Success; otherwise - Kerberos error codes 11058 11059\end{itemize} 11060 11061\end{description}\end{quote} 11062 11063If \sphinxstyleemphasis{shortest} is FALSE, this function returns the enctype’s canonical name (like”aes128-cts-hmac-sha1-96”). If \sphinxstyleemphasis{shortest} is TRUE, it return the enctype’s shortest alias (like”aes128-cts”). 11064 11065\begin{sphinxadmonition}{note}{Note:} 11066New in 1.9 11067\end{sphinxadmonition} 11068 11069 11070\subsubsection{krb5\_enctype\_to\_string - Convert an encryption type to a string.} 11071\label{\detokenize{appdev/refs/api/krb5_enctype_to_string::doc}}\label{\detokenize{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)} 11072 11073\begin{fulllineitems} 11074\phantomsection\label{\detokenize{appdev/refs/api/krb5_enctype_to_string:c.krb5_enctype_to_string}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_enctype\_to\_string}}{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}, char *\sphinxstyleemphasis{ buffer}, size\_t\sphinxstyleemphasis{ buflen}}{} 11075\end{fulllineitems} 11076 11077\begin{quote}\begin{description} 11078\item[{param}] \leavevmode 11079\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} - Encryption type 11080 11081\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} - Buffer to hold encryption type string 11082 11083\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} - Storage available in \sphinxstyleemphasis{buffer} 11084 11085\end{description}\end{quote} 11086\begin{quote}\begin{description} 11087\item[{retval}] \leavevmode\begin{itemize} 11088\item {} 110890 Success; otherwise - Kerberos error codes 11090 11091\end{itemize} 11092 11093\end{description}\end{quote} 11094 11095 11096\subsubsection{krb5\_free\_checksum - Free a krb5\_checksum structure.} 11097\label{\detokenize{appdev/refs/api/krb5_free_checksum:krb5-free-checksum-free-a-krb5-checksum-structure}}\label{\detokenize{appdev/refs/api/krb5_free_checksum::doc}}\index{krb5\_free\_checksum (C function)} 11098 11099\begin{fulllineitems} 11100\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_checksum:c.krb5_free_checksum}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ val}}{} 11101\end{fulllineitems} 11102 11103\begin{quote}\begin{description} 11104\item[{param}] \leavevmode 11105\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11106 11107\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Checksum structure to be freed 11108 11109\end{description}\end{quote} 11110 11111This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 11112 11113 11114\subsubsection{krb5\_free\_checksum\_contents - Free the contents of a krb5\_checksum structure.} 11115\label{\detokenize{appdev/refs/api/krb5_free_checksum_contents:krb5-free-checksum-contents-free-the-contents-of-a-krb5-checksum-structure}}\label{\detokenize{appdev/refs/api/krb5_free_checksum_contents::doc}}\index{krb5\_free\_checksum\_contents (C function)} 11116 11117\begin{fulllineitems} 11118\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_checksum_contents:c.krb5_free_checksum_contents}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_checksum\_contents}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ val}}{} 11119\end{fulllineitems} 11120 11121\begin{quote}\begin{description} 11122\item[{param}] \leavevmode 11123\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11124 11125\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Checksum structure to free contents of 11126 11127\end{description}\end{quote} 11128 11129This function frees the contents of \sphinxstyleemphasis{val} , but not the structure itself. 11130 11131 11132\subsubsection{krb5\_free\_cksumtypes - Free an array of checksum types.} 11133\label{\detokenize{appdev/refs/api/krb5_free_cksumtypes:krb5-free-cksumtypes-free-an-array-of-checksum-types}}\label{\detokenize{appdev/refs/api/krb5_free_cksumtypes::doc}}\index{krb5\_free\_cksumtypes (C function)} 11134 11135\begin{fulllineitems} 11136\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_cksumtypes:c.krb5_free_cksumtypes}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_cksumtypes}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}} *\sphinxstyleemphasis{ val}}{} 11137\end{fulllineitems} 11138 11139\begin{quote}\begin{description} 11140\item[{param}] \leavevmode 11141\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11142 11143\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} - Array of checksum types to be freed 11144 11145\end{description}\end{quote} 11146 11147 11148\subsubsection{krb5\_free\_tgt\_creds - Free an array of credential structures.} 11149\label{\detokenize{appdev/refs/api/krb5_free_tgt_creds::doc}}\label{\detokenize{appdev/refs/api/krb5_free_tgt_creds:krb5-free-tgt-creds-free-an-array-of-credential-structures}}\index{krb5\_free\_tgt\_creds (C function)} 11150 11151\begin{fulllineitems} 11152\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_tgt_creds:c.krb5_free_tgt_creds}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_free\_tgt\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ tgts}}{} 11153\end{fulllineitems} 11154 11155\begin{quote}\begin{description} 11156\item[{param}] \leavevmode 11157\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11158 11159\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{tgts} - Null-terminated array of credentials to free 11160 11161\end{description}\end{quote} 11162 11163\begin{sphinxadmonition}{note}{Note:} 11164The last entry in the array \sphinxstyleemphasis{tgts} must be a NULL pointer. 11165\end{sphinxadmonition} 11166 11167 11168\subsubsection{krb5\_k\_create\_key - Create a krb5\_key from the enctype and key data in a keyblock.} 11169\label{\detokenize{appdev/refs/api/krb5_k_create_key::doc}}\label{\detokenize{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)} 11170 11171\begin{fulllineitems} 11172\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_create_key:c.krb5_k_create_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_create\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}} *\sphinxstyleemphasis{ out}}{} 11173\end{fulllineitems} 11174 11175\begin{quote}\begin{description} 11176\item[{param}] \leavevmode 11177\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11178 11179\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key\_data} - Keyblock 11180 11181\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} - Opaque key 11182 11183\end{description}\end{quote} 11184\begin{quote}\begin{description} 11185\item[{retval}] \leavevmode\begin{itemize} 11186\item {} 111870 Success; otherwise - KRB5\_BAD\_ENCTYPE 11188 11189\end{itemize} 11190 11191\end{description}\end{quote} 11192 11193The reference count on a key \sphinxstyleemphasis{out} is set to 1. Use {\hyperref[\detokenize{appdev/refs/api/krb5_k_free_key:c.krb5_k_free_key}]{\sphinxcrossref{\sphinxcode{krb5\_k\_free\_key()}}}} to free \sphinxstyleemphasis{out} when it is no longer needed. 11194 11195 11196\subsubsection{krb5\_k\_decrypt - Decrypt data using a key (operates on opaque key).} 11197\label{\detokenize{appdev/refs/api/krb5_k_decrypt:krb5-k-decrypt-decrypt-data-using-a-key-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_decrypt::doc}}\index{krb5\_k\_decrypt (C function)} 11198 11199\begin{fulllineitems} 11200\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_decrypt:c.krb5_k_decrypt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_decrypt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, const {\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ output}}{} 11201\end{fulllineitems} 11202 11203\begin{quote}\begin{description} 11204\item[{param}] \leavevmode 11205\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11206 11207\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key 11208 11209\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11210 11211\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 11212 11213\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Encrypted data 11214 11215\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Decrypted data 11216 11217\end{description}\end{quote} 11218\begin{quote}\begin{description} 11219\item[{retval}] \leavevmode\begin{itemize} 11220\item {} 112210 Success; otherwise - Kerberos error codes 11222 11223\end{itemize} 11224 11225\end{description}\end{quote} 11226 11227This function decrypts the data block \sphinxstyleemphasis{input} and stores the output into \sphinxstyleemphasis{output} . The actual decryption key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 11228 11229\begin{sphinxadmonition}{note}{Note:} 11230The caller must initialize \sphinxstyleemphasis{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[\detokenize{appdev/refs/api/krb5_c_decrypt:c.krb5_c_decrypt}]{\sphinxcrossref{\sphinxcode{krb5\_c\_decrypt()}}}} trim \sphinxstyleemphasis{output-\textgreater{}length} . For some enctypes, the resulting \sphinxstyleemphasis{output-\textgreater{}length} may include padding bytes. 11231\end{sphinxadmonition} 11232 11233 11234\subsubsection{krb5\_k\_decrypt\_iov - Decrypt data in place supporting AEAD (operates on opaque key).} 11235\label{\detokenize{appdev/refs/api/krb5_k_decrypt_iov::doc}}\label{\detokenize{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)} 11236 11237\begin{fulllineitems} 11238\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_decrypt_iov:c.krb5_k_decrypt_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_decrypt\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 11239\end{fulllineitems} 11240 11241\begin{quote}\begin{description} 11242\item[{param}] \leavevmode 11243\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11244 11245\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key 11246 11247\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11248 11249\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 11250 11251\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array. Modified in-place. 11252 11253\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 11254 11255\end{description}\end{quote} 11256\begin{quote}\begin{description} 11257\item[{retval}] \leavevmode\begin{itemize} 11258\item {} 112590 Success; otherwise - Kerberos error codes 11260 11261\end{itemize} 11262 11263\end{description}\end{quote} 11264 11265This function decrypts the data block \sphinxstyleemphasis{data} and stores the output in-place. The actual decryption key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 11266 11267 11268\sphinxstrong{See also:} 11269 11270 11271{\hyperref[\detokenize{appdev/refs/api/krb5_k_encrypt_iov:c.krb5_k_encrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_k\_encrypt\_iov()}}}} 11272 11273 11274 11275\begin{sphinxadmonition}{note}{Note:} 11276On return from a {\hyperref[\detokenize{appdev/refs/api/krb5_c_decrypt_iov:c.krb5_c_decrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_decrypt\_iov()}}}} call, the \sphinxstyleemphasis{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. 11277\end{sphinxadmonition} 11278 11279 11280\subsubsection{krb5\_k\_encrypt - Encrypt data using a key (operates on opaque key).} 11281\label{\detokenize{appdev/refs/api/krb5_k_encrypt:krb5-k-encrypt-encrypt-data-using-a-key-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_encrypt::doc}}\index{krb5\_k\_encrypt (C function)} 11282 11283\begin{fulllineitems} 11284\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_encrypt:c.krb5_k_encrypt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_encrypt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} *\sphinxstyleemphasis{ output}}{} 11285\end{fulllineitems} 11286 11287\begin{quote}\begin{description} 11288\item[{param}] \leavevmode 11289\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11290 11291\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key 11292 11293\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11294 11295\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 11296 11297\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Data to be encrypted 11298 11299\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Encrypted data 11300 11301\end{description}\end{quote} 11302\begin{quote}\begin{description} 11303\item[{retval}] \leavevmode\begin{itemize} 11304\item {} 113050 Success; otherwise - Kerberos error codes 11306 11307\end{itemize} 11308 11309\end{description}\end{quote} 11310 11311This function encrypts the data block \sphinxstyleemphasis{input} and stores the output into \sphinxstyleemphasis{output} . The actual encryption key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 11312 11313\begin{sphinxadmonition}{note}{Note:} 11314The caller must initialize \sphinxstyleemphasis{output} and allocate at least enough space for the result (using {\hyperref[\detokenize{appdev/refs/api/krb5_c_encrypt_length:c.krb5_c_encrypt_length}]{\sphinxcrossref{\sphinxcode{krb5\_c\_encrypt\_length()}}}} to determine the amount of space needed). \sphinxstyleemphasis{output-\textgreater{}length} will be set to the actual length of the ciphertext. 11315\end{sphinxadmonition} 11316 11317 11318\subsubsection{krb5\_k\_encrypt\_iov - Encrypt data in place supporting AEAD (operates on opaque key).} 11319\label{\detokenize{appdev/refs/api/krb5_k_encrypt_iov::doc}}\label{\detokenize{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)} 11320 11321\begin{fulllineitems} 11322\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_encrypt_iov:c.krb5_k_encrypt_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_encrypt\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 11323\end{fulllineitems} 11324 11325\begin{quote}\begin{description} 11326\item[{param}] \leavevmode 11327\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11328 11329\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key 11330 11331\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11332 11333\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} - Cipher state; specify NULL if not needed 11334 11335\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array. Modified in-place. 11336 11337\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 11338 11339\end{description}\end{quote} 11340\begin{quote}\begin{description} 11341\item[{retval}] \leavevmode\begin{itemize} 11342\item {} 113430 Success; otherwise - Kerberos error codes 11344 11345\end{itemize} 11346 11347\end{description}\end{quote} 11348 11349This function encrypts the data block \sphinxstyleemphasis{data} and stores the output in-place. The actual encryption key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the encryption type. If non-null, \sphinxstyleemphasis{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. 11350 11351 11352\sphinxstrong{See also:} 11353 11354 11355{\hyperref[\detokenize{appdev/refs/api/krb5_k_decrypt_iov:c.krb5_k_decrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_k\_decrypt\_iov()}}}} 11356 11357 11358 11359\begin{sphinxadmonition}{note}{Note:} 11360On return from a {\hyperref[\detokenize{appdev/refs/api/krb5_c_encrypt_iov:c.krb5_c_encrypt_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_encrypt\_iov()}}}} call, the \sphinxstyleemphasis{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. 11361\end{sphinxadmonition} 11362 11363 11364\subsubsection{krb5\_k\_free\_key - Decrement the reference count on a key and free it if it hits zero.} 11365\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_k_free_key::doc}}\index{krb5\_k\_free\_key (C function)} 11366 11367\begin{fulllineitems} 11368\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_free_key:c.krb5_k_free_key}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_k\_free\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}}{} 11369\end{fulllineitems} 11370 11371\begin{quote}\begin{description} 11372\item[{param}] \leavevmode 11373\sphinxstylestrong{context} 11374 11375\sphinxstylestrong{key} 11376 11377\end{description}\end{quote} 11378 11379 11380\subsubsection{krb5\_k\_key\_enctype - Retrieve the enctype of a krb5\_key structure.} 11381\label{\detokenize{appdev/refs/api/krb5_k_key_enctype::doc}}\label{\detokenize{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)} 11382 11383\begin{fulllineitems} 11384\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_key_enctype:c.krb5_k_key_enctype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} \sphinxbfcode{krb5\_k\_key\_enctype}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}}{} 11385\end{fulllineitems} 11386 11387\begin{quote}\begin{description} 11388\item[{param}] \leavevmode 11389\sphinxstylestrong{context} 11390 11391\sphinxstylestrong{key} 11392 11393\end{description}\end{quote} 11394 11395 11396\subsubsection{krb5\_k\_key\_keyblock - Retrieve a copy of the keyblock from a krb5\_key structure.} 11397\label{\detokenize{appdev/refs/api/krb5_k_key_keyblock:krb5-k-key-keyblock-retrieve-a-copy-of-the-keyblock-from-a-krb5-key-structure}}\label{\detokenize{appdev/refs/api/krb5_k_key_keyblock::doc}}\index{krb5\_k\_key\_keyblock (C function)} 11398 11399\begin{fulllineitems} 11400\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_key_keyblock:c.krb5_k_key_keyblock}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_key\_keyblock}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ key\_data}}{} 11401\end{fulllineitems} 11402 11403\begin{quote}\begin{description} 11404\item[{param}] \leavevmode 11405\sphinxstylestrong{context} 11406 11407\sphinxstylestrong{key} 11408 11409\sphinxstylestrong{key\_data} 11410 11411\end{description}\end{quote} 11412 11413 11414\subsubsection{krb5\_k\_make\_checksum - Compute a checksum (operates on opaque key).} 11415\label{\detokenize{appdev/refs/api/krb5_k_make_checksum::doc}}\label{\detokenize{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)} 11416 11417\begin{fulllineitems} 11418\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_make_checksum:c.krb5_k_make_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_make\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ cksum}}{} 11419\end{fulllineitems} 11420 11421\begin{quote}\begin{description} 11422\item[{param}] \leavevmode 11423\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11424 11425\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type (0 for mandatory type) 11426 11427\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 11428 11429\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11430 11431\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Input data 11432 11433\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksum} - Generated checksum 11434 11435\end{description}\end{quote} 11436\begin{quote}\begin{description} 11437\item[{retval}] \leavevmode\begin{itemize} 11438\item {} 114390 Success; otherwise - Kerberos error codes 11440 11441\end{itemize} 11442 11443\end{description}\end{quote} 11444 11445This function computes a checksum of type \sphinxstyleemphasis{cksumtype} over \sphinxstyleemphasis{input} , using \sphinxstyleemphasis{key} if the checksum type is a keyed checksum. If \sphinxstyleemphasis{cksumtype} is 0 and \sphinxstyleemphasis{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 \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the checksum type. The newly created \sphinxstyleemphasis{cksum} must be released by calling {\hyperref[\detokenize{appdev/refs/api/krb5_free_checksum_contents:c.krb5_free_checksum_contents}]{\sphinxcrossref{\sphinxcode{krb5\_free\_checksum\_contents()}}}} when it is no longer needed. 11446 11447 11448\sphinxstrong{See also:} 11449 11450 11451{\hyperref[\detokenize{appdev/refs/api/krb5_c_verify_checksum:c.krb5_c_verify_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_c\_verify\_checksum()}}}} 11452 11453 11454 11455\begin{sphinxadmonition}{note}{Note:} 11456This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_c_make_checksum:c.krb5_c_make_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_c\_make\_checksum()}}}} , but operates on opaque \sphinxstyleemphasis{key} . 11457\end{sphinxadmonition} 11458 11459 11460\subsubsection{krb5\_k\_make\_checksum\_iov - Fill in a checksum element in IOV array (operates on opaque key)} 11461\label{\detokenize{appdev/refs/api/krb5_k_make_checksum_iov::doc}}\label{\detokenize{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)} 11462 11463\begin{fulllineitems} 11464\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_make_checksum_iov:c.krb5_k_make_checksum_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_make\_checksum\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}}{} 11465\end{fulllineitems} 11466 11467\begin{quote}\begin{description} 11468\item[{param}] \leavevmode 11469\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11470 11471\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type (0 for mandatory type) 11472 11473\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 11474 11475\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11476 11477\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} - IOV array 11478 11479\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 11480 11481\end{description}\end{quote} 11482\begin{quote}\begin{description} 11483\item[{retval}] \leavevmode\begin{itemize} 11484\item {} 114850 Success; otherwise - Kerberos error codes 11486 11487\end{itemize} 11488 11489\end{description}\end{quote} 11490 11491Create a checksum in the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}}} element over {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_DATA}}}} and {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}}} chunks in \sphinxstyleemphasis{data} . Only the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}}} region is modified. 11492 11493 11494\sphinxstrong{See also:} 11495 11496 11497{\hyperref[\detokenize{appdev/refs/api/krb5_k_verify_checksum_iov:c.krb5_k_verify_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_k\_verify\_checksum\_iov()}}}} 11498 11499 11500 11501\begin{sphinxadmonition}{note}{Note:} 11502This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_c_make_checksum_iov:c.krb5_c_make_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_make\_checksum\_iov()}}}} , but operates on opaque \sphinxstyleemphasis{key} . 11503\end{sphinxadmonition} 11504 11505 11506\subsubsection{krb5\_k\_prf - Generate enctype-specific pseudo-random bytes (operates on opaque key).} 11507\label{\detokenize{appdev/refs/api/krb5_k_prf:krb5-k-prf-generate-enctype-specific-pseudo-random-bytes-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_prf::doc}}\index{krb5\_k\_prf (C function)} 11508 11509\begin{fulllineitems} 11510\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_prf:c.krb5_k_prf}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_prf}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ output}}{} 11511\end{fulllineitems} 11512 11513\begin{quote}\begin{description} 11514\item[{param}] \leavevmode 11515\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11516 11517\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Key 11518 11519\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} - Input data 11520 11521\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} - Output data 11522 11523\end{description}\end{quote} 11524\begin{quote}\begin{description} 11525\item[{retval}] \leavevmode\begin{itemize} 11526\item {} 115270 Success; otherwise - Kerberos error codes 11528 11529\end{itemize} 11530 11531\end{description}\end{quote} 11532 11533This function selects a pseudo-random function based on \sphinxstyleemphasis{key} and computes its value over \sphinxstyleemphasis{input} , placing the result into \sphinxstyleemphasis{output} . The caller must preinitialize \sphinxstyleemphasis{output} and allocate space for the result. 11534 11535\begin{sphinxadmonition}{note}{Note:} 11536This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_c_prf:c.krb5_c_prf}]{\sphinxcrossref{\sphinxcode{krb5\_c\_prf()}}}} , but operates on opaque \sphinxstyleemphasis{key} . 11537\end{sphinxadmonition} 11538 11539 11540\subsubsection{krb5\_k\_reference\_key - Increment the reference count on a key.} 11541\label{\detokenize{appdev/refs/api/krb5_k_reference_key::doc}}\label{\detokenize{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)} 11542 11543\begin{fulllineitems} 11544\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_reference_key:c.krb5_k_reference_key}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_k\_reference\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}}{} 11545\end{fulllineitems} 11546 11547\begin{quote}\begin{description} 11548\item[{param}] \leavevmode 11549\sphinxstylestrong{context} 11550 11551\sphinxstylestrong{key} 11552 11553\end{description}\end{quote} 11554 11555 11556\subsubsection{krb5\_k\_verify\_checksum - Verify a checksum (operates on opaque key).} 11557\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum::doc}}\label{\detokenize{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)} 11558 11559\begin{fulllineitems} 11560\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum:c.krb5_k_verify_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_verify\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}, const {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ cksum}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} *\sphinxstyleemphasis{ valid}}{} 11561\end{fulllineitems} 11562 11563\begin{quote}\begin{description} 11564\item[{param}] \leavevmode 11565\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11566 11567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 11568 11569\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - \sphinxstyleemphasis{key} usage 11570 11571\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - Data to be used to compute a new checksum using \sphinxstyleemphasis{key} to compare \sphinxstyleemphasis{cksum} against 11572 11573\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksum} - Checksum to be verified 11574 11575\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} - Non-zero for success, zero for failure 11576 11577\end{description}\end{quote} 11578\begin{quote}\begin{description} 11579\item[{retval}] \leavevmode\begin{itemize} 11580\item {} 115810 Success; otherwise - Kerberos error codes 11582 11583\end{itemize} 11584 11585\end{description}\end{quote} 11586 11587This function verifies that \sphinxstyleemphasis{cksum} is a valid checksum for \sphinxstyleemphasis{data} . If the checksum type of \sphinxstyleemphasis{cksum} is a keyed checksum, \sphinxstyleemphasis{key} is used to verify the checksum. If the checksum type in \sphinxstyleemphasis{cksum} is 0 and \sphinxstyleemphasis{key} is not NULL, the mandatory checksum type for \sphinxstyleemphasis{key} will be used. The actual checksum key will be derived from \sphinxstyleemphasis{key} and \sphinxstyleemphasis{usage} if key derivation is specified for the checksum type. 11588 11589\begin{sphinxadmonition}{note}{Note:} 11590This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_c_verify_checksum:c.krb5_c_verify_checksum}]{\sphinxcrossref{\sphinxcode{krb5\_c\_verify\_checksum()}}}} , but operates on opaque \sphinxstyleemphasis{key} . 11591\end{sphinxadmonition} 11592 11593 11594\subsubsection{krb5\_k\_verify\_checksum\_iov - Validate a checksum element in IOV array (operates on opaque key).} 11595\label{\detokenize{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{\detokenize{appdev/refs/api/krb5_k_verify_checksum_iov::doc}}\index{krb5\_k\_verify\_checksum\_iov (C function)} 11596 11597\begin{fulllineitems} 11598\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum_iov:c.krb5_k_verify_checksum_iov}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_k\_verify\_checksum\_iov}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ cksumtype}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{krb5\_key}}}\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{krb5\_keyusage}}}\sphinxstyleemphasis{ usage}, const {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{krb5\_crypto\_iov}}} *\sphinxstyleemphasis{ data}, size\_t\sphinxstyleemphasis{ num\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} *\sphinxstyleemphasis{ valid}}{} 11599\end{fulllineitems} 11600 11601\begin{quote}\begin{description} 11602\item[{param}] \leavevmode 11603\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11604 11605\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} - Checksum type (0 for mandatory type) 11606 11607\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} - Encryption key for a keyed checksum 11608 11609\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} - Key usage (see \sphinxcode{KRB5\_KEYUSAGE} types) 11610 11611\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} - IOV array 11612 11613\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} - Size of \sphinxstyleemphasis{data} 11614 11615\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} - Non-zero for success, zero for failure 11616 11617\end{description}\end{quote} 11618\begin{quote}\begin{description} 11619\item[{retval}] \leavevmode\begin{itemize} 11620\item {} 116210 Success; otherwise - Kerberos error codes 11622 11623\end{itemize} 11624 11625\end{description}\end{quote} 11626 11627Confirm that the checksum in the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}}} element is a valid checksum of the {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_DATA}}}} and {\hyperref[\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}]{\sphinxcrossref{\sphinxcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}}} regions in the iov. 11628 11629 11630\sphinxstrong{See also:} 11631 11632 11633{\hyperref[\detokenize{appdev/refs/api/krb5_k_make_checksum_iov:c.krb5_k_make_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_k\_make\_checksum\_iov()}}}} 11634 11635 11636 11637\begin{sphinxadmonition}{note}{Note:} 11638This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_c_verify_checksum_iov:c.krb5_c_verify_checksum_iov}]{\sphinxcrossref{\sphinxcode{krb5\_c\_verify\_checksum\_iov()}}}} , but operates on opaque \sphinxstyleemphasis{key} . 11639\end{sphinxadmonition} 11640 11641 11642\subsection{Legacy convenience interfaces} 11643\label{\detokenize{appdev/refs/api/index:legacy-convenience-interfaces}} 11644 11645\subsubsection{krb5\_recvauth - Server function for sendauth protocol.} 11646\label{\detokenize{appdev/refs/api/krb5_recvauth::doc}}\label{\detokenize{appdev/refs/api/krb5_recvauth:krb5-recvauth-server-function-for-sendauth-protocol}}\index{krb5\_recvauth (C function)} 11647 11648\begin{fulllineitems} 11649\phantomsection\label{\detokenize{appdev/refs/api/krb5_recvauth:c.krb5_recvauth}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_recvauth}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ fd}, char *\sphinxstyleemphasis{ appl\_version}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}}\sphinxstyleemphasis{ flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} **\sphinxstyleemphasis{ ticket}}{} 11650\end{fulllineitems} 11651 11652\begin{quote}\begin{description} 11653\item[{param}] \leavevmode 11654\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11655 11656\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} - Pre-existing or newly created auth context 11657 11658\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fd} - File descriptor 11659 11660\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appl\_version} - Application protocol version to be matched against the client’s application version 11661 11662\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Server principal (NULL for any in \sphinxstyleemphasis{keytab} ) 11663 11664\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Additional specifications 11665 11666\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Key table containing service keys 11667 11668\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ticket} - Ticket (NULL if not needed) 11669 11670\end{description}\end{quote} 11671\begin{quote}\begin{description} 11672\item[{retval}] \leavevmode\begin{itemize} 11673\item {} 116740 Success; otherwise - Kerberos error codes 11675 11676\end{itemize} 11677 11678\end{description}\end{quote} 11679 11680This function performs the server side of a sendauth/recvauth exchange by sending and receiving messages over \sphinxstyleemphasis{fd} . 11681 11682Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_ticket:c.krb5_free_ticket}]{\sphinxcrossref{\sphinxcode{krb5\_free\_ticket()}}}} to free \sphinxstyleemphasis{ticket} when it is no longer needed. 11683 11684 11685\sphinxstrong{See also:} 11686 11687 11688{\hyperref[\detokenize{appdev/refs/api/krb5_sendauth:c.krb5_sendauth}]{\sphinxcrossref{\sphinxcode{krb5\_sendauth()}}}} 11689 11690 11691 11692 11693\subsubsection{krb5\_recvauth\_version - Server function for sendauth protocol with version parameter.} 11694\label{\detokenize{appdev/refs/api/krb5_recvauth_version::doc}}\label{\detokenize{appdev/refs/api/krb5_recvauth_version:krb5-recvauth-version-server-function-for-sendauth-protocol-with-version-parameter}}\index{krb5\_recvauth\_version (C function)} 11695 11696\begin{fulllineitems} 11697\phantomsection\label{\detokenize{appdev/refs/api/krb5_recvauth_version:c.krb5_recvauth_version}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_recvauth\_version}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ fd}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}}\sphinxstyleemphasis{ flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} **\sphinxstyleemphasis{ ticket}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ version}}{} 11698\end{fulllineitems} 11699 11700\begin{quote}\begin{description} 11701\item[{param}] \leavevmode 11702\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11703 11704\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} - Pre-existing or newly created auth context 11705 11706\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fd} - File descriptor 11707 11708\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Server principal (NULL for any in \sphinxstyleemphasis{keytab} ) 11709 11710\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} - Additional specifications 11711 11712\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} - Decryption key 11713 11714\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ticket} - Ticket (NULL if not needed) 11715 11716\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{version} - sendauth protocol version (NULL if not needed) 11717 11718\end{description}\end{quote} 11719\begin{quote}\begin{description} 11720\item[{retval}] \leavevmode\begin{itemize} 11721\item {} 117220 Success; otherwise - Kerberos error codes 11723 11724\end{itemize} 11725 11726\end{description}\end{quote} 11727 11728This function is similar to {\hyperref[\detokenize{appdev/refs/api/krb5_recvauth:c.krb5_recvauth}]{\sphinxcrossref{\sphinxcode{krb5\_recvauth()}}}} with the additional output information place into \sphinxstyleemphasis{version} . 11729 11730 11731\subsubsection{krb5\_sendauth - Client function for sendauth protocol.} 11732\label{\detokenize{appdev/refs/api/krb5_sendauth:krb5-sendauth-client-function-for-sendauth-protocol}}\label{\detokenize{appdev/refs/api/krb5_sendauth::doc}}\index{krb5\_sendauth (C function)} 11733 11734\begin{fulllineitems} 11735\phantomsection\label{\detokenize{appdev/refs/api/krb5_sendauth:c.krb5_sendauth}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_sendauth}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}} *\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ fd}, char *\sphinxstyleemphasis{ appl\_version}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ client}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ server}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ ap\_req\_options}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ in\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{krb5\_error}}} **\sphinxstyleemphasis{ error}, {\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{krb5\_ap\_rep\_enc\_part}}} **\sphinxstyleemphasis{ rep\_result}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ out\_creds}}{} 11736\end{fulllineitems} 11737 11738\begin{quote}\begin{description} 11739\item[{param}] \leavevmode 11740\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11741 11742\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} - Pre-existing or newly created auth context 11743 11744\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fd} - File descriptor that describes network socket 11745 11746\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appl\_version} - Application protocol version to be matched with the receiver’s application version 11747 11748\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} - Client principal 11749 11750\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} - Server principal 11751 11752\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_options} - \sphinxcode{AP\_OPTS} options 11753 11754\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_data} - Data to be sent to the server 11755 11756\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} - Input credentials, or NULL to use \sphinxstyleemphasis{ccache} 11757 11758\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} - Credential cache 11759 11760\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{error} - If non-null, contains KRB\_ERROR message returned from server 11761 11762\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rep\_result} - If non-null and \sphinxstyleemphasis{ap\_req\_options} is {\hyperref[\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED}]{\sphinxcrossref{\sphinxcode{AP\_OPTS\_MUTUAL\_REQUIRED}}}} , contains the result of mutual authentication exchange 11763 11764\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out\_creds} - If non-null, the retrieved credentials 11765 11766\end{description}\end{quote} 11767\begin{quote}\begin{description} 11768\item[{retval}] \leavevmode\begin{itemize} 11769\item {} 117700 Success; otherwise - Kerberos error codes 11771 11772\end{itemize} 11773 11774\end{description}\end{quote} 11775 11776This function performs the client side of a sendauth/recvauth exchange by sending and receiving messages over \sphinxstyleemphasis{fd} . 11777 11778Credentials may be specified in three ways: 11779\begin{quote} 11780\begin{itemize} 11781\item {} 11782If \sphinxstyleemphasis{in\_creds} is NULL, credentials are obtained with {\hyperref[\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}]{\sphinxcrossref{\sphinxcode{krb5\_get\_credentials()}}}} using the principals \sphinxstyleemphasis{client} and \sphinxstyleemphasis{server} . \sphinxstyleemphasis{server} must be non-null; \sphinxstyleemphasis{client} may NULL to use the default principal of \sphinxstyleemphasis{ccache} . 11783 11784\item {} 11785If \sphinxstyleemphasis{in\_creds} is non-null, but does not contain a ticket, credentials for the exchange are obtained with {\hyperref[\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}]{\sphinxcrossref{\sphinxcode{krb5\_get\_credentials()}}}} using \sphinxstyleemphasis{in\_creds} . In this case, the values of \sphinxstyleemphasis{client} and \sphinxstyleemphasis{server} are unused. 11786 11787\item {} 11788If \sphinxstyleemphasis{in\_creds} is a complete credentials structure, it used directly. In this case, the values of \sphinxstyleemphasis{client} , \sphinxstyleemphasis{server} , and \sphinxstyleemphasis{ccache} are unused. 11789 11790\end{itemize} 11791 11792If the server is using a different application protocol than that specified in \sphinxstyleemphasis{appl\_version} , an error will be returned. 11793\end{quote} 11794 11795Use {\hyperref[\detokenize{appdev/refs/api/krb5_free_creds:c.krb5_free_creds}]{\sphinxcrossref{\sphinxcode{krb5\_free\_creds()}}}} to free \sphinxstyleemphasis{out\_creds} , {\hyperref[\detokenize{appdev/refs/api/krb5_free_ap_rep_enc_part:c.krb5_free_ap_rep_enc_part}]{\sphinxcrossref{\sphinxcode{krb5\_free\_ap\_rep\_enc\_part()}}}} to free \sphinxstyleemphasis{rep\_result} , and {\hyperref[\detokenize{appdev/refs/api/krb5_free_error:c.krb5_free_error}]{\sphinxcrossref{\sphinxcode{krb5\_free\_error()}}}} to free \sphinxstyleemphasis{error} when they are no longer needed. 11796 11797 11798\sphinxstrong{See also:} 11799 11800 11801{\hyperref[\detokenize{appdev/refs/api/krb5_recvauth:c.krb5_recvauth}]{\sphinxcrossref{\sphinxcode{krb5\_recvauth()}}}} 11802 11803 11804 11805 11806\subsection{Deprecated public interfaces} 11807\label{\detokenize{appdev/refs/api/index:deprecated-public-interfaces}} 11808 11809\subsubsection{krb5\_524\_convert\_creds - Convert a Kerberos V5 credentials to a Kerberos V4 credentials.} 11810\label{\detokenize{appdev/refs/api/krb5_524_convert_creds:krb5-524-convert-creds-convert-a-kerberos-v5-credentials-to-a-kerberos-v4-credentials}}\label{\detokenize{appdev/refs/api/krb5_524_convert_creds::doc}}\index{krb5\_524\_convert\_creds (C function)} 11811 11812\begin{fulllineitems} 11813\phantomsection\label{\detokenize{appdev/refs/api/krb5_524_convert_creds:c.krb5_524_convert_creds}}\pysiglinewithargsret{int \sphinxbfcode{krb5\_524\_convert\_creds}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ v5creds}, struct credentials *\sphinxstyleemphasis{ v4creds}}{} 11814\end{fulllineitems} 11815 11816\begin{quote}\begin{description} 11817\item[{param}] \leavevmode 11818\sphinxstylestrong{context} 11819 11820\sphinxstylestrong{v5creds} 11821 11822\sphinxstylestrong{v4creds} 11823 11824\end{description}\end{quote} 11825\begin{quote}\begin{description} 11826\item[{retval}] \leavevmode\begin{itemize} 11827\item {} 11828KRB524\_KRB4\_DISABLED (always) 11829 11830\end{itemize} 11831 11832\end{description}\end{quote} 11833 11834\begin{sphinxadmonition}{note}{Note:} 11835Not implemented 11836\end{sphinxadmonition} 11837 11838 11839\subsubsection{krb5\_auth\_con\_getlocalsubkey} 11840\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalsubkey::doc}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalsubkey:krb5-auth-con-getlocalsubkey}}\index{krb5\_auth\_con\_getlocalsubkey (C function)} 11841 11842\begin{fulllineitems} 11843\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalsubkey:c.krb5_auth_con_getlocalsubkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getlocalsubkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ keyblock}}{} 11844\end{fulllineitems} 11845 11846\begin{quote}\begin{description} 11847\item[{param}] \leavevmode 11848\sphinxstylestrong{context} 11849 11850\sphinxstylestrong{auth\_context} 11851 11852\sphinxstylestrong{keyblock} 11853 11854\end{description}\end{quote} 11855 11856DEPRECATED Replaced by krb5\_auth\_con\_getsendsubkey() . 11857 11858 11859\subsubsection{krb5\_auth\_con\_getremotesubkey} 11860\label{\detokenize{appdev/refs/api/krb5_auth_con_getremotesubkey::doc}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getremotesubkey:krb5-auth-con-getremotesubkey}}\index{krb5\_auth\_con\_getremotesubkey (C function)} 11861 11862\begin{fulllineitems} 11863\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getremotesubkey:c.krb5_auth_con_getremotesubkey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_getremotesubkey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ keyblock}}{} 11864\end{fulllineitems} 11865 11866\begin{quote}\begin{description} 11867\item[{param}] \leavevmode 11868\sphinxstylestrong{context} 11869 11870\sphinxstylestrong{auth\_context} 11871 11872\sphinxstylestrong{keyblock} 11873 11874\end{description}\end{quote} 11875 11876DEPRECATED Replaced by krb5\_auth\_con\_getrecvsubkey() . 11877 11878 11879\subsubsection{krb5\_auth\_con\_initivector - Cause an auth context to use cipher state.} 11880\label{\detokenize{appdev/refs/api/krb5_auth_con_initivector::doc}}\label{\detokenize{appdev/refs/api/krb5_auth_con_initivector:krb5-auth-con-initivector-cause-an-auth-context-to-use-cipher-state}}\index{krb5\_auth\_con\_initivector (C function)} 11881 11882\begin{fulllineitems} 11883\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_initivector:c.krb5_auth_con_initivector}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_auth\_con\_initivector}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{krb5\_auth\_context}}}\sphinxstyleemphasis{ auth\_context}}{} 11884\end{fulllineitems} 11885 11886\begin{quote}\begin{description} 11887\item[{param}] \leavevmode 11888\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} - Library context 11889 11890\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} - Authentication context 11891 11892\end{description}\end{quote} 11893\begin{quote}\begin{description} 11894\item[{retval}] \leavevmode\begin{itemize} 11895\item {} 118960 Success; otherwise - Kerberos error codes 11897 11898\end{itemize} 11899 11900\end{description}\end{quote} 11901 11902Prepare \sphinxstyleemphasis{auth\_context} to use cipher state when {\hyperref[\detokenize{appdev/refs/api/krb5_mk_priv:c.krb5_mk_priv}]{\sphinxcrossref{\sphinxcode{krb5\_mk\_priv()}}}} or {\hyperref[\detokenize{appdev/refs/api/krb5_rd_priv:c.krb5_rd_priv}]{\sphinxcrossref{\sphinxcode{krb5\_rd\_priv()}}}} encrypt or decrypt data. 11903 11904 11905\subsubsection{krb5\_build\_principal\_va} 11906\label{\detokenize{appdev/refs/api/krb5_build_principal_va:krb5-build-principal-va}}\label{\detokenize{appdev/refs/api/krb5_build_principal_va::doc}}\index{krb5\_build\_principal\_va (C function)} 11907 11908\begin{fulllineitems} 11909\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal_va:c.krb5_build_principal_va}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_build\_principal\_va}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}}\sphinxstyleemphasis{ princ}, unsigned int\sphinxstyleemphasis{ rlen}, const char *\sphinxstyleemphasis{ realm}, va\_list\sphinxstyleemphasis{ ap}}{} 11910\end{fulllineitems} 11911 11912\begin{quote}\begin{description} 11913\item[{param}] \leavevmode 11914\sphinxstylestrong{context} 11915 11916\sphinxstylestrong{princ} 11917 11918\sphinxstylestrong{rlen} 11919 11920\sphinxstylestrong{realm} 11921 11922\sphinxstylestrong{ap} 11923 11924\end{description}\end{quote} 11925 11926DEPRECATED Replaced by krb5\_build\_principal\_alloc\_va() . 11927 11928 11929\subsubsection{krb5\_c\_random\_seed} 11930\label{\detokenize{appdev/refs/api/krb5_c_random_seed:krb5-c-random-seed}}\label{\detokenize{appdev/refs/api/krb5_c_random_seed::doc}}\index{krb5\_c\_random\_seed (C function)} 11931 11932\begin{fulllineitems} 11933\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_seed:c.krb5_c_random_seed}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_c\_random\_seed}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}}{} 11934\end{fulllineitems} 11935 11936\begin{quote}\begin{description} 11937\item[{param}] \leavevmode 11938\sphinxstylestrong{context} 11939 11940\sphinxstylestrong{data} 11941 11942\end{description}\end{quote} 11943 11944DEPRECATED Replaced by krb5\_c\_* API family. 11945 11946 11947\subsubsection{krb5\_calculate\_checksum} 11948\label{\detokenize{appdev/refs/api/krb5_calculate_checksum:krb5-calculate-checksum}}\label{\detokenize{appdev/refs/api/krb5_calculate_checksum::doc}}\index{krb5\_calculate\_checksum (C function)} 11949 11950\begin{fulllineitems} 11951\phantomsection\label{\detokenize{appdev/refs/api/krb5_calculate_checksum:c.krb5_calculate_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_calculate\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ ctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{krb5\_const\_pointer}}}\sphinxstyleemphasis{ in}, size\_t\sphinxstyleemphasis{ in\_length}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{krb5\_const\_pointer}}}\sphinxstyleemphasis{ seed}, size\_t\sphinxstyleemphasis{ seed\_length}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ outcksum}}{} 11952\end{fulllineitems} 11953 11954\begin{quote}\begin{description} 11955\item[{param}] \leavevmode 11956\sphinxstylestrong{context} 11957 11958\sphinxstylestrong{ctype} 11959 11960\sphinxstylestrong{in} 11961 11962\sphinxstylestrong{in\_length} 11963 11964\sphinxstylestrong{seed} 11965 11966\sphinxstylestrong{seed\_length} 11967 11968\sphinxstylestrong{outcksum} 11969 11970\end{description}\end{quote} 11971 11972DEPRECATED See krb5\_c\_make\_checksum() 11973 11974 11975\subsubsection{krb5\_checksum\_size} 11976\label{\detokenize{appdev/refs/api/krb5_checksum_size:krb5-checksum-size}}\label{\detokenize{appdev/refs/api/krb5_checksum_size::doc}}\index{krb5\_checksum\_size (C function)} 11977 11978\begin{fulllineitems} 11979\phantomsection\label{\detokenize{appdev/refs/api/krb5_checksum_size:c.krb5_checksum_size}}\pysiglinewithargsret{size\_t \sphinxbfcode{krb5\_checksum\_size}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ ctype}}{} 11980\end{fulllineitems} 11981 11982\begin{quote}\begin{description} 11983\item[{param}] \leavevmode 11984\sphinxstylestrong{context} 11985 11986\sphinxstylestrong{ctype} 11987 11988\end{description}\end{quote} 11989 11990DEPRECATED See krb5\_c\_checksum\_length() 11991 11992 11993\subsubsection{krb5\_encrypt} 11994\label{\detokenize{appdev/refs/api/krb5_encrypt:krb5-encrypt}}\label{\detokenize{appdev/refs/api/krb5_encrypt::doc}}\index{krb5\_encrypt (C function)} 11995 11996\begin{fulllineitems} 11997\phantomsection\label{\detokenize{appdev/refs/api/krb5_encrypt:c.krb5_encrypt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_encrypt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{krb5\_const\_pointer}}}\sphinxstyleemphasis{ inptr}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ outptr}, size\_t\sphinxstyleemphasis{ size}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ ivec}}{} 11998\end{fulllineitems} 11999 12000\begin{quote}\begin{description} 12001\item[{param}] \leavevmode 12002\sphinxstylestrong{context} 12003 12004\sphinxstylestrong{inptr} 12005 12006\sphinxstylestrong{outptr} 12007 12008\sphinxstylestrong{size} 12009 12010\sphinxstylestrong{eblock} 12011 12012\sphinxstylestrong{ivec} 12013 12014\end{description}\end{quote} 12015 12016DEPRECATED Replaced by krb5\_c\_* API family. 12017 12018 12019\subsubsection{krb5\_decrypt} 12020\label{\detokenize{appdev/refs/api/krb5_decrypt:krb5-decrypt}}\label{\detokenize{appdev/refs/api/krb5_decrypt::doc}}\index{krb5\_decrypt (C function)} 12021 12022\begin{fulllineitems} 12023\phantomsection\label{\detokenize{appdev/refs/api/krb5_decrypt:c.krb5_decrypt}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_decrypt}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{krb5\_const\_pointer}}}\sphinxstyleemphasis{ inptr}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ outptr}, size\_t\sphinxstyleemphasis{ size}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ ivec}}{} 12024\end{fulllineitems} 12025 12026\begin{quote}\begin{description} 12027\item[{param}] \leavevmode 12028\sphinxstylestrong{context} 12029 12030\sphinxstylestrong{inptr} 12031 12032\sphinxstylestrong{outptr} 12033 12034\sphinxstylestrong{size} 12035 12036\sphinxstylestrong{eblock} 12037 12038\sphinxstylestrong{ivec} 12039 12040\end{description}\end{quote} 12041 12042DEPRECATED Replaced by krb5\_c\_* API family. 12043 12044 12045\subsubsection{krb5\_eblock\_enctype} 12046\label{\detokenize{appdev/refs/api/krb5_eblock_enctype::doc}}\label{\detokenize{appdev/refs/api/krb5_eblock_enctype:krb5-eblock-enctype}}\index{krb5\_eblock\_enctype (C function)} 12047 12048\begin{fulllineitems} 12049\phantomsection\label{\detokenize{appdev/refs/api/krb5_eblock_enctype:c.krb5_eblock_enctype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} \sphinxbfcode{krb5\_eblock\_enctype}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}}{} 12050\end{fulllineitems} 12051 12052\begin{quote}\begin{description} 12053\item[{param}] \leavevmode 12054\sphinxstylestrong{context} 12055 12056\sphinxstylestrong{eblock} 12057 12058\end{description}\end{quote} 12059 12060DEPRECATED Replaced by krb5\_c\_* API family. 12061 12062 12063\subsubsection{krb5\_encrypt\_size} 12064\label{\detokenize{appdev/refs/api/krb5_encrypt_size:krb5-encrypt-size}}\label{\detokenize{appdev/refs/api/krb5_encrypt_size::doc}}\index{krb5\_encrypt\_size (C function)} 12065 12066\begin{fulllineitems} 12067\phantomsection\label{\detokenize{appdev/refs/api/krb5_encrypt_size:c.krb5_encrypt_size}}\pysiglinewithargsret{size\_t \sphinxbfcode{krb5\_encrypt\_size}}{size\_t\sphinxstyleemphasis{ length}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ crypto}}{} 12068\end{fulllineitems} 12069 12070\begin{quote}\begin{description} 12071\item[{param}] \leavevmode 12072\sphinxstylestrong{length} 12073 12074\sphinxstylestrong{crypto} 12075 12076\end{description}\end{quote} 12077 12078DEPRECATED Replaced by krb5\_c\_* API family. 12079 12080 12081\subsubsection{krb5\_finish\_key} 12082\label{\detokenize{appdev/refs/api/krb5_finish_key:krb5-finish-key}}\label{\detokenize{appdev/refs/api/krb5_finish_key::doc}}\index{krb5\_finish\_key (C function)} 12083 12084\begin{fulllineitems} 12085\phantomsection\label{\detokenize{appdev/refs/api/krb5_finish_key:c.krb5_finish_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_finish\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}}{} 12086\end{fulllineitems} 12087 12088\begin{quote}\begin{description} 12089\item[{param}] \leavevmode 12090\sphinxstylestrong{context} 12091 12092\sphinxstylestrong{eblock} 12093 12094\end{description}\end{quote} 12095 12096DEPRECATED Replaced by krb5\_c\_* API family. 12097 12098 12099\subsubsection{krb5\_finish\_random\_key} 12100\label{\detokenize{appdev/refs/api/krb5_finish_random_key:krb5-finish-random-key}}\label{\detokenize{appdev/refs/api/krb5_finish_random_key::doc}}\index{krb5\_finish\_random\_key (C function)} 12101 12102\begin{fulllineitems} 12103\phantomsection\label{\detokenize{appdev/refs/api/krb5_finish_random_key:c.krb5_finish_random_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_finish\_random\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}} *\sphinxstyleemphasis{ ptr}}{} 12104\end{fulllineitems} 12105 12106\begin{quote}\begin{description} 12107\item[{param}] \leavevmode 12108\sphinxstylestrong{context} 12109 12110\sphinxstylestrong{eblock} 12111 12112\sphinxstylestrong{ptr} 12113 12114\end{description}\end{quote} 12115 12116DEPRECATED Replaced by krb5\_c\_* API family. 12117 12118 12119\subsubsection{krb5\_cc\_gen\_new} 12120\label{\detokenize{appdev/refs/api/krb5_cc_gen_new:krb5-cc-gen-new}}\label{\detokenize{appdev/refs/api/krb5_cc_gen_new::doc}}\index{krb5\_cc\_gen\_new (C function)} 12121 12122\begin{fulllineitems} 12123\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_gen_new:c.krb5_cc_gen_new}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_cc\_gen\_new}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}} *\sphinxstyleemphasis{ cache}}{} 12124\end{fulllineitems} 12125 12126\begin{quote}\begin{description} 12127\item[{param}] \leavevmode 12128\sphinxstylestrong{context} 12129 12130\sphinxstylestrong{cache} 12131 12132\end{description}\end{quote} 12133 12134 12135\subsubsection{krb5\_get\_credentials\_renew} 12136\label{\detokenize{appdev/refs/api/krb5_get_credentials_renew:krb5-get-credentials-renew}}\label{\detokenize{appdev/refs/api/krb5_get_credentials_renew::doc}}\index{krb5\_get\_credentials\_renew (C function)} 12137 12138\begin{fulllineitems} 12139\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_credentials_renew:c.krb5_get_credentials_renew}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_credentials\_renew}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ out\_creds}}{} 12140\end{fulllineitems} 12141 12142\begin{quote}\begin{description} 12143\item[{param}] \leavevmode 12144\sphinxstylestrong{context} 12145 12146\sphinxstylestrong{options} 12147 12148\sphinxstylestrong{ccache} 12149 12150\sphinxstylestrong{in\_creds} 12151 12152\sphinxstylestrong{out\_creds} 12153 12154\end{description}\end{quote} 12155 12156DEPRECATED Replaced by krb5\_get\_renewed\_creds. 12157 12158 12159\subsubsection{krb5\_get\_credentials\_validate} 12160\label{\detokenize{appdev/refs/api/krb5_get_credentials_validate:krb5-get-credentials-validate}}\label{\detokenize{appdev/refs/api/krb5_get_credentials_validate::doc}}\index{krb5\_get\_credentials\_validate (C function)} 12161 12162\begin{fulllineitems} 12163\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_credentials_validate:c.krb5_get_credentials_validate}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_credentials\_validate}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} **\sphinxstyleemphasis{ out\_creds}}{} 12164\end{fulllineitems} 12165 12166\begin{quote}\begin{description} 12167\item[{param}] \leavevmode 12168\sphinxstylestrong{context} 12169 12170\sphinxstylestrong{options} 12171 12172\sphinxstylestrong{ccache} 12173 12174\sphinxstylestrong{in\_creds} 12175 12176\sphinxstylestrong{out\_creds} 12177 12178\end{description}\end{quote} 12179 12180DEPRECATED Replaced by krb5\_get\_validated\_creds. 12181 12182 12183\subsubsection{krb5\_get\_in\_tkt\_with\_password} 12184\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_password:krb5-get-in-tkt-with-password}}\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_password::doc}}\index{krb5\_get\_in\_tkt\_with\_password (C function)} 12185 12186\begin{fulllineitems} 12187\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_password:c.krb5_get_in_tkt_with_password}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_in\_tkt\_with\_password}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *const *\sphinxstyleemphasis{ addrs}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ ktypes}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{krb5\_preauthtype}}} *\sphinxstyleemphasis{ pre\_auth\_types}, const char *\sphinxstyleemphasis{ password}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{krb5\_kdc\_rep}}} **\sphinxstyleemphasis{ ret\_as\_reply}}{} 12188\end{fulllineitems} 12189 12190\begin{quote}\begin{description} 12191\item[{param}] \leavevmode 12192\sphinxstylestrong{context} 12193 12194\sphinxstylestrong{options} 12195 12196\sphinxstylestrong{addrs} 12197 12198\sphinxstylestrong{ktypes} 12199 12200\sphinxstylestrong{pre\_auth\_types} 12201 12202\sphinxstylestrong{password} 12203 12204\sphinxstylestrong{ccache} 12205 12206\sphinxstylestrong{creds} 12207 12208\sphinxstylestrong{ret\_as\_reply} 12209 12210\end{description}\end{quote} 12211 12212DEPRECATED Replaced by krb5\_get\_init\_creds\_password() . 12213 12214 12215\subsubsection{krb5\_get\_in\_tkt\_with\_skey} 12216\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_skey:krb5-get-in-tkt-with-skey}}\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_skey::doc}}\index{krb5\_get\_in\_tkt\_with\_skey (C function)} 12217 12218\begin{fulllineitems} 12219\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_skey:c.krb5_get_in_tkt_with_skey}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_in\_tkt\_with\_skey}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *const *\sphinxstyleemphasis{ addrs}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ ktypes}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{krb5\_preauthtype}}} *\sphinxstyleemphasis{ pre\_auth\_types}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{krb5\_kdc\_rep}}} **\sphinxstyleemphasis{ ret\_as\_reply}}{} 12220\end{fulllineitems} 12221 12222\begin{quote}\begin{description} 12223\item[{param}] \leavevmode 12224\sphinxstylestrong{context} 12225 12226\sphinxstylestrong{options} 12227 12228\sphinxstylestrong{addrs} 12229 12230\sphinxstylestrong{ktypes} 12231 12232\sphinxstylestrong{pre\_auth\_types} 12233 12234\sphinxstylestrong{key} 12235 12236\sphinxstylestrong{ccache} 12237 12238\sphinxstylestrong{creds} 12239 12240\sphinxstylestrong{ret\_as\_reply} 12241 12242\end{description}\end{quote} 12243 12244DEPRECATED Replaced by krb5\_get\_init\_creds(). 12245 12246 12247\subsubsection{krb5\_get\_in\_tkt\_with\_keytab} 12248\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_keytab:krb5-get-in-tkt-with-keytab}}\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_keytab::doc}}\index{krb5\_get\_in\_tkt\_with\_keytab (C function)} 12249 12250\begin{fulllineitems} 12251\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_keytab:c.krb5_get_in_tkt_with_keytab}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_get\_in\_tkt\_with\_keytab}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}}\sphinxstyleemphasis{ options}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} *const *\sphinxstyleemphasis{ addrs}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} *\sphinxstyleemphasis{ ktypes}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{krb5\_preauthtype}}} *\sphinxstyleemphasis{ pre\_auth\_types}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{krb5\_keytab}}}\sphinxstyleemphasis{ arg\_keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{krb5\_ccache}}}\sphinxstyleemphasis{ ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{krb5\_creds}}} *\sphinxstyleemphasis{ creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{krb5\_kdc\_rep}}} **\sphinxstyleemphasis{ ret\_as\_reply}}{} 12252\end{fulllineitems} 12253 12254\begin{quote}\begin{description} 12255\item[{param}] \leavevmode 12256\sphinxstylestrong{context} 12257 12258\sphinxstylestrong{options} 12259 12260\sphinxstylestrong{addrs} 12261 12262\sphinxstylestrong{ktypes} 12263 12264\sphinxstylestrong{pre\_auth\_types} 12265 12266\sphinxstylestrong{arg\_keytab} 12267 12268\sphinxstylestrong{ccache} 12269 12270\sphinxstylestrong{creds} 12271 12272\sphinxstylestrong{ret\_as\_reply} 12273 12274\end{description}\end{quote} 12275 12276DEPRECATED Replaced by krb5\_get\_init\_creds\_keytab() . 12277 12278 12279\subsubsection{krb5\_get\_init\_creds\_opt\_init} 12280\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_init:krb5-get-init-creds-opt-init}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_init::doc}}\index{krb5\_get\_init\_creds\_opt\_init (C function)} 12281 12282\begin{fulllineitems} 12283\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_init:c.krb5_get_init_creds_opt_init}}\pysiglinewithargsret{void \sphinxbfcode{krb5\_get\_init\_creds\_opt\_init}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{krb5\_get\_init\_creds\_opt}}} *\sphinxstyleemphasis{ opt}}{} 12284\end{fulllineitems} 12285 12286\begin{quote}\begin{description} 12287\item[{param}] \leavevmode 12288\sphinxstylestrong{opt} 12289 12290\end{description}\end{quote} 12291 12292DEPRECATED Use krb5\_get\_init\_creds\_opt\_alloc() instead. 12293 12294 12295\subsubsection{krb5\_init\_random\_key} 12296\label{\detokenize{appdev/refs/api/krb5_init_random_key:krb5-init-random-key}}\label{\detokenize{appdev/refs/api/krb5_init_random_key::doc}}\index{krb5\_init\_random\_key (C function)} 12297 12298\begin{fulllineitems} 12299\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_random_key:c.krb5_init_random_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_init\_random\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}} *\sphinxstyleemphasis{ ptr}}{} 12300\end{fulllineitems} 12301 12302\begin{quote}\begin{description} 12303\item[{param}] \leavevmode 12304\sphinxstylestrong{context} 12305 12306\sphinxstylestrong{eblock} 12307 12308\sphinxstylestrong{keyblock} 12309 12310\sphinxstylestrong{ptr} 12311 12312\end{description}\end{quote} 12313 12314DEPRECATED Replaced by krb5\_c\_* API family. 12315 12316 12317\subsubsection{krb5\_kt\_free\_entry} 12318\label{\detokenize{appdev/refs/api/krb5_kt_free_entry:krb5-kt-free-entry}}\label{\detokenize{appdev/refs/api/krb5_kt_free_entry::doc}}\index{krb5\_kt\_free\_entry (C function)} 12319 12320\begin{fulllineitems} 12321\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_free_entry:c.krb5_kt_free_entry}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_kt\_free\_entry}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{krb5\_keytab\_entry}}} *\sphinxstyleemphasis{ entry}}{} 12322\end{fulllineitems} 12323 12324\begin{quote}\begin{description} 12325\item[{param}] \leavevmode 12326\sphinxstylestrong{context} 12327 12328\sphinxstylestrong{entry} 12329 12330\end{description}\end{quote} 12331 12332DEPRECATED Use krb5\_free\_keytab\_entry\_contents instead. 12333 12334 12335\subsubsection{krb5\_random\_key} 12336\label{\detokenize{appdev/refs/api/krb5_random_key:krb5-random-key}}\label{\detokenize{appdev/refs/api/krb5_random_key::doc}}\index{krb5\_random\_key (C function)} 12337 12338\begin{fulllineitems} 12339\phantomsection\label{\detokenize{appdev/refs/api/krb5_random_key:c.krb5_random_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_random\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{krb5\_pointer}}}\sphinxstyleemphasis{ ptr}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} **\sphinxstyleemphasis{ keyblock}}{} 12340\end{fulllineitems} 12341 12342\begin{quote}\begin{description} 12343\item[{param}] \leavevmode 12344\sphinxstylestrong{context} 12345 12346\sphinxstylestrong{eblock} 12347 12348\sphinxstylestrong{ptr} 12349 12350\sphinxstylestrong{keyblock} 12351 12352\end{description}\end{quote} 12353 12354DEPRECATED Replaced by krb5\_c\_* API family. 12355 12356 12357\subsubsection{krb5\_process\_key} 12358\label{\detokenize{appdev/refs/api/krb5_process_key:krb5-process-key}}\label{\detokenize{appdev/refs/api/krb5_process_key::doc}}\index{krb5\_process\_key (C function)} 12359 12360\begin{fulllineitems} 12361\phantomsection\label{\detokenize{appdev/refs/api/krb5_process_key:c.krb5_process_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_process\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, const {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ key}}{} 12362\end{fulllineitems} 12363 12364\begin{quote}\begin{description} 12365\item[{param}] \leavevmode 12366\sphinxstylestrong{context} 12367 12368\sphinxstylestrong{eblock} 12369 12370\sphinxstylestrong{key} 12371 12372\end{description}\end{quote} 12373 12374DEPRECATED Replaced by krb5\_c\_* API family. 12375 12376 12377\subsubsection{krb5\_string\_to\_key} 12378\label{\detokenize{appdev/refs/api/krb5_string_to_key:krb5-string-to-key}}\label{\detokenize{appdev/refs/api/krb5_string_to_key::doc}}\index{krb5\_string\_to\_key (C function)} 12379 12380\begin{fulllineitems} 12381\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_key:c.krb5_string_to_key}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_string\_to\_key}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, const {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} *\sphinxstyleemphasis{ keyblock}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ data}, const {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} *\sphinxstyleemphasis{ salt}}{} 12382\end{fulllineitems} 12383 12384\begin{quote}\begin{description} 12385\item[{param}] \leavevmode 12386\sphinxstylestrong{context} 12387 12388\sphinxstylestrong{eblock} 12389 12390\sphinxstylestrong{keyblock} 12391 12392\sphinxstylestrong{data} 12393 12394\sphinxstylestrong{salt} 12395 12396\end{description}\end{quote} 12397 12398DEPRECATED See krb5\_c\_string\_to\_key() 12399 12400 12401\subsubsection{krb5\_use\_enctype} 12402\label{\detokenize{appdev/refs/api/krb5_use_enctype:krb5-use-enctype}}\label{\detokenize{appdev/refs/api/krb5_use_enctype::doc}}\index{krb5\_use\_enctype (C function)} 12403 12404\begin{fulllineitems} 12405\phantomsection\label{\detokenize{appdev/refs/api/krb5_use_enctype:c.krb5_use_enctype}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_use\_enctype}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{krb5\_encrypt\_block}}} *\sphinxstyleemphasis{ eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}}\sphinxstyleemphasis{ enctype}}{} 12406\end{fulllineitems} 12407 12408\begin{quote}\begin{description} 12409\item[{param}] \leavevmode 12410\sphinxstylestrong{context} 12411 12412\sphinxstylestrong{eblock} 12413 12414\sphinxstylestrong{enctype} 12415 12416\end{description}\end{quote} 12417 12418DEPRECATED Replaced by krb5\_c\_* API family. 12419 12420 12421\subsubsection{krb5\_verify\_checksum} 12422\label{\detokenize{appdev/refs/api/krb5_verify_checksum::doc}}\label{\detokenize{appdev/refs/api/krb5_verify_checksum:krb5-verify-checksum}}\index{krb5\_verify\_checksum (C function)} 12423 12424\begin{fulllineitems} 12425\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_checksum:c.krb5_verify_checksum}}\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{krb5\_error\_code}}} \sphinxbfcode{krb5\_verify\_checksum}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{krb5\_context}}}\sphinxstyleemphasis{ context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}}\sphinxstyleemphasis{ ctype}, const {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} *\sphinxstyleemphasis{ cksum}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{krb5\_const\_pointer}}}\sphinxstyleemphasis{ in}, size\_t\sphinxstyleemphasis{ in\_length}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{krb5\_const\_pointer}}}\sphinxstyleemphasis{ seed}, size\_t\sphinxstyleemphasis{ seed\_length}}{} 12426\end{fulllineitems} 12427 12428\begin{quote}\begin{description} 12429\item[{param}] \leavevmode 12430\sphinxstylestrong{context} 12431 12432\sphinxstylestrong{ctype} 12433 12434\sphinxstylestrong{cksum} 12435 12436\sphinxstylestrong{in} 12437 12438\sphinxstylestrong{in\_length} 12439 12440\sphinxstylestrong{seed} 12441 12442\sphinxstylestrong{seed\_length} 12443 12444\end{description}\end{quote} 12445 12446DEPRECATED See krb5\_c\_verify\_checksum() 12447 12448 12449\section{krb5 types and structures} 12450\label{\detokenize{appdev/refs/types/index::doc}}\label{\detokenize{appdev/refs/types/index:krb5-types-and-structures}} 12451 12452\subsection{Public} 12453\label{\detokenize{appdev/refs/types/index:public}} 12454 12455\subsubsection{krb5\_address} 12456\label{\detokenize{appdev/refs/types/krb5_address:krb5-address-struct}}\label{\detokenize{appdev/refs/types/krb5_address::doc}}\label{\detokenize{appdev/refs/types/krb5_address:krb5-address}}\index{krb5\_address (C type)} 12457 12458\begin{fulllineitems} 12459\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address}}\pysigline{\sphinxbfcode{krb5\_address}} 12460\end{fulllineitems} 12461 12462 12463Structure for address. 12464 12465 12466\paragraph{Declaration} 12467\label{\detokenize{appdev/refs/types/krb5_address:declaration}} 12468typedef struct \_krb5\_address krb5\_address 12469 12470 12471\paragraph{Members} 12472\label{\detokenize{appdev/refs/types/krb5_address:members}}\index{krb5\_address.magic (C member)} 12473 12474\begin{fulllineitems} 12475\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_address.magic}} 12476\end{fulllineitems} 12477 12478\index{krb5\_address.addrtype (C member)} 12479 12480\begin{fulllineitems} 12481\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.addrtype}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_addrtype:c.krb5_addrtype}]{\sphinxcrossref{krb5\_addrtype}}} \sphinxbfcode{krb5\_address.addrtype}} 12482\end{fulllineitems} 12483 12484\index{krb5\_address.length (C member)} 12485 12486\begin{fulllineitems} 12487\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_address.length}} 12488\end{fulllineitems} 12489 12490\index{krb5\_address.contents (C member)} 12491 12492\begin{fulllineitems} 12493\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.contents}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} * \sphinxbfcode{krb5\_address.contents}} 12494\end{fulllineitems} 12495 12496 12497 12498\subsubsection{krb5\_addrtype} 12499\label{\detokenize{appdev/refs/types/krb5_addrtype:krb5-addrtype}}\label{\detokenize{appdev/refs/types/krb5_addrtype:krb5-addrtype-struct}}\label{\detokenize{appdev/refs/types/krb5_addrtype::doc}}\index{krb5\_addrtype (C type)} 12500 12501\begin{fulllineitems} 12502\phantomsection\label{\detokenize{appdev/refs/types/krb5_addrtype:c.krb5_addrtype}}\pysigline{\sphinxbfcode{krb5\_addrtype}} 12503\end{fulllineitems} 12504 12505 12506 12507\paragraph{Declaration} 12508\label{\detokenize{appdev/refs/types/krb5_addrtype:declaration}} 12509typedef krb5\_int32 krb5\_addrtype 12510 12511 12512\subsubsection{krb5\_ap\_req} 12513\label{\detokenize{appdev/refs/types/krb5_ap_req:krb5-ap-req}}\label{\detokenize{appdev/refs/types/krb5_ap_req::doc}}\label{\detokenize{appdev/refs/types/krb5_ap_req:krb5-ap-req-struct}}\index{krb5\_ap\_req (C type)} 12514 12515\begin{fulllineitems} 12516\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req}}\pysigline{\sphinxbfcode{krb5\_ap\_req}} 12517\end{fulllineitems} 12518 12519 12520Authentication header. 12521 12522 12523\paragraph{Declaration} 12524\label{\detokenize{appdev/refs/types/krb5_ap_req:declaration}} 12525typedef struct \_krb5\_ap\_req krb5\_ap\_req 12526 12527 12528\paragraph{Members} 12529\label{\detokenize{appdev/refs/types/krb5_ap_req:members}}\index{krb5\_ap\_req.magic (C member)} 12530 12531\begin{fulllineitems} 12532\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_ap\_req.magic}} 12533\end{fulllineitems} 12534 12535\index{krb5\_ap\_req.ap\_options (C member)} 12536 12537\begin{fulllineitems} 12538\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.ap_options}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_ap\_req.ap\_options}} 12539Requested options. 12540 12541\end{fulllineitems} 12542 12543\index{krb5\_ap\_req.ticket (C member)} 12544 12545\begin{fulllineitems} 12546\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.ticket}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} * \sphinxbfcode{krb5\_ap\_req.ticket}} 12547Ticket. 12548 12549\end{fulllineitems} 12550 12551\index{krb5\_ap\_req.authenticator (C member)} 12552 12553\begin{fulllineitems} 12554\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.authenticator}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} \sphinxbfcode{krb5\_ap\_req.authenticator}} 12555Encrypted authenticator. 12556 12557\end{fulllineitems} 12558 12559 12560 12561\subsubsection{krb5\_ap\_rep} 12562\label{\detokenize{appdev/refs/types/krb5_ap_rep:krb5-ap-rep-struct}}\label{\detokenize{appdev/refs/types/krb5_ap_rep:krb5-ap-rep}}\label{\detokenize{appdev/refs/types/krb5_ap_rep::doc}}\index{krb5\_ap\_rep (C type)} 12563 12564\begin{fulllineitems} 12565\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep}}\pysigline{\sphinxbfcode{krb5\_ap\_rep}} 12566\end{fulllineitems} 12567 12568 12569C representaton of AP-REP message. 12570 12571The server’s response to a client’s request for mutual authentication. 12572 12573 12574\paragraph{Declaration} 12575\label{\detokenize{appdev/refs/types/krb5_ap_rep:declaration}} 12576typedef struct \_krb5\_ap\_rep krb5\_ap\_rep 12577 12578 12579\paragraph{Members} 12580\label{\detokenize{appdev/refs/types/krb5_ap_rep:members}}\index{krb5\_ap\_rep.magic (C member)} 12581 12582\begin{fulllineitems} 12583\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_ap\_rep.magic}} 12584\end{fulllineitems} 12585 12586\index{krb5\_ap\_rep.enc\_part (C member)} 12587 12588\begin{fulllineitems} 12589\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep.enc_part}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} \sphinxbfcode{krb5\_ap\_rep.enc\_part}} 12590Ciphertext of ApRepEncPart. 12591 12592\end{fulllineitems} 12593 12594 12595 12596\subsubsection{krb5\_ap\_rep\_enc\_part} 12597\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:krb5-ap-rep-enc-part-struct}}\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part::doc}}\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:krb5-ap-rep-enc-part}}\index{krb5\_ap\_rep\_enc\_part (C type)} 12598 12599\begin{fulllineitems} 12600\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}}\pysigline{\sphinxbfcode{krb5\_ap\_rep\_enc\_part}} 12601\end{fulllineitems} 12602 12603 12604Cleartext that is encrypted and put into \sphinxcode{\_krb5\_ap\_rep} . 12605 12606 12607\paragraph{Declaration} 12608\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:declaration}} 12609typedef struct \_krb5\_ap\_rep\_enc\_part krb5\_ap\_rep\_enc\_part 12610 12611 12612\paragraph{Members} 12613\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:members}}\index{krb5\_ap\_rep\_enc\_part.magic (C member)} 12614 12615\begin{fulllineitems} 12616\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_ap\_rep\_enc\_part.magic}} 12617\end{fulllineitems} 12618 12619\index{krb5\_ap\_rep\_enc\_part.ctime (C member)} 12620 12621\begin{fulllineitems} 12622\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.ctime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_ap\_rep\_enc\_part.ctime}} 12623Client time, seconds portion. 12624 12625\end{fulllineitems} 12626 12627\index{krb5\_ap\_rep\_enc\_part.cusec (C member)} 12628 12629\begin{fulllineitems} 12630\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.cusec}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_ap\_rep\_enc\_part.cusec}} 12631Client time, microseconds portion. 12632 12633\end{fulllineitems} 12634 12635\index{krb5\_ap\_rep\_enc\_part.subkey (C member)} 12636 12637\begin{fulllineitems} 12638\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.subkey}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} * \sphinxbfcode{krb5\_ap\_rep\_enc\_part.subkey}} 12639Subkey (optional) 12640 12641\end{fulllineitems} 12642 12643\index{krb5\_ap\_rep\_enc\_part.seq\_number (C member)} 12644 12645\begin{fulllineitems} 12646\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.seq_number}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}} \sphinxbfcode{krb5\_ap\_rep\_enc\_part.seq\_number}} 12647Sequence number. 12648 12649\end{fulllineitems} 12650 12651 12652 12653\subsubsection{krb5\_authdata} 12654\label{\detokenize{appdev/refs/types/krb5_authdata:krb5-authdata}}\label{\detokenize{appdev/refs/types/krb5_authdata::doc}}\label{\detokenize{appdev/refs/types/krb5_authdata:krb5-authdata-struct}}\index{krb5\_authdata (C type)} 12655 12656\begin{fulllineitems} 12657\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}}\pysigline{\sphinxbfcode{krb5\_authdata}} 12658\end{fulllineitems} 12659 12660 12661Structure for auth data. 12662 12663 12664\paragraph{Declaration} 12665\label{\detokenize{appdev/refs/types/krb5_authdata:declaration}} 12666typedef struct \_krb5\_authdata krb5\_authdata 12667 12668 12669\paragraph{Members} 12670\label{\detokenize{appdev/refs/types/krb5_authdata:members}}\index{krb5\_authdata.magic (C member)} 12671 12672\begin{fulllineitems} 12673\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_authdata.magic}} 12674\end{fulllineitems} 12675 12676\index{krb5\_authdata.ad\_type (C member)} 12677 12678\begin{fulllineitems} 12679\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.ad_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{krb5\_authdatatype}}} \sphinxbfcode{krb5\_authdata.ad\_type}} 12680ADTYPE. 12681 12682\end{fulllineitems} 12683 12684\index{krb5\_authdata.length (C member)} 12685 12686\begin{fulllineitems} 12687\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_authdata.length}} 12688Length of data. 12689 12690\end{fulllineitems} 12691 12692\index{krb5\_authdata.contents (C member)} 12693 12694\begin{fulllineitems} 12695\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.contents}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} * \sphinxbfcode{krb5\_authdata.contents}} 12696Data. 12697 12698\end{fulllineitems} 12699 12700 12701 12702\subsubsection{krb5\_authdatatype} 12703\label{\detokenize{appdev/refs/types/krb5_authdatatype:krb5-authdatatype-struct}}\label{\detokenize{appdev/refs/types/krb5_authdatatype::doc}}\label{\detokenize{appdev/refs/types/krb5_authdatatype:krb5-authdatatype}}\index{krb5\_authdatatype (C type)} 12704 12705\begin{fulllineitems} 12706\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}}\pysigline{\sphinxbfcode{krb5\_authdatatype}} 12707\end{fulllineitems} 12708 12709 12710 12711\paragraph{Declaration} 12712\label{\detokenize{appdev/refs/types/krb5_authdatatype:declaration}} 12713typedef krb5\_int32 krb5\_authdatatype 12714 12715 12716\subsubsection{krb5\_authenticator} 12717\label{\detokenize{appdev/refs/types/krb5_authenticator:krb5-authenticator-struct}}\label{\detokenize{appdev/refs/types/krb5_authenticator:krb5-authenticator}}\label{\detokenize{appdev/refs/types/krb5_authenticator::doc}}\index{krb5\_authenticator (C type)} 12718 12719\begin{fulllineitems} 12720\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}}\pysigline{\sphinxbfcode{krb5\_authenticator}} 12721\end{fulllineitems} 12722 12723 12724Ticket authenticator. 12725 12726The C representation of an unencrypted authenticator. 12727 12728 12729\paragraph{Declaration} 12730\label{\detokenize{appdev/refs/types/krb5_authenticator:declaration}} 12731typedef struct \_krb5\_authenticator krb5\_authenticator 12732 12733 12734\paragraph{Members} 12735\label{\detokenize{appdev/refs/types/krb5_authenticator:members}}\index{krb5\_authenticator.magic (C member)} 12736 12737\begin{fulllineitems} 12738\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_authenticator.magic}} 12739\end{fulllineitems} 12740 12741\index{krb5\_authenticator.client (C member)} 12742 12743\begin{fulllineitems} 12744\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_authenticator.client}} 12745client name/realm 12746 12747\end{fulllineitems} 12748 12749\index{krb5\_authenticator.checksum (C member)} 12750 12751\begin{fulllineitems} 12752\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.checksum}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} * \sphinxbfcode{krb5\_authenticator.checksum}} 12753checksum, includes type, optional 12754 12755\end{fulllineitems} 12756 12757\index{krb5\_authenticator.cusec (C member)} 12758 12759\begin{fulllineitems} 12760\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.cusec}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_authenticator.cusec}} 12761client usec portion 12762 12763\end{fulllineitems} 12764 12765\index{krb5\_authenticator.ctime (C member)} 12766 12767\begin{fulllineitems} 12768\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.ctime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_authenticator.ctime}} 12769client sec portion 12770 12771\end{fulllineitems} 12772 12773\index{krb5\_authenticator.subkey (C member)} 12774 12775\begin{fulllineitems} 12776\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.subkey}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} * \sphinxbfcode{krb5\_authenticator.subkey}} 12777true session key, optional 12778 12779\end{fulllineitems} 12780 12781\index{krb5\_authenticator.seq\_number (C member)} 12782 12783\begin{fulllineitems} 12784\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.seq_number}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}} \sphinxbfcode{krb5\_authenticator.seq\_number}} 12785sequence \#, optional 12786 12787\end{fulllineitems} 12788 12789\index{krb5\_authenticator.authorization\_data (C member)} 12790 12791\begin{fulllineitems} 12792\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.authorization_data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ** \sphinxbfcode{krb5\_authenticator.authorization\_data}} 12793authoriazation data 12794 12795\end{fulllineitems} 12796 12797 12798 12799\subsubsection{krb5\_boolean} 12800\label{\detokenize{appdev/refs/types/krb5_boolean:krb5-boolean-struct}}\label{\detokenize{appdev/refs/types/krb5_boolean::doc}}\label{\detokenize{appdev/refs/types/krb5_boolean:krb5-boolean}}\index{krb5\_boolean (C type)} 12801 12802\begin{fulllineitems} 12803\phantomsection\label{\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}}\pysigline{\sphinxbfcode{krb5\_boolean}} 12804\end{fulllineitems} 12805 12806 12807 12808\paragraph{Declaration} 12809\label{\detokenize{appdev/refs/types/krb5_boolean:declaration}} 12810typedef unsigned int krb5\_boolean 12811 12812 12813\subsubsection{krb5\_checksum} 12814\label{\detokenize{appdev/refs/types/krb5_checksum::doc}}\label{\detokenize{appdev/refs/types/krb5_checksum:krb5-checksum}}\label{\detokenize{appdev/refs/types/krb5_checksum:krb5-checksum-struct}}\index{krb5\_checksum (C type)} 12815 12816\begin{fulllineitems} 12817\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}}\pysigline{\sphinxbfcode{krb5\_checksum}} 12818\end{fulllineitems} 12819 12820 12821 12822\paragraph{Declaration} 12823\label{\detokenize{appdev/refs/types/krb5_checksum:declaration}} 12824typedef struct \_krb5\_checksum krb5\_checksum 12825 12826 12827\paragraph{Members} 12828\label{\detokenize{appdev/refs/types/krb5_checksum:members}}\index{krb5\_checksum.magic (C member)} 12829 12830\begin{fulllineitems} 12831\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_checksum.magic}} 12832\end{fulllineitems} 12833 12834\index{krb5\_checksum.checksum\_type (C member)} 12835 12836\begin{fulllineitems} 12837\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.checksum_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{krb5\_cksumtype}}} \sphinxbfcode{krb5\_checksum.checksum\_type}} 12838\end{fulllineitems} 12839 12840\index{krb5\_checksum.length (C member)} 12841 12842\begin{fulllineitems} 12843\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_checksum.length}} 12844\end{fulllineitems} 12845 12846\index{krb5\_checksum.contents (C member)} 12847 12848\begin{fulllineitems} 12849\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.contents}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} * \sphinxbfcode{krb5\_checksum.contents}} 12850\end{fulllineitems} 12851 12852 12853 12854\subsubsection{krb5\_const\_pointer} 12855\label{\detokenize{appdev/refs/types/krb5_const_pointer:krb5-const-pointer}}\label{\detokenize{appdev/refs/types/krb5_const_pointer::doc}}\label{\detokenize{appdev/refs/types/krb5_const_pointer:krb5-const-pointer-struct}}\index{krb5\_const\_pointer (C type)} 12856 12857\begin{fulllineitems} 12858\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}}\pysigline{\sphinxbfcode{krb5\_const\_pointer}} 12859\end{fulllineitems} 12860 12861 12862 12863\paragraph{Declaration} 12864\label{\detokenize{appdev/refs/types/krb5_const_pointer:declaration}} 12865typedef void const* krb5\_const\_pointer 12866 12867 12868\subsubsection{krb5\_const\_principal} 12869\label{\detokenize{appdev/refs/types/krb5_const_principal:krb5-const-principal-struct}}\label{\detokenize{appdev/refs/types/krb5_const_principal:krb5-const-principal}}\label{\detokenize{appdev/refs/types/krb5_const_principal::doc}}\index{krb5\_const\_principal (C type)} 12870 12871\begin{fulllineitems} 12872\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}}\pysigline{\sphinxbfcode{krb5\_const\_principal}} 12873\end{fulllineitems} 12874 12875 12876Constant version of {\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\sphinxcode{krb5\_principal\_data}}}} . 12877 12878 12879\paragraph{Declaration} 12880\label{\detokenize{appdev/refs/types/krb5_const_principal:declaration}} 12881typedef const krb5\_principal\_data* krb5\_const\_principal 12882 12883 12884\paragraph{Members} 12885\label{\detokenize{appdev/refs/types/krb5_const_principal:members}}\index{krb5\_const\_principal.magic (C member)} 12886 12887\begin{fulllineitems} 12888\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_const\_principal.magic}} 12889\end{fulllineitems} 12890 12891\index{krb5\_const\_principal.realm (C member)} 12892 12893\begin{fulllineitems} 12894\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.realm}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_const\_principal.realm}} 12895\end{fulllineitems} 12896 12897\index{krb5\_const\_principal.data (C member)} 12898 12899\begin{fulllineitems} 12900\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_const\_principal.data}} 12901An array of strings. 12902 12903\end{fulllineitems} 12904 12905\index{krb5\_const\_principal.length (C member)} 12906 12907\begin{fulllineitems} 12908\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.length}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_const\_principal.length}} 12909\end{fulllineitems} 12910 12911\index{krb5\_const\_principal.type (C member)} 12912 12913\begin{fulllineitems} 12914\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_const\_principal.type}} 12915\end{fulllineitems} 12916 12917 12918 12919\subsubsection{krb5\_cred} 12920\label{\detokenize{appdev/refs/types/krb5_cred:krb5-cred-struct}}\label{\detokenize{appdev/refs/types/krb5_cred::doc}}\label{\detokenize{appdev/refs/types/krb5_cred:krb5-cred}}\index{krb5\_cred (C type)} 12921 12922\begin{fulllineitems} 12923\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred}}\pysigline{\sphinxbfcode{krb5\_cred}} 12924\end{fulllineitems} 12925 12926 12927Credentials data structure. 12928 12929 12930\paragraph{Declaration} 12931\label{\detokenize{appdev/refs/types/krb5_cred:declaration}} 12932typedef struct \_krb5\_cred krb5\_cred 12933 12934 12935\paragraph{Members} 12936\label{\detokenize{appdev/refs/types/krb5_cred:members}}\index{krb5\_cred.magic (C member)} 12937 12938\begin{fulllineitems} 12939\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_cred.magic}} 12940\end{fulllineitems} 12941 12942\index{krb5\_cred.tickets (C member)} 12943 12944\begin{fulllineitems} 12945\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.tickets}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} ** \sphinxbfcode{krb5\_cred.tickets}} 12946Tickets. 12947 12948\end{fulllineitems} 12949 12950\index{krb5\_cred.enc\_part (C member)} 12951 12952\begin{fulllineitems} 12953\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.enc_part}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} \sphinxbfcode{krb5\_cred.enc\_part}} 12954Encrypted part. 12955 12956\end{fulllineitems} 12957 12958\index{krb5\_cred.enc\_part2 (C member)} 12959 12960\begin{fulllineitems} 12961\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.enc_part2}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{krb5\_cred\_enc\_part}}} * \sphinxbfcode{krb5\_cred.enc\_part2}} 12962Unencrypted version, if available. 12963 12964\end{fulllineitems} 12965 12966 12967 12968\subsubsection{krb5\_cred\_enc\_part} 12969\label{\detokenize{appdev/refs/types/krb5_cred_enc_part::doc}}\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:krb5-cred-enc-part}}\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:krb5-cred-enc-part-struct}}\index{krb5\_cred\_enc\_part (C type)} 12970 12971\begin{fulllineitems} 12972\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}}\pysigline{\sphinxbfcode{krb5\_cred\_enc\_part}} 12973\end{fulllineitems} 12974 12975 12976Cleartext credentials information. 12977 12978 12979\paragraph{Declaration} 12980\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:declaration}} 12981typedef struct \_krb5\_cred\_enc\_part krb5\_cred\_enc\_part 12982 12983 12984\paragraph{Members} 12985\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:members}}\index{krb5\_cred\_enc\_part.magic (C member)} 12986 12987\begin{fulllineitems} 12988\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_cred\_enc\_part.magic}} 12989\end{fulllineitems} 12990 12991\index{krb5\_cred\_enc\_part.nonce (C member)} 12992 12993\begin{fulllineitems} 12994\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.nonce}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_cred\_enc\_part.nonce}} 12995Nonce (optional) 12996 12997\end{fulllineitems} 12998 12999\index{krb5\_cred\_enc\_part.timestamp (C member)} 13000 13001\begin{fulllineitems} 13002\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.timestamp}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_cred\_enc\_part.timestamp}} 13003Generation time, seconds portion. 13004 13005\end{fulllineitems} 13006 13007\index{krb5\_cred\_enc\_part.usec (C member)} 13008 13009\begin{fulllineitems} 13010\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.usec}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_cred\_enc\_part.usec}} 13011Generation time, microseconds portion. 13012 13013\end{fulllineitems} 13014 13015\index{krb5\_cred\_enc\_part.s\_address (C member)} 13016 13017\begin{fulllineitems} 13018\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.s_address}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} * \sphinxbfcode{krb5\_cred\_enc\_part.s\_address}} 13019Sender address (optional) 13020 13021\end{fulllineitems} 13022 13023\index{krb5\_cred\_enc\_part.r\_address (C member)} 13024 13025\begin{fulllineitems} 13026\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.r_address}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} * \sphinxbfcode{krb5\_cred\_enc\_part.r\_address}} 13027Recipient address (optional) 13028 13029\end{fulllineitems} 13030 13031\index{krb5\_cred\_enc\_part.ticket\_info (C member)} 13032 13033\begin{fulllineitems} 13034\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.ticket_info}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{krb5\_cred\_info}}} ** \sphinxbfcode{krb5\_cred\_enc\_part.ticket\_info}} 13035\end{fulllineitems} 13036 13037 13038 13039\subsubsection{krb5\_cred\_info} 13040\label{\detokenize{appdev/refs/types/krb5_cred_info:krb5-cred-info-struct}}\label{\detokenize{appdev/refs/types/krb5_cred_info::doc}}\label{\detokenize{appdev/refs/types/krb5_cred_info:krb5-cred-info}}\index{krb5\_cred\_info (C type)} 13041 13042\begin{fulllineitems} 13043\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}}\pysigline{\sphinxbfcode{krb5\_cred\_info}} 13044\end{fulllineitems} 13045 13046 13047Credentials information inserted into \sphinxstyleemphasis{EncKrbCredPart} . 13048 13049 13050\paragraph{Declaration} 13051\label{\detokenize{appdev/refs/types/krb5_cred_info:declaration}} 13052typedef struct \_krb5\_cred\_info krb5\_cred\_info 13053 13054 13055\paragraph{Members} 13056\label{\detokenize{appdev/refs/types/krb5_cred_info:members}}\index{krb5\_cred\_info.magic (C member)} 13057 13058\begin{fulllineitems} 13059\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_cred\_info.magic}} 13060\end{fulllineitems} 13061 13062\index{krb5\_cred\_info.session (C member)} 13063 13064\begin{fulllineitems} 13065\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.session}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} * \sphinxbfcode{krb5\_cred\_info.session}} 13066Session key used to encrypt ticket. 13067 13068\end{fulllineitems} 13069 13070\index{krb5\_cred\_info.client (C member)} 13071 13072\begin{fulllineitems} 13073\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_cred\_info.client}} 13074Client principal and realm. 13075 13076\end{fulllineitems} 13077 13078\index{krb5\_cred\_info.server (C member)} 13079 13080\begin{fulllineitems} 13081\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.server}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_cred\_info.server}} 13082Server principal and realm. 13083 13084\end{fulllineitems} 13085 13086\index{krb5\_cred\_info.flags (C member)} 13087 13088\begin{fulllineitems} 13089\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_cred\_info.flags}} 13090Ticket flags. 13091 13092\end{fulllineitems} 13093 13094\index{krb5\_cred\_info.times (C member)} 13095 13096\begin{fulllineitems} 13097\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.times}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{krb5\_ticket\_times}}} \sphinxbfcode{krb5\_cred\_info.times}} 13098Auth, start, end, renew\_till. 13099 13100\end{fulllineitems} 13101 13102\index{krb5\_cred\_info.caddrs (C member)} 13103 13104\begin{fulllineitems} 13105\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.caddrs}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ** \sphinxbfcode{krb5\_cred\_info.caddrs}} 13106Array of pointers to addrs (optional) 13107 13108\end{fulllineitems} 13109 13110 13111 13112\subsubsection{krb5\_creds} 13113\label{\detokenize{appdev/refs/types/krb5_creds::doc}}\label{\detokenize{appdev/refs/types/krb5_creds:krb5-creds}}\label{\detokenize{appdev/refs/types/krb5_creds:krb5-creds-struct}}\index{krb5\_creds (C type)} 13114 13115\begin{fulllineitems} 13116\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}}\pysigline{\sphinxbfcode{krb5\_creds}} 13117\end{fulllineitems} 13118 13119 13120Credentials structure including ticket, session key, and lifetime info. 13121 13122 13123\paragraph{Declaration} 13124\label{\detokenize{appdev/refs/types/krb5_creds:declaration}} 13125typedef struct \_krb5\_creds krb5\_creds 13126 13127 13128\paragraph{Members} 13129\label{\detokenize{appdev/refs/types/krb5_creds:members}}\index{krb5\_creds.magic (C member)} 13130 13131\begin{fulllineitems} 13132\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_creds.magic}} 13133\end{fulllineitems} 13134 13135\index{krb5\_creds.client (C member)} 13136 13137\begin{fulllineitems} 13138\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_creds.client}} 13139client’s principal identifier 13140 13141\end{fulllineitems} 13142 13143\index{krb5\_creds.server (C member)} 13144 13145\begin{fulllineitems} 13146\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.server}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_creds.server}} 13147server’s principal identifier 13148 13149\end{fulllineitems} 13150 13151\index{krb5\_creds.keyblock (C member)} 13152 13153\begin{fulllineitems} 13154\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.keyblock}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} \sphinxbfcode{krb5\_creds.keyblock}} 13155session encryption key info 13156 13157\end{fulllineitems} 13158 13159\index{krb5\_creds.times (C member)} 13160 13161\begin{fulllineitems} 13162\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.times}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{krb5\_ticket\_times}}} \sphinxbfcode{krb5\_creds.times}} 13163lifetime info 13164 13165\end{fulllineitems} 13166 13167\index{krb5\_creds.is\_skey (C member)} 13168 13169\begin{fulllineitems} 13170\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.is_skey}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_creds.is\_skey}} 13171true if ticket is encrypted in another ticket’s skey 13172 13173\end{fulllineitems} 13174 13175\index{krb5\_creds.ticket\_flags (C member)} 13176 13177\begin{fulllineitems} 13178\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.ticket_flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_creds.ticket\_flags}} 13179flags in ticket 13180 13181\end{fulllineitems} 13182 13183\index{krb5\_creds.addresses (C member)} 13184 13185\begin{fulllineitems} 13186\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.addresses}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ** \sphinxbfcode{krb5\_creds.addresses}} 13187addrs in ticket 13188 13189\end{fulllineitems} 13190 13191\index{krb5\_creds.ticket (C member)} 13192 13193\begin{fulllineitems} 13194\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.ticket}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_creds.ticket}} 13195ticket string itself 13196 13197\end{fulllineitems} 13198 13199\index{krb5\_creds.second\_ticket (C member)} 13200 13201\begin{fulllineitems} 13202\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.second_ticket}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_creds.second\_ticket}} 13203second ticket, if related to ticket (via DUPLICATE-SKEY or ENC-TKT-IN-SKEY) 13204 13205\end{fulllineitems} 13206 13207\index{krb5\_creds.authdata (C member)} 13208 13209\begin{fulllineitems} 13210\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.authdata}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ** \sphinxbfcode{krb5\_creds.authdata}} 13211authorization data 13212 13213\end{fulllineitems} 13214 13215 13216 13217\subsubsection{krb5\_crypto\_iov} 13218\label{\detokenize{appdev/refs/types/krb5_crypto_iov:krb5-crypto-iov}}\label{\detokenize{appdev/refs/types/krb5_crypto_iov::doc}}\label{\detokenize{appdev/refs/types/krb5_crypto_iov:krb5-crypto-iov-struct}}\index{krb5\_crypto\_iov (C type)} 13219 13220\begin{fulllineitems} 13221\phantomsection\label{\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}}\pysigline{\sphinxbfcode{krb5\_crypto\_iov}} 13222\end{fulllineitems} 13223 13224 13225Structure to describe a region of text to be encrypted or decrypted. 13226 13227The \sphinxstyleemphasis{flags} member describes the type of the iov. The \sphinxstyleemphasis{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. 13228 13229 13230\paragraph{Declaration} 13231\label{\detokenize{appdev/refs/types/krb5_crypto_iov:declaration}} 13232typedef struct \_krb5\_crypto\_iov krb5\_crypto\_iov 13233 13234 13235\paragraph{Members} 13236\label{\detokenize{appdev/refs/types/krb5_crypto_iov:members}}\index{krb5\_crypto\_iov.flags (C member)} 13237 13238\begin{fulllineitems} 13239\phantomsection\label{\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cryptotype:c.krb5_cryptotype}]{\sphinxcrossref{krb5\_cryptotype}}} \sphinxbfcode{krb5\_crypto\_iov.flags}} 13240\sphinxcode{KRB5\_CRYPTO\_TYPE} type of the iov 13241 13242\end{fulllineitems} 13243 13244\index{krb5\_crypto\_iov.data (C member)} 13245 13246\begin{fulllineitems} 13247\phantomsection\label{\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov.data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_crypto\_iov.data}} 13248\end{fulllineitems} 13249 13250 13251 13252\subsubsection{krb5\_cryptotype} 13253\label{\detokenize{appdev/refs/types/krb5_cryptotype:krb5-cryptotype}}\label{\detokenize{appdev/refs/types/krb5_cryptotype::doc}}\label{\detokenize{appdev/refs/types/krb5_cryptotype:krb5-cryptotype-struct}}\index{krb5\_cryptotype (C type)} 13254 13255\begin{fulllineitems} 13256\phantomsection\label{\detokenize{appdev/refs/types/krb5_cryptotype:c.krb5_cryptotype}}\pysigline{\sphinxbfcode{krb5\_cryptotype}} 13257\end{fulllineitems} 13258 13259 13260 13261\paragraph{Declaration} 13262\label{\detokenize{appdev/refs/types/krb5_cryptotype:declaration}} 13263typedef krb5\_int32 krb5\_cryptotype 13264 13265 13266\subsubsection{krb5\_data} 13267\label{\detokenize{appdev/refs/types/krb5_data:krb5-data}}\label{\detokenize{appdev/refs/types/krb5_data::doc}}\label{\detokenize{appdev/refs/types/krb5_data:krb5-data-struct}}\index{krb5\_data (C type)} 13268 13269\begin{fulllineitems} 13270\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data}}\pysigline{\sphinxbfcode{krb5\_data}} 13271\end{fulllineitems} 13272 13273 13274 13275\paragraph{Declaration} 13276\label{\detokenize{appdev/refs/types/krb5_data:declaration}} 13277typedef struct \_krb5\_data krb5\_data 13278 13279 13280\paragraph{Members} 13281\label{\detokenize{appdev/refs/types/krb5_data:members}}\index{krb5\_data.magic (C member)} 13282 13283\begin{fulllineitems} 13284\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_data.magic}} 13285\end{fulllineitems} 13286 13287\index{krb5\_data.length (C member)} 13288 13289\begin{fulllineitems} 13290\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_data.length}} 13291\end{fulllineitems} 13292 13293\index{krb5\_data.data (C member)} 13294 13295\begin{fulllineitems} 13296\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data.data}}\pysigline{char * \sphinxbfcode{krb5\_data.data}} 13297\end{fulllineitems} 13298 13299 13300 13301\subsubsection{krb5\_deltat} 13302\label{\detokenize{appdev/refs/types/krb5_deltat:krb5-deltat}}\label{\detokenize{appdev/refs/types/krb5_deltat:krb5-deltat-struct}}\label{\detokenize{appdev/refs/types/krb5_deltat::doc}}\index{krb5\_deltat (C type)} 13303 13304\begin{fulllineitems} 13305\phantomsection\label{\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}}\pysigline{\sphinxbfcode{krb5\_deltat}} 13306\end{fulllineitems} 13307 13308 13309 13310\paragraph{Declaration} 13311\label{\detokenize{appdev/refs/types/krb5_deltat:declaration}} 13312typedef krb5\_int32 krb5\_deltat 13313 13314 13315\subsubsection{krb5\_enc\_data} 13316\label{\detokenize{appdev/refs/types/krb5_enc_data::doc}}\label{\detokenize{appdev/refs/types/krb5_enc_data:krb5-enc-data}}\label{\detokenize{appdev/refs/types/krb5_enc_data:krb5-enc-data-struct}}\index{krb5\_enc\_data (C type)} 13317 13318\begin{fulllineitems} 13319\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}}\pysigline{\sphinxbfcode{krb5\_enc\_data}} 13320\end{fulllineitems} 13321 13322 13323 13324\paragraph{Declaration} 13325\label{\detokenize{appdev/refs/types/krb5_enc_data:declaration}} 13326typedef struct \_krb5\_enc\_data krb5\_enc\_data 13327 13328 13329\paragraph{Members} 13330\label{\detokenize{appdev/refs/types/krb5_enc_data:members}}\index{krb5\_enc\_data.magic (C member)} 13331 13332\begin{fulllineitems} 13333\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_enc\_data.magic}} 13334\end{fulllineitems} 13335 13336\index{krb5\_enc\_data.enctype (C member)} 13337 13338\begin{fulllineitems} 13339\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.enctype}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} \sphinxbfcode{krb5\_enc\_data.enctype}} 13340\end{fulllineitems} 13341 13342\index{krb5\_enc\_data.kvno (C member)} 13343 13344\begin{fulllineitems} 13345\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.kvno}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{krb5\_kvno}}} \sphinxbfcode{krb5\_enc\_data.kvno}} 13346\end{fulllineitems} 13347 13348\index{krb5\_enc\_data.ciphertext (C member)} 13349 13350\begin{fulllineitems} 13351\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.ciphertext}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_enc\_data.ciphertext}} 13352\end{fulllineitems} 13353 13354 13355 13356\subsubsection{krb5\_enc\_kdc\_rep\_part} 13357\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part::doc}}\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:krb5-enc-kdc-rep-part}}\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:krb5-enc-kdc-rep-part-struct}}\index{krb5\_enc\_kdc\_rep\_part (C type)} 13358 13359\begin{fulllineitems} 13360\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}}\pysigline{\sphinxbfcode{krb5\_enc\_kdc\_rep\_part}} 13361\end{fulllineitems} 13362 13363 13364C representation of \sphinxstyleemphasis{EncKDCRepPart} protocol message. 13365 13366This is the cleartext message that is encrypted and inserted in \sphinxstyleemphasis{KDC-REP} . 13367 13368 13369\paragraph{Declaration} 13370\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:declaration}} 13371typedef struct \_krb5\_enc\_kdc\_rep\_part krb5\_enc\_kdc\_rep\_part 13372 13373 13374\paragraph{Members} 13375\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:members}}\index{krb5\_enc\_kdc\_rep\_part.magic (C member)} 13376 13377\begin{fulllineitems} 13378\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.magic}} 13379\end{fulllineitems} 13380 13381\index{krb5\_enc\_kdc\_rep\_part.msg\_type (C member)} 13382 13383\begin{fulllineitems} 13384\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.msg_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}]{\sphinxcrossref{krb5\_msgtype}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.msg\_type}} 13385krb5 message type 13386 13387\end{fulllineitems} 13388 13389\index{krb5\_enc\_kdc\_rep\_part.session (C member)} 13390 13391\begin{fulllineitems} 13392\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.session}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} * \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.session}} 13393Session key. 13394 13395\end{fulllineitems} 13396 13397\index{krb5\_enc\_kdc\_rep\_part.last\_req (C member)} 13398 13399\begin{fulllineitems} 13400\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.last_req}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}]{\sphinxcrossref{krb5\_last\_req\_entry}}} ** \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.last\_req}} 13401Array of pointers to entries. 13402 13403\end{fulllineitems} 13404 13405\index{krb5\_enc\_kdc\_rep\_part.nonce (C member)} 13406 13407\begin{fulllineitems} 13408\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.nonce}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.nonce}} 13409Nonce from request. 13410 13411\end{fulllineitems} 13412 13413\index{krb5\_enc\_kdc\_rep\_part.key\_exp (C member)} 13414 13415\begin{fulllineitems} 13416\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.key_exp}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.key\_exp}} 13417Expiration date. 13418 13419\end{fulllineitems} 13420 13421\index{krb5\_enc\_kdc\_rep\_part.flags (C member)} 13422 13423\begin{fulllineitems} 13424\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.flags}} 13425Ticket flags. 13426 13427\end{fulllineitems} 13428 13429\index{krb5\_enc\_kdc\_rep\_part.times (C member)} 13430 13431\begin{fulllineitems} 13432\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.times}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{krb5\_ticket\_times}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.times}} 13433Lifetime info. 13434 13435\end{fulllineitems} 13436 13437\index{krb5\_enc\_kdc\_rep\_part.server (C member)} 13438 13439\begin{fulllineitems} 13440\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.server}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.server}} 13441Server’s principal identifier. 13442 13443\end{fulllineitems} 13444 13445\index{krb5\_enc\_kdc\_rep\_part.caddrs (C member)} 13446 13447\begin{fulllineitems} 13448\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.caddrs}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ** \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.caddrs}} 13449Array of ptrs to addrs, optional. 13450 13451\end{fulllineitems} 13452 13453\index{krb5\_enc\_kdc\_rep\_part.enc\_padata (C member)} 13454 13455\begin{fulllineitems} 13456\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.enc_padata}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{krb5\_pa\_data}}} ** \sphinxbfcode{krb5\_enc\_kdc\_rep\_part.enc\_padata}} 13457Encrypted preauthentication data. 13458 13459\end{fulllineitems} 13460 13461 13462 13463\subsubsection{krb5\_enc\_tkt\_part} 13464\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:krb5-enc-tkt-part}}\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part::doc}}\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:krb5-enc-tkt-part-struct}}\index{krb5\_enc\_tkt\_part (C type)} 13465 13466\begin{fulllineitems} 13467\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}}\pysigline{\sphinxbfcode{krb5\_enc\_tkt\_part}} 13468\end{fulllineitems} 13469 13470 13471Encrypted part of ticket. 13472 13473 13474\paragraph{Declaration} 13475\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:declaration}} 13476typedef struct \_krb5\_enc\_tkt\_part krb5\_enc\_tkt\_part 13477 13478 13479\paragraph{Members} 13480\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:members}}\index{krb5\_enc\_tkt\_part.magic (C member)} 13481 13482\begin{fulllineitems} 13483\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_enc\_tkt\_part.magic}} 13484\end{fulllineitems} 13485 13486\index{krb5\_enc\_tkt\_part.flags (C member)} 13487 13488\begin{fulllineitems} 13489\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_enc\_tkt\_part.flags}} 13490flags 13491 13492\end{fulllineitems} 13493 13494\index{krb5\_enc\_tkt\_part.session (C member)} 13495 13496\begin{fulllineitems} 13497\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.session}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} * \sphinxbfcode{krb5\_enc\_tkt\_part.session}} 13498session key: includes enctype 13499 13500\end{fulllineitems} 13501 13502\index{krb5\_enc\_tkt\_part.client (C member)} 13503 13504\begin{fulllineitems} 13505\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_enc\_tkt\_part.client}} 13506client name/realm 13507 13508\end{fulllineitems} 13509 13510\index{krb5\_enc\_tkt\_part.transited (C member)} 13511 13512\begin{fulllineitems} 13513\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.transited}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}]{\sphinxcrossref{krb5\_transited}}} \sphinxbfcode{krb5\_enc\_tkt\_part.transited}} 13514list of transited realms 13515 13516\end{fulllineitems} 13517 13518\index{krb5\_enc\_tkt\_part.times (C member)} 13519 13520\begin{fulllineitems} 13521\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.times}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{krb5\_ticket\_times}}} \sphinxbfcode{krb5\_enc\_tkt\_part.times}} 13522auth, start, end, renew\_till 13523 13524\end{fulllineitems} 13525 13526\index{krb5\_enc\_tkt\_part.caddrs (C member)} 13527 13528\begin{fulllineitems} 13529\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.caddrs}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ** \sphinxbfcode{krb5\_enc\_tkt\_part.caddrs}} 13530array of ptrs to addresses 13531 13532\end{fulllineitems} 13533 13534\index{krb5\_enc\_tkt\_part.authorization\_data (C member)} 13535 13536\begin{fulllineitems} 13537\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.authorization_data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ** \sphinxbfcode{krb5\_enc\_tkt\_part.authorization\_data}} 13538auth data 13539 13540\end{fulllineitems} 13541 13542 13543 13544\subsubsection{krb5\_encrypt\_block} 13545\label{\detokenize{appdev/refs/types/krb5_encrypt_block:krb5-encrypt-block}}\label{\detokenize{appdev/refs/types/krb5_encrypt_block:krb5-encrypt-block-struct}}\label{\detokenize{appdev/refs/types/krb5_encrypt_block::doc}}\index{krb5\_encrypt\_block (C type)} 13546 13547\begin{fulllineitems} 13548\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}}\pysigline{\sphinxbfcode{krb5\_encrypt\_block}} 13549\end{fulllineitems} 13550 13551 13552 13553\paragraph{Declaration} 13554\label{\detokenize{appdev/refs/types/krb5_encrypt_block:declaration}} 13555typedef struct \_krb5\_encrypt\_block krb5\_encrypt\_block 13556 13557 13558\paragraph{Members} 13559\label{\detokenize{appdev/refs/types/krb5_encrypt_block:members}}\index{krb5\_encrypt\_block.magic (C member)} 13560 13561\begin{fulllineitems} 13562\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_encrypt\_block.magic}} 13563\end{fulllineitems} 13564 13565\index{krb5\_encrypt\_block.crypto\_entry (C member)} 13566 13567\begin{fulllineitems} 13568\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block.crypto_entry}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} \sphinxbfcode{krb5\_encrypt\_block.crypto\_entry}} 13569\end{fulllineitems} 13570 13571\index{krb5\_encrypt\_block.key (C member)} 13572 13573\begin{fulllineitems} 13574\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block.key}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} * \sphinxbfcode{krb5\_encrypt\_block.key}} 13575\end{fulllineitems} 13576 13577 13578 13579\subsubsection{krb5\_enctype} 13580\label{\detokenize{appdev/refs/types/krb5_enctype:krb5-enctype-struct}}\label{\detokenize{appdev/refs/types/krb5_enctype:krb5-enctype}}\label{\detokenize{appdev/refs/types/krb5_enctype::doc}}\index{krb5\_enctype (C type)} 13581 13582\begin{fulllineitems} 13583\phantomsection\label{\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}}\pysigline{\sphinxbfcode{krb5\_enctype}} 13584\end{fulllineitems} 13585 13586 13587 13588\paragraph{Declaration} 13589\label{\detokenize{appdev/refs/types/krb5_enctype:declaration}} 13590typedef krb5\_int32 krb5\_enctype 13591 13592 13593\subsubsection{krb5\_error} 13594\label{\detokenize{appdev/refs/types/krb5_error:krb5-error-struct}}\label{\detokenize{appdev/refs/types/krb5_error:krb5-error}}\label{\detokenize{appdev/refs/types/krb5_error::doc}}\index{krb5\_error (C type)} 13595 13596\begin{fulllineitems} 13597\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error}}\pysigline{\sphinxbfcode{krb5\_error}} 13598\end{fulllineitems} 13599 13600 13601Error message structure. 13602 13603 13604\paragraph{Declaration} 13605\label{\detokenize{appdev/refs/types/krb5_error:declaration}} 13606typedef struct \_krb5\_error krb5\_error 13607 13608 13609\paragraph{Members} 13610\label{\detokenize{appdev/refs/types/krb5_error:members}}\index{krb5\_error.magic (C member)} 13611 13612\begin{fulllineitems} 13613\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_error.magic}} 13614\end{fulllineitems} 13615 13616\index{krb5\_error.ctime (C member)} 13617 13618\begin{fulllineitems} 13619\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.ctime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_error.ctime}} 13620Client sec portion; optional. 13621 13622\end{fulllineitems} 13623 13624\index{krb5\_error.cusec (C member)} 13625 13626\begin{fulllineitems} 13627\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.cusec}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_error.cusec}} 13628Client usec portion; optional. 13629 13630\end{fulllineitems} 13631 13632\index{krb5\_error.susec (C member)} 13633 13634\begin{fulllineitems} 13635\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.susec}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_error.susec}} 13636Server usec portion. 13637 13638\end{fulllineitems} 13639 13640\index{krb5\_error.stime (C member)} 13641 13642\begin{fulllineitems} 13643\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.stime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_error.stime}} 13644Server sec portion. 13645 13646\end{fulllineitems} 13647 13648\index{krb5\_error.error (C member)} 13649 13650\begin{fulllineitems} 13651\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.error}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}} \sphinxbfcode{krb5\_error.error}} 13652Error code (protocol error \#’s) 13653 13654\end{fulllineitems} 13655 13656\index{krb5\_error.client (C member)} 13657 13658\begin{fulllineitems} 13659\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_error.client}} 13660Client principal and realm. 13661 13662\end{fulllineitems} 13663 13664\index{krb5\_error.server (C member)} 13665 13666\begin{fulllineitems} 13667\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.server}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_error.server}} 13668Server principal and realm. 13669 13670\end{fulllineitems} 13671 13672\index{krb5\_error.text (C member)} 13673 13674\begin{fulllineitems} 13675\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.text}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_error.text}} 13676Descriptive text. 13677 13678\end{fulllineitems} 13679 13680\index{krb5\_error.e\_data (C member)} 13681 13682\begin{fulllineitems} 13683\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.e_data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_error.e\_data}} 13684Additional error-describing data. 13685 13686\end{fulllineitems} 13687 13688 13689 13690\subsubsection{krb5\_error\_code} 13691\label{\detokenize{appdev/refs/types/krb5_error_code:krb5-error-code}}\label{\detokenize{appdev/refs/types/krb5_error_code::doc}}\label{\detokenize{appdev/refs/types/krb5_error_code:krb5-error-code-struct}}\index{krb5\_error\_code (C type)} 13692 13693\begin{fulllineitems} 13694\phantomsection\label{\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}}\pysigline{\sphinxbfcode{krb5\_error\_code}} 13695\end{fulllineitems} 13696 13697 13698Used to convey an operation status. 13699 13700The value 0 indicates success; any other values are com\_err codes. Use {\hyperref[\detokenize{appdev/refs/api/krb5_get_error_message:c.krb5_get_error_message}]{\sphinxcrossref{\sphinxcode{krb5\_get\_error\_message()}}}} to obtain a string describing the error. 13701 13702 13703\paragraph{Declaration} 13704\label{\detokenize{appdev/refs/types/krb5_error_code:declaration}} 13705typedef krb5\_int32 krb5\_error\_code 13706 13707 13708\subsubsection{krb5\_expire\_callback\_func} 13709\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:krb5-expire-callback-func}}\label{\detokenize{appdev/refs/types/krb5_expire_callback_func::doc}}\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:krb5-expire-callback-func-struct}}\index{krb5\_expire\_callback\_func (C type)} 13710 13711\begin{fulllineitems} 13712\phantomsection\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:c.krb5_expire_callback_func}}\pysigline{\sphinxbfcode{krb5\_expire\_callback\_func}} 13713\end{fulllineitems} 13714 13715 13716 13717\paragraph{Declaration} 13718\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:declaration}} 13719typedef void( * krb5\_expire\_callback\_func) (krb5\_context context, void *data, krb5\_timestamp password\_expiration, krb5\_timestamp account\_expiration, krb5\_boolean is\_last\_req) 13720 13721 13722\subsubsection{krb5\_flags} 13723\label{\detokenize{appdev/refs/types/krb5_flags:krb5-flags-struct}}\label{\detokenize{appdev/refs/types/krb5_flags:krb5-flags}}\label{\detokenize{appdev/refs/types/krb5_flags::doc}}\index{krb5\_flags (C type)} 13724 13725\begin{fulllineitems} 13726\phantomsection\label{\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}}\pysigline{\sphinxbfcode{krb5\_flags}} 13727\end{fulllineitems} 13728 13729 13730 13731\paragraph{Declaration} 13732\label{\detokenize{appdev/refs/types/krb5_flags:declaration}} 13733typedef krb5\_int32 krb5\_flags 13734 13735 13736\subsubsection{krb5\_get\_init\_creds\_opt} 13737\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:krb5-get-init-creds-opt-struct}}\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt::doc}}\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:krb5-get-init-creds-opt}}\index{krb5\_get\_init\_creds\_opt (C type)} 13738 13739\begin{fulllineitems} 13740\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}}\pysigline{\sphinxbfcode{krb5\_get\_init\_creds\_opt}} 13741\end{fulllineitems} 13742 13743 13744Store options for \sphinxstyleemphasis{\_krb5\_get\_init\_creds} . 13745 13746 13747\paragraph{Declaration} 13748\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:declaration}} 13749typedef struct \_krb5\_get\_init\_creds\_opt krb5\_get\_init\_creds\_opt 13750 13751 13752\paragraph{Members} 13753\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:members}}\index{krb5\_get\_init\_creds\_opt.flags (C member)} 13754 13755\begin{fulllineitems} 13756\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt.flags}} 13757\end{fulllineitems} 13758 13759\index{krb5\_get\_init\_creds\_opt.tkt\_life (C member)} 13760 13761\begin{fulllineitems} 13762\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.tkt_life}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt.tkt\_life}} 13763\end{fulllineitems} 13764 13765\index{krb5\_get\_init\_creds\_opt.renew\_life (C member)} 13766 13767\begin{fulllineitems} 13768\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.renew_life}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{krb5\_deltat}}} \sphinxbfcode{krb5\_get\_init\_creds\_opt.renew\_life}} 13769\end{fulllineitems} 13770 13771\index{krb5\_get\_init\_creds\_opt.forwardable (C member)} 13772 13773\begin{fulllineitems} 13774\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.forwardable}}\pysigline{int \sphinxbfcode{krb5\_get\_init\_creds\_opt.forwardable}} 13775\end{fulllineitems} 13776 13777\index{krb5\_get\_init\_creds\_opt.proxiable (C member)} 13778 13779\begin{fulllineitems} 13780\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.proxiable}}\pysigline{int \sphinxbfcode{krb5\_get\_init\_creds\_opt.proxiable}} 13781\end{fulllineitems} 13782 13783\index{krb5\_get\_init\_creds\_opt.etype\_list (C member)} 13784 13785\begin{fulllineitems} 13786\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.etype_list}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} * \sphinxbfcode{krb5\_get\_init\_creds\_opt.etype\_list}} 13787\end{fulllineitems} 13788 13789\index{krb5\_get\_init\_creds\_opt.etype\_list\_length (C member)} 13790 13791\begin{fulllineitems} 13792\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.etype_list_length}}\pysigline{int \sphinxbfcode{krb5\_get\_init\_creds\_opt.etype\_list\_length}} 13793\end{fulllineitems} 13794 13795\index{krb5\_get\_init\_creds\_opt.address\_list (C member)} 13796 13797\begin{fulllineitems} 13798\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.address_list}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ** \sphinxbfcode{krb5\_get\_init\_creds\_opt.address\_list}} 13799\end{fulllineitems} 13800 13801\index{krb5\_get\_init\_creds\_opt.preauth\_list (C member)} 13802 13803\begin{fulllineitems} 13804\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.preauth_list}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{krb5\_preauthtype}}} * \sphinxbfcode{krb5\_get\_init\_creds\_opt.preauth\_list}} 13805\end{fulllineitems} 13806 13807\index{krb5\_get\_init\_creds\_opt.preauth\_list\_length (C member)} 13808 13809\begin{fulllineitems} 13810\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.preauth_list_length}}\pysigline{int \sphinxbfcode{krb5\_get\_init\_creds\_opt.preauth\_list\_length}} 13811\end{fulllineitems} 13812 13813\index{krb5\_get\_init\_creds\_opt.salt (C member)} 13814 13815\begin{fulllineitems} 13816\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.salt}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_get\_init\_creds\_opt.salt}} 13817\end{fulllineitems} 13818 13819 13820 13821\subsubsection{krb5\_gic\_opt\_pa\_data} 13822\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data::doc}}\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:krb5-gic-opt-pa-data}}\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:krb5-gic-opt-pa-data-struct}}\index{krb5\_gic\_opt\_pa\_data (C type)} 13823 13824\begin{fulllineitems} 13825\phantomsection\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data}}\pysigline{\sphinxbfcode{krb5\_gic\_opt\_pa\_data}} 13826\end{fulllineitems} 13827 13828 13829Generic preauth option attribute/value pairs. 13830 13831 13832\paragraph{Declaration} 13833\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:declaration}} 13834typedef struct \_krb5\_gic\_opt\_pa\_data krb5\_gic\_opt\_pa\_data 13835 13836 13837\paragraph{Members} 13838\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:members}}\index{krb5\_gic\_opt\_pa\_data.attr (C member)} 13839 13840\begin{fulllineitems} 13841\phantomsection\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data.attr}}\pysigline{char * \sphinxbfcode{krb5\_gic\_opt\_pa\_data.attr}} 13842\end{fulllineitems} 13843 13844\index{krb5\_gic\_opt\_pa\_data.value (C member)} 13845 13846\begin{fulllineitems} 13847\phantomsection\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data.value}}\pysigline{char * \sphinxbfcode{krb5\_gic\_opt\_pa\_data.value}} 13848\end{fulllineitems} 13849 13850 13851 13852\subsubsection{krb5\_int16} 13853\label{\detokenize{appdev/refs/types/krb5_int16:krb5-int16-struct}}\label{\detokenize{appdev/refs/types/krb5_int16:krb5-int16}}\label{\detokenize{appdev/refs/types/krb5_int16::doc}}\index{krb5\_int16 (C type)} 13854 13855\begin{fulllineitems} 13856\phantomsection\label{\detokenize{appdev/refs/types/krb5_int16:c.krb5_int16}}\pysigline{\sphinxbfcode{krb5\_int16}} 13857\end{fulllineitems} 13858 13859 13860 13861\paragraph{Declaration} 13862\label{\detokenize{appdev/refs/types/krb5_int16:declaration}} 13863typedef int16\_t krb5\_int16 13864 13865 13866\subsubsection{krb5\_int32} 13867\label{\detokenize{appdev/refs/types/krb5_int32:krb5-int32-struct}}\label{\detokenize{appdev/refs/types/krb5_int32::doc}}\label{\detokenize{appdev/refs/types/krb5_int32:krb5-int32}}\index{krb5\_int32 (C type)} 13868 13869\begin{fulllineitems} 13870\phantomsection\label{\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}}\pysigline{\sphinxbfcode{krb5\_int32}} 13871\end{fulllineitems} 13872 13873 13874 13875\paragraph{Declaration} 13876\label{\detokenize{appdev/refs/types/krb5_int32:declaration}} 13877typedef int32\_t krb5\_int32 13878 13879 13880\subsubsection{krb5\_kdc\_rep} 13881\label{\detokenize{appdev/refs/types/krb5_kdc_rep::doc}}\label{\detokenize{appdev/refs/types/krb5_kdc_rep:krb5-kdc-rep}}\label{\detokenize{appdev/refs/types/krb5_kdc_rep:krb5-kdc-rep-struct}}\index{krb5\_kdc\_rep (C type)} 13882 13883\begin{fulllineitems} 13884\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}}\pysigline{\sphinxbfcode{krb5\_kdc\_rep}} 13885\end{fulllineitems} 13886 13887 13888Representation of the \sphinxstyleemphasis{KDC-REP} protocol message. 13889 13890 13891\paragraph{Declaration} 13892\label{\detokenize{appdev/refs/types/krb5_kdc_rep:declaration}} 13893typedef struct \_krb5\_kdc\_rep krb5\_kdc\_rep 13894 13895 13896\paragraph{Members} 13897\label{\detokenize{appdev/refs/types/krb5_kdc_rep:members}}\index{krb5\_kdc\_rep.magic (C member)} 13898 13899\begin{fulllineitems} 13900\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_kdc\_rep.magic}} 13901\end{fulllineitems} 13902 13903\index{krb5\_kdc\_rep.msg\_type (C member)} 13904 13905\begin{fulllineitems} 13906\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.msg_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}]{\sphinxcrossref{krb5\_msgtype}}} \sphinxbfcode{krb5\_kdc\_rep.msg\_type}} 13907KRB5\_AS\_REP or KRB5\_KDC\_REP. 13908 13909\end{fulllineitems} 13910 13911\index{krb5\_kdc\_rep.padata (C member)} 13912 13913\begin{fulllineitems} 13914\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.padata}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{krb5\_pa\_data}}} ** \sphinxbfcode{krb5\_kdc\_rep.padata}} 13915Preauthentication data from KDC. 13916 13917\end{fulllineitems} 13918 13919\index{krb5\_kdc\_rep.client (C member)} 13920 13921\begin{fulllineitems} 13922\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_kdc\_rep.client}} 13923Client principal and realm. 13924 13925\end{fulllineitems} 13926 13927\index{krb5\_kdc\_rep.ticket (C member)} 13928 13929\begin{fulllineitems} 13930\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.ticket}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} * \sphinxbfcode{krb5\_kdc\_rep.ticket}} 13931Ticket. 13932 13933\end{fulllineitems} 13934 13935\index{krb5\_kdc\_rep.enc\_part (C member)} 13936 13937\begin{fulllineitems} 13938\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.enc_part}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} \sphinxbfcode{krb5\_kdc\_rep.enc\_part}} 13939Encrypted part of reply. 13940 13941\end{fulllineitems} 13942 13943\index{krb5\_kdc\_rep.enc\_part2 (C member)} 13944 13945\begin{fulllineitems} 13946\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.enc_part2}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{krb5\_enc\_kdc\_rep\_part}}} * \sphinxbfcode{krb5\_kdc\_rep.enc\_part2}} 13947Unencrypted version, if available. 13948 13949\end{fulllineitems} 13950 13951 13952 13953\subsubsection{krb5\_kdc\_req} 13954\label{\detokenize{appdev/refs/types/krb5_kdc_req:krb5-kdc-req-struct}}\label{\detokenize{appdev/refs/types/krb5_kdc_req:krb5-kdc-req}}\label{\detokenize{appdev/refs/types/krb5_kdc_req::doc}}\index{krb5\_kdc\_req (C type)} 13955 13956\begin{fulllineitems} 13957\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}}\pysigline{\sphinxbfcode{krb5\_kdc\_req}} 13958\end{fulllineitems} 13959 13960 13961C representation of KDC-REQ protocol message, including KDC-REQ-BODY. 13962 13963 13964\paragraph{Declaration} 13965\label{\detokenize{appdev/refs/types/krb5_kdc_req:declaration}} 13966typedef struct \_krb5\_kdc\_req krb5\_kdc\_req 13967 13968 13969\paragraph{Members} 13970\label{\detokenize{appdev/refs/types/krb5_kdc_req:members}}\index{krb5\_kdc\_req.magic (C member)} 13971 13972\begin{fulllineitems} 13973\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_kdc\_req.magic}} 13974\end{fulllineitems} 13975 13976\index{krb5\_kdc\_req.msg\_type (C member)} 13977 13978\begin{fulllineitems} 13979\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.msg_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}]{\sphinxcrossref{krb5\_msgtype}}} \sphinxbfcode{krb5\_kdc\_req.msg\_type}} 13980KRB5\_AS\_REQ or KRB5\_TGS\_REQ. 13981 13982\end{fulllineitems} 13983 13984\index{krb5\_kdc\_req.padata (C member)} 13985 13986\begin{fulllineitems} 13987\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.padata}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{krb5\_pa\_data}}} ** \sphinxbfcode{krb5\_kdc\_req.padata}} 13988Preauthentication data. 13989 13990\end{fulllineitems} 13991 13992\index{krb5\_kdc\_req.kdc\_options (C member)} 13993 13994\begin{fulllineitems} 13995\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.kdc_options}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_kdc\_req.kdc\_options}} 13996Requested options. 13997 13998\end{fulllineitems} 13999 14000\index{krb5\_kdc\_req.client (C member)} 14001 14002\begin{fulllineitems} 14003\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.client}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_kdc\_req.client}} 14004Client principal and realm. 14005 14006\end{fulllineitems} 14007 14008\index{krb5\_kdc\_req.server (C member)} 14009 14010\begin{fulllineitems} 14011\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.server}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_kdc\_req.server}} 14012Server principal and realm. 14013 14014\end{fulllineitems} 14015 14016\index{krb5\_kdc\_req.from (C member)} 14017 14018\begin{fulllineitems} 14019\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.from}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_kdc\_req.from}} 14020Requested start time. 14021 14022\end{fulllineitems} 14023 14024\index{krb5\_kdc\_req.till (C member)} 14025 14026\begin{fulllineitems} 14027\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.till}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_kdc\_req.till}} 14028Requested end time. 14029 14030\end{fulllineitems} 14031 14032\index{krb5\_kdc\_req.rtime (C member)} 14033 14034\begin{fulllineitems} 14035\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.rtime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_kdc\_req.rtime}} 14036Requested renewable end time. 14037 14038\end{fulllineitems} 14039 14040\index{krb5\_kdc\_req.nonce (C member)} 14041 14042\begin{fulllineitems} 14043\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.nonce}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_kdc\_req.nonce}} 14044Nonce to match request and response. 14045 14046\end{fulllineitems} 14047 14048\index{krb5\_kdc\_req.nktypes (C member)} 14049 14050\begin{fulllineitems} 14051\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.nktypes}}\pysigline{int \sphinxbfcode{krb5\_kdc\_req.nktypes}} 14052Number of enctypes. 14053 14054\end{fulllineitems} 14055 14056\index{krb5\_kdc\_req.ktype (C member)} 14057 14058\begin{fulllineitems} 14059\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.ktype}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} * \sphinxbfcode{krb5\_kdc\_req.ktype}} 14060Requested enctypes. 14061 14062\end{fulllineitems} 14063 14064\index{krb5\_kdc\_req.addresses (C member)} 14065 14066\begin{fulllineitems} 14067\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.addresses}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{krb5\_address}}} ** \sphinxbfcode{krb5\_kdc\_req.addresses}} 14068Requested addresses (optional) 14069 14070\end{fulllineitems} 14071 14072\index{krb5\_kdc\_req.authorization\_data (C member)} 14073 14074\begin{fulllineitems} 14075\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.authorization_data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} \sphinxbfcode{krb5\_kdc\_req.authorization\_data}} 14076Encrypted authz data (optional) 14077 14078\end{fulllineitems} 14079 14080\index{krb5\_kdc\_req.unenc\_authdata (C member)} 14081 14082\begin{fulllineitems} 14083\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.unenc_authdata}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{krb5\_authdata}}} ** \sphinxbfcode{krb5\_kdc\_req.unenc\_authdata}} 14084Unencrypted authz data. 14085 14086\end{fulllineitems} 14087 14088\index{krb5\_kdc\_req.second\_ticket (C member)} 14089 14090\begin{fulllineitems} 14091\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.second_ticket}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} ** \sphinxbfcode{krb5\_kdc\_req.second\_ticket}} 14092Second ticket array (optional) 14093 14094\end{fulllineitems} 14095 14096 14097 14098\subsubsection{krb5\_keyblock} 14099\label{\detokenize{appdev/refs/types/krb5_keyblock:krb5-keyblock}}\label{\detokenize{appdev/refs/types/krb5_keyblock::doc}}\label{\detokenize{appdev/refs/types/krb5_keyblock:krb5-keyblock-struct}}\index{krb5\_keyblock (C type)} 14100 14101\begin{fulllineitems} 14102\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}}\pysigline{\sphinxbfcode{krb5\_keyblock}} 14103\end{fulllineitems} 14104 14105 14106Exposed contents of a key. 14107 14108 14109\paragraph{Declaration} 14110\label{\detokenize{appdev/refs/types/krb5_keyblock:declaration}} 14111typedef struct \_krb5\_keyblock krb5\_keyblock 14112 14113 14114\paragraph{Members} 14115\label{\detokenize{appdev/refs/types/krb5_keyblock:members}}\index{krb5\_keyblock.magic (C member)} 14116 14117\begin{fulllineitems} 14118\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_keyblock.magic}} 14119\end{fulllineitems} 14120 14121\index{krb5\_keyblock.enctype (C member)} 14122 14123\begin{fulllineitems} 14124\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.enctype}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{krb5\_enctype}}} \sphinxbfcode{krb5\_keyblock.enctype}} 14125\end{fulllineitems} 14126 14127\index{krb5\_keyblock.length (C member)} 14128 14129\begin{fulllineitems} 14130\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_keyblock.length}} 14131\end{fulllineitems} 14132 14133\index{krb5\_keyblock.contents (C member)} 14134 14135\begin{fulllineitems} 14136\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.contents}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} * \sphinxbfcode{krb5\_keyblock.contents}} 14137\end{fulllineitems} 14138 14139 14140 14141\subsubsection{krb5\_keytab\_entry} 14142\label{\detokenize{appdev/refs/types/krb5_keytab_entry:krb5-keytab-entry}}\label{\detokenize{appdev/refs/types/krb5_keytab_entry:krb5-keytab-entry-struct}}\label{\detokenize{appdev/refs/types/krb5_keytab_entry::doc}}\index{krb5\_keytab\_entry (C type)} 14143 14144\begin{fulllineitems} 14145\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}}\pysigline{\sphinxbfcode{krb5\_keytab\_entry}} 14146\end{fulllineitems} 14147 14148 14149A key table entry. 14150 14151 14152\paragraph{Declaration} 14153\label{\detokenize{appdev/refs/types/krb5_keytab_entry:declaration}} 14154typedef struct krb5\_keytab\_entry\_st krb5\_keytab\_entry 14155 14156 14157\paragraph{Members} 14158\label{\detokenize{appdev/refs/types/krb5_keytab_entry:members}}\index{krb5\_keytab\_entry.magic (C member)} 14159 14160\begin{fulllineitems} 14161\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_keytab\_entry.magic}} 14162\end{fulllineitems} 14163 14164\index{krb5\_keytab\_entry.principal (C member)} 14165 14166\begin{fulllineitems} 14167\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.principal}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_keytab\_entry.principal}} 14168Principal of this key. 14169 14170\end{fulllineitems} 14171 14172\index{krb5\_keytab\_entry.timestamp (C member)} 14173 14174\begin{fulllineitems} 14175\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.timestamp}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_keytab\_entry.timestamp}} 14176Time entry written to keytable. 14177 14178\end{fulllineitems} 14179 14180\index{krb5\_keytab\_entry.vno (C member)} 14181 14182\begin{fulllineitems} 14183\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.vno}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{krb5\_kvno}}} \sphinxbfcode{krb5\_keytab\_entry.vno}} 14184Key version number. 14185 14186\end{fulllineitems} 14187 14188\index{krb5\_keytab\_entry.key (C member)} 14189 14190\begin{fulllineitems} 14191\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.key}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{krb5\_keyblock}}} \sphinxbfcode{krb5\_keytab\_entry.key}} 14192The secret key. 14193 14194\end{fulllineitems} 14195 14196 14197 14198\subsubsection{krb5\_keyusage} 14199\label{\detokenize{appdev/refs/types/krb5_keyusage:krb5-keyusage}}\label{\detokenize{appdev/refs/types/krb5_keyusage::doc}}\label{\detokenize{appdev/refs/types/krb5_keyusage:krb5-keyusage-struct}}\index{krb5\_keyusage (C type)} 14200 14201\begin{fulllineitems} 14202\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}}\pysigline{\sphinxbfcode{krb5\_keyusage}} 14203\end{fulllineitems} 14204 14205 14206 14207\paragraph{Declaration} 14208\label{\detokenize{appdev/refs/types/krb5_keyusage:declaration}} 14209typedef krb5\_int32 krb5\_keyusage 14210 14211 14212\subsubsection{krb5\_kt\_cursor} 14213\label{\detokenize{appdev/refs/types/krb5_kt_cursor:krb5-kt-cursor-struct}}\label{\detokenize{appdev/refs/types/krb5_kt_cursor::doc}}\label{\detokenize{appdev/refs/types/krb5_kt_cursor:krb5-kt-cursor}}\index{krb5\_kt\_cursor (C type)} 14214 14215\begin{fulllineitems} 14216\phantomsection\label{\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}}\pysigline{\sphinxbfcode{krb5\_kt\_cursor}} 14217\end{fulllineitems} 14218 14219 14220 14221\paragraph{Declaration} 14222\label{\detokenize{appdev/refs/types/krb5_kt_cursor:declaration}} 14223typedef krb5\_pointer krb5\_kt\_cursor 14224 14225 14226\subsubsection{krb5\_kvno} 14227\label{\detokenize{appdev/refs/types/krb5_kvno:krb5-kvno}}\label{\detokenize{appdev/refs/types/krb5_kvno::doc}}\label{\detokenize{appdev/refs/types/krb5_kvno:krb5-kvno-struct}}\index{krb5\_kvno (C type)} 14228 14229\begin{fulllineitems} 14230\phantomsection\label{\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}}\pysigline{\sphinxbfcode{krb5\_kvno}} 14231\end{fulllineitems} 14232 14233 14234 14235\paragraph{Declaration} 14236\label{\detokenize{appdev/refs/types/krb5_kvno:declaration}} 14237typedef unsigned int krb5\_kvno 14238 14239 14240\subsubsection{krb5\_last\_req\_entry} 14241\label{\detokenize{appdev/refs/types/krb5_last_req_entry:krb5-last-req-entry}}\label{\detokenize{appdev/refs/types/krb5_last_req_entry::doc}}\label{\detokenize{appdev/refs/types/krb5_last_req_entry:krb5-last-req-entry-struct}}\index{krb5\_last\_req\_entry (C type)} 14242 14243\begin{fulllineitems} 14244\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}}\pysigline{\sphinxbfcode{krb5\_last\_req\_entry}} 14245\end{fulllineitems} 14246 14247 14248Last request entry. 14249 14250 14251\paragraph{Declaration} 14252\label{\detokenize{appdev/refs/types/krb5_last_req_entry:declaration}} 14253typedef struct \_krb5\_last\_req\_entry krb5\_last\_req\_entry 14254 14255 14256\paragraph{Members} 14257\label{\detokenize{appdev/refs/types/krb5_last_req_entry:members}}\index{krb5\_last\_req\_entry.magic (C member)} 14258 14259\begin{fulllineitems} 14260\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_last\_req\_entry.magic}} 14261\end{fulllineitems} 14262 14263\index{krb5\_last\_req\_entry.lr\_type (C member)} 14264 14265\begin{fulllineitems} 14266\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry.lr_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_last\_req\_entry.lr\_type}} 14267LR type. 14268 14269\end{fulllineitems} 14270 14271\index{krb5\_last\_req\_entry.value (C member)} 14272 14273\begin{fulllineitems} 14274\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry.value}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_last\_req\_entry.value}} 14275Timestamp. 14276 14277\end{fulllineitems} 14278 14279 14280 14281\subsubsection{krb5\_magic} 14282\label{\detokenize{appdev/refs/types/krb5_magic:krb5-magic}}\label{\detokenize{appdev/refs/types/krb5_magic::doc}}\label{\detokenize{appdev/refs/types/krb5_magic:krb5-magic-struct}}\index{krb5\_magic (C type)} 14283 14284\begin{fulllineitems} 14285\phantomsection\label{\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}}\pysigline{\sphinxbfcode{krb5\_magic}} 14286\end{fulllineitems} 14287 14288 14289 14290\paragraph{Declaration} 14291\label{\detokenize{appdev/refs/types/krb5_magic:declaration}} 14292typedef krb5\_error\_code krb5\_magic 14293 14294 14295\subsubsection{krb5\_mk\_req\_checksum\_func} 14296\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:krb5-mk-req-checksum-func-struct}}\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func::doc}}\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:krb5-mk-req-checksum-func}}\index{krb5\_mk\_req\_checksum\_func (C type)} 14297 14298\begin{fulllineitems} 14299\phantomsection\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:c.krb5_mk_req_checksum_func}}\pysigline{\sphinxbfcode{krb5\_mk\_req\_checksum\_func}} 14300\end{fulllineitems} 14301 14302 14303Type of function used as a callback to generate checksum data for mk\_req. 14304 14305 14306\paragraph{Declaration} 14307\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:declaration}} 14308typedef krb5\_error\_code( * krb5\_mk\_req\_checksum\_func) (krb5\_context, krb5\_auth\_context, void *, krb5\_data **) 14309 14310 14311\subsubsection{krb5\_msgtype} 14312\label{\detokenize{appdev/refs/types/krb5_msgtype:krb5-msgtype}}\label{\detokenize{appdev/refs/types/krb5_msgtype::doc}}\label{\detokenize{appdev/refs/types/krb5_msgtype:krb5-msgtype-struct}}\index{krb5\_msgtype (C type)} 14313 14314\begin{fulllineitems} 14315\phantomsection\label{\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}}\pysigline{\sphinxbfcode{krb5\_msgtype}} 14316\end{fulllineitems} 14317 14318 14319 14320\paragraph{Declaration} 14321\label{\detokenize{appdev/refs/types/krb5_msgtype:declaration}} 14322typedef unsigned int krb5\_msgtype 14323 14324 14325\subsubsection{krb5\_octet} 14326\label{\detokenize{appdev/refs/types/krb5_octet:krb5-octet-struct}}\label{\detokenize{appdev/refs/types/krb5_octet:krb5-octet}}\label{\detokenize{appdev/refs/types/krb5_octet::doc}}\index{krb5\_octet (C type)} 14327 14328\begin{fulllineitems} 14329\phantomsection\label{\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}}\pysigline{\sphinxbfcode{krb5\_octet}} 14330\end{fulllineitems} 14331 14332 14333 14334\paragraph{Declaration} 14335\label{\detokenize{appdev/refs/types/krb5_octet:declaration}} 14336typedef uint8\_t krb5\_octet 14337 14338 14339\subsubsection{krb5\_pa\_pac\_req} 14340\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:krb5-pa-pac-req-struct}}\label{\detokenize{appdev/refs/types/krb5_pa_pac_req::doc}}\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:krb5-pa-pac-req}}\index{krb5\_pa\_pac\_req (C type)} 14341 14342\begin{fulllineitems} 14343\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:c.krb5_pa_pac_req}}\pysigline{\sphinxbfcode{krb5\_pa\_pac\_req}} 14344\end{fulllineitems} 14345 14346 14347 14348\paragraph{Declaration} 14349\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:declaration}} 14350typedef struct \_krb5\_pa\_pac\_req krb5\_pa\_pac\_req 14351 14352 14353\paragraph{Members} 14354\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:members}}\index{krb5\_pa\_pac\_req.include\_pac (C member)} 14355 14356\begin{fulllineitems} 14357\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:c.krb5_pa_pac_req.include_pac}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{krb5\_boolean}}} \sphinxbfcode{krb5\_pa\_pac\_req.include\_pac}} 14358TRUE if a PAC should be included in TGS-REP. 14359 14360\end{fulllineitems} 14361 14362 14363 14364\subsubsection{krb5\_pa\_server\_referral\_data} 14365\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:krb5-pa-server-referral-data-struct}}\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data::doc}}\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:krb5-pa-server-referral-data}}\index{krb5\_pa\_server\_referral\_data (C type)} 14366 14367\begin{fulllineitems} 14368\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}}\pysigline{\sphinxbfcode{krb5\_pa\_server\_referral\_data}} 14369\end{fulllineitems} 14370 14371 14372 14373\paragraph{Declaration} 14374\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:declaration}} 14375typedef struct \_krb5\_pa\_server\_referral\_data krb5\_pa\_server\_referral\_data 14376 14377 14378\paragraph{Members} 14379\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:members}}\index{krb5\_pa\_server\_referral\_data.referred\_realm (C member)} 14380 14381\begin{fulllineitems} 14382\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.referred_realm}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_pa\_server\_referral\_data.referred\_realm}} 14383\end{fulllineitems} 14384 14385\index{krb5\_pa\_server\_referral\_data.true\_principal\_name (C member)} 14386 14387\begin{fulllineitems} 14388\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.true_principal_name}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_pa\_server\_referral\_data.true\_principal\_name}} 14389\end{fulllineitems} 14390 14391\index{krb5\_pa\_server\_referral\_data.requested\_principal\_name (C member)} 14392 14393\begin{fulllineitems} 14394\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.requested_principal_name}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_pa\_server\_referral\_data.requested\_principal\_name}} 14395\end{fulllineitems} 14396 14397\index{krb5\_pa\_server\_referral\_data.referral\_valid\_until (C member)} 14398 14399\begin{fulllineitems} 14400\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.referral_valid_until}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_pa\_server\_referral\_data.referral\_valid\_until}} 14401\end{fulllineitems} 14402 14403\index{krb5\_pa\_server\_referral\_data.rep\_cksum (C member)} 14404 14405\begin{fulllineitems} 14406\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.rep_cksum}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{krb5\_checksum}}} \sphinxbfcode{krb5\_pa\_server\_referral\_data.rep\_cksum}} 14407\end{fulllineitems} 14408 14409 14410 14411\subsubsection{krb5\_pa\_svr\_referral\_data} 14412\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:krb5-pa-svr-referral-data}}\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data::doc}}\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:krb5-pa-svr-referral-data-struct}}\index{krb5\_pa\_svr\_referral\_data (C type)} 14413 14414\begin{fulllineitems} 14415\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:c.krb5_pa_svr_referral_data}}\pysigline{\sphinxbfcode{krb5\_pa\_svr\_referral\_data}} 14416\end{fulllineitems} 14417 14418 14419 14420\paragraph{Declaration} 14421\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:declaration}} 14422typedef struct \_krb5\_pa\_svr\_referral\_data krb5\_pa\_svr\_referral\_data 14423 14424 14425\paragraph{Members} 14426\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:members}}\index{krb5\_pa\_svr\_referral\_data.principal (C member)} 14427 14428\begin{fulllineitems} 14429\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:c.krb5_pa_svr_referral_data.principal}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_pa\_svr\_referral\_data.principal}} 14430Referred name, only realm is required. 14431 14432\end{fulllineitems} 14433 14434 14435 14436\subsubsection{krb5\_pa\_data} 14437\label{\detokenize{appdev/refs/types/krb5_pa_data:krb5-pa-data}}\label{\detokenize{appdev/refs/types/krb5_pa_data:krb5-pa-data-struct}}\label{\detokenize{appdev/refs/types/krb5_pa_data::doc}}\index{krb5\_pa\_data (C type)} 14438 14439\begin{fulllineitems} 14440\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}}\pysigline{\sphinxbfcode{krb5\_pa\_data}} 14441\end{fulllineitems} 14442 14443 14444Pre-authentication data. 14445 14446 14447\paragraph{Declaration} 14448\label{\detokenize{appdev/refs/types/krb5_pa_data:declaration}} 14449typedef struct \_krb5\_pa\_data krb5\_pa\_data 14450 14451 14452\paragraph{Members} 14453\label{\detokenize{appdev/refs/types/krb5_pa_data:members}}\index{krb5\_pa\_data.magic (C member)} 14454 14455\begin{fulllineitems} 14456\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_pa\_data.magic}} 14457\end{fulllineitems} 14458 14459\index{krb5\_pa\_data.pa\_type (C member)} 14460 14461\begin{fulllineitems} 14462\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.pa_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{krb5\_preauthtype}}} \sphinxbfcode{krb5\_pa\_data.pa\_type}} 14463Preauthentication data type. 14464 14465\end{fulllineitems} 14466 14467\index{krb5\_pa\_data.length (C member)} 14468 14469\begin{fulllineitems} 14470\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_pa\_data.length}} 14471Length of data. 14472 14473\end{fulllineitems} 14474 14475\index{krb5\_pa\_data.contents (C member)} 14476 14477\begin{fulllineitems} 14478\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.contents}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} * \sphinxbfcode{krb5\_pa\_data.contents}} 14479Data. 14480 14481\end{fulllineitems} 14482 14483 14484 14485\subsubsection{krb5\_pointer} 14486\label{\detokenize{appdev/refs/types/krb5_pointer:krb5-pointer-struct}}\label{\detokenize{appdev/refs/types/krb5_pointer:krb5-pointer}}\label{\detokenize{appdev/refs/types/krb5_pointer::doc}}\index{krb5\_pointer (C type)} 14487 14488\begin{fulllineitems} 14489\phantomsection\label{\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}}\pysigline{\sphinxbfcode{krb5\_pointer}} 14490\end{fulllineitems} 14491 14492 14493 14494\paragraph{Declaration} 14495\label{\detokenize{appdev/refs/types/krb5_pointer:declaration}} 14496typedef void* krb5\_pointer 14497 14498 14499\subsubsection{krb5\_post\_recv\_fn} 14500\label{\detokenize{appdev/refs/types/krb5_post_recv_fn:krb5-post-recv-fn}}\label{\detokenize{appdev/refs/types/krb5_post_recv_fn:krb5-post-recv-fn-struct}}\label{\detokenize{appdev/refs/types/krb5_post_recv_fn::doc}}\index{krb5\_post\_recv\_fn (C type)} 14501 14502\begin{fulllineitems} 14503\phantomsection\label{\detokenize{appdev/refs/types/krb5_post_recv_fn:c.krb5_post_recv_fn}}\pysigline{\sphinxbfcode{krb5\_post\_recv\_fn}} 14504\end{fulllineitems} 14505 14506 14507Hook function for inspecting or overriding KDC replies. 14508 14509If \sphinxstyleemphasis{code} is non-zero, KDC communication failed and \sphinxstyleemphasis{reply} should be ignored. The hook function may return \sphinxstyleemphasis{code} or a different error code, or may synthesize a reply by setting \sphinxstyleemphasis{new\_reply\_out} and return successfully. 14510The hook function should use {\hyperref[\detokenize{appdev/refs/api/krb5_copy_data:c.krb5_copy_data}]{\sphinxcrossref{\sphinxcode{krb5\_copy\_data()}}}} to construct the value for \sphinxstyleemphasis{new\_reply\_out} , to ensure that it can be freed correctly by the library. 14511 14512 14513\paragraph{Declaration} 14514\label{\detokenize{appdev/refs/types/krb5_post_recv_fn:declaration}} 14515typedef krb5\_error\_code( * krb5\_post\_recv\_fn) (krb5\_context context, void *data, krb5\_error\_code code, const krb5\_data *realm, const krb5\_data *message, const krb5\_data *reply, krb5\_data **new\_reply\_out) 14516 14517 14518\subsubsection{krb5\_pre\_send\_fn} 14519\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:krb5-pre-send-fn-struct}}\label{\detokenize{appdev/refs/types/krb5_pre_send_fn::doc}}\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:krb5-pre-send-fn}}\index{krb5\_pre\_send\_fn (C type)} 14520 14521\begin{fulllineitems} 14522\phantomsection\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:c.krb5_pre_send_fn}}\pysigline{\sphinxbfcode{krb5\_pre\_send\_fn}} 14523\end{fulllineitems} 14524 14525 14526Hook function for inspecting or modifying messages sent to KDCs. 14527 14528If the hook function sets \sphinxstyleemphasis{reply\_out} , \sphinxstyleemphasis{message} will not be sent to the KDC, and the given reply will used instead. 14529If the hook function sets \sphinxstyleemphasis{new\_message\_out} , the given message will be sent to the KDC in place of \sphinxstyleemphasis{message} . 14530If the hook function returns successfully without setting either output, \sphinxstyleemphasis{message} will be sent to the KDC normally. 14531The hook function should use {\hyperref[\detokenize{appdev/refs/api/krb5_copy_data:c.krb5_copy_data}]{\sphinxcrossref{\sphinxcode{krb5\_copy\_data()}}}} to construct the value for \sphinxstyleemphasis{new\_message\_out} or \sphinxstyleemphasis{reply\_out} , to ensure that it can be freed correctly by the library. 14532 14533 14534\paragraph{Declaration} 14535\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:declaration}} 14536typedef krb5\_error\_code( * krb5\_pre\_send\_fn) (krb5\_context context, void *data, const krb5\_data *realm, const krb5\_data *message, krb5\_data **new\_message\_out, krb5\_data **new\_reply\_out) 14537 14538 14539\subsubsection{krb5\_preauthtype} 14540\label{\detokenize{appdev/refs/types/krb5_preauthtype::doc}}\label{\detokenize{appdev/refs/types/krb5_preauthtype:krb5-preauthtype}}\label{\detokenize{appdev/refs/types/krb5_preauthtype:krb5-preauthtype-struct}}\index{krb5\_preauthtype (C type)} 14541 14542\begin{fulllineitems} 14543\phantomsection\label{\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}}\pysigline{\sphinxbfcode{krb5\_preauthtype}} 14544\end{fulllineitems} 14545 14546 14547 14548\paragraph{Declaration} 14549\label{\detokenize{appdev/refs/types/krb5_preauthtype:declaration}} 14550typedef krb5\_int32 krb5\_preauthtype 14551 14552 14553\subsubsection{krb5\_principal} 14554\label{\detokenize{appdev/refs/types/krb5_principal:krb5-principal-struct}}\label{\detokenize{appdev/refs/types/krb5_principal:krb5-principal}}\label{\detokenize{appdev/refs/types/krb5_principal::doc}}\index{krb5\_principal (C type)} 14555 14556\begin{fulllineitems} 14557\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}}\pysigline{\sphinxbfcode{krb5\_principal}} 14558\end{fulllineitems} 14559 14560 14561 14562\paragraph{Declaration} 14563\label{\detokenize{appdev/refs/types/krb5_principal:declaration}} 14564typedef krb5\_principal\_data* krb5\_principal 14565 14566 14567\paragraph{Members} 14568\label{\detokenize{appdev/refs/types/krb5_principal:members}}\index{krb5\_principal.magic (C member)} 14569 14570\begin{fulllineitems} 14571\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_principal.magic}} 14572\end{fulllineitems} 14573 14574\index{krb5\_principal.realm (C member)} 14575 14576\begin{fulllineitems} 14577\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.realm}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_principal.realm}} 14578\end{fulllineitems} 14579 14580\index{krb5\_principal.data (C member)} 14581 14582\begin{fulllineitems} 14583\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_principal.data}} 14584An array of strings. 14585 14586\end{fulllineitems} 14587 14588\index{krb5\_principal.length (C member)} 14589 14590\begin{fulllineitems} 14591\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.length}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_principal.length}} 14592\end{fulllineitems} 14593 14594\index{krb5\_principal.type (C member)} 14595 14596\begin{fulllineitems} 14597\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_principal.type}} 14598\end{fulllineitems} 14599 14600 14601 14602\subsubsection{krb5\_principal\_data} 14603\label{\detokenize{appdev/refs/types/krb5_principal_data:krb5-principal-data}}\label{\detokenize{appdev/refs/types/krb5_principal_data::doc}}\label{\detokenize{appdev/refs/types/krb5_principal_data:krb5-principal-data-struct}}\index{krb5\_principal\_data (C type)} 14604 14605\begin{fulllineitems} 14606\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}}\pysigline{\sphinxbfcode{krb5\_principal\_data}} 14607\end{fulllineitems} 14608 14609 14610 14611\paragraph{Declaration} 14612\label{\detokenize{appdev/refs/types/krb5_principal_data:declaration}} 14613typedef struct krb5\_principal\_data krb5\_principal\_data 14614 14615 14616\paragraph{Members} 14617\label{\detokenize{appdev/refs/types/krb5_principal_data:members}}\index{krb5\_principal\_data.magic (C member)} 14618 14619\begin{fulllineitems} 14620\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_principal\_data.magic}} 14621\end{fulllineitems} 14622 14623\index{krb5\_principal\_data.realm (C member)} 14624 14625\begin{fulllineitems} 14626\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.realm}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_principal\_data.realm}} 14627\end{fulllineitems} 14628 14629\index{krb5\_principal\_data.data (C member)} 14630 14631\begin{fulllineitems} 14632\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_principal\_data.data}} 14633An array of strings. 14634 14635\end{fulllineitems} 14636 14637\index{krb5\_principal\_data.length (C member)} 14638 14639\begin{fulllineitems} 14640\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.length}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_principal\_data.length}} 14641\end{fulllineitems} 14642 14643\index{krb5\_principal\_data.type (C member)} 14644 14645\begin{fulllineitems} 14646\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_principal\_data.type}} 14647\end{fulllineitems} 14648 14649 14650 14651\subsubsection{krb5\_prompt} 14652\label{\detokenize{appdev/refs/types/krb5_prompt:krb5-prompt}}\label{\detokenize{appdev/refs/types/krb5_prompt::doc}}\label{\detokenize{appdev/refs/types/krb5_prompt:krb5-prompt-struct}}\index{krb5\_prompt (C type)} 14653 14654\begin{fulllineitems} 14655\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}}\pysigline{\sphinxbfcode{krb5\_prompt}} 14656\end{fulllineitems} 14657 14658 14659Text for prompt used in prompter callback function. 14660 14661 14662\paragraph{Declaration} 14663\label{\detokenize{appdev/refs/types/krb5_prompt:declaration}} 14664typedef struct \_krb5\_prompt krb5\_prompt 14665 14666 14667\paragraph{Members} 14668\label{\detokenize{appdev/refs/types/krb5_prompt:members}}\index{krb5\_prompt.prompt (C member)} 14669 14670\begin{fulllineitems} 14671\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt.prompt}}\pysigline{char * \sphinxbfcode{krb5\_prompt.prompt}} 14672The prompt to show to the user. 14673 14674\end{fulllineitems} 14675 14676\index{krb5\_prompt.hidden (C member)} 14677 14678\begin{fulllineitems} 14679\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt.hidden}}\pysigline{int \sphinxbfcode{krb5\_prompt.hidden}} 14680Boolean; informative prompt or hidden (e.g. 14681PIN) 14682 14683\end{fulllineitems} 14684 14685\index{krb5\_prompt.reply (C member)} 14686 14687\begin{fulllineitems} 14688\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt.reply}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{krb5\_prompt.reply}} 14689Must be allocated before call to prompt routine. 14690 14691\end{fulllineitems} 14692 14693 14694 14695\subsubsection{krb5\_prompt\_type} 14696\label{\detokenize{appdev/refs/types/krb5_prompt_type:krb5-prompt-type-struct}}\label{\detokenize{appdev/refs/types/krb5_prompt_type:krb5-prompt-type}}\label{\detokenize{appdev/refs/types/krb5_prompt_type::doc}}\index{krb5\_prompt\_type (C type)} 14697 14698\begin{fulllineitems} 14699\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt_type:c.krb5_prompt_type}}\pysigline{\sphinxbfcode{krb5\_prompt\_type}} 14700\end{fulllineitems} 14701 14702 14703 14704\paragraph{Declaration} 14705\label{\detokenize{appdev/refs/types/krb5_prompt_type:declaration}} 14706typedef krb5\_int32 krb5\_prompt\_type 14707 14708 14709\subsubsection{krb5\_prompter\_fct} 14710\label{\detokenize{appdev/refs/types/krb5_prompter_fct:krb5-prompter-fct-struct}}\label{\detokenize{appdev/refs/types/krb5_prompter_fct:krb5-prompter-fct}}\label{\detokenize{appdev/refs/types/krb5_prompter_fct::doc}}\index{krb5\_prompter\_fct (C type)} 14711 14712\begin{fulllineitems} 14713\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompter_fct:c.krb5_prompter_fct}}\pysigline{\sphinxbfcode{krb5\_prompter\_fct}} 14714\end{fulllineitems} 14715 14716 14717Pointer to a prompter callback function. 14718 14719 14720\paragraph{Declaration} 14721\label{\detokenize{appdev/refs/types/krb5_prompter_fct:declaration}} 14722typedef krb5\_error\_code( * krb5\_prompter\_fct) (krb5\_context context, void *data, const char *name, const char *banner, int num\_prompts, krb5\_prompt prompts{[}{]}) 14723 14724 14725\subsubsection{krb5\_pwd\_data} 14726\label{\detokenize{appdev/refs/types/krb5_pwd_data:krb5-pwd-data}}\label{\detokenize{appdev/refs/types/krb5_pwd_data::doc}}\label{\detokenize{appdev/refs/types/krb5_pwd_data:krb5-pwd-data-struct}}\index{krb5\_pwd\_data (C type)} 14727 14728\begin{fulllineitems} 14729\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data}}\pysigline{\sphinxbfcode{krb5\_pwd\_data}} 14730\end{fulllineitems} 14731 14732 14733 14734\paragraph{Declaration} 14735\label{\detokenize{appdev/refs/types/krb5_pwd_data:declaration}} 14736typedef struct \_krb5\_pwd\_data krb5\_pwd\_data 14737 14738 14739\paragraph{Members} 14740\label{\detokenize{appdev/refs/types/krb5_pwd_data:members}}\index{krb5\_pwd\_data.magic (C member)} 14741 14742\begin{fulllineitems} 14743\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_pwd\_data.magic}} 14744\end{fulllineitems} 14745 14746\index{krb5\_pwd\_data.sequence\_count (C member)} 14747 14748\begin{fulllineitems} 14749\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data.sequence_count}}\pysigline{int \sphinxbfcode{krb5\_pwd\_data.sequence\_count}} 14750\end{fulllineitems} 14751 14752\index{krb5\_pwd\_data.element (C member)} 14753 14754\begin{fulllineitems} 14755\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data.element}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}]{\sphinxcrossref{passwd\_phrase\_element}}} ** \sphinxbfcode{krb5\_pwd\_data.element}} 14756\end{fulllineitems} 14757 14758 14759 14760\subsubsection{krb5\_responder\_context} 14761\label{\detokenize{appdev/refs/types/krb5_responder_context:krb5-responder-context-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_context::doc}}\label{\detokenize{appdev/refs/types/krb5_responder_context:krb5-responder-context}}\index{krb5\_responder\_context (C type)} 14762 14763\begin{fulllineitems} 14764\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}}\pysigline{\sphinxbfcode{krb5\_responder\_context}} 14765\end{fulllineitems} 14766 14767 14768A container for a set of preauthentication questions and answers. 14769 14770A responder context is supplied by the krb5 authentication system to a {\hyperref[\detokenize{appdev/refs/types/krb5_responder_fn:c.krb5_responder_fn}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_fn}}}} callback. It contains a list of questions and can receive answers. Questions contained in a responder context can be listed using {\hyperref[\detokenize{appdev/refs/api/krb5_responder_list_questions:c.krb5_responder_list_questions}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_list\_questions()}}}} , retrieved using {\hyperref[\detokenize{appdev/refs/api/krb5_responder_get_challenge:c.krb5_responder_get_challenge}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_get\_challenge()}}}} , or answered using {\hyperref[\detokenize{appdev/refs/api/krb5_responder_set_answer:c.krb5_responder_set_answer}]{\sphinxcrossref{\sphinxcode{krb5\_responder\_set\_answer()}}}} . The form of a question’s challenge and answer depend on the question name. 14771 14772 14773\paragraph{Declaration} 14774\label{\detokenize{appdev/refs/types/krb5_responder_context:declaration}} 14775typedef struct krb5\_responder\_context\_st* krb5\_responder\_context 14776 14777 14778\subsubsection{krb5\_responder\_fn} 14779\label{\detokenize{appdev/refs/types/krb5_responder_fn:krb5-responder-fn-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_fn::doc}}\label{\detokenize{appdev/refs/types/krb5_responder_fn:krb5-responder-fn}}\index{krb5\_responder\_fn (C type)} 14780 14781\begin{fulllineitems} 14782\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_fn:c.krb5_responder_fn}}\pysigline{\sphinxbfcode{krb5\_responder\_fn}} 14783\end{fulllineitems} 14784 14785 14786Responder function for an initial credential exchange. 14787 14788If a required question is unanswered, the prompter may be called. 14789 14790 14791\paragraph{Declaration} 14792\label{\detokenize{appdev/refs/types/krb5_responder_fn:declaration}} 14793typedef krb5\_error\_code( * krb5\_responder\_fn) (krb5\_context ctx, void *data, krb5\_responder\_context rctx) 14794 14795 14796\subsubsection{krb5\_responder\_otp\_challenge} 14797\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:krb5-responder-otp-challenge}}\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:krb5-responder-otp-challenge-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge::doc}}\index{krb5\_responder\_otp\_challenge (C type)} 14798 14799\begin{fulllineitems} 14800\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}}\pysigline{\sphinxbfcode{krb5\_responder\_otp\_challenge}} 14801\end{fulllineitems} 14802 14803 14804 14805\paragraph{Declaration} 14806\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:declaration}} 14807typedef struct \_krb5\_responder\_otp\_challenge krb5\_responder\_otp\_challenge 14808 14809 14810\paragraph{Members} 14811\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:members}}\index{krb5\_responder\_otp\_challenge.service (C member)} 14812 14813\begin{fulllineitems} 14814\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge.service}}\pysigline{char * \sphinxbfcode{krb5\_responder\_otp\_challenge.service}} 14815\end{fulllineitems} 14816 14817\index{krb5\_responder\_otp\_challenge.tokeninfo (C member)} 14818 14819\begin{fulllineitems} 14820\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge.tokeninfo}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{krb5\_responder\_otp\_tokeninfo}}} ** \sphinxbfcode{krb5\_responder\_otp\_challenge.tokeninfo}} 14821\end{fulllineitems} 14822 14823 14824 14825\subsubsection{krb5\_responder\_otp\_tokeninfo} 14826\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5-responder-otp-tokeninfo}}\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:krb5-responder-otp-tokeninfo-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo::doc}}\index{krb5\_responder\_otp\_tokeninfo (C type)} 14827 14828\begin{fulllineitems} 14829\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}}\pysigline{\sphinxbfcode{krb5\_responder\_otp\_tokeninfo}} 14830\end{fulllineitems} 14831 14832 14833 14834\paragraph{Declaration} 14835\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:declaration}} 14836typedef struct \_krb5\_responder\_otp\_tokeninfo krb5\_responder\_otp\_tokeninfo 14837 14838 14839\paragraph{Members} 14840\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:members}}\index{krb5\_responder\_otp\_tokeninfo.flags (C member)} 14841 14842\begin{fulllineitems} 14843\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.flags}} 14844\end{fulllineitems} 14845 14846\index{krb5\_responder\_otp\_tokeninfo.format (C member)} 14847 14848\begin{fulllineitems} 14849\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.format}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.format}} 14850\end{fulllineitems} 14851 14852\index{krb5\_responder\_otp\_tokeninfo.length (C member)} 14853 14854\begin{fulllineitems} 14855\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.length}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.length}} 14856\end{fulllineitems} 14857 14858\index{krb5\_responder\_otp\_tokeninfo.vendor (C member)} 14859 14860\begin{fulllineitems} 14861\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.vendor}}\pysigline{char * \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.vendor}} 14862\end{fulllineitems} 14863 14864\index{krb5\_responder\_otp\_tokeninfo.challenge (C member)} 14865 14866\begin{fulllineitems} 14867\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.challenge}}\pysigline{char * \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.challenge}} 14868\end{fulllineitems} 14869 14870\index{krb5\_responder\_otp\_tokeninfo.token\_id (C member)} 14871 14872\begin{fulllineitems} 14873\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.token_id}}\pysigline{char * \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.token\_id}} 14874\end{fulllineitems} 14875 14876\index{krb5\_responder\_otp\_tokeninfo.alg\_id (C member)} 14877 14878\begin{fulllineitems} 14879\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.alg_id}}\pysigline{char * \sphinxbfcode{krb5\_responder\_otp\_tokeninfo.alg\_id}} 14880\end{fulllineitems} 14881 14882 14883 14884\subsubsection{krb5\_responder\_pkinit\_challenge} 14885\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:krb5-responder-pkinit-challenge-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge::doc}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:krb5-responder-pkinit-challenge}}\index{krb5\_responder\_pkinit\_challenge (C type)} 14886 14887\begin{fulllineitems} 14888\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}}\pysigline{\sphinxbfcode{krb5\_responder\_pkinit\_challenge}} 14889\end{fulllineitems} 14890 14891 14892 14893\paragraph{Declaration} 14894\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:declaration}} 14895typedef struct \_krb5\_responder\_pkinit\_challenge krb5\_responder\_pkinit\_challenge 14896 14897 14898\paragraph{Members} 14899\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:members}}\index{krb5\_responder\_pkinit\_challenge.identities (C member)} 14900 14901\begin{fulllineitems} 14902\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge.identities}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity}]{\sphinxcrossref{krb5\_responder\_pkinit\_identity}}} ** \sphinxbfcode{krb5\_responder\_pkinit\_challenge.identities}} 14903\end{fulllineitems} 14904 14905 14906 14907\subsubsection{krb5\_responder\_pkinit\_identity} 14908\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:krb5-responder-pkinit-identity}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity::doc}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:krb5-responder-pkinit-identity-struct}}\index{krb5\_responder\_pkinit\_identity (C type)} 14909 14910\begin{fulllineitems} 14911\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity}}\pysigline{\sphinxbfcode{krb5\_responder\_pkinit\_identity}} 14912\end{fulllineitems} 14913 14914 14915 14916\paragraph{Declaration} 14917\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:declaration}} 14918typedef struct \_krb5\_responder\_pkinit\_identity krb5\_responder\_pkinit\_identity 14919 14920 14921\paragraph{Members} 14922\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:members}}\index{krb5\_responder\_pkinit\_identity.identity (C member)} 14923 14924\begin{fulllineitems} 14925\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity.identity}}\pysigline{char * \sphinxbfcode{krb5\_responder\_pkinit\_identity.identity}} 14926\end{fulllineitems} 14927 14928\index{krb5\_responder\_pkinit\_identity.token\_flags (C member)} 14929 14930\begin{fulllineitems} 14931\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity.token_flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_responder\_pkinit\_identity.token\_flags}} 14932\end{fulllineitems} 14933 14934 14935 14936\subsubsection{krb5\_response} 14937\label{\detokenize{appdev/refs/types/krb5_response::doc}}\label{\detokenize{appdev/refs/types/krb5_response:krb5-response}}\label{\detokenize{appdev/refs/types/krb5_response:krb5-response-struct}}\index{krb5\_response (C type)} 14938 14939\begin{fulllineitems} 14940\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response}}\pysigline{\sphinxbfcode{krb5\_response}} 14941\end{fulllineitems} 14942 14943 14944 14945\paragraph{Declaration} 14946\label{\detokenize{appdev/refs/types/krb5_response:declaration}} 14947typedef struct \_krb5\_response krb5\_response 14948 14949 14950\paragraph{Members} 14951\label{\detokenize{appdev/refs/types/krb5_response:members}}\index{krb5\_response.magic (C member)} 14952 14953\begin{fulllineitems} 14954\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_response.magic}} 14955\end{fulllineitems} 14956 14957\index{krb5\_response.message\_type (C member)} 14958 14959\begin{fulllineitems} 14960\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.message_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} \sphinxbfcode{krb5\_response.message\_type}} 14961\end{fulllineitems} 14962 14963\index{krb5\_response.response (C member)} 14964 14965\begin{fulllineitems} 14966\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.response}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_response.response}} 14967\end{fulllineitems} 14968 14969\index{krb5\_response.expected\_nonce (C member)} 14970 14971\begin{fulllineitems} 14972\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.expected_nonce}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_response.expected\_nonce}} 14973\end{fulllineitems} 14974 14975\index{krb5\_response.request\_time (C member)} 14976 14977\begin{fulllineitems} 14978\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.request_time}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_response.request\_time}} 14979\end{fulllineitems} 14980 14981 14982 14983\subsubsection{krb5\_replay\_data} 14984\label{\detokenize{appdev/refs/types/krb5_replay_data:krb5-replay-data}}\label{\detokenize{appdev/refs/types/krb5_replay_data:krb5-replay-data-struct}}\label{\detokenize{appdev/refs/types/krb5_replay_data::doc}}\index{krb5\_replay\_data (C type)} 14985 14986\begin{fulllineitems} 14987\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}}\pysigline{\sphinxbfcode{krb5\_replay\_data}} 14988\end{fulllineitems} 14989 14990 14991Replay data. 14992 14993Sequence number and timestamp information output by {\hyperref[\detokenize{appdev/refs/api/krb5_rd_priv:c.krb5_rd_priv}]{\sphinxcrossref{\sphinxcode{krb5\_rd\_priv()}}}} and {\hyperref[\detokenize{appdev/refs/api/krb5_rd_safe:c.krb5_rd_safe}]{\sphinxcrossref{\sphinxcode{krb5\_rd\_safe()}}}} . 14994 14995 14996\paragraph{Declaration} 14997\label{\detokenize{appdev/refs/types/krb5_replay_data:declaration}} 14998typedef struct krb5\_replay\_data krb5\_replay\_data 14999 15000 15001\paragraph{Members} 15002\label{\detokenize{appdev/refs/types/krb5_replay_data:members}}\index{krb5\_replay\_data.timestamp (C member)} 15003 15004\begin{fulllineitems} 15005\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data.timestamp}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_replay\_data.timestamp}} 15006Timestamp, seconds portion. 15007 15008\end{fulllineitems} 15009 15010\index{krb5\_replay\_data.usec (C member)} 15011 15012\begin{fulllineitems} 15013\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data.usec}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_replay\_data.usec}} 15014Timestamp, microseconds portion. 15015 15016\end{fulllineitems} 15017 15018\index{krb5\_replay\_data.seq (C member)} 15019 15020\begin{fulllineitems} 15021\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data.seq}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{krb5\_ui\_4}}} \sphinxbfcode{krb5\_replay\_data.seq}} 15022Sequence number. 15023 15024\end{fulllineitems} 15025 15026 15027 15028\subsubsection{krb5\_ticket} 15029\label{\detokenize{appdev/refs/types/krb5_ticket:krb5-ticket}}\label{\detokenize{appdev/refs/types/krb5_ticket::doc}}\label{\detokenize{appdev/refs/types/krb5_ticket:krb5-ticket-struct}}\index{krb5\_ticket (C type)} 15030 15031\begin{fulllineitems} 15032\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}}\pysigline{\sphinxbfcode{krb5\_ticket}} 15033\end{fulllineitems} 15034 15035 15036Ticket structure. 15037 15038The C representation of the ticket message, with a pointer to the C representation of the encrypted part. 15039 15040 15041\paragraph{Declaration} 15042\label{\detokenize{appdev/refs/types/krb5_ticket:declaration}} 15043typedef struct \_krb5\_ticket krb5\_ticket 15044 15045 15046\paragraph{Members} 15047\label{\detokenize{appdev/refs/types/krb5_ticket:members}}\index{krb5\_ticket.magic (C member)} 15048 15049\begin{fulllineitems} 15050\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_ticket.magic}} 15051\end{fulllineitems} 15052 15053\index{krb5\_ticket.server (C member)} 15054 15055\begin{fulllineitems} 15056\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.server}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{krb5\_principal}}} \sphinxbfcode{krb5\_ticket.server}} 15057server name/realm 15058 15059\end{fulllineitems} 15060 15061\index{krb5\_ticket.enc\_part (C member)} 15062 15063\begin{fulllineitems} 15064\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.enc_part}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{krb5\_enc\_data}}} \sphinxbfcode{krb5\_ticket.enc\_part}} 15065encryption type, kvno, encrypted encoding 15066 15067\end{fulllineitems} 15068 15069\index{krb5\_ticket.enc\_part2 (C member)} 15070 15071\begin{fulllineitems} 15072\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.enc_part2}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{krb5\_enc\_tkt\_part}}} * \sphinxbfcode{krb5\_ticket.enc\_part2}} 15073ptr to decrypted version, if available 15074 15075\end{fulllineitems} 15076 15077 15078 15079\subsubsection{krb5\_ticket\_times} 15080\label{\detokenize{appdev/refs/types/krb5_ticket_times:krb5-ticket-times}}\label{\detokenize{appdev/refs/types/krb5_ticket_times:krb5-ticket-times-struct}}\label{\detokenize{appdev/refs/types/krb5_ticket_times::doc}}\index{krb5\_ticket\_times (C type)} 15081 15082\begin{fulllineitems} 15083\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}}\pysigline{\sphinxbfcode{krb5\_ticket\_times}} 15084\end{fulllineitems} 15085 15086 15087Ticket start time, end time, and renewal duration. 15088 15089 15090\paragraph{Declaration} 15091\label{\detokenize{appdev/refs/types/krb5_ticket_times:declaration}} 15092typedef struct \_krb5\_ticket\_times krb5\_ticket\_times 15093 15094 15095\paragraph{Members} 15096\label{\detokenize{appdev/refs/types/krb5_ticket_times:members}}\index{krb5\_ticket\_times.authtime (C member)} 15097 15098\begin{fulllineitems} 15099\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.authtime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_ticket\_times.authtime}} 15100Time at which KDC issued the initial ticket that corresponds to this ticket. 15101 15102\end{fulllineitems} 15103 15104\index{krb5\_ticket\_times.starttime (C member)} 15105 15106\begin{fulllineitems} 15107\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.starttime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_ticket\_times.starttime}} 15108optional in ticket, if not present, use \sphinxstyleemphasis{authtime} 15109 15110\end{fulllineitems} 15111 15112\index{krb5\_ticket\_times.endtime (C member)} 15113 15114\begin{fulllineitems} 15115\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.endtime}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_ticket\_times.endtime}} 15116Ticket expiration time. 15117 15118\end{fulllineitems} 15119 15120\index{krb5\_ticket\_times.renew\_till (C member)} 15121 15122\begin{fulllineitems} 15123\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.renew_till}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{krb5\_timestamp}}} \sphinxbfcode{krb5\_ticket\_times.renew\_till}} 15124Latest time at which renewal of ticket can be valid. 15125 15126\end{fulllineitems} 15127 15128 15129 15130\subsubsection{krb5\_timestamp} 15131\label{\detokenize{appdev/refs/types/krb5_timestamp:krb5-timestamp-struct}}\label{\detokenize{appdev/refs/types/krb5_timestamp::doc}}\label{\detokenize{appdev/refs/types/krb5_timestamp:krb5-timestamp}}\index{krb5\_timestamp (C type)} 15132 15133\begin{fulllineitems} 15134\phantomsection\label{\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}}\pysigline{\sphinxbfcode{krb5\_timestamp}} 15135\end{fulllineitems} 15136 15137 15138Represents a timestamp in seconds since the POSIX epoch. 15139 15140This legacy type is used frequently in the ABI, but cannot represent timestamps after 2038 as a positive number. Code which uses this type should cast values of it to uint32\_t so that negative values are treated as timestamps between 2038 and 2106 on platforms with 64-bit time\_t. 15141 15142 15143\paragraph{Declaration} 15144\label{\detokenize{appdev/refs/types/krb5_timestamp:declaration}} 15145typedef krb5\_int32 krb5\_timestamp 15146 15147 15148\subsubsection{krb5\_tkt\_authent} 15149\label{\detokenize{appdev/refs/types/krb5_tkt_authent:krb5-tkt-authent}}\label{\detokenize{appdev/refs/types/krb5_tkt_authent:krb5-tkt-authent-struct}}\label{\detokenize{appdev/refs/types/krb5_tkt_authent::doc}}\index{krb5\_tkt\_authent (C type)} 15150 15151\begin{fulllineitems} 15152\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent}}\pysigline{\sphinxbfcode{krb5\_tkt\_authent}} 15153\end{fulllineitems} 15154 15155 15156Ticket authentication data. 15157 15158 15159\paragraph{Declaration} 15160\label{\detokenize{appdev/refs/types/krb5_tkt_authent:declaration}} 15161typedef struct \_krb5\_tkt\_authent krb5\_tkt\_authent 15162 15163 15164\paragraph{Members} 15165\label{\detokenize{appdev/refs/types/krb5_tkt_authent:members}}\index{krb5\_tkt\_authent.magic (C member)} 15166 15167\begin{fulllineitems} 15168\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_tkt\_authent.magic}} 15169\end{fulllineitems} 15170 15171\index{krb5\_tkt\_authent.ticket (C member)} 15172 15173\begin{fulllineitems} 15174\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.ticket}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{krb5\_ticket}}} * \sphinxbfcode{krb5\_tkt\_authent.ticket}} 15175\end{fulllineitems} 15176 15177\index{krb5\_tkt\_authent.authenticator (C member)} 15178 15179\begin{fulllineitems} 15180\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.authenticator}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{krb5\_authenticator}}} * \sphinxbfcode{krb5\_tkt\_authent.authenticator}} 15181\end{fulllineitems} 15182 15183\index{krb5\_tkt\_authent.ap\_options (C member)} 15184 15185\begin{fulllineitems} 15186\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.ap_options}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_tkt\_authent.ap\_options}} 15187\end{fulllineitems} 15188 15189 15190 15191\subsubsection{krb5\_trace\_callback} 15192\label{\detokenize{appdev/refs/types/krb5_trace_callback:krb5-trace-callback-struct}}\label{\detokenize{appdev/refs/types/krb5_trace_callback:krb5-trace-callback}}\label{\detokenize{appdev/refs/types/krb5_trace_callback::doc}}\index{krb5\_trace\_callback (C type)} 15193 15194\begin{fulllineitems} 15195\phantomsection\label{\detokenize{appdev/refs/types/krb5_trace_callback:c.krb5_trace_callback}}\pysigline{\sphinxbfcode{krb5\_trace\_callback}} 15196\end{fulllineitems} 15197 15198 15199 15200\paragraph{Declaration} 15201\label{\detokenize{appdev/refs/types/krb5_trace_callback:declaration}} 15202typedef void( * krb5\_trace\_callback) (krb5\_context context, const krb5\_trace\_info *info, void *cb\_data) 15203 15204 15205\subsubsection{krb5\_trace\_info} 15206\label{\detokenize{appdev/refs/types/krb5_trace_info:krb5-trace-info-struct}}\label{\detokenize{appdev/refs/types/krb5_trace_info::doc}}\label{\detokenize{appdev/refs/types/krb5_trace_info:krb5-trace-info}}\index{krb5\_trace\_info (C type)} 15207 15208\begin{fulllineitems} 15209\phantomsection\label{\detokenize{appdev/refs/types/krb5_trace_info:c.krb5_trace_info}}\pysigline{\sphinxbfcode{krb5\_trace\_info}} 15210\end{fulllineitems} 15211 15212 15213A wrapper for passing information to a \sphinxstyleemphasis{krb5\_trace\_callback} . 15214 15215Currently, 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. 15216 15217 15218\paragraph{Declaration} 15219\label{\detokenize{appdev/refs/types/krb5_trace_info:declaration}} 15220typedef struct \_krb5\_trace\_info krb5\_trace\_info 15221 15222 15223\paragraph{Members} 15224\label{\detokenize{appdev/refs/types/krb5_trace_info:members}}\index{krb5\_trace\_info.message (C member)} 15225 15226\begin{fulllineitems} 15227\phantomsection\label{\detokenize{appdev/refs/types/krb5_trace_info:c.krb5_trace_info.message}}\pysigline{const char * \sphinxbfcode{krb5\_trace\_info.message}} 15228\end{fulllineitems} 15229 15230 15231 15232\subsubsection{krb5\_transited} 15233\label{\detokenize{appdev/refs/types/krb5_transited:krb5-transited-struct}}\label{\detokenize{appdev/refs/types/krb5_transited::doc}}\label{\detokenize{appdev/refs/types/krb5_transited:krb5-transited}}\index{krb5\_transited (C type)} 15234 15235\begin{fulllineitems} 15236\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}}\pysigline{\sphinxbfcode{krb5\_transited}} 15237\end{fulllineitems} 15238 15239 15240Structure for transited encoding. 15241 15242 15243\paragraph{Declaration} 15244\label{\detokenize{appdev/refs/types/krb5_transited:declaration}} 15245typedef struct \_krb5\_transited krb5\_transited 15246 15247 15248\paragraph{Members} 15249\label{\detokenize{appdev/refs/types/krb5_transited:members}}\index{krb5\_transited.magic (C member)} 15250 15251\begin{fulllineitems} 15252\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_transited.magic}} 15253\end{fulllineitems} 15254 15255\index{krb5\_transited.tr\_type (C member)} 15256 15257\begin{fulllineitems} 15258\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited.tr_type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} \sphinxbfcode{krb5\_transited.tr\_type}} 15259Transited encoding type. 15260 15261\end{fulllineitems} 15262 15263\index{krb5\_transited.tr\_contents (C member)} 15264 15265\begin{fulllineitems} 15266\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited.tr_contents}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} \sphinxbfcode{krb5\_transited.tr\_contents}} 15267Contents. 15268 15269\end{fulllineitems} 15270 15271 15272 15273\subsubsection{krb5\_typed\_data} 15274\label{\detokenize{appdev/refs/types/krb5_typed_data:krb5-typed-data-struct}}\label{\detokenize{appdev/refs/types/krb5_typed_data::doc}}\label{\detokenize{appdev/refs/types/krb5_typed_data:krb5-typed-data}}\index{krb5\_typed\_data (C type)} 15275 15276\begin{fulllineitems} 15277\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data}}\pysigline{\sphinxbfcode{krb5\_typed\_data}} 15278\end{fulllineitems} 15279 15280 15281 15282\paragraph{Declaration} 15283\label{\detokenize{appdev/refs/types/krb5_typed_data:declaration}} 15284typedef struct \_krb5\_typed\_data krb5\_typed\_data 15285 15286 15287\paragraph{Members} 15288\label{\detokenize{appdev/refs/types/krb5_typed_data:members}}\index{krb5\_typed\_data.magic (C member)} 15289 15290\begin{fulllineitems} 15291\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{krb5\_typed\_data.magic}} 15292\end{fulllineitems} 15293 15294\index{krb5\_typed\_data.type (C member)} 15295 15296\begin{fulllineitems} 15297\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.type}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{krb5\_int32}}} \sphinxbfcode{krb5\_typed\_data.type}} 15298\end{fulllineitems} 15299 15300\index{krb5\_typed\_data.length (C member)} 15301 15302\begin{fulllineitems} 15303\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.length}}\pysigline{unsigned int \sphinxbfcode{krb5\_typed\_data.length}} 15304\end{fulllineitems} 15305 15306\index{krb5\_typed\_data.data (C member)} 15307 15308\begin{fulllineitems} 15309\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.data}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{krb5\_octet}}} * \sphinxbfcode{krb5\_typed\_data.data}} 15310\end{fulllineitems} 15311 15312 15313 15314\subsubsection{krb5\_ui\_2} 15315\label{\detokenize{appdev/refs/types/krb5_ui_2:krb5-ui-2-struct}}\label{\detokenize{appdev/refs/types/krb5_ui_2::doc}}\label{\detokenize{appdev/refs/types/krb5_ui_2:krb5-ui-2}}\index{krb5\_ui\_2 (C type)} 15316 15317\begin{fulllineitems} 15318\phantomsection\label{\detokenize{appdev/refs/types/krb5_ui_2:c.krb5_ui_2}}\pysigline{\sphinxbfcode{krb5\_ui\_2}} 15319\end{fulllineitems} 15320 15321 15322 15323\paragraph{Declaration} 15324\label{\detokenize{appdev/refs/types/krb5_ui_2:declaration}} 15325typedef uint16\_t krb5\_ui\_2 15326 15327 15328\subsubsection{krb5\_ui\_4} 15329\label{\detokenize{appdev/refs/types/krb5_ui_4:krb5-ui-4}}\label{\detokenize{appdev/refs/types/krb5_ui_4:krb5-ui-4-struct}}\label{\detokenize{appdev/refs/types/krb5_ui_4::doc}}\index{krb5\_ui\_4 (C type)} 15330 15331\begin{fulllineitems} 15332\phantomsection\label{\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}}\pysigline{\sphinxbfcode{krb5\_ui\_4}} 15333\end{fulllineitems} 15334 15335 15336 15337\paragraph{Declaration} 15338\label{\detokenize{appdev/refs/types/krb5_ui_4:declaration}} 15339typedef uint32\_t krb5\_ui\_4 15340 15341 15342\subsubsection{krb5\_verify\_init\_creds\_opt} 15343\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:krb5-verify-init-creds-opt-struct}}\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt::doc}}\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:krb5-verify-init-creds-opt}}\index{krb5\_verify\_init\_creds\_opt (C type)} 15344 15345\begin{fulllineitems} 15346\phantomsection\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}}\pysigline{\sphinxbfcode{krb5\_verify\_init\_creds\_opt}} 15347\end{fulllineitems} 15348 15349 15350 15351\paragraph{Declaration} 15352\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:declaration}} 15353typedef struct \_krb5\_verify\_init\_creds\_opt krb5\_verify\_init\_creds\_opt 15354 15355 15356\paragraph{Members} 15357\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:members}}\index{krb5\_verify\_init\_creds\_opt.flags (C member)} 15358 15359\begin{fulllineitems} 15360\phantomsection\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt.flags}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{krb5\_flags}}} \sphinxbfcode{krb5\_verify\_init\_creds\_opt.flags}} 15361\end{fulllineitems} 15362 15363\index{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail (C member)} 15364 15365\begin{fulllineitems} 15366\phantomsection\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt.ap_req_nofail}}\pysigline{int \sphinxbfcode{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail}} 15367boolean 15368 15369\end{fulllineitems} 15370 15371 15372 15373\subsubsection{passwd\_phrase\_element} 15374\label{\detokenize{appdev/refs/types/passwd_phrase_element:passwd-phrase-element-struct}}\label{\detokenize{appdev/refs/types/passwd_phrase_element::doc}}\label{\detokenize{appdev/refs/types/passwd_phrase_element:passwd-phrase-element}}\index{passwd\_phrase\_element (C type)} 15375 15376\begin{fulllineitems} 15377\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}}\pysigline{\sphinxbfcode{passwd\_phrase\_element}} 15378\end{fulllineitems} 15379 15380 15381 15382\paragraph{Declaration} 15383\label{\detokenize{appdev/refs/types/passwd_phrase_element:declaration}} 15384typedef struct \_passwd\_phrase\_element passwd\_phrase\_element 15385 15386 15387\paragraph{Members} 15388\label{\detokenize{appdev/refs/types/passwd_phrase_element:members}}\index{passwd\_phrase\_element.magic (C member)} 15389 15390\begin{fulllineitems} 15391\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element.magic}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{krb5\_magic}}} \sphinxbfcode{passwd\_phrase\_element.magic}} 15392\end{fulllineitems} 15393 15394\index{passwd\_phrase\_element.passwd (C member)} 15395 15396\begin{fulllineitems} 15397\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element.passwd}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{passwd\_phrase\_element.passwd}} 15398\end{fulllineitems} 15399 15400\index{passwd\_phrase\_element.phrase (C member)} 15401 15402\begin{fulllineitems} 15403\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element.phrase}}\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{krb5\_data}}} * \sphinxbfcode{passwd\_phrase\_element.phrase}} 15404\end{fulllineitems} 15405 15406 15407 15408\subsection{Internal} 15409\label{\detokenize{appdev/refs/types/index:internal}} 15410 15411\subsubsection{krb5\_auth\_context} 15412\label{\detokenize{appdev/refs/types/krb5_auth_context:krb5-auth-context}}\label{\detokenize{appdev/refs/types/krb5_auth_context::doc}}\label{\detokenize{appdev/refs/types/krb5_auth_context:krb5-auth-context-struct}}\index{krb5\_auth\_context (C type)} 15413 15414\begin{fulllineitems} 15415\phantomsection\label{\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}}\pysigline{\sphinxbfcode{krb5\_auth\_context}} 15416\end{fulllineitems} 15417 15418 15419 15420\paragraph{Declaration} 15421\label{\detokenize{appdev/refs/types/krb5_auth_context:declaration}} 15422typedef struct \_krb5\_auth\_context* krb5\_auth\_context 15423 15424 15425\subsubsection{krb5\_cksumtype} 15426\label{\detokenize{appdev/refs/types/krb5_cksumtype:krb5-cksumtype}}\label{\detokenize{appdev/refs/types/krb5_cksumtype:krb5-cksumtype-struct}}\label{\detokenize{appdev/refs/types/krb5_cksumtype::doc}}\index{krb5\_cksumtype (C type)} 15427 15428\begin{fulllineitems} 15429\phantomsection\label{\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}}\pysigline{\sphinxbfcode{krb5\_cksumtype}} 15430\end{fulllineitems} 15431 15432 15433 15434\paragraph{Declaration} 15435\label{\detokenize{appdev/refs/types/krb5_cksumtype:declaration}} 15436typedef krb5\_int32 krb5\_cksumtype 15437 15438 15439\subsubsection{krb5\_context} 15440\label{\detokenize{appdev/refs/types/krb5_context:krb5-context}}\label{\detokenize{appdev/refs/types/krb5_context:krb5-context-struct}}\label{\detokenize{appdev/refs/types/krb5_context::doc}}\index{krb5\_context (C type)} 15441 15442\begin{fulllineitems} 15443\phantomsection\label{\detokenize{appdev/refs/types/krb5_context:c.krb5_context}}\pysigline{\sphinxbfcode{krb5\_context}} 15444\end{fulllineitems} 15445 15446 15447 15448\paragraph{Declaration} 15449\label{\detokenize{appdev/refs/types/krb5_context:declaration}} 15450typedef struct \_krb5\_context* krb5\_context 15451 15452 15453\subsubsection{krb5\_cc\_cursor} 15454\label{\detokenize{appdev/refs/types/krb5_cc_cursor:krb5-cc-cursor-struct}}\label{\detokenize{appdev/refs/types/krb5_cc_cursor:krb5-cc-cursor}}\label{\detokenize{appdev/refs/types/krb5_cc_cursor::doc}}\index{krb5\_cc\_cursor (C type)} 15455 15456\begin{fulllineitems} 15457\phantomsection\label{\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}}\pysigline{\sphinxbfcode{krb5\_cc\_cursor}} 15458\end{fulllineitems} 15459 15460 15461Cursor for sequential lookup. 15462 15463 15464\paragraph{Declaration} 15465\label{\detokenize{appdev/refs/types/krb5_cc_cursor:declaration}} 15466typedef krb5\_pointer krb5\_cc\_cursor 15467 15468 15469\subsubsection{krb5\_ccache} 15470\label{\detokenize{appdev/refs/types/krb5_ccache:krb5-ccache-struct}}\label{\detokenize{appdev/refs/types/krb5_ccache::doc}}\label{\detokenize{appdev/refs/types/krb5_ccache:krb5-ccache}}\index{krb5\_ccache (C type)} 15471 15472\begin{fulllineitems} 15473\phantomsection\label{\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}}\pysigline{\sphinxbfcode{krb5\_ccache}} 15474\end{fulllineitems} 15475 15476 15477 15478\paragraph{Declaration} 15479\label{\detokenize{appdev/refs/types/krb5_ccache:declaration}} 15480typedef struct \_krb5\_ccache* krb5\_ccache 15481 15482 15483\subsubsection{krb5\_cccol\_cursor} 15484\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:krb5-cccol-cursor-struct}}\label{\detokenize{appdev/refs/types/krb5_cccol_cursor::doc}}\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:krb5-cccol-cursor}}\index{krb5\_cccol\_cursor (C type)} 15485 15486\begin{fulllineitems} 15487\phantomsection\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}}\pysigline{\sphinxbfcode{krb5\_cccol\_cursor}} 15488\end{fulllineitems} 15489 15490 15491Cursor for iterating over all ccaches. 15492 15493 15494\paragraph{Declaration} 15495\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:declaration}} 15496typedef struct \_krb5\_cccol\_cursor* krb5\_cccol\_cursor 15497 15498 15499\subsubsection{krb5\_init\_creds\_context} 15500\label{\detokenize{appdev/refs/types/krb5_init_creds_context:krb5-init-creds-context}}\label{\detokenize{appdev/refs/types/krb5_init_creds_context::doc}}\label{\detokenize{appdev/refs/types/krb5_init_creds_context:krb5-init-creds-context-struct}}\index{krb5\_init\_creds\_context (C type)} 15501 15502\begin{fulllineitems} 15503\phantomsection\label{\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}}\pysigline{\sphinxbfcode{krb5\_init\_creds\_context}} 15504\end{fulllineitems} 15505 15506 15507 15508\paragraph{Declaration} 15509\label{\detokenize{appdev/refs/types/krb5_init_creds_context:declaration}} 15510typedef struct \_krb5\_init\_creds\_context* krb5\_init\_creds\_context 15511 15512 15513\subsubsection{krb5\_key} 15514\label{\detokenize{appdev/refs/types/krb5_key::doc}}\label{\detokenize{appdev/refs/types/krb5_key:krb5-key}}\label{\detokenize{appdev/refs/types/krb5_key:krb5-key-struct}}\index{krb5\_key (C type)} 15515 15516\begin{fulllineitems} 15517\phantomsection\label{\detokenize{appdev/refs/types/krb5_key:c.krb5_key}}\pysigline{\sphinxbfcode{krb5\_key}} 15518\end{fulllineitems} 15519 15520 15521Opaque identifier for a key. 15522 15523Use 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. 15524 15525 15526\paragraph{Declaration} 15527\label{\detokenize{appdev/refs/types/krb5_key:declaration}} 15528typedef struct krb5\_key\_st* krb5\_key 15529 15530 15531\subsubsection{krb5\_keytab} 15532\label{\detokenize{appdev/refs/types/krb5_keytab:krb5-keytab}}\label{\detokenize{appdev/refs/types/krb5_keytab::doc}}\label{\detokenize{appdev/refs/types/krb5_keytab:krb5-keytab-struct}}\index{krb5\_keytab (C type)} 15533 15534\begin{fulllineitems} 15535\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}}\pysigline{\sphinxbfcode{krb5\_keytab}} 15536\end{fulllineitems} 15537 15538 15539 15540\paragraph{Declaration} 15541\label{\detokenize{appdev/refs/types/krb5_keytab:declaration}} 15542typedef struct \_krb5\_kt* krb5\_keytab 15543 15544 15545\subsubsection{krb5\_pac} 15546\label{\detokenize{appdev/refs/types/krb5_pac:krb5-pac-struct}}\label{\detokenize{appdev/refs/types/krb5_pac:krb5-pac}}\label{\detokenize{appdev/refs/types/krb5_pac::doc}}\index{krb5\_pac (C type)} 15547 15548\begin{fulllineitems} 15549\phantomsection\label{\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}}\pysigline{\sphinxbfcode{krb5\_pac}} 15550\end{fulllineitems} 15551 15552 15553PAC data structure to convey authorization information. 15554 15555 15556\paragraph{Declaration} 15557\label{\detokenize{appdev/refs/types/krb5_pac:declaration}} 15558typedef struct krb5\_pac\_data* krb5\_pac 15559 15560 15561\subsubsection{krb5\_rcache} 15562\label{\detokenize{appdev/refs/types/krb5_rcache:krb5-rcache-struct}}\label{\detokenize{appdev/refs/types/krb5_rcache::doc}}\label{\detokenize{appdev/refs/types/krb5_rcache:krb5-rcache}}\index{krb5\_rcache (C type)} 15563 15564\begin{fulllineitems} 15565\phantomsection\label{\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}}\pysigline{\sphinxbfcode{krb5\_rcache}} 15566\end{fulllineitems} 15567 15568 15569 15570\paragraph{Declaration} 15571\label{\detokenize{appdev/refs/types/krb5_rcache:declaration}} 15572typedef struct krb5\_rc\_st* krb5\_rcache 15573 15574 15575\subsubsection{krb5\_tkt\_creds\_context} 15576\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context::doc}}\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context:krb5-tkt-creds-context}}\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context:krb5-tkt-creds-context-struct}}\index{krb5\_tkt\_creds\_context (C type)} 15577 15578\begin{fulllineitems} 15579\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}}\pysigline{\sphinxbfcode{krb5\_tkt\_creds\_context}} 15580\end{fulllineitems} 15581 15582 15583 15584\paragraph{Declaration} 15585\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context:declaration}} 15586typedef struct \_krb5\_tkt\_creds\_context* krb5\_tkt\_creds\_context 15587 15588 15589\section{krb5 simple macros} 15590\label{\detokenize{appdev/refs/macros/index:krb5-simple-macros}}\label{\detokenize{appdev/refs/macros/index::doc}} 15591 15592\subsection{Public} 15593\label{\detokenize{appdev/refs/macros/index:public}} 15594 15595\subsubsection{ADDRTYPE\_ADDRPORT} 15596\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT:addrtype-addrport-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT:addrtype-addrport}}\index{ADDRTYPE\_ADDRPORT (built-in variable)} 15597 15598\begin{fulllineitems} 15599\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT:ADDRTYPE_ADDRPORT}}\pysigline{\sphinxbfcode{ADDRTYPE\_ADDRPORT}} 15600\end{fulllineitems} 15601 15602 15603 15604\begin{savenotes}\sphinxattablestart 15605\centering 15606\begin{tabulary}{\linewidth}[t]{|T|T|} 15607\hline 15608 15609\sphinxcode{ADDRTYPE\_ADDRPORT} 15610& 15611\sphinxcode{0x0100} 15612\\ 15613\hline 15614\end{tabulary} 15615\par 15616\sphinxattableend\end{savenotes} 15617 15618 15619\subsubsection{ADDRTYPE\_CHAOS} 15620\label{\detokenize{appdev/refs/macros/ADDRTYPE_CHAOS:addrtype-chaos}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_CHAOS:addrtype-chaos-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_CHAOS::doc}}\index{ADDRTYPE\_CHAOS (built-in variable)} 15621 15622\begin{fulllineitems} 15623\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_CHAOS:ADDRTYPE_CHAOS}}\pysigline{\sphinxbfcode{ADDRTYPE\_CHAOS}} 15624\end{fulllineitems} 15625 15626 15627 15628\begin{savenotes}\sphinxattablestart 15629\centering 15630\begin{tabulary}{\linewidth}[t]{|T|T|} 15631\hline 15632 15633\sphinxcode{ADDRTYPE\_CHAOS} 15634& 15635\sphinxcode{0x0005} 15636\\ 15637\hline 15638\end{tabulary} 15639\par 15640\sphinxattableend\end{savenotes} 15641 15642 15643\subsubsection{ADDRTYPE\_DDP} 15644\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP:addrtype-ddp-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP:addrtype-ddp}}\index{ADDRTYPE\_DDP (built-in variable)} 15645 15646\begin{fulllineitems} 15647\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP:ADDRTYPE_DDP}}\pysigline{\sphinxbfcode{ADDRTYPE\_DDP}} 15648\end{fulllineitems} 15649 15650 15651 15652\begin{savenotes}\sphinxattablestart 15653\centering 15654\begin{tabulary}{\linewidth}[t]{|T|T|} 15655\hline 15656 15657\sphinxcode{ADDRTYPE\_DDP} 15658& 15659\sphinxcode{0x0010} 15660\\ 15661\hline 15662\end{tabulary} 15663\par 15664\sphinxattableend\end{savenotes} 15665 15666 15667\subsubsection{ADDRTYPE\_INET} 15668\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET:addrtype-inet}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET:addrtype-inet-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET::doc}}\index{ADDRTYPE\_INET (built-in variable)} 15669 15670\begin{fulllineitems} 15671\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET:ADDRTYPE_INET}}\pysigline{\sphinxbfcode{ADDRTYPE\_INET}} 15672\end{fulllineitems} 15673 15674 15675 15676\begin{savenotes}\sphinxattablestart 15677\centering 15678\begin{tabulary}{\linewidth}[t]{|T|T|} 15679\hline 15680 15681\sphinxcode{ADDRTYPE\_INET} 15682& 15683\sphinxcode{0x0002} 15684\\ 15685\hline 15686\end{tabulary} 15687\par 15688\sphinxattableend\end{savenotes} 15689 15690 15691\subsubsection{ADDRTYPE\_INET6} 15692\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6:addrtype-inet6-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6:addrtype-inet6}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6::doc}}\index{ADDRTYPE\_INET6 (built-in variable)} 15693 15694\begin{fulllineitems} 15695\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6:ADDRTYPE_INET6}}\pysigline{\sphinxbfcode{ADDRTYPE\_INET6}} 15696\end{fulllineitems} 15697 15698 15699 15700\begin{savenotes}\sphinxattablestart 15701\centering 15702\begin{tabulary}{\linewidth}[t]{|T|T|} 15703\hline 15704 15705\sphinxcode{ADDRTYPE\_INET6} 15706& 15707\sphinxcode{0x0018} 15708\\ 15709\hline 15710\end{tabulary} 15711\par 15712\sphinxattableend\end{savenotes} 15713 15714 15715\subsubsection{ADDRTYPE\_IPPORT} 15716\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT:addrtype-ipport}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT:addrtype-ipport-data}}\index{ADDRTYPE\_IPPORT (built-in variable)} 15717 15718\begin{fulllineitems} 15719\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT:ADDRTYPE_IPPORT}}\pysigline{\sphinxbfcode{ADDRTYPE\_IPPORT}} 15720\end{fulllineitems} 15721 15722 15723 15724\begin{savenotes}\sphinxattablestart 15725\centering 15726\begin{tabulary}{\linewidth}[t]{|T|T|} 15727\hline 15728 15729\sphinxcode{ADDRTYPE\_IPPORT} 15730& 15731\sphinxcode{0x0101} 15732\\ 15733\hline 15734\end{tabulary} 15735\par 15736\sphinxattableend\end{savenotes} 15737 15738 15739\subsubsection{ADDRTYPE\_ISO} 15740\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO:addrtype-iso}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO:addrtype-iso-data}}\index{ADDRTYPE\_ISO (built-in variable)} 15741 15742\begin{fulllineitems} 15743\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO:ADDRTYPE_ISO}}\pysigline{\sphinxbfcode{ADDRTYPE\_ISO}} 15744\end{fulllineitems} 15745 15746 15747 15748\begin{savenotes}\sphinxattablestart 15749\centering 15750\begin{tabulary}{\linewidth}[t]{|T|T|} 15751\hline 15752 15753\sphinxcode{ADDRTYPE\_ISO} 15754& 15755\sphinxcode{0x0007} 15756\\ 15757\hline 15758\end{tabulary} 15759\par 15760\sphinxattableend\end{savenotes} 15761 15762 15763\subsubsection{ADDRTYPE\_IS\_LOCAL} 15764\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL:addrtype-is-local}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL:addrtype-is-local-data}}\index{ADDRTYPE\_IS\_LOCAL (built-in variable)} 15765 15766\begin{fulllineitems} 15767\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL:ADDRTYPE_IS_LOCAL}}\pysigline{\sphinxbfcode{ADDRTYPE\_IS\_LOCAL}} 15768\end{fulllineitems} 15769 15770 15771 15772\begin{savenotes}\sphinxattablestart 15773\centering 15774\begin{tabulary}{\linewidth}[t]{|T|T|} 15775\hline 15776 15777\sphinxcode{ADDRTYPE\_IS\_LOCAL (addrtype)} 15778& 15779\sphinxcode{(addrtype \& 0x8000)} 15780\\ 15781\hline 15782\end{tabulary} 15783\par 15784\sphinxattableend\end{savenotes} 15785 15786 15787\subsubsection{ADDRTYPE\_NETBIOS} 15788\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS:addrtype-netbios}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS:addrtype-netbios-data}}\index{ADDRTYPE\_NETBIOS (built-in variable)} 15789 15790\begin{fulllineitems} 15791\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS:ADDRTYPE_NETBIOS}}\pysigline{\sphinxbfcode{ADDRTYPE\_NETBIOS}} 15792\end{fulllineitems} 15793 15794 15795 15796\begin{savenotes}\sphinxattablestart 15797\centering 15798\begin{tabulary}{\linewidth}[t]{|T|T|} 15799\hline 15800 15801\sphinxcode{ADDRTYPE\_NETBIOS} 15802& 15803\sphinxcode{0x0014} 15804\\ 15805\hline 15806\end{tabulary} 15807\par 15808\sphinxattableend\end{savenotes} 15809 15810 15811\subsubsection{ADDRTYPE\_XNS} 15812\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS::doc}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS:addrtype-xns-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS:addrtype-xns}}\index{ADDRTYPE\_XNS (built-in variable)} 15813 15814\begin{fulllineitems} 15815\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS:ADDRTYPE_XNS}}\pysigline{\sphinxbfcode{ADDRTYPE\_XNS}} 15816\end{fulllineitems} 15817 15818 15819 15820\begin{savenotes}\sphinxattablestart 15821\centering 15822\begin{tabulary}{\linewidth}[t]{|T|T|} 15823\hline 15824 15825\sphinxcode{ADDRTYPE\_XNS} 15826& 15827\sphinxcode{0x0006} 15828\\ 15829\hline 15830\end{tabulary} 15831\par 15832\sphinxattableend\end{savenotes} 15833 15834 15835\subsubsection{AD\_TYPE\_EXTERNAL} 15836\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL:ad-type-external-data}}\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL::doc}}\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL:ad-type-external}}\index{AD\_TYPE\_EXTERNAL (built-in variable)} 15837 15838\begin{fulllineitems} 15839\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL:AD_TYPE_EXTERNAL}}\pysigline{\sphinxbfcode{AD\_TYPE\_EXTERNAL}} 15840\end{fulllineitems} 15841 15842 15843 15844\begin{savenotes}\sphinxattablestart 15845\centering 15846\begin{tabulary}{\linewidth}[t]{|T|T|} 15847\hline 15848 15849\sphinxcode{AD\_TYPE\_EXTERNAL} 15850& 15851\sphinxcode{0x4000} 15852\\ 15853\hline 15854\end{tabulary} 15855\par 15856\sphinxattableend\end{savenotes} 15857 15858 15859\subsubsection{AD\_TYPE\_FIELD\_TYPE\_MASK} 15860\label{\detokenize{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:ad-type-field-type-mask}}\label{\detokenize{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK::doc}}\label{\detokenize{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:ad-type-field-type-mask-data}}\index{AD\_TYPE\_FIELD\_TYPE\_MASK (built-in variable)} 15861 15862\begin{fulllineitems} 15863\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:AD_TYPE_FIELD_TYPE_MASK}}\pysigline{\sphinxbfcode{AD\_TYPE\_FIELD\_TYPE\_MASK}} 15864\end{fulllineitems} 15865 15866 15867 15868\begin{savenotes}\sphinxattablestart 15869\centering 15870\begin{tabulary}{\linewidth}[t]{|T|T|} 15871\hline 15872 15873\sphinxcode{AD\_TYPE\_FIELD\_TYPE\_MASK} 15874& 15875\sphinxcode{0x1fff} 15876\\ 15877\hline 15878\end{tabulary} 15879\par 15880\sphinxattableend\end{savenotes} 15881 15882 15883\subsubsection{AD\_TYPE\_REGISTERED} 15884\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED:ad-type-registered-data}}\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED:ad-type-registered}}\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED::doc}}\index{AD\_TYPE\_REGISTERED (built-in variable)} 15885 15886\begin{fulllineitems} 15887\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED:AD_TYPE_REGISTERED}}\pysigline{\sphinxbfcode{AD\_TYPE\_REGISTERED}} 15888\end{fulllineitems} 15889 15890 15891 15892\begin{savenotes}\sphinxattablestart 15893\centering 15894\begin{tabulary}{\linewidth}[t]{|T|T|} 15895\hline 15896 15897\sphinxcode{AD\_TYPE\_REGISTERED} 15898& 15899\sphinxcode{0x2000} 15900\\ 15901\hline 15902\end{tabulary} 15903\par 15904\sphinxattableend\end{savenotes} 15905 15906 15907\subsubsection{AD\_TYPE\_RESERVED} 15908\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED::doc}}\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED:ad-type-reserved}}\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED:ad-type-reserved-data}}\index{AD\_TYPE\_RESERVED (built-in variable)} 15909 15910\begin{fulllineitems} 15911\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED:AD_TYPE_RESERVED}}\pysigline{\sphinxbfcode{AD\_TYPE\_RESERVED}} 15912\end{fulllineitems} 15913 15914 15915 15916\begin{savenotes}\sphinxattablestart 15917\centering 15918\begin{tabulary}{\linewidth}[t]{|T|T|} 15919\hline 15920 15921\sphinxcode{AD\_TYPE\_RESERVED} 15922& 15923\sphinxcode{0x8000} 15924\\ 15925\hline 15926\end{tabulary} 15927\par 15928\sphinxattableend\end{savenotes} 15929 15930 15931\subsubsection{AP\_OPTS\_ETYPE\_NEGOTIATION} 15932\label{\detokenize{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION::doc}}\label{\detokenize{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:ap-opts-etype-negotiation}}\label{\detokenize{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:ap-opts-etype-negotiation-data}}\index{AP\_OPTS\_ETYPE\_NEGOTIATION (built-in variable)} 15933 15934\begin{fulllineitems} 15935\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:AP_OPTS_ETYPE_NEGOTIATION}}\pysigline{\sphinxbfcode{AP\_OPTS\_ETYPE\_NEGOTIATION}} 15936\end{fulllineitems} 15937 15938 15939 15940\begin{savenotes}\sphinxattablestart 15941\centering 15942\begin{tabulary}{\linewidth}[t]{|T|T|} 15943\hline 15944 15945\sphinxcode{AP\_OPTS\_ETYPE\_NEGOTIATION} 15946& 15947\sphinxcode{0x00000002} 15948\\ 15949\hline 15950\end{tabulary} 15951\par 15952\sphinxattableend\end{savenotes} 15953 15954 15955\subsubsection{AP\_OPTS\_MUTUAL\_REQUIRED} 15956\label{\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:ap-opts-mutual-required}}\label{\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:ap-opts-mutual-required-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED::doc}}\index{AP\_OPTS\_MUTUAL\_REQUIRED (built-in variable)} 15957 15958\begin{fulllineitems} 15959\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED}}\pysigline{\sphinxbfcode{AP\_OPTS\_MUTUAL\_REQUIRED}} 15960\end{fulllineitems} 15961 15962 15963Perform a mutual authentication exchange. 15964 15965 15966\begin{savenotes}\sphinxattablestart 15967\centering 15968\begin{tabulary}{\linewidth}[t]{|T|T|} 15969\hline 15970 15971\sphinxcode{AP\_OPTS\_MUTUAL\_REQUIRED} 15972& 15973\sphinxcode{0x20000000} 15974\\ 15975\hline 15976\end{tabulary} 15977\par 15978\sphinxattableend\end{savenotes} 15979 15980 15981\subsubsection{AP\_OPTS\_RESERVED} 15982\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED::doc}}\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED:ap-opts-reserved-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED:ap-opts-reserved}}\index{AP\_OPTS\_RESERVED (built-in variable)} 15983 15984\begin{fulllineitems} 15985\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED:AP_OPTS_RESERVED}}\pysigline{\sphinxbfcode{AP\_OPTS\_RESERVED}} 15986\end{fulllineitems} 15987 15988 15989 15990\begin{savenotes}\sphinxattablestart 15991\centering 15992\begin{tabulary}{\linewidth}[t]{|T|T|} 15993\hline 15994 15995\sphinxcode{AP\_OPTS\_RESERVED} 15996& 15997\sphinxcode{0x80000000} 15998\\ 15999\hline 16000\end{tabulary} 16001\par 16002\sphinxattableend\end{savenotes} 16003 16004 16005\subsubsection{AP\_OPTS\_USE\_SESSION\_KEY} 16006\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:ap-opts-use-session-key}}\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY::doc}}\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:ap-opts-use-session-key-data}}\index{AP\_OPTS\_USE\_SESSION\_KEY (built-in variable)} 16007 16008\begin{fulllineitems} 16009\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:AP_OPTS_USE_SESSION_KEY}}\pysigline{\sphinxbfcode{AP\_OPTS\_USE\_SESSION\_KEY}} 16010\end{fulllineitems} 16011 16012 16013Use session key. 16014 16015 16016\begin{savenotes}\sphinxattablestart 16017\centering 16018\begin{tabulary}{\linewidth}[t]{|T|T|} 16019\hline 16020 16021\sphinxcode{AP\_OPTS\_USE\_SESSION\_KEY} 16022& 16023\sphinxcode{0x40000000} 16024\\ 16025\hline 16026\end{tabulary} 16027\par 16028\sphinxattableend\end{savenotes} 16029 16030 16031\subsubsection{AP\_OPTS\_USE\_SUBKEY} 16032\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SUBKEY:ap-opts-use-subkey}}\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SUBKEY:ap-opts-use-subkey-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SUBKEY::doc}}\index{AP\_OPTS\_USE\_SUBKEY (built-in variable)} 16033 16034\begin{fulllineitems} 16035\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SUBKEY:AP_OPTS_USE_SUBKEY}}\pysigline{\sphinxbfcode{AP\_OPTS\_USE\_SUBKEY}} 16036\end{fulllineitems} 16037 16038 16039Generate a subsession key from the current session key obtained from the credentials. 16040 16041 16042\begin{savenotes}\sphinxattablestart 16043\centering 16044\begin{tabulary}{\linewidth}[t]{|T|T|} 16045\hline 16046 16047\sphinxcode{AP\_OPTS\_USE\_SUBKEY} 16048& 16049\sphinxcode{0x00000001} 16050\\ 16051\hline 16052\end{tabulary} 16053\par 16054\sphinxattableend\end{savenotes} 16055 16056 16057\subsubsection{AP\_OPTS\_WIRE\_MASK} 16058\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK:ap-opts-wire-mask-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK:ap-opts-wire-mask}}\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK::doc}}\index{AP\_OPTS\_WIRE\_MASK (built-in variable)} 16059 16060\begin{fulllineitems} 16061\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK:AP_OPTS_WIRE_MASK}}\pysigline{\sphinxbfcode{AP\_OPTS\_WIRE\_MASK}} 16062\end{fulllineitems} 16063 16064 16065 16066\begin{savenotes}\sphinxattablestart 16067\centering 16068\begin{tabulary}{\linewidth}[t]{|T|T|} 16069\hline 16070 16071\sphinxcode{AP\_OPTS\_WIRE\_MASK} 16072& 16073\sphinxcode{0xfffffff0} 16074\\ 16075\hline 16076\end{tabulary} 16077\par 16078\sphinxattableend\end{savenotes} 16079 16080 16081\subsubsection{CKSUMTYPE\_CMAC\_CAMELLIA128} 16082\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:cksumtype-cmac-camellia128}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:cksumtype-cmac-camellia128-data}}\index{CKSUMTYPE\_CMAC\_CAMELLIA128 (built-in variable)} 16083 16084\begin{fulllineitems} 16085\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:CKSUMTYPE_CMAC_CAMELLIA128}}\pysigline{\sphinxbfcode{CKSUMTYPE\_CMAC\_CAMELLIA128}} 16086\end{fulllineitems} 16087 16088 16089RFC 6803. 16090 16091 16092\begin{savenotes}\sphinxattablestart 16093\centering 16094\begin{tabulary}{\linewidth}[t]{|T|T|} 16095\hline 16096 16097\sphinxcode{CKSUMTYPE\_CMAC\_CAMELLIA128} 16098& 16099\sphinxcode{0x0011} 16100\\ 16101\hline 16102\end{tabulary} 16103\par 16104\sphinxattableend\end{savenotes} 16105 16106 16107\subsubsection{CKSUMTYPE\_CMAC\_CAMELLIA256} 16108\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:cksumtype-cmac-camellia256}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:cksumtype-cmac-camellia256-data}}\index{CKSUMTYPE\_CMAC\_CAMELLIA256 (built-in variable)} 16109 16110\begin{fulllineitems} 16111\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:CKSUMTYPE_CMAC_CAMELLIA256}}\pysigline{\sphinxbfcode{CKSUMTYPE\_CMAC\_CAMELLIA256}} 16112\end{fulllineitems} 16113 16114 16115RFC 6803. 16116 16117 16118\begin{savenotes}\sphinxattablestart 16119\centering 16120\begin{tabulary}{\linewidth}[t]{|T|T|} 16121\hline 16122 16123\sphinxcode{CKSUMTYPE\_CMAC\_CAMELLIA256} 16124& 16125\sphinxcode{0x0012} 16126\\ 16127\hline 16128\end{tabulary} 16129\par 16130\sphinxattableend\end{savenotes} 16131 16132 16133\subsubsection{CKSUMTYPE\_CRC32} 16134\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32:cksumtype-crc32-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32:cksumtype-crc32}}\index{CKSUMTYPE\_CRC32 (built-in variable)} 16135 16136\begin{fulllineitems} 16137\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32:CKSUMTYPE_CRC32}}\pysigline{\sphinxbfcode{CKSUMTYPE\_CRC32}} 16138\end{fulllineitems} 16139 16140 16141 16142\begin{savenotes}\sphinxattablestart 16143\centering 16144\begin{tabulary}{\linewidth}[t]{|T|T|} 16145\hline 16146 16147\sphinxcode{CKSUMTYPE\_CRC32} 16148& 16149\sphinxcode{0x0001} 16150\\ 16151\hline 16152\end{tabulary} 16153\par 16154\sphinxattableend\end{savenotes} 16155 16156 16157\subsubsection{CKSUMTYPE\_DESCBC} 16158\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC:cksumtype-descbc-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC:cksumtype-descbc}}\index{CKSUMTYPE\_DESCBC (built-in variable)} 16159 16160\begin{fulllineitems} 16161\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC:CKSUMTYPE_DESCBC}}\pysigline{\sphinxbfcode{CKSUMTYPE\_DESCBC}} 16162\end{fulllineitems} 16163 16164 16165 16166\begin{savenotes}\sphinxattablestart 16167\centering 16168\begin{tabulary}{\linewidth}[t]{|T|T|} 16169\hline 16170 16171\sphinxcode{CKSUMTYPE\_DESCBC} 16172& 16173\sphinxcode{0x0004} 16174\\ 16175\hline 16176\end{tabulary} 16177\par 16178\sphinxattableend\end{savenotes} 16179 16180 16181\subsubsection{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR} 16182\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:cksumtype-hmac-md5-arcfour-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:cksumtype-hmac-md5-arcfour}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR::doc}}\index{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR (built-in variable)} 16183 16184\begin{fulllineitems} 16185\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:CKSUMTYPE_HMAC_MD5_ARCFOUR}}\pysigline{\sphinxbfcode{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}} 16186\end{fulllineitems} 16187 16188 16189RFC 4757. 16190 16191 16192\begin{savenotes}\sphinxattablestart 16193\centering 16194\begin{tabulary}{\linewidth}[t]{|T|T|} 16195\hline 16196 16197\sphinxcode{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR} 16198& 16199\sphinxcode{-138} 16200\\ 16201\hline 16202\end{tabulary} 16203\par 16204\sphinxattableend\end{savenotes} 16205 16206 16207\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128} 16208\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:cksumtype-hmac-sha1-96-aes128}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:cksumtype-hmac-sha1-96-aes128-data}}\index{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128 (built-in variable)} 16209 16210\begin{fulllineitems} 16211\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:CKSUMTYPE_HMAC_SHA1_96_AES128}}\pysigline{\sphinxbfcode{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}} 16212\end{fulllineitems} 16213 16214 16215RFC 3962. 16216 16217Used with ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96 16218 16219 16220\begin{savenotes}\sphinxattablestart 16221\centering 16222\begin{tabulary}{\linewidth}[t]{|T|T|} 16223\hline 16224 16225\sphinxcode{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128} 16226& 16227\sphinxcode{0x000f} 16228\\ 16229\hline 16230\end{tabulary} 16231\par 16232\sphinxattableend\end{savenotes} 16233 16234 16235\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256} 16236\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:cksumtype-hmac-sha1-96-aes256}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:cksumtype-hmac-sha1-96-aes256-data}}\index{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256 (built-in variable)} 16237 16238\begin{fulllineitems} 16239\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:CKSUMTYPE_HMAC_SHA1_96_AES256}}\pysigline{\sphinxbfcode{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}} 16240\end{fulllineitems} 16241 16242 16243RFC 3962. 16244 16245Used with ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96 16246 16247 16248\begin{savenotes}\sphinxattablestart 16249\centering 16250\begin{tabulary}{\linewidth}[t]{|T|T|} 16251\hline 16252 16253\sphinxcode{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256} 16254& 16255\sphinxcode{0x0010} 16256\\ 16257\hline 16258\end{tabulary} 16259\par 16260\sphinxattableend\end{savenotes} 16261 16262 16263\subsubsection{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128} 16264\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA256_128_AES128:cksumtype-hmac-sha256-128-aes128-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA256_128_AES128::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA256_128_AES128:cksumtype-hmac-sha256-128-aes128}}\index{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128 (built-in variable)} 16265 16266\begin{fulllineitems} 16267\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA256_128_AES128:CKSUMTYPE_HMAC_SHA256_128_AES128}}\pysigline{\sphinxbfcode{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128}} 16268\end{fulllineitems} 16269 16270 16271RFC 8009. 16272 16273 16274\begin{savenotes}\sphinxattablestart 16275\centering 16276\begin{tabulary}{\linewidth}[t]{|T|T|} 16277\hline 16278 16279\sphinxcode{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128} 16280& 16281\sphinxcode{0x0013} 16282\\ 16283\hline 16284\end{tabulary} 16285\par 16286\sphinxattableend\end{savenotes} 16287 16288 16289\subsubsection{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256} 16290\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA384_192_AES256:cksumtype-hmac-sha384-192-aes256}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA384_192_AES256:cksumtype-hmac-sha384-192-aes256-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA384_192_AES256::doc}}\index{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256 (built-in variable)} 16291 16292\begin{fulllineitems} 16293\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA384_192_AES256:CKSUMTYPE_HMAC_SHA384_192_AES256}}\pysigline{\sphinxbfcode{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256}} 16294\end{fulllineitems} 16295 16296 16297RFC 8009. 16298 16299 16300\begin{savenotes}\sphinxattablestart 16301\centering 16302\begin{tabulary}{\linewidth}[t]{|T|T|} 16303\hline 16304 16305\sphinxcode{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256} 16306& 16307\sphinxcode{0x0014} 16308\\ 16309\hline 16310\end{tabulary} 16311\par 16312\sphinxattableend\end{savenotes} 16313 16314 16315\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_DES3} 16316\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:cksumtype-hmac-sha1-des3}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:cksumtype-hmac-sha1-des3-data}}\index{CKSUMTYPE\_HMAC\_SHA1\_DES3 (built-in variable)} 16317 16318\begin{fulllineitems} 16319\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:CKSUMTYPE_HMAC_SHA1_DES3}}\pysigline{\sphinxbfcode{CKSUMTYPE\_HMAC\_SHA1\_DES3}} 16320\end{fulllineitems} 16321 16322 16323 16324\begin{savenotes}\sphinxattablestart 16325\centering 16326\begin{tabulary}{\linewidth}[t]{|T|T|} 16327\hline 16328 16329\sphinxcode{CKSUMTYPE\_HMAC\_SHA1\_DES3} 16330& 16331\sphinxcode{0x000c} 16332\\ 16333\hline 16334\end{tabulary} 16335\par 16336\sphinxattableend\end{savenotes} 16337 16338 16339\subsubsection{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR} 16340\label{\detokenize{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:cksumtype-md5-hmac-arcfour}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:cksumtype-md5-hmac-arcfour-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR::doc}}\index{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR (built-in variable)} 16341 16342\begin{fulllineitems} 16343\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:CKSUMTYPE_MD5_HMAC_ARCFOUR}}\pysigline{\sphinxbfcode{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}} 16344\end{fulllineitems} 16345 16346 16347 16348\begin{savenotes}\sphinxattablestart 16349\centering 16350\begin{tabulary}{\linewidth}[t]{|T|T|} 16351\hline 16352 16353\sphinxcode{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR} 16354& 16355\sphinxcode{-137 /* Microsoft netlogon */} 16356\\ 16357\hline 16358\end{tabulary} 16359\par 16360\sphinxattableend\end{savenotes} 16361 16362 16363\subsubsection{CKSUMTYPE\_NIST\_SHA} 16364\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA:cksumtype-nist-sha}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA:cksumtype-nist-sha-data}}\index{CKSUMTYPE\_NIST\_SHA (built-in variable)} 16365 16366\begin{fulllineitems} 16367\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA:CKSUMTYPE_NIST_SHA}}\pysigline{\sphinxbfcode{CKSUMTYPE\_NIST\_SHA}} 16368\end{fulllineitems} 16369 16370 16371 16372\begin{savenotes}\sphinxattablestart 16373\centering 16374\begin{tabulary}{\linewidth}[t]{|T|T|} 16375\hline 16376 16377\sphinxcode{CKSUMTYPE\_NIST\_SHA} 16378& 16379\sphinxcode{0x0009} 16380\\ 16381\hline 16382\end{tabulary} 16383\par 16384\sphinxattableend\end{savenotes} 16385 16386 16387\subsubsection{CKSUMTYPE\_RSA\_MD4} 16388\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4:cksumtype-rsa-md4}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4:cksumtype-rsa-md4-data}}\index{CKSUMTYPE\_RSA\_MD4 (built-in variable)} 16389 16390\begin{fulllineitems} 16391\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4:CKSUMTYPE_RSA_MD4}}\pysigline{\sphinxbfcode{CKSUMTYPE\_RSA\_MD4}} 16392\end{fulllineitems} 16393 16394 16395 16396\begin{savenotes}\sphinxattablestart 16397\centering 16398\begin{tabulary}{\linewidth}[t]{|T|T|} 16399\hline 16400 16401\sphinxcode{CKSUMTYPE\_RSA\_MD4} 16402& 16403\sphinxcode{0x0002} 16404\\ 16405\hline 16406\end{tabulary} 16407\par 16408\sphinxattableend\end{savenotes} 16409 16410 16411\subsubsection{CKSUMTYPE\_RSA\_MD4\_DES} 16412\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:cksumtype-rsa-md4-des}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:cksumtype-rsa-md4-des-data}}\index{CKSUMTYPE\_RSA\_MD4\_DES (built-in variable)} 16413 16414\begin{fulllineitems} 16415\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:CKSUMTYPE_RSA_MD4_DES}}\pysigline{\sphinxbfcode{CKSUMTYPE\_RSA\_MD4\_DES}} 16416\end{fulllineitems} 16417 16418 16419 16420\begin{savenotes}\sphinxattablestart 16421\centering 16422\begin{tabulary}{\linewidth}[t]{|T|T|} 16423\hline 16424 16425\sphinxcode{CKSUMTYPE\_RSA\_MD4\_DES} 16426& 16427\sphinxcode{0x0003} 16428\\ 16429\hline 16430\end{tabulary} 16431\par 16432\sphinxattableend\end{savenotes} 16433 16434 16435\subsubsection{CKSUMTYPE\_RSA\_MD5} 16436\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5:cksumtype-rsa-md5-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5:cksumtype-rsa-md5}}\index{CKSUMTYPE\_RSA\_MD5 (built-in variable)} 16437 16438\begin{fulllineitems} 16439\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5:CKSUMTYPE_RSA_MD5}}\pysigline{\sphinxbfcode{CKSUMTYPE\_RSA\_MD5}} 16440\end{fulllineitems} 16441 16442 16443 16444\begin{savenotes}\sphinxattablestart 16445\centering 16446\begin{tabulary}{\linewidth}[t]{|T|T|} 16447\hline 16448 16449\sphinxcode{CKSUMTYPE\_RSA\_MD5} 16450& 16451\sphinxcode{0x0007} 16452\\ 16453\hline 16454\end{tabulary} 16455\par 16456\sphinxattableend\end{savenotes} 16457 16458 16459\subsubsection{CKSUMTYPE\_RSA\_MD5\_DES} 16460\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:cksumtype-rsa-md5-des-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES::doc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:cksumtype-rsa-md5-des}}\index{CKSUMTYPE\_RSA\_MD5\_DES (built-in variable)} 16461 16462\begin{fulllineitems} 16463\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:CKSUMTYPE_RSA_MD5_DES}}\pysigline{\sphinxbfcode{CKSUMTYPE\_RSA\_MD5\_DES}} 16464\end{fulllineitems} 16465 16466 16467 16468\begin{savenotes}\sphinxattablestart 16469\centering 16470\begin{tabulary}{\linewidth}[t]{|T|T|} 16471\hline 16472 16473\sphinxcode{CKSUMTYPE\_RSA\_MD5\_DES} 16474& 16475\sphinxcode{0x0008} 16476\\ 16477\hline 16478\end{tabulary} 16479\par 16480\sphinxattableend\end{savenotes} 16481 16482 16483\subsubsection{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96} 16484\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:enctype-aes128-cts-hmac-sha1-96-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96::doc}}\label{\detokenize{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)} 16485 16486\begin{fulllineitems} 16487\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:ENCTYPE_AES128_CTS_HMAC_SHA1_96}}\pysigline{\sphinxbfcode{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}} 16488\end{fulllineitems} 16489 16490 16491RFC 3962. 16492 16493 16494\begin{savenotes}\sphinxattablestart 16495\centering 16496\begin{tabulary}{\linewidth}[t]{|T|T|} 16497\hline 16498 16499\sphinxcode{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96} 16500& 16501\sphinxcode{0x0011} 16502\\ 16503\hline 16504\end{tabulary} 16505\par 16506\sphinxattableend\end{savenotes} 16507 16508 16509\subsubsection{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128} 16510\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA256_128:enctype-aes128-cts-hmac-sha256-128}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA256_128:enctype-aes128-cts-hmac-sha256-128-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA256_128::doc}}\index{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128 (built-in variable)} 16511 16512\begin{fulllineitems} 16513\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA256_128:ENCTYPE_AES128_CTS_HMAC_SHA256_128}}\pysigline{\sphinxbfcode{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128}} 16514\end{fulllineitems} 16515 16516 16517RFC 8009. 16518 16519 16520\begin{savenotes}\sphinxattablestart 16521\centering 16522\begin{tabulary}{\linewidth}[t]{|T|T|} 16523\hline 16524 16525\sphinxcode{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128} 16526& 16527\sphinxcode{0x0013} 16528\\ 16529\hline 16530\end{tabulary} 16531\par 16532\sphinxattableend\end{savenotes} 16533 16534 16535\subsubsection{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96} 16536\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:enctype-aes256-cts-hmac-sha1-96-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96::doc}}\label{\detokenize{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)} 16537 16538\begin{fulllineitems} 16539\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:ENCTYPE_AES256_CTS_HMAC_SHA1_96}}\pysigline{\sphinxbfcode{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}} 16540\end{fulllineitems} 16541 16542 16543RFC 3962. 16544 16545 16546\begin{savenotes}\sphinxattablestart 16547\centering 16548\begin{tabulary}{\linewidth}[t]{|T|T|} 16549\hline 16550 16551\sphinxcode{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96} 16552& 16553\sphinxcode{0x0012} 16554\\ 16555\hline 16556\end{tabulary} 16557\par 16558\sphinxattableend\end{savenotes} 16559 16560 16561\subsubsection{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192} 16562\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192:enctype-aes256-cts-hmac-sha384-192-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192:enctype-aes256-cts-hmac-sha384-192}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192::doc}}\index{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192 (built-in variable)} 16563 16564\begin{fulllineitems} 16565\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192:ENCTYPE_AES256_CTS_HMAC_SHA384_192}}\pysigline{\sphinxbfcode{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192}} 16566\end{fulllineitems} 16567 16568 16569RFC 8009. 16570 16571 16572\begin{savenotes}\sphinxattablestart 16573\centering 16574\begin{tabulary}{\linewidth}[t]{|T|T|} 16575\hline 16576 16577\sphinxcode{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192} 16578& 16579\sphinxcode{0x0014} 16580\\ 16581\hline 16582\end{tabulary} 16583\par 16584\sphinxattableend\end{savenotes} 16585 16586 16587\subsubsection{ENCTYPE\_ARCFOUR\_HMAC} 16588\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:enctype-arcfour-hmac}}\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:enctype-arcfour-hmac-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC::doc}}\index{ENCTYPE\_ARCFOUR\_HMAC (built-in variable)} 16589 16590\begin{fulllineitems} 16591\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:ENCTYPE_ARCFOUR_HMAC}}\pysigline{\sphinxbfcode{ENCTYPE\_ARCFOUR\_HMAC}} 16592\end{fulllineitems} 16593 16594 16595RFC 4757. 16596 16597 16598\begin{savenotes}\sphinxattablestart 16599\centering 16600\begin{tabulary}{\linewidth}[t]{|T|T|} 16601\hline 16602 16603\sphinxcode{ENCTYPE\_ARCFOUR\_HMAC} 16604& 16605\sphinxcode{0x0017} 16606\\ 16607\hline 16608\end{tabulary} 16609\par 16610\sphinxattableend\end{savenotes} 16611 16612 16613\subsubsection{ENCTYPE\_ARCFOUR\_HMAC\_EXP} 16614\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:enctype-arcfour-hmac-exp-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:enctype-arcfour-hmac-exp}}\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP::doc}}\index{ENCTYPE\_ARCFOUR\_HMAC\_EXP (built-in variable)} 16615 16616\begin{fulllineitems} 16617\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:ENCTYPE_ARCFOUR_HMAC_EXP}}\pysigline{\sphinxbfcode{ENCTYPE\_ARCFOUR\_HMAC\_EXP}} 16618\end{fulllineitems} 16619 16620 16621RFC 4757. 16622 16623 16624\begin{savenotes}\sphinxattablestart 16625\centering 16626\begin{tabulary}{\linewidth}[t]{|T|T|} 16627\hline 16628 16629\sphinxcode{ENCTYPE\_ARCFOUR\_HMAC\_EXP} 16630& 16631\sphinxcode{0x0018} 16632\\ 16633\hline 16634\end{tabulary} 16635\par 16636\sphinxattableend\end{savenotes} 16637 16638 16639\subsubsection{ENCTYPE\_CAMELLIA128\_CTS\_CMAC} 16640\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:enctype-camellia128-cts-cmac-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:enctype-camellia128-cts-cmac}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC::doc}}\index{ENCTYPE\_CAMELLIA128\_CTS\_CMAC (built-in variable)} 16641 16642\begin{fulllineitems} 16643\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:ENCTYPE_CAMELLIA128_CTS_CMAC}}\pysigline{\sphinxbfcode{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}} 16644\end{fulllineitems} 16645 16646 16647RFC 6803. 16648 16649 16650\begin{savenotes}\sphinxattablestart 16651\centering 16652\begin{tabulary}{\linewidth}[t]{|T|T|} 16653\hline 16654 16655\sphinxcode{ENCTYPE\_CAMELLIA128\_CTS\_CMAC} 16656& 16657\sphinxcode{0x0019} 16658\\ 16659\hline 16660\end{tabulary} 16661\par 16662\sphinxattableend\end{savenotes} 16663 16664 16665\subsubsection{ENCTYPE\_CAMELLIA256\_CTS\_CMAC} 16666\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:enctype-camellia256-cts-cmac-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:enctype-camellia256-cts-cmac}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC::doc}}\index{ENCTYPE\_CAMELLIA256\_CTS\_CMAC (built-in variable)} 16667 16668\begin{fulllineitems} 16669\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:ENCTYPE_CAMELLIA256_CTS_CMAC}}\pysigline{\sphinxbfcode{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}} 16670\end{fulllineitems} 16671 16672 16673RFC 6803. 16674 16675 16676\begin{savenotes}\sphinxattablestart 16677\centering 16678\begin{tabulary}{\linewidth}[t]{|T|T|} 16679\hline 16680 16681\sphinxcode{ENCTYPE\_CAMELLIA256\_CTS\_CMAC} 16682& 16683\sphinxcode{0x001a} 16684\\ 16685\hline 16686\end{tabulary} 16687\par 16688\sphinxattableend\end{savenotes} 16689 16690 16691\subsubsection{ENCTYPE\_DES3\_CBC\_ENV} 16692\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:enctype-des3-cbc-env}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:enctype-des3-cbc-env-data}}\index{ENCTYPE\_DES3\_CBC\_ENV (built-in variable)} 16693 16694\begin{fulllineitems} 16695\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:ENCTYPE_DES3_CBC_ENV}}\pysigline{\sphinxbfcode{ENCTYPE\_DES3\_CBC\_ENV}} 16696\end{fulllineitems} 16697 16698 16699DES-3 cbc mode, CMS enveloped data. 16700 16701 16702\begin{savenotes}\sphinxattablestart 16703\centering 16704\begin{tabulary}{\linewidth}[t]{|T|T|} 16705\hline 16706 16707\sphinxcode{ENCTYPE\_DES3\_CBC\_ENV} 16708& 16709\sphinxcode{0x000f} 16710\\ 16711\hline 16712\end{tabulary} 16713\par 16714\sphinxattableend\end{savenotes} 16715 16716 16717\subsubsection{ENCTYPE\_DES3\_CBC\_RAW} 16718\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:enctype-des3-cbc-raw}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:enctype-des3-cbc-raw-data}}\index{ENCTYPE\_DES3\_CBC\_RAW (built-in variable)} 16719 16720\begin{fulllineitems} 16721\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:ENCTYPE_DES3_CBC_RAW}}\pysigline{\sphinxbfcode{ENCTYPE\_DES3\_CBC\_RAW}} 16722\end{fulllineitems} 16723 16724 16725 16726\begin{savenotes}\sphinxattablestart 16727\centering 16728\begin{tabulary}{\linewidth}[t]{|T|T|} 16729\hline 16730 16731\sphinxcode{ENCTYPE\_DES3\_CBC\_RAW} 16732& 16733\sphinxcode{0x0006} 16734\\ 16735\hline 16736\end{tabulary} 16737\par 16738\sphinxattableend\end{savenotes} 16739 16740 16741\subsubsection{ENCTYPE\_DES3\_CBC\_SHA} 16742\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:enctype-des3-cbc-sha}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:enctype-des3-cbc-sha-data}}\index{ENCTYPE\_DES3\_CBC\_SHA (built-in variable)} 16743 16744\begin{fulllineitems} 16745\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:ENCTYPE_DES3_CBC_SHA}}\pysigline{\sphinxbfcode{ENCTYPE\_DES3\_CBC\_SHA}} 16746\end{fulllineitems} 16747 16748 16749 16750\begin{savenotes}\sphinxattablestart 16751\centering 16752\begin{tabulary}{\linewidth}[t]{|T|T|} 16753\hline 16754 16755\sphinxcode{ENCTYPE\_DES3\_CBC\_SHA} 16756& 16757\sphinxcode{0x0005} 16758\\ 16759\hline 16760\end{tabulary} 16761\par 16762\sphinxattableend\end{savenotes} 16763 16764 16765\subsubsection{ENCTYPE\_DES3\_CBC\_SHA1} 16766\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:enctype-des3-cbc-sha1}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:enctype-des3-cbc-sha1-data}}\index{ENCTYPE\_DES3\_CBC\_SHA1 (built-in variable)} 16767 16768\begin{fulllineitems} 16769\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:ENCTYPE_DES3_CBC_SHA1}}\pysigline{\sphinxbfcode{ENCTYPE\_DES3\_CBC\_SHA1}} 16770\end{fulllineitems} 16771 16772 16773 16774\begin{savenotes}\sphinxattablestart 16775\centering 16776\begin{tabulary}{\linewidth}[t]{|T|T|} 16777\hline 16778 16779\sphinxcode{ENCTYPE\_DES3\_CBC\_SHA1} 16780& 16781\sphinxcode{0x0010} 16782\\ 16783\hline 16784\end{tabulary} 16785\par 16786\sphinxattableend\end{savenotes} 16787 16788 16789\subsubsection{ENCTYPE\_DES\_CBC\_CRC} 16790\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:enctype-des-cbc-crc-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:enctype-des-cbc-crc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC::doc}}\index{ENCTYPE\_DES\_CBC\_CRC (built-in variable)} 16791 16792\begin{fulllineitems} 16793\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:ENCTYPE_DES_CBC_CRC}}\pysigline{\sphinxbfcode{ENCTYPE\_DES\_CBC\_CRC}} 16794\end{fulllineitems} 16795 16796 16797 16798\begin{savenotes}\sphinxattablestart 16799\centering 16800\begin{tabulary}{\linewidth}[t]{|T|T|} 16801\hline 16802 16803\sphinxcode{ENCTYPE\_DES\_CBC\_CRC} 16804& 16805\sphinxcode{0x0001} 16806\\ 16807\hline 16808\end{tabulary} 16809\par 16810\sphinxattableend\end{savenotes} 16811 16812 16813\subsubsection{ENCTYPE\_DES\_CBC\_MD4} 16814\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:enctype-des-cbc-md4-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:enctype-des-cbc-md4}}\index{ENCTYPE\_DES\_CBC\_MD4 (built-in variable)} 16815 16816\begin{fulllineitems} 16817\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:ENCTYPE_DES_CBC_MD4}}\pysigline{\sphinxbfcode{ENCTYPE\_DES\_CBC\_MD4}} 16818\end{fulllineitems} 16819 16820 16821 16822\begin{savenotes}\sphinxattablestart 16823\centering 16824\begin{tabulary}{\linewidth}[t]{|T|T|} 16825\hline 16826 16827\sphinxcode{ENCTYPE\_DES\_CBC\_MD4} 16828& 16829\sphinxcode{0x0002} 16830\\ 16831\hline 16832\end{tabulary} 16833\par 16834\sphinxattableend\end{savenotes} 16835 16836 16837\subsubsection{ENCTYPE\_DES\_CBC\_MD5} 16838\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:enctype-des-cbc-md5-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:enctype-des-cbc-md5}}\index{ENCTYPE\_DES\_CBC\_MD5 (built-in variable)} 16839 16840\begin{fulllineitems} 16841\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:ENCTYPE_DES_CBC_MD5}}\pysigline{\sphinxbfcode{ENCTYPE\_DES\_CBC\_MD5}} 16842\end{fulllineitems} 16843 16844 16845 16846\begin{savenotes}\sphinxattablestart 16847\centering 16848\begin{tabulary}{\linewidth}[t]{|T|T|} 16849\hline 16850 16851\sphinxcode{ENCTYPE\_DES\_CBC\_MD5} 16852& 16853\sphinxcode{0x0003} 16854\\ 16855\hline 16856\end{tabulary} 16857\par 16858\sphinxattableend\end{savenotes} 16859 16860 16861\subsubsection{ENCTYPE\_DES\_CBC\_RAW} 16862\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:enctype-des-cbc-raw-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:enctype-des-cbc-raw}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW::doc}}\index{ENCTYPE\_DES\_CBC\_RAW (built-in variable)} 16863 16864\begin{fulllineitems} 16865\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:ENCTYPE_DES_CBC_RAW}}\pysigline{\sphinxbfcode{ENCTYPE\_DES\_CBC\_RAW}} 16866\end{fulllineitems} 16867 16868 16869 16870\begin{savenotes}\sphinxattablestart 16871\centering 16872\begin{tabulary}{\linewidth}[t]{|T|T|} 16873\hline 16874 16875\sphinxcode{ENCTYPE\_DES\_CBC\_RAW} 16876& 16877\sphinxcode{0x0004} 16878\\ 16879\hline 16880\end{tabulary} 16881\par 16882\sphinxattableend\end{savenotes} 16883 16884 16885\subsubsection{ENCTYPE\_DES\_HMAC\_SHA1} 16886\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:enctype-des-hmac-sha1-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:enctype-des-hmac-sha1}}\index{ENCTYPE\_DES\_HMAC\_SHA1 (built-in variable)} 16887 16888\begin{fulllineitems} 16889\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:ENCTYPE_DES_HMAC_SHA1}}\pysigline{\sphinxbfcode{ENCTYPE\_DES\_HMAC\_SHA1}} 16890\end{fulllineitems} 16891 16892 16893 16894\begin{savenotes}\sphinxattablestart 16895\centering 16896\begin{tabulary}{\linewidth}[t]{|T|T|} 16897\hline 16898 16899\sphinxcode{ENCTYPE\_DES\_HMAC\_SHA1} 16900& 16901\sphinxcode{0x0008} 16902\\ 16903\hline 16904\end{tabulary} 16905\par 16906\sphinxattableend\end{savenotes} 16907 16908 16909\subsubsection{ENCTYPE\_DSA\_SHA1\_CMS} 16910\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:enctype-dsa-sha1-cms-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:enctype-dsa-sha1-cms}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS::doc}}\index{ENCTYPE\_DSA\_SHA1\_CMS (built-in variable)} 16911 16912\begin{fulllineitems} 16913\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:ENCTYPE_DSA_SHA1_CMS}}\pysigline{\sphinxbfcode{ENCTYPE\_DSA\_SHA1\_CMS}} 16914\end{fulllineitems} 16915 16916 16917DSA with SHA1, CMS signature. 16918 16919 16920\begin{savenotes}\sphinxattablestart 16921\centering 16922\begin{tabulary}{\linewidth}[t]{|T|T|} 16923\hline 16924 16925\sphinxcode{ENCTYPE\_DSA\_SHA1\_CMS} 16926& 16927\sphinxcode{0x0009} 16928\\ 16929\hline 16930\end{tabulary} 16931\par 16932\sphinxattableend\end{savenotes} 16933 16934 16935\subsubsection{ENCTYPE\_MD5\_RSA\_CMS} 16936\label{\detokenize{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:enctype-md5-rsa-cms}}\label{\detokenize{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:enctype-md5-rsa-cms-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS::doc}}\index{ENCTYPE\_MD5\_RSA\_CMS (built-in variable)} 16937 16938\begin{fulllineitems} 16939\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:ENCTYPE_MD5_RSA_CMS}}\pysigline{\sphinxbfcode{ENCTYPE\_MD5\_RSA\_CMS}} 16940\end{fulllineitems} 16941 16942 16943MD5 with RSA, CMS signature. 16944 16945 16946\begin{savenotes}\sphinxattablestart 16947\centering 16948\begin{tabulary}{\linewidth}[t]{|T|T|} 16949\hline 16950 16951\sphinxcode{ENCTYPE\_MD5\_RSA\_CMS} 16952& 16953\sphinxcode{0x000a} 16954\\ 16955\hline 16956\end{tabulary} 16957\par 16958\sphinxattableend\end{savenotes} 16959 16960 16961\subsubsection{ENCTYPE\_NULL} 16962\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL:enctype-null}}\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL:enctype-null-data}}\index{ENCTYPE\_NULL (built-in variable)} 16963 16964\begin{fulllineitems} 16965\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL:ENCTYPE_NULL}}\pysigline{\sphinxbfcode{ENCTYPE\_NULL}} 16966\end{fulllineitems} 16967 16968 16969 16970\begin{savenotes}\sphinxattablestart 16971\centering 16972\begin{tabulary}{\linewidth}[t]{|T|T|} 16973\hline 16974 16975\sphinxcode{ENCTYPE\_NULL} 16976& 16977\sphinxcode{0x0000} 16978\\ 16979\hline 16980\end{tabulary} 16981\par 16982\sphinxattableend\end{savenotes} 16983 16984 16985\subsubsection{ENCTYPE\_RC2\_CBC\_ENV} 16986\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:enctype-rc2-cbc-env}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:enctype-rc2-cbc-env-data}}\index{ENCTYPE\_RC2\_CBC\_ENV (built-in variable)} 16987 16988\begin{fulllineitems} 16989\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:ENCTYPE_RC2_CBC_ENV}}\pysigline{\sphinxbfcode{ENCTYPE\_RC2\_CBC\_ENV}} 16990\end{fulllineitems} 16991 16992 16993RC2 cbc mode, CMS enveloped data. 16994 16995 16996\begin{savenotes}\sphinxattablestart 16997\centering 16998\begin{tabulary}{\linewidth}[t]{|T|T|} 16999\hline 17000 17001\sphinxcode{ENCTYPE\_RC2\_CBC\_ENV} 17002& 17003\sphinxcode{0x000c} 17004\\ 17005\hline 17006\end{tabulary} 17007\par 17008\sphinxattableend\end{savenotes} 17009 17010 17011\subsubsection{ENCTYPE\_RSA\_ENV} 17012\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV:enctype-rsa-env-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV:enctype-rsa-env}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV::doc}}\index{ENCTYPE\_RSA\_ENV (built-in variable)} 17013 17014\begin{fulllineitems} 17015\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV:ENCTYPE_RSA_ENV}}\pysigline{\sphinxbfcode{ENCTYPE\_RSA\_ENV}} 17016\end{fulllineitems} 17017 17018 17019RSA encryption, CMS enveloped data. 17020 17021 17022\begin{savenotes}\sphinxattablestart 17023\centering 17024\begin{tabulary}{\linewidth}[t]{|T|T|} 17025\hline 17026 17027\sphinxcode{ENCTYPE\_RSA\_ENV} 17028& 17029\sphinxcode{0x000d} 17030\\ 17031\hline 17032\end{tabulary} 17033\par 17034\sphinxattableend\end{savenotes} 17035 17036 17037\subsubsection{ENCTYPE\_RSA\_ES\_OAEP\_ENV} 17038\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:enctype-rsa-es-oaep-env}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:enctype-rsa-es-oaep-env-data}}\index{ENCTYPE\_RSA\_ES\_OAEP\_ENV (built-in variable)} 17039 17040\begin{fulllineitems} 17041\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:ENCTYPE_RSA_ES_OAEP_ENV}}\pysigline{\sphinxbfcode{ENCTYPE\_RSA\_ES\_OAEP\_ENV}} 17042\end{fulllineitems} 17043 17044 17045RSA w/OEAP encryption, CMS enveloped data. 17046 17047 17048\begin{savenotes}\sphinxattablestart 17049\centering 17050\begin{tabulary}{\linewidth}[t]{|T|T|} 17051\hline 17052 17053\sphinxcode{ENCTYPE\_RSA\_ES\_OAEP\_ENV} 17054& 17055\sphinxcode{0x000e} 17056\\ 17057\hline 17058\end{tabulary} 17059\par 17060\sphinxattableend\end{savenotes} 17061 17062 17063\subsubsection{ENCTYPE\_SHA1\_RSA\_CMS} 17064\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:enctype-sha1-rsa-cms-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:enctype-sha1-rsa-cms}}\index{ENCTYPE\_SHA1\_RSA\_CMS (built-in variable)} 17065 17066\begin{fulllineitems} 17067\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:ENCTYPE_SHA1_RSA_CMS}}\pysigline{\sphinxbfcode{ENCTYPE\_SHA1\_RSA\_CMS}} 17068\end{fulllineitems} 17069 17070 17071SHA1 with RSA, CMS signature. 17072 17073 17074\begin{savenotes}\sphinxattablestart 17075\centering 17076\begin{tabulary}{\linewidth}[t]{|T|T|} 17077\hline 17078 17079\sphinxcode{ENCTYPE\_SHA1\_RSA\_CMS} 17080& 17081\sphinxcode{0x000b} 17082\\ 17083\hline 17084\end{tabulary} 17085\par 17086\sphinxattableend\end{savenotes} 17087 17088 17089\subsubsection{ENCTYPE\_UNKNOWN} 17090\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN:enctype-unknown}}\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN::doc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN:enctype-unknown-data}}\index{ENCTYPE\_UNKNOWN (built-in variable)} 17091 17092\begin{fulllineitems} 17093\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN:ENCTYPE_UNKNOWN}}\pysigline{\sphinxbfcode{ENCTYPE\_UNKNOWN}} 17094\end{fulllineitems} 17095 17096 17097 17098\begin{savenotes}\sphinxattablestart 17099\centering 17100\begin{tabulary}{\linewidth}[t]{|T|T|} 17101\hline 17102 17103\sphinxcode{ENCTYPE\_UNKNOWN} 17104& 17105\sphinxcode{0x01ff} 17106\\ 17107\hline 17108\end{tabulary} 17109\par 17110\sphinxattableend\end{savenotes} 17111 17112 17113\subsubsection{KDC\_OPT\_ALLOW\_POSTDATE} 17114\label{\detokenize{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:kdc-opt-allow-postdate}}\label{\detokenize{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:kdc-opt-allow-postdate-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE::doc}}\index{KDC\_OPT\_ALLOW\_POSTDATE (built-in variable)} 17115 17116\begin{fulllineitems} 17117\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:KDC_OPT_ALLOW_POSTDATE}}\pysigline{\sphinxbfcode{KDC\_OPT\_ALLOW\_POSTDATE}} 17118\end{fulllineitems} 17119 17120 17121 17122\begin{savenotes}\sphinxattablestart 17123\centering 17124\begin{tabulary}{\linewidth}[t]{|T|T|} 17125\hline 17126 17127\sphinxcode{KDC\_OPT\_ALLOW\_POSTDATE} 17128& 17129\sphinxcode{0x04000000} 17130\\ 17131\hline 17132\end{tabulary} 17133\par 17134\sphinxattableend\end{savenotes} 17135 17136 17137\subsubsection{KDC\_OPT\_CANONICALIZE} 17138\label{\detokenize{appdev/refs/macros/KDC_OPT_CANONICALIZE:kdc-opt-canonicalize}}\label{\detokenize{appdev/refs/macros/KDC_OPT_CANONICALIZE:kdc-opt-canonicalize-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_CANONICALIZE::doc}}\index{KDC\_OPT\_CANONICALIZE (built-in variable)} 17139 17140\begin{fulllineitems} 17141\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_CANONICALIZE:KDC_OPT_CANONICALIZE}}\pysigline{\sphinxbfcode{KDC\_OPT\_CANONICALIZE}} 17142\end{fulllineitems} 17143 17144 17145 17146\begin{savenotes}\sphinxattablestart 17147\centering 17148\begin{tabulary}{\linewidth}[t]{|T|T|} 17149\hline 17150 17151\sphinxcode{KDC\_OPT\_CANONICALIZE} 17152& 17153\sphinxcode{0x00010000} 17154\\ 17155\hline 17156\end{tabulary} 17157\par 17158\sphinxattableend\end{savenotes} 17159 17160 17161\subsubsection{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT} 17162\label{\detokenize{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:kdc-opt-cname-in-addl-tkt-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:kdc-opt-cname-in-addl-tkt}}\label{\detokenize{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT::doc}}\index{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT (built-in variable)} 17163 17164\begin{fulllineitems} 17165\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:KDC_OPT_CNAME_IN_ADDL_TKT}}\pysigline{\sphinxbfcode{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}} 17166\end{fulllineitems} 17167 17168 17169 17170\begin{savenotes}\sphinxattablestart 17171\centering 17172\begin{tabulary}{\linewidth}[t]{|T|T|} 17173\hline 17174 17175\sphinxcode{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT} 17176& 17177\sphinxcode{0x00020000} 17178\\ 17179\hline 17180\end{tabulary} 17181\par 17182\sphinxattableend\end{savenotes} 17183 17184 17185\subsubsection{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK} 17186\label{\detokenize{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:kdc-opt-disable-transited-check}}\label{\detokenize{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:kdc-opt-disable-transited-check-data}}\index{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK (built-in variable)} 17187 17188\begin{fulllineitems} 17189\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:KDC_OPT_DISABLE_TRANSITED_CHECK}}\pysigline{\sphinxbfcode{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}} 17190\end{fulllineitems} 17191 17192 17193 17194\begin{savenotes}\sphinxattablestart 17195\centering 17196\begin{tabulary}{\linewidth}[t]{|T|T|} 17197\hline 17198 17199\sphinxcode{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK} 17200& 17201\sphinxcode{0x00000020} 17202\\ 17203\hline 17204\end{tabulary} 17205\par 17206\sphinxattableend\end{savenotes} 17207 17208 17209\subsubsection{KDC\_OPT\_ENC\_TKT\_IN\_SKEY} 17210\label{\detokenize{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY:kdc-opt-enc-tkt-in-skey}}\label{\detokenize{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY::doc}}\label{\detokenize{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)} 17211 17212\begin{fulllineitems} 17213\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY:KDC_OPT_ENC_TKT_IN_SKEY}}\pysigline{\sphinxbfcode{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}} 17214\end{fulllineitems} 17215 17216 17217 17218\begin{savenotes}\sphinxattablestart 17219\centering 17220\begin{tabulary}{\linewidth}[t]{|T|T|} 17221\hline 17222 17223\sphinxcode{KDC\_OPT\_ENC\_TKT\_IN\_SKEY} 17224& 17225\sphinxcode{0x00000008} 17226\\ 17227\hline 17228\end{tabulary} 17229\par 17230\sphinxattableend\end{savenotes} 17231 17232 17233\subsubsection{KDC\_OPT\_FORWARDABLE} 17234\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE:kdc-opt-forwardable-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE:kdc-opt-forwardable}}\index{KDC\_OPT\_FORWARDABLE (built-in variable)} 17235 17236\begin{fulllineitems} 17237\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE:KDC_OPT_FORWARDABLE}}\pysigline{\sphinxbfcode{KDC\_OPT\_FORWARDABLE}} 17238\end{fulllineitems} 17239 17240 17241 17242\begin{savenotes}\sphinxattablestart 17243\centering 17244\begin{tabulary}{\linewidth}[t]{|T|T|} 17245\hline 17246 17247\sphinxcode{KDC\_OPT\_FORWARDABLE} 17248& 17249\sphinxcode{0x40000000} 17250\\ 17251\hline 17252\end{tabulary} 17253\par 17254\sphinxattableend\end{savenotes} 17255 17256 17257\subsubsection{KDC\_OPT\_FORWARDED} 17258\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED:kdc-opt-forwarded}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED:kdc-opt-forwarded-data}}\index{KDC\_OPT\_FORWARDED (built-in variable)} 17259 17260\begin{fulllineitems} 17261\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED:KDC_OPT_FORWARDED}}\pysigline{\sphinxbfcode{KDC\_OPT\_FORWARDED}} 17262\end{fulllineitems} 17263 17264 17265 17266\begin{savenotes}\sphinxattablestart 17267\centering 17268\begin{tabulary}{\linewidth}[t]{|T|T|} 17269\hline 17270 17271\sphinxcode{KDC\_OPT\_FORWARDED} 17272& 17273\sphinxcode{0x20000000} 17274\\ 17275\hline 17276\end{tabulary} 17277\par 17278\sphinxattableend\end{savenotes} 17279 17280 17281\subsubsection{KDC\_OPT\_POSTDATED} 17282\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED:kdc-opt-postdated-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED:kdc-opt-postdated}}\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED::doc}}\index{KDC\_OPT\_POSTDATED (built-in variable)} 17283 17284\begin{fulllineitems} 17285\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED:KDC_OPT_POSTDATED}}\pysigline{\sphinxbfcode{KDC\_OPT\_POSTDATED}} 17286\end{fulllineitems} 17287 17288 17289 17290\begin{savenotes}\sphinxattablestart 17291\centering 17292\begin{tabulary}{\linewidth}[t]{|T|T|} 17293\hline 17294 17295\sphinxcode{KDC\_OPT\_POSTDATED} 17296& 17297\sphinxcode{0x02000000} 17298\\ 17299\hline 17300\end{tabulary} 17301\par 17302\sphinxattableend\end{savenotes} 17303 17304 17305\subsubsection{KDC\_OPT\_PROXIABLE} 17306\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE:kdc-opt-proxiable-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE:kdc-opt-proxiable}}\index{KDC\_OPT\_PROXIABLE (built-in variable)} 17307 17308\begin{fulllineitems} 17309\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE:KDC_OPT_PROXIABLE}}\pysigline{\sphinxbfcode{KDC\_OPT\_PROXIABLE}} 17310\end{fulllineitems} 17311 17312 17313 17314\begin{savenotes}\sphinxattablestart 17315\centering 17316\begin{tabulary}{\linewidth}[t]{|T|T|} 17317\hline 17318 17319\sphinxcode{KDC\_OPT\_PROXIABLE} 17320& 17321\sphinxcode{0x10000000} 17322\\ 17323\hline 17324\end{tabulary} 17325\par 17326\sphinxattableend\end{savenotes} 17327 17328 17329\subsubsection{KDC\_OPT\_PROXY} 17330\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY:kdc-opt-proxy}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY:kdc-opt-proxy-data}}\index{KDC\_OPT\_PROXY (built-in variable)} 17331 17332\begin{fulllineitems} 17333\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY:KDC_OPT_PROXY}}\pysigline{\sphinxbfcode{KDC\_OPT\_PROXY}} 17334\end{fulllineitems} 17335 17336 17337 17338\begin{savenotes}\sphinxattablestart 17339\centering 17340\begin{tabulary}{\linewidth}[t]{|T|T|} 17341\hline 17342 17343\sphinxcode{KDC\_OPT\_PROXY} 17344& 17345\sphinxcode{0x08000000} 17346\\ 17347\hline 17348\end{tabulary} 17349\par 17350\sphinxattableend\end{savenotes} 17351 17352 17353\subsubsection{KDC\_OPT\_RENEW} 17354\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW:kdc-opt-renew}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW:kdc-opt-renew-data}}\index{KDC\_OPT\_RENEW (built-in variable)} 17355 17356\begin{fulllineitems} 17357\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW:KDC_OPT_RENEW}}\pysigline{\sphinxbfcode{KDC\_OPT\_RENEW}} 17358\end{fulllineitems} 17359 17360 17361 17362\begin{savenotes}\sphinxattablestart 17363\centering 17364\begin{tabulary}{\linewidth}[t]{|T|T|} 17365\hline 17366 17367\sphinxcode{KDC\_OPT\_RENEW} 17368& 17369\sphinxcode{0x00000002} 17370\\ 17371\hline 17372\end{tabulary} 17373\par 17374\sphinxattableend\end{savenotes} 17375 17376 17377\subsubsection{KDC\_OPT\_RENEWABLE} 17378\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE:kdc-opt-renewable}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE:kdc-opt-renewable-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE::doc}}\index{KDC\_OPT\_RENEWABLE (built-in variable)} 17379 17380\begin{fulllineitems} 17381\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE:KDC_OPT_RENEWABLE}}\pysigline{\sphinxbfcode{KDC\_OPT\_RENEWABLE}} 17382\end{fulllineitems} 17383 17384 17385 17386\begin{savenotes}\sphinxattablestart 17387\centering 17388\begin{tabulary}{\linewidth}[t]{|T|T|} 17389\hline 17390 17391\sphinxcode{KDC\_OPT\_RENEWABLE} 17392& 17393\sphinxcode{0x00800000} 17394\\ 17395\hline 17396\end{tabulary} 17397\par 17398\sphinxattableend\end{savenotes} 17399 17400 17401\subsubsection{KDC\_OPT\_RENEWABLE\_OK} 17402\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK::doc}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:kdc-opt-renewable-ok-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:kdc-opt-renewable-ok}}\index{KDC\_OPT\_RENEWABLE\_OK (built-in variable)} 17403 17404\begin{fulllineitems} 17405\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:KDC_OPT_RENEWABLE_OK}}\pysigline{\sphinxbfcode{KDC\_OPT\_RENEWABLE\_OK}} 17406\end{fulllineitems} 17407 17408 17409 17410\begin{savenotes}\sphinxattablestart 17411\centering 17412\begin{tabulary}{\linewidth}[t]{|T|T|} 17413\hline 17414 17415\sphinxcode{KDC\_OPT\_RENEWABLE\_OK} 17416& 17417\sphinxcode{0x00000010} 17418\\ 17419\hline 17420\end{tabulary} 17421\par 17422\sphinxattableend\end{savenotes} 17423 17424 17425\subsubsection{KDC\_OPT\_REQUEST\_ANONYMOUS} 17426\label{\detokenize{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:kdc-opt-request-anonymous}}\label{\detokenize{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:kdc-opt-request-anonymous-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS::doc}}\index{KDC\_OPT\_REQUEST\_ANONYMOUS (built-in variable)} 17427 17428\begin{fulllineitems} 17429\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:KDC_OPT_REQUEST_ANONYMOUS}}\pysigline{\sphinxbfcode{KDC\_OPT\_REQUEST\_ANONYMOUS}} 17430\end{fulllineitems} 17431 17432 17433 17434\begin{savenotes}\sphinxattablestart 17435\centering 17436\begin{tabulary}{\linewidth}[t]{|T|T|} 17437\hline 17438 17439\sphinxcode{KDC\_OPT\_REQUEST\_ANONYMOUS} 17440& 17441\sphinxcode{0x00008000} 17442\\ 17443\hline 17444\end{tabulary} 17445\par 17446\sphinxattableend\end{savenotes} 17447 17448 17449\subsubsection{KDC\_OPT\_VALIDATE} 17450\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE:kdc-opt-validate-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE:kdc-opt-validate}}\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE::doc}}\index{KDC\_OPT\_VALIDATE (built-in variable)} 17451 17452\begin{fulllineitems} 17453\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE:KDC_OPT_VALIDATE}}\pysigline{\sphinxbfcode{KDC\_OPT\_VALIDATE}} 17454\end{fulllineitems} 17455 17456 17457 17458\begin{savenotes}\sphinxattablestart 17459\centering 17460\begin{tabulary}{\linewidth}[t]{|T|T|} 17461\hline 17462 17463\sphinxcode{KDC\_OPT\_VALIDATE} 17464& 17465\sphinxcode{0x00000001} 17466\\ 17467\hline 17468\end{tabulary} 17469\par 17470\sphinxattableend\end{savenotes} 17471 17472 17473\subsubsection{KDC\_TKT\_COMMON\_MASK} 17474\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK:kdc-tkt-common-mask-data}}\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK::doc}}\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK:kdc-tkt-common-mask}}\index{KDC\_TKT\_COMMON\_MASK (built-in variable)} 17475 17476\begin{fulllineitems} 17477\phantomsection\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK:KDC_TKT_COMMON_MASK}}\pysigline{\sphinxbfcode{KDC\_TKT\_COMMON\_MASK}} 17478\end{fulllineitems} 17479 17480 17481 17482\begin{savenotes}\sphinxattablestart 17483\centering 17484\begin{tabulary}{\linewidth}[t]{|T|T|} 17485\hline 17486 17487\sphinxcode{KDC\_TKT\_COMMON\_MASK} 17488& 17489\sphinxcode{0x54800000} 17490\\ 17491\hline 17492\end{tabulary} 17493\par 17494\sphinxattableend\end{savenotes} 17495 17496 17497\subsubsection{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE} 17498\label{\detokenize{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:krb5-altauth-att-challenge-response}}\label{\detokenize{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:krb5-altauth-att-challenge-response-data}}\label{\detokenize{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE::doc}}\index{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE (built-in variable)} 17499 17500\begin{fulllineitems} 17501\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE}}\pysigline{\sphinxbfcode{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}} 17502\end{fulllineitems} 17503 17504 17505alternate authentication types 17506 17507 17508\begin{savenotes}\sphinxattablestart 17509\centering 17510\begin{tabulary}{\linewidth}[t]{|T|T|} 17511\hline 17512 17513\sphinxcode{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE} 17514& 17515\sphinxcode{64} 17516\\ 17517\hline 17518\end{tabulary} 17519\par 17520\sphinxattableend\end{savenotes} 17521 17522 17523\subsubsection{KRB5\_ANONYMOUS\_PRINCSTR} 17524\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:krb5-anonymous-princstr}}\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:krb5-anonymous-princstr-data}}\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR::doc}}\index{KRB5\_ANONYMOUS\_PRINCSTR (built-in variable)} 17525 17526\begin{fulllineitems} 17527\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR}}\pysigline{\sphinxbfcode{KRB5\_ANONYMOUS\_PRINCSTR}} 17528\end{fulllineitems} 17529 17530 17531Anonymous principal name. 17532 17533 17534\begin{savenotes}\sphinxattablestart 17535\centering 17536\begin{tabulary}{\linewidth}[t]{|T|T|} 17537\hline 17538 17539\sphinxcode{KRB5\_ANONYMOUS\_PRINCSTR} 17540& 17541\sphinxcode{"ANONYMOUS"} 17542\\ 17543\hline 17544\end{tabulary} 17545\par 17546\sphinxattableend\end{savenotes} 17547 17548 17549\subsubsection{KRB5\_ANONYMOUS\_REALMSTR} 17550\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:krb5-anonymous-realmstr-data}}\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:krb5-anonymous-realmstr}}\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR::doc}}\index{KRB5\_ANONYMOUS\_REALMSTR (built-in variable)} 17551 17552\begin{fulllineitems} 17553\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR}}\pysigline{\sphinxbfcode{KRB5\_ANONYMOUS\_REALMSTR}} 17554\end{fulllineitems} 17555 17556 17557Anonymous realm. 17558 17559 17560\begin{savenotes}\sphinxattablestart 17561\centering 17562\begin{tabulary}{\linewidth}[t]{|T|T|} 17563\hline 17564 17565\sphinxcode{KRB5\_ANONYMOUS\_REALMSTR} 17566& 17567\sphinxcode{"WELLKNOWN:ANONYMOUS"} 17568\\ 17569\hline 17570\end{tabulary} 17571\par 17572\sphinxattableend\end{savenotes} 17573 17574 17575\subsubsection{KRB5\_AP\_REP} 17576\label{\detokenize{appdev/refs/macros/KRB5_AP_REP:krb5-ap-rep}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REP::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REP:krb5-ap-rep-data}}\index{KRB5\_AP\_REP (built-in variable)} 17577 17578\begin{fulllineitems} 17579\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AP_REP:KRB5_AP_REP}}\pysigline{\sphinxbfcode{KRB5\_AP\_REP}} 17580\end{fulllineitems} 17581 17582 17583Response to mutual AP request. 17584 17585 17586\begin{savenotes}\sphinxattablestart 17587\centering 17588\begin{tabulary}{\linewidth}[t]{|T|T|} 17589\hline 17590 17591\sphinxcode{KRB5\_AP\_REP} 17592& 17593\sphinxcode{((krb5\_msgtype)15)} 17594\\ 17595\hline 17596\end{tabulary} 17597\par 17598\sphinxattableend\end{savenotes} 17599 17600 17601\subsubsection{KRB5\_AP\_REQ} 17602\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ:krb5-ap-req}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ:krb5-ap-req-data}}\index{KRB5\_AP\_REQ (built-in variable)} 17603 17604\begin{fulllineitems} 17605\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ:KRB5_AP_REQ}}\pysigline{\sphinxbfcode{KRB5\_AP\_REQ}} 17606\end{fulllineitems} 17607 17608 17609Auth req to application server. 17610 17611 17612\begin{savenotes}\sphinxattablestart 17613\centering 17614\begin{tabulary}{\linewidth}[t]{|T|T|} 17615\hline 17616 17617\sphinxcode{KRB5\_AP\_REQ} 17618& 17619\sphinxcode{((krb5\_msgtype)14)} 17620\\ 17621\hline 17622\end{tabulary} 17623\par 17624\sphinxattableend\end{savenotes} 17625 17626 17627\subsubsection{KRB5\_AS\_REP} 17628\label{\detokenize{appdev/refs/macros/KRB5_AS_REP:krb5-as-rep}}\label{\detokenize{appdev/refs/macros/KRB5_AS_REP:krb5-as-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_AS_REP::doc}}\index{KRB5\_AS\_REP (built-in variable)} 17629 17630\begin{fulllineitems} 17631\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AS_REP:KRB5_AS_REP}}\pysigline{\sphinxbfcode{KRB5\_AS\_REP}} 17632\end{fulllineitems} 17633 17634 17635Response to AS request. 17636 17637 17638\begin{savenotes}\sphinxattablestart 17639\centering 17640\begin{tabulary}{\linewidth}[t]{|T|T|} 17641\hline 17642 17643\sphinxcode{KRB5\_AS\_REP} 17644& 17645\sphinxcode{((krb5\_msgtype)11)} 17646\\ 17647\hline 17648\end{tabulary} 17649\par 17650\sphinxattableend\end{savenotes} 17651 17652 17653\subsubsection{KRB5\_AS\_REQ} 17654\label{\detokenize{appdev/refs/macros/KRB5_AS_REQ:krb5-as-req}}\label{\detokenize{appdev/refs/macros/KRB5_AS_REQ:krb5-as-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_AS_REQ::doc}}\index{KRB5\_AS\_REQ (built-in variable)} 17655 17656\begin{fulllineitems} 17657\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AS_REQ:KRB5_AS_REQ}}\pysigline{\sphinxbfcode{KRB5\_AS\_REQ}} 17658\end{fulllineitems} 17659 17660 17661Initial authentication request. 17662 17663 17664\begin{savenotes}\sphinxattablestart 17665\centering 17666\begin{tabulary}{\linewidth}[t]{|T|T|} 17667\hline 17668 17669\sphinxcode{KRB5\_AS\_REQ} 17670& 17671\sphinxcode{((krb5\_msgtype)10)} 17672\\ 17673\hline 17674\end{tabulary} 17675\par 17676\sphinxattableend\end{savenotes} 17677 17678 17679\subsubsection{KRB5\_AUTHDATA\_AND\_OR} 17680\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:krb5-authdata-and-or-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:krb5-authdata-and-or}}\index{KRB5\_AUTHDATA\_AND\_OR (built-in variable)} 17681 17682\begin{fulllineitems} 17683\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:KRB5_AUTHDATA_AND_OR}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_AND\_OR}} 17684\end{fulllineitems} 17685 17686 17687 17688\begin{savenotes}\sphinxattablestart 17689\centering 17690\begin{tabulary}{\linewidth}[t]{|T|T|} 17691\hline 17692 17693\sphinxcode{KRB5\_AUTHDATA\_AND\_OR} 17694& 17695\sphinxcode{5} 17696\\ 17697\hline 17698\end{tabulary} 17699\par 17700\sphinxattableend\end{savenotes} 17701 17702 17703\subsubsection{KRB5\_AUTHDATA\_AUTH\_INDICATOR} 17704\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR:krb5-authdata-auth-indicator}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR:krb5-authdata-auth-indicator-data}}\index{KRB5\_AUTHDATA\_AUTH\_INDICATOR (built-in variable)} 17705 17706\begin{fulllineitems} 17707\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR:KRB5_AUTHDATA_AUTH_INDICATOR}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_AUTH\_INDICATOR}} 17708\end{fulllineitems} 17709 17710 17711 17712\begin{savenotes}\sphinxattablestart 17713\centering 17714\begin{tabulary}{\linewidth}[t]{|T|T|} 17715\hline 17716 17717\sphinxcode{KRB5\_AUTHDATA\_AUTH\_INDICATOR} 17718& 17719\sphinxcode{97} 17720\\ 17721\hline 17722\end{tabulary} 17723\par 17724\sphinxattableend\end{savenotes} 17725 17726 17727\subsubsection{KRB5\_AUTHDATA\_CAMMAC} 17728\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC:krb5-authdata-cammac}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC:krb5-authdata-cammac-data}}\index{KRB5\_AUTHDATA\_CAMMAC (built-in variable)} 17729 17730\begin{fulllineitems} 17731\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC:KRB5_AUTHDATA_CAMMAC}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_CAMMAC}} 17732\end{fulllineitems} 17733 17734 17735 17736\begin{savenotes}\sphinxattablestart 17737\centering 17738\begin{tabulary}{\linewidth}[t]{|T|T|} 17739\hline 17740 17741\sphinxcode{KRB5\_AUTHDATA\_CAMMAC} 17742& 17743\sphinxcode{96} 17744\\ 17745\hline 17746\end{tabulary} 17747\par 17748\sphinxattableend\end{savenotes} 17749 17750 17751\subsubsection{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION} 17752\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:krb5-authdata-etype-negotiation}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:krb5-authdata-etype-negotiation-data}}\index{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION (built-in variable)} 17753 17754\begin{fulllineitems} 17755\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:KRB5_AUTHDATA_ETYPE_NEGOTIATION}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}} 17756\end{fulllineitems} 17757 17758 17759RFC 4537. 17760 17761 17762\begin{savenotes}\sphinxattablestart 17763\centering 17764\begin{tabulary}{\linewidth}[t]{|T|T|} 17765\hline 17766 17767\sphinxcode{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION} 17768& 17769\sphinxcode{129} 17770\\ 17771\hline 17772\end{tabulary} 17773\par 17774\sphinxattableend\end{savenotes} 17775 17776 17777\subsubsection{KRB5\_AUTHDATA\_FX\_ARMOR} 17778\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:krb5-authdata-fx-armor}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:krb5-authdata-fx-armor-data}}\index{KRB5\_AUTHDATA\_FX\_ARMOR (built-in variable)} 17779 17780\begin{fulllineitems} 17781\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:KRB5_AUTHDATA_FX_ARMOR}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_FX\_ARMOR}} 17782\end{fulllineitems} 17783 17784 17785 17786\begin{savenotes}\sphinxattablestart 17787\centering 17788\begin{tabulary}{\linewidth}[t]{|T|T|} 17789\hline 17790 17791\sphinxcode{KRB5\_AUTHDATA\_FX\_ARMOR} 17792& 17793\sphinxcode{71} 17794\\ 17795\hline 17796\end{tabulary} 17797\par 17798\sphinxattableend\end{savenotes} 17799 17800 17801\subsubsection{KRB5\_AUTHDATA\_IF\_RELEVANT} 17802\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:krb5-authdata-if-relevant-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:krb5-authdata-if-relevant}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT::doc}}\index{KRB5\_AUTHDATA\_IF\_RELEVANT (built-in variable)} 17803 17804\begin{fulllineitems} 17805\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:KRB5_AUTHDATA_IF_RELEVANT}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_IF\_RELEVANT}} 17806\end{fulllineitems} 17807 17808 17809 17810\begin{savenotes}\sphinxattablestart 17811\centering 17812\begin{tabulary}{\linewidth}[t]{|T|T|} 17813\hline 17814 17815\sphinxcode{KRB5\_AUTHDATA\_IF\_RELEVANT} 17816& 17817\sphinxcode{1} 17818\\ 17819\hline 17820\end{tabulary} 17821\par 17822\sphinxattableend\end{savenotes} 17823 17824 17825\subsubsection{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS} 17826\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:krb5-authdata-initial-verified-cas-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:krb5-authdata-initial-verified-cas}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS::doc}}\index{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS (built-in variable)} 17827 17828\begin{fulllineitems} 17829\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:KRB5_AUTHDATA_INITIAL_VERIFIED_CAS}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}} 17830\end{fulllineitems} 17831 17832 17833 17834\begin{savenotes}\sphinxattablestart 17835\centering 17836\begin{tabulary}{\linewidth}[t]{|T|T|} 17837\hline 17838 17839\sphinxcode{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS} 17840& 17841\sphinxcode{9} 17842\\ 17843\hline 17844\end{tabulary} 17845\par 17846\sphinxattableend\end{savenotes} 17847 17848 17849\subsubsection{KRB5\_AUTHDATA\_KDC\_ISSUED} 17850\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:krb5-authdata-kdc-issued-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:krb5-authdata-kdc-issued}}\index{KRB5\_AUTHDATA\_KDC\_ISSUED (built-in variable)} 17851 17852\begin{fulllineitems} 17853\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:KRB5_AUTHDATA_KDC_ISSUED}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_KDC\_ISSUED}} 17854\end{fulllineitems} 17855 17856 17857 17858\begin{savenotes}\sphinxattablestart 17859\centering 17860\begin{tabulary}{\linewidth}[t]{|T|T|} 17861\hline 17862 17863\sphinxcode{KRB5\_AUTHDATA\_KDC\_ISSUED} 17864& 17865\sphinxcode{4} 17866\\ 17867\hline 17868\end{tabulary} 17869\par 17870\sphinxattableend\end{savenotes} 17871 17872 17873\subsubsection{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC} 17874\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:krb5-authdata-mandatory-for-kdc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:krb5-authdata-mandatory-for-kdc-data}}\index{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC (built-in variable)} 17875 17876\begin{fulllineitems} 17877\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:KRB5_AUTHDATA_MANDATORY_FOR_KDC}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}} 17878\end{fulllineitems} 17879 17880 17881 17882\begin{savenotes}\sphinxattablestart 17883\centering 17884\begin{tabulary}{\linewidth}[t]{|T|T|} 17885\hline 17886 17887\sphinxcode{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC} 17888& 17889\sphinxcode{8} 17890\\ 17891\hline 17892\end{tabulary} 17893\par 17894\sphinxattableend\end{savenotes} 17895 17896 17897\subsubsection{KRB5\_AUTHDATA\_OSF\_DCE} 17898\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:krb5-authdata-osf-dce-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:krb5-authdata-osf-dce}}\index{KRB5\_AUTHDATA\_OSF\_DCE (built-in variable)} 17899 17900\begin{fulllineitems} 17901\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:KRB5_AUTHDATA_OSF_DCE}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_OSF\_DCE}} 17902\end{fulllineitems} 17903 17904 17905 17906\begin{savenotes}\sphinxattablestart 17907\centering 17908\begin{tabulary}{\linewidth}[t]{|T|T|} 17909\hline 17910 17911\sphinxcode{KRB5\_AUTHDATA\_OSF\_DCE} 17912& 17913\sphinxcode{64} 17914\\ 17915\hline 17916\end{tabulary} 17917\par 17918\sphinxattableend\end{savenotes} 17919 17920 17921\subsubsection{KRB5\_AUTHDATA\_SESAME} 17922\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME:krb5-authdata-sesame}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME:krb5-authdata-sesame-data}}\index{KRB5\_AUTHDATA\_SESAME (built-in variable)} 17923 17924\begin{fulllineitems} 17925\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME:KRB5_AUTHDATA_SESAME}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_SESAME}} 17926\end{fulllineitems} 17927 17928 17929 17930\begin{savenotes}\sphinxattablestart 17931\centering 17932\begin{tabulary}{\linewidth}[t]{|T|T|} 17933\hline 17934 17935\sphinxcode{KRB5\_AUTHDATA\_SESAME} 17936& 17937\sphinxcode{65} 17938\\ 17939\hline 17940\end{tabulary} 17941\par 17942\sphinxattableend\end{savenotes} 17943 17944 17945\subsubsection{KRB5\_AUTHDATA\_SIGNTICKET} 17946\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:krb5-authdata-signticket-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:krb5-authdata-signticket}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET::doc}}\index{KRB5\_AUTHDATA\_SIGNTICKET (built-in variable)} 17947 17948\begin{fulllineitems} 17949\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:KRB5_AUTHDATA_SIGNTICKET}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_SIGNTICKET}} 17950\end{fulllineitems} 17951 17952 17953formerly 142 in krb5 1.8 17954 17955 17956\begin{savenotes}\sphinxattablestart 17957\centering 17958\begin{tabulary}{\linewidth}[t]{|T|T|} 17959\hline 17960 17961\sphinxcode{KRB5\_AUTHDATA\_SIGNTICKET} 17962& 17963\sphinxcode{512} 17964\\ 17965\hline 17966\end{tabulary} 17967\par 17968\sphinxattableend\end{savenotes} 17969 17970 17971\subsubsection{KRB5\_AUTHDATA\_WIN2K\_PAC} 17972\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:krb5-authdata-win2k-pac-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:krb5-authdata-win2k-pac}}\index{KRB5\_AUTHDATA\_WIN2K\_PAC (built-in variable)} 17973 17974\begin{fulllineitems} 17975\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:KRB5_AUTHDATA_WIN2K_PAC}}\pysigline{\sphinxbfcode{KRB5\_AUTHDATA\_WIN2K\_PAC}} 17976\end{fulllineitems} 17977 17978 17979 17980\begin{savenotes}\sphinxattablestart 17981\centering 17982\begin{tabulary}{\linewidth}[t]{|T|T|} 17983\hline 17984 17985\sphinxcode{KRB5\_AUTHDATA\_WIN2K\_PAC} 17986& 17987\sphinxcode{128} 17988\\ 17989\hline 17990\end{tabulary} 17991\par 17992\sphinxattableend\end{savenotes} 17993 17994 17995\subsubsection{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE} 17996\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:krb5-auth-context-do-sequence-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:krb5-auth-context-do-sequence}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE::doc}}\index{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE (built-in variable)} 17997 17998\begin{fulllineitems} 17999\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}} 18000\end{fulllineitems} 18001 18002 18003Prevent replays with sequence numbers. 18004 18005 18006\begin{savenotes}\sphinxattablestart 18007\centering 18008\begin{tabulary}{\linewidth}[t]{|T|T|} 18009\hline 18010 18011\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE} 18012& 18013\sphinxcode{0x00000004} 18014\\ 18015\hline 18016\end{tabulary} 18017\par 18018\sphinxattableend\end{savenotes} 18019 18020 18021\subsubsection{KRB5\_AUTH\_CONTEXT\_DO\_TIME} 18022\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:krb5-auth-context-do-time-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:krb5-auth-context-do-time}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME::doc}}\index{KRB5\_AUTH\_CONTEXT\_DO\_TIME (built-in variable)} 18023 18024\begin{fulllineitems} 18025\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME}} 18026\end{fulllineitems} 18027 18028 18029Prevent replays with timestamps and replay cache. 18030 18031 18032\begin{savenotes}\sphinxattablestart 18033\centering 18034\begin{tabulary}{\linewidth}[t]{|T|T|} 18035\hline 18036 18037\sphinxcode{KRB5\_AUTH\_CONTEXT\_DO\_TIME} 18038& 18039\sphinxcode{0x00000001} 18040\\ 18041\hline 18042\end{tabulary} 18043\par 18044\sphinxattableend\end{savenotes} 18045 18046 18047\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR} 18048\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:krb5-auth-context-generate-local-addr}}\label{\detokenize{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)} 18049 18050\begin{fulllineitems} 18051\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}} 18052\end{fulllineitems} 18053 18054 18055Generate the local network address. 18056 18057 18058\begin{savenotes}\sphinxattablestart 18059\centering 18060\begin{tabulary}{\linewidth}[t]{|T|T|} 18061\hline 18062 18063\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR} 18064& 18065\sphinxcode{0x00000001} 18066\\ 18067\hline 18068\end{tabulary} 18069\par 18070\sphinxattableend\end{savenotes} 18071 18072 18073\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR} 18074\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:krb5-auth-context-generate-local-full-addr}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:krb5-auth-context-generate-local-full-addr-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR::doc}}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR (built-in variable)} 18075 18076\begin{fulllineitems} 18077\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}} 18078\end{fulllineitems} 18079 18080 18081Generate the local network address and the local port. 18082 18083 18084\begin{savenotes}\sphinxattablestart 18085\centering 18086\begin{tabulary}{\linewidth}[t]{|T|T|} 18087\hline 18088 18089\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR} 18090& 18091\sphinxcode{0x00000004} 18092\\ 18093\hline 18094\end{tabulary} 18095\par 18096\sphinxattableend\end{savenotes} 18097 18098 18099\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR} 18100\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:krb5-auth-context-generate-remote-addr-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:krb5-auth-context-generate-remote-addr}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR::doc}}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR (built-in variable)} 18101 18102\begin{fulllineitems} 18103\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}} 18104\end{fulllineitems} 18105 18106 18107Generate the remote network address. 18108 18109 18110\begin{savenotes}\sphinxattablestart 18111\centering 18112\begin{tabulary}{\linewidth}[t]{|T|T|} 18113\hline 18114 18115\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR} 18116& 18117\sphinxcode{0x00000002} 18118\\ 18119\hline 18120\end{tabulary} 18121\par 18122\sphinxattableend\end{savenotes} 18123 18124 18125\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR} 18126\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:krb5-auth-context-generate-remote-full-addr}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR::doc}}\label{\detokenize{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)} 18127 18128\begin{fulllineitems} 18129\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}} 18130\end{fulllineitems} 18131 18132 18133Generate the remote network address and the remote port. 18134 18135 18136\begin{savenotes}\sphinxattablestart 18137\centering 18138\begin{tabulary}{\linewidth}[t]{|T|T|} 18139\hline 18140 18141\sphinxcode{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR} 18142& 18143\sphinxcode{0x00000008} 18144\\ 18145\hline 18146\end{tabulary} 18147\par 18148\sphinxattableend\end{savenotes} 18149 18150 18151\subsubsection{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL} 18152\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:krb5-auth-context-permit-all}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:krb5-auth-context-permit-all-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL::doc}}\index{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL (built-in variable)} 18153 18154\begin{fulllineitems} 18155\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:KRB5_AUTH_CONTEXT_PERMIT_ALL}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}} 18156\end{fulllineitems} 18157 18158 18159 18160\begin{savenotes}\sphinxattablestart 18161\centering 18162\begin{tabulary}{\linewidth}[t]{|T|T|} 18163\hline 18164 18165\sphinxcode{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL} 18166& 18167\sphinxcode{0x00000010} 18168\\ 18169\hline 18170\end{tabulary} 18171\par 18172\sphinxattableend\end{savenotes} 18173 18174 18175\subsubsection{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE} 18176\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:krb5-auth-context-ret-sequence}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:krb5-auth-context-ret-sequence-data}}\index{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE (built-in variable)} 18177 18178\begin{fulllineitems} 18179\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}} 18180\end{fulllineitems} 18181 18182 18183Save sequence numbers for application. 18184 18185 18186\begin{savenotes}\sphinxattablestart 18187\centering 18188\begin{tabulary}{\linewidth}[t]{|T|T|} 18189\hline 18190 18191\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE} 18192& 18193\sphinxcode{0x00000008} 18194\\ 18195\hline 18196\end{tabulary} 18197\par 18198\sphinxattableend\end{savenotes} 18199 18200 18201\subsubsection{KRB5\_AUTH\_CONTEXT\_RET\_TIME} 18202\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:krb5-auth-context-ret-time}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:krb5-auth-context-ret-time-data}}\index{KRB5\_AUTH\_CONTEXT\_RET\_TIME (built-in variable)} 18203 18204\begin{fulllineitems} 18205\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME}} 18206\end{fulllineitems} 18207 18208 18209Save timestamps for application. 18210 18211 18212\begin{savenotes}\sphinxattablestart 18213\centering 18214\begin{tabulary}{\linewidth}[t]{|T|T|} 18215\hline 18216 18217\sphinxcode{KRB5\_AUTH\_CONTEXT\_RET\_TIME} 18218& 18219\sphinxcode{0x00000002} 18220\\ 18221\hline 18222\end{tabulary} 18223\par 18224\sphinxattableend\end{savenotes} 18225 18226 18227\subsubsection{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY} 18228\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:krb5-auth-context-use-subkey-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:krb5-auth-context-use-subkey}}\index{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY (built-in variable)} 18229 18230\begin{fulllineitems} 18231\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:KRB5_AUTH_CONTEXT_USE_SUBKEY}}\pysigline{\sphinxbfcode{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}} 18232\end{fulllineitems} 18233 18234 18235 18236\begin{savenotes}\sphinxattablestart 18237\centering 18238\begin{tabulary}{\linewidth}[t]{|T|T|} 18239\hline 18240 18241\sphinxcode{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY} 18242& 18243\sphinxcode{0x00000020} 18244\\ 18245\hline 18246\end{tabulary} 18247\par 18248\sphinxattableend\end{savenotes} 18249 18250 18251\subsubsection{KRB5\_CRED} 18252\label{\detokenize{appdev/refs/macros/KRB5_CRED:krb5-cred-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_CRED:krb5-cred}}\index{KRB5\_CRED (built-in variable)} 18253 18254\begin{fulllineitems} 18255\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRED:KRB5_CRED}}\pysigline{\sphinxbfcode{KRB5\_CRED}} 18256\end{fulllineitems} 18257 18258 18259Cred forwarding message. 18260 18261 18262\begin{savenotes}\sphinxattablestart 18263\centering 18264\begin{tabulary}{\linewidth}[t]{|T|T|} 18265\hline 18266 18267\sphinxcode{KRB5\_CRED} 18268& 18269\sphinxcode{((krb5\_msgtype)22)} 18270\\ 18271\hline 18272\end{tabulary} 18273\par 18274\sphinxattableend\end{savenotes} 18275 18276 18277\subsubsection{KRB5\_CRYPTO\_TYPE\_CHECKSUM} 18278\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:krb5-crypto-type-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:krb5-crypto-type-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM::doc}}\index{KRB5\_CRYPTO\_TYPE\_CHECKSUM (built-in variable)} 18279 18280\begin{fulllineitems} 18281\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM}} 18282\end{fulllineitems} 18283 18284 18285{[}out{]} checksum for MIC 18286 18287 18288\begin{savenotes}\sphinxattablestart 18289\centering 18290\begin{tabulary}{\linewidth}[t]{|T|T|} 18291\hline 18292 18293\sphinxcode{KRB5\_CRYPTO\_TYPE\_CHECKSUM} 18294& 18295\sphinxcode{6} 18296\\ 18297\hline 18298\end{tabulary} 18299\par 18300\sphinxattableend\end{savenotes} 18301 18302 18303\subsubsection{KRB5\_CRYPTO\_TYPE\_DATA} 18304\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA::doc}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:krb5-crypto-type-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:krb5-crypto-type-data-data}}\index{KRB5\_CRYPTO\_TYPE\_DATA (built-in variable)} 18305 18306\begin{fulllineitems} 18307\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_DATA}} 18308\end{fulllineitems} 18309 18310 18311{[}in, out{]} plaintext 18312 18313 18314\begin{savenotes}\sphinxattablestart 18315\centering 18316\begin{tabulary}{\linewidth}[t]{|T|T|} 18317\hline 18318 18319\sphinxcode{KRB5\_CRYPTO\_TYPE\_DATA} 18320& 18321\sphinxcode{2} 18322\\ 18323\hline 18324\end{tabulary} 18325\par 18326\sphinxattableend\end{savenotes} 18327 18328 18329\subsubsection{KRB5\_CRYPTO\_TYPE\_EMPTY} 18330\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:krb5-crypto-type-empty}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:krb5-crypto-type-empty-data}}\index{KRB5\_CRYPTO\_TYPE\_EMPTY (built-in variable)} 18331 18332\begin{fulllineitems} 18333\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:KRB5_CRYPTO_TYPE_EMPTY}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_EMPTY}} 18334\end{fulllineitems} 18335 18336 18337{[}in{]} ignored 18338 18339 18340\begin{savenotes}\sphinxattablestart 18341\centering 18342\begin{tabulary}{\linewidth}[t]{|T|T|} 18343\hline 18344 18345\sphinxcode{KRB5\_CRYPTO\_TYPE\_EMPTY} 18346& 18347\sphinxcode{0} 18348\\ 18349\hline 18350\end{tabulary} 18351\par 18352\sphinxattableend\end{savenotes} 18353 18354 18355\subsubsection{KRB5\_CRYPTO\_TYPE\_HEADER} 18356\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:krb5-crypto-type-header}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:krb5-crypto-type-header-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER::doc}}\index{KRB5\_CRYPTO\_TYPE\_HEADER (built-in variable)} 18357 18358\begin{fulllineitems} 18359\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:KRB5_CRYPTO_TYPE_HEADER}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_HEADER}} 18360\end{fulllineitems} 18361 18362 18363{[}out{]} header 18364 18365 18366\begin{savenotes}\sphinxattablestart 18367\centering 18368\begin{tabulary}{\linewidth}[t]{|T|T|} 18369\hline 18370 18371\sphinxcode{KRB5\_CRYPTO\_TYPE\_HEADER} 18372& 18373\sphinxcode{1} 18374\\ 18375\hline 18376\end{tabulary} 18377\par 18378\sphinxattableend\end{savenotes} 18379 18380 18381\subsubsection{KRB5\_CRYPTO\_TYPE\_PADDING} 18382\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING::doc}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:krb5-crypto-type-padding-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:krb5-crypto-type-padding}}\index{KRB5\_CRYPTO\_TYPE\_PADDING (built-in variable)} 18383 18384\begin{fulllineitems} 18385\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:KRB5_CRYPTO_TYPE_PADDING}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_PADDING}} 18386\end{fulllineitems} 18387 18388 18389{[}out{]} padding 18390 18391 18392\begin{savenotes}\sphinxattablestart 18393\centering 18394\begin{tabulary}{\linewidth}[t]{|T|T|} 18395\hline 18396 18397\sphinxcode{KRB5\_CRYPTO\_TYPE\_PADDING} 18398& 18399\sphinxcode{4} 18400\\ 18401\hline 18402\end{tabulary} 18403\par 18404\sphinxattableend\end{savenotes} 18405 18406 18407\subsubsection{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY} 18408\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:krb5-crypto-type-sign-only}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:krb5-crypto-type-sign-only-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY::doc}}\index{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY (built-in variable)} 18409 18410\begin{fulllineitems} 18411\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}} 18412\end{fulllineitems} 18413 18414 18415{[}in{]} associated data 18416 18417 18418\begin{savenotes}\sphinxattablestart 18419\centering 18420\begin{tabulary}{\linewidth}[t]{|T|T|} 18421\hline 18422 18423\sphinxcode{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY} 18424& 18425\sphinxcode{3} 18426\\ 18427\hline 18428\end{tabulary} 18429\par 18430\sphinxattableend\end{savenotes} 18431 18432 18433\subsubsection{KRB5\_CRYPTO\_TYPE\_STREAM} 18434\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:krb5-crypto-type-stream-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:krb5-crypto-type-stream}}\index{KRB5\_CRYPTO\_TYPE\_STREAM (built-in variable)} 18435 18436\begin{fulllineitems} 18437\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:KRB5_CRYPTO_TYPE_STREAM}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_STREAM}} 18438\end{fulllineitems} 18439 18440 18441{[}in{]} entire message without decomposing the structure into header, data and trailer buffers 18442 18443 18444\begin{savenotes}\sphinxattablestart 18445\centering 18446\begin{tabulary}{\linewidth}[t]{|T|T|} 18447\hline 18448 18449\sphinxcode{KRB5\_CRYPTO\_TYPE\_STREAM} 18450& 18451\sphinxcode{7} 18452\\ 18453\hline 18454\end{tabulary} 18455\par 18456\sphinxattableend\end{savenotes} 18457 18458 18459\subsubsection{KRB5\_CRYPTO\_TYPE\_TRAILER} 18460\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:krb5-crypto-type-trailer}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:krb5-crypto-type-trailer-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER::doc}}\index{KRB5\_CRYPTO\_TYPE\_TRAILER (built-in variable)} 18461 18462\begin{fulllineitems} 18463\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:KRB5_CRYPTO_TYPE_TRAILER}}\pysigline{\sphinxbfcode{KRB5\_CRYPTO\_TYPE\_TRAILER}} 18464\end{fulllineitems} 18465 18466 18467{[}out{]} checksum for encrypt 18468 18469 18470\begin{savenotes}\sphinxattablestart 18471\centering 18472\begin{tabulary}{\linewidth}[t]{|T|T|} 18473\hline 18474 18475\sphinxcode{KRB5\_CRYPTO\_TYPE\_TRAILER} 18476& 18477\sphinxcode{5} 18478\\ 18479\hline 18480\end{tabulary} 18481\par 18482\sphinxattableend\end{savenotes} 18483 18484 18485\subsubsection{KRB5\_CYBERSAFE\_SECUREID} 18486\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:krb5-cybersafe-secureid}}\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID::doc}}\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:krb5-cybersafe-secureid-data}}\index{KRB5\_CYBERSAFE\_SECUREID (built-in variable)} 18487 18488\begin{fulllineitems} 18489\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:KRB5_CYBERSAFE_SECUREID}}\pysigline{\sphinxbfcode{KRB5\_CYBERSAFE\_SECUREID}} 18490\end{fulllineitems} 18491 18492 18493Cybersafe. 18494 18495RFC 4120 18496 18497 18498\begin{savenotes}\sphinxattablestart 18499\centering 18500\begin{tabulary}{\linewidth}[t]{|T|T|} 18501\hline 18502 18503\sphinxcode{KRB5\_CYBERSAFE\_SECUREID} 18504& 18505\sphinxcode{9} 18506\\ 18507\hline 18508\end{tabulary} 18509\par 18510\sphinxattableend\end{savenotes} 18511 18512 18513\subsubsection{KRB5\_DOMAIN\_X500\_COMPRESS} 18514\label{\detokenize{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS::doc}}\label{\detokenize{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:krb5-domain-x500-compress}}\label{\detokenize{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:krb5-domain-x500-compress-data}}\index{KRB5\_DOMAIN\_X500\_COMPRESS (built-in variable)} 18515 18516\begin{fulllineitems} 18517\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:KRB5_DOMAIN_X500_COMPRESS}}\pysigline{\sphinxbfcode{KRB5\_DOMAIN\_X500\_COMPRESS}} 18518\end{fulllineitems} 18519 18520 18521Transited encoding types. 18522 18523 18524\begin{savenotes}\sphinxattablestart 18525\centering 18526\begin{tabulary}{\linewidth}[t]{|T|T|} 18527\hline 18528 18529\sphinxcode{KRB5\_DOMAIN\_X500\_COMPRESS} 18530& 18531\sphinxcode{1} 18532\\ 18533\hline 18534\end{tabulary} 18535\par 18536\sphinxattableend\end{savenotes} 18537 18538 18539\subsubsection{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP} 18540\label{\detokenize{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:krb5-encpadata-req-enc-pa-rep}}\label{\detokenize{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:krb5-encpadata-req-enc-pa-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP::doc}}\index{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP (built-in variable)} 18541 18542\begin{fulllineitems} 18543\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:KRB5_ENCPADATA_REQ_ENC_PA_REP}}\pysigline{\sphinxbfcode{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}} 18544\end{fulllineitems} 18545 18546 18547RFC 6806. 18548 18549 18550\begin{savenotes}\sphinxattablestart 18551\centering 18552\begin{tabulary}{\linewidth}[t]{|T|T|} 18553\hline 18554 18555\sphinxcode{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP} 18556& 18557\sphinxcode{149} 18558\\ 18559\hline 18560\end{tabulary} 18561\par 18562\sphinxattableend\end{savenotes} 18563 18564 18565\subsubsection{KRB5\_ERROR} 18566\label{\detokenize{appdev/refs/macros/KRB5_ERROR:krb5-error-data}}\label{\detokenize{appdev/refs/macros/KRB5_ERROR:krb5-error}}\label{\detokenize{appdev/refs/macros/KRB5_ERROR::doc}}\index{KRB5\_ERROR (built-in variable)} 18567 18568\begin{fulllineitems} 18569\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ERROR:KRB5_ERROR}}\pysigline{\sphinxbfcode{KRB5\_ERROR}} 18570\end{fulllineitems} 18571 18572 18573Error response. 18574 18575 18576\begin{savenotes}\sphinxattablestart 18577\centering 18578\begin{tabulary}{\linewidth}[t]{|T|T|} 18579\hline 18580 18581\sphinxcode{KRB5\_ERROR} 18582& 18583\sphinxcode{((krb5\_msgtype)30)} 18584\\ 18585\hline 18586\end{tabulary} 18587\par 18588\sphinxattableend\end{savenotes} 18589 18590 18591\subsubsection{KRB5\_FAST\_REQUIRED} 18592\label{\detokenize{appdev/refs/macros/KRB5_FAST_REQUIRED:krb5-fast-required}}\label{\detokenize{appdev/refs/macros/KRB5_FAST_REQUIRED:krb5-fast-required-data}}\label{\detokenize{appdev/refs/macros/KRB5_FAST_REQUIRED::doc}}\index{KRB5\_FAST\_REQUIRED (built-in variable)} 18593 18594\begin{fulllineitems} 18595\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED}}\pysigline{\sphinxbfcode{KRB5\_FAST\_REQUIRED}} 18596\end{fulllineitems} 18597 18598 18599Require KDC to support FAST. 18600 18601 18602\begin{savenotes}\sphinxattablestart 18603\centering 18604\begin{tabulary}{\linewidth}[t]{|T|T|} 18605\hline 18606 18607\sphinxcode{KRB5\_FAST\_REQUIRED} 18608& 18609\sphinxcode{0x0001} 18610\\ 18611\hline 18612\end{tabulary} 18613\par 18614\sphinxattableend\end{savenotes} 18615 18616 18617\subsubsection{KRB5\_GC\_CACHED} 18618\label{\detokenize{appdev/refs/macros/KRB5_GC_CACHED:krb5-gc-cached}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CACHED:krb5-gc-cached-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CACHED::doc}}\index{KRB5\_GC\_CACHED (built-in variable)} 18619 18620\begin{fulllineitems} 18621\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED}}\pysigline{\sphinxbfcode{KRB5\_GC\_CACHED}} 18622\end{fulllineitems} 18623 18624 18625Want cached ticket only. 18626 18627 18628\begin{savenotes}\sphinxattablestart 18629\centering 18630\begin{tabulary}{\linewidth}[t]{|T|T|} 18631\hline 18632 18633\sphinxcode{KRB5\_GC\_CACHED} 18634& 18635\sphinxcode{2} 18636\\ 18637\hline 18638\end{tabulary} 18639\par 18640\sphinxattableend\end{savenotes} 18641 18642 18643\subsubsection{KRB5\_GC\_CANONICALIZE} 18644\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE:krb5-gc-canonicalize-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE:krb5-gc-canonicalize}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE::doc}}\index{KRB5\_GC\_CANONICALIZE (built-in variable)} 18645 18646\begin{fulllineitems} 18647\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE:KRB5_GC_CANONICALIZE}}\pysigline{\sphinxbfcode{KRB5\_GC\_CANONICALIZE}} 18648\end{fulllineitems} 18649 18650 18651Set canonicalize KDC option. 18652 18653 18654\begin{savenotes}\sphinxattablestart 18655\centering 18656\begin{tabulary}{\linewidth}[t]{|T|T|} 18657\hline 18658 18659\sphinxcode{KRB5\_GC\_CANONICALIZE} 18660& 18661\sphinxcode{4} 18662\\ 18663\hline 18664\end{tabulary} 18665\par 18666\sphinxattableend\end{savenotes} 18667 18668 18669\subsubsection{KRB5\_GC\_CONSTRAINED\_DELEGATION} 18670\label{\detokenize{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:krb5-gc-constrained-delegation}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:krb5-gc-constrained-delegation-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION::doc}}\index{KRB5\_GC\_CONSTRAINED\_DELEGATION (built-in variable)} 18671 18672\begin{fulllineitems} 18673\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:KRB5_GC_CONSTRAINED_DELEGATION}}\pysigline{\sphinxbfcode{KRB5\_GC\_CONSTRAINED\_DELEGATION}} 18674\end{fulllineitems} 18675 18676 18677Constrained delegation. 18678 18679 18680\begin{savenotes}\sphinxattablestart 18681\centering 18682\begin{tabulary}{\linewidth}[t]{|T|T|} 18683\hline 18684 18685\sphinxcode{KRB5\_GC\_CONSTRAINED\_DELEGATION} 18686& 18687\sphinxcode{64} 18688\\ 18689\hline 18690\end{tabulary} 18691\par 18692\sphinxattableend\end{savenotes} 18693 18694 18695\subsubsection{KRB5\_GC\_FORWARDABLE} 18696\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE:krb5-gc-forwardable-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE:krb5-gc-forwardable}}\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE::doc}}\index{KRB5\_GC\_FORWARDABLE (built-in variable)} 18697 18698\begin{fulllineitems} 18699\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE:KRB5_GC_FORWARDABLE}}\pysigline{\sphinxbfcode{KRB5\_GC\_FORWARDABLE}} 18700\end{fulllineitems} 18701 18702 18703Acquire forwardable tickets. 18704 18705 18706\begin{savenotes}\sphinxattablestart 18707\centering 18708\begin{tabulary}{\linewidth}[t]{|T|T|} 18709\hline 18710 18711\sphinxcode{KRB5\_GC\_FORWARDABLE} 18712& 18713\sphinxcode{16} 18714\\ 18715\hline 18716\end{tabulary} 18717\par 18718\sphinxattableend\end{savenotes} 18719 18720 18721\subsubsection{KRB5\_GC\_NO\_STORE} 18722\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_STORE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_STORE:krb5-gc-no-store}}\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_STORE:krb5-gc-no-store-data}}\index{KRB5\_GC\_NO\_STORE (built-in variable)} 18723 18724\begin{fulllineitems} 18725\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_STORE:KRB5_GC_NO_STORE}}\pysigline{\sphinxbfcode{KRB5\_GC\_NO\_STORE}} 18726\end{fulllineitems} 18727 18728 18729Do not store in credential cache. 18730 18731 18732\begin{savenotes}\sphinxattablestart 18733\centering 18734\begin{tabulary}{\linewidth}[t]{|T|T|} 18735\hline 18736 18737\sphinxcode{KRB5\_GC\_NO\_STORE} 18738& 18739\sphinxcode{8} 18740\\ 18741\hline 18742\end{tabulary} 18743\par 18744\sphinxattableend\end{savenotes} 18745 18746 18747\subsubsection{KRB5\_GC\_NO\_TRANSIT\_CHECK} 18748\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:krb5-gc-no-transit-check-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:krb5-gc-no-transit-check}}\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK::doc}}\index{KRB5\_GC\_NO\_TRANSIT\_CHECK (built-in variable)} 18749 18750\begin{fulllineitems} 18751\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:KRB5_GC_NO_TRANSIT_CHECK}}\pysigline{\sphinxbfcode{KRB5\_GC\_NO\_TRANSIT\_CHECK}} 18752\end{fulllineitems} 18753 18754 18755Disable transited check. 18756 18757 18758\begin{savenotes}\sphinxattablestart 18759\centering 18760\begin{tabulary}{\linewidth}[t]{|T|T|} 18761\hline 18762 18763\sphinxcode{KRB5\_GC\_NO\_TRANSIT\_CHECK} 18764& 18765\sphinxcode{32} 18766\\ 18767\hline 18768\end{tabulary} 18769\par 18770\sphinxattableend\end{savenotes} 18771 18772 18773\subsubsection{KRB5\_GC\_USER\_USER} 18774\label{\detokenize{appdev/refs/macros/KRB5_GC_USER_USER::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GC_USER_USER:krb5-gc-user-user}}\label{\detokenize{appdev/refs/macros/KRB5_GC_USER_USER:krb5-gc-user-user-data}}\index{KRB5\_GC\_USER\_USER (built-in variable)} 18775 18776\begin{fulllineitems} 18777\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_USER_USER:KRB5_GC_USER_USER}}\pysigline{\sphinxbfcode{KRB5\_GC\_USER\_USER}} 18778\end{fulllineitems} 18779 18780 18781Want user-user ticket. 18782 18783 18784\begin{savenotes}\sphinxattablestart 18785\centering 18786\begin{tabulary}{\linewidth}[t]{|T|T|} 18787\hline 18788 18789\sphinxcode{KRB5\_GC\_USER\_USER} 18790& 18791\sphinxcode{1} 18792\\ 18793\hline 18794\end{tabulary} 18795\par 18796\sphinxattableend\end{savenotes} 18797 18798 18799\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST} 18800\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST:krb5-get-init-creds-opt-address-list}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST::doc}}\label{\detokenize{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)} 18801 18802\begin{fulllineitems} 18803\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST:KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}} 18804\end{fulllineitems} 18805 18806 18807 18808\begin{savenotes}\sphinxattablestart 18809\centering 18810\begin{tabulary}{\linewidth}[t]{|T|T|} 18811\hline 18812 18813\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST} 18814& 18815\sphinxcode{0x0020} 18816\\ 18817\hline 18818\end{tabulary} 18819\par 18820\sphinxattableend\end{savenotes} 18821 18822 18823\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS} 18824\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:krb5-get-init-creds-opt-anonymous-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS::doc}}\label{\detokenize{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)} 18825 18826\begin{fulllineitems} 18827\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:KRB5_GET_INIT_CREDS_OPT_ANONYMOUS}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}} 18828\end{fulllineitems} 18829 18830 18831 18832\begin{savenotes}\sphinxattablestart 18833\centering 18834\begin{tabulary}{\linewidth}[t]{|T|T|} 18835\hline 18836 18837\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS} 18838& 18839\sphinxcode{0x0400} 18840\\ 18841\hline 18842\end{tabulary} 18843\par 18844\sphinxattableend\end{savenotes} 18845 18846 18847\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE} 18848\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:krb5-get-init-creds-opt-canonicalize-data}}\label{\detokenize{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)} 18849 18850\begin{fulllineitems} 18851\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:KRB5_GET_INIT_CREDS_OPT_CANONICALIZE}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}} 18852\end{fulllineitems} 18853 18854 18855 18856\begin{savenotes}\sphinxattablestart 18857\centering 18858\begin{tabulary}{\linewidth}[t]{|T|T|} 18859\hline 18860 18861\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE} 18862& 18863\sphinxcode{0x0200} 18864\\ 18865\hline 18866\end{tabulary} 18867\par 18868\sphinxattableend\end{savenotes} 18869 18870 18871\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT} 18872\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT:krb5-get-init-creds-opt-chg-pwd-prmpt}}\label{\detokenize{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)} 18873 18874\begin{fulllineitems} 18875\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT:KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}} 18876\end{fulllineitems} 18877 18878 18879 18880\begin{savenotes}\sphinxattablestart 18881\centering 18882\begin{tabulary}{\linewidth}[t]{|T|T|} 18883\hline 18884 18885\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT} 18886& 18887\sphinxcode{0x0100} 18888\\ 18889\hline 18890\end{tabulary} 18891\par 18892\sphinxattableend\end{savenotes} 18893 18894 18895\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST} 18896\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:krb5-get-init-creds-opt-etype-list-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:krb5-get-init-creds-opt-etype-list}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST (built-in variable)} 18897 18898\begin{fulllineitems} 18899\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}} 18900\end{fulllineitems} 18901 18902 18903 18904\begin{savenotes}\sphinxattablestart 18905\centering 18906\begin{tabulary}{\linewidth}[t]{|T|T|} 18907\hline 18908 18909\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST} 18910& 18911\sphinxcode{0x0010} 18912\\ 18913\hline 18914\end{tabulary} 18915\par 18916\sphinxattableend\end{savenotes} 18917 18918 18919\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE} 18920\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE:krb5-get-init-creds-opt-forwardable}}\label{\detokenize{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)} 18921 18922\begin{fulllineitems} 18923\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE:KRB5_GET_INIT_CREDS_OPT_FORWARDABLE}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}} 18924\end{fulllineitems} 18925 18926 18927 18928\begin{savenotes}\sphinxattablestart 18929\centering 18930\begin{tabulary}{\linewidth}[t]{|T|T|} 18931\hline 18932 18933\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE} 18934& 18935\sphinxcode{0x0004} 18936\\ 18937\hline 18938\end{tabulary} 18939\par 18940\sphinxattableend\end{savenotes} 18941 18942 18943\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST} 18944\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:krb5-get-init-creds-opt-preauth-list}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:krb5-get-init-creds-opt-preauth-list-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST (built-in variable)} 18945 18946\begin{fulllineitems} 18947\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}} 18948\end{fulllineitems} 18949 18950 18951 18952\begin{savenotes}\sphinxattablestart 18953\centering 18954\begin{tabulary}{\linewidth}[t]{|T|T|} 18955\hline 18956 18957\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST} 18958& 18959\sphinxcode{0x0040} 18960\\ 18961\hline 18962\end{tabulary} 18963\par 18964\sphinxattableend\end{savenotes} 18965 18966 18967\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE} 18968\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:krb5-get-init-creds-opt-proxiable-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:krb5-get-init-creds-opt-proxiable}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE (built-in variable)} 18969 18970\begin{fulllineitems} 18971\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:KRB5_GET_INIT_CREDS_OPT_PROXIABLE}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}} 18972\end{fulllineitems} 18973 18974 18975 18976\begin{savenotes}\sphinxattablestart 18977\centering 18978\begin{tabulary}{\linewidth}[t]{|T|T|} 18979\hline 18980 18981\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE} 18982& 18983\sphinxcode{0x0008} 18984\\ 18985\hline 18986\end{tabulary} 18987\par 18988\sphinxattableend\end{savenotes} 18989 18990 18991\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE} 18992\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:krb5-get-init-creds-opt-renew-life-data}}\label{\detokenize{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)} 18993 18994\begin{fulllineitems} 18995\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}} 18996\end{fulllineitems} 18997 18998 18999 19000\begin{savenotes}\sphinxattablestart 19001\centering 19002\begin{tabulary}{\linewidth}[t]{|T|T|} 19003\hline 19004 19005\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE} 19006& 19007\sphinxcode{0x0002} 19008\\ 19009\hline 19010\end{tabulary} 19011\par 19012\sphinxattableend\end{savenotes} 19013 19014 19015\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT} 19016\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:krb5-get-init-creds-opt-salt-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:krb5-get-init-creds-opt-salt}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT (built-in variable)} 19017 19018\begin{fulllineitems} 19019\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:KRB5_GET_INIT_CREDS_OPT_SALT}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}} 19020\end{fulllineitems} 19021 19022 19023 19024\begin{savenotes}\sphinxattablestart 19025\centering 19026\begin{tabulary}{\linewidth}[t]{|T|T|} 19027\hline 19028 19029\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT} 19030& 19031\sphinxcode{0x0080} 19032\\ 19033\hline 19034\end{tabulary} 19035\par 19036\sphinxattableend\end{savenotes} 19037 19038 19039\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE} 19040\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:krb5-get-init-creds-opt-tkt-life-data}}\label{\detokenize{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)} 19041 19042\begin{fulllineitems} 19043\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:KRB5_GET_INIT_CREDS_OPT_TKT_LIFE}}\pysigline{\sphinxbfcode{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}} 19044\end{fulllineitems} 19045 19046 19047 19048\begin{savenotes}\sphinxattablestart 19049\centering 19050\begin{tabulary}{\linewidth}[t]{|T|T|} 19051\hline 19052 19053\sphinxcode{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE} 19054& 19055\sphinxcode{0x0001} 19056\\ 19057\hline 19058\end{tabulary} 19059\par 19060\sphinxattableend\end{savenotes} 19061 19062 19063\subsubsection{KRB5\_INIT\_CONTEXT\_SECURE} 19064\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:krb5-init-context-secure}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:krb5-init-context-secure-data}}\index{KRB5\_INIT\_CONTEXT\_SECURE (built-in variable)} 19065 19066\begin{fulllineitems} 19067\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:KRB5_INIT_CONTEXT_SECURE}}\pysigline{\sphinxbfcode{KRB5\_INIT\_CONTEXT\_SECURE}} 19068\end{fulllineitems} 19069 19070 19071Use secure context configuration. 19072 19073 19074\begin{savenotes}\sphinxattablestart 19075\centering 19076\begin{tabulary}{\linewidth}[t]{|T|T|} 19077\hline 19078 19079\sphinxcode{KRB5\_INIT\_CONTEXT\_SECURE} 19080& 19081\sphinxcode{0x1} 19082\\ 19083\hline 19084\end{tabulary} 19085\par 19086\sphinxattableend\end{savenotes} 19087 19088 19089\subsubsection{KRB5\_INIT\_CONTEXT\_KDC} 19090\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:krb5-init-context-kdc}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC::doc}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:krb5-init-context-kdc-data}}\index{KRB5\_INIT\_CONTEXT\_KDC (built-in variable)} 19091 19092\begin{fulllineitems} 19093\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:KRB5_INIT_CONTEXT_KDC}}\pysigline{\sphinxbfcode{KRB5\_INIT\_CONTEXT\_KDC}} 19094\end{fulllineitems} 19095 19096 19097Use KDC configuration if available. 19098 19099 19100\begin{savenotes}\sphinxattablestart 19101\centering 19102\begin{tabulary}{\linewidth}[t]{|T|T|} 19103\hline 19104 19105\sphinxcode{KRB5\_INIT\_CONTEXT\_KDC} 19106& 19107\sphinxcode{0x2} 19108\\ 19109\hline 19110\end{tabulary} 19111\par 19112\sphinxattableend\end{savenotes} 19113 19114 19115\subsubsection{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE} 19116\label{\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:krb5-init-creds-step-flag-continue-data}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:krb5-init-creds-step-flag-continue}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE::doc}}\index{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE (built-in variable)} 19117 19118\begin{fulllineitems} 19119\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE}}\pysigline{\sphinxbfcode{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}} 19120\end{fulllineitems} 19121 19122 19123More responses needed. 19124 19125 19126\begin{savenotes}\sphinxattablestart 19127\centering 19128\begin{tabulary}{\linewidth}[t]{|T|T|} 19129\hline 19130 19131\sphinxcode{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE} 19132& 19133\sphinxcode{0x1} 19134\\ 19135\hline 19136\end{tabulary} 19137\par 19138\sphinxattableend\end{savenotes} 19139 19140 19141\subsubsection{KRB5\_INT16\_MAX} 19142\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX:krb5-int16-max-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX::doc}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX:krb5-int16-max}}\index{KRB5\_INT16\_MAX (built-in variable)} 19143 19144\begin{fulllineitems} 19145\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX:KRB5_INT16_MAX}}\pysigline{\sphinxbfcode{KRB5\_INT16\_MAX}} 19146\end{fulllineitems} 19147 19148 19149 19150\begin{savenotes}\sphinxattablestart 19151\centering 19152\begin{tabulary}{\linewidth}[t]{|T|T|} 19153\hline 19154 19155\sphinxcode{KRB5\_INT16\_MAX} 19156& 19157\sphinxcode{65535} 19158\\ 19159\hline 19160\end{tabulary} 19161\par 19162\sphinxattableend\end{savenotes} 19163 19164 19165\subsubsection{KRB5\_INT16\_MIN} 19166\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN:krb5-int16-min-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN:krb5-int16-min}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN::doc}}\index{KRB5\_INT16\_MIN (built-in variable)} 19167 19168\begin{fulllineitems} 19169\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN:KRB5_INT16_MIN}}\pysigline{\sphinxbfcode{KRB5\_INT16\_MIN}} 19170\end{fulllineitems} 19171 19172 19173 19174\begin{savenotes}\sphinxattablestart 19175\centering 19176\begin{tabulary}{\linewidth}[t]{|T|T|} 19177\hline 19178 19179\sphinxcode{KRB5\_INT16\_MIN} 19180& 19181\sphinxcode{(-KRB5\_INT16\_MAX-1)} 19182\\ 19183\hline 19184\end{tabulary} 19185\par 19186\sphinxattableend\end{savenotes} 19187 19188 19189\subsubsection{KRB5\_INT32\_MAX} 19190\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX:krb5-int32-max-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX:krb5-int32-max}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX::doc}}\index{KRB5\_INT32\_MAX (built-in variable)} 19191 19192\begin{fulllineitems} 19193\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX:KRB5_INT32_MAX}}\pysigline{\sphinxbfcode{KRB5\_INT32\_MAX}} 19194\end{fulllineitems} 19195 19196 19197 19198\begin{savenotes}\sphinxattablestart 19199\centering 19200\begin{tabulary}{\linewidth}[t]{|T|T|} 19201\hline 19202 19203\sphinxcode{KRB5\_INT32\_MAX} 19204& 19205\sphinxcode{2147483647} 19206\\ 19207\hline 19208\end{tabulary} 19209\par 19210\sphinxattableend\end{savenotes} 19211 19212 19213\subsubsection{KRB5\_INT32\_MIN} 19214\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN:krb5-int32-min-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN::doc}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN:krb5-int32-min}}\index{KRB5\_INT32\_MIN (built-in variable)} 19215 19216\begin{fulllineitems} 19217\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN:KRB5_INT32_MIN}}\pysigline{\sphinxbfcode{KRB5\_INT32\_MIN}} 19218\end{fulllineitems} 19219 19220 19221 19222\begin{savenotes}\sphinxattablestart 19223\centering 19224\begin{tabulary}{\linewidth}[t]{|T|T|} 19225\hline 19226 19227\sphinxcode{KRB5\_INT32\_MIN} 19228& 19229\sphinxcode{(-KRB5\_INT32\_MAX-1)} 19230\\ 19231\hline 19232\end{tabulary} 19233\par 19234\sphinxattableend\end{savenotes} 19235 19236 19237\subsubsection{KRB5\_KEYUSAGE\_AD\_ITE} 19238\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:krb5-keyusage-ad-ite-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:krb5-keyusage-ad-ite}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE::doc}}\index{KRB5\_KEYUSAGE\_AD\_ITE (built-in variable)} 19239 19240\begin{fulllineitems} 19241\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:KRB5_KEYUSAGE_AD_ITE}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AD\_ITE}} 19242\end{fulllineitems} 19243 19244 19245 19246\begin{savenotes}\sphinxattablestart 19247\centering 19248\begin{tabulary}{\linewidth}[t]{|T|T|} 19249\hline 19250 19251\sphinxcode{KRB5\_KEYUSAGE\_AD\_ITE} 19252& 19253\sphinxcode{21} 19254\\ 19255\hline 19256\end{tabulary} 19257\par 19258\sphinxattableend\end{savenotes} 19259 19260 19261\subsubsection{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM} 19262\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:krb5-keyusage-ad-kdcissued-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:krb5-keyusage-ad-kdcissued-cksum}}\index{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM (built-in variable)} 19263 19264\begin{fulllineitems} 19265\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}} 19266\end{fulllineitems} 19267 19268 19269 19270\begin{savenotes}\sphinxattablestart 19271\centering 19272\begin{tabulary}{\linewidth}[t]{|T|T|} 19273\hline 19274 19275\sphinxcode{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM} 19276& 19277\sphinxcode{19} 19278\\ 19279\hline 19280\end{tabulary} 19281\par 19282\sphinxattableend\end{savenotes} 19283 19284 19285\subsubsection{KRB5\_KEYUSAGE\_AD\_MTE} 19286\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:krb5-keyusage-ad-mte-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:krb5-keyusage-ad-mte}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE::doc}}\index{KRB5\_KEYUSAGE\_AD\_MTE (built-in variable)} 19287 19288\begin{fulllineitems} 19289\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:KRB5_KEYUSAGE_AD_MTE}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AD\_MTE}} 19290\end{fulllineitems} 19291 19292 19293 19294\begin{savenotes}\sphinxattablestart 19295\centering 19296\begin{tabulary}{\linewidth}[t]{|T|T|} 19297\hline 19298 19299\sphinxcode{KRB5\_KEYUSAGE\_AD\_MTE} 19300& 19301\sphinxcode{20} 19302\\ 19303\hline 19304\end{tabulary} 19305\par 19306\sphinxattableend\end{savenotes} 19307 19308 19309\subsubsection{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH} 19310\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:krb5-keyusage-ad-signedpath-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:krb5-keyusage-ad-signedpath}}\index{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH (built-in variable)} 19311 19312\begin{fulllineitems} 19313\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:KRB5_KEYUSAGE_AD_SIGNEDPATH}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}} 19314\end{fulllineitems} 19315 19316 19317 19318\begin{savenotes}\sphinxattablestart 19319\centering 19320\begin{tabulary}{\linewidth}[t]{|T|T|} 19321\hline 19322 19323\sphinxcode{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH} 19324& 19325\sphinxcode{-21} 19326\\ 19327\hline 19328\end{tabulary} 19329\par 19330\sphinxattableend\end{savenotes} 19331 19332 19333\subsubsection{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM} 19334\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:krb5-keyusage-app-data-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:krb5-keyusage-app-data-cksum}}\index{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM (built-in variable)} 19335 19336\begin{fulllineitems} 19337\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:KRB5_KEYUSAGE_APP_DATA_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}} 19338\end{fulllineitems} 19339 19340 19341 19342\begin{savenotes}\sphinxattablestart 19343\centering 19344\begin{tabulary}{\linewidth}[t]{|T|T|} 19345\hline 19346 19347\sphinxcode{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM} 19348& 19349\sphinxcode{17} 19350\\ 19351\hline 19352\end{tabulary} 19353\par 19354\sphinxattableend\end{savenotes} 19355 19356 19357\subsubsection{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT} 19358\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:krb5-keyusage-app-data-encrypt}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:krb5-keyusage-app-data-encrypt-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT::doc}}\index{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT (built-in variable)} 19359 19360\begin{fulllineitems} 19361\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:KRB5_KEYUSAGE_APP_DATA_ENCRYPT}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}} 19362\end{fulllineitems} 19363 19364 19365 19366\begin{savenotes}\sphinxattablestart 19367\centering 19368\begin{tabulary}{\linewidth}[t]{|T|T|} 19369\hline 19370 19371\sphinxcode{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT} 19372& 19373\sphinxcode{16} 19374\\ 19375\hline 19376\end{tabulary} 19377\par 19378\sphinxattableend\end{savenotes} 19379 19380 19381\subsubsection{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART} 19382\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:krb5-keyusage-ap-rep-encpart}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:krb5-keyusage-ap-rep-encpart-data}}\index{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART (built-in variable)} 19383 19384\begin{fulllineitems} 19385\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:KRB5_KEYUSAGE_AP_REP_ENCPART}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}} 19386\end{fulllineitems} 19387 19388 19389 19390\begin{savenotes}\sphinxattablestart 19391\centering 19392\begin{tabulary}{\linewidth}[t]{|T|T|} 19393\hline 19394 19395\sphinxcode{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART} 19396& 19397\sphinxcode{12} 19398\\ 19399\hline 19400\end{tabulary} 19401\par 19402\sphinxattableend\end{savenotes} 19403 19404 19405\subsubsection{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH} 19406\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:krb5-keyusage-ap-req-auth}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:krb5-keyusage-ap-req-auth-data}}\index{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH (built-in variable)} 19407 19408\begin{fulllineitems} 19409\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:KRB5_KEYUSAGE_AP_REQ_AUTH}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}} 19410\end{fulllineitems} 19411 19412 19413 19414\begin{savenotes}\sphinxattablestart 19415\centering 19416\begin{tabulary}{\linewidth}[t]{|T|T|} 19417\hline 19418 19419\sphinxcode{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH} 19420& 19421\sphinxcode{11} 19422\\ 19423\hline 19424\end{tabulary} 19425\par 19426\sphinxattableend\end{savenotes} 19427 19428 19429\subsubsection{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM} 19430\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:krb5-keyusage-ap-req-auth-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:krb5-keyusage-ap-req-auth-cksum}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM::doc}}\index{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM (built-in variable)} 19431 19432\begin{fulllineitems} 19433\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}} 19434\end{fulllineitems} 19435 19436 19437 19438\begin{savenotes}\sphinxattablestart 19439\centering 19440\begin{tabulary}{\linewidth}[t]{|T|T|} 19441\hline 19442 19443\sphinxcode{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM} 19444& 19445\sphinxcode{10} 19446\\ 19447\hline 19448\end{tabulary} 19449\par 19450\sphinxattableend\end{savenotes} 19451 19452 19453\subsubsection{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART} 19454\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:krb5-keyusage-as-rep-encpart-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:krb5-keyusage-as-rep-encpart}}\index{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART (built-in variable)} 19455 19456\begin{fulllineitems} 19457\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:KRB5_KEYUSAGE_AS_REP_ENCPART}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}} 19458\end{fulllineitems} 19459 19460 19461 19462\begin{savenotes}\sphinxattablestart 19463\centering 19464\begin{tabulary}{\linewidth}[t]{|T|T|} 19465\hline 19466 19467\sphinxcode{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART} 19468& 19469\sphinxcode{3} 19470\\ 19471\hline 19472\end{tabulary} 19473\par 19474\sphinxattableend\end{savenotes} 19475 19476 19477\subsubsection{KRB5\_KEYUSAGE\_AS\_REQ} 19478\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:krb5-keyusage-as-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:krb5-keyusage-as-req}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ::doc}}\index{KRB5\_KEYUSAGE\_AS\_REQ (built-in variable)} 19479 19480\begin{fulllineitems} 19481\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:KRB5_KEYUSAGE_AS_REQ}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AS\_REQ}} 19482\end{fulllineitems} 19483 19484 19485 19486\begin{savenotes}\sphinxattablestart 19487\centering 19488\begin{tabulary}{\linewidth}[t]{|T|T|} 19489\hline 19490 19491\sphinxcode{KRB5\_KEYUSAGE\_AS\_REQ} 19492& 19493\sphinxcode{56} 19494\\ 19495\hline 19496\end{tabulary} 19497\par 19498\sphinxattableend\end{savenotes} 19499 19500 19501\subsubsection{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS} 19502\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:krb5-keyusage-as-req-pa-enc-ts-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS::doc}}\label{\detokenize{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)} 19503 19504\begin{fulllineitems} 19505\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}} 19506\end{fulllineitems} 19507 19508 19509 19510\begin{savenotes}\sphinxattablestart 19511\centering 19512\begin{tabulary}{\linewidth}[t]{|T|T|} 19513\hline 19514 19515\sphinxcode{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS} 19516& 19517\sphinxcode{1} 19518\\ 19519\hline 19520\end{tabulary} 19521\par 19522\sphinxattableend\end{savenotes} 19523 19524 19525\subsubsection{KRB5\_KEYUSAGE\_CAMMAC} 19526\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC:krb5-keyusage-cammac}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC:krb5-keyusage-cammac-data}}\index{KRB5\_KEYUSAGE\_CAMMAC (built-in variable)} 19527 19528\begin{fulllineitems} 19529\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC:KRB5_KEYUSAGE_CAMMAC}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_CAMMAC}} 19530\end{fulllineitems} 19531 19532 19533 19534\begin{savenotes}\sphinxattablestart 19535\centering 19536\begin{tabulary}{\linewidth}[t]{|T|T|} 19537\hline 19538 19539\sphinxcode{KRB5\_KEYUSAGE\_CAMMAC} 19540& 19541\sphinxcode{64} 19542\\ 19543\hline 19544\end{tabulary} 19545\par 19546\sphinxattableend\end{savenotes} 19547 19548 19549\subsubsection{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT} 19550\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:krb5-keyusage-enc-challenge-client-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:krb5-keyusage-enc-challenge-client}}\index{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT (built-in variable)} 19551 19552\begin{fulllineitems} 19553\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}} 19554\end{fulllineitems} 19555 19556 19557 19558\begin{savenotes}\sphinxattablestart 19559\centering 19560\begin{tabulary}{\linewidth}[t]{|T|T|} 19561\hline 19562 19563\sphinxcode{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT} 19564& 19565\sphinxcode{54} 19566\\ 19567\hline 19568\end{tabulary} 19569\par 19570\sphinxattableend\end{savenotes} 19571 19572 19573\subsubsection{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC} 19574\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:krb5-keyusage-enc-challenge-kdc-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:krb5-keyusage-enc-challenge-kdc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC::doc}}\index{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC (built-in variable)} 19575 19576\begin{fulllineitems} 19577\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:KRB5_KEYUSAGE_ENC_CHALLENGE_KDC}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}} 19578\end{fulllineitems} 19579 19580 19581 19582\begin{savenotes}\sphinxattablestart 19583\centering 19584\begin{tabulary}{\linewidth}[t]{|T|T|} 19585\hline 19586 19587\sphinxcode{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC} 19588& 19589\sphinxcode{55} 19590\\ 19591\hline 19592\end{tabulary} 19593\par 19594\sphinxattableend\end{savenotes} 19595 19596 19597\subsubsection{KRB5\_KEYUSAGE\_FAST\_ENC} 19598\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:krb5-keyusage-fast-enc-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:krb5-keyusage-fast-enc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC::doc}}\index{KRB5\_KEYUSAGE\_FAST\_ENC (built-in variable)} 19599 19600\begin{fulllineitems} 19601\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:KRB5_KEYUSAGE_FAST_ENC}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_FAST\_ENC}} 19602\end{fulllineitems} 19603 19604 19605 19606\begin{savenotes}\sphinxattablestart 19607\centering 19608\begin{tabulary}{\linewidth}[t]{|T|T|} 19609\hline 19610 19611\sphinxcode{KRB5\_KEYUSAGE\_FAST\_ENC} 19612& 19613\sphinxcode{51} 19614\\ 19615\hline 19616\end{tabulary} 19617\par 19618\sphinxattableend\end{savenotes} 19619 19620 19621\subsubsection{KRB5\_KEYUSAGE\_FAST\_FINISHED} 19622\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:krb5-keyusage-fast-finished-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:krb5-keyusage-fast-finished}}\index{KRB5\_KEYUSAGE\_FAST\_FINISHED (built-in variable)} 19623 19624\begin{fulllineitems} 19625\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:KRB5_KEYUSAGE_FAST_FINISHED}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_FAST\_FINISHED}} 19626\end{fulllineitems} 19627 19628 19629 19630\begin{savenotes}\sphinxattablestart 19631\centering 19632\begin{tabulary}{\linewidth}[t]{|T|T|} 19633\hline 19634 19635\sphinxcode{KRB5\_KEYUSAGE\_FAST\_FINISHED} 19636& 19637\sphinxcode{53} 19638\\ 19639\hline 19640\end{tabulary} 19641\par 19642\sphinxattableend\end{savenotes} 19643 19644 19645\subsubsection{KRB5\_KEYUSAGE\_FAST\_REP} 19646\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:krb5-keyusage-fast-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:krb5-keyusage-fast-rep}}\index{KRB5\_KEYUSAGE\_FAST\_REP (built-in variable)} 19647 19648\begin{fulllineitems} 19649\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:KRB5_KEYUSAGE_FAST_REP}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_FAST\_REP}} 19650\end{fulllineitems} 19651 19652 19653 19654\begin{savenotes}\sphinxattablestart 19655\centering 19656\begin{tabulary}{\linewidth}[t]{|T|T|} 19657\hline 19658 19659\sphinxcode{KRB5\_KEYUSAGE\_FAST\_REP} 19660& 19661\sphinxcode{52} 19662\\ 19663\hline 19664\end{tabulary} 19665\par 19666\sphinxattableend\end{savenotes} 19667 19668 19669\subsubsection{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM} 19670\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:krb5-keyusage-fast-req-chksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:krb5-keyusage-fast-req-chksum}}\index{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM (built-in variable)} 19671 19672\begin{fulllineitems} 19673\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:KRB5_KEYUSAGE_FAST_REQ_CHKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}} 19674\end{fulllineitems} 19675 19676 19677 19678\begin{savenotes}\sphinxattablestart 19679\centering 19680\begin{tabulary}{\linewidth}[t]{|T|T|} 19681\hline 19682 19683\sphinxcode{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM} 19684& 19685\sphinxcode{50} 19686\\ 19687\hline 19688\end{tabulary} 19689\par 19690\sphinxattableend\end{savenotes} 19691 19692 19693\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC} 19694\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:krb5-keyusage-gss-tok-mic}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:krb5-keyusage-gss-tok-mic-data}}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC (built-in variable)} 19695 19696\begin{fulllineitems} 19697\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:KRB5_KEYUSAGE_GSS_TOK_MIC}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}} 19698\end{fulllineitems} 19699 19700 19701 19702\begin{savenotes}\sphinxattablestart 19703\centering 19704\begin{tabulary}{\linewidth}[t]{|T|T|} 19705\hline 19706 19707\sphinxcode{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC} 19708& 19709\sphinxcode{22} 19710\\ 19711\hline 19712\end{tabulary} 19713\par 19714\sphinxattableend\end{savenotes} 19715 19716 19717\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG} 19718\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG:krb5-keyusage-gss-tok-wrap-integ}}\label{\detokenize{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)} 19719 19720\begin{fulllineitems} 19721\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG:KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}} 19722\end{fulllineitems} 19723 19724 19725 19726\begin{savenotes}\sphinxattablestart 19727\centering 19728\begin{tabulary}{\linewidth}[t]{|T|T|} 19729\hline 19730 19731\sphinxcode{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG} 19732& 19733\sphinxcode{23} 19734\\ 19735\hline 19736\end{tabulary} 19737\par 19738\sphinxattableend\end{savenotes} 19739 19740 19741\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV} 19742\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:krb5-keyusage-gss-tok-wrap-priv-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV::doc}}\label{\detokenize{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)} 19743 19744\begin{fulllineitems} 19745\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}} 19746\end{fulllineitems} 19747 19748 19749 19750\begin{savenotes}\sphinxattablestart 19751\centering 19752\begin{tabulary}{\linewidth}[t]{|T|T|} 19753\hline 19754 19755\sphinxcode{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV} 19756& 19757\sphinxcode{24} 19758\\ 19759\hline 19760\end{tabulary} 19761\par 19762\sphinxattableend\end{savenotes} 19763 19764 19765\subsubsection{KRB5\_KEYUSAGE\_IAKERB\_FINISHED} 19766\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:krb5-keyusage-iakerb-finished-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:krb5-keyusage-iakerb-finished}}\index{KRB5\_KEYUSAGE\_IAKERB\_FINISHED (built-in variable)} 19767 19768\begin{fulllineitems} 19769\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:KRB5_KEYUSAGE_IAKERB_FINISHED}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}} 19770\end{fulllineitems} 19771 19772 19773 19774\begin{savenotes}\sphinxattablestart 19775\centering 19776\begin{tabulary}{\linewidth}[t]{|T|T|} 19777\hline 19778 19779\sphinxcode{KRB5\_KEYUSAGE\_IAKERB\_FINISHED} 19780& 19781\sphinxcode{42} 19782\\ 19783\hline 19784\end{tabulary} 19785\par 19786\sphinxattableend\end{savenotes} 19787 19788 19789\subsubsection{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET} 19790\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:krb5-keyusage-kdc-rep-ticket-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:krb5-keyusage-kdc-rep-ticket}}\index{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET (built-in variable)} 19791 19792\begin{fulllineitems} 19793\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:KRB5_KEYUSAGE_KDC_REP_TICKET}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}} 19794\end{fulllineitems} 19795 19796 19797 19798\begin{savenotes}\sphinxattablestart 19799\centering 19800\begin{tabulary}{\linewidth}[t]{|T|T|} 19801\hline 19802 19803\sphinxcode{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET} 19804& 19805\sphinxcode{2} 19806\\ 19807\hline 19808\end{tabulary} 19809\par 19810\sphinxattableend\end{savenotes} 19811 19812 19813\subsubsection{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART} 19814\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:krb5-keyusage-krb-cred-encpart-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:krb5-keyusage-krb-cred-encpart}}\index{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART (built-in variable)} 19815 19816\begin{fulllineitems} 19817\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:KRB5_KEYUSAGE_KRB_CRED_ENCPART}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}} 19818\end{fulllineitems} 19819 19820 19821 19822\begin{savenotes}\sphinxattablestart 19823\centering 19824\begin{tabulary}{\linewidth}[t]{|T|T|} 19825\hline 19826 19827\sphinxcode{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART} 19828& 19829\sphinxcode{14} 19830\\ 19831\hline 19832\end{tabulary} 19833\par 19834\sphinxattableend\end{savenotes} 19835 19836 19837\subsubsection{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM} 19838\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:krb5-keyusage-krb-error-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:krb5-keyusage-krb-error-cksum}}\index{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM (built-in variable)} 19839 19840\begin{fulllineitems} 19841\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:KRB5_KEYUSAGE_KRB_ERROR_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}} 19842\end{fulllineitems} 19843 19844 19845 19846\begin{savenotes}\sphinxattablestart 19847\centering 19848\begin{tabulary}{\linewidth}[t]{|T|T|} 19849\hline 19850 19851\sphinxcode{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM} 19852& 19853\sphinxcode{18} 19854\\ 19855\hline 19856\end{tabulary} 19857\par 19858\sphinxattableend\end{savenotes} 19859 19860 19861\subsubsection{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART} 19862\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:krb5-keyusage-krb-priv-encpart}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:krb5-keyusage-krb-priv-encpart-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART::doc}}\index{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART (built-in variable)} 19863 19864\begin{fulllineitems} 19865\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:KRB5_KEYUSAGE_KRB_PRIV_ENCPART}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}} 19866\end{fulllineitems} 19867 19868 19869 19870\begin{savenotes}\sphinxattablestart 19871\centering 19872\begin{tabulary}{\linewidth}[t]{|T|T|} 19873\hline 19874 19875\sphinxcode{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART} 19876& 19877\sphinxcode{13} 19878\\ 19879\hline 19880\end{tabulary} 19881\par 19882\sphinxattableend\end{savenotes} 19883 19884 19885\subsubsection{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM} 19886\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:krb5-keyusage-krb-safe-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:krb5-keyusage-krb-safe-cksum}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM::doc}}\index{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM (built-in variable)} 19887 19888\begin{fulllineitems} 19889\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:KRB5_KEYUSAGE_KRB_SAFE_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}} 19890\end{fulllineitems} 19891 19892 19893 19894\begin{savenotes}\sphinxattablestart 19895\centering 19896\begin{tabulary}{\linewidth}[t]{|T|T|} 19897\hline 19898 19899\sphinxcode{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM} 19900& 19901\sphinxcode{15} 19902\\ 19903\hline 19904\end{tabulary} 19905\par 19906\sphinxattableend\end{savenotes} 19907 19908 19909\subsubsection{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS} 19910\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_AS_FRESHNESS:krb5-keyusage-pa-as-freshness}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_AS_FRESHNESS:krb5-keyusage-pa-as-freshness-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_AS_FRESHNESS::doc}}\index{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS (built-in variable)} 19911 19912\begin{fulllineitems} 19913\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_AS_FRESHNESS:KRB5_KEYUSAGE_PA_AS_FRESHNESS}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS}} 19914\end{fulllineitems} 19915 19916 19917Used for freshness tokens. 19918 19919 19920\begin{savenotes}\sphinxattablestart 19921\centering 19922\begin{tabulary}{\linewidth}[t]{|T|T|} 19923\hline 19924 19925\sphinxcode{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS} 19926& 19927\sphinxcode{514} 19928\\ 19929\hline 19930\end{tabulary} 19931\par 19932\sphinxattableend\end{savenotes} 19933 19934 19935\subsubsection{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE} 19936\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE:krb5-keyusage-pa-fx-cookie}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE:krb5-keyusage-pa-fx-cookie-data}}\index{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE (built-in variable)} 19937 19938\begin{fulllineitems} 19939\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE:KRB5_KEYUSAGE_PA_FX_COOKIE}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE}} 19940\end{fulllineitems} 19941 19942 19943Used for encrypted FAST cookies. 19944 19945 19946\begin{savenotes}\sphinxattablestart 19947\centering 19948\begin{tabulary}{\linewidth}[t]{|T|T|} 19949\hline 19950 19951\sphinxcode{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE} 19952& 19953\sphinxcode{513} 19954\\ 19955\hline 19956\end{tabulary} 19957\par 19958\sphinxattableend\end{savenotes} 19959 19960 19961\subsubsection{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST} 19962\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:krb5-keyusage-pa-otp-request}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:krb5-keyusage-pa-otp-request-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST::doc}}\index{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST (built-in variable)} 19963 19964\begin{fulllineitems} 19965\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:KRB5_KEYUSAGE_PA_OTP_REQUEST}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}} 19966\end{fulllineitems} 19967 19968 19969See RFC 6560 section 4.2. 19970 19971 19972\begin{savenotes}\sphinxattablestart 19973\centering 19974\begin{tabulary}{\linewidth}[t]{|T|T|} 19975\hline 19976 19977\sphinxcode{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST} 19978& 19979\sphinxcode{45} 19980\\ 19981\hline 19982\end{tabulary} 19983\par 19984\sphinxattableend\end{savenotes} 19985 19986 19987\subsubsection{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX} 19988\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:krb5-keyusage-pa-pkinit-kx-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:krb5-keyusage-pa-pkinit-kx}}\index{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX (built-in variable)} 19989 19990\begin{fulllineitems} 19991\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:KRB5_KEYUSAGE_PA_PKINIT_KX}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}} 19992\end{fulllineitems} 19993 19994 19995 19996\begin{savenotes}\sphinxattablestart 19997\centering 19998\begin{tabulary}{\linewidth}[t]{|T|T|} 19999\hline 20000 20001\sphinxcode{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX} 20002& 20003\sphinxcode{44} 20004\\ 20005\hline 20006\end{tabulary} 20007\par 20008\sphinxattableend\end{savenotes} 20009 20010 20011\subsubsection{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY} 20012\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:krb5-keyusage-pa-s4u-x509-user-reply-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:krb5-keyusage-pa-s4u-x509-user-reply}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY::doc}}\index{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY (built-in variable)} 20013 20014\begin{fulllineitems} 20015\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}} 20016\end{fulllineitems} 20017 20018 20019Note conflict with \sphinxcode{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE} . 20020 20021 20022\begin{savenotes}\sphinxattablestart 20023\centering 20024\begin{tabulary}{\linewidth}[t]{|T|T|} 20025\hline 20026 20027\sphinxcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY} 20028& 20029\sphinxcode{27} 20030\\ 20031\hline 20032\end{tabulary} 20033\par 20034\sphinxattableend\end{savenotes} 20035 20036 20037\subsubsection{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST} 20038\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST:krb5-keyusage-pa-s4u-x509-user-request}}\label{\detokenize{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)} 20039 20040\begin{fulllineitems} 20041\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST:KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}} 20042\end{fulllineitems} 20043 20044 20045Note conflict with \sphinxcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID} . 20046 20047 20048\begin{savenotes}\sphinxattablestart 20049\centering 20050\begin{tabulary}{\linewidth}[t]{|T|T|} 20051\hline 20052 20053\sphinxcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST} 20054& 20055\sphinxcode{26} 20056\\ 20057\hline 20058\end{tabulary} 20059\par 20060\sphinxattableend\end{savenotes} 20061 20062 20063\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM} 20064\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:krb5-keyusage-pa-sam-challenge-cksum-data}}\label{\detokenize{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)} 20065 20066\begin{fulllineitems} 20067\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}} 20068\end{fulllineitems} 20069 20070 20071 20072\begin{savenotes}\sphinxattablestart 20073\centering 20074\begin{tabulary}{\linewidth}[t]{|T|T|} 20075\hline 20076 20077\sphinxcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM} 20078& 20079\sphinxcode{25} 20080\\ 20081\hline 20082\end{tabulary} 20083\par 20084\sphinxattableend\end{savenotes} 20085 20086 20087\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID} 20088\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:krb5-keyusage-pa-sam-challenge-trackid}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:krb5-keyusage-pa-sam-challenge-trackid-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID::doc}}\index{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID (built-in variable)} 20089 20090\begin{fulllineitems} 20091\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}} 20092\end{fulllineitems} 20093 20094 20095Note conflict with \sphinxcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST} . 20096 20097 20098\begin{savenotes}\sphinxattablestart 20099\centering 20100\begin{tabulary}{\linewidth}[t]{|T|T|} 20101\hline 20102 20103\sphinxcode{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID} 20104& 20105\sphinxcode{26} 20106\\ 20107\hline 20108\end{tabulary} 20109\par 20110\sphinxattableend\end{savenotes} 20111 20112 20113\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE} 20114\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:krb5-keyusage-pa-sam-response-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:krb5-keyusage-pa-sam-response}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE::doc}}\index{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE (built-in variable)} 20115 20116\begin{fulllineitems} 20117\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:KRB5_KEYUSAGE_PA_SAM_RESPONSE}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}} 20118\end{fulllineitems} 20119 20120 20121Note conflict with \sphinxcode{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY} . 20122 20123 20124\begin{savenotes}\sphinxattablestart 20125\centering 20126\begin{tabulary}{\linewidth}[t]{|T|T|} 20127\hline 20128 20129\sphinxcode{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE} 20130& 20131\sphinxcode{27} 20132\\ 20133\hline 20134\end{tabulary} 20135\par 20136\sphinxattableend\end{savenotes} 20137 20138 20139\subsubsection{KRB5\_KEYUSAGE\_SPAKE} 20140\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_SPAKE:krb5-keyusage-spake}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_SPAKE:krb5-keyusage-spake-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_SPAKE::doc}}\index{KRB5\_KEYUSAGE\_SPAKE (built-in variable)} 20141 20142\begin{fulllineitems} 20143\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_SPAKE:KRB5_KEYUSAGE_SPAKE}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_SPAKE}} 20144\end{fulllineitems} 20145 20146 20147 20148\begin{savenotes}\sphinxattablestart 20149\centering 20150\begin{tabulary}{\linewidth}[t]{|T|T|} 20151\hline 20152 20153\sphinxcode{KRB5\_KEYUSAGE\_SPAKE} 20154& 20155\sphinxcode{65} 20156\\ 20157\hline 20158\end{tabulary} 20159\par 20160\sphinxattableend\end{savenotes} 20161 20162 20163\subsubsection{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY} 20164\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:krb5-keyusage-tgs-rep-encpart-sesskey}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:krb5-keyusage-tgs-rep-encpart-sesskey-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY::doc}}\index{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY (built-in variable)} 20165 20166\begin{fulllineitems} 20167\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}} 20168\end{fulllineitems} 20169 20170 20171 20172\begin{savenotes}\sphinxattablestart 20173\centering 20174\begin{tabulary}{\linewidth}[t]{|T|T|} 20175\hline 20176 20177\sphinxcode{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY} 20178& 20179\sphinxcode{8} 20180\\ 20181\hline 20182\end{tabulary} 20183\par 20184\sphinxattableend\end{savenotes} 20185 20186 20187\subsubsection{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY} 20188\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:krb5-keyusage-tgs-rep-encpart-subkey-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY::doc}}\label{\detokenize{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)} 20189 20190\begin{fulllineitems} 20191\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}} 20192\end{fulllineitems} 20193 20194 20195 20196\begin{savenotes}\sphinxattablestart 20197\centering 20198\begin{tabulary}{\linewidth}[t]{|T|T|} 20199\hline 20200 20201\sphinxcode{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY} 20202& 20203\sphinxcode{9} 20204\\ 20205\hline 20206\end{tabulary} 20207\par 20208\sphinxattableend\end{savenotes} 20209 20210 20211\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY} 20212\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY:krb5-keyusage-tgs-req-ad-sesskey}}\label{\detokenize{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)} 20213 20214\begin{fulllineitems} 20215\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY:KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}} 20216\end{fulllineitems} 20217 20218 20219 20220\begin{savenotes}\sphinxattablestart 20221\centering 20222\begin{tabulary}{\linewidth}[t]{|T|T|} 20223\hline 20224 20225\sphinxcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY} 20226& 20227\sphinxcode{4} 20228\\ 20229\hline 20230\end{tabulary} 20231\par 20232\sphinxattableend\end{savenotes} 20233 20234 20235\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY} 20236\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY:krb5-keyusage-tgs-req-ad-subkey}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY::doc}}\label{\detokenize{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)} 20237 20238\begin{fulllineitems} 20239\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY:KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}} 20240\end{fulllineitems} 20241 20242 20243 20244\begin{savenotes}\sphinxattablestart 20245\centering 20246\begin{tabulary}{\linewidth}[t]{|T|T|} 20247\hline 20248 20249\sphinxcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY} 20250& 20251\sphinxcode{5} 20252\\ 20253\hline 20254\end{tabulary} 20255\par 20256\sphinxattableend\end{savenotes} 20257 20258 20259\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH} 20260\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:krb5-keyusage-tgs-req-auth}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:krb5-keyusage-tgs-req-auth-data}}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH (built-in variable)} 20261 20262\begin{fulllineitems} 20263\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:KRB5_KEYUSAGE_TGS_REQ_AUTH}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}} 20264\end{fulllineitems} 20265 20266 20267 20268\begin{savenotes}\sphinxattablestart 20269\centering 20270\begin{tabulary}{\linewidth}[t]{|T|T|} 20271\hline 20272 20273\sphinxcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH} 20274& 20275\sphinxcode{7} 20276\\ 20277\hline 20278\end{tabulary} 20279\par 20280\sphinxattableend\end{savenotes} 20281 20282 20283\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM} 20284\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:krb5-keyusage-tgs-req-auth-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM::doc}}\label{\detokenize{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)} 20285 20286\begin{fulllineitems} 20287\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM}}\pysigline{\sphinxbfcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}} 20288\end{fulllineitems} 20289 20290 20291 20292\begin{savenotes}\sphinxattablestart 20293\centering 20294\begin{tabulary}{\linewidth}[t]{|T|T|} 20295\hline 20296 20297\sphinxcode{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM} 20298& 20299\sphinxcode{6} 20300\\ 20301\hline 20302\end{tabulary} 20303\par 20304\sphinxattableend\end{savenotes} 20305 20306 20307\subsubsection{KRB5\_KPASSWD\_ACCESSDENIED} 20308\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:krb5-kpasswd-accessdenied}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:krb5-kpasswd-accessdenied-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED::doc}}\index{KRB5\_KPASSWD\_ACCESSDENIED (built-in variable)} 20309 20310\begin{fulllineitems} 20311\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:KRB5_KPASSWD_ACCESSDENIED}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_ACCESSDENIED}} 20312\end{fulllineitems} 20313 20314 20315Not authorized. 20316 20317 20318\begin{savenotes}\sphinxattablestart 20319\centering 20320\begin{tabulary}{\linewidth}[t]{|T|T|} 20321\hline 20322 20323\sphinxcode{KRB5\_KPASSWD\_ACCESSDENIED} 20324& 20325\sphinxcode{5} 20326\\ 20327\hline 20328\end{tabulary} 20329\par 20330\sphinxattableend\end{savenotes} 20331 20332 20333\subsubsection{KRB5\_KPASSWD\_AUTHERROR} 20334\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:krb5-kpasswd-autherror-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:krb5-kpasswd-autherror}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR::doc}}\index{KRB5\_KPASSWD\_AUTHERROR (built-in variable)} 20335 20336\begin{fulllineitems} 20337\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_AUTHERROR}} 20338\end{fulllineitems} 20339 20340 20341Authentication error. 20342 20343 20344\begin{savenotes}\sphinxattablestart 20345\centering 20346\begin{tabulary}{\linewidth}[t]{|T|T|} 20347\hline 20348 20349\sphinxcode{KRB5\_KPASSWD\_AUTHERROR} 20350& 20351\sphinxcode{3} 20352\\ 20353\hline 20354\end{tabulary} 20355\par 20356\sphinxattableend\end{savenotes} 20357 20358 20359\subsubsection{KRB5\_KPASSWD\_BAD\_VERSION} 20360\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:krb5-kpasswd-bad-version-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:krb5-kpasswd-bad-version}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION::doc}}\index{KRB5\_KPASSWD\_BAD\_VERSION (built-in variable)} 20361 20362\begin{fulllineitems} 20363\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:KRB5_KPASSWD_BAD_VERSION}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_BAD\_VERSION}} 20364\end{fulllineitems} 20365 20366 20367Unknown RPC version. 20368 20369 20370\begin{savenotes}\sphinxattablestart 20371\centering 20372\begin{tabulary}{\linewidth}[t]{|T|T|} 20373\hline 20374 20375\sphinxcode{KRB5\_KPASSWD\_BAD\_VERSION} 20376& 20377\sphinxcode{6} 20378\\ 20379\hline 20380\end{tabulary} 20381\par 20382\sphinxattableend\end{savenotes} 20383 20384 20385\subsubsection{KRB5\_KPASSWD\_HARDERROR} 20386\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:krb5-kpasswd-harderror}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:krb5-kpasswd-harderror-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_HARDERROR::doc}}\index{KRB5\_KPASSWD\_HARDERROR (built-in variable)} 20387 20388\begin{fulllineitems} 20389\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_HARDERROR}} 20390\end{fulllineitems} 20391 20392 20393Server error. 20394 20395 20396\begin{savenotes}\sphinxattablestart 20397\centering 20398\begin{tabulary}{\linewidth}[t]{|T|T|} 20399\hline 20400 20401\sphinxcode{KRB5\_KPASSWD\_HARDERROR} 20402& 20403\sphinxcode{2} 20404\\ 20405\hline 20406\end{tabulary} 20407\par 20408\sphinxattableend\end{savenotes} 20409 20410 20411\subsubsection{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED} 20412\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:krb5-kpasswd-initial-flag-needed}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:krb5-kpasswd-initial-flag-needed-data}}\index{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED (built-in variable)} 20413 20414\begin{fulllineitems} 20415\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:KRB5_KPASSWD_INITIAL_FLAG_NEEDED}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}} 20416\end{fulllineitems} 20417 20418 20419The presented credentials were not obtained using a password directly. 20420 20421 20422\begin{savenotes}\sphinxattablestart 20423\centering 20424\begin{tabulary}{\linewidth}[t]{|T|T|} 20425\hline 20426 20427\sphinxcode{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED} 20428& 20429\sphinxcode{7} 20430\\ 20431\hline 20432\end{tabulary} 20433\par 20434\sphinxattableend\end{savenotes} 20435 20436 20437\subsubsection{KRB5\_KPASSWD\_MALFORMED} 20438\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:krb5-kpasswd-malformed-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:krb5-kpasswd-malformed}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED::doc}}\index{KRB5\_KPASSWD\_MALFORMED (built-in variable)} 20439 20440\begin{fulllineitems} 20441\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_MALFORMED}} 20442\end{fulllineitems} 20443 20444 20445Malformed request. 20446 20447 20448\begin{savenotes}\sphinxattablestart 20449\centering 20450\begin{tabulary}{\linewidth}[t]{|T|T|} 20451\hline 20452 20453\sphinxcode{KRB5\_KPASSWD\_MALFORMED} 20454& 20455\sphinxcode{1} 20456\\ 20457\hline 20458\end{tabulary} 20459\par 20460\sphinxattableend\end{savenotes} 20461 20462 20463\subsubsection{KRB5\_KPASSWD\_SOFTERROR} 20464\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:krb5-kpasswd-softerror}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:krb5-kpasswd-softerror-data}}\index{KRB5\_KPASSWD\_SOFTERROR (built-in variable)} 20465 20466\begin{fulllineitems} 20467\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_SOFTERROR}} 20468\end{fulllineitems} 20469 20470 20471Password change rejected. 20472 20473 20474\begin{savenotes}\sphinxattablestart 20475\centering 20476\begin{tabulary}{\linewidth}[t]{|T|T|} 20477\hline 20478 20479\sphinxcode{KRB5\_KPASSWD\_SOFTERROR} 20480& 20481\sphinxcode{4} 20482\\ 20483\hline 20484\end{tabulary} 20485\par 20486\sphinxattableend\end{savenotes} 20487 20488 20489\subsubsection{KRB5\_KPASSWD\_SUCCESS} 20490\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:krb5-kpasswd-success-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS::doc}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:krb5-kpasswd-success}}\index{KRB5\_KPASSWD\_SUCCESS (built-in variable)} 20491 20492\begin{fulllineitems} 20493\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS}}\pysigline{\sphinxbfcode{KRB5\_KPASSWD\_SUCCESS}} 20494\end{fulllineitems} 20495 20496 20497Success. 20498 20499 20500\begin{savenotes}\sphinxattablestart 20501\centering 20502\begin{tabulary}{\linewidth}[t]{|T|T|} 20503\hline 20504 20505\sphinxcode{KRB5\_KPASSWD\_SUCCESS} 20506& 20507\sphinxcode{0} 20508\\ 20509\hline 20510\end{tabulary} 20511\par 20512\sphinxattableend\end{savenotes} 20513 20514 20515\subsubsection{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME} 20516\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:krb5-lrq-all-acct-exptime}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:krb5-lrq-all-acct-exptime-data}}\index{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME (built-in variable)} 20517 20518\begin{fulllineitems} 20519\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:KRB5_LRQ_ALL_ACCT_EXPTIME}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}} 20520\end{fulllineitems} 20521 20522 20523 20524\begin{savenotes}\sphinxattablestart 20525\centering 20526\begin{tabulary}{\linewidth}[t]{|T|T|} 20527\hline 20528 20529\sphinxcode{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME} 20530& 20531\sphinxcode{7} 20532\\ 20533\hline 20534\end{tabulary} 20535\par 20536\sphinxattableend\end{savenotes} 20537 20538 20539\subsubsection{KRB5\_LRQ\_ALL\_LAST\_INITIAL} 20540\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:krb5-lrq-all-last-initial}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:krb5-lrq-all-last-initial-data}}\index{KRB5\_LRQ\_ALL\_LAST\_INITIAL (built-in variable)} 20541 20542\begin{fulllineitems} 20543\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:KRB5_LRQ_ALL_LAST_INITIAL}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_LAST\_INITIAL}} 20544\end{fulllineitems} 20545 20546 20547 20548\begin{savenotes}\sphinxattablestart 20549\centering 20550\begin{tabulary}{\linewidth}[t]{|T|T|} 20551\hline 20552 20553\sphinxcode{KRB5\_LRQ\_ALL\_LAST\_INITIAL} 20554& 20555\sphinxcode{2} 20556\\ 20557\hline 20558\end{tabulary} 20559\par 20560\sphinxattableend\end{savenotes} 20561 20562 20563\subsubsection{KRB5\_LRQ\_ALL\_LAST\_RENEWAL} 20564\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:krb5-lrq-all-last-renewal}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:krb5-lrq-all-last-renewal-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL::doc}}\index{KRB5\_LRQ\_ALL\_LAST\_RENEWAL (built-in variable)} 20565 20566\begin{fulllineitems} 20567\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:KRB5_LRQ_ALL_LAST_RENEWAL}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}} 20568\end{fulllineitems} 20569 20570 20571 20572\begin{savenotes}\sphinxattablestart 20573\centering 20574\begin{tabulary}{\linewidth}[t]{|T|T|} 20575\hline 20576 20577\sphinxcode{KRB5\_LRQ\_ALL\_LAST\_RENEWAL} 20578& 20579\sphinxcode{4} 20580\\ 20581\hline 20582\end{tabulary} 20583\par 20584\sphinxattableend\end{savenotes} 20585 20586 20587\subsubsection{KRB5\_LRQ\_ALL\_LAST\_REQ} 20588\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:krb5-lrq-all-last-req}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:krb5-lrq-all-last-req-data}}\index{KRB5\_LRQ\_ALL\_LAST\_REQ (built-in variable)} 20589 20590\begin{fulllineitems} 20591\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:KRB5_LRQ_ALL_LAST_REQ}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_LAST\_REQ}} 20592\end{fulllineitems} 20593 20594 20595 20596\begin{savenotes}\sphinxattablestart 20597\centering 20598\begin{tabulary}{\linewidth}[t]{|T|T|} 20599\hline 20600 20601\sphinxcode{KRB5\_LRQ\_ALL\_LAST\_REQ} 20602& 20603\sphinxcode{5} 20604\\ 20605\hline 20606\end{tabulary} 20607\par 20608\sphinxattableend\end{savenotes} 20609 20610 20611\subsubsection{KRB5\_LRQ\_ALL\_LAST\_TGT} 20612\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:krb5-lrq-all-last-tgt-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:krb5-lrq-all-last-tgt}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT::doc}}\index{KRB5\_LRQ\_ALL\_LAST\_TGT (built-in variable)} 20613 20614\begin{fulllineitems} 20615\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:KRB5_LRQ_ALL_LAST_TGT}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_LAST\_TGT}} 20616\end{fulllineitems} 20617 20618 20619 20620\begin{savenotes}\sphinxattablestart 20621\centering 20622\begin{tabulary}{\linewidth}[t]{|T|T|} 20623\hline 20624 20625\sphinxcode{KRB5\_LRQ\_ALL\_LAST\_TGT} 20626& 20627\sphinxcode{1} 20628\\ 20629\hline 20630\end{tabulary} 20631\par 20632\sphinxattableend\end{savenotes} 20633 20634 20635\subsubsection{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED} 20636\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED:krb5-lrq-all-last-tgt-issued}}\label{\detokenize{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)} 20637 20638\begin{fulllineitems} 20639\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED:KRB5_LRQ_ALL_LAST_TGT_ISSUED}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}} 20640\end{fulllineitems} 20641 20642 20643 20644\begin{savenotes}\sphinxattablestart 20645\centering 20646\begin{tabulary}{\linewidth}[t]{|T|T|} 20647\hline 20648 20649\sphinxcode{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED} 20650& 20651\sphinxcode{3} 20652\\ 20653\hline 20654\end{tabulary} 20655\par 20656\sphinxattableend\end{savenotes} 20657 20658 20659\subsubsection{KRB5\_LRQ\_ALL\_PW\_EXPTIME} 20660\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:krb5-lrq-all-pw-exptime-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:krb5-lrq-all-pw-exptime}}\index{KRB5\_LRQ\_ALL\_PW\_EXPTIME (built-in variable)} 20661 20662\begin{fulllineitems} 20663\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:KRB5_LRQ_ALL_PW_EXPTIME}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ALL\_PW\_EXPTIME}} 20664\end{fulllineitems} 20665 20666 20667 20668\begin{savenotes}\sphinxattablestart 20669\centering 20670\begin{tabulary}{\linewidth}[t]{|T|T|} 20671\hline 20672 20673\sphinxcode{KRB5\_LRQ\_ALL\_PW\_EXPTIME} 20674& 20675\sphinxcode{6} 20676\\ 20677\hline 20678\end{tabulary} 20679\par 20680\sphinxattableend\end{savenotes} 20681 20682 20683\subsubsection{KRB5\_LRQ\_NONE} 20684\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE:krb5-lrq-none-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE:krb5-lrq-none}}\index{KRB5\_LRQ\_NONE (built-in variable)} 20685 20686\begin{fulllineitems} 20687\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE:KRB5_LRQ_NONE}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_NONE}} 20688\end{fulllineitems} 20689 20690 20691 20692\begin{savenotes}\sphinxattablestart 20693\centering 20694\begin{tabulary}{\linewidth}[t]{|T|T|} 20695\hline 20696 20697\sphinxcode{KRB5\_LRQ\_NONE} 20698& 20699\sphinxcode{0} 20700\\ 20701\hline 20702\end{tabulary} 20703\par 20704\sphinxattableend\end{savenotes} 20705 20706 20707\subsubsection{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME} 20708\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:krb5-lrq-one-acct-exptime}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:krb5-lrq-one-acct-exptime-data}}\index{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME (built-in variable)} 20709 20710\begin{fulllineitems} 20711\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:KRB5_LRQ_ONE_ACCT_EXPTIME}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}} 20712\end{fulllineitems} 20713 20714 20715 20716\begin{savenotes}\sphinxattablestart 20717\centering 20718\begin{tabulary}{\linewidth}[t]{|T|T|} 20719\hline 20720 20721\sphinxcode{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME} 20722& 20723\sphinxcode{(-7)} 20724\\ 20725\hline 20726\end{tabulary} 20727\par 20728\sphinxattableend\end{savenotes} 20729 20730 20731\subsubsection{KRB5\_LRQ\_ONE\_LAST\_INITIAL} 20732\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:krb5-lrq-one-last-initial-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:krb5-lrq-one-last-initial}}\index{KRB5\_LRQ\_ONE\_LAST\_INITIAL (built-in variable)} 20733 20734\begin{fulllineitems} 20735\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:KRB5_LRQ_ONE_LAST_INITIAL}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_LAST\_INITIAL}} 20736\end{fulllineitems} 20737 20738 20739 20740\begin{savenotes}\sphinxattablestart 20741\centering 20742\begin{tabulary}{\linewidth}[t]{|T|T|} 20743\hline 20744 20745\sphinxcode{KRB5\_LRQ\_ONE\_LAST\_INITIAL} 20746& 20747\sphinxcode{(-2)} 20748\\ 20749\hline 20750\end{tabulary} 20751\par 20752\sphinxattableend\end{savenotes} 20753 20754 20755\subsubsection{KRB5\_LRQ\_ONE\_LAST\_RENEWAL} 20756\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:krb5-lrq-one-last-renewal-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:krb5-lrq-one-last-renewal}}\index{KRB5\_LRQ\_ONE\_LAST\_RENEWAL (built-in variable)} 20757 20758\begin{fulllineitems} 20759\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:KRB5_LRQ_ONE_LAST_RENEWAL}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}} 20760\end{fulllineitems} 20761 20762 20763 20764\begin{savenotes}\sphinxattablestart 20765\centering 20766\begin{tabulary}{\linewidth}[t]{|T|T|} 20767\hline 20768 20769\sphinxcode{KRB5\_LRQ\_ONE\_LAST\_RENEWAL} 20770& 20771\sphinxcode{(-4)} 20772\\ 20773\hline 20774\end{tabulary} 20775\par 20776\sphinxattableend\end{savenotes} 20777 20778 20779\subsubsection{KRB5\_LRQ\_ONE\_LAST\_REQ} 20780\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:krb5-lrq-one-last-req}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:krb5-lrq-one-last-req-data}}\index{KRB5\_LRQ\_ONE\_LAST\_REQ (built-in variable)} 20781 20782\begin{fulllineitems} 20783\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:KRB5_LRQ_ONE_LAST_REQ}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_LAST\_REQ}} 20784\end{fulllineitems} 20785 20786 20787 20788\begin{savenotes}\sphinxattablestart 20789\centering 20790\begin{tabulary}{\linewidth}[t]{|T|T|} 20791\hline 20792 20793\sphinxcode{KRB5\_LRQ\_ONE\_LAST\_REQ} 20794& 20795\sphinxcode{(-5)} 20796\\ 20797\hline 20798\end{tabulary} 20799\par 20800\sphinxattableend\end{savenotes} 20801 20802 20803\subsubsection{KRB5\_LRQ\_ONE\_LAST\_TGT} 20804\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:krb5-lrq-one-last-tgt-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:krb5-lrq-one-last-tgt}}\index{KRB5\_LRQ\_ONE\_LAST\_TGT (built-in variable)} 20805 20806\begin{fulllineitems} 20807\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:KRB5_LRQ_ONE_LAST_TGT}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_LAST\_TGT}} 20808\end{fulllineitems} 20809 20810 20811 20812\begin{savenotes}\sphinxattablestart 20813\centering 20814\begin{tabulary}{\linewidth}[t]{|T|T|} 20815\hline 20816 20817\sphinxcode{KRB5\_LRQ\_ONE\_LAST\_TGT} 20818& 20819\sphinxcode{(-1)} 20820\\ 20821\hline 20822\end{tabulary} 20823\par 20824\sphinxattableend\end{savenotes} 20825 20826 20827\subsubsection{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED} 20828\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:krb5-lrq-one-last-tgt-issued}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:krb5-lrq-one-last-tgt-issued-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED::doc}}\index{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED (built-in variable)} 20829 20830\begin{fulllineitems} 20831\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:KRB5_LRQ_ONE_LAST_TGT_ISSUED}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}} 20832\end{fulllineitems} 20833 20834 20835 20836\begin{savenotes}\sphinxattablestart 20837\centering 20838\begin{tabulary}{\linewidth}[t]{|T|T|} 20839\hline 20840 20841\sphinxcode{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED} 20842& 20843\sphinxcode{(-3)} 20844\\ 20845\hline 20846\end{tabulary} 20847\par 20848\sphinxattableend\end{savenotes} 20849 20850 20851\subsubsection{KRB5\_LRQ\_ONE\_PW\_EXPTIME} 20852\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:krb5-lrq-one-pw-exptime}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:krb5-lrq-one-pw-exptime-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME::doc}}\index{KRB5\_LRQ\_ONE\_PW\_EXPTIME (built-in variable)} 20853 20854\begin{fulllineitems} 20855\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:KRB5_LRQ_ONE_PW_EXPTIME}}\pysigline{\sphinxbfcode{KRB5\_LRQ\_ONE\_PW\_EXPTIME}} 20856\end{fulllineitems} 20857 20858 20859 20860\begin{savenotes}\sphinxattablestart 20861\centering 20862\begin{tabulary}{\linewidth}[t]{|T|T|} 20863\hline 20864 20865\sphinxcode{KRB5\_LRQ\_ONE\_PW\_EXPTIME} 20866& 20867\sphinxcode{(-6)} 20868\\ 20869\hline 20870\end{tabulary} 20871\par 20872\sphinxattableend\end{savenotes} 20873 20874 20875\subsubsection{KRB5\_NT\_ENTERPRISE\_PRINCIPAL} 20876\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:krb5-nt-enterprise-principal-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:krb5-nt-enterprise-principal}}\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL::doc}}\index{KRB5\_NT\_ENTERPRISE\_PRINCIPAL (built-in variable)} 20877 20878\begin{fulllineitems} 20879\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:KRB5_NT_ENTERPRISE_PRINCIPAL}}\pysigline{\sphinxbfcode{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}} 20880\end{fulllineitems} 20881 20882 20883Windows 2000 UPN. 20884 20885 20886\begin{savenotes}\sphinxattablestart 20887\centering 20888\begin{tabulary}{\linewidth}[t]{|T|T|} 20889\hline 20890 20891\sphinxcode{KRB5\_NT\_ENTERPRISE\_PRINCIPAL} 20892& 20893\sphinxcode{10} 20894\\ 20895\hline 20896\end{tabulary} 20897\par 20898\sphinxattableend\end{savenotes} 20899 20900 20901\subsubsection{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID} 20902\label{\detokenize{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:krb5-nt-ent-principal-and-id-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID::doc}}\label{\detokenize{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)} 20903 20904\begin{fulllineitems} 20905\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:KRB5_NT_ENT_PRINCIPAL_AND_ID}}\pysigline{\sphinxbfcode{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}} 20906\end{fulllineitems} 20907 20908 20909NT 4 style name and SID. 20910 20911 20912\begin{savenotes}\sphinxattablestart 20913\centering 20914\begin{tabulary}{\linewidth}[t]{|T|T|} 20915\hline 20916 20917\sphinxcode{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID} 20918& 20919\sphinxcode{-130} 20920\\ 20921\hline 20922\end{tabulary} 20923\par 20924\sphinxattableend\end{savenotes} 20925 20926 20927\subsubsection{KRB5\_NT\_MS\_PRINCIPAL} 20928\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:krb5-nt-ms-principal}}\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:krb5-nt-ms-principal-data}}\index{KRB5\_NT\_MS\_PRINCIPAL (built-in variable)} 20929 20930\begin{fulllineitems} 20931\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:KRB5_NT_MS_PRINCIPAL}}\pysigline{\sphinxbfcode{KRB5\_NT\_MS\_PRINCIPAL}} 20932\end{fulllineitems} 20933 20934 20935Windows 2000 UPN and SID. 20936 20937 20938\begin{savenotes}\sphinxattablestart 20939\centering 20940\begin{tabulary}{\linewidth}[t]{|T|T|} 20941\hline 20942 20943\sphinxcode{KRB5\_NT\_MS\_PRINCIPAL} 20944& 20945\sphinxcode{-128} 20946\\ 20947\hline 20948\end{tabulary} 20949\par 20950\sphinxattableend\end{savenotes} 20951 20952 20953\subsubsection{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID} 20954\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:krb5-nt-ms-principal-and-id-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID::doc}}\label{\detokenize{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)} 20955 20956\begin{fulllineitems} 20957\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:KRB5_NT_MS_PRINCIPAL_AND_ID}}\pysigline{\sphinxbfcode{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}} 20958\end{fulllineitems} 20959 20960 20961NT 4 style name. 20962 20963 20964\begin{savenotes}\sphinxattablestart 20965\centering 20966\begin{tabulary}{\linewidth}[t]{|T|T|} 20967\hline 20968 20969\sphinxcode{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID} 20970& 20971\sphinxcode{-129} 20972\\ 20973\hline 20974\end{tabulary} 20975\par 20976\sphinxattableend\end{savenotes} 20977 20978 20979\subsubsection{KRB5\_NT\_PRINCIPAL} 20980\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL:krb5-nt-principal}}\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL:krb5-nt-principal-data}}\index{KRB5\_NT\_PRINCIPAL (built-in variable)} 20981 20982\begin{fulllineitems} 20983\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL:KRB5_NT_PRINCIPAL}}\pysigline{\sphinxbfcode{KRB5\_NT\_PRINCIPAL}} 20984\end{fulllineitems} 20985 20986 20987Just the name of the principal as in DCE, or for users. 20988 20989 20990\begin{savenotes}\sphinxattablestart 20991\centering 20992\begin{tabulary}{\linewidth}[t]{|T|T|} 20993\hline 20994 20995\sphinxcode{KRB5\_NT\_PRINCIPAL} 20996& 20997\sphinxcode{1} 20998\\ 20999\hline 21000\end{tabulary} 21001\par 21002\sphinxattableend\end{savenotes} 21003 21004 21005\subsubsection{KRB5\_NT\_SMTP\_NAME} 21006\label{\detokenize{appdev/refs/macros/KRB5_NT_SMTP_NAME:krb5-nt-smtp-name}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SMTP_NAME:krb5-nt-smtp-name-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SMTP_NAME::doc}}\index{KRB5\_NT\_SMTP\_NAME (built-in variable)} 21007 21008\begin{fulllineitems} 21009\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SMTP_NAME:KRB5_NT_SMTP_NAME}}\pysigline{\sphinxbfcode{KRB5\_NT\_SMTP\_NAME}} 21010\end{fulllineitems} 21011 21012 21013Name in form of SMTP email name. 21014 21015 21016\begin{savenotes}\sphinxattablestart 21017\centering 21018\begin{tabulary}{\linewidth}[t]{|T|T|} 21019\hline 21020 21021\sphinxcode{KRB5\_NT\_SMTP\_NAME} 21022& 21023\sphinxcode{7} 21024\\ 21025\hline 21026\end{tabulary} 21027\par 21028\sphinxattableend\end{savenotes} 21029 21030 21031\subsubsection{KRB5\_NT\_SRV\_HST} 21032\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:krb5-nt-srv-hst-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST::doc}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:krb5-nt-srv-hst}}\index{KRB5\_NT\_SRV\_HST (built-in variable)} 21033 21034\begin{fulllineitems} 21035\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST}}\pysigline{\sphinxbfcode{KRB5\_NT\_SRV\_HST}} 21036\end{fulllineitems} 21037 21038 21039Service with host name as instance (telnet, rcommands) 21040 21041 21042\begin{savenotes}\sphinxattablestart 21043\centering 21044\begin{tabulary}{\linewidth}[t]{|T|T|} 21045\hline 21046 21047\sphinxcode{KRB5\_NT\_SRV\_HST} 21048& 21049\sphinxcode{3} 21050\\ 21051\hline 21052\end{tabulary} 21053\par 21054\sphinxattableend\end{savenotes} 21055 21056 21057\subsubsection{KRB5\_NT\_SRV\_INST} 21058\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST:krb5-nt-srv-inst-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST::doc}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST:krb5-nt-srv-inst}}\index{KRB5\_NT\_SRV\_INST (built-in variable)} 21059 21060\begin{fulllineitems} 21061\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST:KRB5_NT_SRV_INST}}\pysigline{\sphinxbfcode{KRB5\_NT\_SRV\_INST}} 21062\end{fulllineitems} 21063 21064 21065Service and other unique instance (krbtgt) 21066 21067 21068\begin{savenotes}\sphinxattablestart 21069\centering 21070\begin{tabulary}{\linewidth}[t]{|T|T|} 21071\hline 21072 21073\sphinxcode{KRB5\_NT\_SRV\_INST} 21074& 21075\sphinxcode{2} 21076\\ 21077\hline 21078\end{tabulary} 21079\par 21080\sphinxattableend\end{savenotes} 21081 21082 21083\subsubsection{KRB5\_NT\_SRV\_XHST} 21084\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_XHST:krb5-nt-srv-xhst}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_XHST:krb5-nt-srv-xhst-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_XHST::doc}}\index{KRB5\_NT\_SRV\_XHST (built-in variable)} 21085 21086\begin{fulllineitems} 21087\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_XHST:KRB5_NT_SRV_XHST}}\pysigline{\sphinxbfcode{KRB5\_NT\_SRV\_XHST}} 21088\end{fulllineitems} 21089 21090 21091Service with host as remaining components. 21092 21093 21094\begin{savenotes}\sphinxattablestart 21095\centering 21096\begin{tabulary}{\linewidth}[t]{|T|T|} 21097\hline 21098 21099\sphinxcode{KRB5\_NT\_SRV\_XHST} 21100& 21101\sphinxcode{4} 21102\\ 21103\hline 21104\end{tabulary} 21105\par 21106\sphinxattableend\end{savenotes} 21107 21108 21109\subsubsection{KRB5\_NT\_UID} 21110\label{\detokenize{appdev/refs/macros/KRB5_NT_UID:krb5-nt-uid}}\label{\detokenize{appdev/refs/macros/KRB5_NT_UID:krb5-nt-uid-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_UID::doc}}\index{KRB5\_NT\_UID (built-in variable)} 21111 21112\begin{fulllineitems} 21113\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_UID:KRB5_NT_UID}}\pysigline{\sphinxbfcode{KRB5\_NT\_UID}} 21114\end{fulllineitems} 21115 21116 21117Unique ID. 21118 21119 21120\begin{savenotes}\sphinxattablestart 21121\centering 21122\begin{tabulary}{\linewidth}[t]{|T|T|} 21123\hline 21124 21125\sphinxcode{KRB5\_NT\_UID} 21126& 21127\sphinxcode{5} 21128\\ 21129\hline 21130\end{tabulary} 21131\par 21132\sphinxattableend\end{savenotes} 21133 21134 21135\subsubsection{KRB5\_NT\_UNKNOWN} 21136\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN::doc}}\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:krb5-nt-unknown}}\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:krb5-nt-unknown-data}}\index{KRB5\_NT\_UNKNOWN (built-in variable)} 21137 21138\begin{fulllineitems} 21139\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:KRB5_NT_UNKNOWN}}\pysigline{\sphinxbfcode{KRB5\_NT\_UNKNOWN}} 21140\end{fulllineitems} 21141 21142 21143Name type not known. 21144 21145 21146\begin{savenotes}\sphinxattablestart 21147\centering 21148\begin{tabulary}{\linewidth}[t]{|T|T|} 21149\hline 21150 21151\sphinxcode{KRB5\_NT\_UNKNOWN} 21152& 21153\sphinxcode{0} 21154\\ 21155\hline 21156\end{tabulary} 21157\par 21158\sphinxattableend\end{savenotes} 21159 21160 21161\subsubsection{KRB5\_NT\_WELLKNOWN} 21162\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN:krb5-nt-wellknown-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN:krb5-nt-wellknown}}\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN::doc}}\index{KRB5\_NT\_WELLKNOWN (built-in variable)} 21163 21164\begin{fulllineitems} 21165\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN:KRB5_NT_WELLKNOWN}}\pysigline{\sphinxbfcode{KRB5\_NT\_WELLKNOWN}} 21166\end{fulllineitems} 21167 21168 21169Well-known (special) principal. 21170 21171 21172\begin{savenotes}\sphinxattablestart 21173\centering 21174\begin{tabulary}{\linewidth}[t]{|T|T|} 21175\hline 21176 21177\sphinxcode{KRB5\_NT\_WELLKNOWN} 21178& 21179\sphinxcode{11} 21180\\ 21181\hline 21182\end{tabulary} 21183\par 21184\sphinxattableend\end{savenotes} 21185 21186 21187\subsubsection{KRB5\_NT\_X500\_PRINCIPAL} 21188\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:krb5-nt-x500-principal-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:krb5-nt-x500-principal}}\index{KRB5\_NT\_X500\_PRINCIPAL (built-in variable)} 21189 21190\begin{fulllineitems} 21191\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:KRB5_NT_X500_PRINCIPAL}}\pysigline{\sphinxbfcode{KRB5\_NT\_X500\_PRINCIPAL}} 21192\end{fulllineitems} 21193 21194 21195PKINIT. 21196 21197 21198\begin{savenotes}\sphinxattablestart 21199\centering 21200\begin{tabulary}{\linewidth}[t]{|T|T|} 21201\hline 21202 21203\sphinxcode{KRB5\_NT\_X500\_PRINCIPAL} 21204& 21205\sphinxcode{6} 21206\\ 21207\hline 21208\end{tabulary} 21209\par 21210\sphinxattableend\end{savenotes} 21211 21212 21213\subsubsection{KRB5\_PAC\_CLIENT\_INFO} 21214\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:krb5-pac-client-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:krb5-pac-client-info-data}}\index{KRB5\_PAC\_CLIENT\_INFO (built-in variable)} 21215 21216\begin{fulllineitems} 21217\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:KRB5_PAC_CLIENT_INFO}}\pysigline{\sphinxbfcode{KRB5\_PAC\_CLIENT\_INFO}} 21218\end{fulllineitems} 21219 21220 21221Client name and ticket info. 21222 21223 21224\begin{savenotes}\sphinxattablestart 21225\centering 21226\begin{tabulary}{\linewidth}[t]{|T|T|} 21227\hline 21228 21229\sphinxcode{KRB5\_PAC\_CLIENT\_INFO} 21230& 21231\sphinxcode{10} 21232\\ 21233\hline 21234\end{tabulary} 21235\par 21236\sphinxattableend\end{savenotes} 21237 21238 21239\subsubsection{KRB5\_PAC\_CREDENTIALS\_INFO} 21240\label{\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:krb5-pac-credentials-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:krb5-pac-credentials-info-data}}\index{KRB5\_PAC\_CREDENTIALS\_INFO (built-in variable)} 21241 21242\begin{fulllineitems} 21243\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:KRB5_PAC_CREDENTIALS_INFO}}\pysigline{\sphinxbfcode{KRB5\_PAC\_CREDENTIALS\_INFO}} 21244\end{fulllineitems} 21245 21246 21247Credentials information. 21248 21249 21250\begin{savenotes}\sphinxattablestart 21251\centering 21252\begin{tabulary}{\linewidth}[t]{|T|T|} 21253\hline 21254 21255\sphinxcode{KRB5\_PAC\_CREDENTIALS\_INFO} 21256& 21257\sphinxcode{2} 21258\\ 21259\hline 21260\end{tabulary} 21261\par 21262\sphinxattableend\end{savenotes} 21263 21264 21265\subsubsection{KRB5\_PAC\_DELEGATION\_INFO} 21266\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:krb5-pac-delegation-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:krb5-pac-delegation-info}}\index{KRB5\_PAC\_DELEGATION\_INFO (built-in variable)} 21267 21268\begin{fulllineitems} 21269\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:KRB5_PAC_DELEGATION_INFO}}\pysigline{\sphinxbfcode{KRB5\_PAC\_DELEGATION\_INFO}} 21270\end{fulllineitems} 21271 21272 21273Constrained delegation info. 21274 21275 21276\begin{savenotes}\sphinxattablestart 21277\centering 21278\begin{tabulary}{\linewidth}[t]{|T|T|} 21279\hline 21280 21281\sphinxcode{KRB5\_PAC\_DELEGATION\_INFO} 21282& 21283\sphinxcode{11} 21284\\ 21285\hline 21286\end{tabulary} 21287\par 21288\sphinxattableend\end{savenotes} 21289 21290 21291\subsubsection{KRB5\_PAC\_LOGON\_INFO} 21292\label{\detokenize{appdev/refs/macros/KRB5_PAC_LOGON_INFO:krb5-pac-logon-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_LOGON_INFO:krb5-pac-logon-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_LOGON_INFO::doc}}\index{KRB5\_PAC\_LOGON\_INFO (built-in variable)} 21293 21294\begin{fulllineitems} 21295\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_LOGON_INFO:KRB5_PAC_LOGON_INFO}}\pysigline{\sphinxbfcode{KRB5\_PAC\_LOGON\_INFO}} 21296\end{fulllineitems} 21297 21298 21299Logon information. 21300 21301 21302\begin{savenotes}\sphinxattablestart 21303\centering 21304\begin{tabulary}{\linewidth}[t]{|T|T|} 21305\hline 21306 21307\sphinxcode{KRB5\_PAC\_LOGON\_INFO} 21308& 21309\sphinxcode{1} 21310\\ 21311\hline 21312\end{tabulary} 21313\par 21314\sphinxattableend\end{savenotes} 21315 21316 21317\subsubsection{KRB5\_PAC\_PRIVSVR\_CHECKSUM} 21318\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:krb5-pac-privsvr-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:krb5-pac-privsvr-checksum}}\index{KRB5\_PAC\_PRIVSVR\_CHECKSUM (built-in variable)} 21319 21320\begin{fulllineitems} 21321\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:KRB5_PAC_PRIVSVR_CHECKSUM}}\pysigline{\sphinxbfcode{KRB5\_PAC\_PRIVSVR\_CHECKSUM}} 21322\end{fulllineitems} 21323 21324 21325KDC checksum. 21326 21327 21328\begin{savenotes}\sphinxattablestart 21329\centering 21330\begin{tabulary}{\linewidth}[t]{|T|T|} 21331\hline 21332 21333\sphinxcode{KRB5\_PAC\_PRIVSVR\_CHECKSUM} 21334& 21335\sphinxcode{7} 21336\\ 21337\hline 21338\end{tabulary} 21339\par 21340\sphinxattableend\end{savenotes} 21341 21342 21343\subsubsection{KRB5\_PAC\_SERVER\_CHECKSUM} 21344\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:krb5-pac-server-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:krb5-pac-server-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM::doc}}\index{KRB5\_PAC\_SERVER\_CHECKSUM (built-in variable)} 21345 21346\begin{fulllineitems} 21347\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:KRB5_PAC_SERVER_CHECKSUM}}\pysigline{\sphinxbfcode{KRB5\_PAC\_SERVER\_CHECKSUM}} 21348\end{fulllineitems} 21349 21350 21351Server checksum. 21352 21353 21354\begin{savenotes}\sphinxattablestart 21355\centering 21356\begin{tabulary}{\linewidth}[t]{|T|T|} 21357\hline 21358 21359\sphinxcode{KRB5\_PAC\_SERVER\_CHECKSUM} 21360& 21361\sphinxcode{6} 21362\\ 21363\hline 21364\end{tabulary} 21365\par 21366\sphinxattableend\end{savenotes} 21367 21368 21369\subsubsection{KRB5\_PAC\_UPN\_DNS\_INFO} 21370\label{\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:krb5-pac-upn-dns-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:krb5-pac-upn-dns-info}}\index{KRB5\_PAC\_UPN\_DNS\_INFO (built-in variable)} 21371 21372\begin{fulllineitems} 21373\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:KRB5_PAC_UPN_DNS_INFO}}\pysigline{\sphinxbfcode{KRB5\_PAC\_UPN\_DNS\_INFO}} 21374\end{fulllineitems} 21375 21376 21377User principal name and DNS info. 21378 21379 21380\begin{savenotes}\sphinxattablestart 21381\centering 21382\begin{tabulary}{\linewidth}[t]{|T|T|} 21383\hline 21384 21385\sphinxcode{KRB5\_PAC\_UPN\_DNS\_INFO} 21386& 21387\sphinxcode{12} 21388\\ 21389\hline 21390\end{tabulary} 21391\par 21392\sphinxattableend\end{savenotes} 21393 21394 21395\subsubsection{KRB5\_PADATA\_AFS3\_SALT} 21396\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AFS3_SALT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:krb5-padata-afs3-salt}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:krb5-padata-afs3-salt-data}}\index{KRB5\_PADATA\_AFS3\_SALT (built-in variable)} 21397 21398\begin{fulllineitems} 21399\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:KRB5_PADATA_AFS3_SALT}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_AFS3\_SALT}} 21400\end{fulllineitems} 21401 21402 21403Cygnus. 21404 21405RFC 4120, 3961 21406 21407 21408\begin{savenotes}\sphinxattablestart 21409\centering 21410\begin{tabulary}{\linewidth}[t]{|T|T|} 21411\hline 21412 21413\sphinxcode{KRB5\_PADATA\_AFS3\_SALT} 21414& 21415\sphinxcode{10} 21416\\ 21417\hline 21418\end{tabulary} 21419\par 21420\sphinxattableend\end{savenotes} 21421 21422 21423\subsubsection{KRB5\_PADATA\_AP\_REQ} 21424\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ:krb5-padata-ap-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ:krb5-padata-ap-req}}\index{KRB5\_PADATA\_AP\_REQ (built-in variable)} 21425 21426\begin{fulllineitems} 21427\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ:KRB5_PADATA_AP_REQ}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_AP\_REQ}} 21428\end{fulllineitems} 21429 21430 21431 21432\begin{savenotes}\sphinxattablestart 21433\centering 21434\begin{tabulary}{\linewidth}[t]{|T|T|} 21435\hline 21436 21437\sphinxcode{KRB5\_PADATA\_AP\_REQ} 21438& 21439\sphinxcode{1} 21440\\ 21441\hline 21442\end{tabulary} 21443\par 21444\sphinxattableend\end{savenotes} 21445 21446 21447\subsubsection{KRB5\_PADATA\_AS\_CHECKSUM} 21448\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_CHECKSUM:krb5-padata-as-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_CHECKSUM:krb5-padata-as-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_CHECKSUM::doc}}\index{KRB5\_PADATA\_AS\_CHECKSUM (built-in variable)} 21449 21450\begin{fulllineitems} 21451\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_CHECKSUM:KRB5_PADATA_AS_CHECKSUM}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_AS\_CHECKSUM}} 21452\end{fulllineitems} 21453 21454 21455AS checksum. 21456 21457 21458\begin{savenotes}\sphinxattablestart 21459\centering 21460\begin{tabulary}{\linewidth}[t]{|T|T|} 21461\hline 21462 21463\sphinxcode{KRB5\_PADATA\_AS\_CHECKSUM} 21464& 21465\sphinxcode{132} 21466\\ 21467\hline 21468\end{tabulary} 21469\par 21470\sphinxattableend\end{savenotes} 21471 21472 21473\subsubsection{KRB5\_PADATA\_AS\_FRESHNESS} 21474\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS:krb5-padata-as-freshness-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS:krb5-padata-as-freshness}}\index{KRB5\_PADATA\_AS\_FRESHNESS (built-in variable)} 21475 21476\begin{fulllineitems} 21477\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS:KRB5_PADATA_AS_FRESHNESS}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_AS\_FRESHNESS}} 21478\end{fulllineitems} 21479 21480 21481RFC 8070. 21482 21483 21484\begin{savenotes}\sphinxattablestart 21485\centering 21486\begin{tabulary}{\linewidth}[t]{|T|T|} 21487\hline 21488 21489\sphinxcode{KRB5\_PADATA\_AS\_FRESHNESS} 21490& 21491\sphinxcode{150} 21492\\ 21493\hline 21494\end{tabulary} 21495\par 21496\sphinxattableend\end{savenotes} 21497 21498 21499\subsubsection{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE} 21500\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:krb5-padata-encrypted-challenge-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:krb5-padata-encrypted-challenge}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE::doc}}\index{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE (built-in variable)} 21501 21502\begin{fulllineitems} 21503\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:KRB5_PADATA_ENCRYPTED_CHALLENGE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}} 21504\end{fulllineitems} 21505 21506 21507RFC 6113. 21508 21509 21510\begin{savenotes}\sphinxattablestart 21511\centering 21512\begin{tabulary}{\linewidth}[t]{|T|T|} 21513\hline 21514 21515\sphinxcode{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE} 21516& 21517\sphinxcode{138} 21518\\ 21519\hline 21520\end{tabulary} 21521\par 21522\sphinxattableend\end{savenotes} 21523 21524 21525\subsubsection{KRB5\_PADATA\_ENC\_SANDIA\_SECURID} 21526\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:krb5-padata-enc-sandia-securid-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:krb5-padata-enc-sandia-securid}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID::doc}}\index{KRB5\_PADATA\_ENC\_SANDIA\_SECURID (built-in variable)} 21527 21528\begin{fulllineitems} 21529\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:KRB5_PADATA_ENC_SANDIA_SECURID}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}} 21530\end{fulllineitems} 21531 21532 21533SecurId passcode. 21534 21535RFC 4120 21536 21537 21538\begin{savenotes}\sphinxattablestart 21539\centering 21540\begin{tabulary}{\linewidth}[t]{|T|T|} 21541\hline 21542 21543\sphinxcode{KRB5\_PADATA\_ENC\_SANDIA\_SECURID} 21544& 21545\sphinxcode{6} 21546\\ 21547\hline 21548\end{tabulary} 21549\par 21550\sphinxattableend\end{savenotes} 21551 21552 21553\subsubsection{KRB5\_PADATA\_ENC\_TIMESTAMP} 21554\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:krb5-padata-enc-timestamp}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:krb5-padata-enc-timestamp-data}}\index{KRB5\_PADATA\_ENC\_TIMESTAMP (built-in variable)} 21555 21556\begin{fulllineitems} 21557\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:KRB5_PADATA_ENC_TIMESTAMP}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_ENC\_TIMESTAMP}} 21558\end{fulllineitems} 21559 21560 21561RFC 4120. 21562 21563 21564\begin{savenotes}\sphinxattablestart 21565\centering 21566\begin{tabulary}{\linewidth}[t]{|T|T|} 21567\hline 21568 21569\sphinxcode{KRB5\_PADATA\_ENC\_TIMESTAMP} 21570& 21571\sphinxcode{2} 21572\\ 21573\hline 21574\end{tabulary} 21575\par 21576\sphinxattableend\end{savenotes} 21577 21578 21579\subsubsection{KRB5\_PADATA\_ENC\_UNIX\_TIME} 21580\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:krb5-padata-enc-unix-time}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:krb5-padata-enc-unix-time-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME::doc}}\index{KRB5\_PADATA\_ENC\_UNIX\_TIME (built-in variable)} 21581 21582\begin{fulllineitems} 21583\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:KRB5_PADATA_ENC_UNIX_TIME}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_ENC\_UNIX\_TIME}} 21584\end{fulllineitems} 21585 21586 21587timestamp encrypted in key. 21588 21589RFC 4120 21590 21591 21592\begin{savenotes}\sphinxattablestart 21593\centering 21594\begin{tabulary}{\linewidth}[t]{|T|T|} 21595\hline 21596 21597\sphinxcode{KRB5\_PADATA\_ENC\_UNIX\_TIME} 21598& 21599\sphinxcode{5} 21600\\ 21601\hline 21602\end{tabulary} 21603\par 21604\sphinxattableend\end{savenotes} 21605 21606 21607\subsubsection{KRB5\_PADATA\_ETYPE\_INFO} 21608\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:krb5-padata-etype-info}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:krb5-padata-etype-info-data}}\index{KRB5\_PADATA\_ETYPE\_INFO (built-in variable)} 21609 21610\begin{fulllineitems} 21611\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:KRB5_PADATA_ETYPE_INFO}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_ETYPE\_INFO}} 21612\end{fulllineitems} 21613 21614 21615Etype info for preauth. 21616 21617RFC 4120 21618 21619 21620\begin{savenotes}\sphinxattablestart 21621\centering 21622\begin{tabulary}{\linewidth}[t]{|T|T|} 21623\hline 21624 21625\sphinxcode{KRB5\_PADATA\_ETYPE\_INFO} 21626& 21627\sphinxcode{11} 21628\\ 21629\hline 21630\end{tabulary} 21631\par 21632\sphinxattableend\end{savenotes} 21633 21634 21635\subsubsection{KRB5\_PADATA\_ETYPE\_INFO2} 21636\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:krb5-padata-etype-info2-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:krb5-padata-etype-info2}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2::doc}}\index{KRB5\_PADATA\_ETYPE\_INFO2 (built-in variable)} 21637 21638\begin{fulllineitems} 21639\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:KRB5_PADATA_ETYPE_INFO2}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_ETYPE\_INFO2}} 21640\end{fulllineitems} 21641 21642 21643RFC 4120. 21644 21645 21646\begin{savenotes}\sphinxattablestart 21647\centering 21648\begin{tabulary}{\linewidth}[t]{|T|T|} 21649\hline 21650 21651\sphinxcode{KRB5\_PADATA\_ETYPE\_INFO2} 21652& 21653\sphinxcode{19} 21654\\ 21655\hline 21656\end{tabulary} 21657\par 21658\sphinxattableend\end{savenotes} 21659 21660 21661\subsubsection{KRB5\_PADATA\_FOR\_USER} 21662\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER:krb5-padata-for-user}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER:krb5-padata-for-user-data}}\index{KRB5\_PADATA\_FOR\_USER (built-in variable)} 21663 21664\begin{fulllineitems} 21665\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER:KRB5_PADATA_FOR_USER}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_FOR\_USER}} 21666\end{fulllineitems} 21667 21668 21669username protocol transition request 21670 21671 21672\begin{savenotes}\sphinxattablestart 21673\centering 21674\begin{tabulary}{\linewidth}[t]{|T|T|} 21675\hline 21676 21677\sphinxcode{KRB5\_PADATA\_FOR\_USER} 21678& 21679\sphinxcode{129} 21680\\ 21681\hline 21682\end{tabulary} 21683\par 21684\sphinxattableend\end{savenotes} 21685 21686 21687\subsubsection{KRB5\_PADATA\_FX\_COOKIE} 21688\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:krb5-padata-fx-cookie}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:krb5-padata-fx-cookie-data}}\index{KRB5\_PADATA\_FX\_COOKIE (built-in variable)} 21689 21690\begin{fulllineitems} 21691\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:KRB5_PADATA_FX_COOKIE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_FX\_COOKIE}} 21692\end{fulllineitems} 21693 21694 21695RFC 6113. 21696 21697 21698\begin{savenotes}\sphinxattablestart 21699\centering 21700\begin{tabulary}{\linewidth}[t]{|T|T|} 21701\hline 21702 21703\sphinxcode{KRB5\_PADATA\_FX\_COOKIE} 21704& 21705\sphinxcode{133} 21706\\ 21707\hline 21708\end{tabulary} 21709\par 21710\sphinxattableend\end{savenotes} 21711 21712 21713\subsubsection{KRB5\_PADATA\_FX\_ERROR} 21714\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR:krb5-padata-fx-error}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR:krb5-padata-fx-error-data}}\index{KRB5\_PADATA\_FX\_ERROR (built-in variable)} 21715 21716\begin{fulllineitems} 21717\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR:KRB5_PADATA_FX_ERROR}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_FX\_ERROR}} 21718\end{fulllineitems} 21719 21720 21721RFC 6113. 21722 21723 21724\begin{savenotes}\sphinxattablestart 21725\centering 21726\begin{tabulary}{\linewidth}[t]{|T|T|} 21727\hline 21728 21729\sphinxcode{KRB5\_PADATA\_FX\_ERROR} 21730& 21731\sphinxcode{137} 21732\\ 21733\hline 21734\end{tabulary} 21735\par 21736\sphinxattableend\end{savenotes} 21737 21738 21739\subsubsection{KRB5\_PADATA\_FX\_FAST} 21740\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_FAST::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_FAST:krb5-padata-fx-fast}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_FAST:krb5-padata-fx-fast-data}}\index{KRB5\_PADATA\_FX\_FAST (built-in variable)} 21741 21742\begin{fulllineitems} 21743\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_FAST:KRB5_PADATA_FX_FAST}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_FX\_FAST}} 21744\end{fulllineitems} 21745 21746 21747RFC 6113. 21748 21749 21750\begin{savenotes}\sphinxattablestart 21751\centering 21752\begin{tabulary}{\linewidth}[t]{|T|T|} 21753\hline 21754 21755\sphinxcode{KRB5\_PADATA\_FX\_FAST} 21756& 21757\sphinxcode{136} 21758\\ 21759\hline 21760\end{tabulary} 21761\par 21762\sphinxattableend\end{savenotes} 21763 21764 21765\subsubsection{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA} 21766\label{\detokenize{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:krb5-padata-get-from-typed-data-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA::doc}}\label{\detokenize{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)} 21767 21768\begin{fulllineitems} 21769\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:KRB5_PADATA_GET_FROM_TYPED_DATA}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}} 21770\end{fulllineitems} 21771 21772 21773Embedded in typed data. 21774 21775RFC 4120 21776 21777 21778\begin{savenotes}\sphinxattablestart 21779\centering 21780\begin{tabulary}{\linewidth}[t]{|T|T|} 21781\hline 21782 21783\sphinxcode{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA} 21784& 21785\sphinxcode{22} 21786\\ 21787\hline 21788\end{tabulary} 21789\par 21790\sphinxattableend\end{savenotes} 21791 21792 21793\subsubsection{KRB5\_PADATA\_NONE} 21794\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE:krb5-padata-none-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE:krb5-padata-none}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE::doc}}\index{KRB5\_PADATA\_NONE (built-in variable)} 21795 21796\begin{fulllineitems} 21797\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE:KRB5_PADATA_NONE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_NONE}} 21798\end{fulllineitems} 21799 21800 21801 21802\begin{savenotes}\sphinxattablestart 21803\centering 21804\begin{tabulary}{\linewidth}[t]{|T|T|} 21805\hline 21806 21807\sphinxcode{KRB5\_PADATA\_NONE} 21808& 21809\sphinxcode{0} 21810\\ 21811\hline 21812\end{tabulary} 21813\par 21814\sphinxattableend\end{savenotes} 21815 21816 21817\subsubsection{KRB5\_PADATA\_OSF\_DCE} 21818\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE:krb5-padata-osf-dce}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE:krb5-padata-osf-dce-data}}\index{KRB5\_PADATA\_OSF\_DCE (built-in variable)} 21819 21820\begin{fulllineitems} 21821\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE:KRB5_PADATA_OSF_DCE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_OSF\_DCE}} 21822\end{fulllineitems} 21823 21824 21825OSF DCE. 21826 21827RFC 4120 21828 21829 21830\begin{savenotes}\sphinxattablestart 21831\centering 21832\begin{tabulary}{\linewidth}[t]{|T|T|} 21833\hline 21834 21835\sphinxcode{KRB5\_PADATA\_OSF\_DCE} 21836& 21837\sphinxcode{8} 21838\\ 21839\hline 21840\end{tabulary} 21841\par 21842\sphinxattableend\end{savenotes} 21843 21844 21845\subsubsection{KRB5\_PADATA\_OTP\_CHALLENGE} 21846\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:krb5-padata-otp-challenge}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:krb5-padata-otp-challenge-data}}\index{KRB5\_PADATA\_OTP\_CHALLENGE (built-in variable)} 21847 21848\begin{fulllineitems} 21849\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:KRB5_PADATA_OTP_CHALLENGE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_OTP\_CHALLENGE}} 21850\end{fulllineitems} 21851 21852 21853RFC 6560 section 4.1. 21854 21855 21856\begin{savenotes}\sphinxattablestart 21857\centering 21858\begin{tabulary}{\linewidth}[t]{|T|T|} 21859\hline 21860 21861\sphinxcode{KRB5\_PADATA\_OTP\_CHALLENGE} 21862& 21863\sphinxcode{141} 21864\\ 21865\hline 21866\end{tabulary} 21867\par 21868\sphinxattableend\end{savenotes} 21869 21870 21871\subsubsection{KRB5\_PADATA\_OTP\_PIN\_CHANGE} 21872\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:krb5-padata-otp-pin-change}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:krb5-padata-otp-pin-change-data}}\index{KRB5\_PADATA\_OTP\_PIN\_CHANGE (built-in variable)} 21873 21874\begin{fulllineitems} 21875\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:KRB5_PADATA_OTP_PIN_CHANGE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_OTP\_PIN\_CHANGE}} 21876\end{fulllineitems} 21877 21878 21879RFC 6560 section 4.3. 21880 21881 21882\begin{savenotes}\sphinxattablestart 21883\centering 21884\begin{tabulary}{\linewidth}[t]{|T|T|} 21885\hline 21886 21887\sphinxcode{KRB5\_PADATA\_OTP\_PIN\_CHANGE} 21888& 21889\sphinxcode{144} 21890\\ 21891\hline 21892\end{tabulary} 21893\par 21894\sphinxattableend\end{savenotes} 21895 21896 21897\subsubsection{KRB5\_PADATA\_OTP\_REQUEST} 21898\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:krb5-padata-otp-request}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:krb5-padata-otp-request-data}}\index{KRB5\_PADATA\_OTP\_REQUEST (built-in variable)} 21899 21900\begin{fulllineitems} 21901\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:KRB5_PADATA_OTP_REQUEST}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_OTP\_REQUEST}} 21902\end{fulllineitems} 21903 21904 21905RFC 6560 section 4.2. 21906 21907 21908\begin{savenotes}\sphinxattablestart 21909\centering 21910\begin{tabulary}{\linewidth}[t]{|T|T|} 21911\hline 21912 21913\sphinxcode{KRB5\_PADATA\_OTP\_REQUEST} 21914& 21915\sphinxcode{142} 21916\\ 21917\hline 21918\end{tabulary} 21919\par 21920\sphinxattableend\end{savenotes} 21921 21922 21923\subsubsection{KRB5\_PADATA\_PAC\_OPTIONS} 21924\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_OPTIONS::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_OPTIONS:krb5-padata-pac-options}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_OPTIONS:krb5-padata-pac-options-data}}\index{KRB5\_PADATA\_PAC\_OPTIONS (built-in variable)} 21925 21926\begin{fulllineitems} 21927\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_OPTIONS:KRB5_PADATA_PAC_OPTIONS}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PAC\_OPTIONS}} 21928\end{fulllineitems} 21929 21930 21931MS-KILE and MS-SFU. 21932 21933 21934\begin{savenotes}\sphinxattablestart 21935\centering 21936\begin{tabulary}{\linewidth}[t]{|T|T|} 21937\hline 21938 21939\sphinxcode{KRB5\_PADATA\_PAC\_OPTIONS} 21940& 21941\sphinxcode{167} 21942\\ 21943\hline 21944\end{tabulary} 21945\par 21946\sphinxattableend\end{savenotes} 21947 21948 21949\subsubsection{KRB5\_PADATA\_PAC\_REQUEST} 21950\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:krb5-padata-pac-request-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:krb5-padata-pac-request}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST::doc}}\index{KRB5\_PADATA\_PAC\_REQUEST (built-in variable)} 21951 21952\begin{fulllineitems} 21953\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:KRB5_PADATA_PAC_REQUEST}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PAC\_REQUEST}} 21954\end{fulllineitems} 21955 21956 21957include Windows PAC 21958 21959 21960\begin{savenotes}\sphinxattablestart 21961\centering 21962\begin{tabulary}{\linewidth}[t]{|T|T|} 21963\hline 21964 21965\sphinxcode{KRB5\_PADATA\_PAC\_REQUEST} 21966& 21967\sphinxcode{128} 21968\\ 21969\hline 21970\end{tabulary} 21971\par 21972\sphinxattableend\end{savenotes} 21973 21974 21975\subsubsection{KRB5\_PADATA\_PKINIT\_KX} 21976\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:krb5-padata-pkinit-kx}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:krb5-padata-pkinit-kx-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PKINIT_KX::doc}}\index{KRB5\_PADATA\_PKINIT\_KX (built-in variable)} 21977 21978\begin{fulllineitems} 21979\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:KRB5_PADATA_PKINIT_KX}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PKINIT\_KX}} 21980\end{fulllineitems} 21981 21982 21983RFC 6112. 21984 21985 21986\begin{savenotes}\sphinxattablestart 21987\centering 21988\begin{tabulary}{\linewidth}[t]{|T|T|} 21989\hline 21990 21991\sphinxcode{KRB5\_PADATA\_PKINIT\_KX} 21992& 21993\sphinxcode{147} 21994\\ 21995\hline 21996\end{tabulary} 21997\par 21998\sphinxattableend\end{savenotes} 21999 22000 22001\subsubsection{KRB5\_PADATA\_PK\_AS\_REP} 22002\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:krb5-padata-pk-as-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:krb5-padata-pk-as-rep}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP::doc}}\index{KRB5\_PADATA\_PK\_AS\_REP (built-in variable)} 22003 22004\begin{fulllineitems} 22005\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:KRB5_PADATA_PK_AS_REP}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PK\_AS\_REP}} 22006\end{fulllineitems} 22007 22008 22009PKINIT. 22010 22011RFC 4556 22012 22013 22014\begin{savenotes}\sphinxattablestart 22015\centering 22016\begin{tabulary}{\linewidth}[t]{|T|T|} 22017\hline 22018 22019\sphinxcode{KRB5\_PADATA\_PK\_AS\_REP} 22020& 22021\sphinxcode{17} 22022\\ 22023\hline 22024\end{tabulary} 22025\par 22026\sphinxattableend\end{savenotes} 22027 22028 22029\subsubsection{KRB5\_PADATA\_PK\_AS\_REP\_OLD} 22030\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:krb5-padata-pk-as-rep-old-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD::doc}}\label{\detokenize{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)} 22031 22032\begin{fulllineitems} 22033\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:KRB5_PADATA_PK_AS_REP_OLD}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PK\_AS\_REP\_OLD}} 22034\end{fulllineitems} 22035 22036 22037PKINIT. 22038 22039 22040\begin{savenotes}\sphinxattablestart 22041\centering 22042\begin{tabulary}{\linewidth}[t]{|T|T|} 22043\hline 22044 22045\sphinxcode{KRB5\_PADATA\_PK\_AS\_REP\_OLD} 22046& 22047\sphinxcode{15} 22048\\ 22049\hline 22050\end{tabulary} 22051\par 22052\sphinxattableend\end{savenotes} 22053 22054 22055\subsubsection{KRB5\_PADATA\_PK\_AS\_REQ} 22056\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:krb5-padata-pk-as-req}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:krb5-padata-pk-as-req-data}}\index{KRB5\_PADATA\_PK\_AS\_REQ (built-in variable)} 22057 22058\begin{fulllineitems} 22059\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:KRB5_PADATA_PK_AS_REQ}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PK\_AS\_REQ}} 22060\end{fulllineitems} 22061 22062 22063PKINIT. 22064 22065RFC 4556 22066 22067 22068\begin{savenotes}\sphinxattablestart 22069\centering 22070\begin{tabulary}{\linewidth}[t]{|T|T|} 22071\hline 22072 22073\sphinxcode{KRB5\_PADATA\_PK\_AS\_REQ} 22074& 22075\sphinxcode{16} 22076\\ 22077\hline 22078\end{tabulary} 22079\par 22080\sphinxattableend\end{savenotes} 22081 22082 22083\subsubsection{KRB5\_PADATA\_PK\_AS\_REQ\_OLD} 22084\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:krb5-padata-pk-as-req-old}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:krb5-padata-pk-as-req-old-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD::doc}}\index{KRB5\_PADATA\_PK\_AS\_REQ\_OLD (built-in variable)} 22085 22086\begin{fulllineitems} 22087\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:KRB5_PADATA_PK_AS_REQ_OLD}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}} 22088\end{fulllineitems} 22089 22090 22091PKINIT. 22092 22093 22094\begin{savenotes}\sphinxattablestart 22095\centering 22096\begin{tabulary}{\linewidth}[t]{|T|T|} 22097\hline 22098 22099\sphinxcode{KRB5\_PADATA\_PK\_AS\_REQ\_OLD} 22100& 22101\sphinxcode{14} 22102\\ 22103\hline 22104\end{tabulary} 22105\par 22106\sphinxattableend\end{savenotes} 22107 22108 22109\subsubsection{KRB5\_PADATA\_PW\_SALT} 22110\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT:krb5-padata-pw-salt-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT:krb5-padata-pw-salt}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT::doc}}\index{KRB5\_PADATA\_PW\_SALT (built-in variable)} 22111 22112\begin{fulllineitems} 22113\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT:KRB5_PADATA_PW_SALT}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_PW\_SALT}} 22114\end{fulllineitems} 22115 22116 22117RFC 4120. 22118 22119 22120\begin{savenotes}\sphinxattablestart 22121\centering 22122\begin{tabulary}{\linewidth}[t]{|T|T|} 22123\hline 22124 22125\sphinxcode{KRB5\_PADATA\_PW\_SALT} 22126& 22127\sphinxcode{3} 22128\\ 22129\hline 22130\end{tabulary} 22131\par 22132\sphinxattableend\end{savenotes} 22133 22134 22135\subsubsection{KRB5\_PADATA\_REFERRAL} 22136\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL:krb5-padata-referral}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL:krb5-padata-referral-data}}\index{KRB5\_PADATA\_REFERRAL (built-in variable)} 22137 22138\begin{fulllineitems} 22139\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL:KRB5_PADATA_REFERRAL}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_REFERRAL}} 22140\end{fulllineitems} 22141 22142 22143draft referral system 22144 22145 22146\begin{savenotes}\sphinxattablestart 22147\centering 22148\begin{tabulary}{\linewidth}[t]{|T|T|} 22149\hline 22150 22151\sphinxcode{KRB5\_PADATA\_REFERRAL} 22152& 22153\sphinxcode{25} 22154\\ 22155\hline 22156\end{tabulary} 22157\par 22158\sphinxattableend\end{savenotes} 22159 22160 22161\subsubsection{KRB5\_PADATA\_S4U\_X509\_USER} 22162\label{\detokenize{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:krb5-padata-s4u-x509-user-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:krb5-padata-s4u-x509-user}}\index{KRB5\_PADATA\_S4U\_X509\_USER (built-in variable)} 22163 22164\begin{fulllineitems} 22165\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:KRB5_PADATA_S4U_X509_USER}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_S4U\_X509\_USER}} 22166\end{fulllineitems} 22167 22168 22169certificate protocol transition request 22170 22171 22172\begin{savenotes}\sphinxattablestart 22173\centering 22174\begin{tabulary}{\linewidth}[t]{|T|T|} 22175\hline 22176 22177\sphinxcode{KRB5\_PADATA\_S4U\_X509\_USER} 22178& 22179\sphinxcode{130} 22180\\ 22181\hline 22182\end{tabulary} 22183\par 22184\sphinxattableend\end{savenotes} 22185 22186 22187\subsubsection{KRB5\_PADATA\_SAM\_CHALLENGE} 22188\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:krb5-padata-sam-challenge-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:krb5-padata-sam-challenge}}\index{KRB5\_PADATA\_SAM\_CHALLENGE (built-in variable)} 22189 22190\begin{fulllineitems} 22191\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:KRB5_PADATA_SAM_CHALLENGE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SAM\_CHALLENGE}} 22192\end{fulllineitems} 22193 22194 22195SAM/OTP. 22196 22197 22198\begin{savenotes}\sphinxattablestart 22199\centering 22200\begin{tabulary}{\linewidth}[t]{|T|T|} 22201\hline 22202 22203\sphinxcode{KRB5\_PADATA\_SAM\_CHALLENGE} 22204& 22205\sphinxcode{12} 22206\\ 22207\hline 22208\end{tabulary} 22209\par 22210\sphinxattableend\end{savenotes} 22211 22212 22213\subsubsection{KRB5\_PADATA\_SAM\_CHALLENGE\_2} 22214\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:krb5-padata-sam-challenge-2-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:krb5-padata-sam-challenge-2}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2::doc}}\index{KRB5\_PADATA\_SAM\_CHALLENGE\_2 (built-in variable)} 22215 22216\begin{fulllineitems} 22217\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:KRB5_PADATA_SAM_CHALLENGE_2}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SAM\_CHALLENGE\_2}} 22218\end{fulllineitems} 22219 22220 22221draft challenge system, updated 22222 22223 22224\begin{savenotes}\sphinxattablestart 22225\centering 22226\begin{tabulary}{\linewidth}[t]{|T|T|} 22227\hline 22228 22229\sphinxcode{KRB5\_PADATA\_SAM\_CHALLENGE\_2} 22230& 22231\sphinxcode{30} 22232\\ 22233\hline 22234\end{tabulary} 22235\par 22236\sphinxattableend\end{savenotes} 22237 22238 22239\subsubsection{KRB5\_PADATA\_SAM\_REDIRECT} 22240\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:krb5-padata-sam-redirect-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:krb5-padata-sam-redirect}}\index{KRB5\_PADATA\_SAM\_REDIRECT (built-in variable)} 22241 22242\begin{fulllineitems} 22243\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:KRB5_PADATA_SAM_REDIRECT}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SAM\_REDIRECT}} 22244\end{fulllineitems} 22245 22246 22247SAM/OTP. 22248 22249RFC 4120 22250 22251 22252\begin{savenotes}\sphinxattablestart 22253\centering 22254\begin{tabulary}{\linewidth}[t]{|T|T|} 22255\hline 22256 22257\sphinxcode{KRB5\_PADATA\_SAM\_REDIRECT} 22258& 22259\sphinxcode{21} 22260\\ 22261\hline 22262\end{tabulary} 22263\par 22264\sphinxattableend\end{savenotes} 22265 22266 22267\subsubsection{KRB5\_PADATA\_SAM\_RESPONSE} 22268\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:krb5-padata-sam-response-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:krb5-padata-sam-response}}\index{KRB5\_PADATA\_SAM\_RESPONSE (built-in variable)} 22269 22270\begin{fulllineitems} 22271\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:KRB5_PADATA_SAM_RESPONSE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SAM\_RESPONSE}} 22272\end{fulllineitems} 22273 22274 22275SAM/OTP. 22276 22277 22278\begin{savenotes}\sphinxattablestart 22279\centering 22280\begin{tabulary}{\linewidth}[t]{|T|T|} 22281\hline 22282 22283\sphinxcode{KRB5\_PADATA\_SAM\_RESPONSE} 22284& 22285\sphinxcode{13} 22286\\ 22287\hline 22288\end{tabulary} 22289\par 22290\sphinxattableend\end{savenotes} 22291 22292 22293\subsubsection{KRB5\_PADATA\_SAM\_RESPONSE\_2} 22294\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:krb5-padata-sam-response-2}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:krb5-padata-sam-response-2-data}}\index{KRB5\_PADATA\_SAM\_RESPONSE\_2 (built-in variable)} 22295 22296\begin{fulllineitems} 22297\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:KRB5_PADATA_SAM_RESPONSE_2}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SAM\_RESPONSE\_2}} 22298\end{fulllineitems} 22299 22300 22301draft challenge system, updated 22302 22303 22304\begin{savenotes}\sphinxattablestart 22305\centering 22306\begin{tabulary}{\linewidth}[t]{|T|T|} 22307\hline 22308 22309\sphinxcode{KRB5\_PADATA\_SAM\_RESPONSE\_2} 22310& 22311\sphinxcode{31} 22312\\ 22313\hline 22314\end{tabulary} 22315\par 22316\sphinxattableend\end{savenotes} 22317 22318 22319\subsubsection{KRB5\_PADATA\_SESAME} 22320\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME:krb5-padata-sesame}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME:krb5-padata-sesame-data}}\index{KRB5\_PADATA\_SESAME (built-in variable)} 22321 22322\begin{fulllineitems} 22323\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME:KRB5_PADATA_SESAME}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SESAME}} 22324\end{fulllineitems} 22325 22326 22327Sesame project. 22328 22329RFC 4120 22330 22331 22332\begin{savenotes}\sphinxattablestart 22333\centering 22334\begin{tabulary}{\linewidth}[t]{|T|T|} 22335\hline 22336 22337\sphinxcode{KRB5\_PADATA\_SESAME} 22338& 22339\sphinxcode{7} 22340\\ 22341\hline 22342\end{tabulary} 22343\par 22344\sphinxattableend\end{savenotes} 22345 22346 22347\subsubsection{KRB5\_PADATA\_SPAKE} 22348\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE:krb5-padata-spake-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE:krb5-padata-spake}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE::doc}}\index{KRB5\_PADATA\_SPAKE (built-in variable)} 22349 22350\begin{fulllineitems} 22351\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE:KRB5_PADATA_SPAKE}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SPAKE}} 22352\end{fulllineitems} 22353 22354 22355 22356\begin{savenotes}\sphinxattablestart 22357\centering 22358\begin{tabulary}{\linewidth}[t]{|T|T|} 22359\hline 22360 22361\sphinxcode{KRB5\_PADATA\_SPAKE} 22362& 22363\sphinxcode{151} 22364\\ 22365\hline 22366\end{tabulary} 22367\par 22368\sphinxattableend\end{savenotes} 22369 22370 22371\subsubsection{KRB5\_PADATA\_SVR\_REFERRAL\_INFO} 22372\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:krb5-padata-svr-referral-info}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:krb5-padata-svr-referral-info-data}}\index{KRB5\_PADATA\_SVR\_REFERRAL\_INFO (built-in variable)} 22373 22374\begin{fulllineitems} 22375\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:KRB5_PADATA_SVR_REFERRAL_INFO}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}} 22376\end{fulllineitems} 22377 22378 22379Windows 2000 referrals. 22380 22381RFC 6820 22382 22383 22384\begin{savenotes}\sphinxattablestart 22385\centering 22386\begin{tabulary}{\linewidth}[t]{|T|T|} 22387\hline 22388 22389\sphinxcode{KRB5\_PADATA\_SVR\_REFERRAL\_INFO} 22390& 22391\sphinxcode{20} 22392\\ 22393\hline 22394\end{tabulary} 22395\par 22396\sphinxattableend\end{savenotes} 22397 22398 22399\subsubsection{KRB5\_PADATA\_TGS\_REQ} 22400\label{\detokenize{appdev/refs/macros/KRB5_PADATA_TGS_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_TGS_REQ:krb5-padata-tgs-req}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_TGS_REQ:krb5-padata-tgs-req-data}}\index{KRB5\_PADATA\_TGS\_REQ (built-in variable)} 22401 22402\begin{fulllineitems} 22403\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_TGS_REQ:KRB5_PADATA_TGS_REQ}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_TGS\_REQ}} 22404\end{fulllineitems} 22405 22406 22407 22408\begin{savenotes}\sphinxattablestart 22409\centering 22410\begin{tabulary}{\linewidth}[t]{|T|T|} 22411\hline 22412 22413\sphinxcode{KRB5\_PADATA\_TGS\_REQ} 22414& 22415\sphinxcode{KRB5\_PADATA\_AP\_REQ} 22416\\ 22417\hline 22418\end{tabulary} 22419\par 22420\sphinxattableend\end{savenotes} 22421 22422 22423\subsubsection{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO} 22424\label{\detokenize{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:krb5-padata-use-specified-kvno}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:krb5-padata-use-specified-kvno-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO::doc}}\index{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO (built-in variable)} 22425 22426\begin{fulllineitems} 22427\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:KRB5_PADATA_USE_SPECIFIED_KVNO}}\pysigline{\sphinxbfcode{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}} 22428\end{fulllineitems} 22429 22430 22431RFC 4120. 22432 22433 22434\begin{savenotes}\sphinxattablestart 22435\centering 22436\begin{tabulary}{\linewidth}[t]{|T|T|} 22437\hline 22438 22439\sphinxcode{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO} 22440& 22441\sphinxcode{20} 22442\\ 22443\hline 22444\end{tabulary} 22445\par 22446\sphinxattableend\end{savenotes} 22447 22448 22449\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD} 22450\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:krb5-principal-compare-casefold-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:krb5-principal-compare-casefold}}\index{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD (built-in variable)} 22451 22452\begin{fulllineitems} 22453\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:KRB5_PRINCIPAL_COMPARE_CASEFOLD}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}} 22454\end{fulllineitems} 22455 22456 22457case-insensitive 22458 22459 22460\begin{savenotes}\sphinxattablestart 22461\centering 22462\begin{tabulary}{\linewidth}[t]{|T|T|} 22463\hline 22464 22465\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD} 22466& 22467\sphinxcode{4} 22468\\ 22469\hline 22470\end{tabulary} 22471\par 22472\sphinxattableend\end{savenotes} 22473 22474 22475\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE} 22476\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:krb5-principal-compare-enterprise}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:krb5-principal-compare-enterprise-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE::doc}}\index{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE (built-in variable)} 22477 22478\begin{fulllineitems} 22479\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:KRB5_PRINCIPAL_COMPARE_ENTERPRISE}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}} 22480\end{fulllineitems} 22481 22482 22483UPNs as real principals. 22484 22485 22486\begin{savenotes}\sphinxattablestart 22487\centering 22488\begin{tabulary}{\linewidth}[t]{|T|T|} 22489\hline 22490 22491\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE} 22492& 22493\sphinxcode{2} 22494\\ 22495\hline 22496\end{tabulary} 22497\par 22498\sphinxattableend\end{savenotes} 22499 22500 22501\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM} 22502\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:krb5-principal-compare-ignore-realm}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:krb5-principal-compare-ignore-realm-data}}\index{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM (built-in variable)} 22503 22504\begin{fulllineitems} 22505\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:KRB5_PRINCIPAL_COMPARE_IGNORE_REALM}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}} 22506\end{fulllineitems} 22507 22508 22509ignore realm component 22510 22511 22512\begin{savenotes}\sphinxattablestart 22513\centering 22514\begin{tabulary}{\linewidth}[t]{|T|T|} 22515\hline 22516 22517\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM} 22518& 22519\sphinxcode{1} 22520\\ 22521\hline 22522\end{tabulary} 22523\par 22524\sphinxattableend\end{savenotes} 22525 22526 22527\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_UTF8} 22528\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:krb5-principal-compare-utf8-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:krb5-principal-compare-utf8}}\index{KRB5\_PRINCIPAL\_COMPARE\_UTF8 (built-in variable)} 22529 22530\begin{fulllineitems} 22531\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:KRB5_PRINCIPAL_COMPARE_UTF8}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_COMPARE\_UTF8}} 22532\end{fulllineitems} 22533 22534 22535treat principals as UTF-8 22536 22537 22538\begin{savenotes}\sphinxattablestart 22539\centering 22540\begin{tabulary}{\linewidth}[t]{|T|T|} 22541\hline 22542 22543\sphinxcode{KRB5\_PRINCIPAL\_COMPARE\_UTF8} 22544& 22545\sphinxcode{8} 22546\\ 22547\hline 22548\end{tabulary} 22549\par 22550\sphinxattableend\end{savenotes} 22551 22552 22553\subsubsection{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE} 22554\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:krb5-principal-parse-enterprise-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:krb5-principal-parse-enterprise}}\index{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE (built-in variable)} 22555 22556\begin{fulllineitems} 22557\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:KRB5_PRINCIPAL_PARSE_ENTERPRISE}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}} 22558\end{fulllineitems} 22559 22560 22561Create single-component enterprise principle. 22562 22563 22564\begin{savenotes}\sphinxattablestart 22565\centering 22566\begin{tabulary}{\linewidth}[t]{|T|T|} 22567\hline 22568 22569\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE} 22570& 22571\sphinxcode{0x4} 22572\\ 22573\hline 22574\end{tabulary} 22575\par 22576\sphinxattableend\end{savenotes} 22577 22578 22579\subsubsection{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM} 22580\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:krb5-principal-parse-ignore-realm}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:krb5-principal-parse-ignore-realm-data}}\index{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM (built-in variable)} 22581 22582\begin{fulllineitems} 22583\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:KRB5_PRINCIPAL_PARSE_IGNORE_REALM}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}} 22584\end{fulllineitems} 22585 22586 22587Ignore realm if present. 22588 22589 22590\begin{savenotes}\sphinxattablestart 22591\centering 22592\begin{tabulary}{\linewidth}[t]{|T|T|} 22593\hline 22594 22595\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM} 22596& 22597\sphinxcode{0x8} 22598\\ 22599\hline 22600\end{tabulary} 22601\par 22602\sphinxattableend\end{savenotes} 22603 22604 22605\subsubsection{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM} 22606\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:krb5-principal-parse-no-realm-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:krb5-principal-parse-no-realm}}\index{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM (built-in variable)} 22607 22608\begin{fulllineitems} 22609\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:KRB5_PRINCIPAL_PARSE_NO_REALM}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}} 22610\end{fulllineitems} 22611 22612 22613Error if realm is present. 22614 22615 22616\begin{savenotes}\sphinxattablestart 22617\centering 22618\begin{tabulary}{\linewidth}[t]{|T|T|} 22619\hline 22620 22621\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM} 22622& 22623\sphinxcode{0x1} 22624\\ 22625\hline 22626\end{tabulary} 22627\par 22628\sphinxattableend\end{savenotes} 22629 22630 22631\subsubsection{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM} 22632\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:krb5-principal-parse-require-realm}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:krb5-principal-parse-require-realm-data}}\index{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM (built-in variable)} 22633 22634\begin{fulllineitems} 22635\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:KRB5_PRINCIPAL_PARSE_REQUIRE_REALM}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}} 22636\end{fulllineitems} 22637 22638 22639Error if realm is not present. 22640 22641 22642\begin{savenotes}\sphinxattablestart 22643\centering 22644\begin{tabulary}{\linewidth}[t]{|T|T|} 22645\hline 22646 22647\sphinxcode{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM} 22648& 22649\sphinxcode{0x2} 22650\\ 22651\hline 22652\end{tabulary} 22653\par 22654\sphinxattableend\end{savenotes} 22655 22656 22657\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY} 22658\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:krb5-principal-unparse-display-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:krb5-principal-unparse-display}}\index{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY (built-in variable)} 22659 22660\begin{fulllineitems} 22661\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:KRB5_PRINCIPAL_UNPARSE_DISPLAY}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}} 22662\end{fulllineitems} 22663 22664 22665Don’t escape special characters. 22666 22667 22668\begin{savenotes}\sphinxattablestart 22669\centering 22670\begin{tabulary}{\linewidth}[t]{|T|T|} 22671\hline 22672 22673\sphinxcode{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY} 22674& 22675\sphinxcode{0x4} 22676\\ 22677\hline 22678\end{tabulary} 22679\par 22680\sphinxattableend\end{savenotes} 22681 22682 22683\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM} 22684\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:krb5-principal-unparse-no-realm}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:krb5-principal-unparse-no-realm-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM::doc}}\index{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM (built-in variable)} 22685 22686\begin{fulllineitems} 22687\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:KRB5_PRINCIPAL_UNPARSE_NO_REALM}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}} 22688\end{fulllineitems} 22689 22690 22691Omit realm always. 22692 22693 22694\begin{savenotes}\sphinxattablestart 22695\centering 22696\begin{tabulary}{\linewidth}[t]{|T|T|} 22697\hline 22698 22699\sphinxcode{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM} 22700& 22701\sphinxcode{0x2} 22702\\ 22703\hline 22704\end{tabulary} 22705\par 22706\sphinxattableend\end{savenotes} 22707 22708 22709\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_SHORT} 22710\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:krb5-principal-unparse-short}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:krb5-principal-unparse-short-data}}\index{KRB5\_PRINCIPAL\_UNPARSE\_SHORT (built-in variable)} 22711 22712\begin{fulllineitems} 22713\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:KRB5_PRINCIPAL_UNPARSE_SHORT}}\pysigline{\sphinxbfcode{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}} 22714\end{fulllineitems} 22715 22716 22717Omit realm if it is the local realm. 22718 22719 22720\begin{savenotes}\sphinxattablestart 22721\centering 22722\begin{tabulary}{\linewidth}[t]{|T|T|} 22723\hline 22724 22725\sphinxcode{KRB5\_PRINCIPAL\_UNPARSE\_SHORT} 22726& 22727\sphinxcode{0x1} 22728\\ 22729\hline 22730\end{tabulary} 22731\par 22732\sphinxattableend\end{savenotes} 22733 22734 22735\subsubsection{KRB5\_PRIV} 22736\label{\detokenize{appdev/refs/macros/KRB5_PRIV:krb5-priv-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRIV::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PRIV:krb5-priv}}\index{KRB5\_PRIV (built-in variable)} 22737 22738\begin{fulllineitems} 22739\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRIV:KRB5_PRIV}}\pysigline{\sphinxbfcode{KRB5\_PRIV}} 22740\end{fulllineitems} 22741 22742 22743Private application message. 22744 22745 22746\begin{savenotes}\sphinxattablestart 22747\centering 22748\begin{tabulary}{\linewidth}[t]{|T|T|} 22749\hline 22750 22751\sphinxcode{KRB5\_PRIV} 22752& 22753\sphinxcode{((krb5\_msgtype)21)} 22754\\ 22755\hline 22756\end{tabulary} 22757\par 22758\sphinxattableend\end{savenotes} 22759 22760 22761\subsubsection{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD} 22762\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:krb5-prompt-type-new-password-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:krb5-prompt-type-new-password}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD::doc}}\index{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD (built-in variable)} 22763 22764\begin{fulllineitems} 22765\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:KRB5_PROMPT_TYPE_NEW_PASSWORD}}\pysigline{\sphinxbfcode{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}} 22766\end{fulllineitems} 22767 22768 22769Prompt for new password (during password change) 22770 22771 22772\begin{savenotes}\sphinxattablestart 22773\centering 22774\begin{tabulary}{\linewidth}[t]{|T|T|} 22775\hline 22776 22777\sphinxcode{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD} 22778& 22779\sphinxcode{0x2} 22780\\ 22781\hline 22782\end{tabulary} 22783\par 22784\sphinxattableend\end{savenotes} 22785 22786 22787\subsubsection{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN} 22788\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:krb5-prompt-type-new-password-again}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:krb5-prompt-type-new-password-again-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN::doc}}\index{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN (built-in variable)} 22789 22790\begin{fulllineitems} 22791\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN}}\pysigline{\sphinxbfcode{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}} 22792\end{fulllineitems} 22793 22794 22795Prompt for new password again. 22796 22797 22798\begin{savenotes}\sphinxattablestart 22799\centering 22800\begin{tabulary}{\linewidth}[t]{|T|T|} 22801\hline 22802 22803\sphinxcode{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN} 22804& 22805\sphinxcode{0x3} 22806\\ 22807\hline 22808\end{tabulary} 22809\par 22810\sphinxattableend\end{savenotes} 22811 22812 22813\subsubsection{KRB5\_PROMPT\_TYPE\_PASSWORD} 22814\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:krb5-prompt-type-password-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:krb5-prompt-type-password}}\index{KRB5\_PROMPT\_TYPE\_PASSWORD (built-in variable)} 22815 22816\begin{fulllineitems} 22817\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:KRB5_PROMPT_TYPE_PASSWORD}}\pysigline{\sphinxbfcode{KRB5\_PROMPT\_TYPE\_PASSWORD}} 22818\end{fulllineitems} 22819 22820 22821Prompt for password. 22822 22823 22824\begin{savenotes}\sphinxattablestart 22825\centering 22826\begin{tabulary}{\linewidth}[t]{|T|T|} 22827\hline 22828 22829\sphinxcode{KRB5\_PROMPT\_TYPE\_PASSWORD} 22830& 22831\sphinxcode{0x1} 22832\\ 22833\hline 22834\end{tabulary} 22835\par 22836\sphinxattableend\end{savenotes} 22837 22838 22839\subsubsection{KRB5\_PROMPT\_TYPE\_PREAUTH} 22840\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:krb5-prompt-type-preauth-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:krb5-prompt-type-preauth}}\index{KRB5\_PROMPT\_TYPE\_PREAUTH (built-in variable)} 22841 22842\begin{fulllineitems} 22843\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:KRB5_PROMPT_TYPE_PREAUTH}}\pysigline{\sphinxbfcode{KRB5\_PROMPT\_TYPE\_PREAUTH}} 22844\end{fulllineitems} 22845 22846 22847Prompt for preauthentication data (such as an OTP value) 22848 22849 22850\begin{savenotes}\sphinxattablestart 22851\centering 22852\begin{tabulary}{\linewidth}[t]{|T|T|} 22853\hline 22854 22855\sphinxcode{KRB5\_PROMPT\_TYPE\_PREAUTH} 22856& 22857\sphinxcode{0x4} 22858\\ 22859\hline 22860\end{tabulary} 22861\par 22862\sphinxattableend\end{savenotes} 22863 22864 22865\subsubsection{KRB5\_PVNO} 22866\label{\detokenize{appdev/refs/macros/KRB5_PVNO:krb5-pvno-data}}\label{\detokenize{appdev/refs/macros/KRB5_PVNO::doc}}\label{\detokenize{appdev/refs/macros/KRB5_PVNO:krb5-pvno}}\index{KRB5\_PVNO (built-in variable)} 22867 22868\begin{fulllineitems} 22869\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PVNO:KRB5_PVNO}}\pysigline{\sphinxbfcode{KRB5\_PVNO}} 22870\end{fulllineitems} 22871 22872 22873Protocol version number. 22874 22875 22876\begin{savenotes}\sphinxattablestart 22877\centering 22878\begin{tabulary}{\linewidth}[t]{|T|T|} 22879\hline 22880 22881\sphinxcode{KRB5\_PVNO} 22882& 22883\sphinxcode{5} 22884\\ 22885\hline 22886\end{tabulary} 22887\par 22888\sphinxattableend\end{savenotes} 22889 22890 22891\subsubsection{KRB5\_REALM\_BRANCH\_CHAR} 22892\label{\detokenize{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:krb5-realm-branch-char}}\label{\detokenize{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:krb5-realm-branch-char-data}}\index{KRB5\_REALM\_BRANCH\_CHAR (built-in variable)} 22893 22894\begin{fulllineitems} 22895\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:KRB5_REALM_BRANCH_CHAR}}\pysigline{\sphinxbfcode{KRB5\_REALM\_BRANCH\_CHAR}} 22896\end{fulllineitems} 22897 22898 22899 22900\begin{savenotes}\sphinxattablestart 22901\centering 22902\begin{tabulary}{\linewidth}[t]{|T|T|} 22903\hline 22904 22905\sphinxcode{KRB5\_REALM\_BRANCH\_CHAR} 22906& 22907\sphinxcode{'.'} 22908\\ 22909\hline 22910\end{tabulary} 22911\par 22912\sphinxattableend\end{savenotes} 22913 22914 22915\subsubsection{KRB5\_RECVAUTH\_BADAUTHVERS} 22916\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:krb5-recvauth-badauthvers-data}}\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:krb5-recvauth-badauthvers}}\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS::doc}}\index{KRB5\_RECVAUTH\_BADAUTHVERS (built-in variable)} 22917 22918\begin{fulllineitems} 22919\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:KRB5_RECVAUTH_BADAUTHVERS}}\pysigline{\sphinxbfcode{KRB5\_RECVAUTH\_BADAUTHVERS}} 22920\end{fulllineitems} 22921 22922 22923 22924\begin{savenotes}\sphinxattablestart 22925\centering 22926\begin{tabulary}{\linewidth}[t]{|T|T|} 22927\hline 22928 22929\sphinxcode{KRB5\_RECVAUTH\_BADAUTHVERS} 22930& 22931\sphinxcode{0x0002} 22932\\ 22933\hline 22934\end{tabulary} 22935\par 22936\sphinxattableend\end{savenotes} 22937 22938 22939\subsubsection{KRB5\_RECVAUTH\_SKIP\_VERSION} 22940\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:krb5-recvauth-skip-version}}\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:krb5-recvauth-skip-version-data}}\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION::doc}}\index{KRB5\_RECVAUTH\_SKIP\_VERSION (built-in variable)} 22941 22942\begin{fulllineitems} 22943\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:KRB5_RECVAUTH_SKIP_VERSION}}\pysigline{\sphinxbfcode{KRB5\_RECVAUTH\_SKIP\_VERSION}} 22944\end{fulllineitems} 22945 22946 22947 22948\begin{savenotes}\sphinxattablestart 22949\centering 22950\begin{tabulary}{\linewidth}[t]{|T|T|} 22951\hline 22952 22953\sphinxcode{KRB5\_RECVAUTH\_SKIP\_VERSION} 22954& 22955\sphinxcode{0x0001} 22956\\ 22957\hline 22958\end{tabulary} 22959\par 22960\sphinxattableend\end{savenotes} 22961 22962 22963\subsubsection{KRB5\_REFERRAL\_REALM} 22964\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM:krb5-referral-realm-data}}\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM::doc}}\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM:krb5-referral-realm}}\index{KRB5\_REFERRAL\_REALM (built-in variable)} 22965 22966\begin{fulllineitems} 22967\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM:KRB5_REFERRAL_REALM}}\pysigline{\sphinxbfcode{KRB5\_REFERRAL\_REALM}} 22968\end{fulllineitems} 22969 22970 22971Constant for realm referrals. 22972 22973 22974\begin{savenotes}\sphinxattablestart 22975\centering 22976\begin{tabulary}{\linewidth}[t]{|T|T|} 22977\hline 22978 22979\sphinxcode{KRB5\_REFERRAL\_REALM} 22980& 22981\sphinxcode{""} 22982\\ 22983\hline 22984\end{tabulary} 22985\par 22986\sphinxattableend\end{savenotes} 22987 22988 22989\subsubsection{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW} 22990\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW:krb5-responder-pkinit-flags-token-user-pin-count-low-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW::doc}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW:krb5-responder-pkinit-flags-token-user-pin-count-low}}\index{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW (built-in variable)} 22991 22992\begin{fulllineitems} 22993\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW:KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW}} 22994\end{fulllineitems} 22995 22996 22997This flag indicates that an incorrect PIN was supplied at least once since the last time the correct PIN was supplied. 22998 22999 23000\begin{savenotes}\sphinxattablestart 23001\centering 23002\begin{tabulary}{\linewidth}[t]{|T|T|} 23003\hline 23004 23005\sphinxcode{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW} 23006& 23007\sphinxcode{(1 \textless{}\textless{} 0)} 23008\\ 23009\hline 23010\end{tabulary} 23011\par 23012\sphinxattableend\end{savenotes} 23013 23014 23015\subsubsection{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY} 23016\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY:krb5-responder-pkinit-flags-token-user-pin-final-try}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY:krb5-responder-pkinit-flags-token-user-pin-final-try-data}}\index{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY (built-in variable)} 23017 23018\begin{fulllineitems} 23019\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY:KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY}} 23020\end{fulllineitems} 23021 23022 23023This flag indicates that supplying an incorrect PIN will cause the token to lock itself. 23024 23025 23026\begin{savenotes}\sphinxattablestart 23027\centering 23028\begin{tabulary}{\linewidth}[t]{|T|T|} 23029\hline 23030 23031\sphinxcode{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY} 23032& 23033\sphinxcode{(1 \textless{}\textless{} 1)} 23034\\ 23035\hline 23036\end{tabulary} 23037\par 23038\sphinxattableend\end{savenotes} 23039 23040 23041\subsubsection{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED} 23042\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED::doc}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED:krb5-responder-pkinit-flags-token-user-pin-locked}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED:krb5-responder-pkinit-flags-token-user-pin-locked-data}}\index{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED (built-in variable)} 23043 23044\begin{fulllineitems} 23045\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED:KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED}} 23046\end{fulllineitems} 23047 23048 23049This flag indicates that the user PIN is locked, and you can’t log in to the token with it. 23050 23051 23052\begin{savenotes}\sphinxattablestart 23053\centering 23054\begin{tabulary}{\linewidth}[t]{|T|T|} 23055\hline 23056 23057\sphinxcode{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED} 23058& 23059\sphinxcode{(1 \textless{}\textless{} 2)} 23060\\ 23061\hline 23062\end{tabulary} 23063\par 23064\sphinxattableend\end{savenotes} 23065 23066 23067\subsubsection{KRB5\_RESPONDER\_QUESTION\_PKINIT} 23068\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PKINIT:krb5-responder-question-pkinit}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PKINIT:krb5-responder-question-pkinit-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PKINIT::doc}}\index{KRB5\_RESPONDER\_QUESTION\_PKINIT (built-in variable)} 23069 23070\begin{fulllineitems} 23071\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PKINIT:KRB5_RESPONDER_QUESTION_PKINIT}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_QUESTION\_PKINIT}} 23072\end{fulllineitems} 23073 23074 23075PKINIT responder question. 23076 23077The PKINIT responder question is asked when the client needs a password that’s being used to protect key information, and is formatted as a JSON object. A specific identity’s flags value, if not zero, is the bitwise-OR of one or more of the KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_* flags defined below, and possibly other flags to be added later. Any resemblance to similarly-named CKF\_* values in the PKCS\#11 API should not be depended on. 23078 23079\sphinxstyleemphasis{\{} 23080 23081\sphinxstyleemphasis{identity \textless{}string\textgreater{} : flags \textless{}number\textgreater{},} 23082 23083\sphinxstyleemphasis{…} 23084 23085\sphinxstyleemphasis{\}} 23086 23087The answer to the question MUST be JSON formatted: 23088 23089\sphinxstyleemphasis{\{} 23090 23091\sphinxstyleemphasis{identity \textless{}string\textgreater{} : password \textless{}string\textgreater{},} 23092 23093\sphinxstyleemphasis{…} 23094 23095\sphinxstyleemphasis{\}} 23096 23097 23098\begin{savenotes}\sphinxattablestart 23099\centering 23100\begin{tabulary}{\linewidth}[t]{|T|T|} 23101\hline 23102 23103\sphinxcode{KRB5\_RESPONDER\_QUESTION\_PKINIT} 23104& 23105\sphinxcode{"pkinit"} 23106\\ 23107\hline 23108\end{tabulary} 23109\par 23110\sphinxattableend\end{savenotes} 23111 23112 23113\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN} 23114\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:krb5-responder-otp-flags-collect-pin-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN::doc}}\label{\detokenize{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)} 23115 23116\begin{fulllineitems} 23117\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}} 23118\end{fulllineitems} 23119 23120 23121This flag indicates that the PIN value MUST be collected. 23122 23123 23124\begin{savenotes}\sphinxattablestart 23125\centering 23126\begin{tabulary}{\linewidth}[t]{|T|T|} 23127\hline 23128 23129\sphinxcode{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN} 23130& 23131\sphinxcode{0x0002} 23132\\ 23133\hline 23134\end{tabulary} 23135\par 23136\sphinxattableend\end{savenotes} 23137 23138 23139\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN} 23140\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:krb5-responder-otp-flags-collect-token-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:krb5-responder-otp-flags-collect-token}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN::doc}}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN (built-in variable)} 23141 23142\begin{fulllineitems} 23143\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}} 23144\end{fulllineitems} 23145 23146 23147This flag indicates that the token value MUST be collected. 23148 23149 23150\begin{savenotes}\sphinxattablestart 23151\centering 23152\begin{tabulary}{\linewidth}[t]{|T|T|} 23153\hline 23154 23155\sphinxcode{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN} 23156& 23157\sphinxcode{0x0001} 23158\\ 23159\hline 23160\end{tabulary} 23161\par 23162\sphinxattableend\end{savenotes} 23163 23164 23165\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP} 23166\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:krb5-responder-otp-flags-nextotp-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP::doc}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:krb5-responder-otp-flags-nextotp}}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP (built-in variable)} 23167 23168\begin{fulllineitems} 23169\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:KRB5_RESPONDER_OTP_FLAGS_NEXTOTP}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}} 23170\end{fulllineitems} 23171 23172 23173This flag indicates that the token is now in re-synchronization mode with the server. 23174 23175The user is expected to reply with the next code displayed on the token. 23176 23177 23178\begin{savenotes}\sphinxattablestart 23179\centering 23180\begin{tabulary}{\linewidth}[t]{|T|T|} 23181\hline 23182 23183\sphinxcode{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP} 23184& 23185\sphinxcode{0x0004} 23186\\ 23187\hline 23188\end{tabulary} 23189\par 23190\sphinxattableend\end{savenotes} 23191 23192 23193\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN} 23194\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:krb5-responder-otp-flags-separate-pin}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:krb5-responder-otp-flags-separate-pin-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN::doc}}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN (built-in variable)} 23195 23196\begin{fulllineitems} 23197\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}} 23198\end{fulllineitems} 23199 23200 23201This flag indicates that the PIN MUST be returned as a separate item. 23202 23203This 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. 23204 23205 23206\begin{savenotes}\sphinxattablestart 23207\centering 23208\begin{tabulary}{\linewidth}[t]{|T|T|} 23209\hline 23210 23211\sphinxcode{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN} 23212& 23213\sphinxcode{0x0008} 23214\\ 23215\hline 23216\end{tabulary} 23217\par 23218\sphinxattableend\end{savenotes} 23219 23220 23221\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC} 23222\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:krb5-responder-otp-format-alphanumeric-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:krb5-responder-otp-format-alphanumeric}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC::doc}}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC (built-in variable)} 23223 23224\begin{fulllineitems} 23225\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}} 23226\end{fulllineitems} 23227 23228 23229 23230\begin{savenotes}\sphinxattablestart 23231\centering 23232\begin{tabulary}{\linewidth}[t]{|T|T|} 23233\hline 23234 23235\sphinxcode{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC} 23236& 23237\sphinxcode{2} 23238\\ 23239\hline 23240\end{tabulary} 23241\par 23242\sphinxattableend\end{savenotes} 23243 23244 23245\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL} 23246\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:krb5-responder-otp-format-decimal-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:krb5-responder-otp-format-decimal}}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL (built-in variable)} 23247 23248\begin{fulllineitems} 23249\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:KRB5_RESPONDER_OTP_FORMAT_DECIMAL}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}} 23250\end{fulllineitems} 23251 23252 23253These format constants identify the format of the token value. 23254 23255 23256\begin{savenotes}\sphinxattablestart 23257\centering 23258\begin{tabulary}{\linewidth}[t]{|T|T|} 23259\hline 23260 23261\sphinxcode{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL} 23262& 23263\sphinxcode{0} 23264\\ 23265\hline 23266\end{tabulary} 23267\par 23268\sphinxattableend\end{savenotes} 23269 23270 23271\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL} 23272\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:krb5-responder-otp-format-hexadecimal-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL::doc}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:krb5-responder-otp-format-hexadecimal}}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL (built-in variable)} 23273 23274\begin{fulllineitems} 23275\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}} 23276\end{fulllineitems} 23277 23278 23279 23280\begin{savenotes}\sphinxattablestart 23281\centering 23282\begin{tabulary}{\linewidth}[t]{|T|T|} 23283\hline 23284 23285\sphinxcode{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL} 23286& 23287\sphinxcode{1} 23288\\ 23289\hline 23290\end{tabulary} 23291\par 23292\sphinxattableend\end{savenotes} 23293 23294 23295\subsubsection{KRB5\_RESPONDER\_QUESTION\_OTP} 23296\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:krb5-responder-question-otp}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:krb5-responder-question-otp-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP::doc}}\index{KRB5\_RESPONDER\_QUESTION\_OTP (built-in variable)} 23297 23298\begin{fulllineitems} 23299\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:KRB5_RESPONDER_QUESTION_OTP}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_QUESTION\_OTP}} 23300\end{fulllineitems} 23301 23302 23303OTP responder question. 23304 23305The 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: 23306 23307\sphinxstyleemphasis{\{} 23308 23309\sphinxstyleemphasis{“service”: \textless{}string (optional)\textgreater{},} 23310 23311\sphinxstyleemphasis{“tokenInfo”: {[}} 23312 23313\sphinxstyleemphasis{\{} 23314 23315\sphinxstyleemphasis{“flags”: \textless{}number\textgreater{},} 23316 23317\sphinxstyleemphasis{“vendor”: \textless{}string (optional)\textgreater{},} 23318 23319\sphinxstyleemphasis{“challenge”: \textless{}string (optional)\textgreater{},} 23320 23321\sphinxstyleemphasis{“length”: \textless{}number (optional)\textgreater{},} 23322 23323\sphinxstyleemphasis{“format”: \textless{}number (optional)\textgreater{},} 23324 23325\sphinxstyleemphasis{“tokenID”: \textless{}string (optional)\textgreater{},} 23326 23327\sphinxstyleemphasis{“algID”: \textless{}string (optional)\textgreater{},} 23328 23329\sphinxstyleemphasis{\},} 23330 23331\sphinxstyleemphasis{…} 23332 23333\sphinxstyleemphasis{{]}} 23334 23335\sphinxstyleemphasis{\}} 23336 23337The answer to the question MUST be JSON formatted: 23338 23339\sphinxstyleemphasis{\{} 23340 23341\sphinxstyleemphasis{“tokeninfo”: \textless{}number\textgreater{},} 23342 23343\sphinxstyleemphasis{“value”: \textless{}string (optional)\textgreater{},} 23344 23345\sphinxstyleemphasis{“pin”: \textless{}string (optional)\textgreater{},} 23346 23347\sphinxstyleemphasis{\}} 23348 23349For more detail, please see RFC 6560. 23350 23351 23352\begin{savenotes}\sphinxattablestart 23353\centering 23354\begin{tabulary}{\linewidth}[t]{|T|T|} 23355\hline 23356 23357\sphinxcode{KRB5\_RESPONDER\_QUESTION\_OTP} 23358& 23359\sphinxcode{"otp"} 23360\\ 23361\hline 23362\end{tabulary} 23363\par 23364\sphinxattableend\end{savenotes} 23365 23366 23367\subsubsection{KRB5\_RESPONDER\_QUESTION\_PASSWORD} 23368\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:krb5-responder-question-password-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:krb5-responder-question-password}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD::doc}}\index{KRB5\_RESPONDER\_QUESTION\_PASSWORD (built-in variable)} 23369 23370\begin{fulllineitems} 23371\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:KRB5_RESPONDER_QUESTION_PASSWORD}}\pysigline{\sphinxbfcode{KRB5\_RESPONDER\_QUESTION\_PASSWORD}} 23372\end{fulllineitems} 23373 23374 23375Long-term password responder question. 23376 23377This question is asked when the long-term password is needed. It has no challenge and the response is simply the password string. 23378 23379 23380\begin{savenotes}\sphinxattablestart 23381\centering 23382\begin{tabulary}{\linewidth}[t]{|T|T|} 23383\hline 23384 23385\sphinxcode{KRB5\_RESPONDER\_QUESTION\_PASSWORD} 23386& 23387\sphinxcode{"password"} 23388\\ 23389\hline 23390\end{tabulary} 23391\par 23392\sphinxattableend\end{savenotes} 23393 23394 23395\subsubsection{KRB5\_SAFE} 23396\label{\detokenize{appdev/refs/macros/KRB5_SAFE:krb5-safe}}\label{\detokenize{appdev/refs/macros/KRB5_SAFE::doc}}\label{\detokenize{appdev/refs/macros/KRB5_SAFE:krb5-safe-data}}\index{KRB5\_SAFE (built-in variable)} 23397 23398\begin{fulllineitems} 23399\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAFE:KRB5_SAFE}}\pysigline{\sphinxbfcode{KRB5\_SAFE}} 23400\end{fulllineitems} 23401 23402 23403Safe application message. 23404 23405 23406\begin{savenotes}\sphinxattablestart 23407\centering 23408\begin{tabulary}{\linewidth}[t]{|T|T|} 23409\hline 23410 23411\sphinxcode{KRB5\_SAFE} 23412& 23413\sphinxcode{((krb5\_msgtype)20)} 23414\\ 23415\hline 23416\end{tabulary} 23417\par 23418\sphinxattableend\end{savenotes} 23419 23420 23421\subsubsection{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD} 23422\label{\detokenize{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:krb5-sam-must-pk-encrypt-sad}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:krb5-sam-must-pk-encrypt-sad-data}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD::doc}}\index{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD (built-in variable)} 23423 23424\begin{fulllineitems} 23425\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:KRB5_SAM_MUST_PK_ENCRYPT_SAD}}\pysigline{\sphinxbfcode{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}} 23426\end{fulllineitems} 23427 23428 23429currently must be zero 23430 23431 23432\begin{savenotes}\sphinxattablestart 23433\centering 23434\begin{tabulary}{\linewidth}[t]{|T|T|} 23435\hline 23436 23437\sphinxcode{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD} 23438& 23439\sphinxcode{0x20000000} 23440\\ 23441\hline 23442\end{tabulary} 23443\par 23444\sphinxattableend\end{savenotes} 23445 23446 23447\subsubsection{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD} 23448\label{\detokenize{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:krb5-sam-send-encrypted-sad}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD::doc}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:krb5-sam-send-encrypted-sad-data}}\index{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD (built-in variable)} 23449 23450\begin{fulllineitems} 23451\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:KRB5_SAM_SEND_ENCRYPTED_SAD}}\pysigline{\sphinxbfcode{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}} 23452\end{fulllineitems} 23453 23454 23455 23456\begin{savenotes}\sphinxattablestart 23457\centering 23458\begin{tabulary}{\linewidth}[t]{|T|T|} 23459\hline 23460 23461\sphinxcode{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD} 23462& 23463\sphinxcode{0x40000000} 23464\\ 23465\hline 23466\end{tabulary} 23467\par 23468\sphinxattableend\end{savenotes} 23469 23470 23471\subsubsection{KRB5\_SAM\_USE\_SAD\_AS\_KEY} 23472\label{\detokenize{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY:krb5-sam-use-sad-as-key}}\label{\detokenize{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)} 23473 23474\begin{fulllineitems} 23475\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY:KRB5_SAM_USE_SAD_AS_KEY}}\pysigline{\sphinxbfcode{KRB5\_SAM\_USE\_SAD\_AS\_KEY}} 23476\end{fulllineitems} 23477 23478 23479 23480\begin{savenotes}\sphinxattablestart 23481\centering 23482\begin{tabulary}{\linewidth}[t]{|T|T|} 23483\hline 23484 23485\sphinxcode{KRB5\_SAM\_USE\_SAD\_AS\_KEY} 23486& 23487\sphinxcode{0x80000000} 23488\\ 23489\hline 23490\end{tabulary} 23491\par 23492\sphinxattableend\end{savenotes} 23493 23494 23495\subsubsection{KRB5\_TC\_MATCH\_2ND\_TKT} 23496\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:krb5-tc-match-2nd-tkt-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:krb5-tc-match-2nd-tkt}}\index{KRB5\_TC\_MATCH\_2ND\_TKT (built-in variable)} 23497 23498\begin{fulllineitems} 23499\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:KRB5_TC_MATCH_2ND_TKT}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_2ND\_TKT}} 23500\end{fulllineitems} 23501 23502 23503The second ticket must match. 23504 23505 23506\begin{savenotes}\sphinxattablestart 23507\centering 23508\begin{tabulary}{\linewidth}[t]{|T|T|} 23509\hline 23510 23511\sphinxcode{KRB5\_TC\_MATCH\_2ND\_TKT} 23512& 23513\sphinxcode{0x00000080} 23514\\ 23515\hline 23516\end{tabulary} 23517\par 23518\sphinxattableend\end{savenotes} 23519 23520 23521\subsubsection{KRB5\_TC\_MATCH\_AUTHDATA} 23522\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:krb5-tc-match-authdata-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:krb5-tc-match-authdata}}\index{KRB5\_TC\_MATCH\_AUTHDATA (built-in variable)} 23523 23524\begin{fulllineitems} 23525\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:KRB5_TC_MATCH_AUTHDATA}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_AUTHDATA}} 23526\end{fulllineitems} 23527 23528 23529The authorization data must match. 23530 23531 23532\begin{savenotes}\sphinxattablestart 23533\centering 23534\begin{tabulary}{\linewidth}[t]{|T|T|} 23535\hline 23536 23537\sphinxcode{KRB5\_TC\_MATCH\_AUTHDATA} 23538& 23539\sphinxcode{0x00000020} 23540\\ 23541\hline 23542\end{tabulary} 23543\par 23544\sphinxattableend\end{savenotes} 23545 23546 23547\subsubsection{KRB5\_TC\_MATCH\_FLAGS} 23548\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:krb5-tc-match-flags}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:krb5-tc-match-flags-data}}\index{KRB5\_TC\_MATCH\_FLAGS (built-in variable)} 23549 23550\begin{fulllineitems} 23551\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:KRB5_TC_MATCH_FLAGS}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_FLAGS}} 23552\end{fulllineitems} 23553 23554 23555All the flags set in the match credentials must be set. 23556 23557 23558\begin{savenotes}\sphinxattablestart 23559\centering 23560\begin{tabulary}{\linewidth}[t]{|T|T|} 23561\hline 23562 23563\sphinxcode{KRB5\_TC\_MATCH\_FLAGS} 23564& 23565\sphinxcode{0x00000004} 23566\\ 23567\hline 23568\end{tabulary} 23569\par 23570\sphinxattableend\end{savenotes} 23571 23572 23573\subsubsection{KRB5\_TC\_MATCH\_FLAGS\_EXACT} 23574\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:krb5-tc-match-flags-exact}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:krb5-tc-match-flags-exact-data}}\index{KRB5\_TC\_MATCH\_FLAGS\_EXACT (built-in variable)} 23575 23576\begin{fulllineitems} 23577\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:KRB5_TC_MATCH_FLAGS_EXACT}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_FLAGS\_EXACT}} 23578\end{fulllineitems} 23579 23580 23581All the flags must match exactly. 23582 23583 23584\begin{savenotes}\sphinxattablestart 23585\centering 23586\begin{tabulary}{\linewidth}[t]{|T|T|} 23587\hline 23588 23589\sphinxcode{KRB5\_TC\_MATCH\_FLAGS\_EXACT} 23590& 23591\sphinxcode{0x00000010} 23592\\ 23593\hline 23594\end{tabulary} 23595\par 23596\sphinxattableend\end{savenotes} 23597 23598 23599\subsubsection{KRB5\_TC\_MATCH\_IS\_SKEY} 23600\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:krb5-tc-match-is-skey}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:krb5-tc-match-is-skey-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY::doc}}\index{KRB5\_TC\_MATCH\_IS\_SKEY (built-in variable)} 23601 23602\begin{fulllineitems} 23603\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:KRB5_TC_MATCH_IS_SKEY}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_IS\_SKEY}} 23604\end{fulllineitems} 23605 23606 23607The is\_skey field must match exactly. 23608 23609 23610\begin{savenotes}\sphinxattablestart 23611\centering 23612\begin{tabulary}{\linewidth}[t]{|T|T|} 23613\hline 23614 23615\sphinxcode{KRB5\_TC\_MATCH\_IS\_SKEY} 23616& 23617\sphinxcode{0x00000002} 23618\\ 23619\hline 23620\end{tabulary} 23621\par 23622\sphinxattableend\end{savenotes} 23623 23624 23625\subsubsection{KRB5\_TC\_MATCH\_KTYPE} 23626\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:krb5-tc-match-ktype}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:krb5-tc-match-ktype-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_KTYPE::doc}}\index{KRB5\_TC\_MATCH\_KTYPE (built-in variable)} 23627 23628\begin{fulllineitems} 23629\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:KRB5_TC_MATCH_KTYPE}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_KTYPE}} 23630\end{fulllineitems} 23631 23632 23633The encryption key type must match. 23634 23635 23636\begin{savenotes}\sphinxattablestart 23637\centering 23638\begin{tabulary}{\linewidth}[t]{|T|T|} 23639\hline 23640 23641\sphinxcode{KRB5\_TC\_MATCH\_KTYPE} 23642& 23643\sphinxcode{0x00000100} 23644\\ 23645\hline 23646\end{tabulary} 23647\par 23648\sphinxattableend\end{savenotes} 23649 23650 23651\subsubsection{KRB5\_TC\_MATCH\_SRV\_NAMEONLY} 23652\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:krb5-tc-match-srv-nameonly}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:krb5-tc-match-srv-nameonly-data}}\index{KRB5\_TC\_MATCH\_SRV\_NAMEONLY (built-in variable)} 23653 23654\begin{fulllineitems} 23655\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:KRB5_TC_MATCH_SRV_NAMEONLY}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}} 23656\end{fulllineitems} 23657 23658 23659Only the name portion of the principal name must match. 23660 23661 23662\begin{savenotes}\sphinxattablestart 23663\centering 23664\begin{tabulary}{\linewidth}[t]{|T|T|} 23665\hline 23666 23667\sphinxcode{KRB5\_TC\_MATCH\_SRV\_NAMEONLY} 23668& 23669\sphinxcode{0x00000040} 23670\\ 23671\hline 23672\end{tabulary} 23673\par 23674\sphinxattableend\end{savenotes} 23675 23676 23677\subsubsection{KRB5\_TC\_MATCH\_TIMES} 23678\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES:krb5-tc-match-times}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES:krb5-tc-match-times-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES::doc}}\index{KRB5\_TC\_MATCH\_TIMES (built-in variable)} 23679 23680\begin{fulllineitems} 23681\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES:KRB5_TC_MATCH_TIMES}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_TIMES}} 23682\end{fulllineitems} 23683 23684 23685The requested lifetime must be at least as great as the time specified. 23686 23687 23688\begin{savenotes}\sphinxattablestart 23689\centering 23690\begin{tabulary}{\linewidth}[t]{|T|T|} 23691\hline 23692 23693\sphinxcode{KRB5\_TC\_MATCH\_TIMES} 23694& 23695\sphinxcode{0x00000001} 23696\\ 23697\hline 23698\end{tabulary} 23699\par 23700\sphinxattableend\end{savenotes} 23701 23702 23703\subsubsection{KRB5\_TC\_MATCH\_TIMES\_EXACT} 23704\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:krb5-tc-match-times-exact-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:krb5-tc-match-times-exact}}\index{KRB5\_TC\_MATCH\_TIMES\_EXACT (built-in variable)} 23705 23706\begin{fulllineitems} 23707\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:KRB5_TC_MATCH_TIMES_EXACT}}\pysigline{\sphinxbfcode{KRB5\_TC\_MATCH\_TIMES\_EXACT}} 23708\end{fulllineitems} 23709 23710 23711All the time fields must match exactly. 23712 23713 23714\begin{savenotes}\sphinxattablestart 23715\centering 23716\begin{tabulary}{\linewidth}[t]{|T|T|} 23717\hline 23718 23719\sphinxcode{KRB5\_TC\_MATCH\_TIMES\_EXACT} 23720& 23721\sphinxcode{0x00000008} 23722\\ 23723\hline 23724\end{tabulary} 23725\par 23726\sphinxattableend\end{savenotes} 23727 23728 23729\subsubsection{KRB5\_TC\_NOTICKET} 23730\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET:krb5-tc-noticket}}\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET:krb5-tc-noticket-data}}\index{KRB5\_TC\_NOTICKET (built-in variable)} 23731 23732\begin{fulllineitems} 23733\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET:KRB5_TC_NOTICKET}}\pysigline{\sphinxbfcode{KRB5\_TC\_NOTICKET}} 23734\end{fulllineitems} 23735 23736 23737 23738\begin{savenotes}\sphinxattablestart 23739\centering 23740\begin{tabulary}{\linewidth}[t]{|T|T|} 23741\hline 23742 23743\sphinxcode{KRB5\_TC\_NOTICKET} 23744& 23745\sphinxcode{0x00000002} 23746\\ 23747\hline 23748\end{tabulary} 23749\par 23750\sphinxattableend\end{savenotes} 23751 23752 23753\subsubsection{KRB5\_TC\_OPENCLOSE} 23754\label{\detokenize{appdev/refs/macros/KRB5_TC_OPENCLOSE:krb5-tc-openclose}}\label{\detokenize{appdev/refs/macros/KRB5_TC_OPENCLOSE:krb5-tc-openclose-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_OPENCLOSE::doc}}\index{KRB5\_TC\_OPENCLOSE (built-in variable)} 23755 23756\begin{fulllineitems} 23757\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_OPENCLOSE:KRB5_TC_OPENCLOSE}}\pysigline{\sphinxbfcode{KRB5\_TC\_OPENCLOSE}} 23758\end{fulllineitems} 23759 23760 23761Open and close the file for each cache operation. 23762 23763 23764\begin{savenotes}\sphinxattablestart 23765\centering 23766\begin{tabulary}{\linewidth}[t]{|T|T|} 23767\hline 23768 23769\sphinxcode{KRB5\_TC\_OPENCLOSE} 23770& 23771\sphinxcode{0x00000001} 23772\\ 23773\hline 23774\end{tabulary} 23775\par 23776\sphinxattableend\end{savenotes} 23777 23778 23779\subsubsection{KRB5\_TC\_SUPPORTED\_KTYPES} 23780\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:krb5-tc-supported-ktypes-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:krb5-tc-supported-ktypes}}\index{KRB5\_TC\_SUPPORTED\_KTYPES (built-in variable)} 23781 23782\begin{fulllineitems} 23783\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:KRB5_TC_SUPPORTED_KTYPES}}\pysigline{\sphinxbfcode{KRB5\_TC\_SUPPORTED\_KTYPES}} 23784\end{fulllineitems} 23785 23786 23787The supported key types must match. 23788 23789 23790\begin{savenotes}\sphinxattablestart 23791\centering 23792\begin{tabulary}{\linewidth}[t]{|T|T|} 23793\hline 23794 23795\sphinxcode{KRB5\_TC\_SUPPORTED\_KTYPES} 23796& 23797\sphinxcode{0x00000200} 23798\\ 23799\hline 23800\end{tabulary} 23801\par 23802\sphinxattableend\end{savenotes} 23803 23804 23805\subsubsection{KRB5\_TGS\_NAME} 23806\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME:krb5-tgs-name-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME:krb5-tgs-name}}\index{KRB5\_TGS\_NAME (built-in variable)} 23807 23808\begin{fulllineitems} 23809\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME:KRB5_TGS_NAME}}\pysigline{\sphinxbfcode{KRB5\_TGS\_NAME}} 23810\end{fulllineitems} 23811 23812 23813 23814\begin{savenotes}\sphinxattablestart 23815\centering 23816\begin{tabulary}{\linewidth}[t]{|T|T|} 23817\hline 23818 23819\sphinxcode{KRB5\_TGS\_NAME} 23820& 23821\sphinxcode{"krbtgt"} 23822\\ 23823\hline 23824\end{tabulary} 23825\par 23826\sphinxattableend\end{savenotes} 23827 23828 23829\subsubsection{KRB5\_TGS\_NAME\_SIZE} 23830\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME_SIZE:krb5-tgs-name-size}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME_SIZE:krb5-tgs-name-size-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME_SIZE::doc}}\index{KRB5\_TGS\_NAME\_SIZE (built-in variable)} 23831 23832\begin{fulllineitems} 23833\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME_SIZE:KRB5_TGS_NAME_SIZE}}\pysigline{\sphinxbfcode{KRB5\_TGS\_NAME\_SIZE}} 23834\end{fulllineitems} 23835 23836 23837 23838\begin{savenotes}\sphinxattablestart 23839\centering 23840\begin{tabulary}{\linewidth}[t]{|T|T|} 23841\hline 23842 23843\sphinxcode{KRB5\_TGS\_NAME\_SIZE} 23844& 23845\sphinxcode{6} 23846\\ 23847\hline 23848\end{tabulary} 23849\par 23850\sphinxattableend\end{savenotes} 23851 23852 23853\subsubsection{KRB5\_TGS\_REP} 23854\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP:krb5-tgs-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP:krb5-tgs-rep}}\index{KRB5\_TGS\_REP (built-in variable)} 23855 23856\begin{fulllineitems} 23857\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP:KRB5_TGS_REP}}\pysigline{\sphinxbfcode{KRB5\_TGS\_REP}} 23858\end{fulllineitems} 23859 23860 23861Response to TGS request. 23862 23863 23864\begin{savenotes}\sphinxattablestart 23865\centering 23866\begin{tabulary}{\linewidth}[t]{|T|T|} 23867\hline 23868 23869\sphinxcode{KRB5\_TGS\_REP} 23870& 23871\sphinxcode{((krb5\_msgtype)13)} 23872\\ 23873\hline 23874\end{tabulary} 23875\par 23876\sphinxattableend\end{savenotes} 23877 23878 23879\subsubsection{KRB5\_TGS\_REQ} 23880\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ:krb5-tgs-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ::doc}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ:krb5-tgs-req}}\index{KRB5\_TGS\_REQ (built-in variable)} 23881 23882\begin{fulllineitems} 23883\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ:KRB5_TGS_REQ}}\pysigline{\sphinxbfcode{KRB5\_TGS\_REQ}} 23884\end{fulllineitems} 23885 23886 23887Ticket granting server request. 23888 23889 23890\begin{savenotes}\sphinxattablestart 23891\centering 23892\begin{tabulary}{\linewidth}[t]{|T|T|} 23893\hline 23894 23895\sphinxcode{KRB5\_TGS\_REQ} 23896& 23897\sphinxcode{((krb5\_msgtype)12)} 23898\\ 23899\hline 23900\end{tabulary} 23901\par 23902\sphinxattableend\end{savenotes} 23903 23904 23905\subsubsection{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE} 23906\label{\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:krb5-tkt-creds-step-flag-continue-data}}\label{\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE::doc}}\label{\detokenize{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)} 23907 23908\begin{fulllineitems} 23909\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE}}\pysigline{\sphinxbfcode{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}} 23910\end{fulllineitems} 23911 23912 23913More responses needed. 23914 23915 23916\begin{savenotes}\sphinxattablestart 23917\centering 23918\begin{tabulary}{\linewidth}[t]{|T|T|} 23919\hline 23920 23921\sphinxcode{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE} 23922& 23923\sphinxcode{0x1} 23924\\ 23925\hline 23926\end{tabulary} 23927\par 23928\sphinxattableend\end{savenotes} 23929 23930 23931\subsubsection{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL} 23932\label{\detokenize{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL:krb5-verify-init-creds-opt-ap-req-nofail}}\label{\detokenize{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL::doc}}\label{\detokenize{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)} 23933 23934\begin{fulllineitems} 23935\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL:KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL}}\pysigline{\sphinxbfcode{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}} 23936\end{fulllineitems} 23937 23938 23939 23940\begin{savenotes}\sphinxattablestart 23941\centering 23942\begin{tabulary}{\linewidth}[t]{|T|T|} 23943\hline 23944 23945\sphinxcode{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL} 23946& 23947\sphinxcode{0x0001} 23948\\ 23949\hline 23950\end{tabulary} 23951\par 23952\sphinxattableend\end{savenotes} 23953 23954 23955\subsubsection{KRB5\_WELLKNOWN\_NAMESTR} 23956\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR::doc}}\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:krb5-wellknown-namestr}}\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:krb5-wellknown-namestr-data}}\index{KRB5\_WELLKNOWN\_NAMESTR (built-in variable)} 23957 23958\begin{fulllineitems} 23959\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:KRB5_WELLKNOWN_NAMESTR}}\pysigline{\sphinxbfcode{KRB5\_WELLKNOWN\_NAMESTR}} 23960\end{fulllineitems} 23961 23962 23963First component of NT\_WELLKNOWN principals. 23964 23965 23966\begin{savenotes}\sphinxattablestart 23967\centering 23968\begin{tabulary}{\linewidth}[t]{|T|T|} 23969\hline 23970 23971\sphinxcode{KRB5\_WELLKNOWN\_NAMESTR} 23972& 23973\sphinxcode{"WELLKNOWN"} 23974\\ 23975\hline 23976\end{tabulary} 23977\par 23978\sphinxattableend\end{savenotes} 23979 23980 23981\subsubsection{LR\_TYPE\_INTERPRETATION\_MASK} 23982\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:lr-type-interpretation-mask-data}}\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:lr-type-interpretation-mask}}\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK::doc}}\index{LR\_TYPE\_INTERPRETATION\_MASK (built-in variable)} 23983 23984\begin{fulllineitems} 23985\phantomsection\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:LR_TYPE_INTERPRETATION_MASK}}\pysigline{\sphinxbfcode{LR\_TYPE\_INTERPRETATION\_MASK}} 23986\end{fulllineitems} 23987 23988 23989 23990\begin{savenotes}\sphinxattablestart 23991\centering 23992\begin{tabulary}{\linewidth}[t]{|T|T|} 23993\hline 23994 23995\sphinxcode{LR\_TYPE\_INTERPRETATION\_MASK} 23996& 23997\sphinxcode{0x7fff} 23998\\ 23999\hline 24000\end{tabulary} 24001\par 24002\sphinxattableend\end{savenotes} 24003 24004 24005\subsubsection{LR\_TYPE\_THIS\_SERVER\_ONLY} 24006\label{\detokenize{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:lr-type-this-server-only-data}}\label{\detokenize{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:lr-type-this-server-only}}\label{\detokenize{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY::doc}}\index{LR\_TYPE\_THIS\_SERVER\_ONLY (built-in variable)} 24007 24008\begin{fulllineitems} 24009\phantomsection\label{\detokenize{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:LR_TYPE_THIS_SERVER_ONLY}}\pysigline{\sphinxbfcode{LR\_TYPE\_THIS\_SERVER\_ONLY}} 24010\end{fulllineitems} 24011 24012 24013 24014\begin{savenotes}\sphinxattablestart 24015\centering 24016\begin{tabulary}{\linewidth}[t]{|T|T|} 24017\hline 24018 24019\sphinxcode{LR\_TYPE\_THIS\_SERVER\_ONLY} 24020& 24021\sphinxcode{0x8000} 24022\\ 24023\hline 24024\end{tabulary} 24025\par 24026\sphinxattableend\end{savenotes} 24027 24028 24029\subsubsection{MAX\_KEYTAB\_NAME\_LEN} 24030\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:max-keytab-name-len-data}}\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN::doc}}\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:max-keytab-name-len}}\index{MAX\_KEYTAB\_NAME\_LEN (built-in variable)} 24031 24032\begin{fulllineitems} 24033\phantomsection\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:MAX_KEYTAB_NAME_LEN}}\pysigline{\sphinxbfcode{MAX\_KEYTAB\_NAME\_LEN}} 24034\end{fulllineitems} 24035 24036 24037Long enough for MAXPATHLEN + some extra. 24038 24039 24040\begin{savenotes}\sphinxattablestart 24041\centering 24042\begin{tabulary}{\linewidth}[t]{|T|T|} 24043\hline 24044 24045\sphinxcode{MAX\_KEYTAB\_NAME\_LEN} 24046& 24047\sphinxcode{1100} 24048\\ 24049\hline 24050\end{tabulary} 24051\par 24052\sphinxattableend\end{savenotes} 24053 24054 24055\subsubsection{MSEC\_DIRBIT} 24056\label{\detokenize{appdev/refs/macros/MSEC_DIRBIT:msec-dirbit}}\label{\detokenize{appdev/refs/macros/MSEC_DIRBIT:msec-dirbit-data}}\label{\detokenize{appdev/refs/macros/MSEC_DIRBIT::doc}}\index{MSEC\_DIRBIT (built-in variable)} 24057 24058\begin{fulllineitems} 24059\phantomsection\label{\detokenize{appdev/refs/macros/MSEC_DIRBIT:MSEC_DIRBIT}}\pysigline{\sphinxbfcode{MSEC\_DIRBIT}} 24060\end{fulllineitems} 24061 24062 24063 24064\begin{savenotes}\sphinxattablestart 24065\centering 24066\begin{tabulary}{\linewidth}[t]{|T|T|} 24067\hline 24068 24069\sphinxcode{MSEC\_DIRBIT} 24070& 24071\sphinxcode{0x8000} 24072\\ 24073\hline 24074\end{tabulary} 24075\par 24076\sphinxattableend\end{savenotes} 24077 24078 24079\subsubsection{MSEC\_VAL\_MASK} 24080\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK:msec-val-mask-data}}\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK::doc}}\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK:msec-val-mask}}\index{MSEC\_VAL\_MASK (built-in variable)} 24081 24082\begin{fulllineitems} 24083\phantomsection\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK:MSEC_VAL_MASK}}\pysigline{\sphinxbfcode{MSEC\_VAL\_MASK}} 24084\end{fulllineitems} 24085 24086 24087 24088\begin{savenotes}\sphinxattablestart 24089\centering 24090\begin{tabulary}{\linewidth}[t]{|T|T|} 24091\hline 24092 24093\sphinxcode{MSEC\_VAL\_MASK} 24094& 24095\sphinxcode{0x7fff} 24096\\ 24097\hline 24098\end{tabulary} 24099\par 24100\sphinxattableend\end{savenotes} 24101 24102 24103\subsubsection{SALT\_TYPE\_AFS\_LENGTH} 24104\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH::doc}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:salt-type-afs-length-data}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:salt-type-afs-length}}\index{SALT\_TYPE\_AFS\_LENGTH (built-in variable)} 24105 24106\begin{fulllineitems} 24107\phantomsection\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:SALT_TYPE_AFS_LENGTH}}\pysigline{\sphinxbfcode{SALT\_TYPE\_AFS\_LENGTH}} 24108\end{fulllineitems} 24109 24110 24111 24112\begin{savenotes}\sphinxattablestart 24113\centering 24114\begin{tabulary}{\linewidth}[t]{|T|T|} 24115\hline 24116 24117\sphinxcode{SALT\_TYPE\_AFS\_LENGTH} 24118& 24119\sphinxcode{UINT\_MAX} 24120\\ 24121\hline 24122\end{tabulary} 24123\par 24124\sphinxattableend\end{savenotes} 24125 24126 24127\subsubsection{SALT\_TYPE\_NO\_LENGTH} 24128\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH:salt-type-no-length-data}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH::doc}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH:salt-type-no-length}}\index{SALT\_TYPE\_NO\_LENGTH (built-in variable)} 24129 24130\begin{fulllineitems} 24131\phantomsection\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH:SALT_TYPE_NO_LENGTH}}\pysigline{\sphinxbfcode{SALT\_TYPE\_NO\_LENGTH}} 24132\end{fulllineitems} 24133 24134 24135 24136\begin{savenotes}\sphinxattablestart 24137\centering 24138\begin{tabulary}{\linewidth}[t]{|T|T|} 24139\hline 24140 24141\sphinxcode{SALT\_TYPE\_NO\_LENGTH} 24142& 24143\sphinxcode{UINT\_MAX} 24144\\ 24145\hline 24146\end{tabulary} 24147\par 24148\sphinxattableend\end{savenotes} 24149 24150 24151\subsubsection{THREEPARAMOPEN} 24152\label{\detokenize{appdev/refs/macros/THREEPARAMOPEN:threeparamopen}}\label{\detokenize{appdev/refs/macros/THREEPARAMOPEN:threeparamopen-data}}\label{\detokenize{appdev/refs/macros/THREEPARAMOPEN::doc}}\index{THREEPARAMOPEN (built-in variable)} 24153 24154\begin{fulllineitems} 24155\phantomsection\label{\detokenize{appdev/refs/macros/THREEPARAMOPEN:THREEPARAMOPEN}}\pysigline{\sphinxbfcode{THREEPARAMOPEN}} 24156\end{fulllineitems} 24157 24158 24159 24160\begin{savenotes}\sphinxattablestart 24161\centering 24162\begin{tabulary}{\linewidth}[t]{|T|T|} 24163\hline 24164 24165\sphinxcode{THREEPARAMOPEN (x, y, z)} 24166& 24167\sphinxcode{open(x,y,z)} 24168\\ 24169\hline 24170\end{tabulary} 24171\par 24172\sphinxattableend\end{savenotes} 24173 24174 24175\subsubsection{TKT\_FLG\_ANONYMOUS} 24176\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS:tkt-flg-anonymous}}\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS:tkt-flg-anonymous-data}}\index{TKT\_FLG\_ANONYMOUS (built-in variable)} 24177 24178\begin{fulllineitems} 24179\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS:TKT_FLG_ANONYMOUS}}\pysigline{\sphinxbfcode{TKT\_FLG\_ANONYMOUS}} 24180\end{fulllineitems} 24181 24182 24183 24184\begin{savenotes}\sphinxattablestart 24185\centering 24186\begin{tabulary}{\linewidth}[t]{|T|T|} 24187\hline 24188 24189\sphinxcode{TKT\_FLG\_ANONYMOUS} 24190& 24191\sphinxcode{0x00008000} 24192\\ 24193\hline 24194\end{tabulary} 24195\par 24196\sphinxattableend\end{savenotes} 24197 24198 24199\subsubsection{TKT\_FLG\_ENC\_PA\_REP} 24200\label{\detokenize{appdev/refs/macros/TKT_FLG_ENC_PA_REP:tkt-flg-enc-pa-rep}}\label{\detokenize{appdev/refs/macros/TKT_FLG_ENC_PA_REP:tkt-flg-enc-pa-rep-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_ENC_PA_REP::doc}}\index{TKT\_FLG\_ENC\_PA\_REP (built-in variable)} 24201 24202\begin{fulllineitems} 24203\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_ENC_PA_REP:TKT_FLG_ENC_PA_REP}}\pysigline{\sphinxbfcode{TKT\_FLG\_ENC\_PA\_REP}} 24204\end{fulllineitems} 24205 24206 24207 24208\begin{savenotes}\sphinxattablestart 24209\centering 24210\begin{tabulary}{\linewidth}[t]{|T|T|} 24211\hline 24212 24213\sphinxcode{TKT\_FLG\_ENC\_PA\_REP} 24214& 24215\sphinxcode{0x00010000} 24216\\ 24217\hline 24218\end{tabulary} 24219\par 24220\sphinxattableend\end{savenotes} 24221 24222 24223\subsubsection{TKT\_FLG\_FORWARDABLE} 24224\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE:tkt-flg-forwardable-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE:tkt-flg-forwardable}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE::doc}}\index{TKT\_FLG\_FORWARDABLE (built-in variable)} 24225 24226\begin{fulllineitems} 24227\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE:TKT_FLG_FORWARDABLE}}\pysigline{\sphinxbfcode{TKT\_FLG\_FORWARDABLE}} 24228\end{fulllineitems} 24229 24230 24231 24232\begin{savenotes}\sphinxattablestart 24233\centering 24234\begin{tabulary}{\linewidth}[t]{|T|T|} 24235\hline 24236 24237\sphinxcode{TKT\_FLG\_FORWARDABLE} 24238& 24239\sphinxcode{0x40000000} 24240\\ 24241\hline 24242\end{tabulary} 24243\par 24244\sphinxattableend\end{savenotes} 24245 24246 24247\subsubsection{TKT\_FLG\_FORWARDED} 24248\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED:tkt-flg-forwarded}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED:tkt-flg-forwarded-data}}\index{TKT\_FLG\_FORWARDED (built-in variable)} 24249 24250\begin{fulllineitems} 24251\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED:TKT_FLG_FORWARDED}}\pysigline{\sphinxbfcode{TKT\_FLG\_FORWARDED}} 24252\end{fulllineitems} 24253 24254 24255 24256\begin{savenotes}\sphinxattablestart 24257\centering 24258\begin{tabulary}{\linewidth}[t]{|T|T|} 24259\hline 24260 24261\sphinxcode{TKT\_FLG\_FORWARDED} 24262& 24263\sphinxcode{0x20000000} 24264\\ 24265\hline 24266\end{tabulary} 24267\par 24268\sphinxattableend\end{savenotes} 24269 24270 24271\subsubsection{TKT\_FLG\_HW\_AUTH} 24272\label{\detokenize{appdev/refs/macros/TKT_FLG_HW_AUTH::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_HW_AUTH:tkt-flg-hw-auth}}\label{\detokenize{appdev/refs/macros/TKT_FLG_HW_AUTH:tkt-flg-hw-auth-data}}\index{TKT\_FLG\_HW\_AUTH (built-in variable)} 24273 24274\begin{fulllineitems} 24275\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_HW_AUTH:TKT_FLG_HW_AUTH}}\pysigline{\sphinxbfcode{TKT\_FLG\_HW\_AUTH}} 24276\end{fulllineitems} 24277 24278 24279 24280\begin{savenotes}\sphinxattablestart 24281\centering 24282\begin{tabulary}{\linewidth}[t]{|T|T|} 24283\hline 24284 24285\sphinxcode{TKT\_FLG\_HW\_AUTH} 24286& 24287\sphinxcode{0x00100000} 24288\\ 24289\hline 24290\end{tabulary} 24291\par 24292\sphinxattableend\end{savenotes} 24293 24294 24295\subsubsection{TKT\_FLG\_INITIAL} 24296\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL:tkt-flg-initial}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL:tkt-flg-initial-data}}\index{TKT\_FLG\_INITIAL (built-in variable)} 24297 24298\begin{fulllineitems} 24299\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL:TKT_FLG_INITIAL}}\pysigline{\sphinxbfcode{TKT\_FLG\_INITIAL}} 24300\end{fulllineitems} 24301 24302 24303 24304\begin{savenotes}\sphinxattablestart 24305\centering 24306\begin{tabulary}{\linewidth}[t]{|T|T|} 24307\hline 24308 24309\sphinxcode{TKT\_FLG\_INITIAL} 24310& 24311\sphinxcode{0x00400000} 24312\\ 24313\hline 24314\end{tabulary} 24315\par 24316\sphinxattableend\end{savenotes} 24317 24318 24319\subsubsection{TKT\_FLG\_INVALID} 24320\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID:tkt-flg-invalid-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID:tkt-flg-invalid}}\index{TKT\_FLG\_INVALID (built-in variable)} 24321 24322\begin{fulllineitems} 24323\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID:TKT_FLG_INVALID}}\pysigline{\sphinxbfcode{TKT\_FLG\_INVALID}} 24324\end{fulllineitems} 24325 24326 24327 24328\begin{savenotes}\sphinxattablestart 24329\centering 24330\begin{tabulary}{\linewidth}[t]{|T|T|} 24331\hline 24332 24333\sphinxcode{TKT\_FLG\_INVALID} 24334& 24335\sphinxcode{0x01000000} 24336\\ 24337\hline 24338\end{tabulary} 24339\par 24340\sphinxattableend\end{savenotes} 24341 24342 24343\subsubsection{TKT\_FLG\_MAY\_POSTDATE} 24344\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:tkt-flg-may-postdate}}\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:tkt-flg-may-postdate-data}}\index{TKT\_FLG\_MAY\_POSTDATE (built-in variable)} 24345 24346\begin{fulllineitems} 24347\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:TKT_FLG_MAY_POSTDATE}}\pysigline{\sphinxbfcode{TKT\_FLG\_MAY\_POSTDATE}} 24348\end{fulllineitems} 24349 24350 24351 24352\begin{savenotes}\sphinxattablestart 24353\centering 24354\begin{tabulary}{\linewidth}[t]{|T|T|} 24355\hline 24356 24357\sphinxcode{TKT\_FLG\_MAY\_POSTDATE} 24358& 24359\sphinxcode{0x04000000} 24360\\ 24361\hline 24362\end{tabulary} 24363\par 24364\sphinxattableend\end{savenotes} 24365 24366 24367\subsubsection{TKT\_FLG\_OK\_AS\_DELEGATE} 24368\label{\detokenize{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:tkt-flg-ok-as-delegate-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:tkt-flg-ok-as-delegate}}\label{\detokenize{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE::doc}}\index{TKT\_FLG\_OK\_AS\_DELEGATE (built-in variable)} 24369 24370\begin{fulllineitems} 24371\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:TKT_FLG_OK_AS_DELEGATE}}\pysigline{\sphinxbfcode{TKT\_FLG\_OK\_AS\_DELEGATE}} 24372\end{fulllineitems} 24373 24374 24375 24376\begin{savenotes}\sphinxattablestart 24377\centering 24378\begin{tabulary}{\linewidth}[t]{|T|T|} 24379\hline 24380 24381\sphinxcode{TKT\_FLG\_OK\_AS\_DELEGATE} 24382& 24383\sphinxcode{0x00040000} 24384\\ 24385\hline 24386\end{tabulary} 24387\par 24388\sphinxattableend\end{savenotes} 24389 24390 24391\subsubsection{TKT\_FLG\_POSTDATED} 24392\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED:tkt-flg-postdated}}\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED:tkt-flg-postdated-data}}\index{TKT\_FLG\_POSTDATED (built-in variable)} 24393 24394\begin{fulllineitems} 24395\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED:TKT_FLG_POSTDATED}}\pysigline{\sphinxbfcode{TKT\_FLG\_POSTDATED}} 24396\end{fulllineitems} 24397 24398 24399 24400\begin{savenotes}\sphinxattablestart 24401\centering 24402\begin{tabulary}{\linewidth}[t]{|T|T|} 24403\hline 24404 24405\sphinxcode{TKT\_FLG\_POSTDATED} 24406& 24407\sphinxcode{0x02000000} 24408\\ 24409\hline 24410\end{tabulary} 24411\par 24412\sphinxattableend\end{savenotes} 24413 24414 24415\subsubsection{TKT\_FLG\_PRE\_AUTH} 24416\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH:tkt-flg-pre-auth-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH:tkt-flg-pre-auth}}\index{TKT\_FLG\_PRE\_AUTH (built-in variable)} 24417 24418\begin{fulllineitems} 24419\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH:TKT_FLG_PRE_AUTH}}\pysigline{\sphinxbfcode{TKT\_FLG\_PRE\_AUTH}} 24420\end{fulllineitems} 24421 24422 24423 24424\begin{savenotes}\sphinxattablestart 24425\centering 24426\begin{tabulary}{\linewidth}[t]{|T|T|} 24427\hline 24428 24429\sphinxcode{TKT\_FLG\_PRE\_AUTH} 24430& 24431\sphinxcode{0x00200000} 24432\\ 24433\hline 24434\end{tabulary} 24435\par 24436\sphinxattableend\end{savenotes} 24437 24438 24439\subsubsection{TKT\_FLG\_PROXIABLE} 24440\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXIABLE:tkt-flg-proxiable}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXIABLE:tkt-flg-proxiable-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXIABLE::doc}}\index{TKT\_FLG\_PROXIABLE (built-in variable)} 24441 24442\begin{fulllineitems} 24443\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXIABLE:TKT_FLG_PROXIABLE}}\pysigline{\sphinxbfcode{TKT\_FLG\_PROXIABLE}} 24444\end{fulllineitems} 24445 24446 24447 24448\begin{savenotes}\sphinxattablestart 24449\centering 24450\begin{tabulary}{\linewidth}[t]{|T|T|} 24451\hline 24452 24453\sphinxcode{TKT\_FLG\_PROXIABLE} 24454& 24455\sphinxcode{0x10000000} 24456\\ 24457\hline 24458\end{tabulary} 24459\par 24460\sphinxattableend\end{savenotes} 24461 24462 24463\subsubsection{TKT\_FLG\_PROXY} 24464\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY:tkt-flg-proxy}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY:tkt-flg-proxy-data}}\index{TKT\_FLG\_PROXY (built-in variable)} 24465 24466\begin{fulllineitems} 24467\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY:TKT_FLG_PROXY}}\pysigline{\sphinxbfcode{TKT\_FLG\_PROXY}} 24468\end{fulllineitems} 24469 24470 24471 24472\begin{savenotes}\sphinxattablestart 24473\centering 24474\begin{tabulary}{\linewidth}[t]{|T|T|} 24475\hline 24476 24477\sphinxcode{TKT\_FLG\_PROXY} 24478& 24479\sphinxcode{0x08000000} 24480\\ 24481\hline 24482\end{tabulary} 24483\par 24484\sphinxattableend\end{savenotes} 24485 24486 24487\subsubsection{TKT\_FLG\_RENEWABLE} 24488\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE:tkt-flg-renewable}}\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE:tkt-flg-renewable-data}}\index{TKT\_FLG\_RENEWABLE (built-in variable)} 24489 24490\begin{fulllineitems} 24491\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE:TKT_FLG_RENEWABLE}}\pysigline{\sphinxbfcode{TKT\_FLG\_RENEWABLE}} 24492\end{fulllineitems} 24493 24494 24495 24496\begin{savenotes}\sphinxattablestart 24497\centering 24498\begin{tabulary}{\linewidth}[t]{|T|T|} 24499\hline 24500 24501\sphinxcode{TKT\_FLG\_RENEWABLE} 24502& 24503\sphinxcode{0x00800000} 24504\\ 24505\hline 24506\end{tabulary} 24507\par 24508\sphinxattableend\end{savenotes} 24509 24510 24511\subsubsection{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED} 24512\label{\detokenize{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED::doc}}\label{\detokenize{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:tkt-flg-transit-policy-checked}}\label{\detokenize{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:tkt-flg-transit-policy-checked-data}}\index{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED (built-in variable)} 24513 24514\begin{fulllineitems} 24515\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:TKT_FLG_TRANSIT_POLICY_CHECKED}}\pysigline{\sphinxbfcode{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}} 24516\end{fulllineitems} 24517 24518 24519 24520\begin{savenotes}\sphinxattablestart 24521\centering 24522\begin{tabulary}{\linewidth}[t]{|T|T|} 24523\hline 24524 24525\sphinxcode{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED} 24526& 24527\sphinxcode{0x00080000} 24528\\ 24529\hline 24530\end{tabulary} 24531\par 24532\sphinxattableend\end{savenotes} 24533 24534 24535\subsubsection{VALID\_INT\_BITS} 24536\label{\detokenize{appdev/refs/macros/VALID_INT_BITS:valid-int-bits}}\label{\detokenize{appdev/refs/macros/VALID_INT_BITS:valid-int-bits-data}}\label{\detokenize{appdev/refs/macros/VALID_INT_BITS::doc}}\index{VALID\_INT\_BITS (built-in variable)} 24537 24538\begin{fulllineitems} 24539\phantomsection\label{\detokenize{appdev/refs/macros/VALID_INT_BITS:VALID_INT_BITS}}\pysigline{\sphinxbfcode{VALID\_INT\_BITS}} 24540\end{fulllineitems} 24541 24542 24543 24544\begin{savenotes}\sphinxattablestart 24545\centering 24546\begin{tabulary}{\linewidth}[t]{|T|T|} 24547\hline 24548 24549\sphinxcode{VALID\_INT\_BITS} 24550& 24551\sphinxcode{INT\_MAX} 24552\\ 24553\hline 24554\end{tabulary} 24555\par 24556\sphinxattableend\end{savenotes} 24557 24558 24559\subsubsection{VALID\_UINT\_BITS} 24560\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS:valid-uint-bits}}\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS::doc}}\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS:valid-uint-bits-data}}\index{VALID\_UINT\_BITS (built-in variable)} 24561 24562\begin{fulllineitems} 24563\phantomsection\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS:VALID_UINT_BITS}}\pysigline{\sphinxbfcode{VALID\_UINT\_BITS}} 24564\end{fulllineitems} 24565 24566 24567 24568\begin{savenotes}\sphinxattablestart 24569\centering 24570\begin{tabulary}{\linewidth}[t]{|T|T|} 24571\hline 24572 24573\sphinxcode{VALID\_UINT\_BITS} 24574& 24575\sphinxcode{UINT\_MAX} 24576\\ 24577\hline 24578\end{tabulary} 24579\par 24580\sphinxattableend\end{savenotes} 24581 24582 24583\subsubsection{krb5\_const} 24584\label{\detokenize{appdev/refs/macros/krb5_const:krb5-const}}\label{\detokenize{appdev/refs/macros/krb5_const:krb5-const-data}}\label{\detokenize{appdev/refs/macros/krb5_const::doc}}\index{krb5\_const (built-in variable)} 24585 24586\begin{fulllineitems} 24587\phantomsection\label{\detokenize{appdev/refs/macros/krb5_const:krb5_const}}\pysigline{\sphinxbfcode{krb5\_const}} 24588\end{fulllineitems} 24589 24590 24591 24592\begin{savenotes}\sphinxattablestart 24593\centering 24594\begin{tabulary}{\linewidth}[t]{|T|T|} 24595\hline 24596 24597\sphinxcode{krb5\_const} 24598& 24599\sphinxcode{const} 24600\\ 24601\hline 24602\end{tabulary} 24603\par 24604\sphinxattableend\end{savenotes} 24605 24606 24607\subsubsection{krb5\_princ\_component} 24608\label{\detokenize{appdev/refs/macros/krb5_princ_component::doc}}\label{\detokenize{appdev/refs/macros/krb5_princ_component:krb5-princ-component-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_component:krb5-princ-component}}\index{krb5\_princ\_component (built-in variable)} 24609 24610\begin{fulllineitems} 24611\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_component:krb5_princ_component}}\pysigline{\sphinxbfcode{krb5\_princ\_component}} 24612\end{fulllineitems} 24613 24614 24615 24616\begin{savenotes}\sphinxattablestart 24617\centering 24618\begin{tabulary}{\linewidth}[t]{|T|T|} 24619\hline 24620 24621\sphinxcode{krb5\_princ\_component (context, princ, i)} 24622& 24623\sphinxcode{(((i) \textless{} krb5\_princ\_size(context, princ)) ? (princ)-\textgreater{}data + (i) : NULL)} 24624\\ 24625\hline 24626\end{tabulary} 24627\par 24628\sphinxattableend\end{savenotes} 24629 24630 24631\subsubsection{krb5\_princ\_name} 24632\label{\detokenize{appdev/refs/macros/krb5_princ_name:krb5-princ-name-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_name:krb5-princ-name}}\label{\detokenize{appdev/refs/macros/krb5_princ_name::doc}}\index{krb5\_princ\_name (built-in variable)} 24633 24634\begin{fulllineitems} 24635\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_name:krb5_princ_name}}\pysigline{\sphinxbfcode{krb5\_princ\_name}} 24636\end{fulllineitems} 24637 24638 24639 24640\begin{savenotes}\sphinxattablestart 24641\centering 24642\begin{tabulary}{\linewidth}[t]{|T|T|} 24643\hline 24644 24645\sphinxcode{krb5\_princ\_name (context, princ)} 24646& 24647\sphinxcode{(princ)-\textgreater{}data} 24648\\ 24649\hline 24650\end{tabulary} 24651\par 24652\sphinxattableend\end{savenotes} 24653 24654 24655\subsubsection{krb5\_princ\_realm} 24656\label{\detokenize{appdev/refs/macros/krb5_princ_realm::doc}}\label{\detokenize{appdev/refs/macros/krb5_princ_realm:krb5-princ-realm-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_realm:krb5-princ-realm}}\index{krb5\_princ\_realm (built-in variable)} 24657 24658\begin{fulllineitems} 24659\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_realm:krb5_princ_realm}}\pysigline{\sphinxbfcode{krb5\_princ\_realm}} 24660\end{fulllineitems} 24661 24662 24663 24664\begin{savenotes}\sphinxattablestart 24665\centering 24666\begin{tabulary}{\linewidth}[t]{|T|T|} 24667\hline 24668 24669\sphinxcode{krb5\_princ\_realm (context, princ)} 24670& 24671\sphinxcode{(\&(princ)-\textgreater{}realm)} 24672\\ 24673\hline 24674\end{tabulary} 24675\par 24676\sphinxattableend\end{savenotes} 24677 24678 24679\subsubsection{krb5\_princ\_set\_realm} 24680\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm:krb5-princ-set-realm-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm::doc}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm:krb5-princ-set-realm}}\index{krb5\_princ\_set\_realm (built-in variable)} 24681 24682\begin{fulllineitems} 24683\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm:krb5_princ_set_realm}}\pysigline{\sphinxbfcode{krb5\_princ\_set\_realm}} 24684\end{fulllineitems} 24685 24686 24687 24688\begin{savenotes}\sphinxattablestart 24689\centering 24690\begin{tabulary}{\linewidth}[t]{|T|T|} 24691\hline 24692 24693\sphinxcode{krb5\_princ\_set\_realm (context, princ, value)} 24694& 24695\sphinxcode{((princ)-\textgreater{}realm = *(value))} 24696\\ 24697\hline 24698\end{tabulary} 24699\par 24700\sphinxattableend\end{savenotes} 24701 24702 24703\subsubsection{krb5\_princ\_set\_realm\_data} 24704\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_data:krb5-princ-set-realm-data-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_data::doc}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_data:krb5-princ-set-realm-data}}\index{krb5\_princ\_set\_realm\_data (built-in variable)} 24705 24706\begin{fulllineitems} 24707\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_data:krb5_princ_set_realm_data}}\pysigline{\sphinxbfcode{krb5\_princ\_set\_realm\_data}} 24708\end{fulllineitems} 24709 24710 24711 24712\begin{savenotes}\sphinxattablestart 24713\centering 24714\begin{tabulary}{\linewidth}[t]{|T|T|} 24715\hline 24716 24717\sphinxcode{krb5\_princ\_set\_realm\_data (context, princ, value)} 24718& 24719\sphinxcode{(princ)-\textgreater{}realm.data = (value)} 24720\\ 24721\hline 24722\end{tabulary} 24723\par 24724\sphinxattableend\end{savenotes} 24725 24726 24727\subsubsection{krb5\_princ\_set\_realm\_length} 24728\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_length:krb5-princ-set-realm-length-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_length::doc}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_length:krb5-princ-set-realm-length}}\index{krb5\_princ\_set\_realm\_length (built-in variable)} 24729 24730\begin{fulllineitems} 24731\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_length:krb5_princ_set_realm_length}}\pysigline{\sphinxbfcode{krb5\_princ\_set\_realm\_length}} 24732\end{fulllineitems} 24733 24734 24735 24736\begin{savenotes}\sphinxattablestart 24737\centering 24738\begin{tabulary}{\linewidth}[t]{|T|T|} 24739\hline 24740 24741\sphinxcode{krb5\_princ\_set\_realm\_length (context, princ, value)} 24742& 24743\sphinxcode{(princ)-\textgreater{}realm.length = (value)} 24744\\ 24745\hline 24746\end{tabulary} 24747\par 24748\sphinxattableend\end{savenotes} 24749 24750 24751\subsubsection{krb5\_princ\_size} 24752\label{\detokenize{appdev/refs/macros/krb5_princ_size:krb5-princ-size-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_size::doc}}\label{\detokenize{appdev/refs/macros/krb5_princ_size:krb5-princ-size}}\index{krb5\_princ\_size (built-in variable)} 24753 24754\begin{fulllineitems} 24755\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_size:krb5_princ_size}}\pysigline{\sphinxbfcode{krb5\_princ\_size}} 24756\end{fulllineitems} 24757 24758 24759 24760\begin{savenotes}\sphinxattablestart 24761\centering 24762\begin{tabulary}{\linewidth}[t]{|T|T|} 24763\hline 24764 24765\sphinxcode{krb5\_princ\_size (context, princ)} 24766& 24767\sphinxcode{(princ)-\textgreater{}length} 24768\\ 24769\hline 24770\end{tabulary} 24771\par 24772\sphinxattableend\end{savenotes} 24773 24774 24775\subsubsection{krb5\_princ\_type} 24776\label{\detokenize{appdev/refs/macros/krb5_princ_type:krb5-princ-type}}\label{\detokenize{appdev/refs/macros/krb5_princ_type:krb5-princ-type-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_type::doc}}\index{krb5\_princ\_type (built-in variable)} 24777 24778\begin{fulllineitems} 24779\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_type:krb5_princ_type}}\pysigline{\sphinxbfcode{krb5\_princ\_type}} 24780\end{fulllineitems} 24781 24782 24783 24784\begin{savenotes}\sphinxattablestart 24785\centering 24786\begin{tabulary}{\linewidth}[t]{|T|T|} 24787\hline 24788 24789\sphinxcode{krb5\_princ\_type (context, princ)} 24790& 24791\sphinxcode{(princ)-\textgreater{}type} 24792\\ 24793\hline 24794\end{tabulary} 24795\par 24796\sphinxattableend\end{savenotes} 24797 24798 24799\subsubsection{krb5\_roundup} 24800\label{\detokenize{appdev/refs/macros/krb5_roundup:krb5-roundup-data}}\label{\detokenize{appdev/refs/macros/krb5_roundup:krb5-roundup}}\label{\detokenize{appdev/refs/macros/krb5_roundup::doc}}\index{krb5\_roundup (built-in variable)} 24801 24802\begin{fulllineitems} 24803\phantomsection\label{\detokenize{appdev/refs/macros/krb5_roundup:krb5_roundup}}\pysigline{\sphinxbfcode{krb5\_roundup}} 24804\end{fulllineitems} 24805 24806 24807 24808\begin{savenotes}\sphinxattablestart 24809\centering 24810\begin{tabulary}{\linewidth}[t]{|T|T|} 24811\hline 24812 24813\sphinxcode{krb5\_roundup (x, y)} 24814& 24815\sphinxcode{((((x) + (y) - 1)/(y))*(y))} 24816\\ 24817\hline 24818\end{tabulary} 24819\par 24820\sphinxattableend\end{savenotes} 24821 24822 24823\subsubsection{krb5\_x} 24824\label{\detokenize{appdev/refs/macros/krb5_x::doc}}\label{\detokenize{appdev/refs/macros/krb5_x:krb5-x}}\label{\detokenize{appdev/refs/macros/krb5_x:krb5-x-data}}\index{krb5\_x (built-in variable)} 24825 24826\begin{fulllineitems} 24827\phantomsection\label{\detokenize{appdev/refs/macros/krb5_x:krb5_x}}\pysigline{\sphinxbfcode{krb5\_x}} 24828\end{fulllineitems} 24829 24830 24831 24832\begin{savenotes}\sphinxattablestart 24833\centering 24834\begin{tabulary}{\linewidth}[t]{|T|T|} 24835\hline 24836 24837\sphinxcode{krb5\_x (ptr, args)} 24838& 24839\sphinxcode{((ptr)?((*(ptr)) args):(abort(),1))} 24840\\ 24841\hline 24842\end{tabulary} 24843\par 24844\sphinxattableend\end{savenotes} 24845 24846 24847\subsubsection{krb5\_xc} 24848\label{\detokenize{appdev/refs/macros/krb5_xc::doc}}\label{\detokenize{appdev/refs/macros/krb5_xc:krb5-xc}}\label{\detokenize{appdev/refs/macros/krb5_xc:krb5-xc-data}}\index{krb5\_xc (built-in variable)} 24849 24850\begin{fulllineitems} 24851\phantomsection\label{\detokenize{appdev/refs/macros/krb5_xc:krb5_xc}}\pysigline{\sphinxbfcode{krb5\_xc}} 24852\end{fulllineitems} 24853 24854 24855 24856\begin{savenotes}\sphinxattablestart 24857\centering 24858\begin{tabulary}{\linewidth}[t]{|T|T|} 24859\hline 24860 24861\sphinxcode{krb5\_xc (ptr, args)} 24862& 24863\sphinxcode{((ptr)?((*(ptr)) args):(abort(),(char*)0))} 24864\\ 24865\hline 24866\end{tabulary} 24867\par 24868\sphinxattableend\end{savenotes} 24869 24870 24871\subsection{Deprecated macros} 24872\label{\detokenize{appdev/refs/macros/index:deprecated-macros}} 24873 24874\subsubsection{krb524\_convert\_creds\_kdc} 24875\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc:krb524-convert-creds-kdc-data}}\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc:krb524-convert-creds-kdc}}\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc::doc}}\index{krb524\_convert\_creds\_kdc (built-in variable)} 24876 24877\begin{fulllineitems} 24878\phantomsection\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc:krb524_convert_creds_kdc}}\pysigline{\sphinxbfcode{krb524\_convert\_creds\_kdc}} 24879\end{fulllineitems} 24880 24881 24882 24883\begin{savenotes}\sphinxattablestart 24884\centering 24885\begin{tabulary}{\linewidth}[t]{|T|T|} 24886\hline 24887 24888\sphinxcode{krb524\_convert\_creds\_kdc} 24889& 24890\sphinxcode{krb5\_524\_convert\_creds} 24891\\ 24892\hline 24893\end{tabulary} 24894\par 24895\sphinxattableend\end{savenotes} 24896 24897 24898\subsubsection{krb524\_init\_ets} 24899\label{\detokenize{appdev/refs/macros/krb524_init_ets:krb524-init-ets-data}}\label{\detokenize{appdev/refs/macros/krb524_init_ets::doc}}\label{\detokenize{appdev/refs/macros/krb524_init_ets:krb524-init-ets}}\index{krb524\_init\_ets (built-in variable)} 24900 24901\begin{fulllineitems} 24902\phantomsection\label{\detokenize{appdev/refs/macros/krb524_init_ets:krb524_init_ets}}\pysigline{\sphinxbfcode{krb524\_init\_ets}} 24903\end{fulllineitems} 24904 24905 24906 24907\begin{savenotes}\sphinxattablestart 24908\centering 24909\begin{tabulary}{\linewidth}[t]{|T|T|} 24910\hline 24911 24912\sphinxcode{krb524\_init\_ets (x)} 24913& 24914\sphinxcode{(0)} 24915\\ 24916\hline 24917\end{tabulary} 24918\par 24919\sphinxattableend\end{savenotes} 24920 24921 24922 24923\renewcommand{\indexname}{Index} 24924\printindex 24925\end{document}