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\ifdefined\pdfimageresolution 8 \pdfimageresolution= \numexpr \dimexpr1in\relax/\sphinxpxdimen\relax 9\fi 10%% let collapsible pdf bookmarks panel have high depth per default 11\PassOptionsToPackage{bookmarksdepth=5}{hyperref} 12 13\PassOptionsToPackage{warn}{textcomp} 14\usepackage[utf8]{inputenc} 15\ifdefined\DeclareUnicodeCharacter 16% support both utf8 and utf8x syntaxes 17 \ifdefined\DeclareUnicodeCharacterAsOptional 18 \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}} 19 \else 20 \let\sphinxDUC\DeclareUnicodeCharacter 21 \fi 22 \sphinxDUC{00A0}{\nobreakspace} 23 \sphinxDUC{2500}{\sphinxunichar{2500}} 24 \sphinxDUC{2502}{\sphinxunichar{2502}} 25 \sphinxDUC{2514}{\sphinxunichar{2514}} 26 \sphinxDUC{251C}{\sphinxunichar{251C}} 27 \sphinxDUC{2572}{\textbackslash} 28\fi 29\usepackage{cmap} 30\usepackage[T1]{fontenc} 31\usepackage{amsmath,amssymb,amstext} 32\usepackage{babel} 33 34 35 36\usepackage{tgtermes} 37\usepackage{tgheros} 38\renewcommand{\ttdefault}{txtt} 39 40 41 42\usepackage[Bjarne]{fncychap} 43\usepackage{sphinx} 44 45\fvset{fontsize=auto} 46\usepackage{geometry} 47 48 49% Include hyperref last. 50\usepackage{hyperref} 51% Fix anchor placement for figures with captions. 52\usepackage{hypcap}% it must be loaded after hyperref. 53% Set up styles of URL: it should be placed after hyperref. 54\urlstyle{same} 55 56 57\usepackage{sphinxmessages} 58\setcounter{tocdepth}{0} 59 60 61 62\title{Kerberos Application Developer Guide} 63\date{ } 64\release{1.21.3} 65\author{MIT} 66\newcommand{\sphinxlogo}{\vbox{}} 67\renewcommand{\releasename}{Release} 68\makeindex 69\begin{document} 70 71\pagestyle{empty} 72\sphinxmaketitle 73\pagestyle{plain} 74\sphinxtableofcontents 75\pagestyle{normal} 76\phantomsection\label{\detokenize{appdev/index::doc}} 77 78 79 80\chapter{Developing with GSSAPI} 81\label{\detokenize{appdev/gssapi:developing-with-gssapi}}\label{\detokenize{appdev/gssapi::doc}} 82\sphinxAtStartPar 83The GSSAPI (Generic Security Services API) allows applications to 84communicate securely using Kerberos 5 or other security mechanisms. 85We recommend using the GSSAPI (or a higher\sphinxhyphen{}level framework which 86encompasses GSSAPI, such as SASL) for secure network communication 87over using the libkrb5 API directly. 88 89\sphinxAtStartPar 90GSSAPIv2 is specified in \index{RFC@\spxentry{RFC}!RFC 2743@\spxentry{RFC 2743}}\sphinxhref{https://tools.ietf.org/html/rfc2743.html}{\sphinxstylestrong{RFC 2743}} and \index{RFC@\spxentry{RFC}!RFC 2744@\spxentry{RFC 2744}}\sphinxhref{https://tools.ietf.org/html/rfc2744.html}{\sphinxstylestrong{RFC 2744}}. Also see 91\index{RFC@\spxentry{RFC}!RFC 7546@\spxentry{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 92server program. 93 94\sphinxAtStartPar 95This documentation will describe how various ways of using the 96GSSAPI will behave with the krb5 mechanism as implemented in MIT krb5, 97as well as krb5\sphinxhyphen{}specific extensions to the GSSAPI. 98 99 100\section{Name types} 101\label{\detokenize{appdev/gssapi:name-types}} 102\sphinxAtStartPar 103A GSSAPI application can name a local or remote entity by calling 104\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.16}{gss\_import\_name}, specifying a name type and a value. The following 105name types are supported by the krb5 mechanism: 106\begin{itemize} 107\item {} 108\sphinxAtStartPar 109\sphinxstylestrong{GSS\_C\_NT\_HOSTBASED\_SERVICE}: The value should be a string of the 110form \sphinxcode{\sphinxupquote{service}} or \sphinxcode{\sphinxupquote{service@hostname}}. This is the most common 111way to name target services when initiating a security context, and 112is the most likely name type to work across multiple mechanisms. 113 114\item {} 115\sphinxAtStartPar 116\sphinxstylestrong{GSS\_KRB5\_NT\_PRINCIPAL\_NAME}: The value should be a principal name 117string. This name type only works with the krb5 mechanism, and is 118defined in the \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_krb5.h\textgreater{}}} header. 119 120\item {} 121\sphinxAtStartPar 122\sphinxstylestrong{GSS\_C\_NT\_USER\_NAME} or \sphinxstylestrong{GSS\_C\_NULL\_OID}: The value is treated 123as an unparsed principal name string, as above. These name types 124may work with mechanisms other than krb5, but will have different 125interpretations in those mechanisms. \sphinxstylestrong{GSS\_C\_NT\_USER\_NAME} is 126intended to be used with a local username, which will parse into a 127single\sphinxhyphen{}component principal in the default realm. 128 129\item {} 130\sphinxAtStartPar 131\sphinxstylestrong{GSS\_C\_NT\_ANONYMOUS}: The value is ignored. The anonymous 132principal is used, allowing a client to authenticate to a server 133without asserting a particular identity (which may or may not be 134allowed by a particular server or Kerberos realm). 135 136\item {} 137\sphinxAtStartPar 138\sphinxstylestrong{GSS\_C\_NT\_MACHINE\_UID\_NAME}: The value is uid\_t object. On 139Unix\sphinxhyphen{}like systems, the username of the uid is looked up in the 140system user database and the resulting username is parsed as a 141principal name. 142 143\item {} 144\sphinxAtStartPar 145\sphinxstylestrong{GSS\_C\_NT\_STRING\_UID\_NAME}: As above, but the value is a decimal 146string representation of the uid. 147 148\item {} 149\sphinxAtStartPar 150\sphinxstylestrong{GSS\_C\_NT\_EXPORT\_NAME}: The value must be the result of a 151\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.13}{gss\_export\_name} call. 152 153\item {} 154\sphinxAtStartPar 155\sphinxstylestrong{GSS\_KRB5\_NT\_ENTERPRISE\_NAME}: The value should be a krb5 156enterprise name string (see \index{RFC@\spxentry{RFC}!RFC 6806@\spxentry{RFC 6806}}\sphinxhref{https://tools.ietf.org/html/rfc6806.html}{\sphinxstylestrong{RFC 6806}} section 5), in the form 157\sphinxcode{\sphinxupquote{user@suffix}}. This name type is used to convey alias names, and 158is defined in the \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_krb5.h\textgreater{}}} header. (New in 159release 1.17.) 160 161\item {} 162\sphinxAtStartPar 163\sphinxstylestrong{GSS\_KRB5\_NT\_X509\_CERT}: The value should be an X.509 certificate 164encoded according to \index{RFC@\spxentry{RFC}!RFC 5280@\spxentry{RFC 5280}}\sphinxhref{https://tools.ietf.org/html/rfc5280.html}{\sphinxstylestrong{RFC 5280}}. This name form can be used for 165the desired\_name parameter of gss\_acquire\_cred\_impersonate\_name(), 166to identify the S4U2Self user by certificate. (New in release 1671.19.) 168 169\end{itemize} 170 171 172\section{Initiator credentials} 173\label{\detokenize{appdev/gssapi:initiator-credentials}} 174\sphinxAtStartPar 175A GSSAPI client application uses \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} to establish a 176security context. The \sphinxstyleemphasis{initiator\_cred\_handle} parameter determines 177what tickets are used to establish the connection. An application can 178either pass \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} to use the default client 179credential, or it can use \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} beforehand to acquire an 180initiator credential. The call to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} may include a 181\sphinxstyleemphasis{desired\_name} parameter, or it may pass \sphinxstylestrong{GSS\_C\_NO\_NAME} if it does 182not have a specific name preference. 183 184\sphinxAtStartPar 185If the desired name for a krb5 initiator credential is a host\sphinxhyphen{}based 186name, it is converted to a principal name of the form 187\sphinxcode{\sphinxupquote{service/hostname}} in the local realm, where \sphinxstyleemphasis{hostname} is the local 188hostname if not specified. The hostname will be canonicalized using 189forward name resolution, and possibly also using reverse name 190resolution depending on the value of the \sphinxstylestrong{rdns} variable in 191\DUrole{xref,std,std-ref}{libdefaults}. 192 193\sphinxAtStartPar 194If a desired name is specified in the call to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, the 195krb5 mechanism will attempt to find existing tickets for that client 196principal name in the default credential cache or collection. If the 197default cache type does not support a collection, and the default 198cache contains credentials for a different principal than the desired 199name, a \sphinxstylestrong{GSS\_S\_CRED\_UNAVAIL} error will be returned with a minor 200code indicating a mismatch. 201 202\sphinxAtStartPar 203If no existing tickets are available for the desired name, but the 204name has an entry in the default client \DUrole{xref,std,std-ref}{keytab\_definition}, the 205krb5 mechanism will acquire initial tickets for the name using the 206default client keytab. 207 208\sphinxAtStartPar 209If no desired name is specified, credential acquisition will be 210deferred until the credential is used in a call to 211\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 212\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 213principal name using the credential cache selection facility. (This 214facility might, for instance, try to choose existing tickets for a 215client principal in the same realm as the target service). If there 216are no existing tickets for the chosen principal, but it is present in 217the default client keytab, the krb5 mechanism will acquire initial 218tickets using the keytab. 219 220\sphinxAtStartPar 221If the target name cannot be used to select a client principal 222(because the credentials are used in a call to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.21}{gss\_inquire\_cred}), or 223if the credential cache selection facility cannot choose a principal 224for it, the default credential cache will be selected if it exists and 225contains tickets. 226 227\sphinxAtStartPar 228If the default credential cache does not exist, but the default client 229keytab does, the krb5 mechanism will try to acquire initial tickets 230for the first principal in the default client keytab. 231 232\sphinxAtStartPar 233If the krb5 mechanism acquires initial tickets using the default 234client keytab, the resulting tickets will be stored in the default 235cache or collection, and will be refreshed by future calls to 236\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} as they approach their expire time. 237 238 239\section{Acceptor names} 240\label{\detokenize{appdev/gssapi:acceptor-names}} 241\sphinxAtStartPar 242A GSSAPI server application uses \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context} to establish 243a security context based on tokens provided by the client. The 244\sphinxstyleemphasis{acceptor\_cred\_handle} parameter determines what 245\DUrole{xref,std,std-ref}{keytab\_definition} entries may be authenticated to by the 246client, if the krb5 mechanism is used. 247 248\sphinxAtStartPar 249The simplest choice is to pass \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} as the acceptor 250credential. In this case, clients may authenticate to any service 251principal in the default keytab (typically \DUrole{xref,std,std-ref}{DEFKTNAME}, or the value of 252the \sphinxstylestrong{KRB5\_KTNAME} environment variable). This is the recommended 253approach if the server application has no specific requirements to the 254contrary. 255 256\sphinxAtStartPar 257A server may acquire an acceptor credential with \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred} and 258a \sphinxstyleemphasis{cred\_usage} of \sphinxstylestrong{GSS\_C\_ACCEPT} or \sphinxstylestrong{GSS\_C\_BOTH}. If the 259\sphinxstyleemphasis{desired\_name} parameter is \sphinxstylestrong{GSS\_C\_NO\_NAME}, then clients will be 260allowed to authenticate to any service principal in the default 261keytab, just as if no acceptor credential was supplied. 262 263\sphinxAtStartPar 264If a server wishes to specify a \sphinxstyleemphasis{desired\_name} to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, 265the most common choice is a host\sphinxhyphen{}based name. If the host\sphinxhyphen{}based 266\sphinxstyleemphasis{desired\_name} contains just a \sphinxstyleemphasis{service}, then clients will be allowed 267to authenticate to any host\sphinxhyphen{}based service principal (that is, a 268principal of the form \sphinxcode{\sphinxupquote{service/hostname@REALM}}) for the named 269service, regardless of hostname or realm, as long as it is present in 270the default keytab. If the input name contains both a \sphinxstyleemphasis{service} and a 271\sphinxstyleemphasis{hostname}, clients will be allowed to authenticate to any host\sphinxhyphen{}based 272principal for the named service and hostname, regardless of realm. 273 274\begin{sphinxadmonition}{note}{Note:} 275\sphinxAtStartPar 276If a \sphinxstyleemphasis{hostname} is specified, it will be canonicalized 277using forward name resolution, and possibly also using 278reverse name resolution depending on the value of the 279\sphinxstylestrong{rdns} variable in \DUrole{xref,std,std-ref}{libdefaults}. 280\end{sphinxadmonition} 281 282\begin{sphinxadmonition}{note}{Note:} 283\sphinxAtStartPar 284If the \sphinxstylestrong{ignore\_acceptor\_hostname} variable in 285\DUrole{xref,std,std-ref}{libdefaults} is enabled, then \sphinxstyleemphasis{hostname} will be 286ignored even if one is specified in the input name. 287\end{sphinxadmonition} 288 289\begin{sphinxadmonition}{note}{Note:} 290\sphinxAtStartPar 291In MIT krb5 versions prior to 1.10, and in Heimdal’s 292implementation of the krb5 mechanism, an input name with 293just a \sphinxstyleemphasis{service} is treated like an input name of 294\sphinxcode{\sphinxupquote{service@localhostname}}, where \sphinxstyleemphasis{localhostname} is the 295string returned by gethostname(). 296\end{sphinxadmonition} 297 298\sphinxAtStartPar 299If the \sphinxstyleemphasis{desired\_name} is a krb5 principal name or a local system name 300type which is mapped to a krb5 principal name, clients will only be 301allowed to authenticate to that principal in the default keytab. 302 303 304\section{Name Attributes} 305\label{\detokenize{appdev/gssapi:name-attributes}} 306\sphinxAtStartPar 307In release 1.8 or later, the \sphinxhref{https://tools.ietf.org/html/rfc6680.txt\#section-7.4}{gss\_inquire\_name} and 308\sphinxhref{https://tools.ietf.org/html/6680.html\#section-7.5}{gss\_get\_name\_attribute} functions, specified in \index{RFC@\spxentry{RFC}!RFC 6680@\spxentry{RFC 6680}}\sphinxhref{https://tools.ietf.org/html/rfc6680.html}{\sphinxstylestrong{RFC 6680}}, can be 309used to retrieve name attributes from the \sphinxstyleemphasis{src\_name} returned by 310\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}. The following attributes are defined when 311the krb5 mechanism is used: 312 313\phantomsection\label{\detokenize{appdev/gssapi:gssapi-authind-attr}}\begin{itemize} 314\item {} 315\sphinxAtStartPar 316“auth\sphinxhyphen{}indicators” attribute: 317 318\end{itemize} 319 320\sphinxAtStartPar 321This attribute will be included in the \sphinxhref{https://tools.ietf.org/html/rfc6680.txt\#section-7.4}{gss\_inquire\_name} output if the 322ticket contains \DUrole{xref,std,std-ref}{authentication indicators}. 323One indicator is returned per invocation of \sphinxhref{https://tools.ietf.org/html/6680.html\#section-7.5}{gss\_get\_name\_attribute}, 324so multiple invocations may be necessary to retrieve all of the 325indicators from the ticket. (New in release 1.15.) 326 327 328\section{Credential store extensions} 329\label{\detokenize{appdev/gssapi:credential-store-extensions}} 330\sphinxAtStartPar 331Beginning with release 1.11, the following GSSAPI extensions declared 332in \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_ext.h\textgreater{}}} can be used to specify how credentials 333are acquired or stored: 334 335\begin{sphinxVerbatim}[commandchars=\\\{\}] 336\PYG{n}{struct} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}element\PYGZus{}struct} \PYG{p}{\PYGZob{}} 337 \PYG{n}{const} \PYG{n}{char} \PYG{o}{*}\PYG{n}{key}\PYG{p}{;} 338 \PYG{n}{const} \PYG{n}{char} \PYG{o}{*}\PYG{n}{value}\PYG{p}{;} 339\PYG{p}{\PYGZcb{}}\PYG{p}{;} 340\PYG{n}{typedef} \PYG{n}{struct} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}element\PYGZus{}struct} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}element\PYGZus{}desc}\PYG{p}{;} 341 342\PYG{n}{struct} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}struct} \PYG{p}{\PYGZob{}} 343 \PYG{n}{OM\PYGZus{}uint32} \PYG{n}{count}\PYG{p}{;} 344 \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}element\PYGZus{}desc} \PYG{o}{*}\PYG{n}{elements}\PYG{p}{;} 345\PYG{p}{\PYGZcb{}}\PYG{p}{;} 346\PYG{n}{typedef} \PYG{n}{const} \PYG{n}{struct} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}struct} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}desc}\PYG{p}{;} 347\PYG{n}{typedef} \PYG{n}{const} \PYG{n}{gss\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}desc} \PYG{o}{*}\PYG{n}{gss\PYGZus{}const\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}t}\PYG{p}{;} 348 349\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}acquire\PYGZus{}cred\PYGZus{}from}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 350 \PYG{n}{const} \PYG{n}{gss\PYGZus{}name\PYGZus{}t} \PYG{n}{desired\PYGZus{}name}\PYG{p}{,} 351 \PYG{n}{OM\PYGZus{}uint32} \PYG{n}{time\PYGZus{}req}\PYG{p}{,} 352 \PYG{n}{const} \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{n}{desired\PYGZus{}mechs}\PYG{p}{,} 353 \PYG{n}{gss\PYGZus{}cred\PYGZus{}usage\PYGZus{}t} \PYG{n}{cred\PYGZus{}usage}\PYG{p}{,} 354 \PYG{n}{gss\PYGZus{}const\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}t} \PYG{n}{cred\PYGZus{}store}\PYG{p}{,} 355 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{o}{*}\PYG{n}{output\PYGZus{}cred\PYGZus{}handle}\PYG{p}{,} 356 \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{o}{*}\PYG{n}{actual\PYGZus{}mechs}\PYG{p}{,} 357 \PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{time\PYGZus{}rec}\PYG{p}{)}\PYG{p}{;} 358 359\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{gss\PYGZus{}store\PYGZus{}cred\PYGZus{}into}\PYG{p}{(}\PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{minor\PYGZus{}status}\PYG{p}{,} 360 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{input\PYGZus{}cred\PYGZus{}handle}\PYG{p}{,} 361 \PYG{n}{gss\PYGZus{}cred\PYGZus{}usage\PYGZus{}t} \PYG{n}{cred\PYGZus{}usage}\PYG{p}{,} 362 \PYG{n}{const} \PYG{n}{gss\PYGZus{}OID} \PYG{n}{desired\PYGZus{}mech}\PYG{p}{,} 363 \PYG{n}{OM\PYGZus{}uint32} \PYG{n}{overwrite\PYGZus{}cred}\PYG{p}{,} 364 \PYG{n}{OM\PYGZus{}uint32} \PYG{n}{default\PYGZus{}cred}\PYG{p}{,} 365 \PYG{n}{gss\PYGZus{}const\PYGZus{}key\PYGZus{}value\PYGZus{}set\PYGZus{}t} \PYG{n}{cred\PYGZus{}store}\PYG{p}{,} 366 \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{o}{*}\PYG{n}{elements\PYGZus{}stored}\PYG{p}{,} 367 \PYG{n}{gss\PYGZus{}cred\PYGZus{}usage\PYGZus{}t} \PYG{o}{*}\PYG{n}{cred\PYGZus{}usage\PYGZus{}stored}\PYG{p}{)}\PYG{p}{;} 368\end{sphinxVerbatim} 369 370\sphinxAtStartPar 371The additional \sphinxstyleemphasis{cred\_store} parameter allows the caller to specify 372information about how the credentials should be obtained and stored. 373The following options are supported by the krb5 mechanism: 374\begin{itemize} 375\item {} 376\sphinxAtStartPar 377\sphinxstylestrong{ccache}: For acquiring initiator credentials, the name of the 378\DUrole{xref,std,std-ref}{credential cache} to which the handle will 379refer. For storing credentials, the name of the cache or collection 380where the credentials will be stored (see below). 381 382\item {} 383\sphinxAtStartPar 384\sphinxstylestrong{client\_keytab}: For acquiring initiator credentials, the name of 385the \DUrole{xref,std,std-ref}{keytab} which will be used, if 386necessary, to refresh the credentials in the cache. 387 388\item {} 389\sphinxAtStartPar 390\sphinxstylestrong{keytab}: For acquiring acceptor credentials, the name of the 391\DUrole{xref,std,std-ref}{keytab} to which the handle will refer. 392In release 1.19 and later, this option also determines the keytab to 393be used for verification when initiator credentials are acquired 394using a password and verified. 395 396\item {} 397\sphinxAtStartPar 398\sphinxstylestrong{password}: For acquiring initiator credentials, this option 399instructs the mechanism to acquire fresh credentials into a unique 400memory credential cache. This option may not be used with the 401\sphinxstylestrong{ccache} or \sphinxstylestrong{client\_keytab} options, and a \sphinxstyleemphasis{desired\_name} must 402be specified. (New in release 1.19.) 403 404\item {} 405\sphinxAtStartPar 406\sphinxstylestrong{rcache}: For acquiring acceptor credentials, the name of the 407\DUrole{xref,std,std-ref}{replay cache} to be used when processing 408the initiator tokens. (New in release 1.13.) 409 410\item {} 411\sphinxAtStartPar 412\sphinxstylestrong{verify}: For acquiring initiator credentials, this option 413instructs the mechanism to verify the credentials by obtaining a 414ticket to a service with a known key. The service key is obtained 415from the keytab specified with the \sphinxstylestrong{keytab} option or the default 416keytab. The value may be the name of a principal in the keytab, or 417the empty string. If the empty string is given, any \sphinxcode{\sphinxupquote{host}} 418service principal in the keytab may be used. (New in release 1.19.) 419 420\end{itemize} 421 422\sphinxAtStartPar 423In release 1.20 or later, if a collection name is specified for 424\sphinxstylestrong{cache} in a call to gss\_store\_cred\_into(), an existing cache for 425the client principal within the collection will be selected, or a new 426cache will be created within the collection. If \sphinxstyleemphasis{overwrite\_cred} is 427false and the selected credential cache already exists, a 428\sphinxstylestrong{GSS\_S\_DUPLICATE\_ELEMENT} error will be returned. If \sphinxstyleemphasis{default\_cred} 429is true, the primary cache of the collection will be switched to the 430selected cache. 431 432 433\section{Importing and exporting credentials} 434\label{\detokenize{appdev/gssapi:importing-and-exporting-credentials}} 435\sphinxAtStartPar 436The following GSSAPI extensions can be used to import and export 437credentials (declared in \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_ext.h\textgreater{}}}): 438 439\begin{sphinxVerbatim}[commandchars=\\\{\}] 440\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}{,} 441 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{cred\PYGZus{}handle}\PYG{p}{,} 442 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{token}\PYG{p}{)}\PYG{p}{;} 443 444\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}{,} 445 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{token}\PYG{p}{,} 446 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{o}{*}\PYG{n}{cred\PYGZus{}handle}\PYG{p}{)}\PYG{p}{;} 447\end{sphinxVerbatim} 448 449\sphinxAtStartPar 450The first function serializes a GSSAPI credential handle into a 451buffer; the second unseralizes a buffer into a GSSAPI credential 452handle. Serializing a credential does not destroy it. If any of the 453mechanisms used in \sphinxstyleemphasis{cred\_handle} do not support serialization, 454gss\_export\_cred will return \sphinxstylestrong{GSS\_S\_UNAVAILABLE}. As with other 455GSSAPI serialization functions, these extensions are only intended to 456work with a matching implementation on the other side; they do not 457serialize credentials in a standardized format. 458 459\sphinxAtStartPar 460A serialized credential may contain secret information such as ticket 461session keys. The serialization format does not protect this 462information from eavesdropping or tampering. The calling application 463must take care to protect the serialized credential when communicating 464it over an insecure channel or to an untrusted party. 465 466\sphinxAtStartPar 467A krb5 GSSAPI credential may contain references to a credential cache, 468a client keytab, an acceptor keytab, and a replay cache. These 469resources are normally serialized as references to their external 470locations (such as the filename of the credential cache). Because of 471this, a serialized krb5 credential can only be imported by a process 472with similar privileges to the exporter. A serialized credential 473should not be trusted if it originates from a source with lower 474privileges than the importer, as it may contain references to external 475credential cache, keytab, or replay cache resources not accessible to 476the originator. 477 478\sphinxAtStartPar 479An exception to the above rule applies when a krb5 GSSAPI credential 480refers to a memory credential cache, as is normally the case for 481delegated credentials received by \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}. In this 482case, the contents of the credential cache are serialized, so that the 483resulting token may be imported even if the original memory credential 484cache no longer exists. 485 486 487\section{Constrained delegation (S4U)} 488\label{\detokenize{appdev/gssapi:constrained-delegation-s4u}} 489\sphinxAtStartPar 490The Microsoft S4U2Self and S4U2Proxy Kerberos protocol extensions 491allow an intermediate service to acquire credentials from a client to 492a target service without requiring the client to delegate a 493ticket\sphinxhyphen{}granting ticket, if the KDC is configured to allow it. 494 495\sphinxAtStartPar 496To perform a constrained delegation operation, the intermediate 497service must submit to the KDC an “evidence ticket” from the client to 498the intermediate service. An evidence ticket can be acquired when the 499client authenticates to the intermediate service with Kerberos, or 500with an S4U2Self request if the KDC allows it. The MIT krb5 GSSAPI 501library represents an evidence ticket using a “proxy credential”, 502which is a special kind of gss\_cred\_id\_t object whose underlying 503credential cache contains the evidence ticket and a krbtgt ticket for 504the intermediate service. 505 506\sphinxAtStartPar 507To acquire a proxy credential during client authentication, the 508service should first create an acceptor credential using the 509\sphinxstylestrong{GSS\_C\_BOTH} usage. The application should then pass this 510credential as the \sphinxstyleemphasis{acceptor\_cred\_handle} to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.1}{gss\_accept\_sec\_context}, 511and also pass a \sphinxstyleemphasis{delegated\_cred\_handle} output parameter to receive a 512proxy credential containing the evidence ticket. The output value of 513\sphinxstyleemphasis{delegated\_cred\_handle} may be a delegated ticket\sphinxhyphen{}granting ticket if 514the client sent one, or a proxy credential if not. If the library can 515determine that the client’s ticket is not a valid evidence ticket, it 516will place \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} in \sphinxstyleemphasis{delegated\_cred\_handle}. 517 518\sphinxAtStartPar 519To acquire a proxy credential using an S4U2Self request, the service 520can use the following GSSAPI extension: 521 522\begin{sphinxVerbatim}[commandchars=\\\{\}] 523\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}{,} 524 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{icred}\PYG{p}{,} 525 \PYG{n}{gss\PYGZus{}name\PYGZus{}t} \PYG{n}{desired\PYGZus{}name}\PYG{p}{,} 526 \PYG{n}{OM\PYGZus{}uint32} \PYG{n}{time\PYGZus{}req}\PYG{p}{,} 527 \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{n}{desired\PYGZus{}mechs}\PYG{p}{,} 528 \PYG{n}{gss\PYGZus{}cred\PYGZus{}usage\PYGZus{}t} \PYG{n}{cred\PYGZus{}usage}\PYG{p}{,} 529 \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{o}{*}\PYG{n}{output\PYGZus{}cred}\PYG{p}{,} 530 \PYG{n}{gss\PYGZus{}OID\PYGZus{}set} \PYG{o}{*}\PYG{n}{actual\PYGZus{}mechs}\PYG{p}{,} 531 \PYG{n}{OM\PYGZus{}uint32} \PYG{o}{*}\PYG{n}{time\PYGZus{}rec}\PYG{p}{)}\PYG{p}{;} 532\end{sphinxVerbatim} 533 534\sphinxAtStartPar 535The parameters to this function are similar to those of 536\sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.2}{gss\_acquire\_cred}, except that \sphinxstyleemphasis{icred} is used to make an S4U2Self 537request to the KDC for a ticket from \sphinxstyleemphasis{desired\_name} to the 538intermediate service. Both \sphinxstyleemphasis{icred} and \sphinxstyleemphasis{desired\_name} are required 539for this function; passing \sphinxstylestrong{GSS\_C\_NO\_CREDENTIAL} or 540\sphinxstylestrong{GSS\_C\_NO\_NAME} will cause the call to fail. \sphinxstyleemphasis{icred} must contain a 541krbtgt ticket for the intermediate service. The result of this 542operation is a proxy credential. (Prior to release 1.18, the result 543of this operation may be a regular credential for \sphinxstyleemphasis{desired\_name}, if 544the KDC issues a non\sphinxhyphen{}forwardable ticket.) 545 546\sphinxAtStartPar 547Once the intermediate service has a proxy credential, it can simply 548pass it to \sphinxhref{https://tools.ietf.org/html/rfc2744.html\#section-5.19}{gss\_init\_sec\_context} as the \sphinxstyleemphasis{initiator\_cred\_handle} 549parameter, and the desired service as the \sphinxstyleemphasis{target\_name} parameter. 550The GSSAPI library will present the krbtgt ticket and evidence ticket 551in the proxy credential to the KDC in an S4U2Proxy request; if the 552intermediate service has the appropriate permissions, the KDC will 553issue a ticket from the client to the target service. The GSSAPI 554library will then use this ticket to authenticate to the target 555service. 556 557\sphinxAtStartPar 558If an application needs to find out whether a credential it holds is a 559proxy credential and the name of the intermediate service, it can 560query the credential with the \sphinxstylestrong{GSS\_KRB5\_GET\_CRED\_IMPERSONATOR} OID 561(new in release 1.16, declared in \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_krb5.h\textgreater{}}}) using 562the gss\_inquire\_cred\_by\_oid extension (declared in 563\sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_ext.h\textgreater{}}}): 564 565\begin{sphinxVerbatim}[commandchars=\\\{\}] 566\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}{,} 567 \PYG{n}{const} \PYG{n}{gss\PYGZus{}cred\PYGZus{}id\PYGZus{}t} \PYG{n}{cred\PYGZus{}handle}\PYG{p}{,} 568 \PYG{n}{gss\PYGZus{}OID} \PYG{n}{desired\PYGZus{}object}\PYG{p}{,} 569 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}set\PYGZus{}t} \PYG{o}{*}\PYG{n}{data\PYGZus{}set}\PYG{p}{)}\PYG{p}{;} 570\end{sphinxVerbatim} 571 572\sphinxAtStartPar 573If the call succeeds and \sphinxstyleemphasis{cred\_handle} is a proxy credential, 574\sphinxstyleemphasis{data\_set} will be set to a single\sphinxhyphen{}element buffer set containing the 575unparsed principal name of the intermediate service. If \sphinxstyleemphasis{cred\_handle} 576is not a proxy credential, \sphinxstyleemphasis{data\_set} will be set to an empty buffer 577set. If the library does not support the query, 578gss\_inquire\_cred\_by\_oid will return \sphinxstylestrong{GSS\_S\_UNAVAILABLE}. 579 580 581\section{AEAD message wrapping} 582\label{\detokenize{appdev/gssapi:aead-message-wrapping}} 583\sphinxAtStartPar 584The following GSSAPI extensions (declared in 585\sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_ext.h\textgreater{}}}) can be used to wrap and unwrap messages 586with additional “associated data” which is integrity\sphinxhyphen{}checked but is 587not included in the output buffer: 588 589\begin{sphinxVerbatim}[commandchars=\\\{\}] 590\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}{,} 591 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 592 \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}{,} 593 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}assoc\PYGZus{}buffer}\PYG{p}{,} 594 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}payload\PYGZus{}buffer}\PYG{p}{,} 595 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 596 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{output\PYGZus{}message\PYGZus{}buffer}\PYG{p}{)}\PYG{p}{;} 597 598\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}{,} 599 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 600 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}message\PYGZus{}buffer}\PYG{p}{,} 601 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{input\PYGZus{}assoc\PYGZus{}buffer}\PYG{p}{,} 602 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}t} \PYG{n}{output\PYGZus{}payload\PYGZus{}buffer}\PYG{p}{,} 603 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 604 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{o}{*}\PYG{n}{qop\PYGZus{}state}\PYG{p}{)}\PYG{p}{;} 605\end{sphinxVerbatim} 606 607\sphinxAtStartPar 608Wrap tokens created with gss\_wrap\_aead will successfully unwrap only 609if the same \sphinxstyleemphasis{input\_assoc\_buffer} contents are presented to 610gss\_unwrap\_aead. 611 612 613\section{IOV message wrapping} 614\label{\detokenize{appdev/gssapi:iov-message-wrapping}} 615\sphinxAtStartPar 616The following extensions (declared in \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_ext.h\textgreater{}}}) can 617be used for in\sphinxhyphen{}place encryption, fine\sphinxhyphen{}grained control over wrap token 618layout, and for constructing wrap tokens compatible with Microsoft DCE 619RPC: 620 621\begin{sphinxVerbatim}[commandchars=\\\{\}] 622\PYG{n}{typedef} \PYG{n}{struct} \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc\PYGZus{}struct} \PYG{p}{\PYGZob{}} 623 \PYG{n}{OM\PYGZus{}uint32} \PYG{n+nb}{type}\PYG{p}{;} 624 \PYG{n}{gss\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{buffer}\PYG{p}{;} 625\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}{;} 626 627\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}{,} 628 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 629 \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}{,} 630 \PYG{n+nb}{int} \PYG{o}{*}\PYG{n}{conf\PYGZus{}state}\PYG{p}{,} 631 \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}{;} 632 633\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}{,} 634 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 635 \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}{,} 636 \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}{;} 637 638\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}{,} 639 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 640 \PYG{n+nb}{int} \PYG{n}{conf\PYGZus{}req\PYGZus{}flag}\PYG{p}{,} 641 \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}{,} 642 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 643 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 644 645\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}{,} 646 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 647 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 648\end{sphinxVerbatim} 649 650\sphinxAtStartPar 651The caller of gss\_wrap\_iov provides an array of gss\_iov\_buffer\_desc 652structures, each containing a type and a gss\_buffer\_desc structure. 653Valid types include: 654\begin{itemize} 655\item {} 656\sphinxAtStartPar 657\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_DATA}: A data buffer to be included in the 658token, and to be encrypted or decrypted in\sphinxhyphen{}place if the token is 659confidentiality\sphinxhyphen{}protected. 660 661\item {} 662\sphinxAtStartPar 663\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_HEADER}: The GSSAPI wrap token header and 664underlying cryptographic header. 665 666\item {} 667\sphinxAtStartPar 668\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_TRAILER}: The cryptographic trailer, if one is 669required. 670 671\item {} 672\sphinxAtStartPar 673\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_PADDING}: Padding to be combined with the data 674during encryption and decryption. (The implementation may choose to 675place padding in the trailer buffer, in which case it will set the 676padding buffer length to 0.) 677 678\item {} 679\sphinxAtStartPar 680\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_STREAM}: For unwrapping only, a buffer 681containing a complete wrap token in standard format to be unwrapped. 682 683\item {} 684\sphinxAtStartPar 685\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_SIGN\_ONLY}: A buffer to be included in the 686token’s integrity protection checksum, but not to be encrypted or 687included in the token itself. 688 689\end{itemize} 690 691\sphinxAtStartPar 692For gss\_wrap\_iov, the IOV list should contain one HEADER buffer, 693followed by zero or more SIGN\_ONLY buffers, followed by one or more 694DATA buffers, followed by a TRAILER buffer. The memory pointed to by 695the buffers is not required to be contiguous or in any particular 696order. If \sphinxstyleemphasis{conf\_req\_flag} is true, DATA buffers will be encrypted 697in\sphinxhyphen{}place, while SIGN\_ONLY buffers will not be modified. 698 699\sphinxAtStartPar 700The type of an output buffer may be combined with 701\sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATE} to request that gss\_wrap\_iov allocate 702the buffer contents. If gss\_wrap\_iov allocates a buffer, it sets the 703\sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATED} flag on the buffer type. 704gss\_release\_iov\_buffer can be used to release all allocated buffers 705within an iov list and unset their allocated flags. Here is an 706example of how gss\_wrap\_iov can be used with allocation requested 707(\sphinxstyleemphasis{ctx} is assumed to be a previously established gss\_ctx\_id\_t): 708 709\begin{sphinxVerbatim}[commandchars=\\\{\}] 710\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 711\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{4}\PYG{p}{]}\PYG{p}{;} 712\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}{;} 713 714\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}{|} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 715\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}{;} 716\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}{;} 717\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}{;} 718\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}{|} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 719\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}{|} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 720 721\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}{,} 722 \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 723\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 724 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 725 726\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}{/} 727 728\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}{;} 729\end{sphinxVerbatim} 730 731\sphinxAtStartPar 732If the caller does not choose to request buffer allocation by 733gss\_wrap\_iov, it should first call gss\_wrap\_iov\_length to query the 734lengths of the HEADER, PADDING, and TRAILER buffers. DATA buffers 735must be provided in the iov list so that padding length can be 736computed correctly, but the output buffers need not be initialized. 737Here is an example of using gss\_wrap\_iov\_length and gss\_wrap\_iov: 738 739\begin{sphinxVerbatim}[commandchars=\\\{\}] 740\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 741\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{4}\PYG{p}{]}\PYG{p}{;} 742\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}{;} 743 744\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}{;} 745\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}{;} 746\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}{;} 747\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}{;} 748 749\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}{;} 750\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}{;} 751 752\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}{,} 753 \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 754\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 755 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 756\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}{+} 757 \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}{)} 758 \PYG{n}{handle\PYGZus{}out\PYGZus{}of\PYGZus{}space\PYGZus{}error}\PYG{p}{(}\PYG{p}{)}\PYG{p}{;} 759\PYG{n}{ptr} \PYG{o}{=} \PYG{n+nb}{str} \PYG{o}{+} \PYG{n}{strlen}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{)}\PYG{p}{;} 760\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}{;} 761\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}{;} 762\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}{;} 763\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}{;} 764\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}{;} 765 766\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}{,} 767 \PYG{n}{iov}\PYG{p}{,} \PYG{l+m+mi}{4}\PYG{p}{)}\PYG{p}{;} 768\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 769 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 770\end{sphinxVerbatim} 771 772\sphinxAtStartPar 773If the context was established using the \sphinxstylestrong{GSS\_C\_DCE\_STYLE} flag 774(described in \index{RFC@\spxentry{RFC}!RFC 4757@\spxentry{RFC 4757}}\sphinxhref{https://tools.ietf.org/html/rfc4757.html}{\sphinxstylestrong{RFC 4757}}), wrap tokens compatible with Microsoft DCE 775RPC can be constructed. In this case, the IOV list must include a 776SIGN\_ONLY buffer, a DATA buffer, a second SIGN\_ONLY buffer, and a 777HEADER buffer in that order (the order of the buffer contents remains 778arbitrary). The application must pad the DATA buffer to a multiple of 77916 bytes as no padding or trailer buffer is used. 780 781\sphinxAtStartPar 782gss\_unwrap\_iov may be called with an IOV list just like one which 783would be provided to gss\_wrap\_iov. DATA buffers will be decrypted 784in\sphinxhyphen{}place if they were encrypted, and SIGN\_ONLY buffers will not be 785modified. 786 787\sphinxAtStartPar 788Alternatively, gss\_unwrap\_iov may be called with a single STREAM 789buffer, zero or more SIGN\_ONLY buffers, and a single DATA buffer. The 790STREAM buffer is interpreted as a complete wrap token. The STREAM 791buffer will be modified in\sphinxhyphen{}place to decrypt its contents. The DATA 792buffer will be initialized to point to the decrypted data within the 793STREAM buffer, unless it has the \sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATE} flag 794set, in which case it will be initialized with a copy of the decrypted 795data. Here is an example (\sphinxstyleemphasis{token} and \sphinxstyleemphasis{token\_len} are assumed to be a 796pre\sphinxhyphen{}existing pointer and length for a modifiable region of data): 797 798\begin{sphinxVerbatim}[commandchars=\\\{\}] 799\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 800\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{p}{;} 801 802\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}{;} 803\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}{;} 804\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}{;} 805\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}{;} 806\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}{;} 807\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 808 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 809 810\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} 811 \PYG{o}{*} \PYG{n}{token}\PYG{o}{.} \PYG{o}{*}\PYG{o}{/} 812\end{sphinxVerbatim} 813 814 815\section{IOV MIC tokens} 816\label{\detokenize{appdev/gssapi:iov-mic-tokens}}\label{\detokenize{appdev/gssapi:gssapi-mic-token}} 817\sphinxAtStartPar 818The following extensions (declared in \sphinxcode{\sphinxupquote{\textless{}gssapi/gssapi\_ext.h\textgreater{}}}) can 819be used in release 1.12 or later to construct and verify MIC tokens 820using an IOV list: 821 822\begin{sphinxVerbatim}[commandchars=\\\{\}] 823\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}{,} 824 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 825 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} 826 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 827 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 828 829\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}{,} 830 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 831 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{n}{qop\PYGZus{}req}\PYG{p}{,} 832 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 833 \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 834 835\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}{,} 836 \PYG{n}{gss\PYGZus{}ctx\PYGZus{}id\PYGZus{}t} \PYG{n}{context\PYGZus{}handle}\PYG{p}{,} 837 \PYG{n}{gss\PYGZus{}qop\PYGZus{}t} \PYG{o}{*}\PYG{n}{qop\PYGZus{}state}\PYG{p}{,} 838 \PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{o}{*}\PYG{n}{iov}\PYG{p}{,} 839 \PYG{n+nb}{int} \PYG{n}{iov\PYGZus{}count}\PYG{p}{)}\PYG{p}{;} 840\end{sphinxVerbatim} 841 842\sphinxAtStartPar 843The caller of gss\_get\_mic\_iov provides an array of gss\_iov\_buffer\_desc 844structures, each containing a type and a gss\_buffer\_desc structure. 845Valid types include: 846\begin{itemize} 847\item {} 848\sphinxAtStartPar 849\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_DATA} and \sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_SIGN\_ONLY}: The 850corresponding buffer for each of these types will be signed for the 851MIC token, in the order provided. 852 853\item {} 854\sphinxAtStartPar 855\sphinxstylestrong{GSS\_C\_BUFFER\_TYPE\_MIC\_TOKEN}: The GSSAPI MIC token. 856 857\end{itemize} 858 859\sphinxAtStartPar 860The type of the MIC\_TOKEN buffer may be combined with 861\sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATE} to request that gss\_get\_mic\_iov 862allocate the buffer contents. If gss\_get\_mic\_iov allocates the 863buffer, it sets the \sphinxstylestrong{GSS\_C\_BUFFER\_FLAG\_ALLOCATED} flag on the buffer 864type. gss\_release\_iov\_buffer can be used to release all allocated 865buffers within an iov list and unset their allocated flags. Here is 866an example of how gss\_get\_mic\_iov can be used with allocation 867requested (\sphinxstyleemphasis{ctx} is assumed to be a previously established 868gss\_ctx\_id\_t): 869 870\begin{sphinxVerbatim}[commandchars=\\\{\}] 871\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 872\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{3}\PYG{p}{]}\PYG{p}{;} 873 874\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}{;} 875\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}{;} 876\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}{;} 877\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}{;} 878\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}{;} 879\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}{;} 880\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}{|} \PYG{n}{GSS\PYGZus{}IOV\PYGZus{}BUFFER\PYGZus{}FLAG\PYGZus{}ALLOCATE}\PYG{p}{;} 881 882\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}{;} 883\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 884 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 885 886\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}{/} 887 888\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}{;} 889\end{sphinxVerbatim} 890 891\sphinxAtStartPar 892If the caller does not choose to request buffer allocation by 893gss\_get\_mic\_iov, it should first call gss\_get\_mic\_iov\_length to query 894the length of the MIC\_TOKEN buffer. Here is an example of using 895gss\_get\_mic\_iov\_length and gss\_get\_mic\_iov: 896 897\begin{sphinxVerbatim}[commandchars=\\\{\}] 898\PYG{n}{OM\PYGZus{}uint32} \PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{;} 899\PYG{n}{gss\PYGZus{}iov\PYGZus{}buffer\PYGZus{}desc} \PYG{n}{iov}\PYG{p}{[}\PYG{l+m+mi}{2}\PYG{p}{]}\PYG{p}{;} 900\PYG{n}{char} \PYG{n}{data}\PYG{p}{[}\PYG{l+m+mi}{1024}\PYG{p}{]}\PYG{p}{;} 901 902\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}{;} 903\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}{;} 904\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}{;} 905\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}{;} 906 907\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}{;} 908\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 909 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 910\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}{)} 911 \PYG{n}{handle\PYGZus{}out\PYGZus{}of\PYGZus{}space\PYGZus{}error}\PYG{p}{(}\PYG{p}{)}\PYG{p}{;} 912\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}{;} 913 914\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}{;} 915\PYG{k}{if} \PYG{p}{(}\PYG{n}{GSS\PYGZus{}ERROR}\PYG{p}{(}\PYG{n}{major}\PYG{p}{)}\PYG{p}{)} 916 \PYG{n}{handle\PYGZus{}error}\PYG{p}{(}\PYG{n}{major}\PYG{p}{,} \PYG{n}{minor}\PYG{p}{)}\PYG{p}{;} 917\end{sphinxVerbatim} 918 919 920\chapter{Year 2038 considerations for uses of krb5\_timestamp} 921\label{\detokenize{appdev/y2038:year-2038-considerations-for-uses-of-krb5-timestamp}}\label{\detokenize{appdev/y2038::doc}} 922\sphinxAtStartPar 923POSIX time values, which measure the number of seconds since January 1 9241970, will exceed the maximum value representable in a signed 32\sphinxhyphen{}bit 925integer in January 2038. This documentation describes considerations 926for consumers of the MIT krb5 libraries. 927 928\sphinxAtStartPar 929Applications or libraries which use libkrb5 and consume the timestamps 930included in credentials or other structures make use of the 931{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_timestamp}}}}} type. For historical reasons, krb5\_timestamp 932is a signed 32\sphinxhyphen{}bit integer, even on platforms where a larger type is 933natively used to represent time values. To behave properly for time 934values after January 2038, calling code should cast krb5\_timestamp 935values to uint32\_t, and then to time\_t: 936 937\begin{sphinxVerbatim}[commandchars=\\\{\}] 938\PYG{p}{(}\PYG{n}{time\PYGZus{}t}\PYG{p}{)}\PYG{p}{(}\PYG{n}{uint32\PYGZus{}t}\PYG{p}{)}\PYG{n}{timestamp} 939\end{sphinxVerbatim} 940 941\sphinxAtStartPar 942Used in this way, krb5\_timestamp values can represent time values up 943until February 2106, provided that the platform uses a 64\sphinxhyphen{}bit or 944larger time\_t type. This usage will also remain safe if a later 945version of MIT krb5 changes krb5\_timestamp to an unsigned 32\sphinxhyphen{}bit 946integer. 947 948\sphinxAtStartPar 949The GSSAPI only uses representations of time intervals, not absolute 950times. Callers of the GSSAPI should require no changes to behave 951correctly after January 2038, provided that they use MIT krb5 release 9521.16 or later. 953 954 955\chapter{Differences between Heimdal and MIT Kerberos API} 956\label{\detokenize{appdev/h5l_mit_apidiff:differences-between-heimdal-and-mit-kerberos-api}}\label{\detokenize{appdev/h5l_mit_apidiff::doc}} 957 958\begin{savenotes}\sphinxattablestart 959\centering 960\begin{tabulary}{\linewidth}[t]{|l|l|} 961\hline 962 963\sphinxAtStartPar 964{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_getaddrs:c.krb5_auth_con_getaddrs}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_auth\_con\_getaddrs()}}}}} 965& 966\sphinxAtStartPar 967H5l: If either of the pointers to local\_addr 968and remote\_addr is not NULL, it is freed 969first and then reallocated before being 970populated with the content of corresponding 971address from authentication context. 972\\ 973\hline 974\sphinxAtStartPar 975{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setaddrs:c.krb5_auth_con_setaddrs}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_auth\_con\_setaddrs()}}}}} 976& 977\sphinxAtStartPar 978H5l: If either address is NULL, the previous 979address remains in place 980\\ 981\hline 982\sphinxAtStartPar 983{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setports:c.krb5_auth_con_setports}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_auth\_con\_setports()}}}}} 984& 985\sphinxAtStartPar 986H5l: Not implemented as of version 1.3.3 987\\ 988\hline 989\sphinxAtStartPar 990{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey:c.krb5_auth_con_setrecvsubkey}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_auth\_con\_setrecvsubkey()}}}}} 991& 992\sphinxAtStartPar 993H5l: If either port is NULL, the previous 994port remains in place 995\\ 996\hline 997\sphinxAtStartPar 998{\hyperref[\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey:c.krb5_auth_con_setsendsubkey}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_auth\_con\_setsendsubkey()}}}}} 999& 1000\sphinxAtStartPar 1001H5l: Not implemented as of version 1.3.3 1002\\ 1003\hline 1004\sphinxAtStartPar 1005{\hyperref[\detokenize{appdev/refs/api/krb5_cc_set_config:c.krb5_cc_set_config}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_cc\_set\_config()}}}}} 1006& 1007\sphinxAtStartPar 1008MIT: Before version 1.10 it was assumed that 1009the last argument \sphinxstyleemphasis{data} is ALWAYS non\sphinxhyphen{}zero. 1010\\ 1011\hline 1012\sphinxAtStartPar 1013\sphinxcode{\sphinxupquote{krb5\_cccol\_last\_change\_time()}} 1014& 1015\sphinxAtStartPar 1016MIT: not implemented 1017\\ 1018\hline 1019\sphinxAtStartPar 1020{\hyperref[\detokenize{appdev/refs/api/krb5_set_default_realm:c.krb5_set_default_realm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_set\_default\_realm()}}}}} 1021& 1022\sphinxAtStartPar 1023H5l: Caches the computed default realm context 1024field. If the second argument is NULL, 1025it tries to retrieve it from libdefaults or DNS. 1026MIT: Computes the default realm each time 1027if it wasn’t explicitly set in the context 1028\\ 1029\hline 1030\end{tabulary} 1031\par 1032\sphinxattableend\end{savenotes} 1033 1034 1035\chapter{Initial credentials} 1036\label{\detokenize{appdev/init_creds:initial-credentials}}\label{\detokenize{appdev/init_creds::doc}} 1037\sphinxAtStartPar 1038Software that performs tasks such as logging users into a computer 1039when they type their Kerberos password needs to get initial 1040credentials (usually ticket granting tickets) from Kerberos. Such 1041software shares some behavior with the \DUrole{xref,std,std-ref}{kinit(1)} program. 1042 1043\sphinxAtStartPar 1044Whenever a program grants access to a resource (such as a local login 1045session on a desktop computer) based on a user successfully getting 1046initial Kerberos credentials, it must verify those credentials against 1047a secure shared secret (e.g., a host keytab) to ensure that the user 1048credentials actually originate from a legitimate KDC. Failure to 1049perform this verification is a critical vulnerability, because a 1050malicious user can execute the “Zanarotti attack”: the user constructs 1051a fake response that appears to come from the legitimate KDC, but 1052whose contents come from an attacker\sphinxhyphen{}controlled KDC. 1053 1054\sphinxAtStartPar 1055Some applications read a Kerberos password over the network (ideally 1056over a secure channel), which they then verify against the KDC. While 1057this technique may be the only practical way to integrate Kerberos 1058into some existing legacy systems, its use is contrary to the original 1059design goals of Kerberos. 1060 1061\sphinxAtStartPar 1062The function {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_password()}}}}} will get initial 1063credentials for a client using a password. An application that needs 1064to verify the credentials can call {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_verify\_init\_creds()}}}}}. 1065Here is an example of code to obtain and verify TGT credentials, given 1066strings \sphinxstyleemphasis{princname} and \sphinxstyleemphasis{password} for the client principal name and 1067password: 1068 1069\begin{sphinxVerbatim}[commandchars=\\\{\}] 1070\PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 1071\PYG{n}{krb5\PYGZus{}creds} \PYG{n}{creds}\PYG{p}{;} 1072\PYG{n}{krb5\PYGZus{}principal} \PYG{n}{client\PYGZus{}princ} \PYG{o}{=} \PYG{n}{NULL}\PYG{p}{;} 1073 1074\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}{;} 1075\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}{;} 1076\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1077 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1078\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}{,} 1079 \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}{;} 1080\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1081 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1082\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}{;} 1083 1084\PYG{n}{cleanup}\PYG{p}{:} 1085\PYG{n}{krb5\PYGZus{}free\PYGZus{}principal}\PYG{p}{(}\PYG{n}{context}\PYG{p}{,} \PYG{n}{client\PYGZus{}princ}\PYG{p}{)}\PYG{p}{;} 1086\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}{;} 1087\PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1088\end{sphinxVerbatim} 1089 1090 1091\section{Options for get\_init\_creds} 1092\label{\detokenize{appdev/init_creds:options-for-get-init-creds}} 1093\sphinxAtStartPar 1094The function {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_password()}}}}} takes an options 1095parameter (which can be a null pointer). Use the function 1096{\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc:c.krb5_get_init_creds_opt_alloc}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_opt\_alloc()}}}}} to allocate an options 1097structure, and {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free:c.krb5_get_init_creds_opt_free}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_opt\_free()}}}}} to free it. For 1098example: 1099 1100\begin{sphinxVerbatim}[commandchars=\\\{\}] 1101\PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 1102\PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt} \PYG{o}{*}\PYG{n}{opt} \PYG{o}{=} \PYG{n}{NULL}\PYG{p}{;} 1103\PYG{n}{krb5\PYGZus{}creds} \PYG{n}{creds}\PYG{p}{;} 1104 1105\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}{;} 1106\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}{;} 1107\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1108 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1109\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}{;} 1110\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}{,} 1111 \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}{;} 1112\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1113 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1114 1115\PYG{n}{cleanup}\PYG{p}{:} 1116\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}{;} 1117\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}{;} 1118\PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1119\end{sphinxVerbatim} 1120 1121 1122\section{Getting anonymous credentials} 1123\label{\detokenize{appdev/init_creds:getting-anonymous-credentials}} 1124\sphinxAtStartPar 1125As of release 1.8, it is possible to obtain fully anonymous or 1126partially anonymous (realm\sphinxhyphen{}exposed) credentials, if the KDC supports 1127it. The MIT KDC supports issuing fully anonymous credentials as of 1128release 1.8 if configured appropriately (see \DUrole{xref,std,std-ref}{anonymous\_pkinit}), 1129but does not support issuing realm\sphinxhyphen{}exposed anonymous credentials at 1130this time. 1131 1132\sphinxAtStartPar 1133To obtain fully anonymous credentials, call 1134{\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:c.krb5_get_init_creds_opt_set_anonymous}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_opt\_set\_anonymous()}}}}} on the options 1135structure to set the anonymous flag, and specify a client principal 1136with the KDC’s realm and a single empty data component (the principal 1137obtained by parsing \sphinxcode{\sphinxupquote{@}}\sphinxstyleemphasis{realmname}). Authentication will take 1138place using anonymous PKINIT; if successful, the client principal of 1139the resulting tickets will be 1140\sphinxcode{\sphinxupquote{WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS}}. Here is an example: 1141 1142\begin{sphinxVerbatim}[commandchars=\\\{\}] 1143\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}{;} 1144\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}{,} 1145 \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}{;} 1146\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1147 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1148\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}{,} 1149 \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}{;} 1150\PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1151 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1152\end{sphinxVerbatim} 1153 1154\sphinxAtStartPar 1155To obtain realm\sphinxhyphen{}exposed anonymous credentials, set the anonymous flag 1156on the options structure as above, but specify a normal client 1157principal in order to prove membership in the realm. Authentication 1158will take place as it normally does; if successful, the client 1159principal of the resulting tickets will be \sphinxcode{\sphinxupquote{WELLKNOWN/ANONYMOUS@}}\sphinxstyleemphasis{realmname}. 1160 1161 1162\section{User interaction} 1163\label{\detokenize{appdev/init_creds:user-interaction}} 1164\sphinxAtStartPar 1165Authenticating a user usually requires the entry of secret 1166information, such as a password. A password can be supplied directly 1167to {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_password()}}}}} via the \sphinxstyleemphasis{password} 1168parameter, or the application can supply prompter and/or responder 1169callbacks instead. If callbacks are used, the user can also be 1170queried for other secret information such as a PIN, informed of 1171impending password expiration, or prompted to change a password which 1172has expired. 1173 1174 1175\subsection{Prompter callback} 1176\label{\detokenize{appdev/init_creds:prompter-callback}} 1177\sphinxAtStartPar 1178A prompter callback can be specified via the \sphinxstyleemphasis{prompter} and \sphinxstyleemphasis{data} 1179parameters to {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_password()}}}}}. The prompter 1180will be invoked each time the krb5 library has a question to ask or 1181information to present. When the prompter callback is invoked, the 1182\sphinxstyleemphasis{banner} argument (if not null) is intended to be displayed to the 1183user, and the questions to be answered are specified in the \sphinxstyleemphasis{prompts} 1184array. Each prompt contains a text question in the \sphinxstyleemphasis{prompt} field, a 1185\sphinxstyleemphasis{hidden} bit to indicate whether the answer should be hidden from 1186display, and a storage area for the answer in the \sphinxstyleemphasis{reply} field. The 1187callback should fill in each question’s \sphinxcode{\sphinxupquote{reply\sphinxhyphen{}\textgreater{}data}} with the 1188answer, up to a maximum number of \sphinxcode{\sphinxupquote{reply\sphinxhyphen{}\textgreater{}length}} bytes, and then 1189reset \sphinxcode{\sphinxupquote{reply\sphinxhyphen{}\textgreater{}length}} to the length of the answer. 1190 1191\sphinxAtStartPar 1192A prompter callback can call {\hyperref[\detokenize{appdev/refs/api/krb5_get_prompt_types:c.krb5_get_prompt_types}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_prompt\_types()}}}}} to get an 1193array of type constants corresponding to the prompts, to get 1194programmatic information about the semantic meaning of the questions. 1195{\hyperref[\detokenize{appdev/refs/api/krb5_get_prompt_types:c.krb5_get_prompt_types}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_prompt\_types()}}}}} may return a null pointer if no prompt 1196type information is available. 1197 1198\sphinxAtStartPar 1199Text\sphinxhyphen{}based applications can use a built\sphinxhyphen{}in text prompter 1200implementation by supplying {\hyperref[\detokenize{appdev/refs/api/krb5_prompter_posix:c.krb5_prompter_posix}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_prompter\_posix()}}}}} as the 1201\sphinxstyleemphasis{prompter} parameter and a null pointer as the \sphinxstyleemphasis{data} parameter. For 1202example: 1203 1204\begin{sphinxVerbatim}[commandchars=\\\{\}] 1205\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}{,} 1206 \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}{,} 1207 \PYG{n}{NULL}\PYG{p}{,} \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 1208\end{sphinxVerbatim} 1209 1210 1211\subsection{Responder callback} 1212\label{\detokenize{appdev/init_creds:responder-callback}} 1213\sphinxAtStartPar 1214A responder callback can be specified through the init\_creds options 1215using the {\hyperref[\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_responder:c.krb5_get_init_creds_opt_set_responder}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_get\_init\_creds\_opt\_set\_responder()}}}}} function. 1216Responder callbacks can present a more sophisticated user interface 1217for authentication secrets. The responder callback is usually invoked 1218only once per authentication, with a list of questions produced by all 1219of the allowed preauthentication mechanisms. 1220 1221\sphinxAtStartPar 1222When the responder callback is invoked, the \sphinxstyleemphasis{rctx} argument can be 1223accessed to obtain the list of questions and to answer them. The 1224{\hyperref[\detokenize{appdev/refs/api/krb5_responder_list_questions:c.krb5_responder_list_questions}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_list\_questions()}}}}} function retrieves an array of 1225question types. For each question type, the 1226{\hyperref[\detokenize{appdev/refs/api/krb5_responder_get_challenge:c.krb5_responder_get_challenge}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_get\_challenge()}}}}} function retrieves additional 1227information about the question, if applicable, and the 1228{\hyperref[\detokenize{appdev/refs/api/krb5_responder_set_answer:c.krb5_responder_set_answer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_set\_answer()}}}}} function sets the answer. 1229 1230\sphinxAtStartPar 1231Responder question types, challenges, and answers are UTF\sphinxhyphen{}8 strings. 1232The question type is a well\sphinxhyphen{}known string; the meaning of the challenge 1233and answer depend on the question type. If an application does not 1234understand a question type, it cannot interpret the challenge or 1235provide an answer. Failing to answer a question typically results in 1236the prompter callback being used as a fallback. 1237 1238 1239\subsubsection{Password question} 1240\label{\detokenize{appdev/init_creds:password-question}} 1241\sphinxAtStartPar 1242The \sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_PASSWORD}} (or \sphinxcode{\sphinxupquote{"password"}}) 1243question type requests the user’s password. This question does not 1244have a challenge, and the response is simply the password string. 1245 1246 1247\subsubsection{One\sphinxhyphen{}time password question} 1248\label{\detokenize{appdev/init_creds:one-time-password-question}} 1249\sphinxAtStartPar 1250The \sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_OTP}} (or \sphinxcode{\sphinxupquote{"otp"}}) question 1251type requests a choice among one\sphinxhyphen{}time password tokens and the PIN and 1252value for the chosen token. The challenge and answer are JSON\sphinxhyphen{}encoded 1253strings, but an application can use convenience functions to avoid 1254doing any JSON processing itself. 1255 1256\sphinxAtStartPar 1257The {\hyperref[\detokenize{appdev/refs/api/krb5_responder_otp_get_challenge:c.krb5_responder_otp_get_challenge}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_otp\_get\_challenge()}}}}} function decodes the 1258challenge into a krb5\_responder\_otp\_challenge structure. The 1259{\hyperref[\detokenize{appdev/refs/api/krb5_responder_otp_set_answer:c.krb5_responder_otp_set_answer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_otp\_set\_answer()}}}}} function selects one of the 1260token information elements from the challenge and supplies the value 1261and pin for that token. 1262 1263 1264\subsubsection{PKINIT password or PIN question} 1265\label{\detokenize{appdev/init_creds:pkinit-password-or-pin-question}} 1266\sphinxAtStartPar 1267The \sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_PKINIT}} (or \sphinxcode{\sphinxupquote{"pkinit"}}) question 1268type requests PINs for hardware devices and/or passwords for encrypted 1269credentials which are stored on disk, potentially also supplying 1270information about the state of the hardware devices. The challenge and 1271answer are JSON\sphinxhyphen{}encoded strings, but an application can use convenience 1272functions to avoid doing any JSON processing itself. 1273 1274\sphinxAtStartPar 1275The {\hyperref[\detokenize{appdev/refs/api/krb5_responder_pkinit_get_challenge:c.krb5_responder_pkinit_get_challenge}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_pkinit\_get\_challenge()}}}}} function decodes the 1276challenges into a krb5\_responder\_pkinit\_challenge structure. The 1277{\hyperref[\detokenize{appdev/refs/api/krb5_responder_pkinit_set_answer:c.krb5_responder_pkinit_set_answer}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_responder\_pkinit\_set\_answer()}}}}} function can be used to 1278supply the PIN or password for a particular client credential, and can 1279be called multiple times. 1280 1281 1282\subsubsection{Example} 1283\label{\detokenize{appdev/init_creds:example}} 1284\sphinxAtStartPar 1285Here is an example of using a responder callback: 1286 1287\begin{sphinxVerbatim}[commandchars=\\\{\}] 1288\PYG{n}{static} \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} 1289\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}{,} 1290 \PYG{n}{krb5\PYGZus{}responder\PYGZus{}context} \PYG{n}{rctx}\PYG{p}{)} 1291\PYG{p}{\PYGZob{}} 1292 \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 1293 \PYG{n}{krb5\PYGZus{}responder\PYGZus{}otp\PYGZus{}challenge} \PYG{o}{*}\PYG{n}{chl}\PYG{p}{;} 1294 1295 \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}{,} 1296 \PYG{n}{KRB5\PYGZus{}RESPONDER\PYGZus{}QUESTION\PYGZus{}PASSWORD}\PYG{p}{)}\PYG{p}{)} \PYG{p}{\PYGZob{}} 1297 \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}{,} 1298 \PYG{n}{KRB5\PYGZus{}RESPONDER\PYGZus{}QUESTION\PYGZus{}PASSWORD}\PYG{p}{,} 1299 \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{open sesame}\PYG{l+s+s2}{\PYGZdq{}}\PYG{p}{)}\PYG{p}{;} 1300 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1301 \PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1302 \PYG{p}{\PYGZcb{}} 1303 \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}{;} 1304 \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{}} 1305 \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}{,} 1306 \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 1307 \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}{;} 1308 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1309 \PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1310 \PYG{p}{\PYGZcb{}} 1311 \PYG{k}{return} \PYG{l+m+mi}{0}\PYG{p}{;} 1312\PYG{p}{\PYGZcb{}} 1313 1314\PYG{n}{static} \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} 1315\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}{)} 1316\PYG{p}{\PYGZob{}} 1317 \PYG{n}{krb5\PYGZus{}error\PYGZus{}code} \PYG{n}{ret}\PYG{p}{;} 1318 \PYG{n}{krb5\PYGZus{}get\PYGZus{}init\PYGZus{}creds\PYGZus{}opt} \PYG{o}{*}\PYG{n}{opt} \PYG{o}{=} \PYG{n}{NULL}\PYG{p}{;} 1319 \PYG{n}{krb5\PYGZus{}creds} \PYG{n}{creds}\PYG{p}{;} 1320 1321 \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}{;} 1322 \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}{;} 1323 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1324 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1325 \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}{,} 1326 \PYG{n}{NULL}\PYG{p}{)}\PYG{p}{;} 1327 \PYG{k}{if} \PYG{p}{(}\PYG{n}{ret}\PYG{p}{)} 1328 \PYG{n}{goto} \PYG{n}{cleanup}\PYG{p}{;} 1329 \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}{,} 1330 \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}{;} 1331 1332\PYG{n}{cleanup}\PYG{p}{:} 1333 \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}{;} 1334 \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}{;} 1335 \PYG{k}{return} \PYG{n}{ret}\PYG{p}{;} 1336\PYG{p}{\PYGZcb{}} 1337\end{sphinxVerbatim} 1338 1339 1340\section{Verifying initial credentials} 1341\label{\detokenize{appdev/init_creds:verifying-initial-credentials}} 1342\sphinxAtStartPar 1343Use the function {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_verify\_init\_creds()}}}}} to verify initial 1344credentials. It takes an options structure (which can be a null 1345pointer). Use {\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init:c.krb5_verify_init_creds_opt_init}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_verify\_init\_creds\_opt\_init()}}}}} to initialize 1346the caller\sphinxhyphen{}allocated options structure, and 1347{\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{\sphinxupquote{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail()}}}}} to set the 1348“nofail” option. For example: 1349 1350\begin{sphinxVerbatim}[commandchars=\\\{\}] 1351\PYG{n}{krb5\PYGZus{}verify\PYGZus{}init\PYGZus{}creds\PYGZus{}opt} \PYG{n}{vopt}\PYG{p}{;} 1352 1353\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}{;} 1354\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}{;} 1355\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}{;} 1356\end{sphinxVerbatim} 1357 1358\sphinxAtStartPar 1359The confusingly named “nofail” option, when set, means that the 1360verification must actually succeed in order for 1361{\hyperref[\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_verify\_init\_creds()}}}}} to indicate success. The default 1362state of this option (cleared) means that if there is no key material 1363available to verify the user credentials, the verification will 1364succeed anyway. (The default can be changed by a configuration file 1365setting.) 1366 1367\sphinxAtStartPar 1368This accommodates a use case where a large number of unkeyed shared 1369desktop workstations need to allow users to log in using Kerberos. 1370The security risks from this practice are mitigated by the absence of 1371valuable state on the shared workstations—any valuable resources 1372that the users would access reside on networked servers. 1373 1374 1375\chapter{Principal manipulation and parsing} 1376\label{\detokenize{appdev/princ_handle:principal-manipulation-and-parsing}}\label{\detokenize{appdev/princ_handle::doc}} 1377\sphinxAtStartPar 1378Kerberos principal structure 1379 1380\sphinxAtStartPar 1381{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_principal\_data}}}}} 1382 1383\sphinxAtStartPar 1384{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_principal}}}}} 1385 1386\sphinxAtStartPar 1387Create and free principal 1388 1389\sphinxAtStartPar 1390{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_build\_principal()}}}}} 1391 1392\sphinxAtStartPar 1393{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:c.krb5_build_principal_alloc_va}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_build\_principal\_alloc\_va()}}}}} 1394 1395\sphinxAtStartPar 1396{\hyperref[\detokenize{appdev/refs/api/krb5_build_principal_ext:c.krb5_build_principal_ext}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_build\_principal\_ext()}}}}} 1397 1398\sphinxAtStartPar 1399{\hyperref[\detokenize{appdev/refs/api/krb5_copy_principal:c.krb5_copy_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_copy\_principal()}}}}} 1400 1401\sphinxAtStartPar 1402{\hyperref[\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_free\_principal()}}}}} 1403 1404\sphinxAtStartPar 1405{\hyperref[\detokenize{appdev/refs/api/krb5_cc_get_principal:c.krb5_cc_get_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_cc\_get\_principal()}}}}} 1406 1407\sphinxAtStartPar 1408Comparing 1409 1410\sphinxAtStartPar 1411{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare:c.krb5_principal_compare}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_principal\_compare()}}}}} 1412 1413\sphinxAtStartPar 1414{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare_flags:c.krb5_principal_compare_flags}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_principal\_compare\_flags()}}}}} 1415 1416\sphinxAtStartPar 1417{\hyperref[\detokenize{appdev/refs/api/krb5_principal_compare_any_realm:c.krb5_principal_compare_any_realm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_principal\_compare\_any\_realm()}}}}} 1418 1419\sphinxAtStartPar 1420{\hyperref[\detokenize{appdev/refs/api/krb5_sname_match:c.krb5_sname_match}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_sname\_match()}}}}} 1421 1422\sphinxAtStartPar 1423{\hyperref[\detokenize{appdev/refs/api/krb5_sname_to_principal:c.krb5_sname_to_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_sname\_to\_principal()}}}}} 1424 1425\sphinxAtStartPar 1426Parsing: 1427 1428\sphinxAtStartPar 1429{\hyperref[\detokenize{appdev/refs/api/krb5_parse_name:c.krb5_parse_name}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_parse\_name()}}}}} 1430 1431\sphinxAtStartPar 1432{\hyperref[\detokenize{appdev/refs/api/krb5_parse_name_flags:c.krb5_parse_name_flags}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_parse\_name\_flags()}}}}} 1433 1434\sphinxAtStartPar 1435{\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_unparse\_name()}}}}} 1436 1437\sphinxAtStartPar 1438{\hyperref[\detokenize{appdev/refs/api/krb5_unparse_name_flags:c.krb5_unparse_name_flags}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_unparse\_name\_flags()}}}}} 1439 1440\sphinxAtStartPar 1441Utilities: 1442 1443\sphinxAtStartPar 1444{\hyperref[\detokenize{appdev/refs/api/krb5_is_config_principal:c.krb5_is_config_principal}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_is\_config\_principal()}}}}} 1445 1446\sphinxAtStartPar 1447{\hyperref[\detokenize{appdev/refs/api/krb5_kuserok:c.krb5_kuserok}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_kuserok()}}}}} 1448 1449\sphinxAtStartPar 1450{\hyperref[\detokenize{appdev/refs/api/krb5_set_password:c.krb5_set_password}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_set\_password()}}}}} 1451 1452\sphinxAtStartPar 1453{\hyperref[\detokenize{appdev/refs/api/krb5_set_password_using_ccache:c.krb5_set_password_using_ccache}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_set\_password\_using\_ccache()}}}}} 1454 1455\sphinxAtStartPar 1456{\hyperref[\detokenize{appdev/refs/api/krb5_set_principal_realm:c.krb5_set_principal_realm}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_set\_principal\_realm()}}}}} 1457 1458\sphinxAtStartPar 1459{\hyperref[\detokenize{appdev/refs/api/krb5_realm_compare:c.krb5_realm_compare}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_realm\_compare()}}}}} 1460 1461 1462\chapter{Complete reference \sphinxhyphen{} API and datatypes} 1463\label{\detokenize{appdev/refs/index:complete-reference-api-and-datatypes}}\label{\detokenize{appdev/refs/index::doc}} 1464 1465\section{krb5 API} 1466\label{\detokenize{appdev/refs/api/index:krb5-api}}\label{\detokenize{appdev/refs/api/index::doc}} 1467 1468\subsection{Frequently used public interfaces} 1469\label{\detokenize{appdev/refs/api/index:frequently-used-public-interfaces}} 1470 1471\subsubsection{krb5\_build\_principal \sphinxhyphen{} Build a principal name using null\sphinxhyphen{}terminated strings.} 1472\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)@\spxentry{krb5\_build\_principal}\spxextra{C function}} 1473 1474\begin{fulllineitems} 1475\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal:c.krb5_build_principal}}% 1476\pysigstartmultiline 1477\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_build\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{princ}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{rlen}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{p}{...}}{}% 1478\pysigstopmultiline 1479\end{fulllineitems} 1480 1481\begin{quote}\begin{description} 1482\item[{param}] \leavevmode 1483\sphinxAtStartPar 1484\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1485 1486\sphinxAtStartPar 1487\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} \sphinxhyphen{} Principal name 1488 1489\sphinxAtStartPar 1490\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rlen} \sphinxhyphen{} Realm name length 1491 1492\sphinxAtStartPar 1493\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm name 1494 1495\end{description}\end{quote} 1496\begin{quote}\begin{description} 1497\item[{retval}] \leavevmode\begin{itemize} 1498\item {} 1499\sphinxAtStartPar 15000 Success 1501 1502\end{itemize} 1503 1504\item[{return}] \leavevmode\begin{itemize} 1505\item {} 1506\sphinxAtStartPar 1507Kerberos error codes 1508 1509\end{itemize} 1510 1511\end{description}\end{quote} 1512 1513\sphinxAtStartPar 1514Call krb5\_free\_principal() to free \sphinxstyleemphasis{princ} when it is no longer needed. 1515 1516\sphinxAtStartPar 1517Beginning with release 1.20, the name type of the principal will be inferred as \sphinxstylestrong{KRB5\_NT\_SRV\_INST} or \sphinxstylestrong{KRB5\_NT\_WELLKNOWN} based on the principal name. The type will be \sphinxstylestrong{KRB5\_NT\_PRINCIPAL} if a type cannot be inferred. 1518 1519\begin{sphinxadmonition}{note}{Note:} 1520\sphinxAtStartPar 1521krb5\_build\_principal() and krb5\_build\_principal\_alloc\_va() perform the same task. krb5\_build\_principal() takes variadic arguments. krb5\_build\_principal\_alloc\_va() takes a pre\sphinxhyphen{}computed \sphinxstyleemphasis{varargs} pointer. 1522\end{sphinxadmonition} 1523 1524 1525\subsubsection{krb5\_build\_principal\_alloc\_va \sphinxhyphen{} Build a principal name, using a precomputed variable argument list.} 1526\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)@\spxentry{krb5\_build\_principal\_alloc\_va}\spxextra{C function}} 1527 1528\begin{fulllineitems} 1529\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal_alloc_va:c.krb5_build_principal_alloc_va}}% 1530\pysigstartmultiline 1531\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_build\_principal\_alloc\_va}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{princ}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{rlen}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{n}{va\_list}\DUrole{w}{ }\DUrole{n}{ap}}{}% 1532\pysigstopmultiline 1533\end{fulllineitems} 1534 1535\begin{quote}\begin{description} 1536\item[{param}] \leavevmode 1537\sphinxAtStartPar 1538\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1539 1540\sphinxAtStartPar 1541\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} \sphinxhyphen{} Principal structure 1542 1543\sphinxAtStartPar 1544\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rlen} \sphinxhyphen{} Realm name length 1545 1546\sphinxAtStartPar 1547\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm name 1548 1549\sphinxAtStartPar 1550\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap} \sphinxhyphen{} List of char * components, ending with NULL 1551 1552\end{description}\end{quote} 1553\begin{quote}\begin{description} 1554\item[{retval}] \leavevmode\begin{itemize} 1555\item {} 1556\sphinxAtStartPar 15570 Success 1558 1559\end{itemize} 1560 1561\item[{return}] \leavevmode\begin{itemize} 1562\item {} 1563\sphinxAtStartPar 1564Kerberos error codes 1565 1566\end{itemize} 1567 1568\end{description}\end{quote} 1569 1570\sphinxAtStartPar 1571Similar to krb5\_build\_principal(), this function builds a principal name, but its name components are specified as a va\_list. 1572 1573\sphinxAtStartPar 1574Use krb5\_free\_principal() to deallocate \sphinxstyleemphasis{princ} when it is no longer needed. 1575 1576 1577\subsubsection{krb5\_build\_principal\_ext \sphinxhyphen{} Build a principal name using length\sphinxhyphen{}counted strings.} 1578\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)@\spxentry{krb5\_build\_principal\_ext}\spxextra{C function}} 1579 1580\begin{fulllineitems} 1581\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal_ext:c.krb5_build_principal_ext}}% 1582\pysigstartmultiline 1583\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_build\_principal\_ext}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{princ}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{rlen}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{p}{...}}{}% 1584\pysigstopmultiline 1585\end{fulllineitems} 1586 1587\begin{quote}\begin{description} 1588\item[{param}] \leavevmode 1589\sphinxAtStartPar 1590\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1591 1592\sphinxAtStartPar 1593\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} \sphinxhyphen{} Principal name 1594 1595\sphinxAtStartPar 1596\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rlen} \sphinxhyphen{} Realm name length 1597 1598\sphinxAtStartPar 1599\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm name 1600 1601\end{description}\end{quote} 1602\begin{quote}\begin{description} 1603\item[{retval}] \leavevmode\begin{itemize} 1604\item {} 1605\sphinxAtStartPar 16060 Success 1607 1608\end{itemize} 1609 1610\item[{return}] \leavevmode\begin{itemize} 1611\item {} 1612\sphinxAtStartPar 1613Kerberos error codes 1614 1615\end{itemize} 1616 1617\end{description}\end{quote} 1618 1619\sphinxAtStartPar 1620This function creates a principal from a length\sphinxhyphen{}counted string and a variable\sphinxhyphen{}length list of length\sphinxhyphen{}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 krb5\_free\_principal() to free allocated memory for principal when it is no longer needed. 1621 1622\sphinxAtStartPar 1623Beginning with release 1.20, the name type of the principal will be inferred as \sphinxstylestrong{KRB5\_NT\_SRV\_INST} or \sphinxstylestrong{KRB5\_NT\_WELLKNOWN} based on the principal name. The type will be \sphinxstylestrong{KRB5\_NT\_PRINCIPAL} if a type cannot be inferred. 1624 1625 1626\subsubsection{krb5\_cc\_close \sphinxhyphen{} Close a credential cache handle.} 1627\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)@\spxentry{krb5\_cc\_close}\spxextra{C function}} 1628 1629\begin{fulllineitems} 1630\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_close:c.krb5_cc_close}}% 1631\pysigstartmultiline 1632\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_close}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}}{}% 1633\pysigstopmultiline 1634\end{fulllineitems} 1635 1636\begin{quote}\begin{description} 1637\item[{param}] \leavevmode 1638\sphinxAtStartPar 1639\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1640 1641\sphinxAtStartPar 1642\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 1643 1644\end{description}\end{quote} 1645\begin{quote}\begin{description} 1646\item[{retval}] \leavevmode\begin{itemize} 1647\item {} 1648\sphinxAtStartPar 16490 Success 1650 1651\end{itemize} 1652 1653\item[{return}] \leavevmode\begin{itemize} 1654\item {} 1655\sphinxAtStartPar 1656Kerberos error codes 1657 1658\end{itemize} 1659 1660\end{description}\end{quote} 1661 1662\sphinxAtStartPar 1663This function closes a credential cache handle \sphinxstyleemphasis{cache} without affecting the contents of the cache. 1664 1665 1666\subsubsection{krb5\_cc\_default \sphinxhyphen{} Resolve the default credential cache name.} 1667\label{\detokenize{appdev/refs/api/krb5_cc_default:krb5-cc-default-resolve-the-default-credential-cache-name}}\label{\detokenize{appdev/refs/api/krb5_cc_default::doc}}\index{krb5\_cc\_default (C function)@\spxentry{krb5\_cc\_default}\spxextra{C function}} 1668 1669\begin{fulllineitems} 1670\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_default:c.krb5_cc_default}}% 1671\pysigstartmultiline 1672\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_default}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ccache}}{}% 1673\pysigstopmultiline 1674\end{fulllineitems} 1675 1676\begin{quote}\begin{description} 1677\item[{param}] \leavevmode 1678\sphinxAtStartPar 1679\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1680 1681\sphinxAtStartPar 1682\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Pointer to credential cache name 1683 1684\end{description}\end{quote} 1685\begin{quote}\begin{description} 1686\item[{retval}] \leavevmode\begin{itemize} 1687\item {} 1688\sphinxAtStartPar 16890 Success 1690 1691\item {} 1692\sphinxAtStartPar 1693KV5M\_CONTEXT Bad magic number for \_krb5\_context structure 1694 1695\item {} 1696\sphinxAtStartPar 1697KRB5\_FCC\_INTERNAL The name of the default credential cache cannot be obtained 1698 1699\end{itemize} 1700 1701\item[{return}] \leavevmode\begin{itemize} 1702\item {} 1703\sphinxAtStartPar 1704Kerberos error codes 1705 1706\end{itemize} 1707 1708\end{description}\end{quote} 1709 1710\sphinxAtStartPar 1711Create a handle to the default credential cache as given by krb5\_cc\_default\_name(). 1712 1713 1714\subsubsection{krb5\_cc\_default\_name \sphinxhyphen{} Return the name of the default credential cache.} 1715\label{\detokenize{appdev/refs/api/krb5_cc_default_name:krb5-cc-default-name-return-the-name-of-the-default-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_default_name::doc}}\index{krb5\_cc\_default\_name (C function)@\spxentry{krb5\_cc\_default\_name}\spxextra{C function}} 1716 1717\begin{fulllineitems} 1718\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_default_name:c.krb5_cc_default_name}}% 1719\pysigstartmultiline 1720\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_default\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}}{}% 1721\pysigstopmultiline 1722\end{fulllineitems} 1723 1724\begin{quote}\begin{description} 1725\item[{param}] \leavevmode 1726\sphinxAtStartPar 1727\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1728 1729\end{description}\end{quote} 1730\begin{quote}\begin{description} 1731\item[{return}] \leavevmode\begin{itemize} 1732\item {} 1733\sphinxAtStartPar 1734Name of default credential cache for the current user. 1735 1736\end{itemize} 1737 1738\end{description}\end{quote} 1739 1740\sphinxAtStartPar 1741Return a pointer to the default credential cache name for \sphinxstyleemphasis{context} , as determined by a prior call to krb5\_cc\_set\_default\_name(), by the KRB5CCNAME environment variable, by the default\_ccache\_name profile variable, or by the operating system or build\sphinxhyphen{}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 krb5\_free\_context() or if a subsequent call to krb5\_cc\_set\_default\_name() is made on \sphinxstyleemphasis{context} . 1742 1743\sphinxAtStartPar 1744The 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 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. 1745 1746 1747\subsubsection{krb5\_cc\_destroy \sphinxhyphen{} Destroy a credential cache.} 1748\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)@\spxentry{krb5\_cc\_destroy}\spxextra{C function}} 1749 1750\begin{fulllineitems} 1751\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_destroy:c.krb5_cc_destroy}}% 1752\pysigstartmultiline 1753\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_destroy}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}}{}% 1754\pysigstopmultiline 1755\end{fulllineitems} 1756 1757\begin{quote}\begin{description} 1758\item[{param}] \leavevmode 1759\sphinxAtStartPar 1760\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1761 1762\sphinxAtStartPar 1763\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 1764 1765\end{description}\end{quote} 1766\begin{quote}\begin{description} 1767\item[{retval}] \leavevmode\begin{itemize} 1768\item {} 1769\sphinxAtStartPar 17700 Success 1771 1772\end{itemize} 1773 1774\item[{return}] \leavevmode\begin{itemize} 1775\item {} 1776\sphinxAtStartPar 1777Permission errors 1778 1779\end{itemize} 1780 1781\end{description}\end{quote} 1782 1783\sphinxAtStartPar 1784This function destroys any existing contents of \sphinxstyleemphasis{cache} and closes the handle to it. 1785 1786 1787\subsubsection{krb5\_cc\_dup \sphinxhyphen{} Duplicate ccache handle.} 1788\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)@\spxentry{krb5\_cc\_dup}\spxextra{C function}} 1789 1790\begin{fulllineitems} 1791\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_dup:c.krb5_cc_dup}}% 1792\pysigstartmultiline 1793\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_dup}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{in}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{out}}{}% 1794\pysigstopmultiline 1795\end{fulllineitems} 1796 1797\begin{quote}\begin{description} 1798\item[{param}] \leavevmode 1799\sphinxAtStartPar 1800\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1801 1802\sphinxAtStartPar 1803\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} \sphinxhyphen{} Credential cache handle to be duplicated 1804 1805\sphinxAtStartPar 1806\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Credential cache handle 1807 1808\end{description}\end{quote} 1809 1810\sphinxAtStartPar 1811Create a new handle referring to the same cache as \sphinxstyleemphasis{in} . The new handle and \sphinxstyleemphasis{in} can be closed independently. 1812 1813 1814\subsubsection{krb5\_cc\_get\_name \sphinxhyphen{} Retrieve the name, but not type of a credential cache.} 1815\label{\detokenize{appdev/refs/api/krb5_cc_get_name:krb5-cc-get-name-retrieve-the-name-but-not-type-of-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_get_name::doc}}\index{krb5\_cc\_get\_name (C function)@\spxentry{krb5\_cc\_get\_name}\spxextra{C function}} 1816 1817\begin{fulllineitems} 1818\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_name:c.krb5_cc_get_name}}% 1819\pysigstartmultiline 1820\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_get\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}}{}% 1821\pysigstopmultiline 1822\end{fulllineitems} 1823 1824\begin{quote}\begin{description} 1825\item[{param}] \leavevmode 1826\sphinxAtStartPar 1827\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1828 1829\sphinxAtStartPar 1830\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 1831 1832\end{description}\end{quote} 1833\begin{quote}\begin{description} 1834\item[{return}] \leavevmode\begin{itemize} 1835\item {} 1836\sphinxAtStartPar 1837On success \sphinxhyphen{} the name of the credential cache. 1838 1839\end{itemize} 1840 1841\end{description}\end{quote} 1842 1843\begin{sphinxadmonition}{warning}{Warning:} 1844\sphinxAtStartPar 1845Returns 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 krb5\_cc\_resolve(). 1846\end{sphinxadmonition} 1847 1848 1849\subsubsection{krb5\_cc\_get\_principal \sphinxhyphen{} Get the default principal of a credential cache.} 1850\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)@\spxentry{krb5\_cc\_get\_principal}\spxextra{C function}} 1851 1852\begin{fulllineitems} 1853\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_principal:c.krb5_cc_get_principal}}% 1854\pysigstartmultiline 1855\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_get\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{principal}}{}% 1856\pysigstopmultiline 1857\end{fulllineitems} 1858 1859\begin{quote}\begin{description} 1860\item[{param}] \leavevmode 1861\sphinxAtStartPar 1862\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1863 1864\sphinxAtStartPar 1865\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 1866 1867\sphinxAtStartPar 1868\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Primary principal 1869 1870\end{description}\end{quote} 1871\begin{quote}\begin{description} 1872\item[{retval}] \leavevmode\begin{itemize} 1873\item {} 1874\sphinxAtStartPar 18750 Success 1876 1877\end{itemize} 1878 1879\item[{return}] \leavevmode\begin{itemize} 1880\item {} 1881\sphinxAtStartPar 1882Kerberos error codes 1883 1884\end{itemize} 1885 1886\end{description}\end{quote} 1887 1888\sphinxAtStartPar 1889Returns the default client principal of a credential cache as set by krb5\_cc\_initialize(). 1890 1891\sphinxAtStartPar 1892Use krb5\_free\_principal() to free \sphinxstyleemphasis{principal} when it is no longer needed. 1893 1894 1895\subsubsection{krb5\_cc\_get\_type \sphinxhyphen{} Retrieve the type of a credential cache.} 1896\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)@\spxentry{krb5\_cc\_get\_type}\spxextra{C function}} 1897 1898\begin{fulllineitems} 1899\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_type:c.krb5_cc_get_type}}% 1900\pysigstartmultiline 1901\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_get\_type}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}}{}% 1902\pysigstopmultiline 1903\end{fulllineitems} 1904 1905\begin{quote}\begin{description} 1906\item[{param}] \leavevmode 1907\sphinxAtStartPar 1908\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1909 1910\sphinxAtStartPar 1911\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 1912 1913\end{description}\end{quote} 1914\begin{quote}\begin{description} 1915\item[{return}] \leavevmode\begin{itemize} 1916\item {} 1917\sphinxAtStartPar 1918The type of a credential cache as an alias that must not be modified or freed by the caller. 1919 1920\end{itemize} 1921 1922\end{description}\end{quote} 1923 1924 1925\subsubsection{krb5\_cc\_initialize \sphinxhyphen{} Initialize a credential cache.} 1926\label{\detokenize{appdev/refs/api/krb5_cc_initialize:krb5-cc-initialize-initialize-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_initialize::doc}}\index{krb5\_cc\_initialize (C function)@\spxentry{krb5\_cc\_initialize}\spxextra{C function}} 1927 1928\begin{fulllineitems} 1929\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_initialize:c.krb5_cc_initialize}}% 1930\pysigstartmultiline 1931\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_initialize}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}}{}% 1932\pysigstopmultiline 1933\end{fulllineitems} 1934 1935\begin{quote}\begin{description} 1936\item[{param}] \leavevmode 1937\sphinxAtStartPar 1938\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1939 1940\sphinxAtStartPar 1941\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 1942 1943\sphinxAtStartPar 1944\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Default principal name 1945 1946\end{description}\end{quote} 1947\begin{quote}\begin{description} 1948\item[{retval}] \leavevmode\begin{itemize} 1949\item {} 1950\sphinxAtStartPar 19510 Success 1952 1953\end{itemize} 1954 1955\item[{return}] \leavevmode\begin{itemize} 1956\item {} 1957\sphinxAtStartPar 1958System errors; Permission errors; Kerberos error codes 1959 1960\end{itemize} 1961 1962\end{description}\end{quote} 1963 1964\sphinxAtStartPar 1965Destroy any existing contents of \sphinxstyleemphasis{cache} and initialize it for the default principal \sphinxstyleemphasis{principal} . 1966 1967 1968\subsubsection{krb5\_cc\_new\_unique \sphinxhyphen{} Create a new credential cache of the specified type with a unique name.} 1969\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)@\spxentry{krb5\_cc\_new\_unique}\spxextra{C function}} 1970 1971\begin{fulllineitems} 1972\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_new_unique:c.krb5_cc_new_unique}}% 1973\pysigstartmultiline 1974\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_new\_unique}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{type}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{hint}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{id}}{}% 1975\pysigstopmultiline 1976\end{fulllineitems} 1977 1978\begin{quote}\begin{description} 1979\item[{param}] \leavevmode 1980\sphinxAtStartPar 1981\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 1982 1983\sphinxAtStartPar 1984\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Credential cache type name 1985 1986\sphinxAtStartPar 1987\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hint} \sphinxhyphen{} Unused 1988 1989\sphinxAtStartPar 1990\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{id} \sphinxhyphen{} Credential cache handle 1991 1992\end{description}\end{quote} 1993\begin{quote}\begin{description} 1994\item[{retval}] \leavevmode\begin{itemize} 1995\item {} 1996\sphinxAtStartPar 19970 Success 1998 1999\end{itemize} 2000 2001\item[{return}] \leavevmode\begin{itemize} 2002\item {} 2003\sphinxAtStartPar 2004Kerberos error codes 2005 2006\end{itemize} 2007 2008\end{description}\end{quote} 2009 2010 2011\subsubsection{krb5\_cc\_resolve \sphinxhyphen{} Resolve a credential cache name.} 2012\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)@\spxentry{krb5\_cc\_resolve}\spxextra{C function}} 2013 2014\begin{fulllineitems} 2015\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_resolve:c.krb5_cc_resolve}}% 2016\pysigstartmultiline 2017\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_resolve}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cache}}{}% 2018\pysigstopmultiline 2019\end{fulllineitems} 2020 2021\begin{quote}\begin{description} 2022\item[{param}] \leavevmode 2023\sphinxAtStartPar 2024\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2025 2026\sphinxAtStartPar 2027\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} Credential cache name to be resolved 2028 2029\sphinxAtStartPar 2030\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 2031 2032\end{description}\end{quote} 2033\begin{quote}\begin{description} 2034\item[{retval}] \leavevmode\begin{itemize} 2035\item {} 2036\sphinxAtStartPar 20370 Success 2038 2039\end{itemize} 2040 2041\item[{return}] \leavevmode\begin{itemize} 2042\item {} 2043\sphinxAtStartPar 2044Kerberos error codes 2045 2046\end{itemize} 2047 2048\end{description}\end{quote} 2049 2050\sphinxAtStartPar 2051Fills 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. 2052 2053 2054\subsubsection{krb5\_change\_password \sphinxhyphen{} Change a password for an existing Kerberos account.} 2055\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)@\spxentry{krb5\_change\_password}\spxextra{C function}} 2056 2057\begin{fulllineitems} 2058\phantomsection\label{\detokenize{appdev/refs/api/krb5_change_password:c.krb5_change_password}}% 2059\pysigstartmultiline 2060\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_change\_password}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{newpw}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_code\_string}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_string}}{}% 2061\pysigstopmultiline 2062\end{fulllineitems} 2063 2064\begin{quote}\begin{description} 2065\item[{param}] \leavevmode 2066\sphinxAtStartPar 2067\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2068 2069\sphinxAtStartPar 2070\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Credentials for kadmin/changepw service 2071 2072\sphinxAtStartPar 2073\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{newpw} \sphinxhyphen{} New password 2074 2075\sphinxAtStartPar 2076\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code} \sphinxhyphen{} Numeric error code from server 2077 2078\sphinxAtStartPar 2079\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code\_string} \sphinxhyphen{} String equivalent to \sphinxstyleemphasis{result\_code} 2080 2081\sphinxAtStartPar 2082\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_string} \sphinxhyphen{} Change password response from the KDC 2083 2084\end{description}\end{quote} 2085\begin{quote}\begin{description} 2086\item[{retval}] \leavevmode\begin{itemize} 2087\item {} 2088\sphinxAtStartPar 20890 Success; otherwise \sphinxhyphen{} Kerberos error codes 2090 2091\end{itemize} 2092 2093\end{description}\end{quote} 2094 2095\sphinxAtStartPar 2096Change the password for the existing principal identified by \sphinxstyleemphasis{creds} . 2097 2098\sphinxAtStartPar 2099The possible values of the output \sphinxstyleemphasis{result\_code} are: 2100\begin{itemize} 2101\item {} 2102\sphinxAtStartPar 2103\#KRB5\_KPASSWD\_SUCCESS (0) \sphinxhyphen{} success 2104 2105\item {} 2106\sphinxAtStartPar 2107\#KRB5\_KPASSWD\_MALFORMED (1) \sphinxhyphen{} Malformed request error 2108 2109\item {} 2110\sphinxAtStartPar 2111\#KRB5\_KPASSWD\_HARDERROR (2) \sphinxhyphen{} Server error 2112 2113\item {} 2114\sphinxAtStartPar 2115\#KRB5\_KPASSWD\_AUTHERROR (3) \sphinxhyphen{} Authentication error 2116 2117\item {} 2118\sphinxAtStartPar 2119\#KRB5\_KPASSWD\_SOFTERROR (4) \sphinxhyphen{} Password change rejected 2120 2121\end{itemize} 2122 2123 2124\subsubsection{krb5\_chpw\_message \sphinxhyphen{} Get a result message for changing or setting a password.} 2125\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)@\spxentry{krb5\_chpw\_message}\spxextra{C function}} 2126 2127\begin{fulllineitems} 2128\phantomsection\label{\detokenize{appdev/refs/api/krb5_chpw_message:c.krb5_chpw_message}}% 2129\pysigstartmultiline 2130\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_chpw\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server\_string}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{message\_out}}{}% 2131\pysigstopmultiline 2132\end{fulllineitems} 2133 2134\begin{quote}\begin{description} 2135\item[{param}] \leavevmode 2136\sphinxAtStartPar 2137\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2138 2139\sphinxAtStartPar 2140\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server\_string} \sphinxhyphen{} Data returned from the remote system 2141 2142\sphinxAtStartPar 2143\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{message\_out} \sphinxhyphen{} A message displayable to the user 2144 2145\end{description}\end{quote} 2146\begin{quote}\begin{description} 2147\item[{retval}] \leavevmode\begin{itemize} 2148\item {} 2149\sphinxAtStartPar 21500 Success 2151 2152\end{itemize} 2153 2154\item[{return}] \leavevmode\begin{itemize} 2155\item {} 2156\sphinxAtStartPar 2157Kerberos error codes 2158 2159\end{itemize} 2160 2161\end{description}\end{quote} 2162 2163\sphinxAtStartPar 2164This function processes the \sphinxstyleemphasis{server\_string} returned in the \sphinxstyleemphasis{result\_string} parameter of krb5\_change\_password(), 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\sphinxhyphen{}readable text. 2165 2166\sphinxAtStartPar 2167Use krb5\_free\_string() to free \sphinxstyleemphasis{message\_out} when it is no longer needed. 2168 2169\begin{sphinxadmonition}{note}{Note:} 2170\sphinxAtStartPar 2171New in 1.11 2172\end{sphinxadmonition} 2173 2174 2175\subsubsection{krb5\_expand\_hostname \sphinxhyphen{} Canonicalize a hostname, possibly using name service.} 2176\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)@\spxentry{krb5\_expand\_hostname}\spxextra{C function}} 2177 2178\begin{fulllineitems} 2179\phantomsection\label{\detokenize{appdev/refs/api/krb5_expand_hostname:c.krb5_expand_hostname}}% 2180\pysigstartmultiline 2181\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_expand\_hostname}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{host}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{canonhost\_out}}{}% 2182\pysigstopmultiline 2183\end{fulllineitems} 2184 2185\begin{quote}\begin{description} 2186\item[{param}] \leavevmode 2187\sphinxAtStartPar 2188\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2189 2190\sphinxAtStartPar 2191\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{host} \sphinxhyphen{} Input hostname 2192 2193\sphinxAtStartPar 2194\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{canonhost\_out} \sphinxhyphen{} Canonicalized hostname 2195 2196\end{description}\end{quote} 2197 2198\sphinxAtStartPar 2199This function canonicalizes orig\_hostname, possibly using name service lookups if configuration permits. Use krb5\_free\_string() to free \sphinxstyleemphasis{canonhost\_out} when it is no longer needed. 2200 2201\begin{sphinxadmonition}{note}{Note:} 2202\sphinxAtStartPar 2203New in 1.15 2204\end{sphinxadmonition} 2205 2206 2207\subsubsection{krb5\_free\_context \sphinxhyphen{} Free a krb5 library context.} 2208\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)@\spxentry{krb5\_free\_context}\spxextra{C function}} 2209 2210\begin{fulllineitems} 2211\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_context:c.krb5_free_context}}% 2212\pysigstartmultiline 2213\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_context}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}}{}% 2214\pysigstopmultiline 2215\end{fulllineitems} 2216 2217\begin{quote}\begin{description} 2218\item[{param}] \leavevmode 2219\sphinxAtStartPar 2220\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2221 2222\end{description}\end{quote} 2223 2224\sphinxAtStartPar 2225This function frees a \sphinxstyleemphasis{context} that was created by krb5\_init\_context() or krb5\_init\_secure\_context(). 2226 2227 2228\subsubsection{krb5\_free\_error\_message \sphinxhyphen{} Free an error message generated by krb5\_get\_error\_message().} 2229\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)@\spxentry{krb5\_free\_error\_message}\spxextra{C function}} 2230 2231\begin{fulllineitems} 2232\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_error_message:c.krb5_free_error_message}}% 2233\pysigstartmultiline 2234\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{msg}}{}% 2235\pysigstopmultiline 2236\end{fulllineitems} 2237 2238\begin{quote}\begin{description} 2239\item[{param}] \leavevmode 2240\sphinxAtStartPar 2241\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 2242 2243\sphinxAtStartPar 2244\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{msg} \sphinxhyphen{} Pointer to error message 2245 2246\end{description}\end{quote} 2247 2248 2249\subsubsection{krb5\_free\_principal \sphinxhyphen{} Free the storage assigned to a principal.} 2250\label{\detokenize{appdev/refs/api/krb5_free_principal:krb5-free-principal-free-the-storage-assigned-to-a-principal}}\label{\detokenize{appdev/refs/api/krb5_free_principal::doc}}\index{krb5\_free\_principal (C function)@\spxentry{krb5\_free\_principal}\spxextra{C function}} 2251 2252\begin{fulllineitems} 2253\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_principal:c.krb5_free_principal}}% 2254\pysigstartmultiline 2255\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{val}}{}% 2256\pysigstopmultiline 2257\end{fulllineitems} 2258 2259\begin{quote}\begin{description} 2260\item[{param}] \leavevmode 2261\sphinxAtStartPar 2262\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2263 2264\sphinxAtStartPar 2265\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Principal to be freed 2266 2267\end{description}\end{quote} 2268 2269 2270\subsubsection{krb5\_fwd\_tgt\_creds \sphinxhyphen{} Get a forwarded TGT and format a KRB\sphinxhyphen{}CRED message.} 2271\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)@\spxentry{krb5\_fwd\_tgt\_creds}\spxextra{C function}} 2272 2273\begin{fulllineitems} 2274\phantomsection\label{\detokenize{appdev/refs/api/krb5_fwd_tgt_creds:c.krb5_fwd_tgt_creds}}% 2275\pysigstartmultiline 2276\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_fwd\_tgt\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rhost}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cc}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{forwardable}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outbuf}}{}% 2277\pysigstopmultiline 2278\end{fulllineitems} 2279 2280\begin{quote}\begin{description} 2281\item[{param}] \leavevmode 2282\sphinxAtStartPar 2283\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2284 2285\sphinxAtStartPar 2286\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 2287 2288\sphinxAtStartPar 2289\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rhost} \sphinxhyphen{} Remote host 2290 2291\sphinxAtStartPar 2292\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal of TGT 2293 2294\sphinxAtStartPar 2295\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Principal of server to receive TGT 2296 2297\sphinxAtStartPar 2298\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cc} \sphinxhyphen{} Credential cache handle (NULL to use default) 2299 2300\sphinxAtStartPar 2301\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{forwardable} \sphinxhyphen{} Whether TGT should be forwardable 2302 2303\sphinxAtStartPar 2304\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} \sphinxhyphen{} KRB\sphinxhyphen{}CRED message 2305 2306\end{description}\end{quote} 2307\begin{quote}\begin{description} 2308\item[{retval}] \leavevmode\begin{itemize} 2309\item {} 2310\sphinxAtStartPar 23110 Success 2312 2313\item {} 2314\sphinxAtStartPar 2315ENOMEM Insufficient memory 2316 2317\item {} 2318\sphinxAtStartPar 2319KRB5\_PRINC\_NOMATCH Requested principal and ticket do not match 2320 2321\item {} 2322\sphinxAtStartPar 2323KRB5\_NO\_TKT\_SUPPLIED Request did not supply a ticket 2324 2325\item {} 2326\sphinxAtStartPar 2327KRB5\_CC\_BADNAME Credential cache name or principal name malformed 2328 2329\end{itemize} 2330 2331\item[{return}] \leavevmode\begin{itemize} 2332\item {} 2333\sphinxAtStartPar 2334Kerberos error codes 2335 2336\end{itemize} 2337 2338\end{description}\end{quote} 2339 2340\sphinxAtStartPar 2341Get a TGT for use at the remote host \sphinxstyleemphasis{rhost} and format it into a KRB\sphinxhyphen{}CRED message. If \sphinxstyleemphasis{rhost} is NULL and \sphinxstyleemphasis{server} is of type \#KRB5\_NT\_SRV\_HST, the second component of \sphinxstyleemphasis{server} will be used. 2342 2343 2344\subsubsection{krb5\_get\_default\_realm \sphinxhyphen{} Retrieve the default realm.} 2345\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)@\spxentry{krb5\_get\_default\_realm}\spxextra{C function}} 2346 2347\begin{fulllineitems} 2348\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_default_realm:c.krb5_get_default_realm}}% 2349\pysigstartmultiline 2350\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_default\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{lrealm}}{}% 2351\pysigstopmultiline 2352\end{fulllineitems} 2353 2354\begin{quote}\begin{description} 2355\item[{param}] \leavevmode 2356\sphinxAtStartPar 2357\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2358 2359\sphinxAtStartPar 2360\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{lrealm} \sphinxhyphen{} Default realm name 2361 2362\end{description}\end{quote} 2363\begin{quote}\begin{description} 2364\item[{retval}] \leavevmode\begin{itemize} 2365\item {} 2366\sphinxAtStartPar 23670 Success 2368 2369\end{itemize} 2370 2371\item[{return}] \leavevmode\begin{itemize} 2372\item {} 2373\sphinxAtStartPar 2374Kerberos error codes 2375 2376\end{itemize} 2377 2378\end{description}\end{quote} 2379 2380\sphinxAtStartPar 2381Retrieves the default realm to be used if no user\sphinxhyphen{}specified realm is available. 2382 2383\sphinxAtStartPar 2384Use krb5\_free\_default\_realm() to free \sphinxstyleemphasis{lrealm} when it is no longer needed. 2385 2386 2387\subsubsection{krb5\_get\_error\_message \sphinxhyphen{} Get the (possibly extended) error message for a code.} 2388\label{\detokenize{appdev/refs/api/krb5_get_error_message:krb5-get-error-message-get-the-possibly-extended-error-message-for-a-code}}\label{\detokenize{appdev/refs/api/krb5_get_error_message::doc}}\index{krb5\_get\_error\_message (C function)@\spxentry{krb5\_get\_error\_message}\spxextra{C function}} 2389 2390\begin{fulllineitems} 2391\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_error_message:c.krb5_get_error_message}}% 2392\pysigstartmultiline 2393\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}}{}% 2394\pysigstopmultiline 2395\end{fulllineitems} 2396 2397\begin{quote}\begin{description} 2398\item[{param}] \leavevmode 2399\sphinxAtStartPar 2400\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 2401 2402\sphinxAtStartPar 2403\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 2404 2405\end{description}\end{quote} 2406 2407\sphinxAtStartPar 2408The behavior of 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. 2409 2410\sphinxAtStartPar 2411This function never returns NULL, so its result may be used unconditionally as a C string. 2412 2413\sphinxAtStartPar 2414The string returned by this function must be freed using krb5\_free\_error\_message() 2415 2416\begin{sphinxadmonition}{note}{Note:} 2417\sphinxAtStartPar 2418Future versions may return the same string for the second and following calls. 2419\end{sphinxadmonition} 2420 2421 2422\subsubsection{krb5\_get\_host\_realm \sphinxhyphen{} Get the Kerberos realm names for a host.} 2423\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)@\spxentry{krb5\_get\_host\_realm}\spxextra{C function}} 2424 2425\begin{fulllineitems} 2426\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_host_realm:c.krb5_get_host_realm}}% 2427\pysigstartmultiline 2428\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_host\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{host}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{realmsp}}{}% 2429\pysigstopmultiline 2430\end{fulllineitems} 2431 2432\begin{quote}\begin{description} 2433\item[{param}] \leavevmode 2434\sphinxAtStartPar 2435\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2436 2437\sphinxAtStartPar 2438\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{host} \sphinxhyphen{} Host name (or NULL) 2439 2440\sphinxAtStartPar 2441\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realmsp} \sphinxhyphen{} Null\sphinxhyphen{}terminated list of realm names 2442 2443\end{description}\end{quote} 2444\begin{quote}\begin{description} 2445\item[{retval}] \leavevmode\begin{itemize} 2446\item {} 2447\sphinxAtStartPar 24480 Success 2449 2450\item {} 2451\sphinxAtStartPar 2452ENOMEM Insufficient memory 2453 2454\end{itemize} 2455 2456\item[{return}] \leavevmode\begin{itemize} 2457\item {} 2458\sphinxAtStartPar 2459Kerberos error codes 2460 2461\end{itemize} 2462 2463\end{description}\end{quote} 2464 2465\sphinxAtStartPar 2466Fill in \sphinxstyleemphasis{realmsp} with a pointer to a null\sphinxhyphen{}terminated list of realm names. If there are no known realms for the host, a list containing the referral (empty) realm is returned. 2467 2468\sphinxAtStartPar 2469If \sphinxstyleemphasis{host} is NULL, the local host’s realms are determined. 2470 2471\sphinxAtStartPar 2472Use krb5\_free\_host\_realm() to release \sphinxstyleemphasis{realmsp} when it is no longer needed. 2473 2474 2475\subsubsection{krb5\_get\_credentials \sphinxhyphen{} Get an additional ticket.} 2476\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)@\spxentry{krb5\_get\_credentials}\spxextra{C function}} 2477 2478\begin{fulllineitems} 2479\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_credentials:c.krb5_get_credentials}}% 2480\pysigstartmultiline 2481\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_credentials}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out\_creds}}{}% 2482\pysigstopmultiline 2483\end{fulllineitems} 2484 2485\begin{quote}\begin{description} 2486\item[{param}] \leavevmode 2487\sphinxAtStartPar 2488\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2489 2490\sphinxAtStartPar 2491\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} \sphinxhyphen{} Options 2492 2493\sphinxAtStartPar 2494\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache handle 2495 2496\sphinxAtStartPar 2497\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} \sphinxhyphen{} Input credentials 2498 2499\sphinxAtStartPar 2500\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out\_creds} \sphinxhyphen{} Output updated credentials 2501 2502\end{description}\end{quote} 2503\begin{quote}\begin{description} 2504\item[{retval}] \leavevmode\begin{itemize} 2505\item {} 2506\sphinxAtStartPar 25070 Success 2508 2509\end{itemize} 2510 2511\item[{return}] \leavevmode\begin{itemize} 2512\item {} 2513\sphinxAtStartPar 2514Kerberos error codes 2515 2516\end{itemize} 2517 2518\end{description}\end{quote} 2519 2520\sphinxAtStartPar 2521Use \sphinxstyleemphasis{ccache} or a TGS exchange to get a service ticket matching \sphinxstyleemphasis{in\_creds} . 2522 2523\sphinxAtStartPar 2524Valid values for \sphinxstyleemphasis{options} are: 2525\begin{quote} 2526\begin{itemize} 2527\item {} 2528\sphinxAtStartPar 2529\#KRB5\_GC\_CACHED Search only credential cache for the ticket 2530 2531\item {} 2532\sphinxAtStartPar 2533\#KRB5\_GC\_USER\_USER Return a user to user authentication ticket 2534 2535\end{itemize} 2536 2537\sphinxAtStartPar 2538\sphinxstyleemphasis{in\_creds} must be non\sphinxhyphen{}null. \sphinxstyleemphasis{in\_creds\sphinxhyphen{}\textgreater{}client} and \sphinxstyleemphasis{in\_creds\sphinxhyphen{}\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\sphinxhyphen{}\textgreater{}authdata} ; otherwise set \sphinxstyleemphasis{in\_creds\sphinxhyphen{}\textgreater{}authdata} to NULL. The session key type is specified in \sphinxstyleemphasis{in\_creds\sphinxhyphen{}\textgreater{}keyblock.enctype} , if it is nonzero. 2539\end{quote} 2540 2541\sphinxAtStartPar 2542The expiration date is specified in \sphinxstyleemphasis{in\_creds\sphinxhyphen{}\textgreater{}times.endtime} . The KDC may return tickets with an earlier expiration date. If \sphinxstyleemphasis{in\_creds\sphinxhyphen{}\textgreater{}times.endtime} is set to 0, the latest possible expiration date will be requested. 2543 2544\sphinxAtStartPar 2545Any returned ticket and intermediate ticket\sphinxhyphen{}granting tickets are stored in \sphinxstyleemphasis{ccache} . 2546 2547\sphinxAtStartPar 2548Use krb5\_free\_creds() to free \sphinxstyleemphasis{out\_creds} when it is no longer needed. 2549 2550 2551\subsubsection{krb5\_get\_fallback\_host\_realm} 2552\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)@\spxentry{krb5\_get\_fallback\_host\_realm}\spxextra{C function}} 2553 2554\begin{fulllineitems} 2555\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_fallback_host_realm:c.krb5_get_fallback_host_realm}}% 2556\pysigstartmultiline 2557\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_fallback\_host\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{hdata}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{realmsp}}{}% 2558\pysigstopmultiline 2559\end{fulllineitems} 2560 2561\begin{quote}\begin{description} 2562\item[{param}] \leavevmode 2563\sphinxAtStartPar 2564\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2565 2566\sphinxAtStartPar 2567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hdata} \sphinxhyphen{} Host name (or NULL) 2568 2569\sphinxAtStartPar 2570\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realmsp} \sphinxhyphen{} Null\sphinxhyphen{}terminated list of realm names 2571 2572\end{description}\end{quote} 2573 2574\sphinxAtStartPar 2575Fill in \sphinxstyleemphasis{realmsp} with a pointer to a null\sphinxhyphen{}terminated list of realm names obtained through heuristics or insecure resolution methods which have lower priority than KDC referrals. 2576 2577\sphinxAtStartPar 2578If \sphinxstyleemphasis{host} is NULL, the local host’s realms are determined. 2579 2580\sphinxAtStartPar 2581Use krb5\_free\_host\_realm() to release \sphinxstyleemphasis{realmsp} when it is no longer needed. 2582 2583 2584\subsubsection{krb5\_get\_init\_creds\_keytab \sphinxhyphen{} Get initial credentials using a key table.} 2585\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)@\spxentry{krb5\_get\_init\_creds\_keytab}\spxextra{C function}} 2586 2587\begin{fulllineitems} 2588\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_keytab:c.krb5_get_init_creds_keytab}}% 2589\pysigstartmultiline 2590\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_keytab}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{arg\_keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{n}{start\_time}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_tkt\_service}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k5\_gic\_options}}{}% 2591\pysigstopmultiline 2592\end{fulllineitems} 2593 2594\begin{quote}\begin{description} 2595\item[{param}] \leavevmode 2596\sphinxAtStartPar 2597\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2598 2599\sphinxAtStartPar 2600\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} New credentials 2601 2602\sphinxAtStartPar 2603\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal 2604 2605\sphinxAtStartPar 2606\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{arg\_keytab} \sphinxhyphen{} Key table handle 2607 2608\sphinxAtStartPar 2609\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{start\_time} \sphinxhyphen{} Time when ticket becomes valid (0 for now) 2610 2611\sphinxAtStartPar 2612\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} \sphinxhyphen{} Service name of initial credentials (or NULL) 2613 2614\sphinxAtStartPar 2615\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_gic\_options} \sphinxhyphen{} Initial credential options 2616 2617\end{description}\end{quote} 2618\begin{quote}\begin{description} 2619\item[{retval}] \leavevmode\begin{itemize} 2620\item {} 2621\sphinxAtStartPar 26220 Success 2623 2624\end{itemize} 2625 2626\item[{return}] \leavevmode\begin{itemize} 2627\item {} 2628\sphinxAtStartPar 2629Kerberos error codes 2630 2631\end{itemize} 2632 2633\end{description}\end{quote} 2634 2635\sphinxAtStartPar 2636This 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\sphinxhyphen{}granting service is used. 2637 2638 2639\subsubsection{krb5\_get\_init\_creds\_opt\_alloc \sphinxhyphen{} Allocate a new initial credential options structure.} 2640\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)@\spxentry{krb5\_get\_init\_creds\_opt\_alloc}\spxextra{C function}} 2641 2642\begin{fulllineitems} 2643\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_alloc:c.krb5_get_init_creds_opt_alloc}}% 2644\pysigstartmultiline 2645\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_alloc}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{opt}}{}% 2646\pysigstopmultiline 2647\end{fulllineitems} 2648 2649\begin{quote}\begin{description} 2650\item[{param}] \leavevmode 2651\sphinxAtStartPar 2652\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2653 2654\sphinxAtStartPar 2655\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{opt} \sphinxhyphen{} New options structure 2656 2657\end{description}\end{quote} 2658\begin{quote}\begin{description} 2659\item[{retval}] \leavevmode\begin{itemize} 2660\item {} 2661\sphinxAtStartPar 26620 \sphinxhyphen{} Success; Kerberos errors otherwise. 2663 2664\end{itemize} 2665 2666\end{description}\end{quote} 2667 2668\sphinxAtStartPar 2669This function is the preferred way to create an options structure for getting initial credentials, and is required to make use of certain options. Use krb5\_get\_init\_creds\_opt\_free() to free \sphinxstyleemphasis{opt} when it is no longer needed. 2670 2671 2672\subsubsection{krb5\_get\_init\_creds\_opt\_free \sphinxhyphen{} Free initial credential options.} 2673\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free:krb5-get-init-creds-opt-free-free-initial-credential-options}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free::doc}}\index{krb5\_get\_init\_creds\_opt\_free (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_free}\spxextra{C function}} 2674 2675\begin{fulllineitems} 2676\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_free:c.krb5_get_init_creds_opt_free}}% 2677\pysigstartmultiline 2678\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}}{}% 2679\pysigstopmultiline 2680\end{fulllineitems} 2681 2682\begin{quote}\begin{description} 2683\item[{param}] \leavevmode 2684\sphinxAtStartPar 2685\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2686 2687\sphinxAtStartPar 2688\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure to free 2689 2690\end{description}\end{quote} 2691 2692 2693\sphinxstrong{See also:} 2694\nopagebreak 2695 2696 2697\sphinxAtStartPar 2698krb5\_get\_init\_creds\_opt\_alloc() 2699 2700 2701 2702 2703\subsubsection{krb5\_get\_init\_creds\_opt\_get\_fast\_flags \sphinxhyphen{} Retrieve FAST flags from initial credential options.} 2704\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags::doc}}\index{krb5\_get\_init\_creds\_opt\_get\_fast\_flags (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_get\_fast\_flags}\spxextra{C function}} 2705 2706\begin{fulllineitems} 2707\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_get_fast_flags:c.krb5_get_init_creds_opt_get_fast_flags}}% 2708\pysigstartmultiline 2709\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_get\_fast\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{out\_flags}}{}% 2710\pysigstopmultiline 2711\end{fulllineitems} 2712 2713\begin{quote}\begin{description} 2714\item[{param}] \leavevmode 2715\sphinxAtStartPar 2716\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2717 2718\sphinxAtStartPar 2719\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options 2720 2721\sphinxAtStartPar 2722\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out\_flags} \sphinxhyphen{} FAST flags 2723 2724\end{description}\end{quote} 2725\begin{quote}\begin{description} 2726\item[{retval}] \leavevmode\begin{itemize} 2727\item {} 2728\sphinxAtStartPar 27290 \sphinxhyphen{} Success; Kerberos errors otherwise. 2730 2731\end{itemize} 2732 2733\end{description}\end{quote} 2734 2735 2736\subsubsection{krb5\_get\_init\_creds\_opt\_set\_address\_list \sphinxhyphen{} Set address restrictions in initial credential options.} 2737\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_address\_list}\spxextra{C function}} 2738 2739\begin{fulllineitems} 2740\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_address_list:c.krb5_get_init_creds_opt_set_address_list}}% 2741\pysigstartmultiline 2742\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{addresses}}{}% 2743\pysigstopmultiline 2744\end{fulllineitems} 2745 2746\begin{quote}\begin{description} 2747\item[{param}] \leavevmode 2748\sphinxAtStartPar 2749\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 2750 2751\sphinxAtStartPar 2752\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addresses} \sphinxhyphen{} Null\sphinxhyphen{}terminated array of addresses 2753 2754\end{description}\end{quote} 2755 2756 2757\subsubsection{krb5\_get\_init\_creds\_opt\_set\_anonymous \sphinxhyphen{} Set or unset the anonymous flag in initial credential options.} 2758\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_anonymous}\spxextra{C function}} 2759 2760\begin{fulllineitems} 2761\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_anonymous:c.krb5_get_init_creds_opt_set_anonymous}}% 2762\pysigstartmultiline 2763\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_anonymous}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{anonymous}}{}% 2764\pysigstopmultiline 2765\end{fulllineitems} 2766 2767\begin{quote}\begin{description} 2768\item[{param}] \leavevmode 2769\sphinxAtStartPar 2770\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 2771 2772\sphinxAtStartPar 2773\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{anonymous} \sphinxhyphen{} Whether to make an anonymous request 2774 2775\end{description}\end{quote} 2776 2777\sphinxAtStartPar 2778This function may be used to request anonymous credentials from the KDC by setting \sphinxstyleemphasis{anonymous} to non\sphinxhyphen{}zero. Note that anonymous credentials are only a request; clients must verify that credentials are anonymous if that is a requirement. 2779 2780 2781\subsubsection{krb5\_get\_init\_creds\_opt\_set\_canonicalize \sphinxhyphen{} Set or unset the canonicalize flag in initial credential options.} 2782\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_canonicalize}\spxextra{C function}} 2783 2784\begin{fulllineitems} 2785\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_canonicalize:c.krb5_get_init_creds_opt_set_canonicalize}}% 2786\pysigstartmultiline 2787\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_canonicalize}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{canonicalize}}{}% 2788\pysigstopmultiline 2789\end{fulllineitems} 2790 2791\begin{quote}\begin{description} 2792\item[{param}] \leavevmode 2793\sphinxAtStartPar 2794\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 2795 2796\sphinxAtStartPar 2797\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{canonicalize} \sphinxhyphen{} Whether to canonicalize client principal 2798 2799\end{description}\end{quote} 2800 2801 2802\subsubsection{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt \sphinxhyphen{} Set or unset change\sphinxhyphen{}password\sphinxhyphen{}prompt flag in initial credential options.} 2803\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_change_password_prompt::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_change\_password\_prompt}\spxextra{C function}} 2804 2805\begin{fulllineitems} 2806\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}}% 2807\pysigstartmultiline 2808\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{prompt}}{}% 2809\pysigstopmultiline 2810\end{fulllineitems} 2811 2812\begin{quote}\begin{description} 2813\item[{param}] \leavevmode 2814\sphinxAtStartPar 2815\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 2816 2817\sphinxAtStartPar 2818\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompt} \sphinxhyphen{} Whether to prompt to change password 2819 2820\end{description}\end{quote} 2821 2822\sphinxAtStartPar 2823This flag is on by default. It controls whether krb5\_get\_init\_creds\_password() will react to an expired\sphinxhyphen{}password error by prompting for a new password and attempting to change the old one. 2824 2825 2826\subsubsection{krb5\_get\_init\_creds\_opt\_set\_etype\_list \sphinxhyphen{} Set allowable encryption types in initial credential options.} 2827\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_etype\_list}\spxextra{C function}} 2828 2829\begin{fulllineitems} 2830\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_etype_list:c.krb5_get_init_creds_opt_set_etype_list}}% 2831\pysigstartmultiline 2832\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{etype\_list}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{etype\_list\_length}}{}% 2833\pysigstopmultiline 2834\end{fulllineitems} 2835 2836\begin{quote}\begin{description} 2837\item[{param}] \leavevmode 2838\sphinxAtStartPar 2839\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 2840 2841\sphinxAtStartPar 2842\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{etype\_list} \sphinxhyphen{} Array of encryption types 2843 2844\sphinxAtStartPar 2845\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{etype\_list\_length} \sphinxhyphen{} Length of \sphinxstyleemphasis{etype\_list} 2846 2847\end{description}\end{quote} 2848 2849 2850\subsubsection{krb5\_get\_init\_creds\_opt\_set\_expire\_callback \sphinxhyphen{} Set an expiration callback in initial credential options.} 2851\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_expire\_callback (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_expire\_callback}\spxextra{C function}} 2852 2853\begin{fulllineitems} 2854\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_expire_callback:c.krb5_get_init_creds_opt_set_expire_callback}}% 2855\pysigstartmultiline 2856\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_expire\_callback}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_expire_callback_func:c.krb5_expire_callback_func}]{\sphinxcrossref{\DUrole{n}{krb5\_expire\_callback\_func}}}}\DUrole{w}{ }\DUrole{n}{cb}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 2857\pysigstopmultiline 2858\end{fulllineitems} 2859 2860\begin{quote}\begin{description} 2861\item[{param}] \leavevmode 2862\sphinxAtStartPar 2863\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2864 2865\sphinxAtStartPar 2866\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 2867 2868\sphinxAtStartPar 2869\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cb} \sphinxhyphen{} Callback function 2870 2871\sphinxAtStartPar 2872\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Callback argument 2873 2874\end{description}\end{quote} 2875 2876\sphinxAtStartPar 2877Set a callback to receive password and account expiration times. 2878\begin{quote} 2879 2880\sphinxAtStartPar 2881\sphinxstyleemphasis{cb} will be invoked if and only if credentials are successfully acquired. The callback will receive the \sphinxstyleemphasis{context} from the calling function and the \sphinxstyleemphasis{data} argument supplied with this API. The remaining arguments should be interpreted as follows: 2882\end{quote} 2883 2884\sphinxAtStartPar 2885If \sphinxstyleemphasis{is\_last\_req} is true, then the KDC reply contained last\sphinxhyphen{}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\sphinxhyphen{}zero \sphinxstyleemphasis{password\_expiration} should be taken as a suggestion from the KDC that a warning be displayed. 2886 2887\sphinxAtStartPar 2888If \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. 2889 2890\sphinxAtStartPar 2891Note 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. 2892 2893\begin{sphinxadmonition}{warning}{Warning:} 2894\sphinxAtStartPar 2895Setting an expire callback with this API will cause krb5\_get\_init\_creds\_password() not to send password expiry warnings to the prompter, as it ordinarily may. 2896\end{sphinxadmonition} 2897 2898\begin{sphinxadmonition}{note}{Note:} 2899\sphinxAtStartPar 2900New in 1.9 2901\end{sphinxadmonition} 2902 2903 2904\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache \sphinxhyphen{} Set FAST armor cache in initial credential options.} 2905\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache}\spxextra{C function}} 2906 2907\begin{fulllineitems} 2908\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_ccache:c.krb5_get_init_creds_opt_set_fast_ccache}}% 2909\pysigstartmultiline 2910\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}}{}% 2911\pysigstopmultiline 2912\end{fulllineitems} 2913 2914\begin{quote}\begin{description} 2915\item[{param}] \leavevmode 2916\sphinxAtStartPar 2917\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2918 2919\sphinxAtStartPar 2920\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options 2921 2922\sphinxAtStartPar 2923\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache handle 2924 2925\end{description}\end{quote} 2926 2927\sphinxAtStartPar 2928This function is similar to krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name(), but uses a credential cache handle instead of a name. 2929 2930\begin{sphinxadmonition}{note}{Note:} 2931\sphinxAtStartPar 2932New in 1.9 2933\end{sphinxadmonition} 2934 2935 2936\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name \sphinxhyphen{} Set location of FAST armor ccache in initial credential options.} 2937\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name}\spxextra{C function}} 2938 2939\begin{fulllineitems} 2940\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}}% 2941\pysigstartmultiline 2942\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fast\_ccache\_name}}{}% 2943\pysigstopmultiline 2944\end{fulllineitems} 2945 2946\begin{quote}\begin{description} 2947\item[{param}] \leavevmode 2948\sphinxAtStartPar 2949\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2950 2951\sphinxAtStartPar 2952\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options 2953 2954\sphinxAtStartPar 2955\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fast\_ccache\_name} \sphinxhyphen{} Credential cache name 2956 2957\end{description}\end{quote} 2958 2959\sphinxAtStartPar 2960Sets the location of a credential cache containing an armor ticket to protect an initial credential exchange using the FAST protocol extension. 2961 2962\sphinxAtStartPar 2963In 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; krb5\_get\_init\_creds\_opt\_set\_fast\_flags() must be used to require that FAST be used. 2964 2965 2966\subsubsection{krb5\_get\_init\_creds\_opt\_set\_fast\_flags \sphinxhyphen{} Set FAST flags in initial credential options.} 2967\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_fast\_flags}\spxextra{C function}} 2968 2969\begin{fulllineitems} 2970\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_fast_flags:c.krb5_get_init_creds_opt_set_fast_flags}}% 2971\pysigstartmultiline 2972\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_fast\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{flags}}{}% 2973\pysigstopmultiline 2974\end{fulllineitems} 2975 2976\begin{quote}\begin{description} 2977\item[{param}] \leavevmode 2978\sphinxAtStartPar 2979\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 2980 2981\sphinxAtStartPar 2982\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options 2983 2984\sphinxAtStartPar 2985\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} FAST flags 2986 2987\end{description}\end{quote} 2988\begin{quote}\begin{description} 2989\item[{retval}] \leavevmode\begin{itemize} 2990\item {} 2991\sphinxAtStartPar 29920 \sphinxhyphen{} Success; Kerberos errors otherwise. 2993 2994\end{itemize} 2995 2996\end{description}\end{quote} 2997 2998\sphinxAtStartPar 2999The following flag values are valid: 3000\begin{itemize} 3001\item {} 3002\sphinxAtStartPar 3003\#KRB5\_FAST\_REQUIRED \sphinxhyphen{} Require FAST to be used 3004 3005\end{itemize} 3006 3007 3008\subsubsection{krb5\_get\_init\_creds\_opt\_set\_forwardable \sphinxhyphen{} Set or unset the forwardable flag in initial credential options.} 3009\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_forwardable}\spxextra{C function}} 3010 3011\begin{fulllineitems} 3012\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_forwardable:c.krb5_get_init_creds_opt_set_forwardable}}% 3013\pysigstartmultiline 3014\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_forwardable}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{forwardable}}{}% 3015\pysigstopmultiline 3016\end{fulllineitems} 3017 3018\begin{quote}\begin{description} 3019\item[{param}] \leavevmode 3020\sphinxAtStartPar 3021\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3022 3023\sphinxAtStartPar 3024\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{forwardable} \sphinxhyphen{} Whether credentials should be forwardable 3025 3026\end{description}\end{quote} 3027 3028 3029\subsubsection{krb5\_get\_init\_creds\_opt\_set\_in\_ccache \sphinxhyphen{} Set an input credential cache in initial credential options.} 3030\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_in\_ccache (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_in\_ccache}\spxextra{C function}} 3031 3032\begin{fulllineitems} 3033\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_in_ccache:c.krb5_get_init_creds_opt_set_in_ccache}}% 3034\pysigstartmultiline 3035\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_in\_ccache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}}{}% 3036\pysigstopmultiline 3037\end{fulllineitems} 3038 3039\begin{quote}\begin{description} 3040\item[{param}] \leavevmode 3041\sphinxAtStartPar 3042\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3043 3044\sphinxAtStartPar 3045\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options 3046 3047\sphinxAtStartPar 3048\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache handle 3049 3050\end{description}\end{quote} 3051 3052\sphinxAtStartPar 3053If 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\sphinxhyphen{}security\sphinxhyphen{} sensitive choices) as the previous authentication attempt, which stored information in the passed\sphinxhyphen{}in ccache. 3054 3055\begin{sphinxadmonition}{note}{Note:} 3056\sphinxAtStartPar 3057New in 1.11 3058\end{sphinxadmonition} 3059 3060 3061\subsubsection{krb5\_get\_init\_creds\_opt\_set\_out\_ccache \sphinxhyphen{} Set an output credential cache in initial credential options.} 3062\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_out\_ccache}\spxextra{C function}} 3063 3064\begin{fulllineitems} 3065\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_out_ccache:c.krb5_get_init_creds_opt_set_out_ccache}}% 3066\pysigstartmultiline 3067\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_out\_ccache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}}{}% 3068\pysigstopmultiline 3069\end{fulllineitems} 3070 3071\begin{quote}\begin{description} 3072\item[{param}] \leavevmode 3073\sphinxAtStartPar 3074\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3075 3076\sphinxAtStartPar 3077\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options 3078 3079\sphinxAtStartPar 3080\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache handle 3081 3082\end{description}\end{quote} 3083 3084\sphinxAtStartPar 3085If 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. 3086 3087 3088\subsubsection{krb5\_get\_init\_creds\_opt\_set\_pa \sphinxhyphen{} Supply options for preauthentication in initial credential options.} 3089\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pa::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_pa (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_pa}\spxextra{C function}} 3090 3091\begin{fulllineitems} 3092\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pa:c.krb5_get_init_creds_opt_set_pa}}% 3093\pysigstartmultiline 3094\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_pa}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{attr}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{value}}{}% 3095\pysigstopmultiline 3096\end{fulllineitems} 3097 3098\begin{quote}\begin{description} 3099\item[{param}] \leavevmode 3100\sphinxAtStartPar 3101\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3102 3103\sphinxAtStartPar 3104\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3105 3106\sphinxAtStartPar 3107\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{attr} \sphinxhyphen{} Preauthentication option name 3108 3109\sphinxAtStartPar 3110\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{value} \sphinxhyphen{} Preauthentication option value 3111 3112\end{description}\end{quote} 3113 3114\sphinxAtStartPar 3115This 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} . 3116 3117 3118\subsubsection{krb5\_get\_init\_creds\_opt\_set\_pac\_request \sphinxhyphen{} Ask the KDC to include or not include a PAC in the ticket.} 3119\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_pac\_request}\spxextra{C function}} 3120 3121\begin{fulllineitems} 3122\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_pac_request:c.krb5_get_init_creds_opt_set_pac_request}}% 3123\pysigstartmultiline 3124\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_pac\_request}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{n}{req\_pac}}{}% 3125\pysigstopmultiline 3126\end{fulllineitems} 3127 3128\begin{quote}\begin{description} 3129\item[{param}] \leavevmode 3130\sphinxAtStartPar 3131\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3132 3133\sphinxAtStartPar 3134\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3135 3136\sphinxAtStartPar 3137\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{req\_pac} \sphinxhyphen{} Whether to request a PAC or not 3138 3139\end{description}\end{quote} 3140 3141\sphinxAtStartPar 3142If this option is set, the AS request will include a PAC\sphinxhyphen{}REQUEST pa\sphinxhyphen{}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. 3143 3144\begin{sphinxadmonition}{note}{Note:} 3145\sphinxAtStartPar 3146New in 1.15 3147\end{sphinxadmonition} 3148 3149 3150\subsubsection{krb5\_get\_init\_creds\_opt\_set\_preauth\_list \sphinxhyphen{} Set preauthentication types in initial credential options.} 3151\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_preauth\_list}\spxextra{C function}} 3152 3153\begin{fulllineitems} 3154\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_preauth_list:c.krb5_get_init_creds_opt_set_preauth_list}}% 3155\pysigstartmultiline 3156\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{\DUrole{n}{krb5\_preauthtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{preauth\_list}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{preauth\_list\_length}}{}% 3157\pysigstopmultiline 3158\end{fulllineitems} 3159 3160\begin{quote}\begin{description} 3161\item[{param}] \leavevmode 3162\sphinxAtStartPar 3163\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3164 3165\sphinxAtStartPar 3166\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{preauth\_list} \sphinxhyphen{} Array of preauthentication types 3167 3168\sphinxAtStartPar 3169\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{preauth\_list\_length} \sphinxhyphen{} Length of \sphinxstyleemphasis{preauth\_list} 3170 3171\end{description}\end{quote} 3172 3173\sphinxAtStartPar 3174This function can be used to perform optimistic preauthentication when getting initial credentials, in combination with krb5\_get\_init\_creds\_opt\_set\_salt() and krb5\_get\_init\_creds\_opt\_set\_pa(). 3175 3176 3177\subsubsection{krb5\_get\_init\_creds\_opt\_set\_proxiable \sphinxhyphen{} Set or unset the proxiable flag in initial credential options.} 3178\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_proxiable (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_proxiable}\spxextra{C function}} 3179 3180\begin{fulllineitems} 3181\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_proxiable:c.krb5_get_init_creds_opt_set_proxiable}}% 3182\pysigstartmultiline 3183\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_proxiable}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{proxiable}}{}% 3184\pysigstopmultiline 3185\end{fulllineitems} 3186 3187\begin{quote}\begin{description} 3188\item[{param}] \leavevmode 3189\sphinxAtStartPar 3190\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3191 3192\sphinxAtStartPar 3193\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{proxiable} \sphinxhyphen{} Whether credentials should be proxiable 3194 3195\end{description}\end{quote} 3196 3197 3198\subsubsection{krb5\_get\_init\_creds\_opt\_set\_renew\_life \sphinxhyphen{} Set the ticket renewal lifetime in initial credential options.} 3199\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}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life::doc}}\index{krb5\_get\_init\_creds\_opt\_set\_renew\_life (C function)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_renew\_life}\spxextra{C function}} 3200 3201\begin{fulllineitems} 3202\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_renew_life:c.krb5_get_init_creds_opt_set_renew_life}}% 3203\pysigstartmultiline 3204\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{n}{renew\_life}}{}% 3205\pysigstopmultiline 3206\end{fulllineitems} 3207 3208\begin{quote}\begin{description} 3209\item[{param}] \leavevmode 3210\sphinxAtStartPar 3211\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Pointer to \sphinxstyleemphasis{options} field 3212 3213\sphinxAtStartPar 3214\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{renew\_life} \sphinxhyphen{} Ticket renewal lifetime 3215 3216\end{description}\end{quote} 3217 3218 3219\subsubsection{krb5\_get\_init\_creds\_opt\_set\_responder \sphinxhyphen{} Set the responder function in initial credential options.} 3220\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_responder}\spxextra{C function}} 3221 3222\begin{fulllineitems} 3223\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_responder:c.krb5_get_init_creds_opt_set_responder}}% 3224\pysigstartmultiline 3225\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_responder}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_fn:c.krb5_responder_fn}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_fn}}}}\DUrole{w}{ }\DUrole{n}{responder}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 3226\pysigstopmultiline 3227\end{fulllineitems} 3228 3229\begin{quote}\begin{description} 3230\item[{param}] \leavevmode 3231\sphinxAtStartPar 3232\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3233 3234\sphinxAtStartPar 3235\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3236 3237\sphinxAtStartPar 3238\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{responder} \sphinxhyphen{} Responder function 3239 3240\sphinxAtStartPar 3241\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Responder data argument 3242 3243\end{description}\end{quote} 3244 3245\begin{sphinxadmonition}{note}{Note:} 3246\sphinxAtStartPar 3247New in 1.11 3248\end{sphinxadmonition} 3249 3250 3251\subsubsection{krb5\_get\_init\_creds\_opt\_set\_salt \sphinxhyphen{} Set salt for optimistic preauthentication in initial credential options.} 3252\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_salt}\spxextra{C function}} 3253 3254\begin{fulllineitems} 3255\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_salt:c.krb5_get_init_creds_opt_set_salt}}% 3256\pysigstartmultiline 3257\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_set\_salt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{salt}}{}% 3258\pysigstopmultiline 3259\end{fulllineitems} 3260 3261\begin{quote}\begin{description} 3262\item[{param}] \leavevmode 3263\sphinxAtStartPar 3264\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3265 3266\sphinxAtStartPar 3267\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salt} \sphinxhyphen{} Salt data 3268 3269\end{description}\end{quote} 3270 3271\sphinxAtStartPar 3272When 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. 3273 3274 3275\subsubsection{krb5\_get\_init\_creds\_opt\_set\_tkt\_life \sphinxhyphen{} Set the ticket lifetime in initial credential options.} 3276\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)@\spxentry{krb5\_get\_init\_creds\_opt\_set\_tkt\_life}\spxextra{C function}} 3277 3278\begin{fulllineitems} 3279\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_set_tkt_life:c.krb5_get_init_creds_opt_set_tkt_life}}% 3280\pysigstartmultiline 3281\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{n}{tkt\_life}}{}% 3282\pysigstopmultiline 3283\end{fulllineitems} 3284 3285\begin{quote}\begin{description} 3286\item[{param}] \leavevmode 3287\sphinxAtStartPar 3288\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Options structure 3289 3290\sphinxAtStartPar 3291\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{tkt\_life} \sphinxhyphen{} Ticket lifetime 3292 3293\end{description}\end{quote} 3294 3295 3296\subsubsection{krb5\_get\_init\_creds\_password \sphinxhyphen{} Get initial credentials using a password.} 3297\label{\detokenize{appdev/refs/api/krb5_get_init_creds_password:krb5-get-init-creds-password-get-initial-credentials-using-a-password}}\label{\detokenize{appdev/refs/api/krb5_get_init_creds_password::doc}}\index{krb5\_get\_init\_creds\_password (C function)@\spxentry{krb5\_get\_init\_creds\_password}\spxextra{C function}} 3298 3299\begin{fulllineitems} 3300\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_password:c.krb5_get_init_creds_password}}% 3301\pysigstartmultiline 3302\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_password}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{password}, {\hyperref[\detokenize{appdev/refs/types/krb5_prompter_fct:c.krb5_prompter_fct}]{\sphinxcrossref{\DUrole{n}{krb5\_prompter\_fct}}}}\DUrole{w}{ }\DUrole{n}{prompter}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{n}{start\_time}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_tkt\_service}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k5\_gic\_options}}{}% 3303\pysigstopmultiline 3304\end{fulllineitems} 3305 3306\begin{quote}\begin{description} 3307\item[{param}] \leavevmode 3308\sphinxAtStartPar 3309\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3310 3311\sphinxAtStartPar 3312\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} New credentials 3313 3314\sphinxAtStartPar 3315\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal 3316 3317\sphinxAtStartPar 3318\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{password} \sphinxhyphen{} Password (or NULL) 3319 3320\sphinxAtStartPar 3321\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompter} \sphinxhyphen{} Prompter function 3322 3323\sphinxAtStartPar 3324\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Prompter callback data 3325 3326\sphinxAtStartPar 3327\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{start\_time} \sphinxhyphen{} Time when ticket becomes valid (0 for now) 3328 3329\sphinxAtStartPar 3330\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} \sphinxhyphen{} Service name of initial credentials (or NULL) 3331 3332\sphinxAtStartPar 3333\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_gic\_options} \sphinxhyphen{} Initial credential options 3334 3335\end{description}\end{quote} 3336\begin{quote}\begin{description} 3337\item[{retval}] \leavevmode\begin{itemize} 3338\item {} 3339\sphinxAtStartPar 33400 Success 3341 3342\item {} 3343\sphinxAtStartPar 3344EINVAL Invalid argument 3345 3346\item {} 3347\sphinxAtStartPar 3348KRB5\_KDC\_UNREACH Cannot contact any KDC for requested realm 3349 3350\item {} 3351\sphinxAtStartPar 3352KRB5\_PREAUTH\_FAILED Generic Pre\sphinxhyphen{}athentication failure 3353 3354\item {} 3355\sphinxAtStartPar 3356KRB5\_LIBOS\_PWDINTR Password read interrupted 3357 3358\item {} 3359\sphinxAtStartPar 3360KRB5\_REALM\_CANT\_RESOLVE Cannot resolve network address for KDC in requested realm 3361 3362\item {} 3363\sphinxAtStartPar 3364KRB5KDC\_ERR\_KEY\_EXP Password has expired 3365 3366\item {} 3367\sphinxAtStartPar 3368KRB5\_LIBOS\_BADPWDMATCH Password mismatch 3369 3370\item {} 3371\sphinxAtStartPar 3372KRB5\_CHPW\_PWDNULL New password cannot be zero length 3373 3374\item {} 3375\sphinxAtStartPar 3376KRB5\_CHPW\_FAIL Password change failed 3377 3378\end{itemize} 3379 3380\item[{return}] \leavevmode\begin{itemize} 3381\item {} 3382\sphinxAtStartPar 3383Kerberos error codes 3384 3385\end{itemize} 3386 3387\end{description}\end{quote} 3388 3389\sphinxAtStartPar 3390This 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\sphinxhyphen{}granting service is used. 3391 3392 3393\subsubsection{krb5\_get\_profile \sphinxhyphen{} Retrieve configuration profile from the context.} 3394\label{\detokenize{appdev/refs/api/krb5_get_profile:krb5-get-profile-retrieve-configuration-profile-from-the-context}}\label{\detokenize{appdev/refs/api/krb5_get_profile::doc}}\index{krb5\_get\_profile (C function)@\spxentry{krb5\_get\_profile}\spxextra{C function}} 3395 3396\begin{fulllineitems} 3397\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_profile:c.krb5_get_profile}}% 3398\pysigstartmultiline 3399\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_profile}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{struct}\DUrole{w}{ }\DUrole{n}{\_profile\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{profile}}{}% 3400\pysigstopmultiline 3401\end{fulllineitems} 3402 3403\begin{quote}\begin{description} 3404\item[{param}] \leavevmode 3405\sphinxAtStartPar 3406\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3407 3408\sphinxAtStartPar 3409\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{profile} \sphinxhyphen{} Pointer to data read from a configuration file 3410 3411\end{description}\end{quote} 3412\begin{quote}\begin{description} 3413\item[{retval}] \leavevmode\begin{itemize} 3414\item {} 3415\sphinxAtStartPar 34160 Success 3417 3418\end{itemize} 3419 3420\item[{return}] \leavevmode\begin{itemize} 3421\item {} 3422\sphinxAtStartPar 3423Kerberos error codes 3424 3425\end{itemize} 3426 3427\end{description}\end{quote} 3428 3429\sphinxAtStartPar 3430This function creates a new \sphinxstyleemphasis{profile} object that reflects profile in the supplied \sphinxstyleemphasis{context} . 3431 3432\sphinxAtStartPar 3433The \sphinxstyleemphasis{profile} object may be freed with profile\_release() function. See profile.h and profile API for more details. 3434 3435 3436\subsubsection{krb5\_get\_prompt\_types \sphinxhyphen{} Get prompt types array from a context.} 3437\label{\detokenize{appdev/refs/api/krb5_get_prompt_types:krb5-get-prompt-types-get-prompt-types-array-from-a-context}}\label{\detokenize{appdev/refs/api/krb5_get_prompt_types::doc}}\index{krb5\_get\_prompt\_types (C function)@\spxentry{krb5\_get\_prompt\_types}\spxextra{C function}} 3438 3439\begin{fulllineitems} 3440\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_prompt_types:c.krb5_get_prompt_types}}% 3441\pysigstartmultiline 3442\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_prompt_type:c.krb5_prompt_type}]{\sphinxcrossref{\DUrole{n}{krb5\_prompt\_type}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_prompt\_types}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}}{}% 3443\pysigstopmultiline 3444\end{fulllineitems} 3445 3446\begin{quote}\begin{description} 3447\item[{param}] \leavevmode 3448\sphinxAtStartPar 3449\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3450 3451\end{description}\end{quote} 3452\begin{quote}\begin{description} 3453\item[{return}] \leavevmode\begin{itemize} 3454\item {} 3455\sphinxAtStartPar 3456Pointer 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 3457 3458\end{itemize} 3459 3460\end{description}\end{quote} 3461 3462 3463\subsubsection{krb5\_get\_renewed\_creds \sphinxhyphen{} Get renewed credential from KDC using an existing credential.} 3464\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)@\spxentry{krb5\_get\_renewed\_creds}\spxextra{C function}} 3465 3466\begin{fulllineitems} 3467\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_renewed_creds:c.krb5_get_renewed_creds}}% 3468\pysigstartmultiline 3469\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_renewed\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_tkt\_service}}{}% 3470\pysigstopmultiline 3471\end{fulllineitems} 3472 3473\begin{quote}\begin{description} 3474\item[{param}] \leavevmode 3475\sphinxAtStartPar 3476\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3477 3478\sphinxAtStartPar 3479\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Renewed credentials 3480 3481\sphinxAtStartPar 3482\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal name 3483 3484\sphinxAtStartPar 3485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache 3486 3487\sphinxAtStartPar 3488\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} \sphinxhyphen{} Server principal string (or NULL) 3489 3490\end{description}\end{quote} 3491\begin{quote}\begin{description} 3492\item[{retval}] \leavevmode\begin{itemize} 3493\item {} 3494\sphinxAtStartPar 34950 Success 3496 3497\end{itemize} 3498 3499\item[{return}] \leavevmode\begin{itemize} 3500\item {} 3501\sphinxAtStartPar 3502Kerberos error codes 3503 3504\end{itemize} 3505 3506\end{description}\end{quote} 3507 3508\sphinxAtStartPar 3509This 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\sphinxhyphen{}granting service is used. 3510 3511\sphinxAtStartPar 3512If successful, the renewed credential is placed in \sphinxstyleemphasis{creds} . 3513 3514 3515\subsubsection{krb5\_get\_validated\_creds \sphinxhyphen{} Get validated credentials from the KDC.} 3516\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)@\spxentry{krb5\_get\_validated\_creds}\spxextra{C function}} 3517 3518\begin{fulllineitems} 3519\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_validated_creds:c.krb5_get_validated_creds}}% 3520\pysigstartmultiline 3521\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_validated\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_tkt\_service}}{}% 3522\pysigstopmultiline 3523\end{fulllineitems} 3524 3525\begin{quote}\begin{description} 3526\item[{param}] \leavevmode 3527\sphinxAtStartPar 3528\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3529 3530\sphinxAtStartPar 3531\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Validated credentials 3532 3533\sphinxAtStartPar 3534\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal name 3535 3536\sphinxAtStartPar 3537\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache 3538 3539\sphinxAtStartPar 3540\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_tkt\_service} \sphinxhyphen{} Server principal string (or NULL) 3541 3542\end{description}\end{quote} 3543\begin{quote}\begin{description} 3544\item[{retval}] \leavevmode\begin{itemize} 3545\item {} 3546\sphinxAtStartPar 35470 Success 3548 3549\item {} 3550\sphinxAtStartPar 3551KRB5\_NO\_2ND\_TKT Request missing second ticket 3552 3553\item {} 3554\sphinxAtStartPar 3555KRB5\_NO\_TKT\_SUPPLIED Request did not supply a ticket 3556 3557\item {} 3558\sphinxAtStartPar 3559KRB5\_PRINC\_NOMATCH Requested principal and ticket do not match 3560 3561\item {} 3562\sphinxAtStartPar 3563KRB5\_KDCREP\_MODIFIED KDC reply did not match expectations 3564 3565\item {} 3566\sphinxAtStartPar 3567KRB5\_KDCREP\_SKEW Clock skew too great in KDC reply 3568 3569\end{itemize} 3570 3571\item[{return}] \leavevmode\begin{itemize} 3572\item {} 3573\sphinxAtStartPar 3574Kerberos error codes 3575 3576\end{itemize} 3577 3578\end{description}\end{quote} 3579 3580\sphinxAtStartPar 3581This 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\sphinxhyphen{}granting service is used. 3582 3583\sphinxAtStartPar 3584If successful, the validated credential is placed in \sphinxstyleemphasis{creds} . 3585 3586 3587\subsubsection{krb5\_init\_context \sphinxhyphen{} Create a krb5 library context.} 3588\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)@\spxentry{krb5\_init\_context}\spxextra{C function}} 3589 3590\begin{fulllineitems} 3591\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_context:c.krb5_init_context}}% 3592\pysigstartmultiline 3593\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_context}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{context}}{}% 3594\pysigstopmultiline 3595\end{fulllineitems} 3596 3597\begin{quote}\begin{description} 3598\item[{param}] \leavevmode 3599\sphinxAtStartPar 3600\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3601 3602\end{description}\end{quote} 3603\begin{quote}\begin{description} 3604\item[{retval}] \leavevmode\begin{itemize} 3605\item {} 3606\sphinxAtStartPar 36070 Success 3608 3609\end{itemize} 3610 3611\item[{return}] \leavevmode\begin{itemize} 3612\item {} 3613\sphinxAtStartPar 3614Kerberos error codes 3615 3616\end{itemize} 3617 3618\end{description}\end{quote} 3619 3620\sphinxAtStartPar 3621The \sphinxstyleemphasis{context} must be released by calling krb5\_free\_context() when it is no longer needed. 3622 3623\begin{sphinxadmonition}{warning}{Warning:} 3624\sphinxAtStartPar 3625Any program or module that needs the Kerberos code to not trust the environment must use krb5\_init\_secure\_context(), or clean out the environment. 3626\end{sphinxadmonition} 3627 3628 3629\subsubsection{krb5\_init\_secure\_context \sphinxhyphen{} Create a krb5 library context using only configuration files.} 3630\label{\detokenize{appdev/refs/api/krb5_init_secure_context:krb5-init-secure-context-create-a-krb5-library-context-using-only-configuration-files}}\label{\detokenize{appdev/refs/api/krb5_init_secure_context::doc}}\index{krb5\_init\_secure\_context (C function)@\spxentry{krb5\_init\_secure\_context}\spxextra{C function}} 3631 3632\begin{fulllineitems} 3633\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_secure_context:c.krb5_init_secure_context}}% 3634\pysigstartmultiline 3635\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_secure\_context}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{context}}{}% 3636\pysigstopmultiline 3637\end{fulllineitems} 3638 3639\begin{quote}\begin{description} 3640\item[{param}] \leavevmode 3641\sphinxAtStartPar 3642\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3643 3644\end{description}\end{quote} 3645\begin{quote}\begin{description} 3646\item[{retval}] \leavevmode\begin{itemize} 3647\item {} 3648\sphinxAtStartPar 36490 Success 3650 3651\end{itemize} 3652 3653\item[{return}] \leavevmode\begin{itemize} 3654\item {} 3655\sphinxAtStartPar 3656Kerberos error codes 3657 3658\end{itemize} 3659 3660\end{description}\end{quote} 3661 3662\sphinxAtStartPar 3663Create a context structure, using only system configuration files. All information passed through the environment variables is ignored. 3664 3665\sphinxAtStartPar 3666The \sphinxstyleemphasis{context} must be released by calling krb5\_free\_context() when it is no longer needed. 3667 3668 3669\subsubsection{krb5\_is\_config\_principal \sphinxhyphen{} Test whether a principal is a configuration principal.} 3670\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)@\spxentry{krb5\_is\_config\_principal}\spxextra{C function}} 3671 3672\begin{fulllineitems} 3673\phantomsection\label{\detokenize{appdev/refs/api/krb5_is_config_principal:c.krb5_is_config_principal}}% 3674\pysigstartmultiline 3675\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_is\_config\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}}{}% 3676\pysigstopmultiline 3677\end{fulllineitems} 3678 3679\begin{quote}\begin{description} 3680\item[{param}] \leavevmode 3681\sphinxAtStartPar 3682\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3683 3684\sphinxAtStartPar 3685\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal to check 3686 3687\end{description}\end{quote} 3688\begin{quote}\begin{description} 3689\item[{return}] \leavevmode\begin{itemize} 3690\item {} 3691\sphinxAtStartPar 3692TRUE if the principal is a configuration principal (generated part of krb5\_cc\_set\_config()); FALSE otherwise. 3693 3694\end{itemize} 3695 3696\end{description}\end{quote} 3697 3698 3699\subsubsection{krb5\_is\_thread\_safe \sphinxhyphen{} Test whether the Kerberos library was built with multithread support.} 3700\label{\detokenize{appdev/refs/api/krb5_is_thread_safe:krb5-is-thread-safe-test-whether-the-kerberos-library-was-built-with-multithread-support}}\label{\detokenize{appdev/refs/api/krb5_is_thread_safe::doc}}\index{krb5\_is\_thread\_safe (C function)@\spxentry{krb5\_is\_thread\_safe}\spxextra{C function}} 3701 3702\begin{fulllineitems} 3703\phantomsection\label{\detokenize{appdev/refs/api/krb5_is_thread_safe:c.krb5_is_thread_safe}}% 3704\pysigstartmultiline 3705\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_is\_thread\_safe}}}}{\DUrole{kt}{void}\DUrole{w}{ }\DUrole{n}{None}}{}% 3706\pysigstopmultiline 3707\end{fulllineitems} 3708 3709\begin{quote}\begin{description} 3710\item[{param}] \leavevmode 3711\sphinxAtStartPar 3712\sphinxstylestrong{None} 3713 3714\end{description}\end{quote} 3715\begin{quote}\begin{description} 3716\item[{retval}] \leavevmode\begin{itemize} 3717\item {} 3718\sphinxAtStartPar 3719TRUE if the library is threadsafe; FALSE otherwise 3720 3721\end{itemize} 3722 3723\end{description}\end{quote} 3724 3725 3726\subsubsection{krb5\_kt\_close \sphinxhyphen{} Close a key table handle.} 3727\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)@\spxentry{krb5\_kt\_close}\spxextra{C function}} 3728 3729\begin{fulllineitems} 3730\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_close:c.krb5_kt_close}}% 3731\pysigstartmultiline 3732\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_close}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}}{}% 3733\pysigstopmultiline 3734\end{fulllineitems} 3735 3736\begin{quote}\begin{description} 3737\item[{param}] \leavevmode 3738\sphinxAtStartPar 3739\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3740 3741\sphinxAtStartPar 3742\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 3743 3744\end{description}\end{quote} 3745\begin{quote}\begin{description} 3746\item[{retval}] \leavevmode\begin{itemize} 3747\item {} 3748\sphinxAtStartPar 37490 None 3750 3751\end{itemize} 3752 3753\end{description}\end{quote} 3754 3755 3756\subsubsection{krb5\_kt\_client\_default \sphinxhyphen{} Resolve the default client key table.} 3757\label{\detokenize{appdev/refs/api/krb5_kt_client_default:krb5-kt-client-default-resolve-the-default-client-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_client_default::doc}}\index{krb5\_kt\_client\_default (C function)@\spxentry{krb5\_kt\_client\_default}\spxextra{C function}} 3758 3759\begin{fulllineitems} 3760\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_client_default:c.krb5_kt_client_default}}% 3761\pysigstartmultiline 3762\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_client\_default}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keytab\_out}}{}% 3763\pysigstopmultiline 3764\end{fulllineitems} 3765 3766\begin{quote}\begin{description} 3767\item[{param}] \leavevmode 3768\sphinxAtStartPar 3769\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3770 3771\sphinxAtStartPar 3772\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keytab\_out} \sphinxhyphen{} Key table handle 3773 3774\end{description}\end{quote} 3775\begin{quote}\begin{description} 3776\item[{retval}] \leavevmode\begin{itemize} 3777\item {} 3778\sphinxAtStartPar 37790 Success 3780 3781\end{itemize} 3782 3783\item[{return}] \leavevmode\begin{itemize} 3784\item {} 3785\sphinxAtStartPar 3786Kerberos error codes 3787 3788\end{itemize} 3789 3790\end{description}\end{quote} 3791 3792\sphinxAtStartPar 3793Fill \sphinxstyleemphasis{keytab\_out} with a handle to the default client key table. 3794 3795\begin{sphinxadmonition}{note}{Note:} 3796\sphinxAtStartPar 3797New in 1.11 3798\end{sphinxadmonition} 3799 3800 3801\subsubsection{krb5\_kt\_default \sphinxhyphen{} Resolve the default key table.} 3802\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)@\spxentry{krb5\_kt\_default}\spxextra{C function}} 3803 3804\begin{fulllineitems} 3805\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_default:c.krb5_kt_default}}% 3806\pysigstartmultiline 3807\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_default}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{id}}{}% 3808\pysigstopmultiline 3809\end{fulllineitems} 3810 3811\begin{quote}\begin{description} 3812\item[{param}] \leavevmode 3813\sphinxAtStartPar 3814\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3815 3816\sphinxAtStartPar 3817\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{id} \sphinxhyphen{} Key table handle 3818 3819\end{description}\end{quote} 3820\begin{quote}\begin{description} 3821\item[{retval}] \leavevmode\begin{itemize} 3822\item {} 3823\sphinxAtStartPar 38240 Success 3825 3826\end{itemize} 3827 3828\item[{return}] \leavevmode\begin{itemize} 3829\item {} 3830\sphinxAtStartPar 3831Kerberos error codes 3832 3833\end{itemize} 3834 3835\end{description}\end{quote} 3836 3837\sphinxAtStartPar 3838Set \sphinxstyleemphasis{id} to a handle to the default key table. The key table is not opened. 3839 3840 3841\subsubsection{krb5\_kt\_default\_name \sphinxhyphen{} Get the default key table name.} 3842\label{\detokenize{appdev/refs/api/krb5_kt_default_name:krb5-kt-default-name-get-the-default-key-table-name}}\label{\detokenize{appdev/refs/api/krb5_kt_default_name::doc}}\index{krb5\_kt\_default\_name (C function)@\spxentry{krb5\_kt\_default\_name}\spxextra{C function}} 3843 3844\begin{fulllineitems} 3845\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_default_name:c.krb5_kt_default_name}}% 3846\pysigstartmultiline 3847\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_default\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{name\_size}}{}% 3848\pysigstopmultiline 3849\end{fulllineitems} 3850 3851\begin{quote}\begin{description} 3852\item[{param}] \leavevmode 3853\sphinxAtStartPar 3854\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3855 3856\sphinxAtStartPar 3857\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} \sphinxhyphen{} Default key table name 3858 3859\sphinxAtStartPar 3860\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name\_size} \sphinxhyphen{} Space available in \sphinxstyleemphasis{name} 3861 3862\end{description}\end{quote} 3863\begin{quote}\begin{description} 3864\item[{retval}] \leavevmode\begin{itemize} 3865\item {} 3866\sphinxAtStartPar 38670 Success 3868 3869\item {} 3870\sphinxAtStartPar 3871KRB5\_CONFIG\_NOTENUFSPACE Buffer is too short 3872 3873\end{itemize} 3874 3875\item[{return}] \leavevmode\begin{itemize} 3876\item {} 3877\sphinxAtStartPar 3878Kerberos error codes 3879 3880\end{itemize} 3881 3882\end{description}\end{quote} 3883 3884\sphinxAtStartPar 3885Fill \sphinxstyleemphasis{name} with the name of the default key table for \sphinxstyleemphasis{context} . 3886 3887 3888\subsubsection{krb5\_kt\_dup \sphinxhyphen{} Duplicate keytab handle.} 3889\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)@\spxentry{krb5\_kt\_dup}\spxextra{C function}} 3890 3891\begin{fulllineitems} 3892\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_dup:c.krb5_kt_dup}}% 3893\pysigstartmultiline 3894\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_dup}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{in}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{out}}{}% 3895\pysigstopmultiline 3896\end{fulllineitems} 3897 3898\begin{quote}\begin{description} 3899\item[{param}] \leavevmode 3900\sphinxAtStartPar 3901\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3902 3903\sphinxAtStartPar 3904\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} \sphinxhyphen{} Key table handle to be duplicated 3905 3906\sphinxAtStartPar 3907\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Key table handle 3908 3909\end{description}\end{quote} 3910 3911\sphinxAtStartPar 3912Create a new handle referring to the same key table as \sphinxstyleemphasis{in} . The new handle and \sphinxstyleemphasis{in} can be closed independently. 3913 3914\begin{sphinxadmonition}{note}{Note:} 3915\sphinxAtStartPar 3916New in 1.12 3917\end{sphinxadmonition} 3918 3919 3920\subsubsection{krb5\_kt\_get\_name \sphinxhyphen{} Get a key table name.} 3921\label{\detokenize{appdev/refs/api/krb5_kt_get_name:krb5-kt-get-name-get-a-key-table-name}}\label{\detokenize{appdev/refs/api/krb5_kt_get_name::doc}}\index{krb5\_kt\_get\_name (C function)@\spxentry{krb5\_kt\_get\_name}\spxextra{C function}} 3922 3923\begin{fulllineitems} 3924\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_get_name:c.krb5_kt_get_name}}% 3925\pysigstartmultiline 3926\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_get\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{namelen}}{}% 3927\pysigstopmultiline 3928\end{fulllineitems} 3929 3930\begin{quote}\begin{description} 3931\item[{param}] \leavevmode 3932\sphinxAtStartPar 3933\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3934 3935\sphinxAtStartPar 3936\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 3937 3938\sphinxAtStartPar 3939\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} \sphinxhyphen{} Key table name 3940 3941\sphinxAtStartPar 3942\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{namelen} \sphinxhyphen{} Maximum length to fill in name 3943 3944\end{description}\end{quote} 3945\begin{quote}\begin{description} 3946\item[{retval}] \leavevmode\begin{itemize} 3947\item {} 3948\sphinxAtStartPar 39490 Success 3950 3951\item {} 3952\sphinxAtStartPar 3953KRB5\_KT\_NAME\_TOOLONG Key table name does not fit in namelen bytes 3954 3955\end{itemize} 3956 3957\item[{return}] \leavevmode\begin{itemize} 3958\item {} 3959\sphinxAtStartPar 3960Kerberos error codes 3961 3962\end{itemize} 3963 3964\end{description}\end{quote} 3965 3966\sphinxAtStartPar 3967Fill \sphinxstyleemphasis{name} with the name of \sphinxstyleemphasis{keytab} including the type and delimiter. 3968 3969 3970\subsubsection{krb5\_kt\_get\_type \sphinxhyphen{} Return the type of a key table.} 3971\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)@\spxentry{krb5\_kt\_get\_type}\spxextra{C function}} 3972 3973\begin{fulllineitems} 3974\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_get_type:c.krb5_kt_get_type}}% 3975\pysigstartmultiline 3976\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_get\_type}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}}{}% 3977\pysigstopmultiline 3978\end{fulllineitems} 3979 3980\begin{quote}\begin{description} 3981\item[{param}] \leavevmode 3982\sphinxAtStartPar 3983\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 3984 3985\sphinxAtStartPar 3986\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 3987 3988\end{description}\end{quote} 3989\begin{quote}\begin{description} 3990\item[{return}] \leavevmode\begin{itemize} 3991\item {} 3992\sphinxAtStartPar 3993The type of a key table as an alias that must not be modified or freed by the caller. 3994 3995\end{itemize} 3996 3997\end{description}\end{quote} 3998 3999 4000\subsubsection{krb5\_kt\_resolve \sphinxhyphen{} Get a handle for a key table.} 4001\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)@\spxentry{krb5\_kt\_resolve}\spxextra{C function}} 4002 4003\begin{fulllineitems} 4004\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_resolve:c.krb5_kt_resolve}}% 4005\pysigstartmultiline 4006\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_resolve}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ktid}}{}% 4007\pysigstopmultiline 4008\end{fulllineitems} 4009 4010\begin{quote}\begin{description} 4011\item[{param}] \leavevmode 4012\sphinxAtStartPar 4013\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4014 4015\sphinxAtStartPar 4016\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} Name of the key table 4017 4018\sphinxAtStartPar 4019\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ktid} \sphinxhyphen{} Key table handle 4020 4021\end{description}\end{quote} 4022\begin{quote}\begin{description} 4023\item[{retval}] \leavevmode\begin{itemize} 4024\item {} 4025\sphinxAtStartPar 40260 Success 4027 4028\end{itemize} 4029 4030\item[{return}] \leavevmode\begin{itemize} 4031\item {} 4032\sphinxAtStartPar 4033Kerberos error codes 4034 4035\end{itemize} 4036 4037\end{description}\end{quote} 4038 4039\sphinxAtStartPar 4040Resolve the key table name \sphinxstyleemphasis{name} and set \sphinxstyleemphasis{ktid} to a handle identifying the key table. Use krb5\_kt\_close() to free \sphinxstyleemphasis{ktid} when it is no longer needed. 4041\begin{quote} 4042 4043\sphinxAtStartPar 4044\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} . 4045\end{quote} 4046 4047\sphinxAtStartPar 4048If \sphinxstyleemphasis{name} is of type \sphinxstylestrong{FILE} , the keytab file is not opened by this call. 4049 4050 4051\subsubsection{krb5\_kuserok \sphinxhyphen{} Determine if a principal is authorized to log in as a local user.} 4052\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)@\spxentry{krb5\_kuserok}\spxextra{C function}} 4053 4054\begin{fulllineitems} 4055\phantomsection\label{\detokenize{appdev/refs/api/krb5_kuserok:c.krb5_kuserok}}% 4056\pysigstartmultiline 4057\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kuserok}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{luser}}{}% 4058\pysigstopmultiline 4059\end{fulllineitems} 4060 4061\begin{quote}\begin{description} 4062\item[{param}] \leavevmode 4063\sphinxAtStartPar 4064\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4065 4066\sphinxAtStartPar 4067\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal name 4068 4069\sphinxAtStartPar 4070\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{luser} \sphinxhyphen{} Local username 4071 4072\end{description}\end{quote} 4073\begin{quote}\begin{description} 4074\item[{retval}] \leavevmode\begin{itemize} 4075\item {} 4076\sphinxAtStartPar 4077TRUE Principal is authorized to log in as user; FALSE otherwise. 4078 4079\end{itemize} 4080 4081\end{description}\end{quote} 4082 4083\sphinxAtStartPar 4084Determine whether \sphinxstyleemphasis{principal} is authorized to log in as a local user \sphinxstyleemphasis{luser} . 4085 4086 4087\subsubsection{krb5\_parse\_name \sphinxhyphen{} Convert a string principal name to a krb5\_principal structure.} 4088\label{\detokenize{appdev/refs/api/krb5_parse_name:krb5-parse-name-convert-a-string-principal-name-to-a-krb5-principal-structure}}\label{\detokenize{appdev/refs/api/krb5_parse_name::doc}}\index{krb5\_parse\_name (C function)@\spxentry{krb5\_parse\_name}\spxextra{C function}} 4089 4090\begin{fulllineitems} 4091\phantomsection\label{\detokenize{appdev/refs/api/krb5_parse_name:c.krb5_parse_name}}% 4092\pysigstartmultiline 4093\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_parse\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{principal\_out}}{}% 4094\pysigstopmultiline 4095\end{fulllineitems} 4096 4097\begin{quote}\begin{description} 4098\item[{param}] \leavevmode 4099\sphinxAtStartPar 4100\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4101 4102\sphinxAtStartPar 4103\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} String representation of a principal name 4104 4105\sphinxAtStartPar 4106\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{principal\_out} \sphinxhyphen{} New principal 4107 4108\end{description}\end{quote} 4109\begin{quote}\begin{description} 4110\item[{retval}] \leavevmode\begin{itemize} 4111\item {} 4112\sphinxAtStartPar 41130 Success 4114 4115\end{itemize} 4116 4117\item[{return}] \leavevmode\begin{itemize} 4118\item {} 4119\sphinxAtStartPar 4120Kerberos error codes 4121 4122\end{itemize} 4123 4124\end{description}\end{quote} 4125 4126\sphinxAtStartPar 4127Convert a string representation of a principal name to a krb5\_principal structure. 4128 4129\sphinxAtStartPar 4130A 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. 4131 4132\sphinxAtStartPar 4133To 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. 4134 4135\sphinxAtStartPar 4136Beginning with release 1.20, the name type of the principal will be inferred as \sphinxstylestrong{KRB5\_NT\_SRV\_INST} or \sphinxstylestrong{KRB5\_NT\_WELLKNOWN} based on the principal name. The type will be \sphinxstylestrong{KRB5\_NT\_PRINCIPAL} if a type cannot be inferred. 4137 4138\sphinxAtStartPar 4139Use krb5\_free\_principal() to free \sphinxstyleemphasis{principal\_out} when it is no longer needed. 4140 4141\begin{sphinxadmonition}{note}{Note:} 4142\sphinxAtStartPar 4143The realm in a Kerberos \sphinxstyleemphasis{name} cannot contain slash, colon, or NULL characters. 4144\end{sphinxadmonition} 4145 4146 4147\subsubsection{krb5\_parse\_name\_flags \sphinxhyphen{} Convert a string principal name to a krb5\_principal with flags.} 4148\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)@\spxentry{krb5\_parse\_name\_flags}\spxextra{C function}} 4149 4150\begin{fulllineitems} 4151\phantomsection\label{\detokenize{appdev/refs/api/krb5_parse_name_flags:c.krb5_parse_name_flags}}% 4152\pysigstartmultiline 4153\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_parse\_name\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{principal\_out}}{}% 4154\pysigstopmultiline 4155\end{fulllineitems} 4156 4157\begin{quote}\begin{description} 4158\item[{param}] \leavevmode 4159\sphinxAtStartPar 4160\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4161 4162\sphinxAtStartPar 4163\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} String representation of a principal name 4164 4165\sphinxAtStartPar 4166\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flag 4167 4168\sphinxAtStartPar 4169\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{principal\_out} \sphinxhyphen{} New principal 4170 4171\end{description}\end{quote} 4172\begin{quote}\begin{description} 4173\item[{retval}] \leavevmode\begin{itemize} 4174\item {} 4175\sphinxAtStartPar 41760 Success 4177 4178\end{itemize} 4179 4180\item[{return}] \leavevmode\begin{itemize} 4181\item {} 4182\sphinxAtStartPar 4183Kerberos error codes 4184 4185\end{itemize} 4186 4187\end{description}\end{quote} 4188 4189\sphinxAtStartPar 4190Similar to krb5\_parse\_name(), this function converts a single\sphinxhyphen{}string representation of a principal name to a krb5\_principal structure. 4191 4192\sphinxAtStartPar 4193The following flags are valid: 4194\begin{quote} 4195\begin{itemize} 4196\item {} 4197\sphinxAtStartPar 4198\#KRB5\_PRINCIPAL\_PARSE\_NO\_REALM \sphinxhyphen{} no realm must be present in \sphinxstyleemphasis{name} 4199 4200\item {} 4201\sphinxAtStartPar 4202\#KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM \sphinxhyphen{} realm must be present in \sphinxstyleemphasis{name} 4203 4204\item {} 4205\sphinxAtStartPar 4206\#KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE \sphinxhyphen{} create single\sphinxhyphen{}component enterprise principal 4207 4208\item {} 4209\sphinxAtStartPar 4210\#KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM \sphinxhyphen{} ignore realm if present in \sphinxstyleemphasis{name} 4211 4212\end{itemize} 4213 4214\sphinxAtStartPar 4215If \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. 4216\end{quote} 4217 4218\sphinxAtStartPar 4219Use krb5\_free\_principal() to free \sphinxstyleemphasis{principal\_out} when it is no longer needed. 4220 4221 4222\subsubsection{krb5\_principal\_compare \sphinxhyphen{} Compare two principals.} 4223\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)@\spxentry{krb5\_principal\_compare}\spxextra{C function}} 4224 4225\begin{fulllineitems} 4226\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal_compare:c.krb5_principal_compare}}% 4227\pysigstartmultiline 4228\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_principal\_compare}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ2}}{}% 4229\pysigstopmultiline 4230\end{fulllineitems} 4231 4232\begin{quote}\begin{description} 4233\item[{param}] \leavevmode 4234\sphinxAtStartPar 4235\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4236 4237\sphinxAtStartPar 4238\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} \sphinxhyphen{} First principal 4239 4240\sphinxAtStartPar 4241\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} \sphinxhyphen{} Second principal 4242 4243\end{description}\end{quote} 4244\begin{quote}\begin{description} 4245\item[{retval}] \leavevmode\begin{itemize} 4246\item {} 4247\sphinxAtStartPar 4248TRUE if the principals are the same; FALSE otherwise 4249 4250\end{itemize} 4251 4252\end{description}\end{quote} 4253 4254 4255\subsubsection{krb5\_principal\_compare\_any\_realm \sphinxhyphen{} Compare two principals ignoring realm components.} 4256\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)@\spxentry{krb5\_principal\_compare\_any\_realm}\spxextra{C function}} 4257 4258\begin{fulllineitems} 4259\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal_compare_any_realm:c.krb5_principal_compare_any_realm}}% 4260\pysigstartmultiline 4261\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_principal\_compare\_any\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ2}}{}% 4262\pysigstopmultiline 4263\end{fulllineitems} 4264 4265\begin{quote}\begin{description} 4266\item[{param}] \leavevmode 4267\sphinxAtStartPar 4268\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4269 4270\sphinxAtStartPar 4271\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} \sphinxhyphen{} First principal 4272 4273\sphinxAtStartPar 4274\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} \sphinxhyphen{} Second principal 4275 4276\end{description}\end{quote} 4277\begin{quote}\begin{description} 4278\item[{retval}] \leavevmode\begin{itemize} 4279\item {} 4280\sphinxAtStartPar 4281TRUE if the principals are the same; FALSE otherwise 4282 4283\end{itemize} 4284 4285\end{description}\end{quote} 4286 4287\sphinxAtStartPar 4288Similar to krb5\_principal\_compare(), but do not compare the realm components of the principals. 4289 4290 4291\subsubsection{krb5\_principal\_compare\_flags \sphinxhyphen{} Compare two principals with additional flags.} 4292\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)@\spxentry{krb5\_principal\_compare\_flags}\spxextra{C function}} 4293 4294\begin{fulllineitems} 4295\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal_compare_flags:c.krb5_principal_compare_flags}}% 4296\pysigstartmultiline 4297\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_principal\_compare\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ2}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{flags}}{}% 4298\pysigstopmultiline 4299\end{fulllineitems} 4300 4301\begin{quote}\begin{description} 4302\item[{param}] \leavevmode 4303\sphinxAtStartPar 4304\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4305 4306\sphinxAtStartPar 4307\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} \sphinxhyphen{} First principal 4308 4309\sphinxAtStartPar 4310\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} \sphinxhyphen{} Second principal 4311 4312\sphinxAtStartPar 4313\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags 4314 4315\end{description}\end{quote} 4316\begin{quote}\begin{description} 4317\item[{retval}] \leavevmode\begin{itemize} 4318\item {} 4319\sphinxAtStartPar 4320TRUE if the principal names are the same; FALSE otherwise 4321 4322\end{itemize} 4323 4324\end{description}\end{quote} 4325 4326\sphinxAtStartPar 4327Valid flags are: 4328\begin{itemize} 4329\item {} 4330\sphinxAtStartPar 4331\#KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM \sphinxhyphen{} ignore realm component 4332 4333\item {} 4334\sphinxAtStartPar 4335\#KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE \sphinxhyphen{} UPNs as real principals 4336 4337\item {} 4338\sphinxAtStartPar 4339\#KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD case\sphinxhyphen{}insensitive 4340 4341\item {} 4342\sphinxAtStartPar 4343\#KRB5\_PRINCIPAL\_COMPARE\_UTF8 \sphinxhyphen{} treat principals as UTF\sphinxhyphen{}8 4344 4345\end{itemize} 4346 4347 4348\sphinxstrong{See also:} 4349\nopagebreak 4350 4351 4352\sphinxAtStartPar 4353krb5\_principal\_compare() 4354 4355 4356 4357 4358\subsubsection{krb5\_prompter\_posix \sphinxhyphen{} Prompt user for password.} 4359\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)@\spxentry{krb5\_prompter\_posix}\spxextra{C function}} 4360 4361\begin{fulllineitems} 4362\phantomsection\label{\detokenize{appdev/refs/api/krb5_prompter_posix:c.krb5_prompter_posix}}% 4363\pysigstartmultiline 4364\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_prompter\_posix}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{banner}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{num\_prompts}, {\hyperref[\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}]{\sphinxcrossref{\DUrole{n}{krb5\_prompt}}}}\DUrole{w}{ }\DUrole{n}{prompts}}{}% 4365\pysigstopmultiline 4366\end{fulllineitems} 4367 4368\begin{quote}\begin{description} 4369\item[{param}] \leavevmode 4370\sphinxAtStartPar 4371\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4372 4373\sphinxAtStartPar 4374\sphinxstylestrong{data} \sphinxhyphen{} Unused (callback argument) 4375 4376\sphinxAtStartPar 4377\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} Name to output during prompt 4378 4379\sphinxAtStartPar 4380\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{banner} \sphinxhyphen{} Banner to output during prompt 4381 4382\sphinxAtStartPar 4383\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_prompts} \sphinxhyphen{} Number of prompts in \sphinxstyleemphasis{prompts} 4384 4385\sphinxAtStartPar 4386\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompts} \sphinxhyphen{} Array of prompts and replies 4387 4388\end{description}\end{quote} 4389\begin{quote}\begin{description} 4390\item[{retval}] \leavevmode\begin{itemize} 4391\item {} 4392\sphinxAtStartPar 43930 Success 4394 4395\end{itemize} 4396 4397\item[{return}] \leavevmode\begin{itemize} 4398\item {} 4399\sphinxAtStartPar 4400Kerberos error codes 4401 4402\end{itemize} 4403 4404\end{description}\end{quote} 4405 4406\sphinxAtStartPar 4407This function is intended to be used as a prompter callback for krb5\_get\_init\_creds\_password() or krb5\_init\_creds\_init(). 4408 4409\sphinxAtStartPar 4410Writes \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. 4411 4412 4413\subsubsection{krb5\_realm\_compare \sphinxhyphen{} Compare the realms of two principals.} 4414\label{\detokenize{appdev/refs/api/krb5_realm_compare:krb5-realm-compare-compare-the-realms-of-two-principals}}\label{\detokenize{appdev/refs/api/krb5_realm_compare::doc}}\index{krb5\_realm\_compare (C function)@\spxentry{krb5\_realm\_compare}\spxextra{C function}} 4415 4416\begin{fulllineitems} 4417\phantomsection\label{\detokenize{appdev/refs/api/krb5_realm_compare:c.krb5_realm_compare}}% 4418\pysigstartmultiline 4419\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_realm\_compare}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ1}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ2}}{}% 4420\pysigstopmultiline 4421\end{fulllineitems} 4422 4423\begin{quote}\begin{description} 4424\item[{param}] \leavevmode 4425\sphinxAtStartPar 4426\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4427 4428\sphinxAtStartPar 4429\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ1} \sphinxhyphen{} First principal 4430 4431\sphinxAtStartPar 4432\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ2} \sphinxhyphen{} Second principal 4433 4434\end{description}\end{quote} 4435\begin{quote}\begin{description} 4436\item[{retval}] \leavevmode\begin{itemize} 4437\item {} 4438\sphinxAtStartPar 4439TRUE if the realm names are the same; FALSE otherwise 4440 4441\end{itemize} 4442 4443\end{description}\end{quote} 4444 4445 4446\subsubsection{krb5\_responder\_get\_challenge \sphinxhyphen{} Retrieve the challenge data for a given question in the responder context.} 4447\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)@\spxentry{krb5\_responder\_get\_challenge}\spxextra{C function}} 4448 4449\begin{fulllineitems} 4450\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_get_challenge:c.krb5_responder_get_challenge}}% 4451\pysigstartmultiline 4452\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_get\_challenge}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{question}}{}% 4453\pysigstopmultiline 4454\end{fulllineitems} 4455 4456\begin{quote}\begin{description} 4457\item[{param}] \leavevmode 4458\sphinxAtStartPar 4459\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4460 4461\sphinxAtStartPar 4462\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4463 4464\sphinxAtStartPar 4465\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{question} \sphinxhyphen{} Question name 4466 4467\end{description}\end{quote} 4468 4469\sphinxAtStartPar 4470Return 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\sphinxhyphen{}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. 4471 4472\begin{sphinxadmonition}{note}{Note:} 4473\sphinxAtStartPar 4474New in 1.11 4475\end{sphinxadmonition} 4476 4477 4478\subsubsection{krb5\_responder\_list\_questions \sphinxhyphen{} List the question names contained in the responder context.} 4479\label{\detokenize{appdev/refs/api/krb5_responder_list_questions:krb5-responder-list-questions-list-the-question-names-contained-in-the-responder-context}}\label{\detokenize{appdev/refs/api/krb5_responder_list_questions::doc}}\index{krb5\_responder\_list\_questions (C function)@\spxentry{krb5\_responder\_list\_questions}\spxextra{C function}} 4480 4481\begin{fulllineitems} 4482\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_list_questions:c.krb5_responder_list_questions}}% 4483\pysigstartmultiline 4484\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_list\_questions}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}}{}% 4485\pysigstopmultiline 4486\end{fulllineitems} 4487 4488\begin{quote}\begin{description} 4489\item[{param}] \leavevmode 4490\sphinxAtStartPar 4491\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4492 4493\sphinxAtStartPar 4494\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4495 4496\end{description}\end{quote} 4497 4498\sphinxAtStartPar 4499Return a pointer to a null\sphinxhyphen{}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 krb5\_responder\_get\_challenge() and answered using krb5\_responder\_set\_answer(). 4500 4501\begin{sphinxadmonition}{note}{Note:} 4502\sphinxAtStartPar 4503New in 1.11 4504\end{sphinxadmonition} 4505 4506 4507\subsubsection{krb5\_responder\_set\_answer \sphinxhyphen{} Answer a named question in the responder context.} 4508\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)@\spxentry{krb5\_responder\_set\_answer}\spxextra{C function}} 4509 4510\begin{fulllineitems} 4511\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_set_answer:c.krb5_responder_set_answer}}% 4512\pysigstartmultiline 4513\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_set\_answer}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{question}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{answer}}{}% 4514\pysigstopmultiline 4515\end{fulllineitems} 4516 4517\begin{quote}\begin{description} 4518\item[{param}] \leavevmode 4519\sphinxAtStartPar 4520\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4521 4522\sphinxAtStartPar 4523\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4524 4525\sphinxAtStartPar 4526\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{question} \sphinxhyphen{} Question name 4527 4528\sphinxAtStartPar 4529\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{answer} \sphinxhyphen{} The string to set (MUST be printable UTF\sphinxhyphen{}8) 4530 4531\end{description}\end{quote} 4532\begin{quote}\begin{description} 4533\item[{retval}] \leavevmode\begin{itemize} 4534\item {} 4535\sphinxAtStartPar 4536EINVAL question is not present within rctx 4537 4538\end{itemize} 4539 4540\end{description}\end{quote} 4541 4542\sphinxAtStartPar 4543This function supplies an answer to \sphinxstyleemphasis{question} within \sphinxstyleemphasis{rctx} . The appropriate form of the answer depends on the question name. 4544 4545\begin{sphinxadmonition}{note}{Note:} 4546\sphinxAtStartPar 4547New in 1.11 4548\end{sphinxadmonition} 4549 4550 4551\subsubsection{krb5\_responder\_otp\_get\_challenge \sphinxhyphen{} Decode the KRB5\_RESPONDER\_QUESTION\_OTP to a C struct.} 4552\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)@\spxentry{krb5\_responder\_otp\_get\_challenge}\spxextra{C function}} 4553 4554\begin{fulllineitems} 4555\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_otp_get_challenge:c.krb5_responder_otp_get_challenge}}% 4556\pysigstartmultiline 4557\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_otp\_get\_challenge}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_challenge}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{chl}}{}% 4558\pysigstopmultiline 4559\end{fulllineitems} 4560 4561\begin{quote}\begin{description} 4562\item[{param}] \leavevmode 4563\sphinxAtStartPar 4564\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4565 4566\sphinxAtStartPar 4567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4568 4569\sphinxAtStartPar 4570\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{chl} \sphinxhyphen{} Challenge structure 4571 4572\end{description}\end{quote} 4573 4574\sphinxAtStartPar 4575A 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. 4576 4577\sphinxAtStartPar 4578The returned value must be passed to krb5\_responder\_otp\_challenge\_free() to be freed. 4579 4580\begin{sphinxadmonition}{note}{Note:} 4581\sphinxAtStartPar 4582New in 1.11 4583\end{sphinxadmonition} 4584 4585 4586\subsubsection{krb5\_responder\_otp\_set\_answer \sphinxhyphen{} Answer the KRB5\_RESPONDER\_QUESTION\_OTP question.} 4587\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)@\spxentry{krb5\_responder\_otp\_set\_answer}\spxextra{C function}} 4588 4589\begin{fulllineitems} 4590\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_otp_set_answer:c.krb5_responder_otp_set_answer}}% 4591\pysigstartmultiline 4592\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_otp\_set\_answer}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{ti}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{value}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pin}}{}% 4593\pysigstopmultiline 4594\end{fulllineitems} 4595 4596\begin{quote}\begin{description} 4597\item[{param}] \leavevmode 4598\sphinxAtStartPar 4599\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4600 4601\sphinxAtStartPar 4602\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4603 4604\sphinxAtStartPar 4605\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ti} \sphinxhyphen{} The index of the tokeninfo selected 4606 4607\sphinxAtStartPar 4608\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{value} \sphinxhyphen{} The value to set, or NULL for none 4609 4610\sphinxAtStartPar 4611\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pin} \sphinxhyphen{} The pin to set, or NULL for none 4612 4613\end{description}\end{quote} 4614 4615\begin{sphinxadmonition}{note}{Note:} 4616\sphinxAtStartPar 4617New in 1.11 4618\end{sphinxadmonition} 4619 4620 4621\subsubsection{krb5\_responder\_otp\_challenge\_free \sphinxhyphen{} Free the value returned by krb5\_responder\_otp\_get\_challenge().} 4622\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)@\spxentry{krb5\_responder\_otp\_challenge\_free}\spxextra{C function}} 4623 4624\begin{fulllineitems} 4625\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_otp_challenge_free:c.krb5_responder_otp_challenge_free}}% 4626\pysigstartmultiline 4627\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_otp\_challenge\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_challenge}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{chl}}{}% 4628\pysigstopmultiline 4629\end{fulllineitems} 4630 4631\begin{quote}\begin{description} 4632\item[{param}] \leavevmode 4633\sphinxAtStartPar 4634\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4635 4636\sphinxAtStartPar 4637\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4638 4639\sphinxAtStartPar 4640\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{chl} \sphinxhyphen{} The challenge to free 4641 4642\end{description}\end{quote} 4643 4644\begin{sphinxadmonition}{note}{Note:} 4645\sphinxAtStartPar 4646New in 1.11 4647\end{sphinxadmonition} 4648 4649 4650\subsubsection{krb5\_responder\_pkinit\_get\_challenge \sphinxhyphen{} Decode the KRB5\_RESPONDER\_QUESTION\_PKINIT to a C struct.} 4651\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)@\spxentry{krb5\_responder\_pkinit\_get\_challenge}\spxextra{C function}} 4652 4653\begin{fulllineitems} 4654\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_get_challenge:c.krb5_responder_pkinit_get_challenge}}% 4655\pysigstartmultiline 4656\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_pkinit\_get\_challenge}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_pkinit\_challenge}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{chl\_out}}{}% 4657\pysigstopmultiline 4658\end{fulllineitems} 4659 4660\begin{quote}\begin{description} 4661\item[{param}] \leavevmode 4662\sphinxAtStartPar 4663\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4664 4665\sphinxAtStartPar 4666\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4667 4668\sphinxAtStartPar 4669\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{chl\_out} \sphinxhyphen{} Challenge structure 4670 4671\end{description}\end{quote} 4672 4673\sphinxAtStartPar 4674A 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. 4675 4676\sphinxAtStartPar 4677The returned value must be passed to krb5\_responder\_pkinit\_challenge\_free() to be freed. 4678 4679\begin{sphinxadmonition}{note}{Note:} 4680\sphinxAtStartPar 4681New in 1.12 4682\end{sphinxadmonition} 4683 4684 4685\subsubsection{krb5\_responder\_pkinit\_set\_answer \sphinxhyphen{} Answer the KRB5\_RESPONDER\_QUESTION\_PKINIT question for one identity.} 4686\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)@\spxentry{krb5\_responder\_pkinit\_set\_answer}\spxextra{C function}} 4687 4688\begin{fulllineitems} 4689\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_set_answer:c.krb5_responder_pkinit_set_answer}}% 4690\pysigstartmultiline 4691\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_pkinit\_set\_answer}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{identity}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pin}}{}% 4692\pysigstopmultiline 4693\end{fulllineitems} 4694 4695\begin{quote}\begin{description} 4696\item[{param}] \leavevmode 4697\sphinxAtStartPar 4698\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4699 4700\sphinxAtStartPar 4701\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4702 4703\sphinxAtStartPar 4704\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{identity} \sphinxhyphen{} The identity for which a PIN is being supplied 4705 4706\sphinxAtStartPar 4707\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pin} \sphinxhyphen{} The provided PIN, or NULL for none 4708 4709\end{description}\end{quote} 4710 4711\begin{sphinxadmonition}{note}{Note:} 4712\sphinxAtStartPar 4713New in 1.12 4714\end{sphinxadmonition} 4715 4716 4717\subsubsection{krb5\_responder\_pkinit\_challenge\_free \sphinxhyphen{} Free the value returned by krb5\_responder\_pkinit\_get\_challenge().} 4718\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)@\spxentry{krb5\_responder\_pkinit\_challenge\_free}\spxextra{C function}} 4719 4720\begin{fulllineitems} 4721\phantomsection\label{\detokenize{appdev/refs/api/krb5_responder_pkinit_challenge_free:c.krb5_responder_pkinit_challenge_free}}% 4722\pysigstartmultiline 4723\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_pkinit\_challenge\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_context}}}}\DUrole{w}{ }\DUrole{n}{rctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_pkinit\_challenge}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{chl}}{}% 4724\pysigstopmultiline 4725\end{fulllineitems} 4726 4727\begin{quote}\begin{description} 4728\item[{param}] \leavevmode 4729\sphinxAtStartPar 4730\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 4731 4732\sphinxAtStartPar 4733\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rctx} \sphinxhyphen{} Responder context 4734 4735\sphinxAtStartPar 4736\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{chl} \sphinxhyphen{} The challenge to free 4737 4738\end{description}\end{quote} 4739 4740\begin{sphinxadmonition}{note}{Note:} 4741\sphinxAtStartPar 4742New in 1.12 4743\end{sphinxadmonition} 4744 4745 4746\subsubsection{krb5\_set\_default\_realm \sphinxhyphen{} Override the default realm for the specified context.} 4747\label{\detokenize{appdev/refs/api/krb5_set_default_realm:krb5-set-default-realm-override-the-default-realm-for-the-specified-context}}\label{\detokenize{appdev/refs/api/krb5_set_default_realm::doc}}\index{krb5\_set\_default\_realm (C function)@\spxentry{krb5\_set\_default\_realm}\spxextra{C function}} 4748 4749\begin{fulllineitems} 4750\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_default_realm:c.krb5_set_default_realm}}% 4751\pysigstartmultiline 4752\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_default\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{lrealm}}{}% 4753\pysigstopmultiline 4754\end{fulllineitems} 4755 4756\begin{quote}\begin{description} 4757\item[{param}] \leavevmode 4758\sphinxAtStartPar 4759\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4760 4761\sphinxAtStartPar 4762\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{lrealm} \sphinxhyphen{} Realm name for the default realm 4763 4764\end{description}\end{quote} 4765\begin{quote}\begin{description} 4766\item[{retval}] \leavevmode\begin{itemize} 4767\item {} 4768\sphinxAtStartPar 47690 Success 4770 4771\end{itemize} 4772 4773\item[{return}] \leavevmode\begin{itemize} 4774\item {} 4775\sphinxAtStartPar 4776Kerberos error codes 4777 4778\end{itemize} 4779 4780\end{description}\end{quote} 4781 4782\sphinxAtStartPar 4783If \sphinxstyleemphasis{lrealm} is NULL, clear the default realm setting. 4784 4785 4786\subsubsection{krb5\_set\_password \sphinxhyphen{} Set a password for a principal using specified credentials.} 4787\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)@\spxentry{krb5\_set\_password}\spxextra{C function}} 4788 4789\begin{fulllineitems} 4790\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_password:c.krb5_set_password}}% 4791\pysigstartmultiline 4792\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_password}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{newpw}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{change\_password\_for}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_code\_string}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_string}}{}% 4793\pysigstopmultiline 4794\end{fulllineitems} 4795 4796\begin{quote}\begin{description} 4797\item[{param}] \leavevmode 4798\sphinxAtStartPar 4799\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4800 4801\sphinxAtStartPar 4802\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Credentials for kadmin/changepw service 4803 4804\sphinxAtStartPar 4805\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{newpw} \sphinxhyphen{} New password 4806 4807\sphinxAtStartPar 4808\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{change\_password\_for} \sphinxhyphen{} Change the password for this principal 4809 4810\sphinxAtStartPar 4811\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code} \sphinxhyphen{} Numeric error code from server 4812 4813\sphinxAtStartPar 4814\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code\_string} \sphinxhyphen{} String equivalent to \sphinxstyleemphasis{result\_code} 4815 4816\sphinxAtStartPar 4817\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_string} \sphinxhyphen{} Data returned from the remote system 4818 4819\end{description}\end{quote} 4820\begin{quote}\begin{description} 4821\item[{retval}] \leavevmode\begin{itemize} 4822\item {} 4823\sphinxAtStartPar 48240 Success and result\_code is set to \#KRB5\_KPASSWD\_SUCCESS. 4825 4826\end{itemize} 4827 4828\item[{return}] \leavevmode\begin{itemize} 4829\item {} 4830\sphinxAtStartPar 4831Kerberos error codes. 4832 4833\end{itemize} 4834 4835\end{description}\end{quote} 4836 4837\sphinxAtStartPar 4838This 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. 4839 4840\sphinxAtStartPar 4841The error code and strings are returned in \sphinxstyleemphasis{result\_code} , \sphinxstyleemphasis{result\_code\_string} and \sphinxstyleemphasis{result\_string} . 4842 4843\begin{sphinxadmonition}{note}{Note:} 4844\sphinxAtStartPar 4845If \sphinxstyleemphasis{change\_password\_for} is NULL, the change is performed on the current principal. If \sphinxstyleemphasis{change\_password\_for} is non\sphinxhyphen{}null, the change is performed on the principal name passed in \sphinxstyleemphasis{change\_password\_for} . 4846\end{sphinxadmonition} 4847 4848 4849\subsubsection{krb5\_set\_password\_using\_ccache \sphinxhyphen{} Set a password for a principal using cached credentials.} 4850\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)@\spxentry{krb5\_set\_password\_using\_ccache}\spxextra{C function}} 4851 4852\begin{fulllineitems} 4853\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_password_using_ccache:c.krb5_set_password_using_ccache}}% 4854\pysigstartmultiline 4855\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_password\_using\_ccache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{newpw}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{change\_password\_for}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_code\_string}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{result\_string}}{}% 4856\pysigstopmultiline 4857\end{fulllineitems} 4858 4859\begin{quote}\begin{description} 4860\item[{param}] \leavevmode 4861\sphinxAtStartPar 4862\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4863 4864\sphinxAtStartPar 4865\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache 4866 4867\sphinxAtStartPar 4868\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{newpw} \sphinxhyphen{} New password 4869 4870\sphinxAtStartPar 4871\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{change\_password\_for} \sphinxhyphen{} Change the password for this principal 4872 4873\sphinxAtStartPar 4874\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code} \sphinxhyphen{} Numeric error code from server 4875 4876\sphinxAtStartPar 4877\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_code\_string} \sphinxhyphen{} String equivalent to \sphinxstyleemphasis{result\_code} 4878 4879\sphinxAtStartPar 4880\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{result\_string} \sphinxhyphen{} Data returned from the remote system 4881 4882\end{description}\end{quote} 4883\begin{quote}\begin{description} 4884\item[{retval}] \leavevmode\begin{itemize} 4885\item {} 4886\sphinxAtStartPar 48870 Success 4888 4889\end{itemize} 4890 4891\item[{return}] \leavevmode\begin{itemize} 4892\item {} 4893\sphinxAtStartPar 4894Kerberos error codes 4895 4896\end{itemize} 4897 4898\end{description}\end{quote} 4899 4900\sphinxAtStartPar 4901This 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. 4902 4903\sphinxAtStartPar 4904The error code and strings are returned in \sphinxstyleemphasis{result\_code} , \sphinxstyleemphasis{result\_code\_string} and \sphinxstyleemphasis{result\_string} . 4905 4906\begin{sphinxadmonition}{note}{Note:} 4907\sphinxAtStartPar 4908If \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. 4909\end{sphinxadmonition} 4910 4911 4912\subsubsection{krb5\_set\_principal\_realm \sphinxhyphen{} Set the realm field of a principal.} 4913\label{\detokenize{appdev/refs/api/krb5_set_principal_realm:krb5-set-principal-realm-set-the-realm-field-of-a-principal}}\label{\detokenize{appdev/refs/api/krb5_set_principal_realm::doc}}\index{krb5\_set\_principal\_realm (C function)@\spxentry{krb5\_set\_principal\_realm}\spxextra{C function}} 4914 4915\begin{fulllineitems} 4916\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_principal_realm:c.krb5_set_principal_realm}}% 4917\pysigstartmultiline 4918\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_principal\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}}{}% 4919\pysigstopmultiline 4920\end{fulllineitems} 4921 4922\begin{quote}\begin{description} 4923\item[{param}] \leavevmode 4924\sphinxAtStartPar 4925\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4926 4927\sphinxAtStartPar 4928\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal name 4929 4930\sphinxAtStartPar 4931\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm name 4932 4933\end{description}\end{quote} 4934\begin{quote}\begin{description} 4935\item[{retval}] \leavevmode\begin{itemize} 4936\item {} 4937\sphinxAtStartPar 49380 Success 4939 4940\end{itemize} 4941 4942\item[{return}] \leavevmode\begin{itemize} 4943\item {} 4944\sphinxAtStartPar 4945Kerberos error codes 4946 4947\end{itemize} 4948 4949\end{description}\end{quote} 4950 4951\sphinxAtStartPar 4952Set the realm name part of \sphinxstyleemphasis{principal} to \sphinxstyleemphasis{realm} , overwriting the previous realm. 4953 4954 4955\subsubsection{krb5\_set\_trace\_callback \sphinxhyphen{} Specify a callback function for trace events.} 4956\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)@\spxentry{krb5\_set\_trace\_callback}\spxextra{C function}} 4957 4958\begin{fulllineitems} 4959\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_trace_callback:c.krb5_set_trace_callback}}% 4960\pysigstartmultiline 4961\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_trace\_callback}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_trace_callback:c.krb5_trace_callback}]{\sphinxcrossref{\DUrole{n}{krb5\_trace\_callback}}}}\DUrole{w}{ }\DUrole{n}{fn}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cb\_data}}{}% 4962\pysigstopmultiline 4963\end{fulllineitems} 4964 4965\begin{quote}\begin{description} 4966\item[{param}] \leavevmode 4967\sphinxAtStartPar 4968\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 4969 4970\sphinxAtStartPar 4971\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fn} \sphinxhyphen{} Callback function 4972 4973\sphinxAtStartPar 4974\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cb\_data} \sphinxhyphen{} Callback data 4975 4976\end{description}\end{quote} 4977\begin{quote}\begin{description} 4978\item[{return}] \leavevmode\begin{itemize} 4979\item {} 4980\sphinxAtStartPar 4981Returns KRB5\_TRACE\_NOSUPP if tracing is not supported in the library (unless fn is NULL). 4982 4983\end{itemize} 4984 4985\end{description}\end{quote} 4986 4987\sphinxAtStartPar 4988Specify 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} . 4989 4990\begin{sphinxadmonition}{note}{Note:} 4991\sphinxAtStartPar 4992This function overrides the information passed through the \sphinxstyleemphasis{KRB5\_TRACE} environment variable. 4993\end{sphinxadmonition} 4994 4995\begin{sphinxadmonition}{note}{Note:} 4996\sphinxAtStartPar 4997New in 1.9 4998\end{sphinxadmonition} 4999 5000 5001\subsubsection{krb5\_set\_trace\_filename \sphinxhyphen{} Specify a file name for directing trace events.} 5002\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)@\spxentry{krb5\_set\_trace\_filename}\spxextra{C function}} 5003 5004\begin{fulllineitems} 5005\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_trace_filename:c.krb5_set_trace_filename}}% 5006\pysigstartmultiline 5007\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_trace\_filename}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{filename}}{}% 5008\pysigstopmultiline 5009\end{fulllineitems} 5010 5011\begin{quote}\begin{description} 5012\item[{param}] \leavevmode 5013\sphinxAtStartPar 5014\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5015 5016\sphinxAtStartPar 5017\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{filename} \sphinxhyphen{} File name 5018 5019\end{description}\end{quote} 5020\begin{quote}\begin{description} 5021\item[{retval}] \leavevmode\begin{itemize} 5022\item {} 5023\sphinxAtStartPar 5024KRB5\_TRACE\_NOSUPP Tracing is not supported in the library. 5025 5026\end{itemize} 5027 5028\end{description}\end{quote} 5029 5030\sphinxAtStartPar 5031Open \sphinxstyleemphasis{filename} for appending (creating it, if necessary) and set up a callback to write trace events to it. 5032 5033\begin{sphinxadmonition}{note}{Note:} 5034\sphinxAtStartPar 5035This function overrides the information passed through the \sphinxstyleemphasis{KRB5\_TRACE} environment variable. 5036\end{sphinxadmonition} 5037 5038\begin{sphinxadmonition}{note}{Note:} 5039\sphinxAtStartPar 5040New in 1.9 5041\end{sphinxadmonition} 5042 5043 5044\subsubsection{krb5\_sname\_match \sphinxhyphen{} Test whether a principal matches a matching principal.} 5045\label{\detokenize{appdev/refs/api/krb5_sname_match:krb5-sname-match-test-whether-a-principal-matches-a-matching-principal}}\label{\detokenize{appdev/refs/api/krb5_sname_match::doc}}\index{krb5\_sname\_match (C function)@\spxentry{krb5\_sname\_match}\spxextra{C function}} 5046 5047\begin{fulllineitems} 5048\phantomsection\label{\detokenize{appdev/refs/api/krb5_sname_match:c.krb5_sname_match}}% 5049\pysigstartmultiline 5050\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_sname\_match}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{matching}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ}}{}% 5051\pysigstopmultiline 5052\end{fulllineitems} 5053 5054\begin{quote}\begin{description} 5055\item[{param}] \leavevmode 5056\sphinxAtStartPar 5057\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5058 5059\sphinxAtStartPar 5060\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{matching} \sphinxhyphen{} Matching principal 5061 5062\sphinxAtStartPar 5063\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ} \sphinxhyphen{} Principal to test 5064 5065\end{description}\end{quote} 5066\begin{quote}\begin{description} 5067\item[{return}] \leavevmode\begin{itemize} 5068\item {} 5069\sphinxAtStartPar 5070TRUE if princ matches matching , FALSE otherwise. 5071 5072\end{itemize} 5073 5074\end{description}\end{quote} 5075 5076\sphinxAtStartPar 5077If \sphinxstyleemphasis{matching} is NULL, return TRUE. If \sphinxstyleemphasis{matching} is not a matching principal, return the value of krb5\_principal\_compare(context, matching, princ). 5078 5079\begin{sphinxadmonition}{note}{Note:} 5080\sphinxAtStartPar 5081A matching principal is a host\sphinxhyphen{}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\sphinxhyphen{}empty (and non\sphinxhyphen{}ignored) components of the latter. 5082\end{sphinxadmonition} 5083 5084 5085\subsubsection{krb5\_sname\_to\_principal \sphinxhyphen{} Generate a full principal name from a service name.} 5086\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)@\spxentry{krb5\_sname\_to\_principal}\spxextra{C function}} 5087 5088\begin{fulllineitems} 5089\phantomsection\label{\detokenize{appdev/refs/api/krb5_sname_to_principal:c.krb5_sname_to_principal}}% 5090\pysigstartmultiline 5091\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_sname\_to\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{hostname}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{sname}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{n}{type}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ret\_princ}}{}% 5092\pysigstopmultiline 5093\end{fulllineitems} 5094 5095\begin{quote}\begin{description} 5096\item[{param}] \leavevmode 5097\sphinxAtStartPar 5098\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5099 5100\sphinxAtStartPar 5101\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hostname} \sphinxhyphen{} Host name, or NULL to use local host 5102 5103\sphinxAtStartPar 5104\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{sname} \sphinxhyphen{} Service name, or NULL to use \sphinxstylestrong{“host”} 5105 5106\sphinxAtStartPar 5107\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Principal type 5108 5109\sphinxAtStartPar 5110\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret\_princ} \sphinxhyphen{} Generated principal 5111 5112\end{description}\end{quote} 5113\begin{quote}\begin{description} 5114\item[{retval}] \leavevmode\begin{itemize} 5115\item {} 5116\sphinxAtStartPar 51170 Success 5118 5119\end{itemize} 5120 5121\item[{return}] \leavevmode\begin{itemize} 5122\item {} 5123\sphinxAtStartPar 5124Kerberos error codes 5125 5126\end{itemize} 5127 5128\end{description}\end{quote} 5129 5130\sphinxAtStartPar 5131This 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 krb5\_get\_host\_realm(). In some cases this may be the referral (empty) realm. 5132 5133\sphinxAtStartPar 5134The \sphinxstyleemphasis{type} can be one of the following: 5135\begin{quote} 5136\begin{itemize} 5137\item {} 5138\sphinxAtStartPar 5139\#KRB5\_NT\_SRV\_HST canonicalizes the host name before looking up the realm and generating the principal. 5140 5141\item {} 5142\sphinxAtStartPar 5143\#KRB5\_NT\_UNKNOWN accepts the hostname as given, and does not canonicalize it. 5144 5145\end{itemize} 5146 5147\sphinxAtStartPar 5148Use krb5\_free\_principal to free \sphinxstyleemphasis{ret\_princ} when it is no longer needed. 5149\end{quote} 5150 5151 5152\subsubsection{krb5\_unparse\_name \sphinxhyphen{} Convert a krb5\_principal structure to a string representation.} 5153\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)@\spxentry{krb5\_unparse\_name}\spxextra{C function}} 5154 5155\begin{fulllineitems} 5156\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name:c.krb5_unparse_name}}% 5157\pysigstartmultiline 5158\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_unparse\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{name}}{}% 5159\pysigstopmultiline 5160\end{fulllineitems} 5161 5162\begin{quote}\begin{description} 5163\item[{param}] \leavevmode 5164\sphinxAtStartPar 5165\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5166 5167\sphinxAtStartPar 5168\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal 5169 5170\sphinxAtStartPar 5171\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} \sphinxhyphen{} String representation of principal name 5172 5173\end{description}\end{quote} 5174\begin{quote}\begin{description} 5175\item[{retval}] \leavevmode\begin{itemize} 5176\item {} 5177\sphinxAtStartPar 51780 Success 5179 5180\end{itemize} 5181 5182\item[{return}] \leavevmode\begin{itemize} 5183\item {} 5184\sphinxAtStartPar 5185Kerberos error codes 5186 5187\end{itemize} 5188 5189\end{description}\end{quote} 5190 5191\sphinxAtStartPar 5192The resulting string representation uses the format and quoting conventions described for krb5\_parse\_name(). 5193 5194\sphinxAtStartPar 5195Use krb5\_free\_unparsed\_name() to free \sphinxstyleemphasis{name} when it is no longer needed. 5196 5197 5198\subsubsection{krb5\_unparse\_name\_ext \sphinxhyphen{} Convert krb5\_principal structure to string and length.} 5199\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)@\spxentry{krb5\_unparse\_name\_ext}\spxextra{C function}} 5200 5201\begin{fulllineitems} 5202\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name_ext:c.krb5_unparse_name_ext}}% 5203\pysigstartmultiline 5204\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_unparse\_name\_ext}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{name}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{size}}{}% 5205\pysigstopmultiline 5206\end{fulllineitems} 5207 5208\begin{quote}\begin{description} 5209\item[{param}] \leavevmode 5210\sphinxAtStartPar 5211\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5212 5213\sphinxAtStartPar 5214\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal 5215 5216\sphinxAtStartPar 5217\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{name} \sphinxhyphen{} String representation of principal name 5218 5219\sphinxAtStartPar 5220\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{size} \sphinxhyphen{} Size of unparsed name 5221 5222\end{description}\end{quote} 5223\begin{quote}\begin{description} 5224\item[{retval}] \leavevmode\begin{itemize} 5225\item {} 5226\sphinxAtStartPar 52270 Success 5228 5229\end{itemize} 5230 5231\item[{return}] \leavevmode\begin{itemize} 5232\item {} 5233\sphinxAtStartPar 5234Kerberos error codes. On failure name is set to NULL 5235 5236\end{itemize} 5237 5238\end{description}\end{quote} 5239 5240\sphinxAtStartPar 5241This function is similar to 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} . 5242 5243\sphinxAtStartPar 5244If size is NULL, this function behaves exactly as krb5\_unparse\_name(). 5245 5246 5247\subsubsection{krb5\_unparse\_name\_flags \sphinxhyphen{} Convert krb5\_principal structure to a string with flags.} 5248\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags:krb5-unparse-name-flags-convert-krb5-principal-structure-to-a-string-with-flags}}\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags::doc}}\index{krb5\_unparse\_name\_flags (C function)@\spxentry{krb5\_unparse\_name\_flags}\spxextra{C function}} 5249 5250\begin{fulllineitems} 5251\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags:c.krb5_unparse_name_flags}}% 5252\pysigstartmultiline 5253\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_unparse\_name\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{flags}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{name}}{}% 5254\pysigstopmultiline 5255\end{fulllineitems} 5256 5257\begin{quote}\begin{description} 5258\item[{param}] \leavevmode 5259\sphinxAtStartPar 5260\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5261 5262\sphinxAtStartPar 5263\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal 5264 5265\sphinxAtStartPar 5266\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags 5267 5268\sphinxAtStartPar 5269\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} \sphinxhyphen{} String representation of principal name 5270 5271\end{description}\end{quote} 5272\begin{quote}\begin{description} 5273\item[{retval}] \leavevmode\begin{itemize} 5274\item {} 5275\sphinxAtStartPar 52760 Success 5277 5278\end{itemize} 5279 5280\item[{return}] \leavevmode\begin{itemize} 5281\item {} 5282\sphinxAtStartPar 5283Kerberos error codes. On failure name is set to NULL 5284 5285\end{itemize} 5286 5287\end{description}\end{quote} 5288 5289\sphinxAtStartPar 5290Similar to krb5\_unparse\_name(), this function converts a krb5\_principal structure to a string representation. 5291 5292\sphinxAtStartPar 5293The following flags are valid: 5294\begin{quote} 5295\begin{itemize} 5296\item {} 5297\sphinxAtStartPar 5298\#KRB5\_PRINCIPAL\_UNPARSE\_SHORT \sphinxhyphen{} omit realm if it is the local realm 5299 5300\item {} 5301\sphinxAtStartPar 5302\#KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM \sphinxhyphen{} omit realm 5303 5304\item {} 5305\sphinxAtStartPar 5306\#KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY \sphinxhyphen{} do not quote special characters 5307 5308\end{itemize} 5309 5310\sphinxAtStartPar 5311Use krb5\_free\_unparsed\_name() to free \sphinxstyleemphasis{name} when it is no longer needed. 5312\end{quote} 5313 5314 5315\subsubsection{krb5\_unparse\_name\_flags\_ext \sphinxhyphen{} Convert krb5\_principal structure to string format with flags.} 5316\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)@\spxentry{krb5\_unparse\_name\_flags\_ext}\spxextra{C function}} 5317 5318\begin{fulllineitems} 5319\phantomsection\label{\detokenize{appdev/refs/api/krb5_unparse_name_flags_ext:c.krb5_unparse_name_flags_ext}}% 5320\pysigstartmultiline 5321\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_unparse\_name\_flags\_ext}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{flags}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{name}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{size}}{}% 5322\pysigstopmultiline 5323\end{fulllineitems} 5324 5325\begin{quote}\begin{description} 5326\item[{param}] \leavevmode 5327\sphinxAtStartPar 5328\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5329 5330\sphinxAtStartPar 5331\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal 5332 5333\sphinxAtStartPar 5334\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags 5335 5336\sphinxAtStartPar 5337\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} \sphinxhyphen{} Single string format of principal name 5338 5339\sphinxAtStartPar 5340\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{size} \sphinxhyphen{} Size of unparsed name buffer 5341 5342\end{description}\end{quote} 5343\begin{quote}\begin{description} 5344\item[{retval}] \leavevmode\begin{itemize} 5345\item {} 5346\sphinxAtStartPar 53470 Success 5348 5349\end{itemize} 5350 5351\item[{return}] \leavevmode\begin{itemize} 5352\item {} 5353\sphinxAtStartPar 5354Kerberos error codes. On failure name is set to NULL 5355 5356\end{itemize} 5357 5358\end{description}\end{quote} 5359 5360 5361\subsubsection{krb5\_us\_timeofday \sphinxhyphen{} Retrieve the system time of day, in sec and ms, since the epoch.} 5362\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)@\spxentry{krb5\_us\_timeofday}\spxextra{C function}} 5363 5364\begin{fulllineitems} 5365\phantomsection\label{\detokenize{appdev/refs/api/krb5_us_timeofday:c.krb5_us_timeofday}}% 5366\pysigstartmultiline 5367\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_us\_timeofday}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{seconds}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{microseconds}}{}% 5368\pysigstopmultiline 5369\end{fulllineitems} 5370 5371\begin{quote}\begin{description} 5372\item[{param}] \leavevmode 5373\sphinxAtStartPar 5374\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5375 5376\sphinxAtStartPar 5377\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seconds} \sphinxhyphen{} System timeofday, seconds portion 5378 5379\sphinxAtStartPar 5380\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{microseconds} \sphinxhyphen{} System timeofday, microseconds portion 5381 5382\end{description}\end{quote} 5383\begin{quote}\begin{description} 5384\item[{retval}] \leavevmode\begin{itemize} 5385\item {} 5386\sphinxAtStartPar 53870 Success 5388 5389\end{itemize} 5390 5391\item[{return}] \leavevmode\begin{itemize} 5392\item {} 5393\sphinxAtStartPar 5394Kerberos error codes 5395 5396\end{itemize} 5397 5398\end{description}\end{quote} 5399 5400\sphinxAtStartPar 5401This function retrieves the system time of day with the context specific time offset adjustment. 5402 5403 5404\subsubsection{krb5\_verify\_authdata\_kdc\_issued \sphinxhyphen{} Unwrap and verify AD\sphinxhyphen{}KDCIssued authorization data.} 5405\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)@\spxentry{krb5\_verify\_authdata\_kdc\_issued}\spxextra{C function}} 5406 5407\begin{fulllineitems} 5408\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_authdata_kdc_issued:c.krb5_verify_authdata_kdc_issued}}% 5409\pysigstartmultiline 5410\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_verify\_authdata\_kdc\_issued}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ad\_kdcissued}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{issuer}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{authdata}}{}% 5411\pysigstopmultiline 5412\end{fulllineitems} 5413 5414\begin{quote}\begin{description} 5415\item[{param}] \leavevmode 5416\sphinxAtStartPar 5417\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5418 5419\sphinxAtStartPar 5420\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Session key 5421 5422\sphinxAtStartPar 5423\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ad\_kdcissued} \sphinxhyphen{} AD\sphinxhyphen{}KDCIssued authorization data to be unwrapped 5424 5425\sphinxAtStartPar 5426\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{issuer} \sphinxhyphen{} Name of issuing principal (or NULL) 5427 5428\sphinxAtStartPar 5429\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authdata} \sphinxhyphen{} Unwrapped list of authorization data 5430 5431\end{description}\end{quote} 5432 5433\sphinxAtStartPar 5434This function unwraps an AD\sphinxhyphen{}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} . 5435 5436 5437\subsection{Rarely used public interfaces} 5438\label{\detokenize{appdev/refs/api/index:rarely-used-public-interfaces}} 5439 5440\subsubsection{krb5\_425\_conv\_principal \sphinxhyphen{} Convert a Kerberos V4 principal to a Kerberos V5 principal.} 5441\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)@\spxentry{krb5\_425\_conv\_principal}\spxextra{C function}} 5442 5443\begin{fulllineitems} 5444\phantomsection\label{\detokenize{appdev/refs/api/krb5_425_conv_principal:c.krb5_425_conv_principal}}% 5445\pysigstartmultiline 5446\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_425\_conv\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{instance}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{princ}}{}% 5447\pysigstopmultiline 5448\end{fulllineitems} 5449 5450\begin{quote}\begin{description} 5451\item[{param}] \leavevmode 5452\sphinxAtStartPar 5453\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5454 5455\sphinxAtStartPar 5456\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} V4 name 5457 5458\sphinxAtStartPar 5459\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{instance} \sphinxhyphen{} V4 instance 5460 5461\sphinxAtStartPar 5462\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm 5463 5464\sphinxAtStartPar 5465\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ} \sphinxhyphen{} V5 principal 5466 5467\end{description}\end{quote} 5468\begin{quote}\begin{description} 5469\item[{retval}] \leavevmode\begin{itemize} 5470\item {} 5471\sphinxAtStartPar 54720 Success; otherwise \sphinxhyphen{} Kerberos error codes 5473 5474\end{itemize} 5475 5476\end{description}\end{quote} 5477 5478\sphinxAtStartPar 5479This function builds a \sphinxstyleemphasis{princ} from V4 specification based on given input \sphinxstyleemphasis{name.instance@realm} . 5480 5481\sphinxAtStartPar 5482Use krb5\_free\_principal() to free \sphinxstyleemphasis{princ} when it is no longer needed. 5483 5484 5485\subsubsection{krb5\_524\_conv\_principal \sphinxhyphen{} Convert a Kerberos V5 principal to a Kerberos V4 principal.} 5486\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)@\spxentry{krb5\_524\_conv\_principal}\spxextra{C function}} 5487 5488\begin{fulllineitems} 5489\phantomsection\label{\detokenize{appdev/refs/api/krb5_524_conv_principal:c.krb5_524_conv_principal}}% 5490\pysigstartmultiline 5491\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_524\_conv\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inst}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}}{}% 5492\pysigstopmultiline 5493\end{fulllineitems} 5494 5495\begin{quote}\begin{description} 5496\item[{param}] \leavevmode 5497\sphinxAtStartPar 5498\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5499 5500\sphinxAtStartPar 5501\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{princ} \sphinxhyphen{} V5 Principal 5502 5503\sphinxAtStartPar 5504\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{name} \sphinxhyphen{} V4 principal’s name to be filled in 5505 5506\sphinxAtStartPar 5507\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{inst} \sphinxhyphen{} V4 principal’s instance name to be filled in 5508 5509\sphinxAtStartPar 5510\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Principal’s realm name to be filled in 5511 5512\end{description}\end{quote} 5513\begin{quote}\begin{description} 5514\item[{retval}] \leavevmode\begin{itemize} 5515\item {} 5516\sphinxAtStartPar 55170 Success 5518 5519\item {} 5520\sphinxAtStartPar 5521KRB5\_INVALID\_PRINCIPAL Invalid principal name 5522 5523\item {} 5524\sphinxAtStartPar 5525KRB5\_CONFIG\_CANTOPEN Can’t open or find Kerberos configuration file 5526 5527\end{itemize} 5528 5529\item[{return}] \leavevmode\begin{itemize} 5530\item {} 5531\sphinxAtStartPar 5532Kerberos error codes 5533 5534\end{itemize} 5535 5536\end{description}\end{quote} 5537 5538\sphinxAtStartPar 5539This function separates a V5 principal \sphinxstyleemphasis{princ} into \sphinxstyleemphasis{name} , \sphinxstyleemphasis{instance} , and \sphinxstyleemphasis{realm} . 5540 5541 5542\subsubsection{krb5\_address\_compare \sphinxhyphen{} Compare two Kerberos addresses.} 5543\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)@\spxentry{krb5\_address\_compare}\spxextra{C function}} 5544 5545\begin{fulllineitems} 5546\phantomsection\label{\detokenize{appdev/refs/api/krb5_address_compare:c.krb5_address_compare}}% 5547\pysigstartmultiline 5548\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_address\_compare}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addr1}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addr2}}{}% 5549\pysigstopmultiline 5550\end{fulllineitems} 5551 5552\begin{quote}\begin{description} 5553\item[{param}] \leavevmode 5554\sphinxAtStartPar 5555\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5556 5557\sphinxAtStartPar 5558\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr1} \sphinxhyphen{} First address to be compared 5559 5560\sphinxAtStartPar 5561\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr2} \sphinxhyphen{} Second address to be compared 5562 5563\end{description}\end{quote} 5564\begin{quote}\begin{description} 5565\item[{return}] \leavevmode\begin{itemize} 5566\item {} 5567\sphinxAtStartPar 5568TRUE if the addresses are the same, FALSE otherwise 5569 5570\end{itemize} 5571 5572\end{description}\end{quote} 5573 5574 5575\subsubsection{krb5\_address\_order \sphinxhyphen{} Return an ordering of the specified addresses.} 5576\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)@\spxentry{krb5\_address\_order}\spxextra{C function}} 5577 5578\begin{fulllineitems} 5579\phantomsection\label{\detokenize{appdev/refs/api/krb5_address_order:c.krb5_address_order}}% 5580\pysigstartmultiline 5581\pysiglinewithargsret{\DUrole{kt}{int}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_address\_order}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addr1}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addr2}}{}% 5582\pysigstopmultiline 5583\end{fulllineitems} 5584 5585\begin{quote}\begin{description} 5586\item[{param}] \leavevmode 5587\sphinxAtStartPar 5588\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5589 5590\sphinxAtStartPar 5591\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr1} \sphinxhyphen{} First address 5592 5593\sphinxAtStartPar 5594\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr2} \sphinxhyphen{} Second address 5595 5596\end{description}\end{quote} 5597\begin{quote}\begin{description} 5598\item[{retval}] \leavevmode\begin{itemize} 5599\item {} 5600\sphinxAtStartPar 56010 if The two addresses are the same 5602 5603\item {} 5604\sphinxAtStartPar 5605\textless{} 0 First address is less than second 5606 5607\item {} 5608\sphinxAtStartPar 5609\textgreater{} 0 First address is greater than second 5610 5611\end{itemize} 5612 5613\end{description}\end{quote} 5614 5615 5616\subsubsection{krb5\_address\_search \sphinxhyphen{} Search a list of addresses for a specified address.} 5617\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)@\spxentry{krb5\_address\_search}\spxextra{C function}} 5618 5619\begin{fulllineitems} 5620\phantomsection\label{\detokenize{appdev/refs/api/krb5_address_search:c.krb5_address_search}}% 5621\pysigstartmultiline 5622\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_address\_search}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addrlist}}{}% 5623\pysigstopmultiline 5624\end{fulllineitems} 5625 5626\begin{quote}\begin{description} 5627\item[{param}] \leavevmode 5628\sphinxAtStartPar 5629\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5630 5631\sphinxAtStartPar 5632\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addr} \sphinxhyphen{} Address to search for 5633 5634\sphinxAtStartPar 5635\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{addrlist} \sphinxhyphen{} Address list to be searched (or NULL) 5636 5637\end{description}\end{quote} 5638\begin{quote}\begin{description} 5639\item[{return}] \leavevmode\begin{itemize} 5640\item {} 5641\sphinxAtStartPar 5642TRUE if addr is listed in addrlist , or addrlist is NULL; FALSE otherwise 5643 5644\end{itemize} 5645 5646\end{description}\end{quote} 5647 5648\begin{sphinxadmonition}{note}{Note:} 5649\sphinxAtStartPar 5650If \sphinxstyleemphasis{addrlist} contains only a NetBIOS addresses, it will be treated as a null list. 5651\end{sphinxadmonition} 5652 5653 5654\subsubsection{krb5\_allow\_weak\_crypto \sphinxhyphen{} Allow the application to override the profile’s allow\_weak\_crypto setting.} 5655\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}}\label{\detokenize{appdev/refs/api/krb5_allow_weak_crypto::doc}}\index{krb5\_allow\_weak\_crypto (C function)@\spxentry{krb5\_allow\_weak\_crypto}\spxextra{C function}} 5656 5657\begin{fulllineitems} 5658\phantomsection\label{\detokenize{appdev/refs/api/krb5_allow_weak_crypto:c.krb5_allow_weak_crypto}}% 5659\pysigstartmultiline 5660\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_allow\_weak\_crypto}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{n}{enable}}{}% 5661\pysigstopmultiline 5662\end{fulllineitems} 5663 5664\begin{quote}\begin{description} 5665\item[{param}] \leavevmode 5666\sphinxAtStartPar 5667\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5668 5669\sphinxAtStartPar 5670\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enable} \sphinxhyphen{} Boolean flag 5671 5672\end{description}\end{quote} 5673\begin{quote}\begin{description} 5674\item[{retval}] \leavevmode\begin{itemize} 5675\item {} 5676\sphinxAtStartPar 56770 (always) 5678 5679\end{itemize} 5680 5681\end{description}\end{quote} 5682 5683\sphinxAtStartPar 5684This function allows an application to override the allow\_weak\_crypto setting. It is primarily for use by aklog. 5685 5686 5687\subsubsection{krb5\_aname\_to\_localname \sphinxhyphen{} Convert a principal name to a local name.} 5688\label{\detokenize{appdev/refs/api/krb5_aname_to_localname:krb5-aname-to-localname-convert-a-principal-name-to-a-local-name}}\label{\detokenize{appdev/refs/api/krb5_aname_to_localname::doc}}\index{krb5\_aname\_to\_localname (C function)@\spxentry{krb5\_aname\_to\_localname}\spxextra{C function}} 5689 5690\begin{fulllineitems} 5691\phantomsection\label{\detokenize{appdev/refs/api/krb5_aname_to_localname:c.krb5_aname_to_localname}}% 5692\pysigstartmultiline 5693\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_aname\_to\_localname}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{aname}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{lnsize\_in}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{lname}}{}% 5694\pysigstopmultiline 5695\end{fulllineitems} 5696 5697\begin{quote}\begin{description} 5698\item[{param}] \leavevmode 5699\sphinxAtStartPar 5700\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5701 5702\sphinxAtStartPar 5703\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{aname} \sphinxhyphen{} Principal name 5704 5705\sphinxAtStartPar 5706\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{lnsize\_in} \sphinxhyphen{} Space available in \sphinxstyleemphasis{lname} 5707 5708\sphinxAtStartPar 5709\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{lname} \sphinxhyphen{} Local name buffer to be filled in 5710 5711\end{description}\end{quote} 5712\begin{quote}\begin{description} 5713\item[{retval}] \leavevmode\begin{itemize} 5714\item {} 5715\sphinxAtStartPar 57160 Success 5717 5718\item {} 5719\sphinxAtStartPar 5720System errors 5721 5722\end{itemize} 5723 5724\item[{return}] \leavevmode\begin{itemize} 5725\item {} 5726\sphinxAtStartPar 5727Kerberos error codes 5728 5729\end{itemize} 5730 5731\end{description}\end{quote} 5732 5733\sphinxAtStartPar 5734If \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. 5735 5736\sphinxAtStartPar 5737Local names, rather than principal names, can be used by programs that translate to an environment\sphinxhyphen{}specific name (for example, a user account name). 5738 5739 5740\subsubsection{krb5\_anonymous\_principal \sphinxhyphen{} Build an anonymous principal.} 5741\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)@\spxentry{krb5\_anonymous\_principal}\spxextra{C function}} 5742 5743\begin{fulllineitems} 5744\phantomsection\label{\detokenize{appdev/refs/api/krb5_anonymous_principal:c.krb5_anonymous_principal}}% 5745\pysigstartmultiline 5746\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_anonymous\_principal}}}}{\DUrole{kt}{void}\DUrole{w}{ }\DUrole{n}{None}}{}% 5747\pysigstopmultiline 5748\end{fulllineitems} 5749 5750\begin{quote}\begin{description} 5751\item[{param}] \leavevmode 5752\sphinxAtStartPar 5753\sphinxstylestrong{None} 5754 5755\end{description}\end{quote} 5756 5757\sphinxAtStartPar 5758This function returns constant storage that must not be freed. 5759 5760 5761\sphinxstrong{See also:} 5762\nopagebreak 5763 5764 5765\sphinxAtStartPar 5766\#KRB5\_ANONYMOUS\_PRINCSTR 5767 5768 5769 5770 5771\subsubsection{krb5\_anonymous\_realm \sphinxhyphen{} Return an anonymous realm data.} 5772\label{\detokenize{appdev/refs/api/krb5_anonymous_realm:krb5-anonymous-realm-return-an-anonymous-realm-data}}\label{\detokenize{appdev/refs/api/krb5_anonymous_realm::doc}}\index{krb5\_anonymous\_realm (C function)@\spxentry{krb5\_anonymous\_realm}\spxextra{C function}} 5773 5774\begin{fulllineitems} 5775\phantomsection\label{\detokenize{appdev/refs/api/krb5_anonymous_realm:c.krb5_anonymous_realm}}% 5776\pysigstartmultiline 5777\pysiglinewithargsret{\DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_anonymous\_realm}}}}{\DUrole{kt}{void}\DUrole{w}{ }\DUrole{n}{None}}{}% 5778\pysigstopmultiline 5779\end{fulllineitems} 5780 5781\begin{quote}\begin{description} 5782\item[{param}] \leavevmode 5783\sphinxAtStartPar 5784\sphinxstylestrong{None} 5785 5786\end{description}\end{quote} 5787 5788\sphinxAtStartPar 5789This function returns constant storage that must not be freed. 5790 5791 5792\sphinxstrong{See also:} 5793\nopagebreak 5794 5795 5796\sphinxAtStartPar 5797\#KRB5\_ANONYMOUS\_REALMSTR 5798 5799 5800 5801 5802\subsubsection{krb5\_appdefault\_boolean \sphinxhyphen{} Retrieve a boolean value from the appdefaults section of krb5.conf.} 5803\label{\detokenize{appdev/refs/api/krb5_appdefault_boolean:krb5-appdefault-boolean-retrieve-a-boolean-value-from-the-appdefaults-section-of-krb5-conf}}\label{\detokenize{appdev/refs/api/krb5_appdefault_boolean::doc}}\index{krb5\_appdefault\_boolean (C function)@\spxentry{krb5\_appdefault\_boolean}\spxextra{C function}} 5804 5805\begin{fulllineitems} 5806\phantomsection\label{\detokenize{appdev/refs/api/krb5_appdefault_boolean:c.krb5_appdefault_boolean}}% 5807\pysigstartmultiline 5808\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_appdefault\_boolean}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{appname}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{option}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{default\_value}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ret\_value}}{}% 5809\pysigstopmultiline 5810\end{fulllineitems} 5811 5812\begin{quote}\begin{description} 5813\item[{param}] \leavevmode 5814\sphinxAtStartPar 5815\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5816 5817\sphinxAtStartPar 5818\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appname} \sphinxhyphen{} Application name 5819 5820\sphinxAtStartPar 5821\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm name 5822 5823\sphinxAtStartPar 5824\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{option} \sphinxhyphen{} Option to be checked 5825 5826\sphinxAtStartPar 5827\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{default\_value} \sphinxhyphen{} Default value to return if no match is found 5828 5829\sphinxAtStartPar 5830\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret\_value} \sphinxhyphen{} Boolean value of \sphinxstyleemphasis{option} 5831 5832\end{description}\end{quote} 5833 5834\sphinxAtStartPar 5835This function gets the application defaults for \sphinxstyleemphasis{option} based on the given \sphinxstyleemphasis{appname} and/or \sphinxstyleemphasis{realm} . 5836 5837 5838\sphinxstrong{See also:} 5839\nopagebreak 5840 5841 5842\sphinxAtStartPar 5843krb5\_appdefault\_string() 5844 5845 5846 5847 5848\subsubsection{krb5\_appdefault\_string \sphinxhyphen{} Retrieve a string value from the appdefaults section of krb5.conf.} 5849\label{\detokenize{appdev/refs/api/krb5_appdefault_string:krb5-appdefault-string-retrieve-a-string-value-from-the-appdefaults-section-of-krb5-conf}}\label{\detokenize{appdev/refs/api/krb5_appdefault_string::doc}}\index{krb5\_appdefault\_string (C function)@\spxentry{krb5\_appdefault\_string}\spxextra{C function}} 5850 5851\begin{fulllineitems} 5852\phantomsection\label{\detokenize{appdev/refs/api/krb5_appdefault_string:c.krb5_appdefault_string}}% 5853\pysigstartmultiline 5854\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_appdefault\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{appname}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{option}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{default\_value}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ret\_value}}{}% 5855\pysigstopmultiline 5856\end{fulllineitems} 5857 5858\begin{quote}\begin{description} 5859\item[{param}] \leavevmode 5860\sphinxAtStartPar 5861\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5862 5863\sphinxAtStartPar 5864\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appname} \sphinxhyphen{} Application name 5865 5866\sphinxAtStartPar 5867\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm name 5868 5869\sphinxAtStartPar 5870\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{option} \sphinxhyphen{} Option to be checked 5871 5872\sphinxAtStartPar 5873\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{default\_value} \sphinxhyphen{} Default value to return if no match is found 5874 5875\sphinxAtStartPar 5876\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret\_value} \sphinxhyphen{} String value of \sphinxstyleemphasis{option} 5877 5878\end{description}\end{quote} 5879 5880\sphinxAtStartPar 5881This function gets the application defaults for \sphinxstyleemphasis{option} based on the given \sphinxstyleemphasis{appname} and/or \sphinxstyleemphasis{realm} . 5882 5883 5884\sphinxstrong{See also:} 5885\nopagebreak 5886 5887 5888\sphinxAtStartPar 5889krb5\_appdefault\_boolean() 5890 5891 5892 5893 5894\subsubsection{krb5\_auth\_con\_free \sphinxhyphen{} Free a krb5\_auth\_context structure.} 5895\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)@\spxentry{krb5\_auth\_con\_free}\spxextra{C function}} 5896 5897\begin{fulllineitems} 5898\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_free:c.krb5_auth_con_free}}% 5899\pysigstartmultiline 5900\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}}{}% 5901\pysigstopmultiline 5902\end{fulllineitems} 5903 5904\begin{quote}\begin{description} 5905\item[{param}] \leavevmode 5906\sphinxAtStartPar 5907\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5908 5909\sphinxAtStartPar 5910\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context to be freed 5911 5912\end{description}\end{quote} 5913\begin{quote}\begin{description} 5914\item[{retval}] \leavevmode\begin{itemize} 5915\item {} 5916\sphinxAtStartPar 59170 (always) 5918 5919\end{itemize} 5920 5921\end{description}\end{quote} 5922 5923\sphinxAtStartPar 5924This function frees an auth context allocated by krb5\_auth\_con\_init(). 5925 5926 5927\subsubsection{krb5\_auth\_con\_genaddrs \sphinxhyphen{} Generate auth context addresses from a connected socket.} 5928\label{\detokenize{appdev/refs/api/krb5_auth_con_genaddrs:krb5-auth-con-genaddrs-generate-auth-context-addresses-from-a-connected-socket}}\label{\detokenize{appdev/refs/api/krb5_auth_con_genaddrs::doc}}\index{krb5\_auth\_con\_genaddrs (C function)@\spxentry{krb5\_auth\_con\_genaddrs}\spxextra{C function}} 5929 5930\begin{fulllineitems} 5931\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_genaddrs:c.krb5_auth_con_genaddrs}}% 5932\pysigstartmultiline 5933\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_genaddrs}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{infd}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{flags}}{}% 5934\pysigstopmultiline 5935\end{fulllineitems} 5936 5937\begin{quote}\begin{description} 5938\item[{param}] \leavevmode 5939\sphinxAtStartPar 5940\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5941 5942\sphinxAtStartPar 5943\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 5944 5945\sphinxAtStartPar 5946\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{infd} \sphinxhyphen{} Connected socket descriptor 5947 5948\sphinxAtStartPar 5949\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags 5950 5951\end{description}\end{quote} 5952\begin{quote}\begin{description} 5953\item[{retval}] \leavevmode\begin{itemize} 5954\item {} 5955\sphinxAtStartPar 59560 Success; otherwise \sphinxhyphen{} Kerberos error codes 5957 5958\end{itemize} 5959 5960\end{description}\end{quote} 5961 5962\sphinxAtStartPar 5963This 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: 5964\begin{itemize} 5965\item {} 5966\sphinxAtStartPar 5967\#KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR Generate local address. 5968 5969\item {} 5970\sphinxAtStartPar 5971\#KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR Generate remote address. 5972 5973\item {} 5974\sphinxAtStartPar 5975\#KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR Generate local address and port. 5976 5977\item {} 5978\sphinxAtStartPar 5979\#KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR Generate remote address and port. 5980 5981\end{itemize} 5982 5983 5984\subsubsection{krb5\_auth\_con\_get\_checksum\_func \sphinxhyphen{} Get the checksum callback from an auth context.} 5985\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}}\label{\detokenize{appdev/refs/api/krb5_auth_con_get_checksum_func::doc}}\index{krb5\_auth\_con\_get\_checksum\_func (C function)@\spxentry{krb5\_auth\_con\_get\_checksum\_func}\spxextra{C function}} 5986 5987\begin{fulllineitems} 5988\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_get_checksum_func:c.krb5_auth_con_get_checksum_func}}% 5989\pysigstartmultiline 5990\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_get\_checksum\_func}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:c.krb5_mk_req_checksum_func}]{\sphinxcrossref{\DUrole{n}{krb5\_mk\_req\_checksum\_func}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{func}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{data}}{}% 5991\pysigstopmultiline 5992\end{fulllineitems} 5993 5994\begin{quote}\begin{description} 5995\item[{param}] \leavevmode 5996\sphinxAtStartPar 5997\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 5998 5999\sphinxAtStartPar 6000\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6001 6002\sphinxAtStartPar 6003\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{func} \sphinxhyphen{} Checksum callback 6004 6005\sphinxAtStartPar 6006\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} \sphinxhyphen{} Callback argument 6007 6008\end{description}\end{quote} 6009\begin{quote}\begin{description} 6010\item[{retval}] \leavevmode\begin{itemize} 6011\item {} 6012\sphinxAtStartPar 60130 (always) 6014 6015\end{itemize} 6016 6017\end{description}\end{quote} 6018 6019 6020\subsubsection{krb5\_auth\_con\_getaddrs \sphinxhyphen{} Retrieve address fields from an auth context.} 6021\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)@\spxentry{krb5\_auth\_con\_getaddrs}\spxextra{C function}} 6022 6023\begin{fulllineitems} 6024\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getaddrs:c.krb5_auth_con_getaddrs}}% 6025\pysigstartmultiline 6026\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getaddrs}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{local\_addr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{remote\_addr}}{}% 6027\pysigstopmultiline 6028\end{fulllineitems} 6029 6030\begin{quote}\begin{description} 6031\item[{param}] \leavevmode 6032\sphinxAtStartPar 6033\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6034 6035\sphinxAtStartPar 6036\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6037 6038\sphinxAtStartPar 6039\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{local\_addr} \sphinxhyphen{} Local address (NULL if not needed) 6040 6041\sphinxAtStartPar 6042\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{remote\_addr} \sphinxhyphen{} Remote address (NULL if not needed) 6043 6044\end{description}\end{quote} 6045\begin{quote}\begin{description} 6046\item[{retval}] \leavevmode\begin{itemize} 6047\item {} 6048\sphinxAtStartPar 60490 Success; otherwise \sphinxhyphen{} Kerberos error codes 6050 6051\end{itemize} 6052 6053\end{description}\end{quote} 6054 6055 6056\subsubsection{krb5\_auth\_con\_getauthenticator \sphinxhyphen{} Retrieve the authenticator from an auth context.} 6057\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)@\spxentry{krb5\_auth\_con\_getauthenticator}\spxextra{C function}} 6058 6059\begin{fulllineitems} 6060\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getauthenticator:c.krb5_auth_con_getauthenticator}}% 6061\pysigstartmultiline 6062\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getauthenticator}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{authenticator}}{}% 6063\pysigstopmultiline 6064\end{fulllineitems} 6065 6066\begin{quote}\begin{description} 6067\item[{param}] \leavevmode 6068\sphinxAtStartPar 6069\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6070 6071\sphinxAtStartPar 6072\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6073 6074\sphinxAtStartPar 6075\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authenticator} \sphinxhyphen{} Authenticator 6076 6077\end{description}\end{quote} 6078\begin{quote}\begin{description} 6079\item[{retval}] \leavevmode\begin{itemize} 6080\item {} 6081\sphinxAtStartPar 60820 Success. Otherwise \sphinxhyphen{} Kerberos error codes 6083 6084\end{itemize} 6085 6086\end{description}\end{quote} 6087 6088\sphinxAtStartPar 6089Use krb5\_free\_authenticator() to free \sphinxstyleemphasis{authenticator} when it is no longer needed. 6090 6091 6092\subsubsection{krb5\_auth\_con\_getflags \sphinxhyphen{} Retrieve flags from a krb5\_auth\_context structure.} 6093\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)@\spxentry{krb5\_auth\_con\_getflags}\spxextra{C function}} 6094 6095\begin{fulllineitems} 6096\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getflags:c.krb5_auth_con_getflags}}% 6097\pysigstartmultiline 6098\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getflags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{flags}}{}% 6099\pysigstopmultiline 6100\end{fulllineitems} 6101 6102\begin{quote}\begin{description} 6103\item[{param}] \leavevmode 6104\sphinxAtStartPar 6105\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6106 6107\sphinxAtStartPar 6108\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6109 6110\sphinxAtStartPar 6111\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags bit mask 6112 6113\end{description}\end{quote} 6114\begin{quote}\begin{description} 6115\item[{retval}] \leavevmode\begin{itemize} 6116\item {} 6117\sphinxAtStartPar 61180 (always) 6119 6120\end{itemize} 6121 6122\end{description}\end{quote} 6123 6124\sphinxAtStartPar 6125Valid values for \sphinxstyleemphasis{flags} are: 6126\begin{itemize} 6127\item {} 6128\sphinxAtStartPar 6129\#KRB5\_AUTH\_CONTEXT\_DO\_TIME Use timestamps 6130 6131\item {} 6132\sphinxAtStartPar 6133\#KRB5\_AUTH\_CONTEXT\_RET\_TIME Save timestamps 6134 6135\item {} 6136\sphinxAtStartPar 6137\#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE Use sequence numbers 6138 6139\item {} 6140\sphinxAtStartPar 6141\#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE Save sequence numbers 6142 6143\end{itemize} 6144 6145 6146\subsubsection{krb5\_auth\_con\_getkey \sphinxhyphen{} Retrieve the session key from an auth context as a keyblock.} 6147\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey:krb5-auth-con-getkey-retrieve-the-session-key-from-an-auth-context-as-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey::doc}}\index{krb5\_auth\_con\_getkey (C function)@\spxentry{krb5\_auth\_con\_getkey}\spxextra{C function}} 6148 6149\begin{fulllineitems} 6150\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey:c.krb5_auth_con_getkey}}% 6151\pysigstartmultiline 6152\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 6153\pysigstopmultiline 6154\end{fulllineitems} 6155 6156\begin{quote}\begin{description} 6157\item[{param}] \leavevmode 6158\sphinxAtStartPar 6159\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6160 6161\sphinxAtStartPar 6162\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6163 6164\sphinxAtStartPar 6165\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Session key 6166 6167\end{description}\end{quote} 6168\begin{quote}\begin{description} 6169\item[{retval}] \leavevmode\begin{itemize} 6170\item {} 6171\sphinxAtStartPar 61720 Success. Otherwise \sphinxhyphen{} Kerberos error codes 6173 6174\end{itemize} 6175 6176\end{description}\end{quote} 6177 6178\sphinxAtStartPar 6179This function creates a keyblock containing the session key from \sphinxstyleemphasis{auth\_context} . Use krb5\_free\_keyblock() to free \sphinxstyleemphasis{keyblock} when it is no longer needed 6180 6181 6182\subsubsection{krb5\_auth\_con\_getkey\_k \sphinxhyphen{} Retrieve the session key from an auth context.} 6183\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)@\spxentry{krb5\_auth\_con\_getkey\_k}\spxextra{C function}} 6184 6185\begin{fulllineitems} 6186\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getkey_k:c.krb5_auth_con_getkey_k}}% 6187\pysigstartmultiline 6188\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getkey\_k}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 6189\pysigstopmultiline 6190\end{fulllineitems} 6191 6192\begin{quote}\begin{description} 6193\item[{param}] \leavevmode 6194\sphinxAtStartPar 6195\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6196 6197\sphinxAtStartPar 6198\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6199 6200\sphinxAtStartPar 6201\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Session key 6202 6203\end{description}\end{quote} 6204\begin{quote}\begin{description} 6205\item[{retval}] \leavevmode\begin{itemize} 6206\item {} 6207\sphinxAtStartPar 62080 (always) 6209 6210\end{itemize} 6211 6212\end{description}\end{quote} 6213 6214\sphinxAtStartPar 6215This function sets \sphinxstyleemphasis{key} to the session key from \sphinxstyleemphasis{auth\_context} . Use krb5\_k\_free\_key() to release \sphinxstyleemphasis{key} when it is no longer needed. 6216 6217 6218\subsubsection{krb5\_auth\_con\_getlocalseqnumber \sphinxhyphen{} Retrieve the local sequence number from an auth context.} 6219\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalseqnumber:krb5-auth-con-getlocalseqnumber-retrieve-the-local-sequence-number-from-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalseqnumber::doc}}\index{krb5\_auth\_con\_getlocalseqnumber (C function)@\spxentry{krb5\_auth\_con\_getlocalseqnumber}\spxextra{C function}} 6220 6221\begin{fulllineitems} 6222\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalseqnumber:c.krb5_auth_con_getlocalseqnumber}}% 6223\pysigstartmultiline 6224\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getlocalseqnumber}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{seqnumber}}{}% 6225\pysigstopmultiline 6226\end{fulllineitems} 6227 6228\begin{quote}\begin{description} 6229\item[{param}] \leavevmode 6230\sphinxAtStartPar 6231\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6232 6233\sphinxAtStartPar 6234\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6235 6236\sphinxAtStartPar 6237\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seqnumber} \sphinxhyphen{} Local sequence number 6238 6239\end{description}\end{quote} 6240\begin{quote}\begin{description} 6241\item[{retval}] \leavevmode\begin{itemize} 6242\item {} 6243\sphinxAtStartPar 62440 Success; otherwise \sphinxhyphen{} Kerberos error codes 6245 6246\end{itemize} 6247 6248\end{description}\end{quote} 6249 6250\sphinxAtStartPar 6251Retrieve the local sequence number from \sphinxstyleemphasis{auth\_context} and return it in \sphinxstyleemphasis{seqnumber} . The \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE flag must be set in \sphinxstyleemphasis{auth\_context} for this function to be useful. 6252 6253 6254\subsubsection{krb5\_auth\_con\_getrcache \sphinxhyphen{} Retrieve the replay cache from an auth context.} 6255\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)@\spxentry{krb5\_auth\_con\_getrcache}\spxextra{C function}} 6256 6257\begin{fulllineitems} 6258\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getrcache:c.krb5_auth_con_getrcache}}% 6259\pysigstartmultiline 6260\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getrcache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}]{\sphinxcrossref{\DUrole{n}{krb5\_rcache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rcache}}{}% 6261\pysigstopmultiline 6262\end{fulllineitems} 6263 6264\begin{quote}\begin{description} 6265\item[{param}] \leavevmode 6266\sphinxAtStartPar 6267\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6268 6269\sphinxAtStartPar 6270\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6271 6272\sphinxAtStartPar 6273\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rcache} \sphinxhyphen{} Replay cache handle 6274 6275\end{description}\end{quote} 6276\begin{quote}\begin{description} 6277\item[{retval}] \leavevmode\begin{itemize} 6278\item {} 6279\sphinxAtStartPar 62800 (always) 6281 6282\end{itemize} 6283 6284\end{description}\end{quote} 6285 6286\sphinxAtStartPar 6287This function fetches the replay cache from \sphinxstyleemphasis{auth\_context} . The caller should not close \sphinxstyleemphasis{rcache} . 6288 6289 6290\subsubsection{krb5\_auth\_con\_getrecvsubkey \sphinxhyphen{} Retrieve the receiving subkey from an auth context as a keyblock.} 6291\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)@\spxentry{krb5\_auth\_con\_getrecvsubkey}\spxextra{C function}} 6292 6293\begin{fulllineitems} 6294\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey:c.krb5_auth_con_getrecvsubkey}}% 6295\pysigstartmultiline 6296\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getrecvsubkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 6297\pysigstopmultiline 6298\end{fulllineitems} 6299 6300\begin{quote}\begin{description} 6301\item[{param}] \leavevmode 6302\sphinxAtStartPar 6303\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6304 6305\sphinxAtStartPar 6306\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6307 6308\sphinxAtStartPar 6309\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Receiving subkey 6310 6311\end{description}\end{quote} 6312\begin{quote}\begin{description} 6313\item[{retval}] \leavevmode\begin{itemize} 6314\item {} 6315\sphinxAtStartPar 63160 Success; otherwise \sphinxhyphen{} Kerberos error codes 6317 6318\end{itemize} 6319 6320\end{description}\end{quote} 6321 6322\sphinxAtStartPar 6323This function creates a keyblock containing the receiving subkey from \sphinxstyleemphasis{auth\_context} . Use krb5\_free\_keyblock() to free \sphinxstyleemphasis{keyblock} when it is no longer needed. 6324 6325 6326\subsubsection{krb5\_auth\_con\_getrecvsubkey\_k \sphinxhyphen{} Retrieve the receiving subkey from an auth context as a keyblock.} 6327\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)@\spxentry{krb5\_auth\_con\_getrecvsubkey\_k}\spxextra{C function}} 6328 6329\begin{fulllineitems} 6330\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getrecvsubkey_k:c.krb5_auth_con_getrecvsubkey_k}}% 6331\pysigstartmultiline 6332\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getrecvsubkey\_k}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 6333\pysigstopmultiline 6334\end{fulllineitems} 6335 6336\begin{quote}\begin{description} 6337\item[{param}] \leavevmode 6338\sphinxAtStartPar 6339\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6340 6341\sphinxAtStartPar 6342\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6343 6344\sphinxAtStartPar 6345\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Receiving subkey 6346 6347\end{description}\end{quote} 6348\begin{quote}\begin{description} 6349\item[{retval}] \leavevmode\begin{itemize} 6350\item {} 6351\sphinxAtStartPar 63520 Success; otherwise \sphinxhyphen{} Kerberos error codes 6353 6354\end{itemize} 6355 6356\end{description}\end{quote} 6357 6358\sphinxAtStartPar 6359This function sets \sphinxstyleemphasis{key} to the receiving subkey from \sphinxstyleemphasis{auth\_context} . Use krb5\_k\_free\_key() to release \sphinxstyleemphasis{key} when it is no longer needed. 6360 6361 6362\subsubsection{krb5\_auth\_con\_getremoteseqnumber \sphinxhyphen{} Retrieve the remote sequence number from an auth context.} 6363\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)@\spxentry{krb5\_auth\_con\_getremoteseqnumber}\spxextra{C function}} 6364 6365\begin{fulllineitems} 6366\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getremoteseqnumber:c.krb5_auth_con_getremoteseqnumber}}% 6367\pysigstartmultiline 6368\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getremoteseqnumber}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{seqnumber}}{}% 6369\pysigstopmultiline 6370\end{fulllineitems} 6371 6372\begin{quote}\begin{description} 6373\item[{param}] \leavevmode 6374\sphinxAtStartPar 6375\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6376 6377\sphinxAtStartPar 6378\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6379 6380\sphinxAtStartPar 6381\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seqnumber} \sphinxhyphen{} Remote sequence number 6382 6383\end{description}\end{quote} 6384\begin{quote}\begin{description} 6385\item[{retval}] \leavevmode\begin{itemize} 6386\item {} 6387\sphinxAtStartPar 63880 Success; otherwise \sphinxhyphen{} Kerberos error codes 6389 6390\end{itemize} 6391 6392\end{description}\end{quote} 6393 6394\sphinxAtStartPar 6395Retrieve the remote sequence number from \sphinxstyleemphasis{auth\_context} and return it in \sphinxstyleemphasis{seqnumber} . The \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE flag must be set in \sphinxstyleemphasis{auth\_context} for this function to be useful. 6396 6397 6398\subsubsection{krb5\_auth\_con\_getsendsubkey \sphinxhyphen{} Retrieve the send subkey from an auth context as a keyblock.} 6399\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)@\spxentry{krb5\_auth\_con\_getsendsubkey}\spxextra{C function}} 6400 6401\begin{fulllineitems} 6402\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey:c.krb5_auth_con_getsendsubkey}}% 6403\pysigstartmultiline 6404\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getsendsubkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 6405\pysigstopmultiline 6406\end{fulllineitems} 6407 6408\begin{quote}\begin{description} 6409\item[{param}] \leavevmode 6410\sphinxAtStartPar 6411\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6412 6413\sphinxAtStartPar 6414\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6415 6416\sphinxAtStartPar 6417\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Send subkey 6418 6419\end{description}\end{quote} 6420\begin{quote}\begin{description} 6421\item[{retval}] \leavevmode\begin{itemize} 6422\item {} 6423\sphinxAtStartPar 64240 Success; otherwise \sphinxhyphen{} Kerberos error codes 6425 6426\end{itemize} 6427 6428\end{description}\end{quote} 6429 6430\sphinxAtStartPar 6431This function creates a keyblock containing the send subkey from \sphinxstyleemphasis{auth\_context} . Use krb5\_free\_keyblock() to free \sphinxstyleemphasis{keyblock} when it is no longer needed. 6432 6433 6434\subsubsection{krb5\_auth\_con\_getsendsubkey\_k \sphinxhyphen{} Retrieve the send subkey from an auth context.} 6435\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)@\spxentry{krb5\_auth\_con\_getsendsubkey\_k}\spxextra{C function}} 6436 6437\begin{fulllineitems} 6438\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getsendsubkey_k:c.krb5_auth_con_getsendsubkey_k}}% 6439\pysigstartmultiline 6440\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getsendsubkey\_k}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 6441\pysigstopmultiline 6442\end{fulllineitems} 6443 6444\begin{quote}\begin{description} 6445\item[{param}] \leavevmode 6446\sphinxAtStartPar 6447\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6448 6449\sphinxAtStartPar 6450\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6451 6452\sphinxAtStartPar 6453\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Send subkey 6454 6455\end{description}\end{quote} 6456\begin{quote}\begin{description} 6457\item[{retval}] \leavevmode\begin{itemize} 6458\item {} 6459\sphinxAtStartPar 64600 Success; otherwise \sphinxhyphen{} Kerberos error codes 6461 6462\end{itemize} 6463 6464\end{description}\end{quote} 6465 6466\sphinxAtStartPar 6467This function sets \sphinxstyleemphasis{key} to the send subkey from \sphinxstyleemphasis{auth\_context} . Use krb5\_k\_free\_key() to release \sphinxstyleemphasis{key} when it is no longer needed. 6468 6469 6470\subsubsection{krb5\_auth\_con\_init \sphinxhyphen{} Create and initialize an authentication context.} 6471\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)@\spxentry{krb5\_auth\_con\_init}\spxextra{C function}} 6472 6473\begin{fulllineitems} 6474\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_init:c.krb5_auth_con_init}}% 6475\pysigstartmultiline 6476\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_init}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}}{}% 6477\pysigstopmultiline 6478\end{fulllineitems} 6479 6480\begin{quote}\begin{description} 6481\item[{param}] \leavevmode 6482\sphinxAtStartPar 6483\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6484 6485\sphinxAtStartPar 6486\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6487 6488\end{description}\end{quote} 6489\begin{quote}\begin{description} 6490\item[{retval}] \leavevmode\begin{itemize} 6491\item {} 6492\sphinxAtStartPar 64930 Success; otherwise \sphinxhyphen{} Kerberos error codes 6494 6495\end{itemize} 6496 6497\end{description}\end{quote} 6498 6499\sphinxAtStartPar 6500This function creates an authentication context to hold configuration and state relevant to krb5 functions for authenticating principals and protecting messages once authentication has occurred. 6501 6502\sphinxAtStartPar 6503By default, flags for the context are set to enable the use of the replay cache (\#KRB5\_AUTH\_CONTEXT\_DO\_TIME), but not sequence numbers. Use krb5\_auth\_con\_setflags() to change the flags. 6504 6505\sphinxAtStartPar 6506The allocated \sphinxstyleemphasis{auth\_context} must be freed with krb5\_auth\_con\_free() when it is no longer needed. 6507 6508 6509\subsubsection{krb5\_auth\_con\_set\_checksum\_func \sphinxhyphen{} Set a checksum callback in an auth context.} 6510\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)@\spxentry{krb5\_auth\_con\_set\_checksum\_func}\spxextra{C function}} 6511 6512\begin{fulllineitems} 6513\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_set_checksum_func:c.krb5_auth_con_set_checksum_func}}% 6514\pysigstartmultiline 6515\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_set\_checksum\_func}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:c.krb5_mk_req_checksum_func}]{\sphinxcrossref{\DUrole{n}{krb5\_mk\_req\_checksum\_func}}}}\DUrole{w}{ }\DUrole{n}{func}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 6516\pysigstopmultiline 6517\end{fulllineitems} 6518 6519\begin{quote}\begin{description} 6520\item[{param}] \leavevmode 6521\sphinxAtStartPar 6522\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6523 6524\sphinxAtStartPar 6525\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6526 6527\sphinxAtStartPar 6528\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{func} \sphinxhyphen{} Checksum callback 6529 6530\sphinxAtStartPar 6531\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Callback argument 6532 6533\end{description}\end{quote} 6534\begin{quote}\begin{description} 6535\item[{retval}] \leavevmode\begin{itemize} 6536\item {} 6537\sphinxAtStartPar 65380 (always) 6539 6540\end{itemize} 6541 6542\end{description}\end{quote} 6543 6544\sphinxAtStartPar 6545Set a callback to obtain checksum data in krb5\_mk\_req(). The callback will be invoked after the subkey and local sequence number are stored in \sphinxstyleemphasis{auth\_context} . 6546 6547 6548\subsubsection{krb5\_auth\_con\_set\_req\_cksumtype \sphinxhyphen{} Set checksum type in an an auth context.} 6549\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)@\spxentry{krb5\_auth\_con\_set\_req\_cksumtype}\spxextra{C function}} 6550 6551\begin{fulllineitems} 6552\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_set_req_cksumtype:c.krb5_auth_con_set_req_cksumtype}}% 6553\pysigstartmultiline 6554\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_set\_req\_cksumtype}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}}{}% 6555\pysigstopmultiline 6556\end{fulllineitems} 6557 6558\begin{quote}\begin{description} 6559\item[{param}] \leavevmode 6560\sphinxAtStartPar 6561\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6562 6563\sphinxAtStartPar 6564\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6565 6566\sphinxAtStartPar 6567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type 6568 6569\end{description}\end{quote} 6570\begin{quote}\begin{description} 6571\item[{retval}] \leavevmode\begin{itemize} 6572\item {} 6573\sphinxAtStartPar 65740 Success. Otherwise \sphinxhyphen{} Kerberos error codes 6575 6576\end{itemize} 6577 6578\end{description}\end{quote} 6579 6580\sphinxAtStartPar 6581This function sets the checksum type in \sphinxstyleemphasis{auth\_context} to be used by krb5\_mk\_req() for the authenticator checksum. 6582 6583 6584\subsubsection{krb5\_auth\_con\_setaddrs \sphinxhyphen{} Set the local and remote addresses in an auth context.} 6585\label{\detokenize{appdev/refs/api/krb5_auth_con_setaddrs:krb5-auth-con-setaddrs-set-the-local-and-remote-addresses-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setaddrs::doc}}\index{krb5\_auth\_con\_setaddrs (C function)@\spxentry{krb5\_auth\_con\_setaddrs}\spxextra{C function}} 6586 6587\begin{fulllineitems} 6588\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setaddrs:c.krb5_auth_con_setaddrs}}% 6589\pysigstartmultiline 6590\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setaddrs}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{local\_addr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{remote\_addr}}{}% 6591\pysigstopmultiline 6592\end{fulllineitems} 6593 6594\begin{quote}\begin{description} 6595\item[{param}] \leavevmode 6596\sphinxAtStartPar 6597\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6598 6599\sphinxAtStartPar 6600\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6601 6602\sphinxAtStartPar 6603\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{local\_addr} \sphinxhyphen{} Local address 6604 6605\sphinxAtStartPar 6606\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{remote\_addr} \sphinxhyphen{} Remote address 6607 6608\end{description}\end{quote} 6609\begin{quote}\begin{description} 6610\item[{retval}] \leavevmode\begin{itemize} 6611\item {} 6612\sphinxAtStartPar 66130 Success; otherwise \sphinxhyphen{} Kerberos error codes 6614 6615\end{itemize} 6616 6617\end{description}\end{quote} 6618 6619\sphinxAtStartPar 6620This 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. 6621 6622 6623\sphinxstrong{See also:} 6624\nopagebreak 6625 6626 6627\sphinxAtStartPar 6628krb5\_auth\_con\_genaddrs() 6629 6630 6631 6632 6633\subsubsection{krb5\_auth\_con\_setflags \sphinxhyphen{} Set a flags field in a krb5\_auth\_context structure.} 6634\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)@\spxentry{krb5\_auth\_con\_setflags}\spxextra{C function}} 6635 6636\begin{fulllineitems} 6637\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setflags:c.krb5_auth_con_setflags}}% 6638\pysigstartmultiline 6639\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setflags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{n}{flags}}{}% 6640\pysigstopmultiline 6641\end{fulllineitems} 6642 6643\begin{quote}\begin{description} 6644\item[{param}] \leavevmode 6645\sphinxAtStartPar 6646\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6647 6648\sphinxAtStartPar 6649\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6650 6651\sphinxAtStartPar 6652\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags bit mask 6653 6654\end{description}\end{quote} 6655\begin{quote}\begin{description} 6656\item[{retval}] \leavevmode\begin{itemize} 6657\item {} 6658\sphinxAtStartPar 66590 (always) 6660 6661\end{itemize} 6662 6663\end{description}\end{quote} 6664 6665\sphinxAtStartPar 6666Valid values for \sphinxstyleemphasis{flags} are: 6667\begin{itemize} 6668\item {} 6669\sphinxAtStartPar 6670\#KRB5\_AUTH\_CONTEXT\_DO\_TIME Use timestamps 6671 6672\item {} 6673\sphinxAtStartPar 6674\#KRB5\_AUTH\_CONTEXT\_RET\_TIME Save timestamps 6675 6676\item {} 6677\sphinxAtStartPar 6678\#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE Use sequence numbers 6679 6680\item {} 6681\sphinxAtStartPar 6682\#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE Save sequence numbers 6683 6684\end{itemize} 6685 6686 6687\subsubsection{krb5\_auth\_con\_setports \sphinxhyphen{} Set local and remote port fields in an auth context.} 6688\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)@\spxentry{krb5\_auth\_con\_setports}\spxextra{C function}} 6689 6690\begin{fulllineitems} 6691\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setports:c.krb5_auth_con_setports}}% 6692\pysigstartmultiline 6693\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setports}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{local\_port}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{remote\_port}}{}% 6694\pysigstopmultiline 6695\end{fulllineitems} 6696 6697\begin{quote}\begin{description} 6698\item[{param}] \leavevmode 6699\sphinxAtStartPar 6700\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6701 6702\sphinxAtStartPar 6703\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6704 6705\sphinxAtStartPar 6706\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{local\_port} \sphinxhyphen{} Local port 6707 6708\sphinxAtStartPar 6709\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{remote\_port} \sphinxhyphen{} Remote port 6710 6711\end{description}\end{quote} 6712\begin{quote}\begin{description} 6713\item[{retval}] \leavevmode\begin{itemize} 6714\item {} 6715\sphinxAtStartPar 67160 Success; otherwise \sphinxhyphen{} Kerberos error codes 6717 6718\end{itemize} 6719 6720\end{description}\end{quote} 6721 6722\sphinxAtStartPar 6723This 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. 6724 6725 6726\sphinxstrong{See also:} 6727\nopagebreak 6728 6729 6730\sphinxAtStartPar 6731krb5\_auth\_con\_genaddrs() 6732 6733 6734 6735 6736\subsubsection{krb5\_auth\_con\_setrcache \sphinxhyphen{} Set the replay cache in an auth context.} 6737\label{\detokenize{appdev/refs/api/krb5_auth_con_setrcache:krb5-auth-con-setrcache-set-the-replay-cache-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setrcache::doc}}\index{krb5\_auth\_con\_setrcache (C function)@\spxentry{krb5\_auth\_con\_setrcache}\spxextra{C function}} 6738 6739\begin{fulllineitems} 6740\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setrcache:c.krb5_auth_con_setrcache}}% 6741\pysigstartmultiline 6742\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setrcache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}]{\sphinxcrossref{\DUrole{n}{krb5\_rcache}}}}\DUrole{w}{ }\DUrole{n}{rcache}}{}% 6743\pysigstopmultiline 6744\end{fulllineitems} 6745 6746\begin{quote}\begin{description} 6747\item[{param}] \leavevmode 6748\sphinxAtStartPar 6749\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6750 6751\sphinxAtStartPar 6752\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6753 6754\sphinxAtStartPar 6755\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{rcache} \sphinxhyphen{} Replay cache haddle 6756 6757\end{description}\end{quote} 6758\begin{quote}\begin{description} 6759\item[{retval}] \leavevmode\begin{itemize} 6760\item {} 6761\sphinxAtStartPar 67620 Success; otherwise \sphinxhyphen{} Kerberos error codes 6763 6764\end{itemize} 6765 6766\end{description}\end{quote} 6767 6768\sphinxAtStartPar 6769This 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. 6770 6771 6772\subsubsection{krb5\_auth\_con\_setrecvsubkey \sphinxhyphen{} Set the receiving subkey in an auth context with a keyblock.} 6773\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)@\spxentry{krb5\_auth\_con\_setrecvsubkey}\spxextra{C function}} 6774 6775\begin{fulllineitems} 6776\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey:c.krb5_auth_con_setrecvsubkey}}% 6777\pysigstartmultiline 6778\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setrecvsubkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 6779\pysigstopmultiline 6780\end{fulllineitems} 6781 6782\begin{quote}\begin{description} 6783\item[{param}] \leavevmode 6784\sphinxAtStartPar 6785\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6786 6787\sphinxAtStartPar 6788\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6789 6790\sphinxAtStartPar 6791\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Receiving subkey 6792 6793\end{description}\end{quote} 6794\begin{quote}\begin{description} 6795\item[{retval}] \leavevmode\begin{itemize} 6796\item {} 6797\sphinxAtStartPar 67980 Success; otherwise \sphinxhyphen{} Kerberos error codes 6799 6800\end{itemize} 6801 6802\end{description}\end{quote} 6803 6804\sphinxAtStartPar 6805This function sets the receiving subkey in \sphinxstyleemphasis{ac} to a copy of \sphinxstyleemphasis{keyblock} . 6806 6807 6808\subsubsection{krb5\_auth\_con\_setrecvsubkey\_k \sphinxhyphen{} Set the receiving subkey in an auth context.} 6809\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey_k:krb5-auth-con-setrecvsubkey-k-set-the-receiving-subkey-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey_k::doc}}\index{krb5\_auth\_con\_setrecvsubkey\_k (C function)@\spxentry{krb5\_auth\_con\_setrecvsubkey\_k}\spxextra{C function}} 6810 6811\begin{fulllineitems} 6812\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setrecvsubkey_k:c.krb5_auth_con_setrecvsubkey_k}}% 6813\pysigstartmultiline 6814\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setrecvsubkey\_k}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}}{}% 6815\pysigstopmultiline 6816\end{fulllineitems} 6817 6818\begin{quote}\begin{description} 6819\item[{param}] \leavevmode 6820\sphinxAtStartPar 6821\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6822 6823\sphinxAtStartPar 6824\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6825 6826\sphinxAtStartPar 6827\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Receiving subkey 6828 6829\end{description}\end{quote} 6830\begin{quote}\begin{description} 6831\item[{retval}] \leavevmode\begin{itemize} 6832\item {} 6833\sphinxAtStartPar 68340 Success; otherwise \sphinxhyphen{} Kerberos error codes 6835 6836\end{itemize} 6837 6838\end{description}\end{quote} 6839 6840\sphinxAtStartPar 6841This function sets the receiving subkey in \sphinxstyleemphasis{ac} to \sphinxstyleemphasis{key} , incrementing its reference count. 6842 6843\begin{sphinxadmonition}{note}{Note:} 6844\sphinxAtStartPar 6845New in 1.9 6846\end{sphinxadmonition} 6847 6848 6849\subsubsection{krb5\_auth\_con\_setsendsubkey \sphinxhyphen{} Set the send subkey in an auth context with a keyblock.} 6850\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey:krb5-auth-con-setsendsubkey-set-the-send-subkey-in-an-auth-context-with-a-keyblock}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey::doc}}\index{krb5\_auth\_con\_setsendsubkey (C function)@\spxentry{krb5\_auth\_con\_setsendsubkey}\spxextra{C function}} 6851 6852\begin{fulllineitems} 6853\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey:c.krb5_auth_con_setsendsubkey}}% 6854\pysigstartmultiline 6855\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setsendsubkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 6856\pysigstopmultiline 6857\end{fulllineitems} 6858 6859\begin{quote}\begin{description} 6860\item[{param}] \leavevmode 6861\sphinxAtStartPar 6862\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6863 6864\sphinxAtStartPar 6865\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6866 6867\sphinxAtStartPar 6868\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Send subkey 6869 6870\end{description}\end{quote} 6871\begin{quote}\begin{description} 6872\item[{retval}] \leavevmode\begin{itemize} 6873\item {} 6874\sphinxAtStartPar 68750 Success. Otherwise \sphinxhyphen{} Kerberos error codes 6876 6877\end{itemize} 6878 6879\end{description}\end{quote} 6880 6881\sphinxAtStartPar 6882This function sets the send subkey in \sphinxstyleemphasis{ac} to a copy of \sphinxstyleemphasis{keyblock} . 6883 6884 6885\subsubsection{krb5\_auth\_con\_setsendsubkey\_k \sphinxhyphen{} Set the send subkey in an auth context.} 6886\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)@\spxentry{krb5\_auth\_con\_setsendsubkey\_k}\spxextra{C function}} 6887 6888\begin{fulllineitems} 6889\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setsendsubkey_k:c.krb5_auth_con_setsendsubkey_k}}% 6890\pysigstartmultiline 6891\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setsendsubkey\_k}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{ac}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}}{}% 6892\pysigstopmultiline 6893\end{fulllineitems} 6894 6895\begin{quote}\begin{description} 6896\item[{param}] \leavevmode 6897\sphinxAtStartPar 6898\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 6899 6900\sphinxAtStartPar 6901\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ac} \sphinxhyphen{} Authentication context 6902 6903\sphinxAtStartPar 6904\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Send subkey 6905 6906\end{description}\end{quote} 6907\begin{quote}\begin{description} 6908\item[{retval}] \leavevmode\begin{itemize} 6909\item {} 6910\sphinxAtStartPar 69110 Success; otherwise \sphinxhyphen{} Kerberos error codes 6912 6913\end{itemize} 6914 6915\end{description}\end{quote} 6916 6917\sphinxAtStartPar 6918This function sets the send subkey in \sphinxstyleemphasis{ac} to \sphinxstyleemphasis{key} , incrementing its reference count. 6919 6920\begin{sphinxadmonition}{note}{Note:} 6921\sphinxAtStartPar 6922New in 1.9 6923\end{sphinxadmonition} 6924 6925 6926\subsubsection{krb5\_auth\_con\_setuseruserkey \sphinxhyphen{} Set the session key in an auth context.} 6927\label{\detokenize{appdev/refs/api/krb5_auth_con_setuseruserkey:krb5-auth-con-setuseruserkey-set-the-session-key-in-an-auth-context}}\label{\detokenize{appdev/refs/api/krb5_auth_con_setuseruserkey::doc}}\index{krb5\_auth\_con\_setuseruserkey (C function)@\spxentry{krb5\_auth\_con\_setuseruserkey}\spxextra{C function}} 6928 6929\begin{fulllineitems} 6930\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_setuseruserkey:c.krb5_auth_con_setuseruserkey}}% 6931\pysigstartmultiline 6932\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_setuseruserkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 6933\pysigstopmultiline 6934\end{fulllineitems} 6935 6936\begin{quote}\begin{description} 6937\item[{param}] \leavevmode 6938\sphinxAtStartPar 6939\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6940 6941\sphinxAtStartPar 6942\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 6943 6944\sphinxAtStartPar 6945\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} User key 6946 6947\end{description}\end{quote} 6948\begin{quote}\begin{description} 6949\item[{retval}] \leavevmode\begin{itemize} 6950\item {} 6951\sphinxAtStartPar 69520 Success; otherwise \sphinxhyphen{} Kerberos error codes 6953 6954\end{itemize} 6955 6956\end{description}\end{quote} 6957 6958 6959\subsubsection{krb5\_cc\_cache\_match \sphinxhyphen{} Find a credential cache with a specified client principal.} 6960\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)@\spxentry{krb5\_cc\_cache\_match}\spxextra{C function}} 6961 6962\begin{fulllineitems} 6963\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_cache_match:c.krb5_cc_cache_match}}% 6964\pysigstartmultiline 6965\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_cache\_match}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cache\_out}}{}% 6966\pysigstopmultiline 6967\end{fulllineitems} 6968 6969\begin{quote}\begin{description} 6970\item[{param}] \leavevmode 6971\sphinxAtStartPar 6972\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 6973 6974\sphinxAtStartPar 6975\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal 6976 6977\sphinxAtStartPar 6978\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cache\_out} \sphinxhyphen{} Credential cache handle 6979 6980\end{description}\end{quote} 6981\begin{quote}\begin{description} 6982\item[{retval}] \leavevmode\begin{itemize} 6983\item {} 6984\sphinxAtStartPar 69850 Success 6986 6987\item {} 6988\sphinxAtStartPar 6989KRB5\_CC\_NOTFOUND None 6990 6991\end{itemize} 6992 6993\end{description}\end{quote} 6994 6995\sphinxAtStartPar 6996Find 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. 6997 6998\begin{sphinxadmonition}{note}{Note:} 6999\sphinxAtStartPar 7000New in 1.10 7001\end{sphinxadmonition} 7002 7003 7004\subsubsection{krb5\_cc\_copy\_creds \sphinxhyphen{} Copy a credential cache.} 7005\label{\detokenize{appdev/refs/api/krb5_cc_copy_creds:krb5-cc-copy-creds-copy-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_copy_creds::doc}}\index{krb5\_cc\_copy\_creds (C function)@\spxentry{krb5\_cc\_copy\_creds}\spxextra{C function}} 7006 7007\begin{fulllineitems} 7008\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_copy_creds:c.krb5_cc_copy_creds}}% 7009\pysigstartmultiline 7010\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_copy\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{incc}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{outcc}}{}% 7011\pysigstopmultiline 7012\end{fulllineitems} 7013 7014\begin{quote}\begin{description} 7015\item[{param}] \leavevmode 7016\sphinxAtStartPar 7017\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7018 7019\sphinxAtStartPar 7020\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{incc} \sphinxhyphen{} Credential cache to be copied 7021 7022\sphinxAtStartPar 7023\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outcc} \sphinxhyphen{} Copy of credential cache to be filled in 7024 7025\end{description}\end{quote} 7026\begin{quote}\begin{description} 7027\item[{retval}] \leavevmode\begin{itemize} 7028\item {} 7029\sphinxAtStartPar 70300 Success; otherwise \sphinxhyphen{} Kerberos error codes 7031 7032\end{itemize} 7033 7034\end{description}\end{quote} 7035 7036 7037\subsubsection{krb5\_cc\_end\_seq\_get \sphinxhyphen{} Finish a series of sequential processing credential cache entries.} 7038\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)@\spxentry{krb5\_cc\_end\_seq\_get}\spxextra{C function}} 7039 7040\begin{fulllineitems} 7041\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_end_seq_get:c.krb5_cc_end_seq_get}}% 7042\pysigstartmultiline 7043\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_end\_seq\_get}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_cc\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 7044\pysigstopmultiline 7045\end{fulllineitems} 7046 7047\begin{quote}\begin{description} 7048\item[{param}] \leavevmode 7049\sphinxAtStartPar 7050\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7051 7052\sphinxAtStartPar 7053\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7054 7055\sphinxAtStartPar 7056\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 7057 7058\end{description}\end{quote} 7059\begin{quote}\begin{description} 7060\item[{retval}] \leavevmode\begin{itemize} 7061\item {} 7062\sphinxAtStartPar 70630 (always) 7064 7065\end{itemize} 7066 7067\end{description}\end{quote} 7068 7069\sphinxAtStartPar 7070This function finishes processing credential cache entries and invalidates \sphinxstyleemphasis{cursor} . 7071 7072 7073\sphinxstrong{See also:} 7074\nopagebreak 7075 7076 7077\sphinxAtStartPar 7078krb5\_cc\_start\_seq\_get(), krb5\_cc\_next\_cred() 7079 7080 7081 7082 7083\subsubsection{krb5\_cc\_get\_config \sphinxhyphen{} Get a configuration value from a credential cache.} 7084\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)@\spxentry{krb5\_cc\_get\_config}\spxextra{C function}} 7085 7086\begin{fulllineitems} 7087\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_config:c.krb5_cc_get_config}}% 7088\pysigstartmultiline 7089\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_get\_config}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{id}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 7090\pysigstopmultiline 7091\end{fulllineitems} 7092 7093\begin{quote}\begin{description} 7094\item[{param}] \leavevmode 7095\sphinxAtStartPar 7096\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7097 7098\sphinxAtStartPar 7099\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} \sphinxhyphen{} Credential cache handle 7100 7101\sphinxAtStartPar 7102\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Configuration for this principal; if NULL, global for the whole cache 7103 7104\sphinxAtStartPar 7105\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Name of config variable 7106 7107\sphinxAtStartPar 7108\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} \sphinxhyphen{} Data to be fetched 7109 7110\end{description}\end{quote} 7111\begin{quote}\begin{description} 7112\item[{retval}] \leavevmode\begin{itemize} 7113\item {} 7114\sphinxAtStartPar 71150 Success 7116 7117\end{itemize} 7118 7119\item[{return}] \leavevmode\begin{itemize} 7120\item {} 7121\sphinxAtStartPar 7122Kerberos error codes 7123 7124\end{itemize} 7125 7126\end{description}\end{quote} 7127 7128\sphinxAtStartPar 7129Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{data} when it is no longer needed. 7130 7131 7132\subsubsection{krb5\_cc\_get\_flags \sphinxhyphen{} Retrieve flags from a credential cache structure.} 7133\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)@\spxentry{krb5\_cc\_get\_flags}\spxextra{C function}} 7134 7135\begin{fulllineitems} 7136\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_flags:c.krb5_cc_get_flags}}% 7137\pysigstartmultiline 7138\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_get\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{flags}}{}% 7139\pysigstopmultiline 7140\end{fulllineitems} 7141 7142\begin{quote}\begin{description} 7143\item[{param}] \leavevmode 7144\sphinxAtStartPar 7145\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7146 7147\sphinxAtStartPar 7148\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7149 7150\sphinxAtStartPar 7151\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flag bit mask 7152 7153\end{description}\end{quote} 7154\begin{quote}\begin{description} 7155\item[{retval}] \leavevmode\begin{itemize} 7156\item {} 7157\sphinxAtStartPar 71580 Success; otherwise \sphinxhyphen{} Kerberos error codes 7159 7160\end{itemize} 7161 7162\end{description}\end{quote} 7163 7164\begin{sphinxadmonition}{warning}{Warning:} 7165\sphinxAtStartPar 7166For memory credential cache always returns a flag mask of 0. 7167\end{sphinxadmonition} 7168 7169 7170\subsubsection{krb5\_cc\_get\_full\_name \sphinxhyphen{} Retrieve the full name of a credential cache.} 7171\label{\detokenize{appdev/refs/api/krb5_cc_get_full_name:krb5-cc-get-full-name-retrieve-the-full-name-of-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_get_full_name::doc}}\index{krb5\_cc\_get\_full\_name (C function)@\spxentry{krb5\_cc\_get\_full\_name}\spxextra{C function}} 7172 7173\begin{fulllineitems} 7174\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_get_full_name:c.krb5_cc_get_full_name}}% 7175\pysigstartmultiline 7176\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_get\_full\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{fullname\_out}}{}% 7177\pysigstopmultiline 7178\end{fulllineitems} 7179 7180\begin{quote}\begin{description} 7181\item[{param}] \leavevmode 7182\sphinxAtStartPar 7183\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7184 7185\sphinxAtStartPar 7186\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7187 7188\sphinxAtStartPar 7189\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{fullname\_out} \sphinxhyphen{} Full name of cache 7190 7191\end{description}\end{quote} 7192 7193\sphinxAtStartPar 7194Use krb5\_free\_string() to free \sphinxstyleemphasis{fullname\_out} when it is no longer needed. 7195 7196\begin{sphinxadmonition}{note}{Note:} 7197\sphinxAtStartPar 7198New in 1.10 7199\end{sphinxadmonition} 7200 7201 7202\subsubsection{krb5\_cc\_move \sphinxhyphen{} Move a credential cache.} 7203\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)@\spxentry{krb5\_cc\_move}\spxextra{C function}} 7204 7205\begin{fulllineitems} 7206\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_move:c.krb5_cc_move}}% 7207\pysigstartmultiline 7208\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_move}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{src}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{dst}}{}% 7209\pysigstopmultiline 7210\end{fulllineitems} 7211 7212\begin{quote}\begin{description} 7213\item[{param}] \leavevmode 7214\sphinxAtStartPar 7215\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7216 7217\sphinxAtStartPar 7218\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{src} \sphinxhyphen{} The credential cache to move the content from 7219 7220\sphinxAtStartPar 7221\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{dst} \sphinxhyphen{} The credential cache to move the content to 7222 7223\end{description}\end{quote} 7224\begin{quote}\begin{description} 7225\item[{retval}] \leavevmode\begin{itemize} 7226\item {} 7227\sphinxAtStartPar 72280 Success; src is closed. 7229 7230\end{itemize} 7231 7232\item[{return}] \leavevmode\begin{itemize} 7233\item {} 7234\sphinxAtStartPar 7235Kerberos error codes; src is still allocated. 7236 7237\end{itemize} 7238 7239\end{description}\end{quote} 7240 7241\sphinxAtStartPar 7242This function reinitializes \sphinxstyleemphasis{dst} and populates it with the credentials and default principal of \sphinxstyleemphasis{src} ; then, if successful, destroys \sphinxstyleemphasis{src} . 7243 7244 7245\subsubsection{krb5\_cc\_next\_cred \sphinxhyphen{} Retrieve the next entry from the credential cache.} 7246\label{\detokenize{appdev/refs/api/krb5_cc_next_cred:krb5-cc-next-cred-retrieve-the-next-entry-from-the-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_next_cred::doc}}\index{krb5\_cc\_next\_cred (C function)@\spxentry{krb5\_cc\_next\_cred}\spxextra{C function}} 7247 7248\begin{fulllineitems} 7249\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_next_cred:c.krb5_cc_next_cred}}% 7250\pysigstartmultiline 7251\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_next\_cred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_cc\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}}{}% 7252\pysigstopmultiline 7253\end{fulllineitems} 7254 7255\begin{quote}\begin{description} 7256\item[{param}] \leavevmode 7257\sphinxAtStartPar 7258\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7259 7260\sphinxAtStartPar 7261\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7262 7263\sphinxAtStartPar 7264\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 7265 7266\sphinxAtStartPar 7267\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Next credential cache entry 7268 7269\end{description}\end{quote} 7270\begin{quote}\begin{description} 7271\item[{retval}] \leavevmode\begin{itemize} 7272\item {} 7273\sphinxAtStartPar 72740 Success; otherwise \sphinxhyphen{} Kerberos error codes 7275 7276\end{itemize} 7277 7278\end{description}\end{quote} 7279 7280\sphinxAtStartPar 7281This function fills in \sphinxstyleemphasis{creds} with the next entry in \sphinxstyleemphasis{cache} and advances \sphinxstyleemphasis{cursor} . 7282 7283\sphinxAtStartPar 7284Use krb5\_free\_cred\_contents() to free \sphinxstyleemphasis{creds} when it is no longer needed. 7285 7286 7287\sphinxstrong{See also:} 7288\nopagebreak 7289 7290 7291\sphinxAtStartPar 7292krb5\_cc\_start\_seq\_get(), krb5\_end\_seq\_get() 7293 7294 7295 7296 7297\subsubsection{krb5\_cc\_remove\_cred \sphinxhyphen{} Remove credentials from a credential cache.} 7298\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)@\spxentry{krb5\_cc\_remove\_cred}\spxextra{C function}} 7299 7300\begin{fulllineitems} 7301\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_remove_cred:c.krb5_cc_remove_cred}}% 7302\pysigstartmultiline 7303\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_remove\_cred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}}{}% 7304\pysigstopmultiline 7305\end{fulllineitems} 7306 7307\begin{quote}\begin{description} 7308\item[{param}] \leavevmode 7309\sphinxAtStartPar 7310\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7311 7312\sphinxAtStartPar 7313\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7314 7315\sphinxAtStartPar 7316\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Bitwise\sphinxhyphen{}ORed search flags 7317 7318\sphinxAtStartPar 7319\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Credentials to be matched 7320 7321\end{description}\end{quote} 7322\begin{quote}\begin{description} 7323\item[{retval}] \leavevmode\begin{itemize} 7324\item {} 7325\sphinxAtStartPar 7326KRB5\_CC\_NOSUPP Not implemented for this cache type 7327 7328\end{itemize} 7329 7330\item[{return}] \leavevmode\begin{itemize} 7331\item {} 7332\sphinxAtStartPar 7333No matches found; Data cannot be deleted; Kerberos error codes 7334 7335\end{itemize} 7336 7337\end{description}\end{quote} 7338 7339\sphinxAtStartPar 7340This function accepts the same flag values as krb5\_cc\_retrieve\_cred(). 7341 7342\begin{sphinxadmonition}{warning}{Warning:} 7343\sphinxAtStartPar 7344This function is not implemented for some cache types. 7345\end{sphinxadmonition} 7346 7347 7348\subsubsection{krb5\_cc\_retrieve\_cred \sphinxhyphen{} Retrieve a specified credentials from a credential cache.} 7349\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)@\spxentry{krb5\_cc\_retrieve\_cred}\spxextra{C function}} 7350 7351\begin{fulllineitems} 7352\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_retrieve_cred:c.krb5_cc_retrieve_cred}}% 7353\pysigstartmultiline 7354\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_retrieve\_cred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{mcreds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}}{}% 7355\pysigstopmultiline 7356\end{fulllineitems} 7357 7358\begin{quote}\begin{description} 7359\item[{param}] \leavevmode 7360\sphinxAtStartPar 7361\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7362 7363\sphinxAtStartPar 7364\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7365 7366\sphinxAtStartPar 7367\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flags bit mask 7368 7369\sphinxAtStartPar 7370\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{mcreds} \sphinxhyphen{} Credentials to match 7371 7372\sphinxAtStartPar 7373\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Credentials matching the requested value 7374 7375\end{description}\end{quote} 7376\begin{quote}\begin{description} 7377\item[{retval}] \leavevmode\begin{itemize} 7378\item {} 7379\sphinxAtStartPar 73800 Success; otherwise \sphinxhyphen{} Kerberos error codes 7381 7382\end{itemize} 7383 7384\end{description}\end{quote} 7385 7386\sphinxAtStartPar 7387This function searches a credential cache for credentials matching \sphinxstyleemphasis{mcreds} and returns it if found. 7388 7389\sphinxAtStartPar 7390Valid values for \sphinxstyleemphasis{flags} are: 7391\begin{quote} 7392\begin{itemize} 7393\item {} 7394\sphinxAtStartPar 7395\#KRB5\_TC\_MATCH\_TIMES The requested lifetime must be at least as great as in \sphinxstyleemphasis{mcreds} . 7396 7397\item {} 7398\sphinxAtStartPar 7399\#KRB5\_TC\_MATCH\_IS\_SKEY The \sphinxstyleemphasis{is\_skey} field much match exactly. 7400 7401\item {} 7402\sphinxAtStartPar 7403\#KRB5\_TC\_MATCH\_FLAGS Flags set in \sphinxstyleemphasis{mcreds} must be set. 7404 7405\item {} 7406\sphinxAtStartPar 7407\#KRB5\_TC\_MATCH\_TIMES\_EXACT The requested lifetime must match exactly. 7408 7409\item {} 7410\sphinxAtStartPar 7411\#KRB5\_TC\_MATCH\_FLAGS\_EXACT Flags must match exactly. 7412 7413\item {} 7414\sphinxAtStartPar 7415\#KRB5\_TC\_MATCH\_AUTHDATA The authorization data must match. 7416 7417\item {} 7418\sphinxAtStartPar 7419\#KRB5\_TC\_MATCH\_SRV\_NAMEONLY Only the name portion of the principal name must match, not the realm. 7420 7421\item {} 7422\sphinxAtStartPar 7423\#KRB5\_TC\_MATCH\_2ND\_TKT The second tickets must match. 7424 7425\item {} 7426\sphinxAtStartPar 7427\#KRB5\_TC\_MATCH\_KTYPE The encryption key types must match. 7428 7429\item {} 7430\sphinxAtStartPar 7431\#KRB5\_TC\_SUPPORTED\_KTYPES Check all matching entries that have any supported encryption type and return the one with the encryption type listed earliest. 7432 7433\end{itemize} 7434 7435\sphinxAtStartPar 7436Use krb5\_free\_cred\_contents() to free \sphinxstyleemphasis{creds} when it is no longer needed. 7437\end{quote} 7438 7439 7440\subsubsection{krb5\_cc\_select \sphinxhyphen{} Select a credential cache to use with a server principal.} 7441\label{\detokenize{appdev/refs/api/krb5_cc_select:krb5-cc-select-select-a-credential-cache-to-use-with-a-server-principal}}\label{\detokenize{appdev/refs/api/krb5_cc_select::doc}}\index{krb5\_cc\_select (C function)@\spxentry{krb5\_cc\_select}\spxextra{C function}} 7442 7443\begin{fulllineitems} 7444\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_select:c.krb5_cc_select}}% 7445\pysigstartmultiline 7446\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_select}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cache\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{princ\_out}}{}% 7447\pysigstopmultiline 7448\end{fulllineitems} 7449 7450\begin{quote}\begin{description} 7451\item[{param}] \leavevmode 7452\sphinxAtStartPar 7453\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7454 7455\sphinxAtStartPar 7456\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Server principal 7457 7458\sphinxAtStartPar 7459\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cache\_out} \sphinxhyphen{} Credential cache handle 7460 7461\sphinxAtStartPar 7462\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princ\_out} \sphinxhyphen{} Client principal 7463 7464\end{description}\end{quote} 7465\begin{quote}\begin{description} 7466\item[{return}] \leavevmode\begin{itemize} 7467\item {} 7468\sphinxAtStartPar 7469If 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. 7470 7471\end{itemize} 7472 7473\end{description}\end{quote} 7474 7475\sphinxAtStartPar 7476Select a cache within the collection containing credentials most appropriate for use with \sphinxstyleemphasis{server} , according to configured rules and heuristics. 7477 7478\sphinxAtStartPar 7479Use krb5\_cc\_close() to release \sphinxstyleemphasis{cache\_out} when it is no longer needed. Use 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. 7480 7481\sphinxAtStartPar 7482If 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. 7483 7484\sphinxAtStartPar 7485If 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. 7486 7487\sphinxAtStartPar 7488Any other error code indicates a fatal error in the processing of a cache selection mechanism. 7489 7490\begin{sphinxadmonition}{note}{Note:} 7491\sphinxAtStartPar 7492New in 1.10 7493\end{sphinxadmonition} 7494 7495 7496\subsubsection{krb5\_cc\_set\_config \sphinxhyphen{} Store a configuration value in a credential cache.} 7497\label{\detokenize{appdev/refs/api/krb5_cc_set_config:krb5-cc-set-config-store-a-configuration-value-in-a-credential-cache}}\label{\detokenize{appdev/refs/api/krb5_cc_set_config::doc}}\index{krb5\_cc\_set\_config (C function)@\spxentry{krb5\_cc\_set\_config}\spxextra{C function}} 7498 7499\begin{fulllineitems} 7500\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_set_config:c.krb5_cc_set_config}}% 7501\pysigstartmultiline 7502\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_set\_config}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{id}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 7503\pysigstopmultiline 7504\end{fulllineitems} 7505 7506\begin{quote}\begin{description} 7507\item[{param}] \leavevmode 7508\sphinxAtStartPar 7509\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7510 7511\sphinxAtStartPar 7512\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} \sphinxhyphen{} Credential cache handle 7513 7514\sphinxAtStartPar 7515\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Configuration for a specific principal; if NULL, global for the whole cache 7516 7517\sphinxAtStartPar 7518\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Name of config variable 7519 7520\sphinxAtStartPar 7521\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Data to store, or NULL to remove 7522 7523\end{description}\end{quote} 7524\begin{quote}\begin{description} 7525\item[{retval}] \leavevmode\begin{itemize} 7526\item {} 7527\sphinxAtStartPar 75280 Success 7529 7530\end{itemize} 7531 7532\item[{return}] \leavevmode\begin{itemize} 7533\item {} 7534\sphinxAtStartPar 7535Kerberos error codes 7536 7537\end{itemize} 7538 7539\end{description}\end{quote} 7540 7541\begin{sphinxadmonition}{warning}{Warning:} 7542\sphinxAtStartPar 7543Before version 1.10 \sphinxstyleemphasis{data} was assumed to be always non\sphinxhyphen{}null. 7544\end{sphinxadmonition} 7545 7546\begin{sphinxadmonition}{note}{Note:} 7547\sphinxAtStartPar 7548Existing configuration under the same key is over\sphinxhyphen{}written. 7549\end{sphinxadmonition} 7550 7551 7552\subsubsection{krb5\_cc\_set\_default\_name \sphinxhyphen{} Set the default credential cache name.} 7553\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)@\spxentry{krb5\_cc\_set\_default\_name}\spxextra{C function}} 7554 7555\begin{fulllineitems} 7556\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_set_default_name:c.krb5_cc_set_default_name}}% 7557\pysigstartmultiline 7558\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_set\_default\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{name}}{}% 7559\pysigstopmultiline 7560\end{fulllineitems} 7561 7562\begin{quote}\begin{description} 7563\item[{param}] \leavevmode 7564\sphinxAtStartPar 7565\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7566 7567\sphinxAtStartPar 7568\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{name} \sphinxhyphen{} Default credential cache name or NULL 7569 7570\end{description}\end{quote} 7571\begin{quote}\begin{description} 7572\item[{retval}] \leavevmode\begin{itemize} 7573\item {} 7574\sphinxAtStartPar 75750 Success 7576 7577\item {} 7578\sphinxAtStartPar 7579KV5M\_CONTEXT Bad magic number for \_krb5\_context structure 7580 7581\end{itemize} 7582 7583\item[{return}] \leavevmode\begin{itemize} 7584\item {} 7585\sphinxAtStartPar 7586Kerberos error codes 7587 7588\end{itemize} 7589 7590\end{description}\end{quote} 7591 7592\sphinxAtStartPar 7593Set the default credential cache name to \sphinxstyleemphasis{name} for future operations using \sphinxstyleemphasis{context} . If \sphinxstyleemphasis{name} is NULL, clear any previous application\sphinxhyphen{}set default name and forget any cached value of the default name for \sphinxstyleemphasis{context} . 7594 7595\sphinxAtStartPar 7596Calls to this function invalidate the result of any previous calls to krb5\_cc\_default\_name() using \sphinxstyleemphasis{context} . 7597 7598 7599\subsubsection{krb5\_cc\_set\_flags \sphinxhyphen{} Set options flags on a credential cache.} 7600\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)@\spxentry{krb5\_cc\_set\_flags}\spxextra{C function}} 7601 7602\begin{fulllineitems} 7603\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_set_flags:c.krb5_cc_set_flags}}% 7604\pysigstartmultiline 7605\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_set\_flags}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{flags}}{}% 7606\pysigstopmultiline 7607\end{fulllineitems} 7608 7609\begin{quote}\begin{description} 7610\item[{param}] \leavevmode 7611\sphinxAtStartPar 7612\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7613 7614\sphinxAtStartPar 7615\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7616 7617\sphinxAtStartPar 7618\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Flag bit mask 7619 7620\end{description}\end{quote} 7621\begin{quote}\begin{description} 7622\item[{retval}] \leavevmode\begin{itemize} 7623\item {} 7624\sphinxAtStartPar 76250 Success; otherwise \sphinxhyphen{} Kerberos error codes 7626 7627\end{itemize} 7628 7629\end{description}\end{quote} 7630 7631\sphinxAtStartPar 7632This function resets \sphinxstyleemphasis{cache} flags to \sphinxstyleemphasis{flags} . 7633 7634 7635\subsubsection{krb5\_cc\_start\_seq\_get \sphinxhyphen{} Prepare to sequentially read every credential in a credential cache.} 7636\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}}\label{\detokenize{appdev/refs/api/krb5_cc_start_seq_get::doc}}\index{krb5\_cc\_start\_seq\_get (C function)@\spxentry{krb5\_cc\_start\_seq\_get}\spxextra{C function}} 7637 7638\begin{fulllineitems} 7639\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_start_seq_get:c.krb5_cc_start_seq_get}}% 7640\pysigstartmultiline 7641\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_start\_seq\_get}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_cc\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 7642\pysigstopmultiline 7643\end{fulllineitems} 7644 7645\begin{quote}\begin{description} 7646\item[{param}] \leavevmode 7647\sphinxAtStartPar 7648\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7649 7650\sphinxAtStartPar 7651\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7652 7653\sphinxAtStartPar 7654\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 7655 7656\end{description}\end{quote} 7657\begin{quote}\begin{description} 7658\item[{retval}] \leavevmode\begin{itemize} 7659\item {} 7660\sphinxAtStartPar 76610 Success; otherwise \sphinxhyphen{} Kerberos error codes 7662 7663\end{itemize} 7664 7665\end{description}\end{quote} 7666 7667\sphinxAtStartPar 7668krb5\_cc\_end\_seq\_get() must be called to complete the retrieve operation. 7669 7670\begin{sphinxadmonition}{note}{Note:} 7671\sphinxAtStartPar 7672If the cache represented by \sphinxstyleemphasis{cache} is modified between the time of the call to this function and the time of the final krb5\_cc\_end\_seq\_get(), these changes may not be reflected in the results of krb5\_cc\_next\_cred() calls. 7673\end{sphinxadmonition} 7674 7675 7676\subsubsection{krb5\_cc\_store\_cred \sphinxhyphen{} Store credentials in a credential cache.} 7677\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)@\spxentry{krb5\_cc\_store\_cred}\spxextra{C function}} 7678 7679\begin{fulllineitems} 7680\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_store_cred:c.krb5_cc_store_cred}}% 7681\pysigstartmultiline 7682\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_store\_cred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}}{}% 7683\pysigstopmultiline 7684\end{fulllineitems} 7685 7686\begin{quote}\begin{description} 7687\item[{param}] \leavevmode 7688\sphinxAtStartPar 7689\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7690 7691\sphinxAtStartPar 7692\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7693 7694\sphinxAtStartPar 7695\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Credentials to be stored in cache 7696 7697\end{description}\end{quote} 7698\begin{quote}\begin{description} 7699\item[{retval}] \leavevmode\begin{itemize} 7700\item {} 7701\sphinxAtStartPar 77020 Success 7703 7704\end{itemize} 7705 7706\item[{return}] \leavevmode\begin{itemize} 7707\item {} 7708\sphinxAtStartPar 7709Permission errors; storage failure errors; Kerberos error codes 7710 7711\end{itemize} 7712 7713\end{description}\end{quote} 7714 7715\sphinxAtStartPar 7716This function stores \sphinxstyleemphasis{creds} into \sphinxstyleemphasis{cache} . If \sphinxstyleemphasis{creds\sphinxhyphen{}\textgreater{}server} and the server in the decoded ticket \sphinxstyleemphasis{creds\sphinxhyphen{}\textgreater{}ticket} differ, the credentials will be stored under both server principal names. 7717 7718 7719\subsubsection{krb5\_cc\_support\_switch \sphinxhyphen{} Determine whether a credential cache type supports switching.} 7720\label{\detokenize{appdev/refs/api/krb5_cc_support_switch:krb5-cc-support-switch-determine-whether-a-credential-cache-type-supports-switching}}\label{\detokenize{appdev/refs/api/krb5_cc_support_switch::doc}}\index{krb5\_cc\_support\_switch (C function)@\spxentry{krb5\_cc\_support\_switch}\spxextra{C function}} 7721 7722\begin{fulllineitems} 7723\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_support_switch:c.krb5_cc_support_switch}}% 7724\pysigstartmultiline 7725\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_support\_switch}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{type}}{}% 7726\pysigstopmultiline 7727\end{fulllineitems} 7728 7729\begin{quote}\begin{description} 7730\item[{param}] \leavevmode 7731\sphinxAtStartPar 7732\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7733 7734\sphinxAtStartPar 7735\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Credential cache type 7736 7737\end{description}\end{quote} 7738\begin{quote}\begin{description} 7739\item[{retval}] \leavevmode\begin{itemize} 7740\item {} 7741\sphinxAtStartPar 7742TRUE if type supports switching 7743 7744\item {} 7745\sphinxAtStartPar 7746FALSE if it does not or is not a valid credential cache type. 7747 7748\end{itemize} 7749 7750\end{description}\end{quote} 7751 7752\begin{sphinxadmonition}{note}{Note:} 7753\sphinxAtStartPar 7754New in 1.10 7755\end{sphinxadmonition} 7756 7757 7758\subsubsection{krb5\_cc\_switch \sphinxhyphen{} Make a credential cache the primary cache for its collection.} 7759\label{\detokenize{appdev/refs/api/krb5_cc_switch:krb5-cc-switch-make-a-credential-cache-the-primary-cache-for-its-collection}}\label{\detokenize{appdev/refs/api/krb5_cc_switch::doc}}\index{krb5\_cc\_switch (C function)@\spxentry{krb5\_cc\_switch}\spxextra{C function}} 7760 7761\begin{fulllineitems} 7762\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_switch:c.krb5_cc_switch}}% 7763\pysigstartmultiline 7764\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_switch}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{cache}}{}% 7765\pysigstopmultiline 7766\end{fulllineitems} 7767 7768\begin{quote}\begin{description} 7769\item[{param}] \leavevmode 7770\sphinxAtStartPar 7771\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7772 7773\sphinxAtStartPar 7774\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cache} \sphinxhyphen{} Credential cache handle 7775 7776\end{description}\end{quote} 7777\begin{quote}\begin{description} 7778\item[{retval}] \leavevmode\begin{itemize} 7779\item {} 7780\sphinxAtStartPar 77810 Success, or the type of cache doesn’t support switching 7782 7783\end{itemize} 7784 7785\item[{return}] \leavevmode\begin{itemize} 7786\item {} 7787\sphinxAtStartPar 7788Kerberos error codes 7789 7790\end{itemize} 7791 7792\end{description}\end{quote} 7793 7794\sphinxAtStartPar 7795If the type of \sphinxstyleemphasis{cache} supports it, set \sphinxstyleemphasis{cache} to be the primary credential cache for the collection it belongs to. 7796 7797 7798\subsubsection{krb5\_cccol\_cursor\_free \sphinxhyphen{} Free a credential cache collection cursor.} 7799\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_free:krb5-cccol-cursor-free-free-a-credential-cache-collection-cursor}}\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_free::doc}}\index{krb5\_cccol\_cursor\_free (C function)@\spxentry{krb5\_cccol\_cursor\_free}\spxextra{C function}} 7800 7801\begin{fulllineitems} 7802\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_free:c.krb5_cccol_cursor_free}}% 7803\pysigstartmultiline 7804\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cccol\_cursor\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_cccol\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 7805\pysigstopmultiline 7806\end{fulllineitems} 7807 7808\begin{quote}\begin{description} 7809\item[{param}] \leavevmode 7810\sphinxAtStartPar 7811\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7812 7813\sphinxAtStartPar 7814\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 7815 7816\end{description}\end{quote} 7817\begin{quote}\begin{description} 7818\item[{retval}] \leavevmode\begin{itemize} 7819\item {} 7820\sphinxAtStartPar 78210 Success; otherwise \sphinxhyphen{} Kerberos error codes 7822 7823\end{itemize} 7824 7825\end{description}\end{quote} 7826 7827 7828\sphinxstrong{See also:} 7829\nopagebreak 7830 7831 7832\sphinxAtStartPar 7833krb5\_cccol\_cursor\_new(), krb5\_cccol\_cursor\_next() 7834 7835 7836 7837 7838\subsubsection{krb5\_cccol\_cursor\_new \sphinxhyphen{} Prepare to iterate over the collection of known credential caches.} 7839\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_new:krb5-cccol-cursor-new-prepare-to-iterate-over-the-collection-of-known-credential-caches}}\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_new::doc}}\index{krb5\_cccol\_cursor\_new (C function)@\spxentry{krb5\_cccol\_cursor\_new}\spxextra{C function}} 7840 7841\begin{fulllineitems} 7842\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_new:c.krb5_cccol_cursor_new}}% 7843\pysigstartmultiline 7844\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cccol\_cursor\_new}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_cccol\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 7845\pysigstopmultiline 7846\end{fulllineitems} 7847 7848\begin{quote}\begin{description} 7849\item[{param}] \leavevmode 7850\sphinxAtStartPar 7851\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7852 7853\sphinxAtStartPar 7854\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 7855 7856\end{description}\end{quote} 7857\begin{quote}\begin{description} 7858\item[{retval}] \leavevmode\begin{itemize} 7859\item {} 7860\sphinxAtStartPar 78610 Success; otherwise \sphinxhyphen{} Kerberos error codes 7862 7863\end{itemize} 7864 7865\end{description}\end{quote} 7866 7867\sphinxAtStartPar 7868Get a new cache iteration \sphinxstyleemphasis{cursor} that will iterate over all known credential caches independent of type. 7869 7870\sphinxAtStartPar 7871Use krb5\_cccol\_cursor\_free() to release \sphinxstyleemphasis{cursor} when it is no longer needed. 7872 7873 7874\sphinxstrong{See also:} 7875\nopagebreak 7876 7877 7878\sphinxAtStartPar 7879krb5\_cccol\_cursor\_next() 7880 7881 7882 7883 7884\subsubsection{krb5\_cccol\_cursor\_next \sphinxhyphen{} Get the next credential cache in the collection.} 7885\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_next:krb5-cccol-cursor-next-get-the-next-credential-cache-in-the-collection}}\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_next::doc}}\index{krb5\_cccol\_cursor\_next (C function)@\spxentry{krb5\_cccol\_cursor\_next}\spxextra{C function}} 7886 7887\begin{fulllineitems} 7888\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_cursor_next:c.krb5_cccol_cursor_next}}% 7889\pysigstartmultiline 7890\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cccol\_cursor\_next}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_cccol\_cursor}}}}\DUrole{w}{ }\DUrole{n}{cursor}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ccache}}{}% 7891\pysigstopmultiline 7892\end{fulllineitems} 7893 7894\begin{quote}\begin{description} 7895\item[{param}] \leavevmode 7896\sphinxAtStartPar 7897\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7898 7899\sphinxAtStartPar 7900\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 7901 7902\sphinxAtStartPar 7903\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache handle 7904 7905\end{description}\end{quote} 7906\begin{quote}\begin{description} 7907\item[{retval}] \leavevmode\begin{itemize} 7908\item {} 7909\sphinxAtStartPar 79100 Success; otherwise \sphinxhyphen{} Kerberos error codes 7911 7912\end{itemize} 7913 7914\end{description}\end{quote} 7915 7916\sphinxAtStartPar 7917Use krb5\_cc\_close() to close \sphinxstyleemphasis{ccache} when it is no longer needed. 7918 7919 7920\sphinxstrong{See also:} 7921\nopagebreak 7922 7923 7924\sphinxAtStartPar 7925krb5\_cccol\_cursor\_new(), krb5\_cccol\_cursor\_free() 7926 7927 7928 7929\begin{sphinxadmonition}{note}{Note:} 7930\sphinxAtStartPar 7931When all caches are iterated over and the end of the list is reached, \sphinxstyleemphasis{ccache} is set to NULL. 7932\end{sphinxadmonition} 7933 7934 7935\subsubsection{krb5\_cccol\_have\_content \sphinxhyphen{} Check if the credential cache collection contains any initialized caches.} 7936\label{\detokenize{appdev/refs/api/krb5_cccol_have_content:krb5-cccol-have-content-check-if-the-credential-cache-collection-contains-any-initialized-caches}}\label{\detokenize{appdev/refs/api/krb5_cccol_have_content::doc}}\index{krb5\_cccol\_have\_content (C function)@\spxentry{krb5\_cccol\_have\_content}\spxextra{C function}} 7937 7938\begin{fulllineitems} 7939\phantomsection\label{\detokenize{appdev/refs/api/krb5_cccol_have_content:c.krb5_cccol_have_content}}% 7940\pysigstartmultiline 7941\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cccol\_have\_content}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}}{}% 7942\pysigstopmultiline 7943\end{fulllineitems} 7944 7945\begin{quote}\begin{description} 7946\item[{param}] \leavevmode 7947\sphinxAtStartPar 7948\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 7949 7950\end{description}\end{quote} 7951\begin{quote}\begin{description} 7952\item[{retval}] \leavevmode\begin{itemize} 7953\item {} 7954\sphinxAtStartPar 79550 At least one initialized cache is present in the collection 7956 7957\item {} 7958\sphinxAtStartPar 7959KRB5\_CC\_NOTFOUND The collection contains no caches 7960 7961\end{itemize} 7962 7963\end{description}\end{quote} 7964 7965\begin{sphinxadmonition}{note}{Note:} 7966\sphinxAtStartPar 7967New in 1.11 7968\end{sphinxadmonition} 7969 7970 7971\subsubsection{krb5\_clear\_error\_message \sphinxhyphen{} Clear the extended error message in a context.} 7972\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)@\spxentry{krb5\_clear\_error\_message}\spxextra{C function}} 7973 7974\begin{fulllineitems} 7975\phantomsection\label{\detokenize{appdev/refs/api/krb5_clear_error_message:c.krb5_clear_error_message}}% 7976\pysigstartmultiline 7977\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_clear\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}}{}% 7978\pysigstopmultiline 7979\end{fulllineitems} 7980 7981\begin{quote}\begin{description} 7982\item[{param}] \leavevmode 7983\sphinxAtStartPar 7984\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 7985 7986\end{description}\end{quote} 7987 7988\sphinxAtStartPar 7989This 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. 7990 7991 7992\subsubsection{krb5\_check\_clockskew \sphinxhyphen{} Check if a timestamp is within the allowed clock skew of the current time.} 7993\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)@\spxentry{krb5\_check\_clockskew}\spxextra{C function}} 7994 7995\begin{fulllineitems} 7996\phantomsection\label{\detokenize{appdev/refs/api/krb5_check_clockskew:c.krb5_check_clockskew}}% 7997\pysigstartmultiline 7998\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_check\_clockskew}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{date}}{}% 7999\pysigstopmultiline 8000\end{fulllineitems} 8001 8002\begin{quote}\begin{description} 8003\item[{param}] \leavevmode 8004\sphinxAtStartPar 8005\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8006 8007\sphinxAtStartPar 8008\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{date} \sphinxhyphen{} Timestamp to check 8009 8010\end{description}\end{quote} 8011\begin{quote}\begin{description} 8012\item[{retval}] \leavevmode\begin{itemize} 8013\item {} 8014\sphinxAtStartPar 80150 Success 8016 8017\item {} 8018\sphinxAtStartPar 8019KRB5KRB\_AP\_ERR\_SKEW date is not within allowable clock skew 8020 8021\end{itemize} 8022 8023\end{description}\end{quote} 8024 8025\sphinxAtStartPar 8026This function checks if \sphinxstyleemphasis{date} is close enough to the current time according to the configured allowable clock skew. 8027 8028\begin{sphinxadmonition}{note}{Note:} 8029\sphinxAtStartPar 8030New in 1.10 8031\end{sphinxadmonition} 8032 8033 8034\subsubsection{krb5\_copy\_addresses \sphinxhyphen{} Copy an array of addresses.} 8035\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)@\spxentry{krb5\_copy\_addresses}\spxextra{C function}} 8036 8037\begin{fulllineitems} 8038\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_addresses:c.krb5_copy_addresses}}% 8039\pysigstartmultiline 8040\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_addresses}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inaddr}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{outaddr}}{}% 8041\pysigstopmultiline 8042\end{fulllineitems} 8043 8044\begin{quote}\begin{description} 8045\item[{param}] \leavevmode 8046\sphinxAtStartPar 8047\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8048 8049\sphinxAtStartPar 8050\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inaddr} \sphinxhyphen{} Array of addresses to be copied 8051 8052\sphinxAtStartPar 8053\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outaddr} \sphinxhyphen{} Copy of array of addresses 8054 8055\end{description}\end{quote} 8056\begin{quote}\begin{description} 8057\item[{retval}] \leavevmode\begin{itemize} 8058\item {} 8059\sphinxAtStartPar 80600 Success; otherwise \sphinxhyphen{} Kerberos error codes 8061 8062\end{itemize} 8063 8064\end{description}\end{quote} 8065 8066\sphinxAtStartPar 8067This function creates a new address array containing a copy of \sphinxstyleemphasis{inaddr} . Use krb5\_free\_addresses() to free \sphinxstyleemphasis{outaddr} when it is no longer needed. 8068 8069 8070\subsubsection{krb5\_copy\_authdata \sphinxhyphen{} Copy an authorization data list.} 8071\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)@\spxentry{krb5\_copy\_authdata}\spxextra{C function}} 8072 8073\begin{fulllineitems} 8074\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_authdata:c.krb5_copy_authdata}}% 8075\pysigstartmultiline 8076\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_authdata}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_authdat}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out}}{}% 8077\pysigstopmultiline 8078\end{fulllineitems} 8079 8080\begin{quote}\begin{description} 8081\item[{param}] \leavevmode 8082\sphinxAtStartPar 8083\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8084 8085\sphinxAtStartPar 8086\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_authdat} \sphinxhyphen{} List of \sphinxstyleemphasis{krb5\_authdata} structures 8087 8088\sphinxAtStartPar 8089\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} New array of \sphinxstyleemphasis{krb5\_authdata} structures 8090 8091\end{description}\end{quote} 8092\begin{quote}\begin{description} 8093\item[{retval}] \leavevmode\begin{itemize} 8094\item {} 8095\sphinxAtStartPar 80960 Success; otherwise \sphinxhyphen{} Kerberos error codes 8097 8098\end{itemize} 8099 8100\end{description}\end{quote} 8101 8102\sphinxAtStartPar 8103This function creates a new authorization data list containing a copy of \sphinxstyleemphasis{in\_authdat} , which must be null\sphinxhyphen{}terminated. Use krb5\_free\_authdata() to free \sphinxstyleemphasis{out} when it is no longer needed. 8104 8105\begin{sphinxadmonition}{note}{Note:} 8106\sphinxAtStartPar 8107The last array entry in \sphinxstyleemphasis{in\_authdat} must be a NULL pointer. 8108\end{sphinxadmonition} 8109 8110 8111\subsubsection{krb5\_copy\_authenticator \sphinxhyphen{} Copy a krb5\_authenticator structure.} 8112\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)@\spxentry{krb5\_copy\_authenticator}\spxextra{C function}} 8113 8114\begin{fulllineitems} 8115\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_authenticator:c.krb5_copy_authenticator}}% 8116\pysigstartmultiline 8117\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_authenticator}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{authfrom}, {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{authto}}{}% 8118\pysigstopmultiline 8119\end{fulllineitems} 8120 8121\begin{quote}\begin{description} 8122\item[{param}] \leavevmode 8123\sphinxAtStartPar 8124\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8125 8126\sphinxAtStartPar 8127\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authfrom} \sphinxhyphen{} krb5\_authenticator structure to be copied 8128 8129\sphinxAtStartPar 8130\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authto} \sphinxhyphen{} Copy of krb5\_authenticator structure 8131 8132\end{description}\end{quote} 8133\begin{quote}\begin{description} 8134\item[{retval}] \leavevmode\begin{itemize} 8135\item {} 8136\sphinxAtStartPar 81370 Success; otherwise \sphinxhyphen{} Kerberos error codes 8138 8139\end{itemize} 8140 8141\end{description}\end{quote} 8142 8143\sphinxAtStartPar 8144This function creates a new krb5\_authenticator structure with the content of \sphinxstyleemphasis{authfrom} . Use krb5\_free\_authenticator() to free \sphinxstyleemphasis{authto} when it is no longer needed. 8145 8146 8147\subsubsection{krb5\_copy\_checksum \sphinxhyphen{} Copy a krb5\_checksum structure.} 8148\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)@\spxentry{krb5\_copy\_checksum}\spxextra{C function}} 8149 8150\begin{fulllineitems} 8151\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_checksum:c.krb5_copy_checksum}}% 8152\pysigstartmultiline 8153\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ckfrom}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ckto}}{}% 8154\pysigstopmultiline 8155\end{fulllineitems} 8156 8157\begin{quote}\begin{description} 8158\item[{param}] \leavevmode 8159\sphinxAtStartPar 8160\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8161 8162\sphinxAtStartPar 8163\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ckfrom} \sphinxhyphen{} Checksum to be copied 8164 8165\sphinxAtStartPar 8166\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ckto} \sphinxhyphen{} Copy of krb5\_checksum structure 8167 8168\end{description}\end{quote} 8169\begin{quote}\begin{description} 8170\item[{retval}] \leavevmode\begin{itemize} 8171\item {} 8172\sphinxAtStartPar 81730 Success; otherwise \sphinxhyphen{} Kerberos error codes 8174 8175\end{itemize} 8176 8177\end{description}\end{quote} 8178 8179\sphinxAtStartPar 8180This function creates a new krb5\_checksum structure with the contents of \sphinxstyleemphasis{ckfrom} . Use krb5\_free\_checksum() to free \sphinxstyleemphasis{ckto} when it is no longer needed. 8181 8182 8183\subsubsection{krb5\_copy\_context \sphinxhyphen{} Copy a krb5\_context structure.} 8184\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)@\spxentry{krb5\_copy\_context}\spxextra{C function}} 8185 8186\begin{fulllineitems} 8187\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_context:c.krb5_copy_context}}% 8188\pysigstartmultiline 8189\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_context}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{nctx\_out}}{}% 8190\pysigstopmultiline 8191\end{fulllineitems} 8192 8193\begin{quote}\begin{description} 8194\item[{param}] \leavevmode 8195\sphinxAtStartPar 8196\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 8197 8198\sphinxAtStartPar 8199\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{nctx\_out} \sphinxhyphen{} New context structure 8200 8201\end{description}\end{quote} 8202\begin{quote}\begin{description} 8203\item[{retval}] \leavevmode\begin{itemize} 8204\item {} 8205\sphinxAtStartPar 82060 Success 8207 8208\end{itemize} 8209 8210\item[{return}] \leavevmode\begin{itemize} 8211\item {} 8212\sphinxAtStartPar 8213Kerberos error codes 8214 8215\end{itemize} 8216 8217\end{description}\end{quote} 8218 8219\sphinxAtStartPar 8220The newly created context must be released by calling krb5\_free\_context() when it is no longer needed. 8221 8222 8223\subsubsection{krb5\_copy\_creds \sphinxhyphen{} Copy a krb5\_creds structure.} 8224\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)@\spxentry{krb5\_copy\_creds}\spxextra{C function}} 8225 8226\begin{fulllineitems} 8227\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_creds:c.krb5_copy_creds}}% 8228\pysigstartmultiline 8229\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{incred}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{outcred}}{}% 8230\pysigstopmultiline 8231\end{fulllineitems} 8232 8233\begin{quote}\begin{description} 8234\item[{param}] \leavevmode 8235\sphinxAtStartPar 8236\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8237 8238\sphinxAtStartPar 8239\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{incred} \sphinxhyphen{} Credentials structure to be copied 8240 8241\sphinxAtStartPar 8242\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outcred} \sphinxhyphen{} Copy of \sphinxstyleemphasis{incred} 8243 8244\end{description}\end{quote} 8245\begin{quote}\begin{description} 8246\item[{retval}] \leavevmode\begin{itemize} 8247\item {} 8248\sphinxAtStartPar 82490 Success; otherwise \sphinxhyphen{} Kerberos error codes 8250 8251\end{itemize} 8252 8253\end{description}\end{quote} 8254 8255\sphinxAtStartPar 8256This function creates a new credential with the contents of \sphinxstyleemphasis{incred} . Use krb5\_free\_creds() to free \sphinxstyleemphasis{outcred} when it is no longer needed. 8257 8258 8259\subsubsection{krb5\_copy\_data \sphinxhyphen{} Copy a krb5\_data object.} 8260\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)@\spxentry{krb5\_copy\_data}\spxextra{C function}} 8261 8262\begin{fulllineitems} 8263\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_data:c.krb5_copy_data}}% 8264\pysigstartmultiline 8265\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_data}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{indata}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{outdata}}{}% 8266\pysigstopmultiline 8267\end{fulllineitems} 8268 8269\begin{quote}\begin{description} 8270\item[{param}] \leavevmode 8271\sphinxAtStartPar 8272\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8273 8274\sphinxAtStartPar 8275\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{indata} \sphinxhyphen{} Data object to be copied 8276 8277\sphinxAtStartPar 8278\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outdata} \sphinxhyphen{} Copy of \sphinxstyleemphasis{indata} 8279 8280\end{description}\end{quote} 8281\begin{quote}\begin{description} 8282\item[{retval}] \leavevmode\begin{itemize} 8283\item {} 8284\sphinxAtStartPar 82850 Success; otherwise \sphinxhyphen{} Kerberos error codes 8286 8287\end{itemize} 8288 8289\end{description}\end{quote} 8290 8291\sphinxAtStartPar 8292This function creates a new krb5\_data object with the contents of \sphinxstyleemphasis{indata} . Use krb5\_free\_data() to free \sphinxstyleemphasis{outdata} when it is no longer needed. 8293 8294 8295\subsubsection{krb5\_copy\_error\_message \sphinxhyphen{} Copy the most recent extended error message from one context to another.} 8296\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)@\spxentry{krb5\_copy\_error\_message}\spxextra{C function}} 8297 8298\begin{fulllineitems} 8299\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_error_message:c.krb5_copy_error_message}}% 8300\pysigstartmultiline 8301\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{dest\_ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{src\_ctx}}{}% 8302\pysigstopmultiline 8303\end{fulllineitems} 8304 8305\begin{quote}\begin{description} 8306\item[{param}] \leavevmode 8307\sphinxAtStartPar 8308\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{dest\_ctx} \sphinxhyphen{} Library context to copy message to 8309 8310\sphinxAtStartPar 8311\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{src\_ctx} \sphinxhyphen{} Library context with current message 8312 8313\end{description}\end{quote} 8314 8315 8316\subsubsection{krb5\_copy\_keyblock \sphinxhyphen{} Copy a keyblock.} 8317\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)@\spxentry{krb5\_copy\_keyblock}\spxextra{C function}} 8318 8319\begin{fulllineitems} 8320\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_keyblock:c.krb5_copy_keyblock}}% 8321\pysigstartmultiline 8322\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_keyblock}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{from}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{to}}{}% 8323\pysigstopmultiline 8324\end{fulllineitems} 8325 8326\begin{quote}\begin{description} 8327\item[{param}] \leavevmode 8328\sphinxAtStartPar 8329\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8330 8331\sphinxAtStartPar 8332\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{from} \sphinxhyphen{} Keyblock to be copied 8333 8334\sphinxAtStartPar 8335\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{to} \sphinxhyphen{} Copy of keyblock \sphinxstyleemphasis{from} 8336 8337\end{description}\end{quote} 8338\begin{quote}\begin{description} 8339\item[{retval}] \leavevmode\begin{itemize} 8340\item {} 8341\sphinxAtStartPar 83420 Success; otherwise \sphinxhyphen{} Kerberos error codes 8343 8344\end{itemize} 8345 8346\end{description}\end{quote} 8347 8348\sphinxAtStartPar 8349This function creates a new keyblock with the same contents as \sphinxstyleemphasis{from} . Use krb5\_free\_keyblock() to free \sphinxstyleemphasis{to} when it is no longer needed. 8350 8351 8352\subsubsection{krb5\_copy\_keyblock\_contents \sphinxhyphen{} Copy the contents of a keyblock.} 8353\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)@\spxentry{krb5\_copy\_keyblock\_contents}\spxextra{C function}} 8354 8355\begin{fulllineitems} 8356\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_keyblock_contents:c.krb5_copy_keyblock_contents}}% 8357\pysigstartmultiline 8358\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_keyblock\_contents}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{from}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{to}}{}% 8359\pysigstopmultiline 8360\end{fulllineitems} 8361 8362\begin{quote}\begin{description} 8363\item[{param}] \leavevmode 8364\sphinxAtStartPar 8365\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8366 8367\sphinxAtStartPar 8368\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{from} \sphinxhyphen{} Key to be copied 8369 8370\sphinxAtStartPar 8371\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{to} \sphinxhyphen{} Output key 8372 8373\end{description}\end{quote} 8374\begin{quote}\begin{description} 8375\item[{retval}] \leavevmode\begin{itemize} 8376\item {} 8377\sphinxAtStartPar 83780 Success; otherwise \sphinxhyphen{} Kerberos error codes 8379 8380\end{itemize} 8381 8382\end{description}\end{quote} 8383 8384\sphinxAtStartPar 8385This function copies the contents of \sphinxstyleemphasis{from} to \sphinxstyleemphasis{to} . Use krb5\_free\_keyblock\_contents() to free \sphinxstyleemphasis{to} when it is no longer needed. 8386 8387 8388\subsubsection{krb5\_copy\_principal \sphinxhyphen{} Copy a principal.} 8389\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)@\spxentry{krb5\_copy\_principal}\spxextra{C function}} 8390 8391\begin{fulllineitems} 8392\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_principal:c.krb5_copy_principal}}% 8393\pysigstartmultiline 8394\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_principal}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{inprinc}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outprinc}}{}% 8395\pysigstopmultiline 8396\end{fulllineitems} 8397 8398\begin{quote}\begin{description} 8399\item[{param}] \leavevmode 8400\sphinxAtStartPar 8401\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8402 8403\sphinxAtStartPar 8404\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inprinc} \sphinxhyphen{} Principal to be copied 8405 8406\sphinxAtStartPar 8407\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outprinc} \sphinxhyphen{} Copy of \sphinxstyleemphasis{inprinc} 8408 8409\end{description}\end{quote} 8410\begin{quote}\begin{description} 8411\item[{retval}] \leavevmode\begin{itemize} 8412\item {} 8413\sphinxAtStartPar 84140 Success; otherwise \sphinxhyphen{} Kerberos error codes 8415 8416\end{itemize} 8417 8418\end{description}\end{quote} 8419 8420\sphinxAtStartPar 8421This function creates a new principal structure with the contents of \sphinxstyleemphasis{inprinc} . Use krb5\_free\_principal() to free \sphinxstyleemphasis{outprinc} when it is no longer needed. 8422 8423 8424\subsubsection{krb5\_copy\_ticket \sphinxhyphen{} Copy a krb5\_ticket structure.} 8425\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)@\spxentry{krb5\_copy\_ticket}\spxextra{C function}} 8426 8427\begin{fulllineitems} 8428\phantomsection\label{\detokenize{appdev/refs/api/krb5_copy_ticket:c.krb5_copy_ticket}}% 8429\pysigstartmultiline 8430\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_copy\_ticket}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{from}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{pto}}{}% 8431\pysigstopmultiline 8432\end{fulllineitems} 8433 8434\begin{quote}\begin{description} 8435\item[{param}] \leavevmode 8436\sphinxAtStartPar 8437\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8438 8439\sphinxAtStartPar 8440\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{from} \sphinxhyphen{} Ticket to be copied 8441 8442\sphinxAtStartPar 8443\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pto} \sphinxhyphen{} Copy of ticket 8444 8445\end{description}\end{quote} 8446\begin{quote}\begin{description} 8447\item[{retval}] \leavevmode\begin{itemize} 8448\item {} 8449\sphinxAtStartPar 84500 Success; otherwise \sphinxhyphen{} Kerberos error codes 8451 8452\end{itemize} 8453 8454\end{description}\end{quote} 8455 8456\sphinxAtStartPar 8457This function creates a new krb5\_ticket structure containing the contents of \sphinxstyleemphasis{from} . Use krb5\_free\_ticket() to free \sphinxstyleemphasis{pto} when it is no longer needed. 8458 8459 8460\subsubsection{krb5\_find\_authdata \sphinxhyphen{} Find authorization data elements.} 8461\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)@\spxentry{krb5\_find\_authdata}\spxextra{C function}} 8462 8463\begin{fulllineitems} 8464\phantomsection\label{\detokenize{appdev/refs/api/krb5_find_authdata:c.krb5_find_authdata}}% 8465\pysigstartmultiline 8466\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_find\_authdata}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ticket\_authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ap\_req\_authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{\DUrole{n}{krb5\_authdatatype}}}}\DUrole{w}{ }\DUrole{n}{ad\_type}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{results}}{}% 8467\pysigstopmultiline 8468\end{fulllineitems} 8469 8470\begin{quote}\begin{description} 8471\item[{param}] \leavevmode 8472\sphinxAtStartPar 8473\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8474 8475\sphinxAtStartPar 8476\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ticket\_authdata} \sphinxhyphen{} Authorization data list from ticket 8477 8478\sphinxAtStartPar 8479\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_authdata} \sphinxhyphen{} Authorization data list from AP request 8480 8481\sphinxAtStartPar 8482\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ad\_type} \sphinxhyphen{} Authorization data type to find 8483 8484\sphinxAtStartPar 8485\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{results} \sphinxhyphen{} List of matching entries 8486 8487\end{description}\end{quote} 8488 8489\sphinxAtStartPar 8490This 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\sphinxhyphen{}IF\sphinxhyphen{}RELEVANT containers if found in either list. Use krb5\_free\_authdata() to free \sphinxstyleemphasis{results} when it is no longer needed. 8491 8492\begin{sphinxadmonition}{note}{Note:} 8493\sphinxAtStartPar 8494New in 1.10 8495\end{sphinxadmonition} 8496 8497 8498\subsubsection{krb5\_free\_addresses \sphinxhyphen{} Free the data stored in array of addresses.} 8499\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)@\spxentry{krb5\_free\_addresses}\spxextra{C function}} 8500 8501\begin{fulllineitems} 8502\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_addresses:c.krb5_free_addresses}}% 8503\pysigstartmultiline 8504\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_addresses}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{val}}{}% 8505\pysigstopmultiline 8506\end{fulllineitems} 8507 8508\begin{quote}\begin{description} 8509\item[{param}] \leavevmode 8510\sphinxAtStartPar 8511\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8512 8513\sphinxAtStartPar 8514\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Array of addresses to be freed 8515 8516\end{description}\end{quote} 8517 8518\sphinxAtStartPar 8519This function frees the contents of \sphinxstyleemphasis{val} and the array itself. 8520 8521\begin{sphinxadmonition}{note}{Note:} 8522\sphinxAtStartPar 8523The last entry in the array must be a NULL pointer. 8524\end{sphinxadmonition} 8525 8526 8527\subsubsection{krb5\_free\_ap\_rep\_enc\_part \sphinxhyphen{} Free a krb5\_ap\_rep\_enc\_part structure.} 8528\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)@\spxentry{krb5\_free\_ap\_rep\_enc\_part}\spxextra{C function}} 8529 8530\begin{fulllineitems} 8531\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_ap_rep_enc_part:c.krb5_free_ap_rep_enc_part}}% 8532\pysigstartmultiline 8533\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_ap\_rep\_enc\_part}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8534\pysigstopmultiline 8535\end{fulllineitems} 8536 8537\begin{quote}\begin{description} 8538\item[{param}] \leavevmode 8539\sphinxAtStartPar 8540\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8541 8542\sphinxAtStartPar 8543\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} AP\sphinxhyphen{}REP enc part to be freed 8544 8545\end{description}\end{quote} 8546 8547\sphinxAtStartPar 8548This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8549 8550 8551\subsubsection{krb5\_free\_authdata \sphinxhyphen{} Free the storage assigned to array of authentication data.} 8552\label{\detokenize{appdev/refs/api/krb5_free_authdata:krb5-free-authdata-free-the-storage-assigned-to-array-of-authentication-data}}\label{\detokenize{appdev/refs/api/krb5_free_authdata::doc}}\index{krb5\_free\_authdata (C function)@\spxentry{krb5\_free\_authdata}\spxextra{C function}} 8553 8554\begin{fulllineitems} 8555\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_authdata:c.krb5_free_authdata}}% 8556\pysigstartmultiline 8557\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_authdata}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{val}}{}% 8558\pysigstopmultiline 8559\end{fulllineitems} 8560 8561\begin{quote}\begin{description} 8562\item[{param}] \leavevmode 8563\sphinxAtStartPar 8564\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8565 8566\sphinxAtStartPar 8567\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Array of authentication data to be freed 8568 8569\end{description}\end{quote} 8570 8571\sphinxAtStartPar 8572This function frees the contents of \sphinxstyleemphasis{val} and the array itself. 8573 8574\begin{sphinxadmonition}{note}{Note:} 8575\sphinxAtStartPar 8576The last entry in the array must be a NULL pointer. 8577\end{sphinxadmonition} 8578 8579 8580\subsubsection{krb5\_free\_authenticator \sphinxhyphen{} Free a krb5\_authenticator structure.} 8581\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)@\spxentry{krb5\_free\_authenticator}\spxextra{C function}} 8582 8583\begin{fulllineitems} 8584\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_authenticator:c.krb5_free_authenticator}}% 8585\pysigstartmultiline 8586\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_authenticator}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8587\pysigstopmultiline 8588\end{fulllineitems} 8589 8590\begin{quote}\begin{description} 8591\item[{param}] \leavevmode 8592\sphinxAtStartPar 8593\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8594 8595\sphinxAtStartPar 8596\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Authenticator structure to be freed 8597 8598\end{description}\end{quote} 8599 8600\sphinxAtStartPar 8601This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8602 8603 8604\subsubsection{krb5\_free\_cred\_contents \sphinxhyphen{} Free the contents of a krb5\_creds structure.} 8605\label{\detokenize{appdev/refs/api/krb5_free_cred_contents:krb5-free-cred-contents-free-the-contents-of-a-krb5-creds-structure}}\label{\detokenize{appdev/refs/api/krb5_free_cred_contents::doc}}\index{krb5\_free\_cred\_contents (C function)@\spxentry{krb5\_free\_cred\_contents}\spxextra{C function}} 8606 8607\begin{fulllineitems} 8608\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_cred_contents:c.krb5_free_cred_contents}}% 8609\pysigstartmultiline 8610\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_cred\_contents}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8611\pysigstopmultiline 8612\end{fulllineitems} 8613 8614\begin{quote}\begin{description} 8615\item[{param}] \leavevmode 8616\sphinxAtStartPar 8617\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8618 8619\sphinxAtStartPar 8620\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Credential structure to free contents of 8621 8622\end{description}\end{quote} 8623 8624\sphinxAtStartPar 8625This function frees the contents of \sphinxstyleemphasis{val} , but not the structure itself. 8626 8627 8628\subsubsection{krb5\_free\_creds \sphinxhyphen{} Free a krb5\_creds structure.} 8629\label{\detokenize{appdev/refs/api/krb5_free_creds:krb5-free-creds-free-a-krb5-creds-structure}}\label{\detokenize{appdev/refs/api/krb5_free_creds::doc}}\index{krb5\_free\_creds (C function)@\spxentry{krb5\_free\_creds}\spxextra{C function}} 8630 8631\begin{fulllineitems} 8632\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_creds:c.krb5_free_creds}}% 8633\pysigstartmultiline 8634\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8635\pysigstopmultiline 8636\end{fulllineitems} 8637 8638\begin{quote}\begin{description} 8639\item[{param}] \leavevmode 8640\sphinxAtStartPar 8641\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8642 8643\sphinxAtStartPar 8644\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Credential structure to be freed. 8645 8646\end{description}\end{quote} 8647 8648\sphinxAtStartPar 8649This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8650 8651 8652\subsubsection{krb5\_free\_data \sphinxhyphen{} Free a krb5\_data structure.} 8653\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)@\spxentry{krb5\_free\_data}\spxextra{C function}} 8654 8655\begin{fulllineitems} 8656\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_data:c.krb5_free_data}}% 8657\pysigstartmultiline 8658\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_data}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8659\pysigstopmultiline 8660\end{fulllineitems} 8661 8662\begin{quote}\begin{description} 8663\item[{param}] \leavevmode 8664\sphinxAtStartPar 8665\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8666 8667\sphinxAtStartPar 8668\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Data structure to be freed 8669 8670\end{description}\end{quote} 8671 8672\sphinxAtStartPar 8673This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8674 8675 8676\subsubsection{krb5\_free\_data\_contents \sphinxhyphen{} Free the contents of a krb5\_data structure and zero the data field.} 8677\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)@\spxentry{krb5\_free\_data\_contents}\spxextra{C function}} 8678 8679\begin{fulllineitems} 8680\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_data_contents:c.krb5_free_data_contents}}% 8681\pysigstartmultiline 8682\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_data\_contents}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8683\pysigstopmultiline 8684\end{fulllineitems} 8685 8686\begin{quote}\begin{description} 8687\item[{param}] \leavevmode 8688\sphinxAtStartPar 8689\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8690 8691\sphinxAtStartPar 8692\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Data structure to free contents of 8693 8694\end{description}\end{quote} 8695 8696\sphinxAtStartPar 8697This function frees the contents of \sphinxstyleemphasis{val} , but not the structure itself. It sets the structure’s data pointer to null and (beginning in release 1.19) sets its length to zero. 8698 8699 8700\subsubsection{krb5\_free\_default\_realm \sphinxhyphen{} Free a default realm string returned by krb5\_get\_default\_realm().} 8701\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)@\spxentry{krb5\_free\_default\_realm}\spxextra{C function}} 8702 8703\begin{fulllineitems} 8704\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_default_realm:c.krb5_free_default_realm}}% 8705\pysigstartmultiline 8706\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_default\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{lrealm}}{}% 8707\pysigstopmultiline 8708\end{fulllineitems} 8709 8710\begin{quote}\begin{description} 8711\item[{param}] \leavevmode 8712\sphinxAtStartPar 8713\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8714 8715\sphinxAtStartPar 8716\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{lrealm} \sphinxhyphen{} Realm to be freed 8717 8718\end{description}\end{quote} 8719 8720 8721\subsubsection{krb5\_free\_enctypes \sphinxhyphen{} Free an array of encryption types.} 8722\label{\detokenize{appdev/refs/api/krb5_free_enctypes:krb5-free-enctypes-free-an-array-of-encryption-types}}\label{\detokenize{appdev/refs/api/krb5_free_enctypes::doc}}\index{krb5\_free\_enctypes (C function)@\spxentry{krb5\_free\_enctypes}\spxextra{C function}} 8723 8724\begin{fulllineitems} 8725\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_enctypes:c.krb5_free_enctypes}}% 8726\pysigstartmultiline 8727\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_enctypes}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8728\pysigstopmultiline 8729\end{fulllineitems} 8730 8731\begin{quote}\begin{description} 8732\item[{param}] \leavevmode 8733\sphinxAtStartPar 8734\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8735 8736\sphinxAtStartPar 8737\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Array of enctypes to be freed 8738 8739\end{description}\end{quote} 8740 8741\begin{sphinxadmonition}{note}{Note:} 8742\sphinxAtStartPar 8743New in 1.12 8744\end{sphinxadmonition} 8745 8746 8747\subsubsection{krb5\_free\_error \sphinxhyphen{} Free an error allocated by krb5\_read\_error() or krb5\_sendauth().} 8748\label{\detokenize{appdev/refs/api/krb5_free_error:krb5-free-error-free-an-error-allocated-by-krb5-read-error-or-krb5-sendauth}}\label{\detokenize{appdev/refs/api/krb5_free_error::doc}}\index{krb5\_free\_error (C function)@\spxentry{krb5\_free\_error}\spxextra{C function}} 8749 8750\begin{fulllineitems} 8751\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_error:c.krb5_free_error}}% 8752\pysigstartmultiline 8753\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_error}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8754\pysigstopmultiline 8755\end{fulllineitems} 8756 8757\begin{quote}\begin{description} 8758\item[{param}] \leavevmode 8759\sphinxAtStartPar 8760\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8761 8762\sphinxAtStartPar 8763\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Error data structure to be freed 8764 8765\end{description}\end{quote} 8766 8767\sphinxAtStartPar 8768This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8769 8770 8771\subsubsection{krb5\_free\_host\_realm \sphinxhyphen{} Free the memory allocated by krb5\_get\_host\_realm().} 8772\label{\detokenize{appdev/refs/api/krb5_free_host_realm:krb5-free-host-realm-free-the-memory-allocated-by-krb5-get-host-realm}}\label{\detokenize{appdev/refs/api/krb5_free_host_realm::doc}}\index{krb5\_free\_host\_realm (C function)@\spxentry{krb5\_free\_host\_realm}\spxextra{C function}} 8773 8774\begin{fulllineitems} 8775\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_host_realm:c.krb5_free_host_realm}}% 8776\pysigstartmultiline 8777\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_host\_realm}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realmlist}}{}% 8778\pysigstopmultiline 8779\end{fulllineitems} 8780 8781\begin{quote}\begin{description} 8782\item[{param}] \leavevmode 8783\sphinxAtStartPar 8784\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8785 8786\sphinxAtStartPar 8787\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{realmlist} \sphinxhyphen{} List of realm names to be released 8788 8789\end{description}\end{quote} 8790\begin{quote}\begin{description} 8791\item[{retval}] \leavevmode\begin{itemize} 8792\item {} 8793\sphinxAtStartPar 87940 Success 8795 8796\end{itemize} 8797 8798\item[{return}] \leavevmode\begin{itemize} 8799\item {} 8800\sphinxAtStartPar 8801Kerberos error codes 8802 8803\end{itemize} 8804 8805\end{description}\end{quote} 8806 8807 8808\subsubsection{krb5\_free\_keyblock \sphinxhyphen{} Free a krb5\_keyblock structure.} 8809\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)@\spxentry{krb5\_free\_keyblock}\spxextra{C function}} 8810 8811\begin{fulllineitems} 8812\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_keyblock:c.krb5_free_keyblock}}% 8813\pysigstartmultiline 8814\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_keyblock}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8815\pysigstopmultiline 8816\end{fulllineitems} 8817 8818\begin{quote}\begin{description} 8819\item[{param}] \leavevmode 8820\sphinxAtStartPar 8821\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8822 8823\sphinxAtStartPar 8824\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Keyblock to be freed 8825 8826\end{description}\end{quote} 8827 8828\sphinxAtStartPar 8829This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8830 8831 8832\subsubsection{krb5\_free\_keyblock\_contents \sphinxhyphen{} Free the contents of a krb5\_keyblock structure.} 8833\label{\detokenize{appdev/refs/api/krb5_free_keyblock_contents:krb5-free-keyblock-contents-free-the-contents-of-a-krb5-keyblock-structure}}\label{\detokenize{appdev/refs/api/krb5_free_keyblock_contents::doc}}\index{krb5\_free\_keyblock\_contents (C function)@\spxentry{krb5\_free\_keyblock\_contents}\spxextra{C function}} 8834 8835\begin{fulllineitems} 8836\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_keyblock_contents:c.krb5_free_keyblock_contents}}% 8837\pysigstartmultiline 8838\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_keyblock\_contents}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 8839\pysigstopmultiline 8840\end{fulllineitems} 8841 8842\begin{quote}\begin{description} 8843\item[{param}] \leavevmode 8844\sphinxAtStartPar 8845\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8846 8847\sphinxAtStartPar 8848\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Keyblock to be freed 8849 8850\end{description}\end{quote} 8851 8852\sphinxAtStartPar 8853This function frees the contents of \sphinxstyleemphasis{key} , but not the structure itself. 8854 8855 8856\subsubsection{krb5\_free\_keytab\_entry\_contents \sphinxhyphen{} Free the contents of a key table entry.} 8857\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)@\spxentry{krb5\_free\_keytab\_entry\_contents}\spxextra{C function}} 8858 8859\begin{fulllineitems} 8860\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_keytab_entry_contents:c.krb5_free_keytab_entry_contents}}% 8861\pysigstartmultiline 8862\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_keytab\_entry\_contents}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{entry}}{}% 8863\pysigstopmultiline 8864\end{fulllineitems} 8865 8866\begin{quote}\begin{description} 8867\item[{param}] \leavevmode 8868\sphinxAtStartPar 8869\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8870 8871\sphinxAtStartPar 8872\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{entry} \sphinxhyphen{} Key table entry whose contents are to be freed 8873 8874\end{description}\end{quote} 8875\begin{quote}\begin{description} 8876\item[{retval}] \leavevmode\begin{itemize} 8877\item {} 8878\sphinxAtStartPar 88790 Success; otherwise \sphinxhyphen{} Kerberos error codes 8880 8881\end{itemize} 8882 8883\end{description}\end{quote} 8884 8885\begin{sphinxadmonition}{note}{Note:} 8886\sphinxAtStartPar 8887The pointer is not freed. 8888\end{sphinxadmonition} 8889 8890 8891\subsubsection{krb5\_free\_string \sphinxhyphen{} Free a string allocated by a krb5 function.} 8892\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)@\spxentry{krb5\_free\_string}\spxextra{C function}} 8893 8894\begin{fulllineitems} 8895\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_string:c.krb5_free_string}}% 8896\pysigstartmultiline 8897\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8898\pysigstopmultiline 8899\end{fulllineitems} 8900 8901\begin{quote}\begin{description} 8902\item[{param}] \leavevmode 8903\sphinxAtStartPar 8904\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8905 8906\sphinxAtStartPar 8907\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} String to be freed 8908 8909\end{description}\end{quote} 8910 8911\begin{sphinxadmonition}{note}{Note:} 8912\sphinxAtStartPar 8913New in 1.10 8914\end{sphinxadmonition} 8915 8916 8917\subsubsection{krb5\_free\_ticket \sphinxhyphen{} Free a ticket.} 8918\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)@\spxentry{krb5\_free\_ticket}\spxextra{C function}} 8919 8920\begin{fulllineitems} 8921\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_ticket:c.krb5_free_ticket}}% 8922\pysigstartmultiline 8923\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_ticket}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8924\pysigstopmultiline 8925\end{fulllineitems} 8926 8927\begin{quote}\begin{description} 8928\item[{param}] \leavevmode 8929\sphinxAtStartPar 8930\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8931 8932\sphinxAtStartPar 8933\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Ticket to be freed 8934 8935\end{description}\end{quote} 8936 8937\sphinxAtStartPar 8938This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 8939 8940 8941\subsubsection{krb5\_free\_unparsed\_name \sphinxhyphen{} Free a string representation of a principal.} 8942\label{\detokenize{appdev/refs/api/krb5_free_unparsed_name:krb5-free-unparsed-name-free-a-string-representation-of-a-principal}}\label{\detokenize{appdev/refs/api/krb5_free_unparsed_name::doc}}\index{krb5\_free\_unparsed\_name (C function)@\spxentry{krb5\_free\_unparsed\_name}\spxextra{C function}} 8943 8944\begin{fulllineitems} 8945\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_unparsed_name:c.krb5_free_unparsed_name}}% 8946\pysigstartmultiline 8947\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_unparsed\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 8948\pysigstopmultiline 8949\end{fulllineitems} 8950 8951\begin{quote}\begin{description} 8952\item[{param}] \leavevmode 8953\sphinxAtStartPar 8954\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8955 8956\sphinxAtStartPar 8957\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Name string to be freed 8958 8959\end{description}\end{quote} 8960 8961 8962\subsubsection{krb5\_get\_etype\_info \sphinxhyphen{} Retrieve enctype, salt and s2kparams from KDC.} 8963\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)@\spxentry{krb5\_get\_etype\_info}\spxextra{C function}} 8964 8965\begin{fulllineitems} 8966\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_etype_info:c.krb5_get_etype_info}}% 8967\pysigstartmultiline 8968\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_etype\_info}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{enctype\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{salt\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{s2kparams\_out}}{}% 8969\pysigstopmultiline 8970\end{fulllineitems} 8971 8972\begin{quote}\begin{description} 8973\item[{param}] \leavevmode 8974\sphinxAtStartPar 8975\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 8976 8977\sphinxAtStartPar 8978\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal whose information is requested 8979 8980\sphinxAtStartPar 8981\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{opt} \sphinxhyphen{} Initial credential options 8982 8983\sphinxAtStartPar 8984\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{enctype\_out} \sphinxhyphen{} The enctype chosen by KDC 8985 8986\sphinxAtStartPar 8987\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{salt\_out} \sphinxhyphen{} Salt returned from KDC 8988 8989\sphinxAtStartPar 8990\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{s2kparams\_out} \sphinxhyphen{} String\sphinxhyphen{}to\sphinxhyphen{}key parameters returned from KDC 8991 8992\end{description}\end{quote} 8993\begin{quote}\begin{description} 8994\item[{retval}] \leavevmode\begin{itemize} 8995\item {} 8996\sphinxAtStartPar 89970 Success 8998 8999\end{itemize} 9000 9001\item[{return}] \leavevmode\begin{itemize} 9002\item {} 9003\sphinxAtStartPar 9004A Kerberos error code 9005 9006\end{itemize} 9007 9008\end{description}\end{quote} 9009 9010\sphinxAtStartPar 9011Send an initial ticket request for \sphinxstyleemphasis{principal} and extract the encryption type, salt type, and string\sphinxhyphen{}to\sphinxhyphen{}key parameters from the KDC response. If the KDC provides no etype\sphinxhyphen{}info, set \sphinxstyleemphasis{enctype\_out} to \sphinxstylestrong{ENCTYPE\_NULL} and set \sphinxstyleemphasis{salt\_out} and \sphinxstyleemphasis{s2kparams\_out} to empty. If the KDC etype\sphinxhyphen{}info provides no salt, compute the default salt and place it in \sphinxstyleemphasis{salt\_out} . If the KDC etype\sphinxhyphen{}info provides no string\sphinxhyphen{}to\sphinxhyphen{}key parameters, set \sphinxstyleemphasis{s2kparams\_out} to empty. 9012\begin{quote} 9013 9014\sphinxAtStartPar 9015\sphinxstyleemphasis{opt} may be used to specify options which affect the initial request, such as request encryption types or a FAST armor cache (see krb5\_get\_init\_creds\_opt\_set\_etype\_list() and krb5\_get\_init\_creds\_opt\_set\_fast\_ccache\_name()). 9016\end{quote} 9017 9018\sphinxAtStartPar 9019Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{salt\_out} and \sphinxstyleemphasis{s2kparams\_out} when they are no longer needed. 9020 9021\begin{sphinxadmonition}{note}{Note:} 9022\sphinxAtStartPar 9023New in 1.17 9024\end{sphinxadmonition} 9025 9026 9027\subsubsection{krb5\_get\_permitted\_enctypes \sphinxhyphen{} Return a list of encryption types permitted for session keys.} 9028\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)@\spxentry{krb5\_get\_permitted\_enctypes}\spxextra{C function}} 9029 9030\begin{fulllineitems} 9031\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_permitted_enctypes:c.krb5_get_permitted_enctypes}}% 9032\pysigstartmultiline 9033\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_permitted\_enctypes}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ktypes}}{}% 9034\pysigstopmultiline 9035\end{fulllineitems} 9036 9037\begin{quote}\begin{description} 9038\item[{param}] \leavevmode 9039\sphinxAtStartPar 9040\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9041 9042\sphinxAtStartPar 9043\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ktypes} \sphinxhyphen{} Zero\sphinxhyphen{}terminated list of encryption types 9044 9045\end{description}\end{quote} 9046\begin{quote}\begin{description} 9047\item[{retval}] \leavevmode\begin{itemize} 9048\item {} 9049\sphinxAtStartPar 90500 Success; otherwise \sphinxhyphen{} Kerberos error codes 9051 9052\end{itemize} 9053 9054\end{description}\end{quote} 9055 9056\sphinxAtStartPar 9057This function returns the list of encryption types permitted for session keys within \sphinxstyleemphasis{context} , as determined by configuration or by a previous call to krb5\_set\_default\_tgs\_enctypes(). 9058 9059\sphinxAtStartPar 9060Use krb5\_free\_enctypes() to free \sphinxstyleemphasis{ktypes} when it is no longer needed. 9061 9062 9063\subsubsection{krb5\_get\_server\_rcache \sphinxhyphen{} Generate a replay cache object for server use and open it.} 9064\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)@\spxentry{krb5\_get\_server\_rcache}\spxextra{C function}} 9065 9066\begin{fulllineitems} 9067\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_server_rcache:c.krb5_get_server_rcache}}% 9068\pysigstartmultiline 9069\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_server\_rcache}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{piece}, {\hyperref[\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}]{\sphinxcrossref{\DUrole{n}{krb5\_rcache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rcptr}}{}% 9070\pysigstopmultiline 9071\end{fulllineitems} 9072 9073\begin{quote}\begin{description} 9074\item[{param}] \leavevmode 9075\sphinxAtStartPar 9076\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9077 9078\sphinxAtStartPar 9079\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{piece} \sphinxhyphen{} Unused (replay cache identifier) 9080 9081\sphinxAtStartPar 9082\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rcptr} \sphinxhyphen{} Handle to an open rcache 9083 9084\end{description}\end{quote} 9085\begin{quote}\begin{description} 9086\item[{retval}] \leavevmode\begin{itemize} 9087\item {} 9088\sphinxAtStartPar 90890 Success; otherwise \sphinxhyphen{} Kerberos error codes 9090 9091\end{itemize} 9092 9093\end{description}\end{quote} 9094 9095\sphinxAtStartPar 9096This function creates a handle to the default replay cache. Use krb5\_rc\_close() to close \sphinxstyleemphasis{rcptr} when it is no longer needed. 9097 9098\begin{sphinxadmonition}{note}{Note:} 9099\sphinxAtStartPar 9100Prior to release 1.18, this function creates a handle to a different replay cache for each unique value of \sphinxstyleemphasis{piece} . 9101\end{sphinxadmonition} 9102 9103 9104\subsubsection{krb5\_get\_time\_offsets \sphinxhyphen{} Return the time offsets from the os context.} 9105\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)@\spxentry{krb5\_get\_time\_offsets}\spxextra{C function}} 9106 9107\begin{fulllineitems} 9108\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_time_offsets:c.krb5_get_time_offsets}}% 9109\pysigstartmultiline 9110\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_time\_offsets}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{seconds}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{microseconds}}{}% 9111\pysigstopmultiline 9112\end{fulllineitems} 9113 9114\begin{quote}\begin{description} 9115\item[{param}] \leavevmode 9116\sphinxAtStartPar 9117\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9118 9119\sphinxAtStartPar 9120\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{seconds} \sphinxhyphen{} Time offset, seconds portion 9121 9122\sphinxAtStartPar 9123\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{microseconds} \sphinxhyphen{} Time offset, microseconds portion 9124 9125\end{description}\end{quote} 9126\begin{quote}\begin{description} 9127\item[{retval}] \leavevmode\begin{itemize} 9128\item {} 9129\sphinxAtStartPar 91300 Success; otherwise \sphinxhyphen{} Kerberos error codes 9131 9132\end{itemize} 9133 9134\end{description}\end{quote} 9135 9136\sphinxAtStartPar 9137This function returns the time offsets in \sphinxstyleemphasis{context} . 9138 9139 9140\subsubsection{krb5\_init\_context\_profile \sphinxhyphen{} Create a krb5 library context using a specified profile.} 9141\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)@\spxentry{krb5\_init\_context\_profile}\spxextra{C function}} 9142 9143\begin{fulllineitems} 9144\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_context_profile:c.krb5_init_context_profile}}% 9145\pysigstartmultiline 9146\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_context\_profile}}}}{\DUrole{k}{struct}\DUrole{w}{ }\DUrole{n}{\_profile\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{profile}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{context}}{}% 9147\pysigstopmultiline 9148\end{fulllineitems} 9149 9150\begin{quote}\begin{description} 9151\item[{param}] \leavevmode 9152\sphinxAtStartPar 9153\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{profile} \sphinxhyphen{} Profile object (NULL to create default profile) 9154 9155\sphinxAtStartPar 9156\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Context initialization flags 9157 9158\sphinxAtStartPar 9159\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9160 9161\end{description}\end{quote} 9162 9163\sphinxAtStartPar 9164Create 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\sphinxhyphen{}null, a copy of it will be made for the new context; the caller should still clean up its copy. Valid flag values are: 9165\begin{itemize} 9166\item {} 9167\sphinxAtStartPar 9168\#KRB5\_INIT\_CONTEXT\_SECURE Ignore environment variables 9169 9170\item {} 9171\sphinxAtStartPar 9172\#KRB5\_INIT\_CONTEXT\_KDC Use KDC configuration if creating profile 9173 9174\end{itemize} 9175 9176 9177\subsubsection{krb5\_init\_creds\_free \sphinxhyphen{} Free an initial credentials context.} 9178\label{\detokenize{appdev/refs/api/krb5_init_creds_free:krb5-init-creds-free-free-an-initial-credentials-context}}\label{\detokenize{appdev/refs/api/krb5_init_creds_free::doc}}\index{krb5\_init\_creds\_free (C function)@\spxentry{krb5\_init\_creds\_free}\spxextra{C function}} 9179 9180\begin{fulllineitems} 9181\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_free:c.krb5_init_creds_free}}% 9182\pysigstartmultiline 9183\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}}{}% 9184\pysigstopmultiline 9185\end{fulllineitems} 9186 9187\begin{quote}\begin{description} 9188\item[{param}] \leavevmode 9189\sphinxAtStartPar 9190\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9191 9192\sphinxAtStartPar 9193\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9194 9195\end{description}\end{quote} 9196\begin{quote} 9197 9198\sphinxAtStartPar 9199\sphinxstyleemphasis{context} must be the same as the one passed to krb5\_init\_creds\_init() for this initial credentials context. 9200\end{quote} 9201 9202 9203\subsubsection{krb5\_init\_creds\_get \sphinxhyphen{} Acquire credentials using an initial credentials context.} 9204\label{\detokenize{appdev/refs/api/krb5_init_creds_get:krb5-init-creds-get-acquire-credentials-using-an-initial-credentials-context}}\label{\detokenize{appdev/refs/api/krb5_init_creds_get::doc}}\index{krb5\_init\_creds\_get (C function)@\spxentry{krb5\_init\_creds\_get}\spxextra{C function}} 9205 9206\begin{fulllineitems} 9207\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get:c.krb5_init_creds_get}}% 9208\pysigstartmultiline 9209\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_get}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}}{}% 9210\pysigstopmultiline 9211\end{fulllineitems} 9212 9213\begin{quote}\begin{description} 9214\item[{param}] \leavevmode 9215\sphinxAtStartPar 9216\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9217 9218\sphinxAtStartPar 9219\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9220 9221\end{description}\end{quote} 9222\begin{quote}\begin{description} 9223\item[{retval}] \leavevmode\begin{itemize} 9224\item {} 9225\sphinxAtStartPar 92260 Success; otherwise \sphinxhyphen{} Kerberos error codes 9227 9228\end{itemize} 9229 9230\end{description}\end{quote} 9231 9232\sphinxAtStartPar 9233This function synchronously obtains credentials using a context created by krb5\_init\_creds\_init(). On successful return, the credentials can be retrieved with krb5\_init\_creds\_get\_creds(). 9234\begin{quote} 9235 9236\sphinxAtStartPar 9237\sphinxstyleemphasis{context} must be the same as the one passed to krb5\_init\_creds\_init() for this initial credentials context. 9238\end{quote} 9239 9240 9241\subsubsection{krb5\_init\_creds\_get\_creds \sphinxhyphen{} Retrieve acquired credentials from an initial credentials context.} 9242\label{\detokenize{appdev/refs/api/krb5_init_creds_get_creds:krb5-init-creds-get-creds-retrieve-acquired-credentials-from-an-initial-credentials-context}}\label{\detokenize{appdev/refs/api/krb5_init_creds_get_creds::doc}}\index{krb5\_init\_creds\_get\_creds (C function)@\spxentry{krb5\_init\_creds\_get\_creds}\spxextra{C function}} 9243 9244\begin{fulllineitems} 9245\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get_creds:c.krb5_init_creds_get_creds}}% 9246\pysigstartmultiline 9247\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_get\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}}{}% 9248\pysigstopmultiline 9249\end{fulllineitems} 9250 9251\begin{quote}\begin{description} 9252\item[{param}] \leavevmode 9253\sphinxAtStartPar 9254\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9255 9256\sphinxAtStartPar 9257\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9258 9259\sphinxAtStartPar 9260\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Acquired credentials 9261 9262\end{description}\end{quote} 9263\begin{quote}\begin{description} 9264\item[{retval}] \leavevmode\begin{itemize} 9265\item {} 9266\sphinxAtStartPar 92670 Success; otherwise \sphinxhyphen{} Kerberos error codes 9268 9269\end{itemize} 9270 9271\end{description}\end{quote} 9272 9273\sphinxAtStartPar 9274This function copies the acquired initial credentials from \sphinxstyleemphasis{ctx} into \sphinxstyleemphasis{creds} , after the successful completion of krb5\_init\_creds\_get() or krb5\_init\_creds\_step(). Use krb5\_free\_cred\_contents() to free \sphinxstyleemphasis{creds} when it is no longer needed. 9275 9276 9277\subsubsection{krb5\_init\_creds\_get\_error \sphinxhyphen{} Get the last error from KDC from an initial credentials context.} 9278\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)@\spxentry{krb5\_init\_creds\_get\_error}\spxextra{C function}} 9279 9280\begin{fulllineitems} 9281\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get_error:c.krb5_init_creds_get_error}}% 9282\pysigstartmultiline 9283\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_get\_error}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{error}}{}% 9284\pysigstopmultiline 9285\end{fulllineitems} 9286 9287\begin{quote}\begin{description} 9288\item[{param}] \leavevmode 9289\sphinxAtStartPar 9290\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9291 9292\sphinxAtStartPar 9293\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9294 9295\sphinxAtStartPar 9296\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{error} \sphinxhyphen{} Error from KDC, or NULL if none was received 9297 9298\end{description}\end{quote} 9299\begin{quote}\begin{description} 9300\item[{retval}] \leavevmode\begin{itemize} 9301\item {} 9302\sphinxAtStartPar 93030 Success; otherwise \sphinxhyphen{} Kerberos error codes 9304 9305\end{itemize} 9306 9307\end{description}\end{quote} 9308 9309 9310\subsubsection{krb5\_init\_creds\_get\_times \sphinxhyphen{} Retrieve ticket times from an initial credentials context.} 9311\label{\detokenize{appdev/refs/api/krb5_init_creds_get_times:krb5-init-creds-get-times-retrieve-ticket-times-from-an-initial-credentials-context}}\label{\detokenize{appdev/refs/api/krb5_init_creds_get_times::doc}}\index{krb5\_init\_creds\_get\_times (C function)@\spxentry{krb5\_init\_creds\_get\_times}\spxextra{C function}} 9312 9313\begin{fulllineitems} 9314\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_get_times:c.krb5_init_creds_get_times}}% 9315\pysigstartmultiline 9316\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_get\_times}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{times}}{}% 9317\pysigstopmultiline 9318\end{fulllineitems} 9319 9320\begin{quote}\begin{description} 9321\item[{param}] \leavevmode 9322\sphinxAtStartPar 9323\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9324 9325\sphinxAtStartPar 9326\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9327 9328\sphinxAtStartPar 9329\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{times} \sphinxhyphen{} Ticket times for acquired credentials 9330 9331\end{description}\end{quote} 9332\begin{quote}\begin{description} 9333\item[{retval}] \leavevmode\begin{itemize} 9334\item {} 9335\sphinxAtStartPar 93360 Success; otherwise \sphinxhyphen{} Kerberos error codes 9337 9338\end{itemize} 9339 9340\end{description}\end{quote} 9341 9342\sphinxAtStartPar 9343The initial credentials context must have completed obtaining credentials via either krb5\_init\_creds\_get() or krb5\_init\_creds\_step(). 9344 9345 9346\subsubsection{krb5\_init\_creds\_init \sphinxhyphen{} Create a context for acquiring initial credentials.} 9347\label{\detokenize{appdev/refs/api/krb5_init_creds_init:krb5-init-creds-init-create-a-context-for-acquiring-initial-credentials}}\label{\detokenize{appdev/refs/api/krb5_init_creds_init::doc}}\index{krb5\_init\_creds\_init (C function)@\spxentry{krb5\_init\_creds\_init}\spxextra{C function}} 9348 9349\begin{fulllineitems} 9350\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_init:c.krb5_init_creds_init}}% 9351\pysigstartmultiline 9352\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_init}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_prompter_fct:c.krb5_prompter_fct}]{\sphinxcrossref{\DUrole{n}{krb5\_prompter\_fct}}}}\DUrole{w}{ }\DUrole{n}{prompter}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{n}{start\_time}, {\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ctx}}{}% 9353\pysigstopmultiline 9354\end{fulllineitems} 9355 9356\begin{quote}\begin{description} 9357\item[{param}] \leavevmode 9358\sphinxAtStartPar 9359\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9360 9361\sphinxAtStartPar 9362\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal to get initial creds for 9363 9364\sphinxAtStartPar 9365\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompter} \sphinxhyphen{} Prompter callback 9366 9367\sphinxAtStartPar 9368\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Prompter callback argument 9369 9370\sphinxAtStartPar 9371\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{start\_time} \sphinxhyphen{} Time when credentials become valid (0 for now) 9372 9373\sphinxAtStartPar 9374\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} \sphinxhyphen{} Options structure (NULL for default) 9375 9376\sphinxAtStartPar 9377\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} New initial credentials context 9378 9379\end{description}\end{quote} 9380\begin{quote}\begin{description} 9381\item[{retval}] \leavevmode\begin{itemize} 9382\item {} 9383\sphinxAtStartPar 93840 Success; otherwise \sphinxhyphen{} Kerberos error codes 9385 9386\end{itemize} 9387 9388\end{description}\end{quote} 9389 9390\sphinxAtStartPar 9391This function creates a new context for acquiring initial credentials. Use krb5\_init\_creds\_free() to free \sphinxstyleemphasis{ctx} when it is no longer needed. 9392 9393\sphinxAtStartPar 9394Any subsequent calls to krb5\_init\_creds\_step(), krb5\_init\_creds\_get(), or krb5\_init\_creds\_free() for this initial credentials context must use the same \sphinxstyleemphasis{context} argument as the one passed to this function. 9395 9396 9397\subsubsection{krb5\_init\_creds\_set\_keytab \sphinxhyphen{} Specify a keytab to use for acquiring initial credentials.} 9398\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)@\spxentry{krb5\_init\_creds\_set\_keytab}\spxextra{C function}} 9399 9400\begin{fulllineitems} 9401\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_set_keytab:c.krb5_init_creds_set_keytab}}% 9402\pysigstartmultiline 9403\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_set\_keytab}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}}{}% 9404\pysigstopmultiline 9405\end{fulllineitems} 9406 9407\begin{quote}\begin{description} 9408\item[{param}] \leavevmode 9409\sphinxAtStartPar 9410\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9411 9412\sphinxAtStartPar 9413\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9414 9415\sphinxAtStartPar 9416\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 9417 9418\end{description}\end{quote} 9419\begin{quote}\begin{description} 9420\item[{retval}] \leavevmode\begin{itemize} 9421\item {} 9422\sphinxAtStartPar 94230 Success; otherwise \sphinxhyphen{} Kerberos error codes 9424 9425\end{itemize} 9426 9427\end{description}\end{quote} 9428 9429\sphinxAtStartPar 9430This function supplies a keytab containing the client key for an initial credentials request. 9431 9432 9433\subsubsection{krb5\_init\_creds\_set\_password \sphinxhyphen{} Set a password for acquiring initial credentials.} 9434\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)@\spxentry{krb5\_init\_creds\_set\_password}\spxextra{C function}} 9435 9436\begin{fulllineitems} 9437\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_set_password:c.krb5_init_creds_set_password}}% 9438\pysigstartmultiline 9439\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_set\_password}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{password}}{}% 9440\pysigstopmultiline 9441\end{fulllineitems} 9442 9443\begin{quote}\begin{description} 9444\item[{param}] \leavevmode 9445\sphinxAtStartPar 9446\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9447 9448\sphinxAtStartPar 9449\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9450 9451\sphinxAtStartPar 9452\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{password} \sphinxhyphen{} Password 9453 9454\end{description}\end{quote} 9455\begin{quote}\begin{description} 9456\item[{retval}] \leavevmode\begin{itemize} 9457\item {} 9458\sphinxAtStartPar 94590 Success; otherwise \sphinxhyphen{} Kerberos error codes 9460 9461\end{itemize} 9462 9463\end{description}\end{quote} 9464 9465\sphinxAtStartPar 9466This function supplies a password to be used to construct the client key for an initial credentials request. 9467 9468 9469\subsubsection{krb5\_init\_creds\_set\_service \sphinxhyphen{} Specify a service principal for acquiring initial credentials.} 9470\label{\detokenize{appdev/refs/api/krb5_init_creds_set_service:krb5-init-creds-set-service-specify-a-service-principal-for-acquiring-initial-credentials}}\label{\detokenize{appdev/refs/api/krb5_init_creds_set_service::doc}}\index{krb5\_init\_creds\_set\_service (C function)@\spxentry{krb5\_init\_creds\_set\_service}\spxextra{C function}} 9471 9472\begin{fulllineitems} 9473\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_set_service:c.krb5_init_creds_set_service}}% 9474\pysigstartmultiline 9475\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_set\_service}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{service}}{}% 9476\pysigstopmultiline 9477\end{fulllineitems} 9478 9479\begin{quote}\begin{description} 9480\item[{param}] \leavevmode 9481\sphinxAtStartPar 9482\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9483 9484\sphinxAtStartPar 9485\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9486 9487\sphinxAtStartPar 9488\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{service} \sphinxhyphen{} Service principal string 9489 9490\end{description}\end{quote} 9491\begin{quote}\begin{description} 9492\item[{retval}] \leavevmode\begin{itemize} 9493\item {} 9494\sphinxAtStartPar 94950 Success; otherwise \sphinxhyphen{} Kerberos error codes 9496 9497\end{itemize} 9498 9499\end{description}\end{quote} 9500 9501\sphinxAtStartPar 9502This 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. 9503 9504 9505\subsubsection{krb5\_init\_creds\_step \sphinxhyphen{} Get the next KDC request for acquiring initial credentials.} 9506\label{\detokenize{appdev/refs/api/krb5_init_creds_step:krb5-init-creds-step-get-the-next-kdc-request-for-acquiring-initial-credentials}}\label{\detokenize{appdev/refs/api/krb5_init_creds_step::doc}}\index{krb5\_init\_creds\_step (C function)@\spxentry{krb5\_init\_creds\_step}\spxextra{C function}} 9507 9508\begin{fulllineitems} 9509\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_creds_step:c.krb5_init_creds_step}}% 9510\pysigstartmultiline 9511\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_step}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_init\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{flags}}{}% 9512\pysigstopmultiline 9513\end{fulllineitems} 9514 9515\begin{quote}\begin{description} 9516\item[{param}] \leavevmode 9517\sphinxAtStartPar 9518\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9519 9520\sphinxAtStartPar 9521\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Initial credentials context 9522 9523\sphinxAtStartPar 9524\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} \sphinxhyphen{} KDC response (empty on the first call) 9525 9526\sphinxAtStartPar 9527\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Next KDC request 9528 9529\sphinxAtStartPar 9530\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm for next KDC request 9531 9532\sphinxAtStartPar 9533\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Output flags 9534 9535\end{description}\end{quote} 9536\begin{quote}\begin{description} 9537\item[{retval}] \leavevmode\begin{itemize} 9538\item {} 9539\sphinxAtStartPar 95400 Success; otherwise \sphinxhyphen{} Kerberos error codes 9541 9542\end{itemize} 9543 9544\end{description}\end{quote} 9545 9546\sphinxAtStartPar 9547This 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. 9548 9549\sphinxAtStartPar 9550If more requests are needed, \sphinxstyleemphasis{flags} will be set to \#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 \#KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE and \sphinxstyleemphasis{out} will be empty. 9551 9552\sphinxAtStartPar 9553If 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. 9554\begin{quote} 9555 9556\sphinxAtStartPar 9557\sphinxstyleemphasis{context} must be the same as the one passed to krb5\_init\_creds\_init() for this initial credentials context. 9558\end{quote} 9559 9560 9561\subsubsection{krb5\_init\_keyblock \sphinxhyphen{} Initialize an empty krb5\_keyblock .} 9562\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)@\spxentry{krb5\_init\_keyblock}\spxextra{C function}} 9563 9564\begin{fulllineitems} 9565\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_keyblock:c.krb5_init_keyblock}}% 9566\pysigstartmultiline 9567\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_keyblock}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{length}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out}}{}% 9568\pysigstopmultiline 9569\end{fulllineitems} 9570 9571\begin{quote}\begin{description} 9572\item[{param}] \leavevmode 9573\sphinxAtStartPar 9574\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9575 9576\sphinxAtStartPar 9577\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 9578 9579\sphinxAtStartPar 9580\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{length} \sphinxhyphen{} Length of keyblock (or 0) 9581 9582\sphinxAtStartPar 9583\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} New keyblock structure 9584 9585\end{description}\end{quote} 9586\begin{quote}\begin{description} 9587\item[{retval}] \leavevmode\begin{itemize} 9588\item {} 9589\sphinxAtStartPar 95900 Success; otherwise \sphinxhyphen{} Kerberos error codes 9591 9592\end{itemize} 9593 9594\end{description}\end{quote} 9595 9596\sphinxAtStartPar 9597Initialize 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 krb5\_free\_keyblock() to free \sphinxstyleemphasis{out} when it is no longer needed. 9598 9599\begin{sphinxadmonition}{note}{Note:} 9600\sphinxAtStartPar 9601If \sphinxstyleemphasis{length} is set to 0, contents are left unallocated. 9602\end{sphinxadmonition} 9603 9604 9605\subsubsection{krb5\_is\_referral\_realm \sphinxhyphen{} Check for a match with KRB5\_REFERRAL\_REALM.} 9606\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)@\spxentry{krb5\_is\_referral\_realm}\spxextra{C function}} 9607 9608\begin{fulllineitems} 9609\phantomsection\label{\detokenize{appdev/refs/api/krb5_is_referral_realm:c.krb5_is_referral_realm}}% 9610\pysigstartmultiline 9611\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_is\_referral\_realm}}}}{\DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{r}}{}% 9612\pysigstopmultiline 9613\end{fulllineitems} 9614 9615\begin{quote}\begin{description} 9616\item[{param}] \leavevmode 9617\sphinxAtStartPar 9618\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{r} \sphinxhyphen{} Realm to check 9619 9620\end{description}\end{quote} 9621\begin{quote}\begin{description} 9622\item[{return}] \leavevmode\begin{itemize} 9623\item {} 9624\sphinxAtStartPar 9625TRUE if r is zero\sphinxhyphen{}length, FALSE otherwise 9626 9627\end{itemize} 9628 9629\end{description}\end{quote} 9630 9631 9632\subsubsection{krb5\_kdc\_sign\_ticket \sphinxhyphen{} Sign a PAC, possibly including a ticket signature.} 9633\label{\detokenize{appdev/refs/api/krb5_kdc_sign_ticket:krb5-kdc-sign-ticket-sign-a-pac-possibly-including-a-ticket-signature}}\label{\detokenize{appdev/refs/api/krb5_kdc_sign_ticket::doc}}\index{krb5\_kdc\_sign\_ticket (C function)@\spxentry{krb5\_kdc\_sign\_ticket}\spxextra{C function}} 9634 9635\begin{fulllineitems} 9636\phantomsection\label{\detokenize{appdev/refs/api/krb5_kdc_sign_ticket:c.krb5_kdc_sign_ticket}}% 9637\pysigstartmultiline 9638\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kdc\_sign\_ticket}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{enc\_tkt}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{server\_princ}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{client\_princ}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{privsvr}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{n}{with\_realm}}{}% 9639\pysigstopmultiline 9640\end{fulllineitems} 9641 9642\begin{quote}\begin{description} 9643\item[{param}] \leavevmode 9644\sphinxAtStartPar 9645\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9646 9647\sphinxAtStartPar 9648\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enc\_tkt} \sphinxhyphen{} The ticket for the signature 9649 9650\sphinxAtStartPar 9651\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 9652 9653\sphinxAtStartPar 9654\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server\_princ} \sphinxhyphen{} Canonical ticket server name 9655 9656\sphinxAtStartPar 9657\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client\_princ} \sphinxhyphen{} PAC\_CLIENT\_INFO principal (or NULL) 9658 9659\sphinxAtStartPar 9660\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Key for server checksum 9661 9662\sphinxAtStartPar 9663\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr} \sphinxhyphen{} Key for KDC and ticket checksum 9664 9665\sphinxAtStartPar 9666\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{with\_realm} \sphinxhyphen{} If true, include the realm of \sphinxstyleemphasis{principal} 9667 9668\end{description}\end{quote} 9669\begin{quote}\begin{description} 9670\item[{retval}] \leavevmode\begin{itemize} 9671\item {} 9672\sphinxAtStartPar 96730 on success, otherwise \sphinxhyphen{} Kerberos error codes 9674 9675\end{itemize} 9676 9677\end{description}\end{quote} 9678 9679\sphinxAtStartPar 9680Sign \sphinxstyleemphasis{pac} using the keys \sphinxstyleemphasis{server} and \sphinxstyleemphasis{privsvr} . Include a ticket signature over \sphinxstyleemphasis{enc\_tkt} if \sphinxstyleemphasis{server\_princ} is not a TGS or kadmin/changepw principal name. Add the signed PAC’s encoding to the authorization data of \sphinxstyleemphasis{enc\_tkt} in the first slot, wrapped in an AD\sphinxhyphen{}IF\sphinxhyphen{}RELEVANT container. If \sphinxstyleemphasis{client\_princ} is non\sphinxhyphen{}null, add a PAC\_CLIENT\_INFO buffer, including the realm if \sphinxstyleemphasis{with\_realm} is true. 9681 9682\begin{sphinxadmonition}{note}{Note:} 9683\sphinxAtStartPar 9684New in 1.20 9685\end{sphinxadmonition} 9686 9687 9688\subsubsection{krb5\_kdc\_verify\_ticket \sphinxhyphen{} Verify a PAC, possibly including ticket signature.} 9689\label{\detokenize{appdev/refs/api/krb5_kdc_verify_ticket:krb5-kdc-verify-ticket-verify-a-pac-possibly-including-ticket-signature}}\label{\detokenize{appdev/refs/api/krb5_kdc_verify_ticket::doc}}\index{krb5\_kdc\_verify\_ticket (C function)@\spxentry{krb5\_kdc\_verify\_ticket}\spxextra{C function}} 9690 9691\begin{fulllineitems} 9692\phantomsection\label{\detokenize{appdev/refs/api/krb5_kdc_verify_ticket:c.krb5_kdc_verify_ticket}}% 9693\pysigstartmultiline 9694\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kdc\_verify\_ticket}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{enc\_tkt}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{server\_princ}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{privsvr}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pac\_out}}{}% 9695\pysigstopmultiline 9696\end{fulllineitems} 9697 9698\begin{quote}\begin{description} 9699\item[{param}] \leavevmode 9700\sphinxAtStartPar 9701\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9702 9703\sphinxAtStartPar 9704\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enc\_tkt} \sphinxhyphen{} Ticket enc\sphinxhyphen{}part, possibly containing a PAC 9705 9706\sphinxAtStartPar 9707\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server\_princ} \sphinxhyphen{} Canonicalized name of ticket server 9708 9709\sphinxAtStartPar 9710\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Key to validate server checksum (or NULL) 9711 9712\sphinxAtStartPar 9713\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr} \sphinxhyphen{} Key to validate KDC checksum (or NULL) 9714 9715\sphinxAtStartPar 9716\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pac\_out} \sphinxhyphen{} Verified PAC (NULL if no PAC included) 9717 9718\end{description}\end{quote} 9719\begin{quote}\begin{description} 9720\item[{retval}] \leavevmode\begin{itemize} 9721\item {} 9722\sphinxAtStartPar 97230 Success; otherwise \sphinxhyphen{} Kerberos error codes 9724 9725\end{itemize} 9726 9727\end{description}\end{quote} 9728 9729\sphinxAtStartPar 9730If a PAC is present in \sphinxstyleemphasis{enc\_tkt} , verify its signatures. If \sphinxstyleemphasis{privsvr} is not NULL and \sphinxstyleemphasis{server\_princ} is not a krbtgt or kadmin/changepw service, require a ticket signature over \sphinxstyleemphasis{enc\_tkt} in addition to the KDC signature. Place the verified PAC in \sphinxstyleemphasis{pac\_out} . If an invalid PAC signature is found, return an error matching the Windows KDC protocol code for that condition as closely as possible. 9731 9732\sphinxAtStartPar 9733If no PAC is present in \sphinxstyleemphasis{enc\_tkt} , set \sphinxstyleemphasis{pac\_out} to NULL and return successfully. 9734 9735\begin{sphinxadmonition}{note}{Note:} 9736\sphinxAtStartPar 9737This function does not validate the PAC\_CLIENT\_INFO buffer. If a specific value is expected, the caller can make a separate call to krb5\_pac\_verify\_ext() with a principal but no keys. 9738\end{sphinxadmonition} 9739 9740\begin{sphinxadmonition}{note}{Note:} 9741\sphinxAtStartPar 9742New in 1.20 9743\end{sphinxadmonition} 9744 9745 9746\subsubsection{krb5\_kt\_add\_entry \sphinxhyphen{} Add a new entry to a key table.} 9747\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)@\spxentry{krb5\_kt\_add\_entry}\spxextra{C function}} 9748 9749\begin{fulllineitems} 9750\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_add_entry:c.krb5_kt_add_entry}}% 9751\pysigstartmultiline 9752\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_add\_entry}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{id}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{entry}}{}% 9753\pysigstopmultiline 9754\end{fulllineitems} 9755 9756\begin{quote}\begin{description} 9757\item[{param}] \leavevmode 9758\sphinxAtStartPar 9759\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9760 9761\sphinxAtStartPar 9762\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} \sphinxhyphen{} Key table handle 9763 9764\sphinxAtStartPar 9765\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{entry} \sphinxhyphen{} Entry to be added 9766 9767\end{description}\end{quote} 9768\begin{quote}\begin{description} 9769\item[{retval}] \leavevmode\begin{itemize} 9770\item {} 9771\sphinxAtStartPar 97720 Success 9773 9774\item {} 9775\sphinxAtStartPar 9776ENOMEM Insufficient memory 9777 9778\item {} 9779\sphinxAtStartPar 9780KRB5\_KT\_NOWRITE Key table is not writeable 9781 9782\end{itemize} 9783 9784\item[{return}] \leavevmode\begin{itemize} 9785\item {} 9786\sphinxAtStartPar 9787Kerberos error codes 9788 9789\end{itemize} 9790 9791\end{description}\end{quote} 9792 9793 9794\subsubsection{krb5\_kt\_end\_seq\_get \sphinxhyphen{} Release a keytab cursor.} 9795\label{\detokenize{appdev/refs/api/krb5_kt_end_seq_get:krb5-kt-end-seq-get-release-a-keytab-cursor}}\label{\detokenize{appdev/refs/api/krb5_kt_end_seq_get::doc}}\index{krb5\_kt\_end\_seq\_get (C function)@\spxentry{krb5\_kt\_end\_seq\_get}\spxextra{C function}} 9796 9797\begin{fulllineitems} 9798\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_end_seq_get:c.krb5_kt_end_seq_get}}% 9799\pysigstartmultiline 9800\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_end\_seq\_get}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_kt\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 9801\pysigstopmultiline 9802\end{fulllineitems} 9803 9804\begin{quote}\begin{description} 9805\item[{param}] \leavevmode 9806\sphinxAtStartPar 9807\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9808 9809\sphinxAtStartPar 9810\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 9811 9812\sphinxAtStartPar 9813\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 9814 9815\end{description}\end{quote} 9816\begin{quote}\begin{description} 9817\item[{retval}] \leavevmode\begin{itemize} 9818\item {} 9819\sphinxAtStartPar 98200 Success 9821 9822\end{itemize} 9823 9824\item[{return}] \leavevmode\begin{itemize} 9825\item {} 9826\sphinxAtStartPar 9827Kerberos error codes 9828 9829\end{itemize} 9830 9831\end{description}\end{quote} 9832 9833\sphinxAtStartPar 9834This function should be called to release the cursor created by krb5\_kt\_start\_seq\_get(). 9835 9836 9837\subsubsection{krb5\_kt\_get\_entry \sphinxhyphen{} Get an entry from a key table.} 9838\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)@\spxentry{krb5\_kt\_get\_entry}\spxextra{C function}} 9839 9840\begin{fulllineitems} 9841\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_get_entry:c.krb5_kt_get_entry}}% 9842\pysigstartmultiline 9843\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_get\_entry}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, {\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{\DUrole{n}{krb5\_kvno}}}}\DUrole{w}{ }\DUrole{n}{vno}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{entry}}{}% 9844\pysigstopmultiline 9845\end{fulllineitems} 9846 9847\begin{quote}\begin{description} 9848\item[{param}] \leavevmode 9849\sphinxAtStartPar 9850\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9851 9852\sphinxAtStartPar 9853\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 9854 9855\sphinxAtStartPar 9856\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Principal name 9857 9858\sphinxAtStartPar 9859\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{vno} \sphinxhyphen{} Key version number (0 for highest available) 9860 9861\sphinxAtStartPar 9862\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type (0 zero for any enctype) 9863 9864\sphinxAtStartPar 9865\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{entry} \sphinxhyphen{} Returned entry from key table 9866 9867\end{description}\end{quote} 9868\begin{quote}\begin{description} 9869\item[{retval}] \leavevmode\begin{itemize} 9870\item {} 9871\sphinxAtStartPar 98720 Success 9873 9874\item {} 9875\sphinxAtStartPar 9876Kerberos error codes on failure 9877 9878\end{itemize} 9879 9880\end{description}\end{quote} 9881 9882\sphinxAtStartPar 9883Retrieve 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\sphinxhyphen{}numbered kvno matching the other fields. If \sphinxstyleemphasis{enctype} is 0, match any enctype. 9884 9885\sphinxAtStartPar 9886Use krb5\_free\_keytab\_entry\_contents() to free \sphinxstyleemphasis{entry} when it is no longer needed. 9887 9888\begin{sphinxadmonition}{note}{Note:} 9889\sphinxAtStartPar 9890If \sphinxstyleemphasis{vno} is zero, the function retrieves the highest\sphinxhyphen{}numbered\sphinxhyphen{}kvno entry that matches the specified principal. 9891\end{sphinxadmonition} 9892 9893 9894\subsubsection{krb5\_kt\_have\_content \sphinxhyphen{} Check if a keytab exists and contains entries.} 9895\label{\detokenize{appdev/refs/api/krb5_kt_have_content:krb5-kt-have-content-check-if-a-keytab-exists-and-contains-entries}}\label{\detokenize{appdev/refs/api/krb5_kt_have_content::doc}}\index{krb5\_kt\_have\_content (C function)@\spxentry{krb5\_kt\_have\_content}\spxextra{C function}} 9896 9897\begin{fulllineitems} 9898\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_have_content:c.krb5_kt_have_content}}% 9899\pysigstartmultiline 9900\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_have\_content}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}}{}% 9901\pysigstopmultiline 9902\end{fulllineitems} 9903 9904\begin{quote}\begin{description} 9905\item[{param}] \leavevmode 9906\sphinxAtStartPar 9907\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9908 9909\sphinxAtStartPar 9910\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 9911 9912\end{description}\end{quote} 9913\begin{quote}\begin{description} 9914\item[{retval}] \leavevmode\begin{itemize} 9915\item {} 9916\sphinxAtStartPar 99170 Keytab exists and contains entries 9918 9919\item {} 9920\sphinxAtStartPar 9921KRB5\_KT\_NOTFOUND Keytab does not contain entries 9922 9923\end{itemize} 9924 9925\end{description}\end{quote} 9926 9927\begin{sphinxadmonition}{note}{Note:} 9928\sphinxAtStartPar 9929New in 1.11 9930\end{sphinxadmonition} 9931 9932 9933\subsubsection{krb5\_kt\_next\_entry \sphinxhyphen{} Retrieve the next entry from the key table.} 9934\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)@\spxentry{krb5\_kt\_next\_entry}\spxextra{C function}} 9935 9936\begin{fulllineitems} 9937\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_next_entry:c.krb5_kt_next_entry}}% 9938\pysigstartmultiline 9939\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_next\_entry}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{entry}, {\hyperref[\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_kt\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 9940\pysigstopmultiline 9941\end{fulllineitems} 9942 9943\begin{quote}\begin{description} 9944\item[{param}] \leavevmode 9945\sphinxAtStartPar 9946\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9947 9948\sphinxAtStartPar 9949\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 9950 9951\sphinxAtStartPar 9952\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{entry} \sphinxhyphen{} Returned key table entry 9953 9954\sphinxAtStartPar 9955\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Key table cursor 9956 9957\end{description}\end{quote} 9958\begin{quote}\begin{description} 9959\item[{retval}] \leavevmode\begin{itemize} 9960\item {} 9961\sphinxAtStartPar 99620 Success 9963 9964\item {} 9965\sphinxAtStartPar 9966KRB5\_KT\_END \sphinxhyphen{} if the last entry was reached 9967 9968\end{itemize} 9969 9970\item[{return}] \leavevmode\begin{itemize} 9971\item {} 9972\sphinxAtStartPar 9973Kerberos error codes 9974 9975\end{itemize} 9976 9977\end{description}\end{quote} 9978 9979\sphinxAtStartPar 9980Return the next sequential entry in \sphinxstyleemphasis{keytab} and advance \sphinxstyleemphasis{cursor} . Callers must release the returned entry with krb5\_kt\_free\_entry(). 9981 9982 9983\subsubsection{krb5\_kt\_read\_service\_key \sphinxhyphen{} Retrieve a service key from a key table.} 9984\label{\detokenize{appdev/refs/api/krb5_kt_read_service_key:krb5-kt-read-service-key-retrieve-a-service-key-from-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_read_service_key::doc}}\index{krb5\_kt\_read\_service\_key (C function)@\spxentry{krb5\_kt\_read\_service\_key}\spxextra{C function}} 9985 9986\begin{fulllineitems} 9987\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_read_service_key:c.krb5_kt_read_service_key}}% 9988\pysigstartmultiline 9989\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_read\_service\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{keyprocarg}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, {\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{\DUrole{n}{krb5\_kvno}}}}\DUrole{w}{ }\DUrole{n}{vno}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{key}}{}% 9990\pysigstopmultiline 9991\end{fulllineitems} 9992 9993\begin{quote}\begin{description} 9994\item[{param}] \leavevmode 9995\sphinxAtStartPar 9996\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 9997 9998\sphinxAtStartPar 9999\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyprocarg} \sphinxhyphen{} Name of a key table (NULL to use default name) 10000 10001\sphinxAtStartPar 10002\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Service principal 10003 10004\sphinxAtStartPar 10005\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{vno} \sphinxhyphen{} Key version number (0 for highest available) 10006 10007\sphinxAtStartPar 10008\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type (0 for any type) 10009 10010\sphinxAtStartPar 10011\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Service key from key table 10012 10013\end{description}\end{quote} 10014\begin{quote}\begin{description} 10015\item[{retval}] \leavevmode\begin{itemize} 10016\item {} 10017\sphinxAtStartPar 100180 Success 10019 10020\end{itemize} 10021 10022\item[{return}] \leavevmode\begin{itemize} 10023\item {} 10024\sphinxAtStartPar 10025Kerberos error code if not found or keyprocarg is invalid. 10026 10027\end{itemize} 10028 10029\end{description}\end{quote} 10030 10031\sphinxAtStartPar 10032Open 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. 10033 10034\sphinxAtStartPar 10035The default key table is used, unless \sphinxstyleemphasis{keyprocarg} is non\sphinxhyphen{}null. \sphinxstyleemphasis{keyprocarg} designates a specific key table. 10036 10037\sphinxAtStartPar 10038Use krb5\_free\_keyblock() to free \sphinxstyleemphasis{key} when it is no longer needed. 10039 10040 10041\subsubsection{krb5\_kt\_remove\_entry \sphinxhyphen{} Remove an entry from a key table.} 10042\label{\detokenize{appdev/refs/api/krb5_kt_remove_entry:krb5-kt-remove-entry-remove-an-entry-from-a-key-table}}\label{\detokenize{appdev/refs/api/krb5_kt_remove_entry::doc}}\index{krb5\_kt\_remove\_entry (C function)@\spxentry{krb5\_kt\_remove\_entry}\spxextra{C function}} 10043 10044\begin{fulllineitems} 10045\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_remove_entry:c.krb5_kt_remove_entry}}% 10046\pysigstartmultiline 10047\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_remove\_entry}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{id}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{entry}}{}% 10048\pysigstopmultiline 10049\end{fulllineitems} 10050 10051\begin{quote}\begin{description} 10052\item[{param}] \leavevmode 10053\sphinxAtStartPar 10054\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10055 10056\sphinxAtStartPar 10057\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{id} \sphinxhyphen{} Key table handle 10058 10059\sphinxAtStartPar 10060\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{entry} \sphinxhyphen{} Entry to remove from key table 10061 10062\end{description}\end{quote} 10063\begin{quote}\begin{description} 10064\item[{retval}] \leavevmode\begin{itemize} 10065\item {} 10066\sphinxAtStartPar 100670 Success 10068 10069\item {} 10070\sphinxAtStartPar 10071KRB5\_KT\_NOWRITE Key table is not writable 10072 10073\end{itemize} 10074 10075\item[{return}] \leavevmode\begin{itemize} 10076\item {} 10077\sphinxAtStartPar 10078Kerberos error codes 10079 10080\end{itemize} 10081 10082\end{description}\end{quote} 10083 10084 10085\subsubsection{krb5\_kt\_start\_seq\_get \sphinxhyphen{} Start a sequential retrieval of key table entries.} 10086\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)@\spxentry{krb5\_kt\_start\_seq\_get}\spxextra{C function}} 10087 10088\begin{fulllineitems} 10089\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_start_seq_get:c.krb5_kt_start_seq_get}}% 10090\pysigstartmultiline 10091\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_start\_seq\_get}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}]{\sphinxcrossref{\DUrole{n}{krb5\_kt\_cursor}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cursor}}{}% 10092\pysigstopmultiline 10093\end{fulllineitems} 10094 10095\begin{quote}\begin{description} 10096\item[{param}] \leavevmode 10097\sphinxAtStartPar 10098\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10099 10100\sphinxAtStartPar 10101\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table handle 10102 10103\sphinxAtStartPar 10104\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cursor} \sphinxhyphen{} Cursor 10105 10106\end{description}\end{quote} 10107\begin{quote}\begin{description} 10108\item[{retval}] \leavevmode\begin{itemize} 10109\item {} 10110\sphinxAtStartPar 101110 Success 10112 10113\end{itemize} 10114 10115\item[{return}] \leavevmode\begin{itemize} 10116\item {} 10117\sphinxAtStartPar 10118Kerberos error codes 10119 10120\end{itemize} 10121 10122\end{description}\end{quote} 10123 10124\sphinxAtStartPar 10125Prepare to read sequentially every key in the specified key table. Use krb5\_kt\_end\_seq\_get() to release the cursor when it is no longer needed. 10126 10127 10128\subsubsection{krb5\_make\_authdata\_kdc\_issued \sphinxhyphen{} Encode and sign AD\sphinxhyphen{}KDCIssued authorization data.} 10129\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)@\spxentry{krb5\_make\_authdata\_kdc\_issued}\spxextra{C function}} 10130 10131\begin{fulllineitems} 10132\phantomsection\label{\detokenize{appdev/refs/api/krb5_make_authdata_kdc_issued:c.krb5_make_authdata_kdc_issued}}% 10133\pysigstartmultiline 10134\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_make\_authdata\_kdc\_issued}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{issuer}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ad\_kdcissued}}{}% 10135\pysigstopmultiline 10136\end{fulllineitems} 10137 10138\begin{quote}\begin{description} 10139\item[{param}] \leavevmode 10140\sphinxAtStartPar 10141\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10142 10143\sphinxAtStartPar 10144\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Session key 10145 10146\sphinxAtStartPar 10147\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{issuer} \sphinxhyphen{} The name of the issuing principal 10148 10149\sphinxAtStartPar 10150\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authdata} \sphinxhyphen{} List of authorization data to be signed 10151 10152\sphinxAtStartPar 10153\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ad\_kdcissued} \sphinxhyphen{} List containing AD\sphinxhyphen{}KDCIssued authdata 10154 10155\end{description}\end{quote} 10156 10157\sphinxAtStartPar 10158This function wraps a list of authorization data entries \sphinxstyleemphasis{authdata} in an AD\sphinxhyphen{}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\sphinxhyphen{}element list. 10159 10160 10161\subsubsection{krb5\_marshal\_credentials \sphinxhyphen{} Serialize a krb5\_creds object.} 10162\label{\detokenize{appdev/refs/api/krb5_marshal_credentials:krb5-marshal-credentials-serialize-a-krb5-creds-object}}\label{\detokenize{appdev/refs/api/krb5_marshal_credentials::doc}}\index{krb5\_marshal\_credentials (C function)@\spxentry{krb5\_marshal\_credentials}\spxextra{C function}} 10163 10164\begin{fulllineitems} 10165\phantomsection\label{\detokenize{appdev/refs/api/krb5_marshal_credentials:c.krb5_marshal_credentials}}% 10166\pysigstartmultiline 10167\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_marshal\_credentials}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{data\_out}}{}% 10168\pysigstopmultiline 10169\end{fulllineitems} 10170 10171\begin{quote}\begin{description} 10172\item[{param}] \leavevmode 10173\sphinxAtStartPar 10174\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10175 10176\sphinxAtStartPar 10177\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} \sphinxhyphen{} The credentials object to serialize 10178 10179\sphinxAtStartPar 10180\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data\_out} \sphinxhyphen{} The serialized credentials 10181 10182\end{description}\end{quote} 10183\begin{quote}\begin{description} 10184\item[{retval}] \leavevmode\begin{itemize} 10185\item {} 10186\sphinxAtStartPar 101870 Success; otherwise \sphinxhyphen{} Kerberos error codes 10188 10189\end{itemize} 10190 10191\end{description}\end{quote} 10192 10193\sphinxAtStartPar 10194Serialize \sphinxstyleemphasis{creds} in the format used by the FILE ccache format (vesion 4) and KCM ccache protocol. 10195 10196\sphinxAtStartPar 10197Use krb5\_free\_data() to free \sphinxstyleemphasis{data\_out} when it is no longer needed. 10198 10199 10200\subsubsection{krb5\_merge\_authdata \sphinxhyphen{} Merge two authorization data lists into a new list.} 10201\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)@\spxentry{krb5\_merge\_authdata}\spxextra{C function}} 10202 10203\begin{fulllineitems} 10204\phantomsection\label{\detokenize{appdev/refs/api/krb5_merge_authdata:c.krb5_merge_authdata}}% 10205\pysigstartmultiline 10206\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_merge\_authdata}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inauthdat1}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inauthdat2}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{outauthdat}}{}% 10207\pysigstopmultiline 10208\end{fulllineitems} 10209 10210\begin{quote}\begin{description} 10211\item[{param}] \leavevmode 10212\sphinxAtStartPar 10213\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10214 10215\sphinxAtStartPar 10216\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inauthdat1} \sphinxhyphen{} First list of \sphinxstyleemphasis{krb5\_authdata} structures 10217 10218\sphinxAtStartPar 10219\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inauthdat2} \sphinxhyphen{} Second list of \sphinxstyleemphasis{krb5\_authdata} structures 10220 10221\sphinxAtStartPar 10222\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outauthdat} \sphinxhyphen{} Merged list of \sphinxstyleemphasis{krb5\_authdata} structures 10223 10224\end{description}\end{quote} 10225\begin{quote}\begin{description} 10226\item[{retval}] \leavevmode\begin{itemize} 10227\item {} 10228\sphinxAtStartPar 102290 Success; otherwise \sphinxhyphen{} Kerberos error codes 10230 10231\end{itemize} 10232 10233\end{description}\end{quote} 10234 10235\sphinxAtStartPar 10236Merge two authdata arrays, such as the array from a ticket and authenticator. Use krb5\_free\_authdata() to free \sphinxstyleemphasis{outauthdat} when it is no longer needed. 10237 10238\begin{sphinxadmonition}{note}{Note:} 10239\sphinxAtStartPar 10240The last array entry in \sphinxstyleemphasis{inauthdat1} and \sphinxstyleemphasis{inauthdat2} must be a NULL pointer. 10241\end{sphinxadmonition} 10242 10243 10244\subsubsection{krb5\_mk\_1cred \sphinxhyphen{} Format a KRB\sphinxhyphen{}CRED message for a single set of credentials.} 10245\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)@\spxentry{krb5\_mk\_1cred}\spxextra{C function}} 10246 10247\begin{fulllineitems} 10248\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_1cred:c.krb5_mk_1cred}}% 10249\pysigstartmultiline 10250\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_1cred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 10251\pysigstopmultiline 10252\end{fulllineitems} 10253 10254\begin{quote}\begin{description} 10255\item[{param}] \leavevmode 10256\sphinxAtStartPar 10257\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10258 10259\sphinxAtStartPar 10260\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 10261 10262\sphinxAtStartPar 10263\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Pointer to credentials 10264 10265\sphinxAtStartPar 10266\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} \sphinxhyphen{} Encoded credentials 10267 10268\sphinxAtStartPar 10269\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay cache data (NULL if not needed) 10270 10271\end{description}\end{quote} 10272\begin{quote}\begin{description} 10273\item[{retval}] \leavevmode\begin{itemize} 10274\item {} 10275\sphinxAtStartPar 102760 Success 10277 10278\item {} 10279\sphinxAtStartPar 10280ENOMEM Insufficient memory 10281 10282\item {} 10283\sphinxAtStartPar 10284KRB5\_RC\_REQUIRED Message replay detection requires rcache parameter 10285 10286\end{itemize} 10287 10288\item[{return}] \leavevmode\begin{itemize} 10289\item {} 10290\sphinxAtStartPar 10291Kerberos error codes 10292 10293\end{itemize} 10294 10295\end{description}\end{quote} 10296 10297\sphinxAtStartPar 10298This is a convenience function that calls krb5\_mk\_ncred() with a single set of credentials. 10299 10300 10301\subsubsection{krb5\_mk\_error \sphinxhyphen{} Format and encode a KRB\_ERROR message.} 10302\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)@\spxentry{krb5\_mk\_error}\spxextra{C function}} 10303 10304\begin{fulllineitems} 10305\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_error:c.krb5_mk_error}}% 10306\pysigstartmultiline 10307\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_error}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{dec\_err}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{enc\_err}}{}% 10308\pysigstopmultiline 10309\end{fulllineitems} 10310 10311\begin{quote}\begin{description} 10312\item[{param}] \leavevmode 10313\sphinxAtStartPar 10314\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10315 10316\sphinxAtStartPar 10317\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{dec\_err} \sphinxhyphen{} Error structure to be encoded 10318 10319\sphinxAtStartPar 10320\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{enc\_err} \sphinxhyphen{} Encoded error structure 10321 10322\end{description}\end{quote} 10323\begin{quote}\begin{description} 10324\item[{retval}] \leavevmode\begin{itemize} 10325\item {} 10326\sphinxAtStartPar 103270 Success; otherwise \sphinxhyphen{} Kerberos error codes 10328 10329\end{itemize} 10330 10331\end{description}\end{quote} 10332 10333\sphinxAtStartPar 10334This function creates a \sphinxstylestrong{KRB\_ERROR} message in \sphinxstyleemphasis{enc\_err} . Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{enc\_err} when it is no longer needed. 10335 10336 10337\subsubsection{krb5\_mk\_ncred \sphinxhyphen{} Format a KRB\sphinxhyphen{}CRED message for an array of credentials.} 10338\label{\detokenize{appdev/refs/api/krb5_mk_ncred:krb5-mk-ncred-format-a-krb-cred-message-for-an-array-of-credentials}}\label{\detokenize{appdev/refs/api/krb5_mk_ncred::doc}}\index{krb5\_mk\_ncred (C function)@\spxentry{krb5\_mk\_ncred}\spxextra{C function}} 10339 10340\begin{fulllineitems} 10341\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_ncred:c.krb5_mk_ncred}}% 10342\pysigstartmultiline 10343\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_ncred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 10344\pysigstopmultiline 10345\end{fulllineitems} 10346 10347\begin{quote}\begin{description} 10348\item[{param}] \leavevmode 10349\sphinxAtStartPar 10350\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10351 10352\sphinxAtStartPar 10353\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 10354 10355\sphinxAtStartPar 10356\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Null\sphinxhyphen{}terminated array of credentials 10357 10358\sphinxAtStartPar 10359\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} \sphinxhyphen{} Encoded credentials 10360 10361\sphinxAtStartPar 10362\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay cache information (NULL if not needed) 10363 10364\end{description}\end{quote} 10365\begin{quote}\begin{description} 10366\item[{retval}] \leavevmode\begin{itemize} 10367\item {} 10368\sphinxAtStartPar 103690 Success 10370 10371\item {} 10372\sphinxAtStartPar 10373ENOMEM Insufficient memory 10374 10375\item {} 10376\sphinxAtStartPar 10377KRB5\_RC\_REQUIRED Message replay detection requires rcache parameter 10378 10379\end{itemize} 10380 10381\item[{return}] \leavevmode\begin{itemize} 10382\item {} 10383\sphinxAtStartPar 10384Kerberos error codes 10385 10386\end{itemize} 10387 10388\end{description}\end{quote} 10389 10390\sphinxAtStartPar 10391This function takes an array of credentials \sphinxstyleemphasis{creds} and formats a \sphinxstylestrong{KRB\sphinxhyphen{}CRED} message \sphinxstyleemphasis{der\_out} to pass to krb5\_rd\_cred(). 10392 10393\sphinxAtStartPar 10394The 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\sphinxhyphen{}CRED message. 10395 10396\sphinxAtStartPar 10397If the \#KRB5\_AUTH\_CONTEXT\_DO\_TIME flag is set in \sphinxstyleemphasis{auth\_context} , an entry for the message is entered in an in\sphinxhyphen{}memory replay cache to detect if the message is reflected by an attacker. If \#KRB5\_AUTH\_CONTEXT\_DO\_TIME is not set, no replay cache is used. If \#KRB5\_AUTH\_CONTEXT\_RET\_TIME is set in \sphinxstyleemphasis{auth\_context} , the timestamp used for the KRB\sphinxhyphen{}CRED message is stored in \sphinxstyleemphasis{rdata\_out} . 10398 10399\sphinxAtStartPar 10400If either \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE is set, the \sphinxstyleemphasis{auth\_context} local sequence number is included in the KRB\sphinxhyphen{}CRED message and then incremented. If \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE is set, the sequence number used is stored in \sphinxstyleemphasis{rdata\_out} . 10401 10402\sphinxAtStartPar 10403Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{der\_out} when it is no longer needed. 10404 10405\sphinxAtStartPar 10406The 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. 10407 10408\begin{sphinxadmonition}{note}{Note:} 10409\sphinxAtStartPar 10410The \sphinxstyleemphasis{rdata\_out} argument is required if the \#KRB5\_AUTH\_CONTEXT\_RET\_TIME or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} . 10411\end{sphinxadmonition} 10412 10413 10414\subsubsection{krb5\_mk\_priv \sphinxhyphen{} Format a KRB\sphinxhyphen{}PRIV message.} 10415\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)@\spxentry{krb5\_mk\_priv}\spxextra{C function}} 10416 10417\begin{fulllineitems} 10418\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_priv:c.krb5_mk_priv}}% 10419\pysigstartmultiline 10420\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_priv}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{userdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 10421\pysigstopmultiline 10422\end{fulllineitems} 10423 10424\begin{quote}\begin{description} 10425\item[{param}] \leavevmode 10426\sphinxAtStartPar 10427\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10428 10429\sphinxAtStartPar 10430\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 10431 10432\sphinxAtStartPar 10433\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{userdata} \sphinxhyphen{} User data for \sphinxstylestrong{KRB\sphinxhyphen{}PRIV} message 10434 10435\sphinxAtStartPar 10436\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} \sphinxhyphen{} Formatted \sphinxstylestrong{KRB\sphinxhyphen{}PRIV} message 10437 10438\sphinxAtStartPar 10439\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay data (NULL if not needed) 10440 10441\end{description}\end{quote} 10442\begin{quote}\begin{description} 10443\item[{retval}] \leavevmode\begin{itemize} 10444\item {} 10445\sphinxAtStartPar 104460 Success; otherwise \sphinxhyphen{} Kerberos error codes 10447 10448\end{itemize} 10449 10450\end{description}\end{quote} 10451 10452\sphinxAtStartPar 10453This function is similar to krb5\_mk\_safe(), but the message is encrypted and integrity\sphinxhyphen{}protected, not just integrity\sphinxhyphen{}protected. 10454 10455\sphinxAtStartPar 10456The local address in \sphinxstyleemphasis{auth\_context} must be set, and is used to form the sender address used in the KRB\sphinxhyphen{}PRIV message. The remote address is optional; if specified, it will be used to form the receiver address used in the message. 10457 10458\sphinxAtStartPar 10459If the \#KRB5\_AUTH\_CONTEXT\_DO\_TIME flag is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB\sphinxhyphen{}PRIV message, and an entry for the message is entered in an in\sphinxhyphen{}memory replay cache to detect if the message is reflected by an attacker. If \#KRB5\_AUTH\_CONTEXT\_DO\_TIME is not set, no replay cache is used. If \#KRB5\_AUTH\_CONTEXT\_RET\_TIME is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB\sphinxhyphen{}PRIV message and is stored in \sphinxstyleemphasis{rdata\_out} . 10460 10461\sphinxAtStartPar 10462If either \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE is set, the \sphinxstyleemphasis{auth\_context} local sequence number is included in the KRB\sphinxhyphen{}PRIV message and then incremented. If \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE is set, the sequence number used is stored in \sphinxstyleemphasis{rdata\_out} . 10463 10464\sphinxAtStartPar 10465Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{der\_out} when it is no longer needed. 10466 10467\begin{sphinxadmonition}{note}{Note:} 10468\sphinxAtStartPar 10469The \sphinxstyleemphasis{rdata\_out} argument is required if the \#KRB5\_AUTH\_CONTEXT\_RET\_TIME or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} . 10470\end{sphinxadmonition} 10471 10472 10473\subsubsection{krb5\_mk\_rep \sphinxhyphen{} Format and encrypt a KRB\_AP\_REP message.} 10474\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)@\spxentry{krb5\_mk\_rep}\spxextra{C function}} 10475 10476\begin{fulllineitems} 10477\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_rep:c.krb5_mk_rep}}% 10478\pysigstartmultiline 10479\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_rep}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outbuf}}{}% 10480\pysigstopmultiline 10481\end{fulllineitems} 10482 10483\begin{quote}\begin{description} 10484\item[{param}] \leavevmode 10485\sphinxAtStartPar 10486\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10487 10488\sphinxAtStartPar 10489\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 10490 10491\sphinxAtStartPar 10492\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} \sphinxhyphen{} \sphinxstylestrong{AP\sphinxhyphen{}REP} message 10493 10494\end{description}\end{quote} 10495\begin{quote}\begin{description} 10496\item[{retval}] \leavevmode\begin{itemize} 10497\item {} 10498\sphinxAtStartPar 104990 Success; otherwise \sphinxhyphen{} Kerberos error codes 10500 10501\end{itemize} 10502 10503\end{description}\end{quote} 10504 10505\sphinxAtStartPar 10506This function fills in \sphinxstyleemphasis{outbuf} with an AP\sphinxhyphen{}REP message using information from \sphinxstyleemphasis{auth\_context} . 10507 10508\sphinxAtStartPar 10509If the flags in \sphinxstyleemphasis{auth\_context} indicate that a sequence number should be used (either \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE or \#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(). 10510 10511\sphinxAtStartPar 10512Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 10513 10514 10515\subsubsection{krb5\_mk\_rep\_dce \sphinxhyphen{} Format and encrypt a KRB\_AP\_REP message for DCE RPC.} 10516\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)@\spxentry{krb5\_mk\_rep\_dce}\spxextra{C function}} 10517 10518\begin{fulllineitems} 10519\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_rep_dce:c.krb5_mk_rep_dce}}% 10520\pysigstartmultiline 10521\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_rep\_dce}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outbuf}}{}% 10522\pysigstopmultiline 10523\end{fulllineitems} 10524 10525\begin{quote}\begin{description} 10526\item[{param}] \leavevmode 10527\sphinxAtStartPar 10528\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10529 10530\sphinxAtStartPar 10531\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 10532 10533\sphinxAtStartPar 10534\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} \sphinxhyphen{} \sphinxstylestrong{AP\sphinxhyphen{}REP} message 10535 10536\end{description}\end{quote} 10537\begin{quote}\begin{description} 10538\item[{retval}] \leavevmode\begin{itemize} 10539\item {} 10540\sphinxAtStartPar 105410 Success; otherwise \sphinxhyphen{} Kerberos error codes 10542 10543\end{itemize} 10544 10545\end{description}\end{quote} 10546 10547\sphinxAtStartPar 10548Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 10549 10550 10551\subsubsection{krb5\_mk\_req \sphinxhyphen{} Create a KRB\_AP\_REQ message.} 10552\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)@\spxentry{krb5\_mk\_req}\spxextra{C function}} 10553 10554\begin{fulllineitems} 10555\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_req:c.krb5_mk_req}}% 10556\pysigstartmultiline 10557\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_req}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{ap\_req\_options}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{service}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{hostname}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outbuf}}{}% 10558\pysigstopmultiline 10559\end{fulllineitems} 10560 10561\begin{quote}\begin{description} 10562\item[{param}] \leavevmode 10563\sphinxAtStartPar 10564\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10565 10566\sphinxAtStartPar 10567\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Pre\sphinxhyphen{}existing or newly created auth context 10568 10569\sphinxAtStartPar 10570\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_options} \sphinxhyphen{} Options (see AP\_OPTS macros) 10571 10572\sphinxAtStartPar 10573\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{service} \sphinxhyphen{} Service name, or NULL to use \sphinxstylestrong{“host”} 10574 10575\sphinxAtStartPar 10576\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{hostname} \sphinxhyphen{} Host name, or NULL to use local hostname 10577 10578\sphinxAtStartPar 10579\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_data} \sphinxhyphen{} Application data to be checksummed in the authenticator, or NULL 10580 10581\sphinxAtStartPar 10582\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache used to obtain credentials for the desired service. 10583 10584\sphinxAtStartPar 10585\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} \sphinxhyphen{} \sphinxstylestrong{AP\sphinxhyphen{}REQ} message 10586 10587\end{description}\end{quote} 10588\begin{quote}\begin{description} 10589\item[{retval}] \leavevmode\begin{itemize} 10590\item {} 10591\sphinxAtStartPar 105920 Success; otherwise \sphinxhyphen{} Kerberos error codes 10593 10594\end{itemize} 10595 10596\end{description}\end{quote} 10597 10598\sphinxAtStartPar 10599This function is similar to 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. 10600 10601\sphinxAtStartPar 10602Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 10603 10604 10605\subsubsection{krb5\_mk\_req\_extended \sphinxhyphen{} Create a KRB\_AP\_REQ message using supplied credentials.} 10606\label{\detokenize{appdev/refs/api/krb5_mk_req_extended:krb5-mk-req-extended-create-a-krb-ap-req-message-using-supplied-credentials}}\label{\detokenize{appdev/refs/api/krb5_mk_req_extended::doc}}\index{krb5\_mk\_req\_extended (C function)@\spxentry{krb5\_mk\_req\_extended}\spxextra{C function}} 10607 10608\begin{fulllineitems} 10609\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_req_extended:c.krb5_mk_req_extended}}% 10610\pysigstartmultiline 10611\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_req\_extended}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{ap\_req\_options}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outbuf}}{}% 10612\pysigstopmultiline 10613\end{fulllineitems} 10614 10615\begin{quote}\begin{description} 10616\item[{param}] \leavevmode 10617\sphinxAtStartPar 10618\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10619 10620\sphinxAtStartPar 10621\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Pre\sphinxhyphen{}existing or newly created auth context 10622 10623\sphinxAtStartPar 10624\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_options} \sphinxhyphen{} Options (see AP\_OPTS macros) 10625 10626\sphinxAtStartPar 10627\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_data} \sphinxhyphen{} Application data to be checksummed in the authenticator, or NULL 10628 10629\sphinxAtStartPar 10630\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} \sphinxhyphen{} Credentials for the service with valid ticket and key 10631 10632\sphinxAtStartPar 10633\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{outbuf} \sphinxhyphen{} \sphinxstylestrong{AP\sphinxhyphen{}REQ} message 10634 10635\end{description}\end{quote} 10636\begin{quote}\begin{description} 10637\item[{retval}] \leavevmode\begin{itemize} 10638\item {} 10639\sphinxAtStartPar 106400 Success; otherwise \sphinxhyphen{} Kerberos error codes 10641 10642\end{itemize} 10643 10644\end{description}\end{quote} 10645 10646\sphinxAtStartPar 10647Valid \sphinxstyleemphasis{ap\_req\_options} are: 10648\begin{quote} 10649\begin{itemize} 10650\item {} 10651\sphinxAtStartPar 10652\#AP\_OPTS\_USE\_SESSION\_KEY \sphinxhyphen{} Use the session key when creating the request used for user to user authentication. 10653 10654\item {} 10655\sphinxAtStartPar 10656\#AP\_OPTS\_MUTUAL\_REQUIRED \sphinxhyphen{} Request a mutual authentication packet from the receiver. 10657 10658\item {} 10659\sphinxAtStartPar 10660\#AP\_OPTS\_USE\_SUBKEY \sphinxhyphen{} Generate a subsession key from the current session key obtained from the credentials. 10661 10662\end{itemize} 10663 10664\sphinxAtStartPar 10665This 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\sphinxhyphen{}null, a checksum of it will be included in the authenticator contained in the KRB\_AP\_REQ message. Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{outbuf} when it is no longer needed. 10666\end{quote} 10667 10668\sphinxAtStartPar 10669On 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\sphinxhyphen{}sharing problems; the caller should not need these fields anyway, since the caller supplied them.) 10670 10671 10672\sphinxstrong{See also:} 10673\nopagebreak 10674 10675 10676\sphinxAtStartPar 10677krb5\_mk\_req() 10678 10679 10680 10681 10682\subsubsection{krb5\_mk\_safe \sphinxhyphen{} Format a KRB\sphinxhyphen{}SAFE message.} 10683\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)@\spxentry{krb5\_mk\_safe}\spxextra{C function}} 10684 10685\begin{fulllineitems} 10686\phantomsection\label{\detokenize{appdev/refs/api/krb5_mk_safe:c.krb5_mk_safe}}% 10687\pysigstartmultiline 10688\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_safe}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{userdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{der\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 10689\pysigstopmultiline 10690\end{fulllineitems} 10691 10692\begin{quote}\begin{description} 10693\item[{param}] \leavevmode 10694\sphinxAtStartPar 10695\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10696 10697\sphinxAtStartPar 10698\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 10699 10700\sphinxAtStartPar 10701\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{userdata} \sphinxhyphen{} User data in the message 10702 10703\sphinxAtStartPar 10704\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{der\_out} \sphinxhyphen{} Formatted \sphinxstylestrong{KRB\sphinxhyphen{}SAFE} buffer 10705 10706\sphinxAtStartPar 10707\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay data. Specify NULL if not needed 10708 10709\end{description}\end{quote} 10710\begin{quote}\begin{description} 10711\item[{retval}] \leavevmode\begin{itemize} 10712\item {} 10713\sphinxAtStartPar 107140 Success; otherwise \sphinxhyphen{} Kerberos error codes 10715 10716\end{itemize} 10717 10718\end{description}\end{quote} 10719 10720\sphinxAtStartPar 10721This function creates an integrity protected \sphinxstylestrong{KRB\sphinxhyphen{}SAFE} message using data supplied by the application. 10722 10723\sphinxAtStartPar 10724Fields 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 KRB5\_AUTH\_CONTEXT flags. 10725 10726\sphinxAtStartPar 10727The local address in \sphinxstyleemphasis{auth\_context} must be set, and is used to form the sender address used in the KRB\sphinxhyphen{}SAFE message. The remote address is optional; if specified, it will be used to form the receiver address used in the message. 10728 10729\sphinxAtStartPar 10730If the \#KRB5\_AUTH\_CONTEXT\_DO\_TIME flag is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB\sphinxhyphen{}SAFE message, and an entry for the message is entered in an in\sphinxhyphen{}memory replay cache to detect if the message is reflected by an attacker. If \#KRB5\_AUTH\_CONTEXT\_DO\_TIME is not set, no replay cache is used. If \#KRB5\_AUTH\_CONTEXT\_RET\_TIME is set in \sphinxstyleemphasis{auth\_context} , a timestamp is included in the KRB\sphinxhyphen{}SAFE message and is stored in \sphinxstyleemphasis{rdata\_out} . 10731 10732\sphinxAtStartPar 10733If either \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE is set, the \sphinxstyleemphasis{auth\_context} local sequence number is included in the KRB\sphinxhyphen{}SAFE message and then incremented. If \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE is set, the sequence number used is stored in \sphinxstyleemphasis{rdata\_out} . 10734 10735\sphinxAtStartPar 10736Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{der\_out} when it is no longer needed. 10737 10738\begin{sphinxadmonition}{note}{Note:} 10739\sphinxAtStartPar 10740The \sphinxstyleemphasis{rdata\_out} argument is required if the \#KRB5\_AUTH\_CONTEXT\_RET\_TIME or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} . 10741\end{sphinxadmonition} 10742 10743 10744\subsubsection{krb5\_os\_localaddr \sphinxhyphen{} Return all interface addresses for this host.} 10745\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)@\spxentry{krb5\_os\_localaddr}\spxextra{C function}} 10746 10747\begin{fulllineitems} 10748\phantomsection\label{\detokenize{appdev/refs/api/krb5_os_localaddr:c.krb5_os_localaddr}}% 10749\pysigstartmultiline 10750\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_os\_localaddr}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{addr}}{}% 10751\pysigstopmultiline 10752\end{fulllineitems} 10753 10754\begin{quote}\begin{description} 10755\item[{param}] \leavevmode 10756\sphinxAtStartPar 10757\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10758 10759\sphinxAtStartPar 10760\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{addr} \sphinxhyphen{} Array of krb5\_address pointers, ending with NULL 10761 10762\end{description}\end{quote} 10763\begin{quote}\begin{description} 10764\item[{retval}] \leavevmode\begin{itemize} 10765\item {} 10766\sphinxAtStartPar 107670 Success; otherwise \sphinxhyphen{} Kerberos error codes 10768 10769\end{itemize} 10770 10771\end{description}\end{quote} 10772 10773\sphinxAtStartPar 10774Use krb5\_free\_addresses() to free \sphinxstyleemphasis{addr} when it is no longer needed. 10775 10776 10777\subsubsection{krb5\_pac\_add\_buffer \sphinxhyphen{} Add a buffer to a PAC handle.} 10778\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)@\spxentry{krb5\_pac\_add\_buffer}\spxextra{C function}} 10779 10780\begin{fulllineitems} 10781\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_add_buffer:c.krb5_pac_add_buffer}}% 10782\pysigstartmultiline 10783\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_add\_buffer}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\DUrole{n}{type}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 10784\pysigstopmultiline 10785\end{fulllineitems} 10786 10787\begin{quote}\begin{description} 10788\item[{param}] \leavevmode 10789\sphinxAtStartPar 10790\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10791 10792\sphinxAtStartPar 10793\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 10794 10795\sphinxAtStartPar 10796\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Buffer type 10797 10798\sphinxAtStartPar 10799\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} contents 10800 10801\end{description}\end{quote} 10802\begin{quote}\begin{description} 10803\item[{retval}] \leavevmode\begin{itemize} 10804\item {} 10805\sphinxAtStartPar 108060 Success; otherwise \sphinxhyphen{} Kerberos error codes 10807 10808\end{itemize} 10809 10810\end{description}\end{quote} 10811 10812\sphinxAtStartPar 10813This 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. 10814 10815\sphinxAtStartPar 10816The valid values of \sphinxstyleemphasis{type} is one of the following: 10817\begin{itemize} 10818\item {} 10819\sphinxAtStartPar 10820\#KRB5\_PAC\_LOGON\_INFO \sphinxhyphen{} Logon information 10821 10822\item {} 10823\sphinxAtStartPar 10824\#KRB5\_PAC\_CREDENTIALS\_INFO \sphinxhyphen{} Credentials information 10825 10826\item {} 10827\sphinxAtStartPar 10828\#KRB5\_PAC\_SERVER\_CHECKSUM \sphinxhyphen{} Server checksum 10829 10830\item {} 10831\sphinxAtStartPar 10832\#KRB5\_PAC\_PRIVSVR\_CHECKSUM \sphinxhyphen{} KDC checksum 10833 10834\item {} 10835\sphinxAtStartPar 10836\#KRB5\_PAC\_CLIENT\_INFO \sphinxhyphen{} Client name and ticket information 10837 10838\item {} 10839\sphinxAtStartPar 10840\#KRB5\_PAC\_DELEGATION\_INFO \sphinxhyphen{} Constrained delegation information 10841 10842\item {} 10843\sphinxAtStartPar 10844\#KRB5\_PAC\_UPN\_DNS\_INFO \sphinxhyphen{} User principal name and DNS information 10845 10846\end{itemize} 10847 10848 10849\subsubsection{krb5\_pac\_free \sphinxhyphen{} Free a PAC handle.} 10850\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)@\spxentry{krb5\_pac\_free}\spxextra{C function}} 10851 10852\begin{fulllineitems} 10853\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_free:c.krb5_pac_free}}% 10854\pysigstartmultiline 10855\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}}{}% 10856\pysigstopmultiline 10857\end{fulllineitems} 10858 10859\begin{quote}\begin{description} 10860\item[{param}] \leavevmode 10861\sphinxAtStartPar 10862\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10863 10864\sphinxAtStartPar 10865\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC to be freed 10866 10867\end{description}\end{quote} 10868 10869\sphinxAtStartPar 10870This function frees the contents of \sphinxstyleemphasis{pac} and the structure itself. 10871 10872 10873\subsubsection{krb5\_pac\_get\_buffer \sphinxhyphen{} Retrieve a buffer value from a PAC.} 10874\label{\detokenize{appdev/refs/api/krb5_pac_get_buffer:krb5-pac-get-buffer-retrieve-a-buffer-value-from-a-pac}}\label{\detokenize{appdev/refs/api/krb5_pac_get_buffer::doc}}\index{krb5\_pac\_get\_buffer (C function)@\spxentry{krb5\_pac\_get\_buffer}\spxextra{C function}} 10875 10876\begin{fulllineitems} 10877\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_get_buffer:c.krb5_pac_get_buffer}}% 10878\pysigstartmultiline 10879\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_get\_buffer}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\DUrole{n}{type}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 10880\pysigstopmultiline 10881\end{fulllineitems} 10882 10883\begin{quote}\begin{description} 10884\item[{param}] \leavevmode 10885\sphinxAtStartPar 10886\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10887 10888\sphinxAtStartPar 10889\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 10890 10891\sphinxAtStartPar 10892\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Type of buffer to retrieve 10893 10894\sphinxAtStartPar 10895\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} \sphinxhyphen{} Buffer value 10896 10897\end{description}\end{quote} 10898\begin{quote}\begin{description} 10899\item[{retval}] \leavevmode\begin{itemize} 10900\item {} 10901\sphinxAtStartPar 109020 Success; otherwise \sphinxhyphen{} Kerberos error codes 10903 10904\end{itemize} 10905 10906\end{description}\end{quote} 10907 10908\sphinxAtStartPar 10909Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{data} when it is no longer needed. 10910 10911 10912\subsubsection{krb5\_pac\_get\_types \sphinxhyphen{} Return an array of buffer types in a PAC handle.} 10913\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)@\spxentry{krb5\_pac\_get\_types}\spxextra{C function}} 10914 10915\begin{fulllineitems} 10916\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_get_types:c.krb5_pac_get_types}}% 10917\pysigstartmultiline 10918\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_get\_types}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{len}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{types}}{}% 10919\pysigstopmultiline 10920\end{fulllineitems} 10921 10922\begin{quote}\begin{description} 10923\item[{param}] \leavevmode 10924\sphinxAtStartPar 10925\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10926 10927\sphinxAtStartPar 10928\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 10929 10930\sphinxAtStartPar 10931\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{len} \sphinxhyphen{} Number of entries in \sphinxstyleemphasis{types} 10932 10933\sphinxAtStartPar 10934\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{types} \sphinxhyphen{} Array of buffer types 10935 10936\end{description}\end{quote} 10937\begin{quote}\begin{description} 10938\item[{retval}] \leavevmode\begin{itemize} 10939\item {} 10940\sphinxAtStartPar 109410 Success; otherwise \sphinxhyphen{} Kerberos error codes 10942 10943\end{itemize} 10944 10945\end{description}\end{quote} 10946 10947 10948\subsubsection{krb5\_pac\_init \sphinxhyphen{} Create an empty Privilege Attribute Certificate (PAC) handle.} 10949\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)@\spxentry{krb5\_pac\_init}\spxextra{C function}} 10950 10951\begin{fulllineitems} 10952\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_init:c.krb5_pac_init}}% 10953\pysigstartmultiline 10954\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_init}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pac}}{}% 10955\pysigstopmultiline 10956\end{fulllineitems} 10957 10958\begin{quote}\begin{description} 10959\item[{param}] \leavevmode 10960\sphinxAtStartPar 10961\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10962 10963\sphinxAtStartPar 10964\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pac} \sphinxhyphen{} New PAC handle 10965 10966\end{description}\end{quote} 10967\begin{quote}\begin{description} 10968\item[{retval}] \leavevmode\begin{itemize} 10969\item {} 10970\sphinxAtStartPar 109710 Success; otherwise \sphinxhyphen{} Kerberos error codes 10972 10973\end{itemize} 10974 10975\end{description}\end{quote} 10976 10977\sphinxAtStartPar 10978Use krb5\_pac\_free() to free \sphinxstyleemphasis{pac} when it is no longer needed. 10979 10980 10981\subsubsection{krb5\_pac\_parse \sphinxhyphen{} Unparse an encoded PAC into a new handle.} 10982\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)@\spxentry{krb5\_pac\_parse}\spxextra{C function}} 10983 10984\begin{fulllineitems} 10985\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_parse:c.krb5_pac_parse}}% 10986\pysigstartmultiline 10987\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_parse}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ptr}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{len}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pac}}{}% 10988\pysigstopmultiline 10989\end{fulllineitems} 10990 10991\begin{quote}\begin{description} 10992\item[{param}] \leavevmode 10993\sphinxAtStartPar 10994\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 10995 10996\sphinxAtStartPar 10997\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ptr} \sphinxhyphen{} PAC buffer 10998 10999\sphinxAtStartPar 11000\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{len} \sphinxhyphen{} Length of \sphinxstyleemphasis{ptr} 11001 11002\sphinxAtStartPar 11003\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 11004 11005\end{description}\end{quote} 11006\begin{quote}\begin{description} 11007\item[{retval}] \leavevmode\begin{itemize} 11008\item {} 11009\sphinxAtStartPar 110100 Success; otherwise \sphinxhyphen{} Kerberos error codes 11011 11012\end{itemize} 11013 11014\end{description}\end{quote} 11015 11016\sphinxAtStartPar 11017Use krb5\_pac\_free() to free \sphinxstyleemphasis{pac} when it is no longer needed. 11018 11019 11020\subsubsection{krb5\_pac\_sign} 11021\label{\detokenize{appdev/refs/api/krb5_pac_sign:krb5-pac-sign}}\label{\detokenize{appdev/refs/api/krb5_pac_sign::doc}}\index{krb5\_pac\_sign (C function)@\spxentry{krb5\_pac\_sign}\spxextra{C function}} 11022 11023\begin{fulllineitems} 11024\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_sign:c.krb5_pac_sign}}% 11025\pysigstartmultiline 11026\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_sign}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server\_key}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{privsvr\_key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 11027\pysigstopmultiline 11028\end{fulllineitems} 11029 11030\begin{quote}\begin{description} 11031\item[{param}] \leavevmode 11032\sphinxAtStartPar 11033\sphinxstylestrong{context} 11034 11035\sphinxAtStartPar 11036\sphinxstylestrong{pac} 11037 11038\sphinxAtStartPar 11039\sphinxstylestrong{authtime} 11040 11041\sphinxAtStartPar 11042\sphinxstylestrong{principal} 11043 11044\sphinxAtStartPar 11045\sphinxstylestrong{server\_key} 11046 11047\sphinxAtStartPar 11048\sphinxstylestrong{privsvr\_key} 11049 11050\sphinxAtStartPar 11051\sphinxstylestrong{data} 11052 11053\end{description}\end{quote} 11054 11055\sphinxAtStartPar 11056DEPRECATED Use krb5\_kdc\_sign\_ticket() instead. 11057 11058 11059\subsubsection{krb5\_pac\_sign\_ext} 11060\label{\detokenize{appdev/refs/api/krb5_pac_sign_ext:krb5-pac-sign-ext}}\label{\detokenize{appdev/refs/api/krb5_pac_sign_ext::doc}}\index{krb5\_pac\_sign\_ext (C function)@\spxentry{krb5\_pac\_sign\_ext}\spxextra{C function}} 11061 11062\begin{fulllineitems} 11063\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_sign_ext:c.krb5_pac_sign_ext}}% 11064\pysigstartmultiline 11065\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_sign\_ext}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server\_key}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{privsvr\_key}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{n}{with\_realm}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 11066\pysigstopmultiline 11067\end{fulllineitems} 11068 11069\begin{quote}\begin{description} 11070\item[{param}] \leavevmode 11071\sphinxAtStartPar 11072\sphinxstylestrong{context} 11073 11074\sphinxAtStartPar 11075\sphinxstylestrong{pac} 11076 11077\sphinxAtStartPar 11078\sphinxstylestrong{authtime} 11079 11080\sphinxAtStartPar 11081\sphinxstylestrong{principal} 11082 11083\sphinxAtStartPar 11084\sphinxstylestrong{server\_key} 11085 11086\sphinxAtStartPar 11087\sphinxstylestrong{privsvr\_key} 11088 11089\sphinxAtStartPar 11090\sphinxstylestrong{with\_realm} 11091 11092\sphinxAtStartPar 11093\sphinxstylestrong{data} 11094 11095\end{description}\end{quote} 11096 11097\sphinxAtStartPar 11098DEPRECATED Use krb5\_kdc\_sign\_ticket() instead. 11099 11100 11101\subsubsection{krb5\_pac\_verify \sphinxhyphen{} Verify a PAC.} 11102\label{\detokenize{appdev/refs/api/krb5_pac_verify:krb5-pac-verify-verify-a-pac}}\label{\detokenize{appdev/refs/api/krb5_pac_verify::doc}}\index{krb5\_pac\_verify (C function)@\spxentry{krb5\_pac\_verify}\spxextra{C function}} 11103 11104\begin{fulllineitems} 11105\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_verify:c.krb5_pac_verify}}% 11106\pysigstartmultiline 11107\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_verify}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{privsvr}}{}% 11108\pysigstopmultiline 11109\end{fulllineitems} 11110 11111\begin{quote}\begin{description} 11112\item[{param}] \leavevmode 11113\sphinxAtStartPar 11114\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11115 11116\sphinxAtStartPar 11117\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 11118 11119\sphinxAtStartPar 11120\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authtime} \sphinxhyphen{} Expected timestamp 11121 11122\sphinxAtStartPar 11123\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Expected principal name (or NULL) 11124 11125\sphinxAtStartPar 11126\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Key to validate server checksum (or NULL) 11127 11128\sphinxAtStartPar 11129\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr} \sphinxhyphen{} Key to validate KDC checksum (or NULL) 11130 11131\end{description}\end{quote} 11132\begin{quote}\begin{description} 11133\item[{retval}] \leavevmode\begin{itemize} 11134\item {} 11135\sphinxAtStartPar 111360 Success; otherwise \sphinxhyphen{} Kerberos error codes 11137 11138\end{itemize} 11139 11140\end{description}\end{quote} 11141 11142\sphinxAtStartPar 11143This 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. 11144 11145\sphinxAtStartPar 11146If successful, \sphinxstyleemphasis{pac} is marked as verified. 11147 11148\begin{sphinxadmonition}{note}{Note:} 11149\sphinxAtStartPar 11150A checksum mismatch can occur if the PAC was copied from a cross\sphinxhyphen{}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\sphinxhyphen{}verified. 11151\end{sphinxadmonition} 11152 11153 11154\subsubsection{krb5\_pac\_verify\_ext \sphinxhyphen{} Verify a PAC, possibly from a specified realm.} 11155\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)@\spxentry{krb5\_pac\_verify\_ext}\spxextra{C function}} 11156 11157\begin{fulllineitems} 11158\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_verify_ext:c.krb5_pac_verify_ext}}% 11159\pysigstartmultiline 11160\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_verify\_ext}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{authtime}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{principal}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{server}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{privsvr}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{n}{with\_realm}}{}% 11161\pysigstopmultiline 11162\end{fulllineitems} 11163 11164\begin{quote}\begin{description} 11165\item[{param}] \leavevmode 11166\sphinxAtStartPar 11167\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11168 11169\sphinxAtStartPar 11170\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 11171 11172\sphinxAtStartPar 11173\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authtime} \sphinxhyphen{} Expected timestamp 11174 11175\sphinxAtStartPar 11176\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{principal} \sphinxhyphen{} Expected principal name (or NULL) 11177 11178\sphinxAtStartPar 11179\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Key to validate server checksum (or NULL) 11180 11181\sphinxAtStartPar 11182\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{privsvr} \sphinxhyphen{} Key to validate KDC checksum (or NULL) 11183 11184\sphinxAtStartPar 11185\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{with\_realm} \sphinxhyphen{} If true, expect the realm of \sphinxstyleemphasis{principal} 11186 11187\end{description}\end{quote} 11188 11189\sphinxAtStartPar 11190This function is similar to 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\sphinxhyphen{}realm S4U2Self referral TGTs. 11191 11192\begin{sphinxadmonition}{note}{Note:} 11193\sphinxAtStartPar 11194New in 1.17 11195\end{sphinxadmonition} 11196 11197 11198\subsubsection{krb5\_pac\_get\_client\_info \sphinxhyphen{} Read client information from a PAC.} 11199\label{\detokenize{appdev/refs/api/krb5_pac_get_client_info:krb5-pac-get-client-info-read-client-information-from-a-pac}}\label{\detokenize{appdev/refs/api/krb5_pac_get_client_info::doc}}\index{krb5\_pac\_get\_client\_info (C function)@\spxentry{krb5\_pac\_get\_client\_info}\spxextra{C function}} 11200 11201\begin{fulllineitems} 11202\phantomsection\label{\detokenize{appdev/refs/api/krb5_pac_get_client_info:c.krb5_pac_get_client_info}}% 11203\pysigstartmultiline 11204\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac\_get\_client\_info}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}]{\sphinxcrossref{\DUrole{n}{krb5\_pac}}}}\DUrole{w}{ }\DUrole{n}{pac}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{authtime\_out}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{princname\_out}}{}% 11205\pysigstopmultiline 11206\end{fulllineitems} 11207 11208\begin{quote}\begin{description} 11209\item[{param}] \leavevmode 11210\sphinxAtStartPar 11211\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11212 11213\sphinxAtStartPar 11214\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pac} \sphinxhyphen{} PAC handle 11215 11216\sphinxAtStartPar 11217\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authtime\_out} \sphinxhyphen{} Authentication timestamp (NULL if not needed) 11218 11219\sphinxAtStartPar 11220\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{princname\_out} \sphinxhyphen{} Client account name 11221 11222\end{description}\end{quote} 11223\begin{quote}\begin{description} 11224\item[{retval}] \leavevmode\begin{itemize} 11225\item {} 11226\sphinxAtStartPar 112270 on success, ENOENT if no PAC\_CLIENT\_INFO buffer is present in pac , ERANGE if the buffer contains invalid lengths. 11228 11229\end{itemize} 11230 11231\end{description}\end{quote} 11232 11233\sphinxAtStartPar 11234Read the PAC\_CLIENT\_INFO buffer in \sphinxstyleemphasis{pac} . Place the client account name as a string in \sphinxstyleemphasis{princname\_out} . If \sphinxstyleemphasis{authtime\_out} is not NULL, place the initial authentication timestamp in \sphinxstyleemphasis{authtime\_out} . 11235 11236\begin{sphinxadmonition}{note}{Note:} 11237\sphinxAtStartPar 11238New in 1.18 11239\end{sphinxadmonition} 11240 11241 11242\subsubsection{krb5\_prepend\_error\_message \sphinxhyphen{} Add a prefix to the message for an error code.} 11243\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)@\spxentry{krb5\_prepend\_error\_message}\spxextra{C function}} 11244 11245\begin{fulllineitems} 11246\phantomsection\label{\detokenize{appdev/refs/api/krb5_prepend_error_message:c.krb5_prepend_error_message}}% 11247\pysigstartmultiline 11248\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_prepend\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fmt}, \DUrole{p}{...}}{}% 11249\pysigstopmultiline 11250\end{fulllineitems} 11251 11252\begin{quote}\begin{description} 11253\item[{param}] \leavevmode 11254\sphinxAtStartPar 11255\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 11256 11257\sphinxAtStartPar 11258\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 11259 11260\sphinxAtStartPar 11261\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} \sphinxhyphen{} Format string for error message prefix 11262 11263\end{description}\end{quote} 11264 11265\sphinxAtStartPar 11266Format 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. 11267 11268 11269\subsubsection{krb5\_principal2salt \sphinxhyphen{} Convert a principal name into the default salt for that principal.} 11270\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)@\spxentry{krb5\_principal2salt}\spxextra{C function}} 11271 11272\begin{fulllineitems} 11273\phantomsection\label{\detokenize{appdev/refs/api/krb5_principal2salt:c.krb5_principal2salt}}% 11274\pysigstartmultiline 11275\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_principal2salt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{pr}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ret}}{}% 11276\pysigstopmultiline 11277\end{fulllineitems} 11278 11279\begin{quote}\begin{description} 11280\item[{param}] \leavevmode 11281\sphinxAtStartPar 11282\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11283 11284\sphinxAtStartPar 11285\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pr} \sphinxhyphen{} Principal name 11286 11287\sphinxAtStartPar 11288\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ret} \sphinxhyphen{} Default salt for \sphinxstyleemphasis{pr} to be filled in 11289 11290\end{description}\end{quote} 11291\begin{quote}\begin{description} 11292\item[{retval}] \leavevmode\begin{itemize} 11293\item {} 11294\sphinxAtStartPar 112950 Success; otherwise \sphinxhyphen{} Kerberos error codes 11296 11297\end{itemize} 11298 11299\end{description}\end{quote} 11300 11301 11302\subsubsection{krb5\_rd\_cred \sphinxhyphen{} Read and validate a KRB\sphinxhyphen{}CRED message.} 11303\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)@\spxentry{krb5\_rd\_cred}\spxextra{C function}} 11304 11305\begin{fulllineitems} 11306\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_cred:c.krb5_rd_cred}}% 11307\pysigstartmultiline 11308\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_cred}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creddata}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{creds\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 11309\pysigstopmultiline 11310\end{fulllineitems} 11311 11312\begin{quote}\begin{description} 11313\item[{param}] \leavevmode 11314\sphinxAtStartPar 11315\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11316 11317\sphinxAtStartPar 11318\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 11319 11320\sphinxAtStartPar 11321\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creddata} \sphinxhyphen{} \sphinxstylestrong{KRB\sphinxhyphen{}CRED} message 11322 11323\sphinxAtStartPar 11324\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds\_out} \sphinxhyphen{} Null\sphinxhyphen{}terminated array of forwarded credentials 11325 11326\sphinxAtStartPar 11327\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay data (NULL if not needed) 11328 11329\end{description}\end{quote} 11330\begin{quote}\begin{description} 11331\item[{retval}] \leavevmode\begin{itemize} 11332\item {} 11333\sphinxAtStartPar 113340 Success; otherwise \sphinxhyphen{} Kerberos error codes 11335 11336\end{itemize} 11337 11338\end{description}\end{quote} 11339\begin{quote} 11340 11341\sphinxAtStartPar 11342\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. 11343\end{quote} 11344 11345\sphinxAtStartPar 11346Use krb5\_free\_tgt\_creds() to free \sphinxstyleemphasis{creds\_out} when it is no longer needed. 11347 11348\begin{sphinxadmonition}{note}{Note:} 11349\sphinxAtStartPar 11350The \sphinxstyleemphasis{rdata\_out} argument is required if the \#KRB5\_AUTH\_CONTEXT\_RET\_TIME or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} .\textasciigrave{} 11351\end{sphinxadmonition} 11352 11353 11354\subsubsection{krb5\_rd\_error \sphinxhyphen{} Decode a KRB\sphinxhyphen{}ERROR message.} 11355\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)@\spxentry{krb5\_rd\_error}\spxextra{C function}} 11356 11357\begin{fulllineitems} 11358\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_error:c.krb5_rd_error}}% 11359\pysigstartmultiline 11360\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_error}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{enc\_errbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{dec\_error}}{}% 11361\pysigstopmultiline 11362\end{fulllineitems} 11363 11364\begin{quote}\begin{description} 11365\item[{param}] \leavevmode 11366\sphinxAtStartPar 11367\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11368 11369\sphinxAtStartPar 11370\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enc\_errbuf} \sphinxhyphen{} Encoded error message 11371 11372\sphinxAtStartPar 11373\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{dec\_error} \sphinxhyphen{} Decoded error message 11374 11375\end{description}\end{quote} 11376\begin{quote}\begin{description} 11377\item[{retval}] \leavevmode\begin{itemize} 11378\item {} 11379\sphinxAtStartPar 113800 Success; otherwise \sphinxhyphen{} Kerberos error codes 11381 11382\end{itemize} 11383 11384\end{description}\end{quote} 11385 11386\sphinxAtStartPar 11387This function processes \sphinxstylestrong{KRB\sphinxhyphen{}ERROR} message \sphinxstyleemphasis{enc\_errbuf} and returns an allocated structure \sphinxstyleemphasis{dec\_error} containing the error message. Use krb5\_free\_error() to free \sphinxstyleemphasis{dec\_error} when it is no longer needed. 11388 11389 11390\subsubsection{krb5\_rd\_priv \sphinxhyphen{} Process a KRB\sphinxhyphen{}PRIV message.} 11391\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)@\spxentry{krb5\_rd\_priv}\spxextra{C function}} 11392 11393\begin{fulllineitems} 11394\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_priv:c.krb5_rd_priv}}% 11395\pysigstartmultiline 11396\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_priv}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{userdata\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 11397\pysigstopmultiline 11398\end{fulllineitems} 11399 11400\begin{quote}\begin{description} 11401\item[{param}] \leavevmode 11402\sphinxAtStartPar 11403\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11404 11405\sphinxAtStartPar 11406\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication structure 11407 11408\sphinxAtStartPar 11409\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} \sphinxhyphen{} \sphinxstylestrong{KRB\sphinxhyphen{}PRIV} message to be parsed 11410 11411\sphinxAtStartPar 11412\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{userdata\_out} \sphinxhyphen{} Data parsed from \sphinxstylestrong{KRB\sphinxhyphen{}PRIV} message 11413 11414\sphinxAtStartPar 11415\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay data. Specify NULL if not needed 11416 11417\end{description}\end{quote} 11418\begin{quote}\begin{description} 11419\item[{retval}] \leavevmode\begin{itemize} 11420\item {} 11421\sphinxAtStartPar 114220 Success; otherwise \sphinxhyphen{} Kerberos error codes 11423 11424\end{itemize} 11425 11426\end{description}\end{quote} 11427 11428\sphinxAtStartPar 11429This function parses a \sphinxstylestrong{KRB\sphinxhyphen{}PRIV} message, verifies its integrity, and stores its unencrypted data into \sphinxstyleemphasis{userdata\_out} . 11430 11431\sphinxAtStartPar 11432If \sphinxstyleemphasis{auth\_context} has a remote address set, the address will be used to verify the sender address in the KRB\sphinxhyphen{}PRIV message. If \sphinxstyleemphasis{auth\_context} has a local address set, it will be used to verify the receiver address in the KRB\sphinxhyphen{}PRIV message if the message contains one. 11433 11434\sphinxAtStartPar 11435If the \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} , the sequence number of the KRB\sphinxhyphen{}PRIV message is checked against the remote sequence number field of \sphinxstyleemphasis{auth\_context} . Otherwise, the sequence number is not used. 11436 11437\sphinxAtStartPar 11438If the \#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\sphinxhyphen{}memory replay cache to detect reflections or replays. 11439 11440\sphinxAtStartPar 11441Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{userdata\_out} when it is no longer needed. 11442 11443\begin{sphinxadmonition}{note}{Note:} 11444\sphinxAtStartPar 11445The \sphinxstyleemphasis{rdata\_out} argument is required if the \#KRB5\_AUTH\_CONTEXT\_RET\_TIME or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} . 11446\end{sphinxadmonition} 11447 11448 11449\subsubsection{krb5\_rd\_rep \sphinxhyphen{} Parse and decrypt a KRB\_AP\_REP message.} 11450\label{\detokenize{appdev/refs/api/krb5_rd_rep:krb5-rd-rep-parse-and-decrypt-a-krb-ap-rep-message}}\label{\detokenize{appdev/refs/api/krb5_rd_rep::doc}}\index{krb5\_rd\_rep (C function)@\spxentry{krb5\_rd\_rep}\spxextra{C function}} 11451 11452\begin{fulllineitems} 11453\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_rep:c.krb5_rd_rep}}% 11454\pysigstartmultiline 11455\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_rep}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{repl}}{}% 11456\pysigstopmultiline 11457\end{fulllineitems} 11458 11459\begin{quote}\begin{description} 11460\item[{param}] \leavevmode 11461\sphinxAtStartPar 11462\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11463 11464\sphinxAtStartPar 11465\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 11466 11467\sphinxAtStartPar 11468\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} \sphinxhyphen{} AP\sphinxhyphen{}REP message 11469 11470\sphinxAtStartPar 11471\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{repl} \sphinxhyphen{} Decrypted reply message 11472 11473\end{description}\end{quote} 11474\begin{quote}\begin{description} 11475\item[{retval}] \leavevmode\begin{itemize} 11476\item {} 11477\sphinxAtStartPar 114780 Success; otherwise \sphinxhyphen{} Kerberos error codes 11479 11480\end{itemize} 11481 11482\end{description}\end{quote} 11483 11484\sphinxAtStartPar 11485This 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. 11486 11487\sphinxAtStartPar 11488Use krb5\_free\_ap\_rep\_enc\_part() to free \sphinxstyleemphasis{repl} when it is no longer needed. 11489 11490 11491\subsubsection{krb5\_rd\_rep\_dce \sphinxhyphen{} Parse and decrypt a KRB\_AP\_REP message for DCE RPC.} 11492\label{\detokenize{appdev/refs/api/krb5_rd_rep_dce:krb5-rd-rep-dce-parse-and-decrypt-a-krb-ap-rep-message-for-dce-rpc}}\label{\detokenize{appdev/refs/api/krb5_rd_rep_dce::doc}}\index{krb5\_rd\_rep\_dce (C function)@\spxentry{krb5\_rd\_rep\_dce}\spxextra{C function}} 11493 11494\begin{fulllineitems} 11495\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_rep_dce:c.krb5_rd_rep_dce}}% 11496\pysigstartmultiline 11497\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_rep\_dce}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{nonce}}{}% 11498\pysigstopmultiline 11499\end{fulllineitems} 11500 11501\begin{quote}\begin{description} 11502\item[{param}] \leavevmode 11503\sphinxAtStartPar 11504\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11505 11506\sphinxAtStartPar 11507\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 11508 11509\sphinxAtStartPar 11510\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} \sphinxhyphen{} AP\sphinxhyphen{}REP message 11511 11512\sphinxAtStartPar 11513\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{nonce} \sphinxhyphen{} Sequence number from the decrypted reply 11514 11515\end{description}\end{quote} 11516\begin{quote}\begin{description} 11517\item[{retval}] \leavevmode\begin{itemize} 11518\item {} 11519\sphinxAtStartPar 115200 Success; otherwise \sphinxhyphen{} Kerberos error codes 11521 11522\end{itemize} 11523 11524\end{description}\end{quote} 11525 11526\sphinxAtStartPar 11527This function parses, decrypts and verifies a message from \sphinxstyleemphasis{inbuf} and fills in \sphinxstyleemphasis{nonce} with a decrypted reply sequence number. 11528 11529 11530\subsubsection{krb5\_rd\_req \sphinxhyphen{} Parse and decrypt a KRB\_AP\_REQ message.} 11531\label{\detokenize{appdev/refs/api/krb5_rd_req:krb5-rd-req-parse-and-decrypt-a-krb-ap-req-message}}\label{\detokenize{appdev/refs/api/krb5_rd_req::doc}}\index{krb5\_rd\_req (C function)@\spxentry{krb5\_rd\_req}\spxextra{C function}} 11532 11533\begin{fulllineitems} 11534\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_req:c.krb5_rd_req}}% 11535\pysigstartmultiline 11536\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_req}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ap\_req\_options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ticket}}{}% 11537\pysigstopmultiline 11538\end{fulllineitems} 11539 11540\begin{quote}\begin{description} 11541\item[{param}] \leavevmode 11542\sphinxAtStartPar 11543\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11544 11545\sphinxAtStartPar 11546\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Pre\sphinxhyphen{}existing or newly created auth context 11547 11548\sphinxAtStartPar 11549\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} \sphinxhyphen{} AP\sphinxhyphen{}REQ message to be parsed 11550 11551\sphinxAtStartPar 11552\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Matching principal for server, or NULL to allow any principal in keytab 11553 11554\sphinxAtStartPar 11555\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table, or NULL to use the default 11556 11557\sphinxAtStartPar 11558\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ap\_req\_options} \sphinxhyphen{} If non\sphinxhyphen{}null, the AP\sphinxhyphen{}REQ flags on output 11559 11560\sphinxAtStartPar 11561\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ticket} \sphinxhyphen{} If non\sphinxhyphen{}null, ticket from the AP\sphinxhyphen{}REQ message 11562 11563\end{description}\end{quote} 11564\begin{quote}\begin{description} 11565\item[{retval}] \leavevmode\begin{itemize} 11566\item {} 11567\sphinxAtStartPar 115680 Success; otherwise \sphinxhyphen{} Kerberos error codes 11569 11570\end{itemize} 11571 11572\end{description}\end{quote} 11573 11574\sphinxAtStartPar 11575This function parses, decrypts and verifies a AP\sphinxhyphen{}REQ message from \sphinxstyleemphasis{inbuf} and stores the authenticator in \sphinxstyleemphasis{auth\_context} . 11576 11577\sphinxAtStartPar 11578If a keyblock was specified in \sphinxstyleemphasis{auth\_context} using krb5\_auth\_con\_setuseruserkey(), that key is used to decrypt the ticket in AP\sphinxhyphen{}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\sphinxhyphen{}path checking and replay cache selection. 11579 11580\sphinxAtStartPar 11581Otherwise, 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 krb5\_sname\_match()), or NULL to match any principal name. The keys tried against the encrypted part of the ticket are determined as follows: 11582\begin{itemize} 11583\item {} 11584\sphinxAtStartPar 11585If \sphinxstyleemphasis{server} is a complete principal name, then its entry in \sphinxstyleemphasis{keytab} is tried. 11586 11587\item {} 11588\sphinxAtStartPar 11589Otherwise, if \sphinxstyleemphasis{keytab} is iterable, then all entries in \sphinxstyleemphasis{keytab} which match \sphinxstyleemphasis{server} are tried. 11590 11591\item {} 11592\sphinxAtStartPar 11593Otherwise, the server principal in the ticket must match \sphinxstyleemphasis{server} , and its entry in \sphinxstyleemphasis{keytab} is tried. 11594 11595\end{itemize} 11596 11597\sphinxAtStartPar 11598The client specified in the decrypted authenticator must match the client specified in the decrypted ticket. 11599 11600\sphinxAtStartPar 11601If the \sphinxstyleemphasis{remote\_addr} field of \sphinxstyleemphasis{auth\_context} is set, the request must come from that address. 11602 11603\sphinxAtStartPar 11604If 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} . 11605 11606\sphinxAtStartPar 11607Various other checks are performed on the decoded data, including cross\sphinxhyphen{}realm policy, clockskew, and ticket validation times. 11608 11609\sphinxAtStartPar 11610On success the authenticator, subkey, and remote sequence number of the request are stored in \sphinxstyleemphasis{auth\_context} . If the \#AP\_OPTS\_MUTUAL\_REQUIRED bit is set, the local sequence number is XORed with the remote sequence number in the request. 11611 11612\sphinxAtStartPar 11613Use krb5\_free\_ticket() to free \sphinxstyleemphasis{ticket} when it is no longer needed. 11614 11615 11616\subsubsection{krb5\_rd\_safe \sphinxhyphen{} Process KRB\sphinxhyphen{}SAFE message.} 11617\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)@\spxentry{krb5\_rd\_safe}\spxextra{C function}} 11618 11619\begin{fulllineitems} 11620\phantomsection\label{\detokenize{appdev/refs/api/krb5_rd_safe:c.krb5_rd_safe}}% 11621\pysigstartmultiline 11622\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rd\_safe}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{inbuf}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{userdata\_out}, {\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{rdata\_out}}{}% 11623\pysigstopmultiline 11624\end{fulllineitems} 11625 11626\begin{quote}\begin{description} 11627\item[{param}] \leavevmode 11628\sphinxAtStartPar 11629\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11630 11631\sphinxAtStartPar 11632\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 11633 11634\sphinxAtStartPar 11635\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inbuf} \sphinxhyphen{} \sphinxstylestrong{KRB\sphinxhyphen{}SAFE} message to be parsed 11636 11637\sphinxAtStartPar 11638\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{userdata\_out} \sphinxhyphen{} Data parsed from \sphinxstylestrong{KRB\sphinxhyphen{}SAFE} message 11639 11640\sphinxAtStartPar 11641\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rdata\_out} \sphinxhyphen{} Replay data. Specify NULL if not needed 11642 11643\end{description}\end{quote} 11644\begin{quote}\begin{description} 11645\item[{retval}] \leavevmode\begin{itemize} 11646\item {} 11647\sphinxAtStartPar 116480 Success; otherwise \sphinxhyphen{} Kerberos error codes 11649 11650\end{itemize} 11651 11652\end{description}\end{quote} 11653 11654\sphinxAtStartPar 11655This function parses a \sphinxstylestrong{KRB\sphinxhyphen{}SAFE} message, verifies its integrity, and stores its data into \sphinxstyleemphasis{userdata\_out} . 11656 11657\sphinxAtStartPar 11658If \sphinxstyleemphasis{auth\_context} has a remote address set, the address will be used to verify the sender address in the KRB\sphinxhyphen{}SAFE message. If \sphinxstyleemphasis{auth\_context} has a local address set, it will be used to verify the receiver address in the KRB\sphinxhyphen{}SAFE message if the message contains one. 11659 11660\sphinxAtStartPar 11661If the \#KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} , the sequence number of the KRB\sphinxhyphen{}SAFE message is checked against the remote sequence number field of \sphinxstyleemphasis{auth\_context} . Otherwise, the sequence number is not used. 11662 11663\sphinxAtStartPar 11664If the \#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\sphinxhyphen{}memory replay cache to detect reflections or replays. 11665 11666\sphinxAtStartPar 11667Use krb5\_free\_data\_contents() to free \sphinxstyleemphasis{userdata\_out} when it is no longer needed. 11668 11669\begin{sphinxadmonition}{note}{Note:} 11670\sphinxAtStartPar 11671The \sphinxstyleemphasis{rdata\_out} argument is required if the \#KRB5\_AUTH\_CONTEXT\_RET\_TIME or \#KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE flag is set in \sphinxstyleemphasis{auth\_context} . 11672\end{sphinxadmonition} 11673 11674 11675\subsubsection{krb5\_read\_password \sphinxhyphen{} Read a password from keyboard input.} 11676\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)@\spxentry{krb5\_read\_password}\spxextra{C function}} 11677 11678\begin{fulllineitems} 11679\phantomsection\label{\detokenize{appdev/refs/api/krb5_read_password:c.krb5_read_password}}% 11680\pysigstartmultiline 11681\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_read\_password}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{prompt}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{prompt2}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{return\_pwd}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{size\_return}}{}% 11682\pysigstopmultiline 11683\end{fulllineitems} 11684 11685\begin{quote}\begin{description} 11686\item[{param}] \leavevmode 11687\sphinxAtStartPar 11688\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11689 11690\sphinxAtStartPar 11691\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompt} \sphinxhyphen{} First user prompt when reading password 11692 11693\sphinxAtStartPar 11694\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{prompt2} \sphinxhyphen{} Second user prompt (NULL to prompt only once) 11695 11696\sphinxAtStartPar 11697\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{return\_pwd} \sphinxhyphen{} Returned password 11698 11699\sphinxAtStartPar 11700\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{size\_return} \sphinxhyphen{} On input, maximum size of password; on output, size of password read 11701 11702\end{description}\end{quote} 11703\begin{quote}\begin{description} 11704\item[{retval}] \leavevmode\begin{itemize} 11705\item {} 11706\sphinxAtStartPar 117070 Success 11708 11709\end{itemize} 11710 11711\item[{return}] \leavevmode\begin{itemize} 11712\item {} 11713\sphinxAtStartPar 11714Error in reading or verifying the password 11715 11716\item {} 11717\sphinxAtStartPar 11718Kerberos error codes 11719 11720\end{itemize} 11721 11722\end{description}\end{quote} 11723 11724\sphinxAtStartPar 11725This 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. 11726\begin{quote} 11727 11728\sphinxAtStartPar 11729\sphinxstyleemphasis{prompt} is printed to the terminal, followed by”:”, and then a password is read from the keyboard. 11730\end{quote} 11731 11732\sphinxAtStartPar 11733If \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. 11734 11735\sphinxAtStartPar 11736Echoing is turned off when the password is read. 11737 11738 11739\subsubsection{krb5\_salttype\_to\_string \sphinxhyphen{} Convert a salt type to a string.} 11740\label{\detokenize{appdev/refs/api/krb5_salttype_to_string:krb5-salttype-to-string-convert-a-salt-type-to-a-string}}\label{\detokenize{appdev/refs/api/krb5_salttype_to_string::doc}}\index{krb5\_salttype\_to\_string (C function)@\spxentry{krb5\_salttype\_to\_string}\spxextra{C function}} 11741 11742\begin{fulllineitems} 11743\phantomsection\label{\detokenize{appdev/refs/api/krb5_salttype_to_string:c.krb5_salttype_to_string}}% 11744\pysigstartmultiline 11745\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_salttype\_to\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{n}{salttype}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}}{}% 11746\pysigstopmultiline 11747\end{fulllineitems} 11748 11749\begin{quote}\begin{description} 11750\item[{param}] \leavevmode 11751\sphinxAtStartPar 11752\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salttype} \sphinxhyphen{} Salttype to convert 11753 11754\sphinxAtStartPar 11755\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to receive the converted string 11756 11757\sphinxAtStartPar 11758\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Storage available in \sphinxstyleemphasis{buffer} 11759 11760\end{description}\end{quote} 11761\begin{quote}\begin{description} 11762\item[{retval}] \leavevmode\begin{itemize} 11763\item {} 11764\sphinxAtStartPar 117650 Success; otherwise \sphinxhyphen{} Kerberos error codes 11766 11767\end{itemize} 11768 11769\end{description}\end{quote} 11770 11771 11772\subsubsection{krb5\_server\_decrypt\_ticket\_keytab \sphinxhyphen{} Decrypt a ticket using the specified key table.} 11773\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)@\spxentry{krb5\_server\_decrypt\_ticket\_keytab}\spxextra{C function}} 11774 11775\begin{fulllineitems} 11776\phantomsection\label{\detokenize{appdev/refs/api/krb5_server_decrypt_ticket_keytab:c.krb5_server_decrypt_ticket_keytab}}% 11777\pysigstartmultiline 11778\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_server\_decrypt\_ticket\_keytab}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{kt}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ticket}}{}% 11779\pysigstopmultiline 11780\end{fulllineitems} 11781 11782\begin{quote}\begin{description} 11783\item[{param}] \leavevmode 11784\sphinxAtStartPar 11785\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11786 11787\sphinxAtStartPar 11788\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{kt} \sphinxhyphen{} Key table 11789 11790\sphinxAtStartPar 11791\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ticket} \sphinxhyphen{} Ticket to be decrypted 11792 11793\end{description}\end{quote} 11794\begin{quote}\begin{description} 11795\item[{retval}] \leavevmode\begin{itemize} 11796\item {} 11797\sphinxAtStartPar 117980 Success; otherwise \sphinxhyphen{} Kerberos error codes 11799 11800\end{itemize} 11801 11802\end{description}\end{quote} 11803 11804\sphinxAtStartPar 11805This function takes a \sphinxstyleemphasis{ticket} as input and decrypts it using key data from \sphinxstyleemphasis{kt} . The result is placed into \sphinxstyleemphasis{ticket\sphinxhyphen{}\textgreater{}enc\_part2} . 11806 11807 11808\subsubsection{krb5\_set\_default\_tgs\_enctypes \sphinxhyphen{} Set default TGS encryption types in a krb5\_context structure.} 11809\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}}\label{\detokenize{appdev/refs/api/krb5_set_default_tgs_enctypes::doc}}\index{krb5\_set\_default\_tgs\_enctypes (C function)@\spxentry{krb5\_set\_default\_tgs\_enctypes}\spxextra{C function}} 11810 11811\begin{fulllineitems} 11812\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_default_tgs_enctypes:c.krb5_set_default_tgs_enctypes}}% 11813\pysigstartmultiline 11814\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_default\_tgs\_enctypes}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{etypes}}{}% 11815\pysigstopmultiline 11816\end{fulllineitems} 11817 11818\begin{quote}\begin{description} 11819\item[{param}] \leavevmode 11820\sphinxAtStartPar 11821\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11822 11823\sphinxAtStartPar 11824\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{etypes} \sphinxhyphen{} Encryption type(s) to set 11825 11826\end{description}\end{quote} 11827\begin{quote}\begin{description} 11828\item[{retval}] \leavevmode\begin{itemize} 11829\item {} 11830\sphinxAtStartPar 118310 Success 11832 11833\item {} 11834\sphinxAtStartPar 11835KRB5\_PROG\_ETYPE\_NOSUPP Program lacks support for encryption type 11836 11837\end{itemize} 11838 11839\item[{return}] \leavevmode\begin{itemize} 11840\item {} 11841\sphinxAtStartPar 11842Kerberos error codes 11843 11844\end{itemize} 11845 11846\end{description}\end{quote} 11847 11848\sphinxAtStartPar 11849This function sets the default enctype list for TGS requests made using \sphinxstyleemphasis{context} to \sphinxstyleemphasis{etypes} . 11850 11851\begin{sphinxadmonition}{note}{Note:} 11852\sphinxAtStartPar 11853This overrides the default list (from config file or built\sphinxhyphen{}in). 11854\end{sphinxadmonition} 11855 11856 11857\subsubsection{krb5\_set\_error\_message \sphinxhyphen{} Set an extended error message for an error code.} 11858\label{\detokenize{appdev/refs/api/krb5_set_error_message:krb5-set-error-message-set-an-extended-error-message-for-an-error-code}}\label{\detokenize{appdev/refs/api/krb5_set_error_message::doc}}\index{krb5\_set\_error\_message (C function)@\spxentry{krb5\_set\_error\_message}\spxextra{C function}} 11859 11860\begin{fulllineitems} 11861\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_error_message:c.krb5_set_error_message}}% 11862\pysigstartmultiline 11863\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fmt}, \DUrole{p}{...}}{}% 11864\pysigstopmultiline 11865\end{fulllineitems} 11866 11867\begin{quote}\begin{description} 11868\item[{param}] \leavevmode 11869\sphinxAtStartPar 11870\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 11871 11872\sphinxAtStartPar 11873\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 11874 11875\sphinxAtStartPar 11876\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} \sphinxhyphen{} Error string for the error code 11877 11878\end{description}\end{quote} 11879 11880 11881\subsubsection{krb5\_set\_kdc\_recv\_hook \sphinxhyphen{} Set a KDC post\sphinxhyphen{}receive hook function.} 11882\label{\detokenize{appdev/refs/api/krb5_set_kdc_recv_hook:krb5-set-kdc-recv-hook-set-a-kdc-post-receive-hook-function}}\label{\detokenize{appdev/refs/api/krb5_set_kdc_recv_hook::doc}}\index{krb5\_set\_kdc\_recv\_hook (C function)@\spxentry{krb5\_set\_kdc\_recv\_hook}\spxextra{C function}} 11883 11884\begin{fulllineitems} 11885\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_kdc_recv_hook:c.krb5_set_kdc_recv_hook}}% 11886\pysigstartmultiline 11887\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_kdc\_recv\_hook}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_post_recv_fn:c.krb5_post_recv_fn}]{\sphinxcrossref{\DUrole{n}{krb5\_post\_recv\_fn}}}}\DUrole{w}{ }\DUrole{n}{recv\_hook}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 11888\pysigstopmultiline 11889\end{fulllineitems} 11890 11891\begin{quote}\begin{description} 11892\item[{param}] \leavevmode 11893\sphinxAtStartPar 11894\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} The library context. 11895 11896\sphinxAtStartPar 11897\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{recv\_hook} \sphinxhyphen{} Hook function (or NULL to disable the hook) 11898 11899\sphinxAtStartPar 11900\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Callback data to be passed to \sphinxstyleemphasis{recv\_hook} 11901 11902\end{description}\end{quote} 11903\begin{quote} 11904 11905\sphinxAtStartPar 11906\sphinxstyleemphasis{recv\_hook} will be called after a reply is received from a KDC during a call to a library function such as krb5\_get\_credentials(). The hook function may inspect or override the reply. This hook will not be executed if the pre\sphinxhyphen{}send hook returns a synthetic reply. 11907\end{quote} 11908 11909\begin{sphinxadmonition}{note}{Note:} 11910\sphinxAtStartPar 11911New in 1.15 11912\end{sphinxadmonition} 11913 11914 11915\subsubsection{krb5\_set\_kdc\_send\_hook \sphinxhyphen{} Set a KDC pre\sphinxhyphen{}send hook function.} 11916\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)@\spxentry{krb5\_set\_kdc\_send\_hook}\spxextra{C function}} 11917 11918\begin{fulllineitems} 11919\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_kdc_send_hook:c.krb5_set_kdc_send_hook}}% 11920\pysigstartmultiline 11921\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_kdc\_send\_hook}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pre_send_fn:c.krb5_pre_send_fn}]{\sphinxcrossref{\DUrole{n}{krb5\_pre\_send\_fn}}}}\DUrole{w}{ }\DUrole{n}{send\_hook}, \DUrole{kt}{void}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 11922\pysigstopmultiline 11923\end{fulllineitems} 11924 11925\begin{quote}\begin{description} 11926\item[{param}] \leavevmode 11927\sphinxAtStartPar 11928\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11929 11930\sphinxAtStartPar 11931\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{send\_hook} \sphinxhyphen{} Hook function (or NULL to disable the hook) 11932 11933\sphinxAtStartPar 11934\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Callback data to be passed to \sphinxstyleemphasis{send\_hook} 11935 11936\end{description}\end{quote} 11937\begin{quote} 11938 11939\sphinxAtStartPar 11940\sphinxstyleemphasis{send\_hook} will be called before messages are sent to KDCs by library functions such as krb5\_get\_credentials(). The hook function may inspect, override, or synthesize its own reply to the message. 11941\end{quote} 11942 11943\begin{sphinxadmonition}{note}{Note:} 11944\sphinxAtStartPar 11945New in 1.15 11946\end{sphinxadmonition} 11947 11948 11949\subsubsection{krb5\_set\_real\_time \sphinxhyphen{} Set time offset field in a krb5\_context structure.} 11950\label{\detokenize{appdev/refs/api/krb5_set_real_time:krb5-set-real-time-set-time-offset-field-in-a-krb5-context-structure}}\label{\detokenize{appdev/refs/api/krb5_set_real_time::doc}}\index{krb5\_set\_real\_time (C function)@\spxentry{krb5\_set\_real\_time}\spxextra{C function}} 11951 11952\begin{fulllineitems} 11953\phantomsection\label{\detokenize{appdev/refs/api/krb5_set_real_time:c.krb5_set_real_time}}% 11954\pysigstartmultiline 11955\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_set\_real\_time}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{seconds}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{n}{microseconds}}{}% 11956\pysigstopmultiline 11957\end{fulllineitems} 11958 11959\begin{quote}\begin{description} 11960\item[{param}] \leavevmode 11961\sphinxAtStartPar 11962\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 11963 11964\sphinxAtStartPar 11965\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{seconds} \sphinxhyphen{} Real time, seconds portion 11966 11967\sphinxAtStartPar 11968\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{microseconds} \sphinxhyphen{} Real time, microseconds portion 11969 11970\end{description}\end{quote} 11971\begin{quote}\begin{description} 11972\item[{retval}] \leavevmode\begin{itemize} 11973\item {} 11974\sphinxAtStartPar 119750 Success; otherwise \sphinxhyphen{} Kerberos error codes 11976 11977\end{itemize} 11978 11979\end{description}\end{quote} 11980 11981\sphinxAtStartPar 11982This 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} . 11983 11984 11985\subsubsection{krb5\_string\_to\_cksumtype \sphinxhyphen{} Convert a string to a checksum type.} 11986\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)@\spxentry{krb5\_string\_to\_cksumtype}\spxextra{C function}} 11987 11988\begin{fulllineitems} 11989\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_cksumtype:c.krb5_string_to_cksumtype}}% 11990\pysigstartmultiline 11991\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_string\_to\_cksumtype}}}}{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cksumtypep}}{}% 11992\pysigstopmultiline 11993\end{fulllineitems} 11994 11995\begin{quote}\begin{description} 11996\item[{param}] \leavevmode 11997\sphinxAtStartPar 11998\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to be converted 11999 12000\sphinxAtStartPar 12001\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksumtypep} \sphinxhyphen{} Checksum type to be filled in 12002 12003\end{description}\end{quote} 12004\begin{quote}\begin{description} 12005\item[{retval}] \leavevmode\begin{itemize} 12006\item {} 12007\sphinxAtStartPar 120080 Success; otherwise \sphinxhyphen{} EINVAL 12009 12010\end{itemize} 12011 12012\end{description}\end{quote} 12013 12014 12015\subsubsection{krb5\_string\_to\_deltat \sphinxhyphen{} Convert a string to a delta time value.} 12016\label{\detokenize{appdev/refs/api/krb5_string_to_deltat:krb5-string-to-deltat-convert-a-string-to-a-delta-time-value}}\label{\detokenize{appdev/refs/api/krb5_string_to_deltat::doc}}\index{krb5\_string\_to\_deltat (C function)@\spxentry{krb5\_string\_to\_deltat}\spxextra{C function}} 12017 12018\begin{fulllineitems} 12019\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_deltat:c.krb5_string_to_deltat}}% 12020\pysigstartmultiline 12021\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_string\_to\_deltat}}}}{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, {\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{deltatp}}{}% 12022\pysigstopmultiline 12023\end{fulllineitems} 12024 12025\begin{quote}\begin{description} 12026\item[{param}] \leavevmode 12027\sphinxAtStartPar 12028\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to be converted 12029 12030\sphinxAtStartPar 12031\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{deltatp} \sphinxhyphen{} Delta time to be filled in 12032 12033\end{description}\end{quote} 12034\begin{quote}\begin{description} 12035\item[{retval}] \leavevmode\begin{itemize} 12036\item {} 12037\sphinxAtStartPar 120380 Success; otherwise \sphinxhyphen{} KRB5\_DELTAT\_BADFORMAT 12039 12040\end{itemize} 12041 12042\end{description}\end{quote} 12043 12044 12045\subsubsection{krb5\_string\_to\_enctype \sphinxhyphen{} Convert a string to an encryption type.} 12046\label{\detokenize{appdev/refs/api/krb5_string_to_enctype:krb5-string-to-enctype-convert-a-string-to-an-encryption-type}}\label{\detokenize{appdev/refs/api/krb5_string_to_enctype::doc}}\index{krb5\_string\_to\_enctype (C function)@\spxentry{krb5\_string\_to\_enctype}\spxextra{C function}} 12047 12048\begin{fulllineitems} 12049\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_enctype:c.krb5_string_to_enctype}}% 12050\pysigstartmultiline 12051\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_string\_to\_enctype}}}}{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{enctypep}}{}% 12052\pysigstopmultiline 12053\end{fulllineitems} 12054 12055\begin{quote}\begin{description} 12056\item[{param}] \leavevmode 12057\sphinxAtStartPar 12058\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to convert to an encryption type 12059 12060\sphinxAtStartPar 12061\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{enctypep} \sphinxhyphen{} Encryption type 12062 12063\end{description}\end{quote} 12064\begin{quote}\begin{description} 12065\item[{retval}] \leavevmode\begin{itemize} 12066\item {} 12067\sphinxAtStartPar 120680 Success; otherwise \sphinxhyphen{} EINVAL 12069 12070\end{itemize} 12071 12072\end{description}\end{quote} 12073 12074 12075\subsubsection{krb5\_string\_to\_salttype \sphinxhyphen{} Convert a string to a salt type.} 12076\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)@\spxentry{krb5\_string\_to\_salttype}\spxextra{C function}} 12077 12078\begin{fulllineitems} 12079\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_salttype:c.krb5_string_to_salttype}}% 12080\pysigstartmultiline 12081\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_string\_to\_salttype}}}}{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{salttypep}}{}% 12082\pysigstopmultiline 12083\end{fulllineitems} 12084 12085\begin{quote}\begin{description} 12086\item[{param}] \leavevmode 12087\sphinxAtStartPar 12088\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to convert to an encryption type 12089 12090\sphinxAtStartPar 12091\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{salttypep} \sphinxhyphen{} Salt type to be filled in 12092 12093\end{description}\end{quote} 12094\begin{quote}\begin{description} 12095\item[{retval}] \leavevmode\begin{itemize} 12096\item {} 12097\sphinxAtStartPar 120980 Success; otherwise \sphinxhyphen{} EINVAL 12099 12100\end{itemize} 12101 12102\end{description}\end{quote} 12103 12104 12105\subsubsection{krb5\_string\_to\_timestamp \sphinxhyphen{} Convert a string to a timestamp.} 12106\label{\detokenize{appdev/refs/api/krb5_string_to_timestamp:krb5-string-to-timestamp-convert-a-string-to-a-timestamp}}\label{\detokenize{appdev/refs/api/krb5_string_to_timestamp::doc}}\index{krb5\_string\_to\_timestamp (C function)@\spxentry{krb5\_string\_to\_timestamp}\spxextra{C function}} 12107 12108\begin{fulllineitems} 12109\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_timestamp:c.krb5_string_to_timestamp}}% 12110\pysigstartmultiline 12111\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_string\_to\_timestamp}}}}{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{timestampp}}{}% 12112\pysigstopmultiline 12113\end{fulllineitems} 12114 12115\begin{quote}\begin{description} 12116\item[{param}] \leavevmode 12117\sphinxAtStartPar 12118\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to be converted 12119 12120\sphinxAtStartPar 12121\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{timestampp} \sphinxhyphen{} Pointer to timestamp 12122 12123\end{description}\end{quote} 12124\begin{quote}\begin{description} 12125\item[{retval}] \leavevmode\begin{itemize} 12126\item {} 12127\sphinxAtStartPar 121280 Success; otherwise \sphinxhyphen{} EINVAL 12129 12130\end{itemize} 12131 12132\end{description}\end{quote} 12133 12134 12135\subsubsection{krb5\_timeofday \sphinxhyphen{} Retrieve the current time with context specific time offset adjustment.} 12136\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)@\spxentry{krb5\_timeofday}\spxextra{C function}} 12137 12138\begin{fulllineitems} 12139\phantomsection\label{\detokenize{appdev/refs/api/krb5_timeofday:c.krb5_timeofday}}% 12140\pysigstartmultiline 12141\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_timeofday}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{timeret}}{}% 12142\pysigstopmultiline 12143\end{fulllineitems} 12144 12145\begin{quote}\begin{description} 12146\item[{param}] \leavevmode 12147\sphinxAtStartPar 12148\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12149 12150\sphinxAtStartPar 12151\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{timeret} \sphinxhyphen{} Timestamp to fill in 12152 12153\end{description}\end{quote} 12154\begin{quote}\begin{description} 12155\item[{retval}] \leavevmode\begin{itemize} 12156\item {} 12157\sphinxAtStartPar 121580 Success 12159 12160\end{itemize} 12161 12162\item[{return}] \leavevmode\begin{itemize} 12163\item {} 12164\sphinxAtStartPar 12165Kerberos error codes 12166 12167\end{itemize} 12168 12169\end{description}\end{quote} 12170 12171\sphinxAtStartPar 12172This function retrieves the system time of day with the context specific time offset adjustment. 12173 12174 12175\subsubsection{krb5\_timestamp\_to\_sfstring \sphinxhyphen{} Convert a timestamp to a string, with optional output padding.} 12176\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)@\spxentry{krb5\_timestamp\_to\_sfstring}\spxextra{C function}} 12177 12178\begin{fulllineitems} 12179\phantomsection\label{\detokenize{appdev/refs/api/krb5_timestamp_to_sfstring:c.krb5_timestamp_to_sfstring}}% 12180\pysigstartmultiline 12181\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_timestamp\_to\_sfstring}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{timestamp}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pad}}{}% 12182\pysigstopmultiline 12183\end{fulllineitems} 12184 12185\begin{quote}\begin{description} 12186\item[{param}] \leavevmode 12187\sphinxAtStartPar 12188\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{timestamp} \sphinxhyphen{} Timestamp to convert 12189 12190\sphinxAtStartPar 12191\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to hold the converted timestamp 12192 12193\sphinxAtStartPar 12194\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Length of buffer 12195 12196\sphinxAtStartPar 12197\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pad} \sphinxhyphen{} Optional value to pad \sphinxstyleemphasis{buffer} if converted timestamp does not fill it 12198 12199\end{description}\end{quote} 12200\begin{quote}\begin{description} 12201\item[{retval}] \leavevmode\begin{itemize} 12202\item {} 12203\sphinxAtStartPar 122040 Success; otherwise \sphinxhyphen{} Kerberos error codes 12205 12206\end{itemize} 12207 12208\end{description}\end{quote} 12209 12210\sphinxAtStartPar 12211If \sphinxstyleemphasis{pad} is not NULL, \sphinxstyleemphasis{buffer} is padded out to \sphinxstyleemphasis{buflen} \sphinxhyphen{} 1 characters with the value of * \sphinxstyleemphasis{pad} . 12212 12213 12214\subsubsection{krb5\_timestamp\_to\_string \sphinxhyphen{} Convert a timestamp to a string.} 12215\label{\detokenize{appdev/refs/api/krb5_timestamp_to_string:krb5-timestamp-to-string-convert-a-timestamp-to-a-string}}\label{\detokenize{appdev/refs/api/krb5_timestamp_to_string::doc}}\index{krb5\_timestamp\_to\_string (C function)@\spxentry{krb5\_timestamp\_to\_string}\spxextra{C function}} 12216 12217\begin{fulllineitems} 12218\phantomsection\label{\detokenize{appdev/refs/api/krb5_timestamp_to_string:c.krb5_timestamp_to_string}}% 12219\pysigstartmultiline 12220\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_timestamp\_to\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\DUrole{n}{timestamp}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}}{}% 12221\pysigstopmultiline 12222\end{fulllineitems} 12223 12224\begin{quote}\begin{description} 12225\item[{param}] \leavevmode 12226\sphinxAtStartPar 12227\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{timestamp} \sphinxhyphen{} Timestamp to convert 12228 12229\sphinxAtStartPar 12230\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to hold converted timestamp 12231 12232\sphinxAtStartPar 12233\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Storage available in \sphinxstyleemphasis{buffer} 12234 12235\end{description}\end{quote} 12236\begin{quote}\begin{description} 12237\item[{retval}] \leavevmode\begin{itemize} 12238\item {} 12239\sphinxAtStartPar 122400 Success; otherwise \sphinxhyphen{} Kerberos error codes 12241 12242\end{itemize} 12243 12244\end{description}\end{quote} 12245 12246\sphinxAtStartPar 12247The string is returned in the locale’s appropriate date and time representation. 12248 12249 12250\subsubsection{krb5\_tkt\_creds\_free \sphinxhyphen{} Free a TGS request context.} 12251\label{\detokenize{appdev/refs/api/krb5_tkt_creds_free:krb5-tkt-creds-free-free-a-tgs-request-context}}\label{\detokenize{appdev/refs/api/krb5_tkt_creds_free::doc}}\index{krb5\_tkt\_creds\_free (C function)@\spxentry{krb5\_tkt\_creds\_free}\spxextra{C function}} 12252 12253\begin{fulllineitems} 12254\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_free:c.krb5_tkt_creds_free}}% 12255\pysigstartmultiline 12256\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_free}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}}{}% 12257\pysigstopmultiline 12258\end{fulllineitems} 12259 12260\begin{quote}\begin{description} 12261\item[{param}] \leavevmode 12262\sphinxAtStartPar 12263\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12264 12265\sphinxAtStartPar 12266\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} TGS request context 12267 12268\end{description}\end{quote} 12269 12270\begin{sphinxadmonition}{note}{Note:} 12271\sphinxAtStartPar 12272New in 1.9 12273\end{sphinxadmonition} 12274 12275 12276\subsubsection{krb5\_tkt\_creds\_get \sphinxhyphen{} Synchronously obtain credentials using a TGS request context.} 12277\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)@\spxentry{krb5\_tkt\_creds\_get}\spxextra{C function}} 12278 12279\begin{fulllineitems} 12280\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get:c.krb5_tkt_creds_get}}% 12281\pysigstartmultiline 12282\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_get}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}}{}% 12283\pysigstopmultiline 12284\end{fulllineitems} 12285 12286\begin{quote}\begin{description} 12287\item[{param}] \leavevmode 12288\sphinxAtStartPar 12289\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12290 12291\sphinxAtStartPar 12292\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} TGS request context 12293 12294\end{description}\end{quote} 12295\begin{quote}\begin{description} 12296\item[{retval}] \leavevmode\begin{itemize} 12297\item {} 12298\sphinxAtStartPar 122990 Success; otherwise \sphinxhyphen{} Kerberos error codes 12300 12301\end{itemize} 12302 12303\end{description}\end{quote} 12304 12305\sphinxAtStartPar 12306This function synchronously obtains credentials using a context created by krb5\_tkt\_creds\_init(). On successful return, the credentials can be retrieved with krb5\_tkt\_creds\_get\_creds(). 12307 12308\begin{sphinxadmonition}{note}{Note:} 12309\sphinxAtStartPar 12310New in 1.9 12311\end{sphinxadmonition} 12312 12313 12314\subsubsection{krb5\_tkt\_creds\_get\_creds \sphinxhyphen{} Retrieve acquired credentials from a TGS request context.} 12315\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)@\spxentry{krb5\_tkt\_creds\_get\_creds}\spxextra{C function}} 12316 12317\begin{fulllineitems} 12318\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_creds:c.krb5_tkt_creds_get_creds}}% 12319\pysigstartmultiline 12320\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_get\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}}{}% 12321\pysigstopmultiline 12322\end{fulllineitems} 12323 12324\begin{quote}\begin{description} 12325\item[{param}] \leavevmode 12326\sphinxAtStartPar 12327\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12328 12329\sphinxAtStartPar 12330\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} TGS request context 12331 12332\sphinxAtStartPar 12333\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Acquired credentials 12334 12335\end{description}\end{quote} 12336\begin{quote}\begin{description} 12337\item[{retval}] \leavevmode\begin{itemize} 12338\item {} 12339\sphinxAtStartPar 123400 Success; otherwise \sphinxhyphen{} Kerberos error codes 12341 12342\end{itemize} 12343 12344\end{description}\end{quote} 12345 12346\sphinxAtStartPar 12347This function copies the acquired initial credentials from \sphinxstyleemphasis{ctx} into \sphinxstyleemphasis{creds} , after the successful completion of krb5\_tkt\_creds\_get() or krb5\_tkt\_creds\_step(). Use krb5\_free\_cred\_contents() to free \sphinxstyleemphasis{creds} when it is no longer needed. 12348 12349\begin{sphinxadmonition}{note}{Note:} 12350\sphinxAtStartPar 12351New in 1.9 12352\end{sphinxadmonition} 12353 12354 12355\subsubsection{krb5\_tkt\_creds\_get\_times \sphinxhyphen{} Retrieve ticket times from a TGS request context.} 12356\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)@\spxentry{krb5\_tkt\_creds\_get\_times}\spxextra{C function}} 12357 12358\begin{fulllineitems} 12359\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_get_times:c.krb5_tkt_creds_get_times}}% 12360\pysigstartmultiline 12361\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_get\_times}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{times}}{}% 12362\pysigstopmultiline 12363\end{fulllineitems} 12364 12365\begin{quote}\begin{description} 12366\item[{param}] \leavevmode 12367\sphinxAtStartPar 12368\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12369 12370\sphinxAtStartPar 12371\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} TGS request context 12372 12373\sphinxAtStartPar 12374\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{times} \sphinxhyphen{} Ticket times for acquired credentials 12375 12376\end{description}\end{quote} 12377\begin{quote}\begin{description} 12378\item[{retval}] \leavevmode\begin{itemize} 12379\item {} 12380\sphinxAtStartPar 123810 Success; otherwise \sphinxhyphen{} Kerberos error codes 12382 12383\end{itemize} 12384 12385\end{description}\end{quote} 12386 12387\sphinxAtStartPar 12388The TGS request context must have completed obtaining credentials via either krb5\_tkt\_creds\_get() or krb5\_tkt\_creds\_step(). 12389 12390\begin{sphinxadmonition}{note}{Note:} 12391\sphinxAtStartPar 12392New in 1.9 12393\end{sphinxadmonition} 12394 12395 12396\subsubsection{krb5\_tkt\_creds\_init \sphinxhyphen{} Create a context to get credentials from a KDC’s Ticket Granting Service.} 12397\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)@\spxentry{krb5\_tkt\_creds\_init}\spxextra{C function}} 12398 12399\begin{fulllineitems} 12400\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_init:c.krb5_tkt_creds_init}}% 12401\pysigstartmultiline 12402\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_init}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_creds\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ctx}}{}% 12403\pysigstopmultiline 12404\end{fulllineitems} 12405 12406\begin{quote}\begin{description} 12407\item[{param}] \leavevmode 12408\sphinxAtStartPar 12409\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12410 12411\sphinxAtStartPar 12412\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache handle 12413 12414\sphinxAtStartPar 12415\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Input credentials 12416 12417\sphinxAtStartPar 12418\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} \sphinxhyphen{} Options (see KRB5\_GC macros) 12419 12420\sphinxAtStartPar 12421\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} New TGS request context 12422 12423\end{description}\end{quote} 12424\begin{quote}\begin{description} 12425\item[{retval}] \leavevmode\begin{itemize} 12426\item {} 12427\sphinxAtStartPar 124280 Success; otherwise \sphinxhyphen{} Kerberos error codes 12429 12430\end{itemize} 12431 12432\end{description}\end{quote} 12433 12434\sphinxAtStartPar 12435This function prepares to obtain credentials matching \sphinxstyleemphasis{creds} , either by retrieving them from \sphinxstyleemphasis{ccache} or by making requests to ticket\sphinxhyphen{}granting services beginning with a ticket\sphinxhyphen{}granting ticket for the client principal’s realm. 12436 12437\sphinxAtStartPar 12438The resulting TGS acquisition context can be used asynchronously with krb5\_tkt\_creds\_step() or synchronously with krb5\_tkt\_creds\_get(). See also krb5\_get\_credentials() for synchronous use. 12439 12440\sphinxAtStartPar 12441Use krb5\_tkt\_creds\_free() to free \sphinxstyleemphasis{ctx} when it is no longer needed. 12442 12443\begin{sphinxadmonition}{note}{Note:} 12444\sphinxAtStartPar 12445New in 1.9 12446\end{sphinxadmonition} 12447 12448 12449\subsubsection{krb5\_tkt\_creds\_step \sphinxhyphen{} Get the next KDC request in a TGS exchange.} 12450\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)@\spxentry{krb5\_tkt\_creds\_step}\spxextra{C function}} 12451 12452\begin{fulllineitems} 12453\phantomsection\label{\detokenize{appdev/refs/api/krb5_tkt_creds_step:c.krb5_tkt_creds_step}}% 12454\pysigstartmultiline 12455\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_step}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_creds\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{out}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{flags}}{}% 12456\pysigstopmultiline 12457\end{fulllineitems} 12458 12459\begin{quote}\begin{description} 12460\item[{param}] \leavevmode 12461\sphinxAtStartPar 12462\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12463 12464\sphinxAtStartPar 12465\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} TGS request context 12466 12467\sphinxAtStartPar 12468\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in} \sphinxhyphen{} KDC response (empty on the first call) 12469 12470\sphinxAtStartPar 12471\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Next KDC request 12472 12473\sphinxAtStartPar 12474\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{realm} \sphinxhyphen{} Realm for next KDC request 12475 12476\sphinxAtStartPar 12477\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Output flags 12478 12479\end{description}\end{quote} 12480\begin{quote}\begin{description} 12481\item[{retval}] \leavevmode\begin{itemize} 12482\item {} 12483\sphinxAtStartPar 124840 Success; otherwise \sphinxhyphen{} Kerberos error codes 12485 12486\end{itemize} 12487 12488\end{description}\end{quote} 12489 12490\sphinxAtStartPar 12491This 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. 12492 12493\sphinxAtStartPar 12494If more requests are needed, \sphinxstyleemphasis{flags} will be set to \#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 \#KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE and \sphinxstyleemphasis{out} will be empty. 12495 12496\sphinxAtStartPar 12497If 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. 12498 12499\begin{sphinxadmonition}{note}{Note:} 12500\sphinxAtStartPar 12501New in 1.9 12502\end{sphinxadmonition} 12503 12504 12505\subsubsection{krb5\_unmarshal\_credentials \sphinxhyphen{} Deserialize a krb5\_creds object.} 12506\label{\detokenize{appdev/refs/api/krb5_unmarshal_credentials:krb5-unmarshal-credentials-deserialize-a-krb5-creds-object}}\label{\detokenize{appdev/refs/api/krb5_unmarshal_credentials::doc}}\index{krb5\_unmarshal\_credentials (C function)@\spxentry{krb5\_unmarshal\_credentials}\spxextra{C function}} 12507 12508\begin{fulllineitems} 12509\phantomsection\label{\detokenize{appdev/refs/api/krb5_unmarshal_credentials:c.krb5_unmarshal_credentials}}% 12510\pysigstartmultiline 12511\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_unmarshal\_credentials}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{creds\_out}}{}% 12512\pysigstopmultiline 12513\end{fulllineitems} 12514 12515\begin{quote}\begin{description} 12516\item[{param}] \leavevmode 12517\sphinxAtStartPar 12518\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12519 12520\sphinxAtStartPar 12521\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} The serialized credentials 12522 12523\sphinxAtStartPar 12524\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{creds\_out} \sphinxhyphen{} The resulting creds object 12525 12526\end{description}\end{quote} 12527\begin{quote}\begin{description} 12528\item[{retval}] \leavevmode\begin{itemize} 12529\item {} 12530\sphinxAtStartPar 125310 Success; otherwise \sphinxhyphen{} Kerberos error codes 12532 12533\end{itemize} 12534 12535\end{description}\end{quote} 12536 12537\sphinxAtStartPar 12538Deserialize \sphinxstyleemphasis{data} to credentials in the format used by the FILE ccache format (vesion 4) and KCM ccache protocol. 12539 12540\sphinxAtStartPar 12541Use krb5\_free\_creds() to free \sphinxstyleemphasis{creds\_out} when it is no longer needed. 12542 12543 12544\subsubsection{krb5\_verify\_init\_creds \sphinxhyphen{} Verify initial credentials against a keytab.} 12545\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)@\spxentry{krb5\_verify\_init\_creds}\spxextra{C function}} 12546 12547\begin{fulllineitems} 12548\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_init_creds:c.krb5_verify_init_creds}}% 12549\pysigstartmultiline 12550\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_verify\_init\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_verify\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{options}}{}% 12551\pysigstopmultiline 12552\end{fulllineitems} 12553 12554\begin{quote}\begin{description} 12555\item[{param}] \leavevmode 12556\sphinxAtStartPar 12557\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12558 12559\sphinxAtStartPar 12560\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{creds} \sphinxhyphen{} Initial credentials to be verified 12561 12562\sphinxAtStartPar 12563\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Server principal (or NULL) 12564 12565\sphinxAtStartPar 12566\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table (NULL to use default keytab) 12567 12568\sphinxAtStartPar 12569\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache for fetched creds (or NULL) 12570 12571\sphinxAtStartPar 12572\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{options} \sphinxhyphen{} Verification options (NULL for default options) 12573 12574\end{description}\end{quote} 12575\begin{quote}\begin{description} 12576\item[{retval}] \leavevmode\begin{itemize} 12577\item {} 12578\sphinxAtStartPar 125790 Success; otherwise \sphinxhyphen{} Kerberos error codes 12580 12581\end{itemize} 12582 12583\end{description}\end{quote} 12584 12585\sphinxAtStartPar 12586This 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\sphinxhyphen{}kvno key entry for that principal name is used to verify the credentials; otherwise, all unique”host”service principals in the keytab are tried. 12587 12588\sphinxAtStartPar 12589If 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 krb5\_verify\_init\_creds\_opt\_init() and krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail(). 12590 12591\sphinxAtStartPar 12592If \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. 12593 12594 12595\subsubsection{krb5\_verify\_init\_creds\_opt\_init \sphinxhyphen{} Initialize a credential verification options structure.} 12596\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)@\spxentry{krb5\_verify\_init\_creds\_opt\_init}\spxextra{C function}} 12597 12598\begin{fulllineitems} 12599\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_init:c.krb5_verify_init_creds_opt_init}}% 12600\pysigstartmultiline 12601\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_verify\_init\_creds\_opt\_init}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_verify\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k5\_vic\_options}}{}% 12602\pysigstopmultiline 12603\end{fulllineitems} 12604 12605\begin{quote}\begin{description} 12606\item[{param}] \leavevmode 12607\sphinxAtStartPar 12608\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_vic\_options} \sphinxhyphen{} Verification options structure 12609 12610\end{description}\end{quote} 12611 12612 12613\subsubsection{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail \sphinxhyphen{} Set whether credential verification is required.} 12614\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}}\label{\detokenize{appdev/refs/api/krb5_verify_init_creds_opt_set_ap_req_nofail::doc}}\index{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail (C function)@\spxentry{krb5\_verify\_init\_creds\_opt\_set\_ap\_req\_nofail}\spxextra{C function}} 12615 12616\begin{fulllineitems} 12617\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}}% 12618\pysigstartmultiline 12619\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{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{\DUrole{n}{krb5\_verify\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k5\_vic\_options}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{ap\_req\_nofail}}{}% 12620\pysigstopmultiline 12621\end{fulllineitems} 12622 12623\begin{quote}\begin{description} 12624\item[{param}] \leavevmode 12625\sphinxAtStartPar 12626\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k5\_vic\_options} \sphinxhyphen{} Verification options structure 12627 12628\sphinxAtStartPar 12629\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_nofail} \sphinxhyphen{} Whether to require successful verification 12630 12631\end{description}\end{quote} 12632 12633\sphinxAtStartPar 12634This function determines how 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 krb5\_verify\_init\_creds() will return successfully. If \sphinxstyleemphasis{ap\_req\_nofail} is \sphinxstylestrong{TRUE} , krb5\_verify\_init\_creds() will not return successfully unless verification can be performed. 12635 12636\sphinxAtStartPar 12637If this function is not used, the behavior of krb5\_verify\_init\_creds() is determined through configuration. 12638 12639 12640\subsubsection{krb5\_vprepend\_error\_message \sphinxhyphen{} Add a prefix to the message for an error code using a va\_list.} 12641\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}}\label{\detokenize{appdev/refs/api/krb5_vprepend_error_message::doc}}\index{krb5\_vprepend\_error\_message (C function)@\spxentry{krb5\_vprepend\_error\_message}\spxextra{C function}} 12642 12643\begin{fulllineitems} 12644\phantomsection\label{\detokenize{appdev/refs/api/krb5_vprepend_error_message:c.krb5_vprepend_error_message}}% 12645\pysigstartmultiline 12646\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_vprepend\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fmt}, \DUrole{n}{va\_list}\DUrole{w}{ }\DUrole{n}{args}}{}% 12647\pysigstopmultiline 12648\end{fulllineitems} 12649 12650\begin{quote}\begin{description} 12651\item[{param}] \leavevmode 12652\sphinxAtStartPar 12653\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 12654 12655\sphinxAtStartPar 12656\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 12657 12658\sphinxAtStartPar 12659\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} \sphinxhyphen{} Format string for error message prefix 12660 12661\sphinxAtStartPar 12662\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{args} \sphinxhyphen{} List of vprintf(3) style arguments 12663 12664\end{description}\end{quote} 12665 12666\sphinxAtStartPar 12667This function is similar to krb5\_prepend\_error\_message(), but uses a va\_list instead of variadic arguments. 12668 12669 12670\subsubsection{krb5\_vset\_error\_message \sphinxhyphen{} Set an extended error message for an error code using a va\_list.} 12671\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)@\spxentry{krb5\_vset\_error\_message}\spxextra{C function}} 12672 12673\begin{fulllineitems} 12674\phantomsection\label{\detokenize{appdev/refs/api/krb5_vset_error_message:c.krb5_vset_error_message}}% 12675\pysigstartmultiline 12676\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_vset\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fmt}, \DUrole{n}{va\_list}\DUrole{w}{ }\DUrole{n}{args}}{}% 12677\pysigstopmultiline 12678\end{fulllineitems} 12679 12680\begin{quote}\begin{description} 12681\item[{param}] \leavevmode 12682\sphinxAtStartPar 12683\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 12684 12685\sphinxAtStartPar 12686\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 12687 12688\sphinxAtStartPar 12689\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} \sphinxhyphen{} Error string for the error code 12690 12691\sphinxAtStartPar 12692\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{args} \sphinxhyphen{} List of vprintf(3) style arguments 12693 12694\end{description}\end{quote} 12695 12696 12697\subsubsection{krb5\_vwrap\_error\_message \sphinxhyphen{} Add a prefix to a different error code’s message using a va\_list.} 12698\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)@\spxentry{krb5\_vwrap\_error\_message}\spxextra{C function}} 12699 12700\begin{fulllineitems} 12701\phantomsection\label{\detokenize{appdev/refs/api/krb5_vwrap_error_message:c.krb5_vwrap_error_message}}% 12702\pysigstartmultiline 12703\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_vwrap\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{old\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fmt}, \DUrole{n}{va\_list}\DUrole{w}{ }\DUrole{n}{args}}{}% 12704\pysigstopmultiline 12705\end{fulllineitems} 12706 12707\begin{quote}\begin{description} 12708\item[{param}] \leavevmode 12709\sphinxAtStartPar 12710\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 12711 12712\sphinxAtStartPar 12713\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{old\_code} \sphinxhyphen{} Previous error code 12714 12715\sphinxAtStartPar 12716\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 12717 12718\sphinxAtStartPar 12719\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} \sphinxhyphen{} Format string for error message prefix 12720 12721\sphinxAtStartPar 12722\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{args} \sphinxhyphen{} List of vprintf(3) style arguments 12723 12724\end{description}\end{quote} 12725 12726\sphinxAtStartPar 12727This function is similar to krb5\_wrap\_error\_message(), but uses a va\_list instead of variadic arguments. 12728 12729 12730\subsubsection{krb5\_wrap\_error\_message \sphinxhyphen{} Add a prefix to a different error code’s message.} 12731\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)@\spxentry{krb5\_wrap\_error\_message}\spxextra{C function}} 12732 12733\begin{fulllineitems} 12734\phantomsection\label{\detokenize{appdev/refs/api/krb5_wrap_error_message:c.krb5_wrap_error_message}}% 12735\pysigstartmultiline 12736\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_wrap\_error\_message}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{ctx}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{old\_code}, {\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\DUrole{n}{code}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{fmt}, \DUrole{p}{...}}{}% 12737\pysigstopmultiline 12738\end{fulllineitems} 12739 12740\begin{quote}\begin{description} 12741\item[{param}] \leavevmode 12742\sphinxAtStartPar 12743\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctx} \sphinxhyphen{} Library context 12744 12745\sphinxAtStartPar 12746\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{old\_code} \sphinxhyphen{} Previous error code 12747 12748\sphinxAtStartPar 12749\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} Error code 12750 12751\sphinxAtStartPar 12752\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fmt} \sphinxhyphen{} Format string for error message prefix 12753 12754\end{description}\end{quote} 12755 12756\sphinxAtStartPar 12757Format 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} . 12758 12759 12760\subsection{Public interfaces that should not be called directly} 12761\label{\detokenize{appdev/refs/api/index:public-interfaces-that-should-not-be-called-directly}} 12762 12763\subsubsection{krb5\_c\_block\_size \sphinxhyphen{} Return cipher block size.} 12764\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)@\spxentry{krb5\_c\_block\_size}\spxextra{C function}} 12765 12766\begin{fulllineitems} 12767\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_block_size:c.krb5_c_block_size}}% 12768\pysigstartmultiline 12769\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_block\_size}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{blocksize}}{}% 12770\pysigstopmultiline 12771\end{fulllineitems} 12772 12773\begin{quote}\begin{description} 12774\item[{param}] \leavevmode 12775\sphinxAtStartPar 12776\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12777 12778\sphinxAtStartPar 12779\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 12780 12781\sphinxAtStartPar 12782\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{blocksize} \sphinxhyphen{} Block size for \sphinxstyleemphasis{enctype} 12783 12784\end{description}\end{quote} 12785\begin{quote}\begin{description} 12786\item[{retval}] \leavevmode\begin{itemize} 12787\item {} 12788\sphinxAtStartPar 127890 Success; otherwise \sphinxhyphen{} Kerberos error codes 12790 12791\end{itemize} 12792 12793\end{description}\end{quote} 12794 12795 12796\subsubsection{krb5\_c\_checksum\_length \sphinxhyphen{} Return the length of checksums for a checksum type.} 12797\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)@\spxentry{krb5\_c\_checksum\_length}\spxextra{C function}} 12798 12799\begin{fulllineitems} 12800\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_checksum_length:c.krb5_c_checksum_length}}% 12801\pysigstartmultiline 12802\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_checksum\_length}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{length}}{}% 12803\pysigstopmultiline 12804\end{fulllineitems} 12805 12806\begin{quote}\begin{description} 12807\item[{param}] \leavevmode 12808\sphinxAtStartPar 12809\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12810 12811\sphinxAtStartPar 12812\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type 12813 12814\sphinxAtStartPar 12815\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{length} \sphinxhyphen{} Checksum length 12816 12817\end{description}\end{quote} 12818\begin{quote}\begin{description} 12819\item[{retval}] \leavevmode\begin{itemize} 12820\item {} 12821\sphinxAtStartPar 128220 Success; otherwise \sphinxhyphen{} Kerberos error codes 12823 12824\end{itemize} 12825 12826\end{description}\end{quote} 12827 12828 12829\subsubsection{krb5\_c\_crypto\_length \sphinxhyphen{} Return a length of a message field specific to the encryption type.} 12830\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)@\spxentry{krb5\_c\_crypto\_length}\spxextra{C function}} 12831 12832\begin{fulllineitems} 12833\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_crypto_length:c.krb5_c_crypto_length}}% 12834\pysigstartmultiline 12835\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_crypto\_length}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_cryptotype:c.krb5_cryptotype}]{\sphinxcrossref{\DUrole{n}{krb5\_cryptotype}}}}\DUrole{w}{ }\DUrole{n}{type}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{size}}{}% 12836\pysigstopmultiline 12837\end{fulllineitems} 12838 12839\begin{quote}\begin{description} 12840\item[{param}] \leavevmode 12841\sphinxAtStartPar 12842\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12843 12844\sphinxAtStartPar 12845\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 12846 12847\sphinxAtStartPar 12848\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Type field (See KRB5\_CRYPTO\_TYPE macros) 12849 12850\sphinxAtStartPar 12851\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{size} \sphinxhyphen{} Length of the \sphinxstyleemphasis{type} specific to \sphinxstyleemphasis{enctype} 12852 12853\end{description}\end{quote} 12854\begin{quote}\begin{description} 12855\item[{retval}] \leavevmode\begin{itemize} 12856\item {} 12857\sphinxAtStartPar 128580 Success; otherwise \sphinxhyphen{} Kerberos error codes 12859 12860\end{itemize} 12861 12862\end{description}\end{quote} 12863 12864 12865\subsubsection{krb5\_c\_crypto\_length\_iov \sphinxhyphen{} Fill in lengths for header, trailer and padding in a IOV array.} 12866\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)@\spxentry{krb5\_c\_crypto\_length\_iov}\spxextra{C function}} 12867 12868\begin{fulllineitems} 12869\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_crypto_length_iov:c.krb5_c_crypto_length_iov}}% 12870\pysigstartmultiline 12871\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_crypto\_length\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 12872\pysigstopmultiline 12873\end{fulllineitems} 12874 12875\begin{quote}\begin{description} 12876\item[{param}] \leavevmode 12877\sphinxAtStartPar 12878\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12879 12880\sphinxAtStartPar 12881\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 12882 12883\sphinxAtStartPar 12884\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array 12885 12886\sphinxAtStartPar 12887\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 12888 12889\end{description}\end{quote} 12890\begin{quote}\begin{description} 12891\item[{retval}] \leavevmode\begin{itemize} 12892\item {} 12893\sphinxAtStartPar 128940 Success; otherwise \sphinxhyphen{} Kerberos error codes 12895 12896\end{itemize} 12897 12898\end{description}\end{quote} 12899 12900\sphinxAtStartPar 12901Padding 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 \#KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY buffers, but before actually allocating header, trailer and padding. 12902 12903 12904\subsubsection{krb5\_c\_decrypt \sphinxhyphen{} Decrypt data using a key (operates on keyblock).} 12905\label{\detokenize{appdev/refs/api/krb5_c_decrypt:krb5-c-decrypt-decrypt-data-using-a-key-operates-on-keyblock}}\label{\detokenize{appdev/refs/api/krb5_c_decrypt::doc}}\index{krb5\_c\_decrypt (C function)@\spxentry{krb5\_c\_decrypt}\spxextra{C function}} 12906 12907\begin{fulllineitems} 12908\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_decrypt:c.krb5_c_decrypt}}% 12909\pysigstartmultiline 12910\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_decrypt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 12911\pysigstopmultiline 12912\end{fulllineitems} 12913 12914\begin{quote}\begin{description} 12915\item[{param}] \leavevmode 12916\sphinxAtStartPar 12917\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12918 12919\sphinxAtStartPar 12920\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key 12921 12922\sphinxAtStartPar 12923\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 12924 12925\sphinxAtStartPar 12926\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 12927 12928\sphinxAtStartPar 12929\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Encrypted data 12930 12931\sphinxAtStartPar 12932\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Decrypted data 12933 12934\end{description}\end{quote} 12935\begin{quote}\begin{description} 12936\item[{retval}] \leavevmode\begin{itemize} 12937\item {} 12938\sphinxAtStartPar 129390 Success; otherwise \sphinxhyphen{} Kerberos error codes 12940 12941\end{itemize} 12942 12943\end{description}\end{quote} 12944 12945\sphinxAtStartPar 12946This 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\sphinxhyphen{}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. 12947 12948\begin{sphinxadmonition}{note}{Note:} 12949\sphinxAtStartPar 12950The 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 krb5\_c\_decrypt() trim \sphinxstyleemphasis{output\sphinxhyphen{}\textgreater{}length} . For some enctypes, the resulting \sphinxstyleemphasis{output\sphinxhyphen{}\textgreater{}length} may include padding bytes. 12951\end{sphinxadmonition} 12952 12953 12954\subsubsection{krb5\_c\_decrypt\_iov \sphinxhyphen{} Decrypt data in place supporting AEAD (operates on keyblock).} 12955\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)@\spxentry{krb5\_c\_decrypt\_iov}\spxextra{C function}} 12956 12957\begin{fulllineitems} 12958\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_decrypt_iov:c.krb5_c_decrypt_iov}}% 12959\pysigstartmultiline 12960\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_decrypt\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 12961\pysigstopmultiline 12962\end{fulllineitems} 12963 12964\begin{quote}\begin{description} 12965\item[{param}] \leavevmode 12966\sphinxAtStartPar 12967\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 12968 12969\sphinxAtStartPar 12970\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Encryption key 12971 12972\sphinxAtStartPar 12973\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 12974 12975\sphinxAtStartPar 12976\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 12977 12978\sphinxAtStartPar 12979\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array. Modified in\sphinxhyphen{}place. 12980 12981\sphinxAtStartPar 12982\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 12983 12984\end{description}\end{quote} 12985\begin{quote}\begin{description} 12986\item[{retval}] \leavevmode\begin{itemize} 12987\item {} 12988\sphinxAtStartPar 129890 Success; otherwise \sphinxhyphen{} Kerberos error codes 12990 12991\end{itemize} 12992 12993\end{description}\end{quote} 12994 12995\sphinxAtStartPar 12996This function decrypts the data block \sphinxstyleemphasis{data} and stores the output in\sphinxhyphen{}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\sphinxhyphen{}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. 12997 12998 12999\sphinxstrong{See also:} 13000\nopagebreak 13001 13002 13003\sphinxAtStartPar 13004krb5\_c\_decrypt\_iov() 13005 13006 13007 13008\begin{sphinxadmonition}{note}{Note:} 13009\sphinxAtStartPar 13010On return from a krb5\_c\_decrypt\_iov() call, the \sphinxstyleemphasis{data\sphinxhyphen{}\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. 13011\end{sphinxadmonition} 13012 13013 13014\subsubsection{krb5\_c\_derive\_prfplus \sphinxhyphen{} Derive a key using some input data (via RFC 6113 PRF+).} 13015\label{\detokenize{appdev/refs/api/krb5_c_derive_prfplus:krb5-c-derive-prfplus-derive-a-key-using-some-input-data-via-rfc-6113-prf}}\label{\detokenize{appdev/refs/api/krb5_c_derive_prfplus::doc}}\index{krb5\_c\_derive\_prfplus (C function)@\spxentry{krb5\_c\_derive\_prfplus}\spxextra{C function}} 13016 13017\begin{fulllineitems} 13018\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_derive_prfplus:c.krb5_c_derive_prfplus}}% 13019\pysigstartmultiline 13020\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_derive\_prfplus}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out}}{}% 13021\pysigstopmultiline 13022\end{fulllineitems} 13023 13024\begin{quote}\begin{description} 13025\item[{param}] \leavevmode 13026\sphinxAtStartPar 13027\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13028 13029\sphinxAtStartPar 13030\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k} \sphinxhyphen{} KDC contribution key 13031 13032\sphinxAtStartPar 13033\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Input string 13034 13035\sphinxAtStartPar 13036\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Output key enctype (or \sphinxstylestrong{ENCTYPE\_NULL} ) 13037 13038\sphinxAtStartPar 13039\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Derived keyblock 13040 13041\end{description}\end{quote} 13042 13043\sphinxAtStartPar 13044This 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. 13045 13046 13047\subsubsection{krb5\_c\_encrypt \sphinxhyphen{} Encrypt data using a key (operates on keyblock).} 13048\label{\detokenize{appdev/refs/api/krb5_c_encrypt:krb5-c-encrypt-encrypt-data-using-a-key-operates-on-keyblock}}\label{\detokenize{appdev/refs/api/krb5_c_encrypt::doc}}\index{krb5\_c\_encrypt (C function)@\spxentry{krb5\_c\_encrypt}\spxextra{C function}} 13049 13050\begin{fulllineitems} 13051\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_encrypt:c.krb5_c_encrypt}}% 13052\pysigstartmultiline 13053\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_encrypt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 13054\pysigstopmultiline 13055\end{fulllineitems} 13056 13057\begin{quote}\begin{description} 13058\item[{param}] \leavevmode 13059\sphinxAtStartPar 13060\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13061 13062\sphinxAtStartPar 13063\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key 13064 13065\sphinxAtStartPar 13066\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 13067 13068\sphinxAtStartPar 13069\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 13070 13071\sphinxAtStartPar 13072\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Data to be encrypted 13073 13074\sphinxAtStartPar 13075\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Encrypted data 13076 13077\end{description}\end{quote} 13078\begin{quote}\begin{description} 13079\item[{retval}] \leavevmode\begin{itemize} 13080\item {} 13081\sphinxAtStartPar 130820 Success; otherwise \sphinxhyphen{} Kerberos error codes 13083 13084\end{itemize} 13085 13086\end{description}\end{quote} 13087 13088\sphinxAtStartPar 13089This function encrypts the data block \sphinxstyleemphasis{input} and stores the outputinto \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\sphinxhyphen{}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. 13090 13091\begin{sphinxadmonition}{note}{Note:} 13092\sphinxAtStartPar 13093The caller must initialize \sphinxstyleemphasis{output} and allocate at least enough space for the result (using krb5\_c\_encrypt\_length() to determine the amount of space needed). \sphinxstyleemphasis{output\sphinxhyphen{}\textgreater{}length} will be set to the actual length of the ciphertext. 13094\end{sphinxadmonition} 13095 13096 13097\subsubsection{krb5\_c\_encrypt\_iov \sphinxhyphen{} Encrypt data in place supporting AEAD (operates on keyblock).} 13098\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)@\spxentry{krb5\_c\_encrypt\_iov}\spxextra{C function}} 13099 13100\begin{fulllineitems} 13101\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_encrypt_iov:c.krb5_c_encrypt_iov}}% 13102\pysigstartmultiline 13103\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_encrypt\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 13104\pysigstopmultiline 13105\end{fulllineitems} 13106 13107\begin{quote}\begin{description} 13108\item[{param}] \leavevmode 13109\sphinxAtStartPar 13110\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13111 13112\sphinxAtStartPar 13113\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Encryption key 13114 13115\sphinxAtStartPar 13116\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 13117 13118\sphinxAtStartPar 13119\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 13120 13121\sphinxAtStartPar 13122\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array. Modified in\sphinxhyphen{}place. 13123 13124\sphinxAtStartPar 13125\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 13126 13127\end{description}\end{quote} 13128\begin{quote}\begin{description} 13129\item[{retval}] \leavevmode\begin{itemize} 13130\item {} 13131\sphinxAtStartPar 131320 Success; otherwise \sphinxhyphen{} Kerberos error codes 13133 13134\end{itemize} 13135 13136\end{description}\end{quote} 13137 13138\sphinxAtStartPar 13139This function encrypts the data block \sphinxstyleemphasis{data} and stores the output in\sphinxhyphen{}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\sphinxhyphen{}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. 13140 13141 13142\sphinxstrong{See also:} 13143\nopagebreak 13144 13145 13146\sphinxAtStartPar 13147krb5\_c\_decrypt\_iov() 13148 13149 13150 13151\begin{sphinxadmonition}{note}{Note:} 13152\sphinxAtStartPar 13153On return from a krb5\_c\_encrypt\_iov() call, the \sphinxstyleemphasis{data\sphinxhyphen{}\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. 13154\end{sphinxadmonition} 13155 13156 13157\subsubsection{krb5\_c\_encrypt\_length \sphinxhyphen{} Compute encrypted data length.} 13158\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)@\spxentry{krb5\_c\_encrypt\_length}\spxextra{C function}} 13159 13160\begin{fulllineitems} 13161\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_encrypt_length:c.krb5_c_encrypt_length}}% 13162\pysigstartmultiline 13163\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_encrypt\_length}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{inputlen}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{length}}{}% 13164\pysigstopmultiline 13165\end{fulllineitems} 13166 13167\begin{quote}\begin{description} 13168\item[{param}] \leavevmode 13169\sphinxAtStartPar 13170\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13171 13172\sphinxAtStartPar 13173\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13174 13175\sphinxAtStartPar 13176\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{inputlen} \sphinxhyphen{} Length of the data to be encrypted 13177 13178\sphinxAtStartPar 13179\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{length} \sphinxhyphen{} Length of the encrypted data 13180 13181\end{description}\end{quote} 13182\begin{quote}\begin{description} 13183\item[{retval}] \leavevmode\begin{itemize} 13184\item {} 13185\sphinxAtStartPar 131860 Success; otherwise \sphinxhyphen{} Kerberos error codes 13187 13188\end{itemize} 13189 13190\end{description}\end{quote} 13191 13192\sphinxAtStartPar 13193This function computes the length of the ciphertext produced by encrypting \sphinxstyleemphasis{inputlen} bytes including padding, confounder, and checksum. 13194 13195 13196\subsubsection{krb5\_c\_enctype\_compare \sphinxhyphen{} Compare two encryption types.} 13197\label{\detokenize{appdev/refs/api/krb5_c_enctype_compare:krb5-c-enctype-compare-compare-two-encryption-types}}\label{\detokenize{appdev/refs/api/krb5_c_enctype_compare::doc}}\index{krb5\_c\_enctype\_compare (C function)@\spxentry{krb5\_c\_enctype\_compare}\spxextra{C function}} 13198 13199\begin{fulllineitems} 13200\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_enctype_compare:c.krb5_c_enctype_compare}}% 13201\pysigstartmultiline 13202\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_enctype\_compare}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{e1}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{e2}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{similar}}{}% 13203\pysigstopmultiline 13204\end{fulllineitems} 13205 13206\begin{quote}\begin{description} 13207\item[{param}] \leavevmode 13208\sphinxAtStartPar 13209\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13210 13211\sphinxAtStartPar 13212\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{e1} \sphinxhyphen{} First encryption type 13213 13214\sphinxAtStartPar 13215\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{e2} \sphinxhyphen{} Second encryption type 13216 13217\sphinxAtStartPar 13218\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{similar} \sphinxhyphen{} \sphinxstylestrong{TRUE} if types are similar, \sphinxstylestrong{FALSE} if not 13219 13220\end{description}\end{quote} 13221\begin{quote}\begin{description} 13222\item[{retval}] \leavevmode\begin{itemize} 13223\item {} 13224\sphinxAtStartPar 132250 Success; otherwise \sphinxhyphen{} Kerberos error codes 13226 13227\end{itemize} 13228 13229\end{description}\end{quote} 13230 13231\sphinxAtStartPar 13232This function determines whether two encryption types use the same kind of keys. 13233 13234 13235\subsubsection{krb5\_c\_free\_state \sphinxhyphen{} Free a cipher state previously allocated by krb5\_c\_init\_state().} 13236\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)@\spxentry{krb5\_c\_free\_state}\spxextra{C function}} 13237 13238\begin{fulllineitems} 13239\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_free_state:c.krb5_c_free_state}}% 13240\pysigstartmultiline 13241\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_free\_state}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{state}}{}% 13242\pysigstopmultiline 13243\end{fulllineitems} 13244 13245\begin{quote}\begin{description} 13246\item[{param}] \leavevmode 13247\sphinxAtStartPar 13248\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13249 13250\sphinxAtStartPar 13251\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Key 13252 13253\sphinxAtStartPar 13254\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{state} \sphinxhyphen{} Cipher state to be freed 13255 13256\end{description}\end{quote} 13257\begin{quote}\begin{description} 13258\item[{retval}] \leavevmode\begin{itemize} 13259\item {} 13260\sphinxAtStartPar 132610 Success; otherwise \sphinxhyphen{} Kerberos error codes 13262 13263\end{itemize} 13264 13265\end{description}\end{quote} 13266 13267 13268\subsubsection{krb5\_c\_fx\_cf2\_simple \sphinxhyphen{} Compute the KRB\sphinxhyphen{}FX\sphinxhyphen{}CF2 combination of two keys and pepper strings.} 13269\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)@\spxentry{krb5\_c\_fx\_cf2\_simple}\spxextra{C function}} 13270 13271\begin{fulllineitems} 13272\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_fx_cf2_simple:c.krb5_c_fx_cf2_simple}}% 13273\pysigstartmultiline 13274\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_fx\_cf2\_simple}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k1}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pepper1}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k2}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pepper2}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out}}{}% 13275\pysigstopmultiline 13276\end{fulllineitems} 13277 13278\begin{quote}\begin{description} 13279\item[{param}] \leavevmode 13280\sphinxAtStartPar 13281\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13282 13283\sphinxAtStartPar 13284\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k1} \sphinxhyphen{} KDC contribution key 13285 13286\sphinxAtStartPar 13287\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pepper1} \sphinxhyphen{} String”PKINIT” 13288 13289\sphinxAtStartPar 13290\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k2} \sphinxhyphen{} Reply key 13291 13292\sphinxAtStartPar 13293\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{pepper2} \sphinxhyphen{} String”KeyExchange” 13294 13295\sphinxAtStartPar 13296\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Output key 13297 13298\end{description}\end{quote} 13299\begin{quote}\begin{description} 13300\item[{retval}] \leavevmode\begin{itemize} 13301\item {} 13302\sphinxAtStartPar 133030 Success; otherwise \sphinxhyphen{} Kerberos error codes 13304 13305\end{itemize} 13306 13307\end{description}\end{quote} 13308 13309\sphinxAtStartPar 13310This function computes the KRB\sphinxhyphen{}FX\sphinxhyphen{}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. 13311 13312 13313\subsubsection{krb5\_c\_init\_state \sphinxhyphen{} Initialize a new cipher state.} 13314\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)@\spxentry{krb5\_c\_init\_state}\spxextra{C function}} 13315 13316\begin{fulllineitems} 13317\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_init_state:c.krb5_c_init_state}}% 13318\pysigstartmultiline 13319\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_init\_state}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{new\_state}}{}% 13320\pysigstopmultiline 13321\end{fulllineitems} 13322 13323\begin{quote}\begin{description} 13324\item[{param}] \leavevmode 13325\sphinxAtStartPar 13326\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13327 13328\sphinxAtStartPar 13329\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Key 13330 13331\sphinxAtStartPar 13332\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 13333 13334\sphinxAtStartPar 13335\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{new\_state} \sphinxhyphen{} New cipher state 13336 13337\end{description}\end{quote} 13338\begin{quote}\begin{description} 13339\item[{retval}] \leavevmode\begin{itemize} 13340\item {} 13341\sphinxAtStartPar 133420 Success; otherwise \sphinxhyphen{} Kerberos error codes 13343 13344\end{itemize} 13345 13346\end{description}\end{quote} 13347 13348 13349\subsubsection{krb5\_c\_is\_coll\_proof\_cksum \sphinxhyphen{} Test whether a checksum type is collision\sphinxhyphen{}proof.} 13350\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)@\spxentry{krb5\_c\_is\_coll\_proof\_cksum}\spxextra{C function}} 13351 13352\begin{fulllineitems} 13353\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_is_coll_proof_cksum:c.krb5_c_is_coll_proof_cksum}}% 13354\pysigstartmultiline 13355\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_is\_coll\_proof\_cksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{ctype}}{}% 13356\pysigstopmultiline 13357\end{fulllineitems} 13358 13359\begin{quote}\begin{description} 13360\item[{param}] \leavevmode 13361\sphinxAtStartPar 13362\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctype} \sphinxhyphen{} Checksum type 13363 13364\end{description}\end{quote} 13365\begin{quote}\begin{description} 13366\item[{return}] \leavevmode\begin{itemize} 13367\item {} 13368\sphinxAtStartPar 13369TRUE if ctype is collision\sphinxhyphen{}proof, FALSE if it is not collision\sphinxhyphen{}proof or not a valid checksum type. 13370 13371\end{itemize} 13372 13373\end{description}\end{quote} 13374 13375 13376\subsubsection{krb5\_c\_is\_keyed\_cksum \sphinxhyphen{} Test whether a checksum type is keyed.} 13377\label{\detokenize{appdev/refs/api/krb5_c_is_keyed_cksum:krb5-c-is-keyed-cksum-test-whether-a-checksum-type-is-keyed}}\label{\detokenize{appdev/refs/api/krb5_c_is_keyed_cksum::doc}}\index{krb5\_c\_is\_keyed\_cksum (C function)@\spxentry{krb5\_c\_is\_keyed\_cksum}\spxextra{C function}} 13378 13379\begin{fulllineitems} 13380\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_is_keyed_cksum:c.krb5_c_is_keyed_cksum}}% 13381\pysigstartmultiline 13382\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_is\_keyed\_cksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{ctype}}{}% 13383\pysigstopmultiline 13384\end{fulllineitems} 13385 13386\begin{quote}\begin{description} 13387\item[{param}] \leavevmode 13388\sphinxAtStartPar 13389\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctype} \sphinxhyphen{} Checksum type 13390 13391\end{description}\end{quote} 13392\begin{quote}\begin{description} 13393\item[{return}] \leavevmode\begin{itemize} 13394\item {} 13395\sphinxAtStartPar 13396TRUE if ctype is a keyed checksum type, FALSE otherwise. 13397 13398\end{itemize} 13399 13400\end{description}\end{quote} 13401 13402 13403\subsubsection{krb5\_c\_keyed\_checksum\_types \sphinxhyphen{} Return a list of keyed checksum types usable with an encryption type.} 13404\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}}\label{\detokenize{appdev/refs/api/krb5_c_keyed_checksum_types::doc}}\index{krb5\_c\_keyed\_checksum\_types (C function)@\spxentry{krb5\_c\_keyed\_checksum\_types}\spxextra{C function}} 13405 13406\begin{fulllineitems} 13407\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_keyed_checksum_types:c.krb5_c_keyed_checksum_types}}% 13408\pysigstartmultiline 13409\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_keyed\_checksum\_types}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{count}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{cksumtypes}}{}% 13410\pysigstopmultiline 13411\end{fulllineitems} 13412 13413\begin{quote}\begin{description} 13414\item[{param}] \leavevmode 13415\sphinxAtStartPar 13416\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13417 13418\sphinxAtStartPar 13419\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13420 13421\sphinxAtStartPar 13422\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{count} \sphinxhyphen{} Count of allowable checksum types 13423 13424\sphinxAtStartPar 13425\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksumtypes} \sphinxhyphen{} Array of allowable checksum types 13426 13427\end{description}\end{quote} 13428\begin{quote}\begin{description} 13429\item[{retval}] \leavevmode\begin{itemize} 13430\item {} 13431\sphinxAtStartPar 134320 Success; otherwise \sphinxhyphen{} Kerberos error codes 13433 13434\end{itemize} 13435 13436\end{description}\end{quote} 13437 13438\sphinxAtStartPar 13439Use krb5\_free\_cksumtypes() to free \sphinxstyleemphasis{cksumtypes} when it is no longer needed. 13440 13441 13442\subsubsection{krb5\_c\_keylengths \sphinxhyphen{} Return length of the specified key in bytes.} 13443\label{\detokenize{appdev/refs/api/krb5_c_keylengths:krb5-c-keylengths-return-length-of-the-specified-key-in-bytes}}\label{\detokenize{appdev/refs/api/krb5_c_keylengths::doc}}\index{krb5\_c\_keylengths (C function)@\spxentry{krb5\_c\_keylengths}\spxextra{C function}} 13444 13445\begin{fulllineitems} 13446\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_keylengths:c.krb5_c_keylengths}}% 13447\pysigstartmultiline 13448\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_keylengths}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keybytes}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keylength}}{}% 13449\pysigstopmultiline 13450\end{fulllineitems} 13451 13452\begin{quote}\begin{description} 13453\item[{param}] \leavevmode 13454\sphinxAtStartPar 13455\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13456 13457\sphinxAtStartPar 13458\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13459 13460\sphinxAtStartPar 13461\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keybytes} \sphinxhyphen{} Number of bytes required to make a key 13462 13463\sphinxAtStartPar 13464\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{keylength} \sphinxhyphen{} Length of final key 13465 13466\end{description}\end{quote} 13467\begin{quote}\begin{description} 13468\item[{retval}] \leavevmode\begin{itemize} 13469\item {} 13470\sphinxAtStartPar 134710 Success; otherwise \sphinxhyphen{} Kerberos error codes 13472 13473\end{itemize} 13474 13475\end{description}\end{quote} 13476 13477 13478\subsubsection{krb5\_c\_make\_checksum \sphinxhyphen{} Compute a checksum (operates on keyblock).} 13479\label{\detokenize{appdev/refs/api/krb5_c_make_checksum:krb5-c-make-checksum-compute-a-checksum-operates-on-keyblock}}\label{\detokenize{appdev/refs/api/krb5_c_make_checksum::doc}}\index{krb5\_c\_make\_checksum (C function)@\spxentry{krb5\_c\_make\_checksum}\spxextra{C function}} 13480 13481\begin{fulllineitems} 13482\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_make_checksum:c.krb5_c_make_checksum}}% 13483\pysigstartmultiline 13484\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_make\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cksum}}{}% 13485\pysigstopmultiline 13486\end{fulllineitems} 13487 13488\begin{quote}\begin{description} 13489\item[{param}] \leavevmode 13490\sphinxAtStartPar 13491\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13492 13493\sphinxAtStartPar 13494\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type (0 for mandatory type) 13495 13496\sphinxAtStartPar 13497\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 13498 13499\sphinxAtStartPar 13500\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 13501 13502\sphinxAtStartPar 13503\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Input data 13504 13505\sphinxAtStartPar 13506\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksum} \sphinxhyphen{} Generated checksum 13507 13508\end{description}\end{quote} 13509\begin{quote}\begin{description} 13510\item[{retval}] \leavevmode\begin{itemize} 13511\item {} 13512\sphinxAtStartPar 135130 Success; otherwise \sphinxhyphen{} Kerberos error codes 13514 13515\end{itemize} 13516 13517\end{description}\end{quote} 13518 13519\sphinxAtStartPar 13520This 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\sphinxhyphen{}null, the checksum type will be the mandatory\sphinxhyphen{}to\sphinxhyphen{}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 krb5\_free\_checksum\_contents() when it is no longer needed. 13521 13522 13523\sphinxstrong{See also:} 13524\nopagebreak 13525 13526 13527\sphinxAtStartPar 13528krb5\_c\_verify\_checksum() 13529 13530 13531 13532\begin{sphinxadmonition}{note}{Note:} 13533\sphinxAtStartPar 13534This function is similar to krb5\_k\_make\_checksum(), but operates on keyblock \sphinxstyleemphasis{key} . 13535\end{sphinxadmonition} 13536 13537 13538\subsubsection{krb5\_c\_make\_checksum\_iov \sphinxhyphen{} Fill in a checksum element in IOV array (operates on keyblock)} 13539\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)@\spxentry{krb5\_c\_make\_checksum\_iov}\spxextra{C function}} 13540 13541\begin{fulllineitems} 13542\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_make_checksum_iov:c.krb5_c_make_checksum_iov}}% 13543\pysigstartmultiline 13544\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_make\_checksum\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 13545\pysigstopmultiline 13546\end{fulllineitems} 13547 13548\begin{quote}\begin{description} 13549\item[{param}] \leavevmode 13550\sphinxAtStartPar 13551\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13552 13553\sphinxAtStartPar 13554\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type (0 for mandatory type) 13555 13556\sphinxAtStartPar 13557\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 13558 13559\sphinxAtStartPar 13560\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 13561 13562\sphinxAtStartPar 13563\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array 13564 13565\sphinxAtStartPar 13566\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 13567 13568\end{description}\end{quote} 13569\begin{quote}\begin{description} 13570\item[{retval}] \leavevmode\begin{itemize} 13571\item {} 13572\sphinxAtStartPar 135730 Success; otherwise \sphinxhyphen{} Kerberos error codes 13574 13575\end{itemize} 13576 13577\end{description}\end{quote} 13578 13579\sphinxAtStartPar 13580Create a checksum in the \#KRB5\_CRYPTO\_TYPE\_CHECKSUM element over \#KRB5\_CRYPTO\_TYPE\_DATA and \#KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY chunks in \sphinxstyleemphasis{data} . Only the \#KRB5\_CRYPTO\_TYPE\_CHECKSUM region is modified. 13581 13582 13583\sphinxstrong{See also:} 13584\nopagebreak 13585 13586 13587\sphinxAtStartPar 13588krb5\_c\_verify\_checksum\_iov() 13589 13590 13591 13592\begin{sphinxadmonition}{note}{Note:} 13593\sphinxAtStartPar 13594This function is similar to krb5\_k\_make\_checksum\_iov(), but operates on keyblock \sphinxstyleemphasis{key} . 13595\end{sphinxadmonition} 13596 13597 13598\subsubsection{krb5\_c\_make\_random\_key \sphinxhyphen{} Generate an enctype\sphinxhyphen{}specific random encryption key.} 13599\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)@\spxentry{krb5\_c\_make\_random\_key}\spxextra{C function}} 13600 13601\begin{fulllineitems} 13602\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_make_random_key:c.krb5_c_make_random_key}}% 13603\pysigstartmultiline 13604\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_make\_random\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k5\_random\_key}}{}% 13605\pysigstopmultiline 13606\end{fulllineitems} 13607 13608\begin{quote}\begin{description} 13609\item[{param}] \leavevmode 13610\sphinxAtStartPar 13611\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13612 13613\sphinxAtStartPar 13614\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type of the generated key 13615 13616\sphinxAtStartPar 13617\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{k5\_random\_key} \sphinxhyphen{} An allocated and initialized keyblock 13618 13619\end{description}\end{quote} 13620\begin{quote}\begin{description} 13621\item[{retval}] \leavevmode\begin{itemize} 13622\item {} 13623\sphinxAtStartPar 136240 Success; otherwise \sphinxhyphen{} Kerberos error codes 13625 13626\end{itemize} 13627 13628\end{description}\end{quote} 13629 13630\sphinxAtStartPar 13631Use krb5\_free\_keyblock\_contents() to free \sphinxstyleemphasis{k5\_random\_key} when no longer needed. 13632 13633 13634\subsubsection{krb5\_c\_padding\_length \sphinxhyphen{} Return a number of padding octets.} 13635\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)@\spxentry{krb5\_c\_padding\_length}\spxextra{C function}} 13636 13637\begin{fulllineitems} 13638\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_padding_length:c.krb5_c_padding_length}}% 13639\pysigstartmultiline 13640\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_padding\_length}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{data\_length}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{size}}{}% 13641\pysigstopmultiline 13642\end{fulllineitems} 13643 13644\begin{quote}\begin{description} 13645\item[{param}] \leavevmode 13646\sphinxAtStartPar 13647\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13648 13649\sphinxAtStartPar 13650\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13651 13652\sphinxAtStartPar 13653\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data\_length} \sphinxhyphen{} Length of the plaintext to pad 13654 13655\sphinxAtStartPar 13656\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{size} \sphinxhyphen{} Number of padding octets 13657 13658\end{description}\end{quote} 13659\begin{quote}\begin{description} 13660\item[{retval}] \leavevmode\begin{itemize} 13661\item {} 13662\sphinxAtStartPar 136630 Success; otherwise \sphinxhyphen{} KRB5\_BAD\_ENCTYPE 13664 13665\end{itemize} 13666 13667\end{description}\end{quote} 13668 13669\sphinxAtStartPar 13670This function returns the number of the padding octets required to pad \sphinxstyleemphasis{data\_length} octets of plaintext. 13671 13672 13673\subsubsection{krb5\_c\_prf \sphinxhyphen{} Generate enctype\sphinxhyphen{}specific pseudo\sphinxhyphen{}random bytes.} 13674\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)@\spxentry{krb5\_c\_prf}\spxextra{C function}} 13675 13676\begin{fulllineitems} 13677\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_prf:c.krb5_c_prf}}% 13678\pysigstartmultiline 13679\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_prf}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 13680\pysigstopmultiline 13681\end{fulllineitems} 13682 13683\begin{quote}\begin{description} 13684\item[{param}] \leavevmode 13685\sphinxAtStartPar 13686\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13687 13688\sphinxAtStartPar 13689\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keyblock} \sphinxhyphen{} Key 13690 13691\sphinxAtStartPar 13692\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Input data 13693 13694\sphinxAtStartPar 13695\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Output data 13696 13697\end{description}\end{quote} 13698\begin{quote}\begin{description} 13699\item[{retval}] \leavevmode\begin{itemize} 13700\item {} 13701\sphinxAtStartPar 137020 Success; otherwise \sphinxhyphen{} Kerberos error codes 13703 13704\end{itemize} 13705 13706\end{description}\end{quote} 13707 13708\sphinxAtStartPar 13709This function selects a pseudo\sphinxhyphen{}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 krb5\_c\_prf\_length() to determine the required length. 13710 13711 13712\subsubsection{krb5\_c\_prfplus \sphinxhyphen{} Generate pseudo\sphinxhyphen{}random bytes using RFC 6113 PRF+.} 13713\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)@\spxentry{krb5\_c\_prfplus}\spxextra{C function}} 13714 13715\begin{fulllineitems} 13716\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_prfplus:c.krb5_c_prfplus}}% 13717\pysigstartmultiline 13718\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_prfplus}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 13719\pysigstopmultiline 13720\end{fulllineitems} 13721 13722\begin{quote}\begin{description} 13723\item[{param}] \leavevmode 13724\sphinxAtStartPar 13725\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13726 13727\sphinxAtStartPar 13728\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{k} \sphinxhyphen{} KDC contribution key 13729 13730\sphinxAtStartPar 13731\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Input data 13732 13733\sphinxAtStartPar 13734\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Pseudo\sphinxhyphen{}random output buffer 13735 13736\end{description}\end{quote} 13737\begin{quote}\begin{description} 13738\item[{return}] \leavevmode\begin{itemize} 13739\item {} 13740\sphinxAtStartPar 137410 on success, E2BIG if output\sphinxhyphen{}\textgreater{}length is too large for PRF+ to generate, ENOMEM on allocation failure, or an error code from krb5\_c\_prf() 13742 13743\end{itemize} 13744 13745\end{description}\end{quote} 13746 13747\sphinxAtStartPar 13748This 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\sphinxhyphen{}random output will match the length of \sphinxstyleemphasis{output} . 13749 13750\begin{sphinxadmonition}{note}{Note:} 13751\sphinxAtStartPar 13752RFC 4402 defines a different PRF+ operation. This function does not implement that operation. 13753\end{sphinxadmonition} 13754 13755 13756\subsubsection{krb5\_c\_prf\_length \sphinxhyphen{} Get the output length of pseudo\sphinxhyphen{}random functions for an encryption type.} 13757\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}}\label{\detokenize{appdev/refs/api/krb5_c_prf_length::doc}}\index{krb5\_c\_prf\_length (C function)@\spxentry{krb5\_c\_prf\_length}\spxextra{C function}} 13758 13759\begin{fulllineitems} 13760\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_prf_length:c.krb5_c_prf_length}}% 13761\pysigstartmultiline 13762\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_prf\_length}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{len}}{}% 13763\pysigstopmultiline 13764\end{fulllineitems} 13765 13766\begin{quote}\begin{description} 13767\item[{param}] \leavevmode 13768\sphinxAtStartPar 13769\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13770 13771\sphinxAtStartPar 13772\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13773 13774\sphinxAtStartPar 13775\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{len} \sphinxhyphen{} Length of PRF output 13776 13777\end{description}\end{quote} 13778\begin{quote}\begin{description} 13779\item[{retval}] \leavevmode\begin{itemize} 13780\item {} 13781\sphinxAtStartPar 137820 Success; otherwise \sphinxhyphen{} Kerberos error codes 13783 13784\end{itemize} 13785 13786\end{description}\end{quote} 13787 13788 13789\subsubsection{krb5\_c\_random\_add\_entropy} 13790\label{\detokenize{appdev/refs/api/krb5_c_random_add_entropy:krb5-c-random-add-entropy}}\label{\detokenize{appdev/refs/api/krb5_c_random_add_entropy::doc}}\index{krb5\_c\_random\_add\_entropy (C function)@\spxentry{krb5\_c\_random\_add\_entropy}\spxextra{C function}} 13791 13792\begin{fulllineitems} 13793\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_add_entropy:c.krb5_c_random_add_entropy}}% 13794\pysigstartmultiline 13795\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_random\_add\_entropy}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{randsource}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 13796\pysigstopmultiline 13797\end{fulllineitems} 13798 13799\begin{quote}\begin{description} 13800\item[{param}] \leavevmode 13801\sphinxAtStartPar 13802\sphinxstylestrong{context} 13803 13804\sphinxAtStartPar 13805\sphinxstylestrong{randsource} 13806 13807\sphinxAtStartPar 13808\sphinxstylestrong{data} 13809 13810\end{description}\end{quote} 13811 13812\sphinxAtStartPar 13813DEPRECATED This call is no longer necessary. 13814 13815 13816\subsubsection{krb5\_c\_random\_make\_octets \sphinxhyphen{} Generate pseudo\sphinxhyphen{}random bytes.} 13817\label{\detokenize{appdev/refs/api/krb5_c_random_make_octets:krb5-c-random-make-octets-generate-pseudo-random-bytes}}\label{\detokenize{appdev/refs/api/krb5_c_random_make_octets::doc}}\index{krb5\_c\_random\_make\_octets (C function)@\spxentry{krb5\_c\_random\_make\_octets}\spxextra{C function}} 13818 13819\begin{fulllineitems} 13820\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_make_octets:c.krb5_c_random_make_octets}}% 13821\pysigstartmultiline 13822\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_random\_make\_octets}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 13823\pysigstopmultiline 13824\end{fulllineitems} 13825 13826\begin{quote}\begin{description} 13827\item[{param}] \leavevmode 13828\sphinxAtStartPar 13829\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13830 13831\sphinxAtStartPar 13832\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{data} \sphinxhyphen{} Random data 13833 13834\end{description}\end{quote} 13835\begin{quote}\begin{description} 13836\item[{retval}] \leavevmode\begin{itemize} 13837\item {} 13838\sphinxAtStartPar 138390 Success; otherwise \sphinxhyphen{} Kerberos error codes 13840 13841\end{itemize} 13842 13843\end{description}\end{quote} 13844 13845\sphinxAtStartPar 13846Fills 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. 13847 13848 13849\subsubsection{krb5\_c\_random\_os\_entropy} 13850\label{\detokenize{appdev/refs/api/krb5_c_random_os_entropy:krb5-c-random-os-entropy}}\label{\detokenize{appdev/refs/api/krb5_c_random_os_entropy::doc}}\index{krb5\_c\_random\_os\_entropy (C function)@\spxentry{krb5\_c\_random\_os\_entropy}\spxextra{C function}} 13851 13852\begin{fulllineitems} 13853\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_os_entropy:c.krb5_c_random_os_entropy}}% 13854\pysigstartmultiline 13855\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_random\_os\_entropy}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{strong}, \DUrole{kt}{int}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{success}}{}% 13856\pysigstopmultiline 13857\end{fulllineitems} 13858 13859\begin{quote}\begin{description} 13860\item[{param}] \leavevmode 13861\sphinxAtStartPar 13862\sphinxstylestrong{context} 13863 13864\sphinxAtStartPar 13865\sphinxstylestrong{strong} 13866 13867\sphinxAtStartPar 13868\sphinxstylestrong{success} 13869 13870\end{description}\end{quote} 13871 13872\sphinxAtStartPar 13873DEPRECATED This call is no longer necessary. 13874 13875 13876\subsubsection{krb5\_c\_random\_to\_key \sphinxhyphen{} Generate an enctype\sphinxhyphen{}specific key from random data.} 13877\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)@\spxentry{krb5\_c\_random\_to\_key}\spxextra{C function}} 13878 13879\begin{fulllineitems} 13880\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_to_key:c.krb5_c_random_to_key}}% 13881\pysigstartmultiline 13882\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_random\_to\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{random\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{k5\_random\_key}}{}% 13883\pysigstopmultiline 13884\end{fulllineitems} 13885 13886\begin{quote}\begin{description} 13887\item[{param}] \leavevmode 13888\sphinxAtStartPar 13889\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13890 13891\sphinxAtStartPar 13892\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13893 13894\sphinxAtStartPar 13895\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{random\_data} \sphinxhyphen{} Random input data 13896 13897\sphinxAtStartPar 13898\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{k5\_random\_key} \sphinxhyphen{} Resulting key 13899 13900\end{description}\end{quote} 13901\begin{quote}\begin{description} 13902\item[{retval}] \leavevmode\begin{itemize} 13903\item {} 13904\sphinxAtStartPar 139050 Success; otherwise \sphinxhyphen{} Kerberos error codes 13906 13907\end{itemize} 13908 13909\end{description}\end{quote} 13910 13911\sphinxAtStartPar 13912This function takes random input data \sphinxstyleemphasis{random\_data} and produces a valid key \sphinxstyleemphasis{k5\_random\_key} for a given \sphinxstyleemphasis{enctype} . 13913 13914 13915\sphinxstrong{See also:} 13916\nopagebreak 13917 13918 13919\sphinxAtStartPar 13920krb5\_c\_keylengths() 13921 13922 13923 13924\begin{sphinxadmonition}{note}{Note:} 13925\sphinxAtStartPar 13926It is assumed that \sphinxstyleemphasis{k5\_random\_key} has already been initialized and \sphinxstyleemphasis{k5\_random\_key\sphinxhyphen{}\textgreater{}contents} has been allocated with the correct length. 13927\end{sphinxadmonition} 13928 13929 13930\subsubsection{krb5\_c\_string\_to\_key \sphinxhyphen{} Convert a string (such a password) to a key.} 13931\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)@\spxentry{krb5\_c\_string\_to\_key}\spxextra{C function}} 13932 13933\begin{fulllineitems} 13934\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_string_to_key:c.krb5_c_string_to_key}}% 13935\pysigstartmultiline 13936\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_string\_to\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{salt}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 13937\pysigstopmultiline 13938\end{fulllineitems} 13939 13940\begin{quote}\begin{description} 13941\item[{param}] \leavevmode 13942\sphinxAtStartPar 13943\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13944 13945\sphinxAtStartPar 13946\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13947 13948\sphinxAtStartPar 13949\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to be converted 13950 13951\sphinxAtStartPar 13952\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salt} \sphinxhyphen{} Salt value 13953 13954\sphinxAtStartPar 13955\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Generated key 13956 13957\end{description}\end{quote} 13958\begin{quote}\begin{description} 13959\item[{retval}] \leavevmode\begin{itemize} 13960\item {} 13961\sphinxAtStartPar 139620 Success; otherwise \sphinxhyphen{} Kerberos error codes 13963 13964\end{itemize} 13965 13966\end{description}\end{quote} 13967 13968\sphinxAtStartPar 13969This 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 krb5\_free\_keyblock\_contents() when it is no longer needed. 13970 13971 13972\subsubsection{krb5\_c\_string\_to\_key\_with\_params \sphinxhyphen{} Convert a string (such as a password) to a key with additional parameters.} 13973\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}}\label{\detokenize{appdev/refs/api/krb5_c_string_to_key_with_params::doc}}\index{krb5\_c\_string\_to\_key\_with\_params (C function)@\spxentry{krb5\_c\_string\_to\_key\_with\_params}\spxextra{C function}} 13974 13975\begin{fulllineitems} 13976\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_string_to_key_with_params:c.krb5_c_string_to_key_with_params}}% 13977\pysigstartmultiline 13978\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_string\_to\_key\_with\_params}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{string}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{salt}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{params}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 13979\pysigstopmultiline 13980\end{fulllineitems} 13981 13982\begin{quote}\begin{description} 13983\item[{param}] \leavevmode 13984\sphinxAtStartPar 13985\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 13986 13987\sphinxAtStartPar 13988\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 13989 13990\sphinxAtStartPar 13991\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{string} \sphinxhyphen{} String to be converted 13992 13993\sphinxAtStartPar 13994\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{salt} \sphinxhyphen{} Salt value 13995 13996\sphinxAtStartPar 13997\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{params} \sphinxhyphen{} Parameters 13998 13999\sphinxAtStartPar 14000\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{key} \sphinxhyphen{} Generated key 14001 14002\end{description}\end{quote} 14003\begin{quote}\begin{description} 14004\item[{retval}] \leavevmode\begin{itemize} 14005\item {} 14006\sphinxAtStartPar 140070 Success; otherwise \sphinxhyphen{} Kerberos error codes 14008 14009\end{itemize} 14010 14011\end{description}\end{quote} 14012 14013\sphinxAtStartPar 14014This function is similar to krb5\_c\_string\_to\_key(), but also takes parameters which may affect the algorithm in an enctype\sphinxhyphen{}dependent way. The newly created \sphinxstyleemphasis{key} must be released by calling krb5\_free\_keyblock\_contents() when it is no longer needed. 14015 14016 14017\subsubsection{krb5\_c\_valid\_cksumtype \sphinxhyphen{} Verify that specified checksum type is a valid Kerberos checksum type.} 14018\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)@\spxentry{krb5\_c\_valid\_cksumtype}\spxextra{C function}} 14019 14020\begin{fulllineitems} 14021\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_valid_cksumtype:c.krb5_c_valid_cksumtype}}% 14022\pysigstartmultiline 14023\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_valid\_cksumtype}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{ctype}}{}% 14024\pysigstopmultiline 14025\end{fulllineitems} 14026 14027\begin{quote}\begin{description} 14028\item[{param}] \leavevmode 14029\sphinxAtStartPar 14030\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ctype} \sphinxhyphen{} Checksum type 14031 14032\end{description}\end{quote} 14033\begin{quote}\begin{description} 14034\item[{return}] \leavevmode\begin{itemize} 14035\item {} 14036\sphinxAtStartPar 14037TRUE if ctype is valid, FALSE if not 14038 14039\end{itemize} 14040 14041\end{description}\end{quote} 14042 14043 14044\subsubsection{krb5\_c\_valid\_enctype \sphinxhyphen{} Verify that a specified encryption type is a valid Kerberos encryption type.} 14045\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)@\spxentry{krb5\_c\_valid\_enctype}\spxextra{C function}} 14046 14047\begin{fulllineitems} 14048\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_valid_enctype:c.krb5_c_valid_enctype}}% 14049\pysigstartmultiline 14050\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_valid\_enctype}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{ktype}}{}% 14051\pysigstopmultiline 14052\end{fulllineitems} 14053 14054\begin{quote}\begin{description} 14055\item[{param}] \leavevmode 14056\sphinxAtStartPar 14057\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ktype} \sphinxhyphen{} Encryption type 14058 14059\end{description}\end{quote} 14060\begin{quote}\begin{description} 14061\item[{return}] \leavevmode\begin{itemize} 14062\item {} 14063\sphinxAtStartPar 14064TRUE if ktype is valid, FALSE if not 14065 14066\end{itemize} 14067 14068\end{description}\end{quote} 14069 14070 14071\subsubsection{krb5\_c\_verify\_checksum \sphinxhyphen{} Verify a checksum (operates on keyblock).} 14072\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)@\spxentry{krb5\_c\_verify\_checksum}\spxextra{C function}} 14073 14074\begin{fulllineitems} 14075\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum:c.krb5_c_verify_checksum}}% 14076\pysigstartmultiline 14077\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_verify\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cksum}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{valid}}{}% 14078\pysigstopmultiline 14079\end{fulllineitems} 14080 14081\begin{quote}\begin{description} 14082\item[{param}] \leavevmode 14083\sphinxAtStartPar 14084\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14085 14086\sphinxAtStartPar 14087\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 14088 14089\sphinxAtStartPar 14090\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} \sphinxstyleemphasis{key} usage 14091 14092\sphinxAtStartPar 14093\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Data to be used to compute a new checksum using \sphinxstyleemphasis{key} to compare \sphinxstyleemphasis{cksum} against 14094 14095\sphinxAtStartPar 14096\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksum} \sphinxhyphen{} Checksum to be verified 14097 14098\sphinxAtStartPar 14099\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} \sphinxhyphen{} Non\sphinxhyphen{}zero for success, zero for failure 14100 14101\end{description}\end{quote} 14102\begin{quote}\begin{description} 14103\item[{retval}] \leavevmode\begin{itemize} 14104\item {} 14105\sphinxAtStartPar 141060 Success; otherwise \sphinxhyphen{} Kerberos error codes 14107 14108\end{itemize} 14109 14110\end{description}\end{quote} 14111 14112\sphinxAtStartPar 14113This 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. 14114 14115\begin{sphinxadmonition}{note}{Note:} 14116\sphinxAtStartPar 14117This function is similar to krb5\_k\_verify\_checksum(), but operates on keyblock \sphinxstyleemphasis{key} . 14118\end{sphinxadmonition} 14119 14120 14121\subsubsection{krb5\_c\_verify\_checksum\_iov \sphinxhyphen{} Validate a checksum element in IOV array (operates on keyblock).} 14122\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}}\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum_iov::doc}}\index{krb5\_c\_verify\_checksum\_iov (C function)@\spxentry{krb5\_c\_verify\_checksum\_iov}\spxextra{C function}} 14123 14124\begin{fulllineitems} 14125\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_verify_checksum_iov:c.krb5_c_verify_checksum_iov}}% 14126\pysigstartmultiline 14127\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_verify\_checksum\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{valid}}{}% 14128\pysigstopmultiline 14129\end{fulllineitems} 14130 14131\begin{quote}\begin{description} 14132\item[{param}] \leavevmode 14133\sphinxAtStartPar 14134\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14135 14136\sphinxAtStartPar 14137\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type (0 for mandatory type) 14138 14139\sphinxAtStartPar 14140\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 14141 14142\sphinxAtStartPar 14143\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14144 14145\sphinxAtStartPar 14146\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array 14147 14148\sphinxAtStartPar 14149\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 14150 14151\sphinxAtStartPar 14152\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} \sphinxhyphen{} Non\sphinxhyphen{}zero for success, zero for failure 14153 14154\end{description}\end{quote} 14155\begin{quote}\begin{description} 14156\item[{retval}] \leavevmode\begin{itemize} 14157\item {} 14158\sphinxAtStartPar 141590 Success; otherwise \sphinxhyphen{} Kerberos error codes 14160 14161\end{itemize} 14162 14163\end{description}\end{quote} 14164 14165\sphinxAtStartPar 14166Confirm that the checksum in the \#KRB5\_CRYPTO\_TYPE\_CHECKSUM element is a valid checksum of the \#KRB5\_CRYPTO\_TYPE\_DATA and \#KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY regions in the iov. 14167 14168 14169\sphinxstrong{See also:} 14170\nopagebreak 14171 14172 14173\sphinxAtStartPar 14174krb5\_c\_make\_checksum\_iov() 14175 14176 14177 14178\begin{sphinxadmonition}{note}{Note:} 14179\sphinxAtStartPar 14180This function is similar to krb5\_k\_verify\_checksum\_iov(), but operates on keyblock \sphinxstyleemphasis{key} . 14181\end{sphinxadmonition} 14182 14183 14184\subsubsection{krb5\_cksumtype\_to\_string \sphinxhyphen{} Convert a checksum type to a string.} 14185\label{\detokenize{appdev/refs/api/krb5_cksumtype_to_string:krb5-cksumtype-to-string-convert-a-checksum-type-to-a-string}}\label{\detokenize{appdev/refs/api/krb5_cksumtype_to_string::doc}}\index{krb5\_cksumtype\_to\_string (C function)@\spxentry{krb5\_cksumtype\_to\_string}\spxextra{C function}} 14186 14187\begin{fulllineitems} 14188\phantomsection\label{\detokenize{appdev/refs/api/krb5_cksumtype_to_string:c.krb5_cksumtype_to_string}}% 14189\pysigstartmultiline 14190\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cksumtype\_to\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}}{}% 14191\pysigstopmultiline 14192\end{fulllineitems} 14193 14194\begin{quote}\begin{description} 14195\item[{param}] \leavevmode 14196\sphinxAtStartPar 14197\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type 14198 14199\sphinxAtStartPar 14200\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to hold converted checksum type 14201 14202\sphinxAtStartPar 14203\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Storage available in \sphinxstyleemphasis{buffer} 14204 14205\end{description}\end{quote} 14206\begin{quote}\begin{description} 14207\item[{retval}] \leavevmode\begin{itemize} 14208\item {} 14209\sphinxAtStartPar 142100 Success; otherwise \sphinxhyphen{} Kerberos error codes 14211 14212\end{itemize} 14213 14214\end{description}\end{quote} 14215 14216 14217\subsubsection{krb5\_decode\_authdata\_container \sphinxhyphen{} Unwrap authorization data.} 14218\label{\detokenize{appdev/refs/api/krb5_decode_authdata_container:krb5-decode-authdata-container-unwrap-authorization-data}}\label{\detokenize{appdev/refs/api/krb5_decode_authdata_container::doc}}\index{krb5\_decode\_authdata\_container (C function)@\spxentry{krb5\_decode\_authdata\_container}\spxextra{C function}} 14219 14220\begin{fulllineitems} 14221\phantomsection\label{\detokenize{appdev/refs/api/krb5_decode_authdata_container:c.krb5_decode_authdata_container}}% 14222\pysigstartmultiline 14223\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_decode\_authdata\_container}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{\DUrole{n}{krb5\_authdatatype}}}}\DUrole{w}{ }\DUrole{n}{type}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{container}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{authdata}}{}% 14224\pysigstopmultiline 14225\end{fulllineitems} 14226 14227\begin{quote}\begin{description} 14228\item[{param}] \leavevmode 14229\sphinxAtStartPar 14230\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14231 14232\sphinxAtStartPar 14233\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Container type (see KRB5\_AUTHDATA macros) 14234 14235\sphinxAtStartPar 14236\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{container} \sphinxhyphen{} Authorization data to be decoded 14237 14238\sphinxAtStartPar 14239\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{authdata} \sphinxhyphen{} List of decoded authorization data 14240 14241\end{description}\end{quote} 14242\begin{quote}\begin{description} 14243\item[{retval}] \leavevmode\begin{itemize} 14244\item {} 14245\sphinxAtStartPar 142460 Success; otherwise \sphinxhyphen{} Kerberos error codes 14247 14248\end{itemize} 14249 14250\end{description}\end{quote} 14251 14252 14253\sphinxstrong{See also:} 14254\nopagebreak 14255 14256 14257\sphinxAtStartPar 14258krb5\_encode\_authdata\_container() 14259 14260 14261 14262 14263\subsubsection{krb5\_decode\_ticket \sphinxhyphen{} Decode an ASN.1\sphinxhyphen{}formatted ticket.} 14264\label{\detokenize{appdev/refs/api/krb5_decode_ticket:krb5-decode-ticket-decode-an-asn-1-formatted-ticket}}\label{\detokenize{appdev/refs/api/krb5_decode_ticket::doc}}\index{krb5\_decode\_ticket (C function)@\spxentry{krb5\_decode\_ticket}\spxextra{C function}} 14265 14266\begin{fulllineitems} 14267\phantomsection\label{\detokenize{appdev/refs/api/krb5_decode_ticket:c.krb5_decode_ticket}}% 14268\pysigstartmultiline 14269\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_decode\_ticket}}}}{\DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{code}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{rep}}{}% 14270\pysigstopmultiline 14271\end{fulllineitems} 14272 14273\begin{quote}\begin{description} 14274\item[{param}] \leavevmode 14275\sphinxAtStartPar 14276\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{code} \sphinxhyphen{} ASN.1\sphinxhyphen{}formatted ticket 14277 14278\sphinxAtStartPar 14279\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rep} \sphinxhyphen{} Decoded ticket information 14280 14281\end{description}\end{quote} 14282\begin{quote}\begin{description} 14283\item[{retval}] \leavevmode\begin{itemize} 14284\item {} 14285\sphinxAtStartPar 142860 Success; otherwise \sphinxhyphen{} Kerberos error codes 14287 14288\end{itemize} 14289 14290\end{description}\end{quote} 14291 14292 14293\subsubsection{krb5\_deltat\_to\_string \sphinxhyphen{} Convert a relative time value to a string.} 14294\label{\detokenize{appdev/refs/api/krb5_deltat_to_string:krb5-deltat-to-string-convert-a-relative-time-value-to-a-string}}\label{\detokenize{appdev/refs/api/krb5_deltat_to_string::doc}}\index{krb5\_deltat\_to\_string (C function)@\spxentry{krb5\_deltat\_to\_string}\spxextra{C function}} 14295 14296\begin{fulllineitems} 14297\phantomsection\label{\detokenize{appdev/refs/api/krb5_deltat_to_string:c.krb5_deltat_to_string}}% 14298\pysigstartmultiline 14299\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_deltat\_to\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\DUrole{n}{deltat}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}}{}% 14300\pysigstopmultiline 14301\end{fulllineitems} 14302 14303\begin{quote}\begin{description} 14304\item[{param}] \leavevmode 14305\sphinxAtStartPar 14306\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{deltat} \sphinxhyphen{} Relative time value to convert 14307 14308\sphinxAtStartPar 14309\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to hold time string 14310 14311\sphinxAtStartPar 14312\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Storage available in \sphinxstyleemphasis{buffer} 14313 14314\end{description}\end{quote} 14315\begin{quote}\begin{description} 14316\item[{retval}] \leavevmode\begin{itemize} 14317\item {} 14318\sphinxAtStartPar 143190 Success; otherwise \sphinxhyphen{} Kerberos error codes 14320 14321\end{itemize} 14322 14323\end{description}\end{quote} 14324 14325 14326\subsubsection{krb5\_encode\_authdata\_container \sphinxhyphen{} Wrap authorization data in a container.} 14327\label{\detokenize{appdev/refs/api/krb5_encode_authdata_container:krb5-encode-authdata-container-wrap-authorization-data-in-a-container}}\label{\detokenize{appdev/refs/api/krb5_encode_authdata_container::doc}}\index{krb5\_encode\_authdata\_container (C function)@\spxentry{krb5\_encode\_authdata\_container}\spxextra{C function}} 14328 14329\begin{fulllineitems} 14330\phantomsection\label{\detokenize{appdev/refs/api/krb5_encode_authdata_container:c.krb5_encode_authdata_container}}% 14331\pysigstartmultiline 14332\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_encode\_authdata\_container}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{\DUrole{n}{krb5\_authdatatype}}}}\DUrole{w}{ }\DUrole{n}{type}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{authdata}, {\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{container}}{}% 14333\pysigstopmultiline 14334\end{fulllineitems} 14335 14336\begin{quote}\begin{description} 14337\item[{param}] \leavevmode 14338\sphinxAtStartPar 14339\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14340 14341\sphinxAtStartPar 14342\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{type} \sphinxhyphen{} Container type (see KRB5\_AUTHDATA macros) 14343 14344\sphinxAtStartPar 14345\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{authdata} \sphinxhyphen{} List of authorization data to be encoded 14346 14347\sphinxAtStartPar 14348\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{container} \sphinxhyphen{} List of encoded authorization data 14349 14350\end{description}\end{quote} 14351\begin{quote}\begin{description} 14352\item[{retval}] \leavevmode\begin{itemize} 14353\item {} 14354\sphinxAtStartPar 143550 Success; otherwise \sphinxhyphen{} Kerberos error codes 14356 14357\end{itemize} 14358 14359\end{description}\end{quote} 14360 14361\sphinxAtStartPar 14362The result is returned in \sphinxstyleemphasis{container} as a single\sphinxhyphen{}element list. 14363 14364 14365\sphinxstrong{See also:} 14366\nopagebreak 14367 14368 14369\sphinxAtStartPar 14370krb5\_decode\_authdata\_container() 14371 14372 14373 14374 14375\subsubsection{krb5\_enctype\_to\_name \sphinxhyphen{} Convert an encryption type to a name or alias.} 14376\label{\detokenize{appdev/refs/api/krb5_enctype_to_name:krb5-enctype-to-name-convert-an-encryption-type-to-a-name-or-alias}}\label{\detokenize{appdev/refs/api/krb5_enctype_to_name::doc}}\index{krb5\_enctype\_to\_name (C function)@\spxentry{krb5\_enctype\_to\_name}\spxextra{C function}} 14377 14378\begin{fulllineitems} 14379\phantomsection\label{\detokenize{appdev/refs/api/krb5_enctype_to_name:c.krb5_enctype_to_name}}% 14380\pysigstartmultiline 14381\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_enctype\_to\_name}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{n}{shortest}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}}{}% 14382\pysigstopmultiline 14383\end{fulllineitems} 14384 14385\begin{quote}\begin{description} 14386\item[{param}] \leavevmode 14387\sphinxAtStartPar 14388\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 14389 14390\sphinxAtStartPar 14391\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{shortest} \sphinxhyphen{} Flag 14392 14393\sphinxAtStartPar 14394\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to hold encryption type string 14395 14396\sphinxAtStartPar 14397\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Storage available in \sphinxstyleemphasis{buffer} 14398 14399\end{description}\end{quote} 14400\begin{quote}\begin{description} 14401\item[{retval}] \leavevmode\begin{itemize} 14402\item {} 14403\sphinxAtStartPar 144040 Success; otherwise \sphinxhyphen{} Kerberos error codes 14405 14406\end{itemize} 14407 14408\end{description}\end{quote} 14409 14410\sphinxAtStartPar 14411If \sphinxstyleemphasis{shortest} is FALSE, this function returns the enctype’s canonical name (like”aes128\sphinxhyphen{}cts\sphinxhyphen{}hmac\sphinxhyphen{}sha1\sphinxhyphen{}96”). If \sphinxstyleemphasis{shortest} is TRUE, it return the enctype’s shortest alias (like”aes128\sphinxhyphen{}cts”). 14412 14413\begin{sphinxadmonition}{note}{Note:} 14414\sphinxAtStartPar 14415New in 1.9 14416\end{sphinxadmonition} 14417 14418 14419\subsubsection{krb5\_enctype\_to\_string \sphinxhyphen{} Convert an encryption type to a string.} 14420\label{\detokenize{appdev/refs/api/krb5_enctype_to_string:krb5-enctype-to-string-convert-an-encryption-type-to-a-string}}\label{\detokenize{appdev/refs/api/krb5_enctype_to_string::doc}}\index{krb5\_enctype\_to\_string (C function)@\spxentry{krb5\_enctype\_to\_string}\spxextra{C function}} 14421 14422\begin{fulllineitems} 14423\phantomsection\label{\detokenize{appdev/refs/api/krb5_enctype_to_string:c.krb5_enctype_to_string}}% 14424\pysigstartmultiline 14425\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_enctype\_to\_string}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{buffer}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{buflen}}{}% 14426\pysigstopmultiline 14427\end{fulllineitems} 14428 14429\begin{quote}\begin{description} 14430\item[{param}] \leavevmode 14431\sphinxAtStartPar 14432\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{enctype} \sphinxhyphen{} Encryption type 14433 14434\sphinxAtStartPar 14435\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{buffer} \sphinxhyphen{} Buffer to hold encryption type string 14436 14437\sphinxAtStartPar 14438\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{buflen} \sphinxhyphen{} Storage available in \sphinxstyleemphasis{buffer} 14439 14440\end{description}\end{quote} 14441\begin{quote}\begin{description} 14442\item[{retval}] \leavevmode\begin{itemize} 14443\item {} 14444\sphinxAtStartPar 144450 Success; otherwise \sphinxhyphen{} Kerberos error codes 14446 14447\end{itemize} 14448 14449\end{description}\end{quote} 14450 14451 14452\subsubsection{krb5\_free\_checksum \sphinxhyphen{} Free a krb5\_checksum structure.} 14453\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)@\spxentry{krb5\_free\_checksum}\spxextra{C function}} 14454 14455\begin{fulllineitems} 14456\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_checksum:c.krb5_free_checksum}}% 14457\pysigstartmultiline 14458\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 14459\pysigstopmultiline 14460\end{fulllineitems} 14461 14462\begin{quote}\begin{description} 14463\item[{param}] \leavevmode 14464\sphinxAtStartPar 14465\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14466 14467\sphinxAtStartPar 14468\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Checksum structure to be freed 14469 14470\end{description}\end{quote} 14471 14472\sphinxAtStartPar 14473This function frees the contents of \sphinxstyleemphasis{val} and the structure itself. 14474 14475 14476\subsubsection{krb5\_free\_checksum\_contents \sphinxhyphen{} Free the contents of a krb5\_checksum structure.} 14477\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)@\spxentry{krb5\_free\_checksum\_contents}\spxextra{C function}} 14478 14479\begin{fulllineitems} 14480\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_checksum_contents:c.krb5_free_checksum_contents}}% 14481\pysigstartmultiline 14482\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_checksum\_contents}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 14483\pysigstopmultiline 14484\end{fulllineitems} 14485 14486\begin{quote}\begin{description} 14487\item[{param}] \leavevmode 14488\sphinxAtStartPar 14489\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14490 14491\sphinxAtStartPar 14492\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Checksum structure to free contents of 14493 14494\end{description}\end{quote} 14495 14496\sphinxAtStartPar 14497This function frees the contents of \sphinxstyleemphasis{val} , but not the structure itself. It sets the checksum’s data pointer to null and (beginning in release 1.19) sets its length to zero. 14498 14499 14500\subsubsection{krb5\_free\_cksumtypes \sphinxhyphen{} Free an array of checksum types.} 14501\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)@\spxentry{krb5\_free\_cksumtypes}\spxextra{C function}} 14502 14503\begin{fulllineitems} 14504\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_cksumtypes:c.krb5_free_cksumtypes}}% 14505\pysigstartmultiline 14506\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_cksumtypes}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{val}}{}% 14507\pysigstopmultiline 14508\end{fulllineitems} 14509 14510\begin{quote}\begin{description} 14511\item[{param}] \leavevmode 14512\sphinxAtStartPar 14513\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14514 14515\sphinxAtStartPar 14516\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{val} \sphinxhyphen{} Array of checksum types to be freed 14517 14518\end{description}\end{quote} 14519 14520 14521\subsubsection{krb5\_free\_tgt\_creds \sphinxhyphen{} Free an array of credential structures.} 14522\label{\detokenize{appdev/refs/api/krb5_free_tgt_creds:krb5-free-tgt-creds-free-an-array-of-credential-structures}}\label{\detokenize{appdev/refs/api/krb5_free_tgt_creds::doc}}\index{krb5\_free\_tgt\_creds (C function)@\spxentry{krb5\_free\_tgt\_creds}\spxextra{C function}} 14523 14524\begin{fulllineitems} 14525\phantomsection\label{\detokenize{appdev/refs/api/krb5_free_tgt_creds:c.krb5_free_tgt_creds}}% 14526\pysigstartmultiline 14527\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_free\_tgt\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{tgts}}{}% 14528\pysigstopmultiline 14529\end{fulllineitems} 14530 14531\begin{quote}\begin{description} 14532\item[{param}] \leavevmode 14533\sphinxAtStartPar 14534\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14535 14536\sphinxAtStartPar 14537\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{tgts} \sphinxhyphen{} Null\sphinxhyphen{}terminated array of credentials to free 14538 14539\end{description}\end{quote} 14540 14541\begin{sphinxadmonition}{note}{Note:} 14542\sphinxAtStartPar 14543The last entry in the array \sphinxstyleemphasis{tgts} must be a NULL pointer. 14544\end{sphinxadmonition} 14545 14546 14547\subsubsection{krb5\_k\_create\_key \sphinxhyphen{} Create a krb5\_key from the enctype and key data in a keyblock.} 14548\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}}\label{\detokenize{appdev/refs/api/krb5_k_create_key::doc}}\index{krb5\_k\_create\_key (C function)@\spxentry{krb5\_k\_create\_key}\spxextra{C function}} 14549 14550\begin{fulllineitems} 14551\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_create_key:c.krb5_k_create_key}}% 14552\pysigstartmultiline 14553\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_create\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{out}}{}% 14554\pysigstopmultiline 14555\end{fulllineitems} 14556 14557\begin{quote}\begin{description} 14558\item[{param}] \leavevmode 14559\sphinxAtStartPar 14560\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14561 14562\sphinxAtStartPar 14563\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key\_data} \sphinxhyphen{} Keyblock 14564 14565\sphinxAtStartPar 14566\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out} \sphinxhyphen{} Opaque key 14567 14568\end{description}\end{quote} 14569\begin{quote}\begin{description} 14570\item[{retval}] \leavevmode\begin{itemize} 14571\item {} 14572\sphinxAtStartPar 145730 Success; otherwise \sphinxhyphen{} KRB5\_BAD\_ENCTYPE 14574 14575\end{itemize} 14576 14577\end{description}\end{quote} 14578 14579\sphinxAtStartPar 14580The reference count on a key \sphinxstyleemphasis{out} is set to 1. Use krb5\_k\_free\_key() to free \sphinxstyleemphasis{out} when it is no longer needed. 14581 14582 14583\subsubsection{krb5\_k\_decrypt \sphinxhyphen{} Decrypt data using a key (operates on opaque key).} 14584\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)@\spxentry{krb5\_k\_decrypt}\spxextra{C function}} 14585 14586\begin{fulllineitems} 14587\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_decrypt:c.krb5_k_decrypt}}% 14588\pysigstartmultiline 14589\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_decrypt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 14590\pysigstopmultiline 14591\end{fulllineitems} 14592 14593\begin{quote}\begin{description} 14594\item[{param}] \leavevmode 14595\sphinxAtStartPar 14596\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14597 14598\sphinxAtStartPar 14599\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key 14600 14601\sphinxAtStartPar 14602\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14603 14604\sphinxAtStartPar 14605\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 14606 14607\sphinxAtStartPar 14608\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Encrypted data 14609 14610\sphinxAtStartPar 14611\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Decrypted data 14612 14613\end{description}\end{quote} 14614\begin{quote}\begin{description} 14615\item[{retval}] \leavevmode\begin{itemize} 14616\item {} 14617\sphinxAtStartPar 146180 Success; otherwise \sphinxhyphen{} Kerberos error codes 14619 14620\end{itemize} 14621 14622\end{description}\end{quote} 14623 14624\sphinxAtStartPar 14625This 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\sphinxhyphen{}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. 14626 14627\begin{sphinxadmonition}{note}{Note:} 14628\sphinxAtStartPar 14629The 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 krb5\_c\_decrypt() trim \sphinxstyleemphasis{output\sphinxhyphen{}\textgreater{}length} . For some enctypes, the resulting \sphinxstyleemphasis{output\sphinxhyphen{}\textgreater{}length} may include padding bytes. 14630\end{sphinxadmonition} 14631 14632 14633\subsubsection{krb5\_k\_decrypt\_iov \sphinxhyphen{} Decrypt data in place supporting AEAD (operates on opaque key).} 14634\label{\detokenize{appdev/refs/api/krb5_k_decrypt_iov:krb5-k-decrypt-iov-decrypt-data-in-place-supporting-aead-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_decrypt_iov::doc}}\index{krb5\_k\_decrypt\_iov (C function)@\spxentry{krb5\_k\_decrypt\_iov}\spxextra{C function}} 14635 14636\begin{fulllineitems} 14637\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_decrypt_iov:c.krb5_k_decrypt_iov}}% 14638\pysigstartmultiline 14639\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_decrypt\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 14640\pysigstopmultiline 14641\end{fulllineitems} 14642 14643\begin{quote}\begin{description} 14644\item[{param}] \leavevmode 14645\sphinxAtStartPar 14646\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14647 14648\sphinxAtStartPar 14649\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key 14650 14651\sphinxAtStartPar 14652\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14653 14654\sphinxAtStartPar 14655\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 14656 14657\sphinxAtStartPar 14658\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array. Modified in\sphinxhyphen{}place. 14659 14660\sphinxAtStartPar 14661\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 14662 14663\end{description}\end{quote} 14664\begin{quote}\begin{description} 14665\item[{retval}] \leavevmode\begin{itemize} 14666\item {} 14667\sphinxAtStartPar 146680 Success; otherwise \sphinxhyphen{} Kerberos error codes 14669 14670\end{itemize} 14671 14672\end{description}\end{quote} 14673 14674\sphinxAtStartPar 14675This function decrypts the data block \sphinxstyleemphasis{data} and stores the output in\sphinxhyphen{}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\sphinxhyphen{}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. 14676 14677 14678\sphinxstrong{See also:} 14679\nopagebreak 14680 14681 14682\sphinxAtStartPar 14683krb5\_k\_encrypt\_iov() 14684 14685 14686 14687\begin{sphinxadmonition}{note}{Note:} 14688\sphinxAtStartPar 14689On return from a krb5\_c\_decrypt\_iov() call, the \sphinxstyleemphasis{data\sphinxhyphen{}\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. 14690\end{sphinxadmonition} 14691 14692 14693\subsubsection{krb5\_k\_encrypt \sphinxhyphen{} Encrypt data using a key (operates on opaque key).} 14694\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)@\spxentry{krb5\_k\_encrypt}\spxextra{C function}} 14695 14696\begin{fulllineitems} 14697\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_encrypt:c.krb5_k_encrypt}}% 14698\pysigstartmultiline 14699\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_encrypt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 14700\pysigstopmultiline 14701\end{fulllineitems} 14702 14703\begin{quote}\begin{description} 14704\item[{param}] \leavevmode 14705\sphinxAtStartPar 14706\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14707 14708\sphinxAtStartPar 14709\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key 14710 14711\sphinxAtStartPar 14712\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14713 14714\sphinxAtStartPar 14715\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 14716 14717\sphinxAtStartPar 14718\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Data to be encrypted 14719 14720\sphinxAtStartPar 14721\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Encrypted data 14722 14723\end{description}\end{quote} 14724\begin{quote}\begin{description} 14725\item[{retval}] \leavevmode\begin{itemize} 14726\item {} 14727\sphinxAtStartPar 147280 Success; otherwise \sphinxhyphen{} Kerberos error codes 14729 14730\end{itemize} 14731 14732\end{description}\end{quote} 14733 14734\sphinxAtStartPar 14735This 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\sphinxhyphen{}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. 14736 14737\begin{sphinxadmonition}{note}{Note:} 14738\sphinxAtStartPar 14739The caller must initialize \sphinxstyleemphasis{output} and allocate at least enough space for the result (using krb5\_c\_encrypt\_length() to determine the amount of space needed). \sphinxstyleemphasis{output\sphinxhyphen{}\textgreater{}length} will be set to the actual length of the ciphertext. 14740\end{sphinxadmonition} 14741 14742 14743\subsubsection{krb5\_k\_encrypt\_iov \sphinxhyphen{} Encrypt data in place supporting AEAD (operates on opaque key).} 14744\label{\detokenize{appdev/refs/api/krb5_k_encrypt_iov:krb5-k-encrypt-iov-encrypt-data-in-place-supporting-aead-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_encrypt_iov::doc}}\index{krb5\_k\_encrypt\_iov (C function)@\spxentry{krb5\_k\_encrypt\_iov}\spxextra{C function}} 14745 14746\begin{fulllineitems} 14747\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_encrypt_iov:c.krb5_k_encrypt_iov}}% 14748\pysigstartmultiline 14749\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_encrypt\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cipher\_state}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 14750\pysigstopmultiline 14751\end{fulllineitems} 14752 14753\begin{quote}\begin{description} 14754\item[{param}] \leavevmode 14755\sphinxAtStartPar 14756\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14757 14758\sphinxAtStartPar 14759\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key 14760 14761\sphinxAtStartPar 14762\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14763 14764\sphinxAtStartPar 14765\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cipher\_state} \sphinxhyphen{} Cipher state; specify NULL if not needed 14766 14767\sphinxAtStartPar 14768\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array. Modified in\sphinxhyphen{}place. 14769 14770\sphinxAtStartPar 14771\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 14772 14773\end{description}\end{quote} 14774\begin{quote}\begin{description} 14775\item[{retval}] \leavevmode\begin{itemize} 14776\item {} 14777\sphinxAtStartPar 147780 Success; otherwise \sphinxhyphen{} Kerberos error codes 14779 14780\end{itemize} 14781 14782\end{description}\end{quote} 14783 14784\sphinxAtStartPar 14785This function encrypts the data block \sphinxstyleemphasis{data} and stores the output in\sphinxhyphen{}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\sphinxhyphen{}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. 14786 14787 14788\sphinxstrong{See also:} 14789\nopagebreak 14790 14791 14792\sphinxAtStartPar 14793krb5\_k\_decrypt\_iov() 14794 14795 14796 14797\begin{sphinxadmonition}{note}{Note:} 14798\sphinxAtStartPar 14799On return from a krb5\_c\_encrypt\_iov() call, the \sphinxstyleemphasis{data\sphinxhyphen{}\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. 14800\end{sphinxadmonition} 14801 14802 14803\subsubsection{krb5\_k\_free\_key \sphinxhyphen{} Decrement the reference count on a key and free it if it hits zero.} 14804\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)@\spxentry{krb5\_k\_free\_key}\spxextra{C function}} 14805 14806\begin{fulllineitems} 14807\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_free_key:c.krb5_k_free_key}}% 14808\pysigstartmultiline 14809\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_free\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}}{}% 14810\pysigstopmultiline 14811\end{fulllineitems} 14812 14813\begin{quote}\begin{description} 14814\item[{param}] \leavevmode 14815\sphinxAtStartPar 14816\sphinxstylestrong{context} 14817 14818\sphinxAtStartPar 14819\sphinxstylestrong{key} 14820 14821\end{description}\end{quote} 14822 14823 14824\subsubsection{krb5\_k\_key\_enctype \sphinxhyphen{} Retrieve the enctype of a krb5\_key structure.} 14825\label{\detokenize{appdev/refs/api/krb5_k_key_enctype:krb5-k-key-enctype-retrieve-the-enctype-of-a-krb5-key-structure}}\label{\detokenize{appdev/refs/api/krb5_k_key_enctype::doc}}\index{krb5\_k\_key\_enctype (C function)@\spxentry{krb5\_k\_key\_enctype}\spxextra{C function}} 14826 14827\begin{fulllineitems} 14828\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_key_enctype:c.krb5_k_key_enctype}}% 14829\pysigstartmultiline 14830\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_key\_enctype}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}}{}% 14831\pysigstopmultiline 14832\end{fulllineitems} 14833 14834\begin{quote}\begin{description} 14835\item[{param}] \leavevmode 14836\sphinxAtStartPar 14837\sphinxstylestrong{context} 14838 14839\sphinxAtStartPar 14840\sphinxstylestrong{key} 14841 14842\end{description}\end{quote} 14843 14844 14845\subsubsection{krb5\_k\_key\_keyblock \sphinxhyphen{} Retrieve a copy of the keyblock from a krb5\_key structure.} 14846\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)@\spxentry{krb5\_k\_key\_keyblock}\spxextra{C function}} 14847 14848\begin{fulllineitems} 14849\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_key_keyblock:c.krb5_k_key_keyblock}}% 14850\pysigstartmultiline 14851\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_key\_keyblock}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{key\_data}}{}% 14852\pysigstopmultiline 14853\end{fulllineitems} 14854 14855\begin{quote}\begin{description} 14856\item[{param}] \leavevmode 14857\sphinxAtStartPar 14858\sphinxstylestrong{context} 14859 14860\sphinxAtStartPar 14861\sphinxstylestrong{key} 14862 14863\sphinxAtStartPar 14864\sphinxstylestrong{key\_data} 14865 14866\end{description}\end{quote} 14867 14868 14869\subsubsection{krb5\_k\_make\_checksum \sphinxhyphen{} Compute a checksum (operates on opaque key).} 14870\label{\detokenize{appdev/refs/api/krb5_k_make_checksum:krb5-k-make-checksum-compute-a-checksum-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_make_checksum::doc}}\index{krb5\_k\_make\_checksum (C function)@\spxentry{krb5\_k\_make\_checksum}\spxextra{C function}} 14871 14872\begin{fulllineitems} 14873\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_make_checksum:c.krb5_k_make_checksum}}% 14874\pysigstartmultiline 14875\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_make\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cksum}}{}% 14876\pysigstopmultiline 14877\end{fulllineitems} 14878 14879\begin{quote}\begin{description} 14880\item[{param}] \leavevmode 14881\sphinxAtStartPar 14882\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14883 14884\sphinxAtStartPar 14885\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type (0 for mandatory type) 14886 14887\sphinxAtStartPar 14888\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 14889 14890\sphinxAtStartPar 14891\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14892 14893\sphinxAtStartPar 14894\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Input data 14895 14896\sphinxAtStartPar 14897\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{cksum} \sphinxhyphen{} Generated checksum 14898 14899\end{description}\end{quote} 14900\begin{quote}\begin{description} 14901\item[{retval}] \leavevmode\begin{itemize} 14902\item {} 14903\sphinxAtStartPar 149040 Success; otherwise \sphinxhyphen{} Kerberos error codes 14905 14906\end{itemize} 14907 14908\end{description}\end{quote} 14909 14910\sphinxAtStartPar 14911This 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\sphinxhyphen{}null, the checksum type will be the mandatory\sphinxhyphen{}to\sphinxhyphen{}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 krb5\_free\_checksum\_contents() when it is no longer needed. 14912 14913 14914\sphinxstrong{See also:} 14915\nopagebreak 14916 14917 14918\sphinxAtStartPar 14919krb5\_c\_verify\_checksum() 14920 14921 14922 14923\begin{sphinxadmonition}{note}{Note:} 14924\sphinxAtStartPar 14925This function is similar to krb5\_c\_make\_checksum(), but operates on opaque \sphinxstyleemphasis{key} . 14926\end{sphinxadmonition} 14927 14928 14929\subsubsection{krb5\_k\_make\_checksum\_iov \sphinxhyphen{} Fill in a checksum element in IOV array (operates on opaque key)} 14930\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}}\label{\detokenize{appdev/refs/api/krb5_k_make_checksum_iov::doc}}\index{krb5\_k\_make\_checksum\_iov (C function)@\spxentry{krb5\_k\_make\_checksum\_iov}\spxextra{C function}} 14931 14932\begin{fulllineitems} 14933\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_make_checksum_iov:c.krb5_k_make_checksum_iov}}% 14934\pysigstartmultiline 14935\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_make\_checksum\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, {\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}}{}% 14936\pysigstopmultiline 14937\end{fulllineitems} 14938 14939\begin{quote}\begin{description} 14940\item[{param}] \leavevmode 14941\sphinxAtStartPar 14942\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 14943 14944\sphinxAtStartPar 14945\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type (0 for mandatory type) 14946 14947\sphinxAtStartPar 14948\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 14949 14950\sphinxAtStartPar 14951\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 14952 14953\sphinxAtStartPar 14954\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array 14955 14956\sphinxAtStartPar 14957\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 14958 14959\end{description}\end{quote} 14960\begin{quote}\begin{description} 14961\item[{retval}] \leavevmode\begin{itemize} 14962\item {} 14963\sphinxAtStartPar 149640 Success; otherwise \sphinxhyphen{} Kerberos error codes 14965 14966\end{itemize} 14967 14968\end{description}\end{quote} 14969 14970\sphinxAtStartPar 14971Create a checksum in the \#KRB5\_CRYPTO\_TYPE\_CHECKSUM element over \#KRB5\_CRYPTO\_TYPE\_DATA and \#KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY chunks in \sphinxstyleemphasis{data} . Only the \#KRB5\_CRYPTO\_TYPE\_CHECKSUM region is modified. 14972 14973 14974\sphinxstrong{See also:} 14975\nopagebreak 14976 14977 14978\sphinxAtStartPar 14979krb5\_k\_verify\_checksum\_iov() 14980 14981 14982 14983\begin{sphinxadmonition}{note}{Note:} 14984\sphinxAtStartPar 14985This function is similar to krb5\_c\_make\_checksum\_iov(), but operates on opaque \sphinxstyleemphasis{key} . 14986\end{sphinxadmonition} 14987 14988 14989\subsubsection{krb5\_k\_prf \sphinxhyphen{} Generate enctype\sphinxhyphen{}specific pseudo\sphinxhyphen{}random bytes (operates on opaque key).} 14990\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)@\spxentry{krb5\_k\_prf}\spxextra{C function}} 14991 14992\begin{fulllineitems} 14993\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_prf:c.krb5_k_prf}}% 14994\pysigstartmultiline 14995\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_prf}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{input}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{output}}{}% 14996\pysigstopmultiline 14997\end{fulllineitems} 14998 14999\begin{quote}\begin{description} 15000\item[{param}] \leavevmode 15001\sphinxAtStartPar 15002\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15003 15004\sphinxAtStartPar 15005\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Key 15006 15007\sphinxAtStartPar 15008\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{input} \sphinxhyphen{} Input data 15009 15010\sphinxAtStartPar 15011\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{output} \sphinxhyphen{} Output data 15012 15013\end{description}\end{quote} 15014\begin{quote}\begin{description} 15015\item[{retval}] \leavevmode\begin{itemize} 15016\item {} 15017\sphinxAtStartPar 150180 Success; otherwise \sphinxhyphen{} Kerberos error codes 15019 15020\end{itemize} 15021 15022\end{description}\end{quote} 15023 15024\sphinxAtStartPar 15025This function selects a pseudo\sphinxhyphen{}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. 15026 15027\begin{sphinxadmonition}{note}{Note:} 15028\sphinxAtStartPar 15029This function is similar to krb5\_c\_prf(), but operates on opaque \sphinxstyleemphasis{key} . 15030\end{sphinxadmonition} 15031 15032 15033\subsubsection{krb5\_k\_reference\_key \sphinxhyphen{} Increment the reference count on a key.} 15034\label{\detokenize{appdev/refs/api/krb5_k_reference_key:krb5-k-reference-key-increment-the-reference-count-on-a-key}}\label{\detokenize{appdev/refs/api/krb5_k_reference_key::doc}}\index{krb5\_k\_reference\_key (C function)@\spxentry{krb5\_k\_reference\_key}\spxextra{C function}} 15035 15036\begin{fulllineitems} 15037\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_reference_key:c.krb5_k_reference_key}}% 15038\pysigstartmultiline 15039\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_reference\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}}{}% 15040\pysigstopmultiline 15041\end{fulllineitems} 15042 15043\begin{quote}\begin{description} 15044\item[{param}] \leavevmode 15045\sphinxAtStartPar 15046\sphinxstylestrong{context} 15047 15048\sphinxAtStartPar 15049\sphinxstylestrong{key} 15050 15051\end{description}\end{quote} 15052 15053 15054\subsubsection{krb5\_k\_verify\_checksum \sphinxhyphen{} Verify a checksum (operates on opaque key).} 15055\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum:krb5-k-verify-checksum-verify-a-checksum-operates-on-opaque-key}}\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum::doc}}\index{krb5\_k\_verify\_checksum (C function)@\spxentry{krb5\_k\_verify\_checksum}\spxextra{C function}} 15056 15057\begin{fulllineitems} 15058\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum:c.krb5_k_verify_checksum}}% 15059\pysigstartmultiline 15060\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_verify\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cksum}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{valid}}{}% 15061\pysigstopmultiline 15062\end{fulllineitems} 15063 15064\begin{quote}\begin{description} 15065\item[{param}] \leavevmode 15066\sphinxAtStartPar 15067\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15068 15069\sphinxAtStartPar 15070\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 15071 15072\sphinxAtStartPar 15073\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} \sphinxstyleemphasis{key} usage 15074 15075\sphinxAtStartPar 15076\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} Data to be used to compute a new checksum using \sphinxstyleemphasis{key} to compare \sphinxstyleemphasis{cksum} against 15077 15078\sphinxAtStartPar 15079\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksum} \sphinxhyphen{} Checksum to be verified 15080 15081\sphinxAtStartPar 15082\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} \sphinxhyphen{} Non\sphinxhyphen{}zero for success, zero for failure 15083 15084\end{description}\end{quote} 15085\begin{quote}\begin{description} 15086\item[{retval}] \leavevmode\begin{itemize} 15087\item {} 15088\sphinxAtStartPar 150890 Success; otherwise \sphinxhyphen{} Kerberos error codes 15090 15091\end{itemize} 15092 15093\end{description}\end{quote} 15094 15095\sphinxAtStartPar 15096This 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. 15097 15098\begin{sphinxadmonition}{note}{Note:} 15099\sphinxAtStartPar 15100This function is similar to krb5\_c\_verify\_checksum(), but operates on opaque \sphinxstyleemphasis{key} . 15101\end{sphinxadmonition} 15102 15103 15104\subsubsection{krb5\_k\_verify\_checksum\_iov \sphinxhyphen{} Validate a checksum element in IOV array (operates on opaque key).} 15105\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)@\spxentry{krb5\_k\_verify\_checksum\_iov}\spxextra{C function}} 15106 15107\begin{fulllineitems} 15108\phantomsection\label{\detokenize{appdev/refs/api/krb5_k_verify_checksum_iov:c.krb5_k_verify_checksum_iov}}% 15109\pysigstartmultiline 15110\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_k\_verify\_checksum\_iov}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{cksumtype}, {\hyperref[\detokenize{appdev/refs/types/krb5_key:c.krb5_key}]{\sphinxcrossref{\DUrole{n}{krb5\_key}}}}\DUrole{w}{ }\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}]{\sphinxcrossref{\DUrole{n}{krb5\_keyusage}}}}\DUrole{w}{ }\DUrole{n}{usage}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{num\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{valid}}{}% 15111\pysigstopmultiline 15112\end{fulllineitems} 15113 15114\begin{quote}\begin{description} 15115\item[{param}] \leavevmode 15116\sphinxAtStartPar 15117\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15118 15119\sphinxAtStartPar 15120\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{cksumtype} \sphinxhyphen{} Checksum type (0 for mandatory type) 15121 15122\sphinxAtStartPar 15123\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{key} \sphinxhyphen{} Encryption key for a keyed checksum 15124 15125\sphinxAtStartPar 15126\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{usage} \sphinxhyphen{} Key usage (see KRB5\_KEYUSAGE macros) 15127 15128\sphinxAtStartPar 15129\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{data} \sphinxhyphen{} IOV array 15130 15131\sphinxAtStartPar 15132\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{num\_data} \sphinxhyphen{} Size of \sphinxstyleemphasis{data} 15133 15134\sphinxAtStartPar 15135\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{valid} \sphinxhyphen{} Non\sphinxhyphen{}zero for success, zero for failure 15136 15137\end{description}\end{quote} 15138\begin{quote}\begin{description} 15139\item[{retval}] \leavevmode\begin{itemize} 15140\item {} 15141\sphinxAtStartPar 151420 Success; otherwise \sphinxhyphen{} Kerberos error codes 15143 15144\end{itemize} 15145 15146\end{description}\end{quote} 15147 15148\sphinxAtStartPar 15149Confirm that the checksum in the \#KRB5\_CRYPTO\_TYPE\_CHECKSUM element is a valid checksum of the \#KRB5\_CRYPTO\_TYPE\_DATA and \#KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY regions in the iov. 15150 15151 15152\sphinxstrong{See also:} 15153\nopagebreak 15154 15155 15156\sphinxAtStartPar 15157krb5\_k\_make\_checksum\_iov() 15158 15159 15160 15161\begin{sphinxadmonition}{note}{Note:} 15162\sphinxAtStartPar 15163This function is similar to krb5\_c\_verify\_checksum\_iov(), but operates on opaque \sphinxstyleemphasis{key} . 15164\end{sphinxadmonition} 15165 15166 15167\subsection{Legacy convenience interfaces} 15168\label{\detokenize{appdev/refs/api/index:legacy-convenience-interfaces}} 15169 15170\subsubsection{krb5\_recvauth \sphinxhyphen{} Server function for sendauth protocol.} 15171\label{\detokenize{appdev/refs/api/krb5_recvauth:krb5-recvauth-server-function-for-sendauth-protocol}}\label{\detokenize{appdev/refs/api/krb5_recvauth::doc}}\index{krb5\_recvauth (C function)@\spxentry{krb5\_recvauth}\spxextra{C function}} 15172 15173\begin{fulllineitems} 15174\phantomsection\label{\detokenize{appdev/refs/api/krb5_recvauth:c.krb5_recvauth}}% 15175\pysigstartmultiline 15176\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_recvauth}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{fd}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{appl\_version}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{n}{flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ticket}}{}% 15177\pysigstopmultiline 15178\end{fulllineitems} 15179 15180\begin{quote}\begin{description} 15181\item[{param}] \leavevmode 15182\sphinxAtStartPar 15183\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15184 15185\sphinxAtStartPar 15186\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Pre\sphinxhyphen{}existing or newly created auth context 15187 15188\sphinxAtStartPar 15189\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fd} \sphinxhyphen{} File descriptor 15190 15191\sphinxAtStartPar 15192\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appl\_version} \sphinxhyphen{} Application protocol version to be matched against the client’s application version 15193 15194\sphinxAtStartPar 15195\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Server principal (NULL for any in \sphinxstyleemphasis{keytab} ) 15196 15197\sphinxAtStartPar 15198\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Additional specifications 15199 15200\sphinxAtStartPar 15201\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Key table containing service keys 15202 15203\sphinxAtStartPar 15204\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ticket} \sphinxhyphen{} Ticket (NULL if not needed) 15205 15206\end{description}\end{quote} 15207\begin{quote}\begin{description} 15208\item[{retval}] \leavevmode\begin{itemize} 15209\item {} 15210\sphinxAtStartPar 152110 Success; otherwise \sphinxhyphen{} Kerberos error codes 15212 15213\end{itemize} 15214 15215\end{description}\end{quote} 15216 15217\sphinxAtStartPar 15218This function performs the server side of a sendauth/recvauth exchange by sending and receiving messages over \sphinxstyleemphasis{fd} . 15219 15220\sphinxAtStartPar 15221Use krb5\_free\_ticket() to free \sphinxstyleemphasis{ticket} when it is no longer needed. 15222 15223 15224\sphinxstrong{See also:} 15225\nopagebreak 15226 15227 15228\sphinxAtStartPar 15229krb5\_sendauth() 15230 15231 15232 15233 15234\subsubsection{krb5\_recvauth\_version \sphinxhyphen{} Server function for sendauth protocol with version parameter.} 15235\label{\detokenize{appdev/refs/api/krb5_recvauth_version:krb5-recvauth-version-server-function-for-sendauth-protocol-with-version-parameter}}\label{\detokenize{appdev/refs/api/krb5_recvauth_version::doc}}\index{krb5\_recvauth\_version (C function)@\spxentry{krb5\_recvauth\_version}\spxextra{C function}} 15236 15237\begin{fulllineitems} 15238\phantomsection\label{\detokenize{appdev/refs/api/krb5_recvauth_version:c.krb5_recvauth_version}}% 15239\pysigstartmultiline 15240\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_recvauth\_version}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{fd}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\DUrole{n}{flags}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ticket}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{version}}{}% 15241\pysigstopmultiline 15242\end{fulllineitems} 15243 15244\begin{quote}\begin{description} 15245\item[{param}] \leavevmode 15246\sphinxAtStartPar 15247\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15248 15249\sphinxAtStartPar 15250\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Pre\sphinxhyphen{}existing or newly created auth context 15251 15252\sphinxAtStartPar 15253\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fd} \sphinxhyphen{} File descriptor 15254 15255\sphinxAtStartPar 15256\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Server principal (NULL for any in \sphinxstyleemphasis{keytab} ) 15257 15258\sphinxAtStartPar 15259\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{flags} \sphinxhyphen{} Additional specifications 15260 15261\sphinxAtStartPar 15262\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{keytab} \sphinxhyphen{} Decryption key 15263 15264\sphinxAtStartPar 15265\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{ticket} \sphinxhyphen{} Ticket (NULL if not needed) 15266 15267\sphinxAtStartPar 15268\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{version} \sphinxhyphen{} sendauth protocol version (NULL if not needed) 15269 15270\end{description}\end{quote} 15271\begin{quote}\begin{description} 15272\item[{retval}] \leavevmode\begin{itemize} 15273\item {} 15274\sphinxAtStartPar 152750 Success; otherwise \sphinxhyphen{} Kerberos error codes 15276 15277\end{itemize} 15278 15279\end{description}\end{quote} 15280 15281\sphinxAtStartPar 15282This function is similar to krb5\_recvauth() with the additional output information place into \sphinxstyleemphasis{version} . 15283 15284 15285\subsubsection{krb5\_sendauth \sphinxhyphen{} Client function for sendauth protocol.} 15286\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)@\spxentry{krb5\_sendauth}\spxextra{C function}} 15287 15288\begin{fulllineitems} 15289\phantomsection\label{\detokenize{appdev/refs/api/krb5_sendauth:c.krb5_sendauth}}% 15290\pysigstartmultiline 15291\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_sendauth}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{fd}, \DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{appl\_version}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{client}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{server}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{ap\_req\_options}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_data}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{error}, {\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{rep\_result}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out\_creds}}{}% 15292\pysigstopmultiline 15293\end{fulllineitems} 15294 15295\begin{quote}\begin{description} 15296\item[{param}] \leavevmode 15297\sphinxAtStartPar 15298\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15299 15300\sphinxAtStartPar 15301\sphinxstylestrong{{[}inout{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Pre\sphinxhyphen{}existing or newly created auth context 15302 15303\sphinxAtStartPar 15304\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{fd} \sphinxhyphen{} File descriptor that describes network socket 15305 15306\sphinxAtStartPar 15307\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{appl\_version} \sphinxhyphen{} Application protocol version to be matched with the receiver’s application version 15308 15309\sphinxAtStartPar 15310\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{client} \sphinxhyphen{} Client principal 15311 15312\sphinxAtStartPar 15313\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{server} \sphinxhyphen{} Server principal 15314 15315\sphinxAtStartPar 15316\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ap\_req\_options} \sphinxhyphen{} Options (see AP\_OPTS macros) 15317 15318\sphinxAtStartPar 15319\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_data} \sphinxhyphen{} Data to be sent to the server 15320 15321\sphinxAtStartPar 15322\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{in\_creds} \sphinxhyphen{} Input credentials, or NULL to use \sphinxstyleemphasis{ccache} 15323 15324\sphinxAtStartPar 15325\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{ccache} \sphinxhyphen{} Credential cache 15326 15327\sphinxAtStartPar 15328\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{error} \sphinxhyphen{} If non\sphinxhyphen{}null, contains KRB\_ERROR message returned from server 15329 15330\sphinxAtStartPar 15331\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{rep\_result} \sphinxhyphen{} If non\sphinxhyphen{}null and \sphinxstyleemphasis{ap\_req\_options} is \#AP\_OPTS\_MUTUAL\_REQUIRED, contains the result of mutual authentication exchange 15332 15333\sphinxAtStartPar 15334\sphinxstylestrong{{[}out{]}} \sphinxstylestrong{out\_creds} \sphinxhyphen{} If non\sphinxhyphen{}null, the retrieved credentials 15335 15336\end{description}\end{quote} 15337\begin{quote}\begin{description} 15338\item[{retval}] \leavevmode\begin{itemize} 15339\item {} 15340\sphinxAtStartPar 153410 Success; otherwise \sphinxhyphen{} Kerberos error codes 15342 15343\end{itemize} 15344 15345\end{description}\end{quote} 15346 15347\sphinxAtStartPar 15348This function performs the client side of a sendauth/recvauth exchange by sending and receiving messages over \sphinxstyleemphasis{fd} . 15349 15350\sphinxAtStartPar 15351Credentials may be specified in three ways: 15352\begin{quote} 15353\begin{itemize} 15354\item {} 15355\sphinxAtStartPar 15356If \sphinxstyleemphasis{in\_creds} is NULL, credentials are obtained with krb5\_get\_credentials() using the principals \sphinxstyleemphasis{client} and \sphinxstyleemphasis{server} . \sphinxstyleemphasis{server} must be non\sphinxhyphen{}null; \sphinxstyleemphasis{client} may NULL to use the default principal of \sphinxstyleemphasis{ccache} . 15357 15358\item {} 15359\sphinxAtStartPar 15360If \sphinxstyleemphasis{in\_creds} is non\sphinxhyphen{}null, but does not contain a ticket, credentials for the exchange are obtained with krb5\_get\_credentials() using \sphinxstyleemphasis{in\_creds} . In this case, the values of \sphinxstyleemphasis{client} and \sphinxstyleemphasis{server} are unused. 15361 15362\item {} 15363\sphinxAtStartPar 15364If \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. 15365 15366\end{itemize} 15367 15368\sphinxAtStartPar 15369If the server is using a different application protocol than that specified in \sphinxstyleemphasis{appl\_version} , an error will be returned. 15370\end{quote} 15371 15372\sphinxAtStartPar 15373Use krb5\_free\_creds() to free \sphinxstyleemphasis{out\_creds} , krb5\_free\_ap\_rep\_enc\_part() to free \sphinxstyleemphasis{rep\_result} , and krb5\_free\_error() to free \sphinxstyleemphasis{error} when they are no longer needed. 15374 15375 15376\sphinxstrong{See also:} 15377\nopagebreak 15378 15379 15380\sphinxAtStartPar 15381krb5\_recvauth() 15382 15383 15384 15385 15386\subsection{Deprecated public interfaces} 15387\label{\detokenize{appdev/refs/api/index:deprecated-public-interfaces}} 15388 15389\subsubsection{krb5\_524\_convert\_creds \sphinxhyphen{} Convert a Kerberos V5 credentials to a Kerberos V4 credentials.} 15390\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)@\spxentry{krb5\_524\_convert\_creds}\spxextra{C function}} 15391 15392\begin{fulllineitems} 15393\phantomsection\label{\detokenize{appdev/refs/api/krb5_524_convert_creds:c.krb5_524_convert_creds}}% 15394\pysigstartmultiline 15395\pysiglinewithargsret{\DUrole{kt}{int}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_524\_convert\_creds}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{v5creds}, \DUrole{k}{struct}\DUrole{w}{ }\DUrole{n}{credentials}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{v4creds}}{}% 15396\pysigstopmultiline 15397\end{fulllineitems} 15398 15399\begin{quote}\begin{description} 15400\item[{param}] \leavevmode 15401\sphinxAtStartPar 15402\sphinxstylestrong{context} 15403 15404\sphinxAtStartPar 15405\sphinxstylestrong{v5creds} 15406 15407\sphinxAtStartPar 15408\sphinxstylestrong{v4creds} 15409 15410\end{description}\end{quote} 15411\begin{quote}\begin{description} 15412\item[{retval}] \leavevmode\begin{itemize} 15413\item {} 15414\sphinxAtStartPar 15415KRB524\_KRB4\_DISABLED (always) 15416 15417\end{itemize} 15418 15419\end{description}\end{quote} 15420 15421\begin{sphinxadmonition}{note}{Note:} 15422\sphinxAtStartPar 15423Not implemented 15424\end{sphinxadmonition} 15425 15426 15427\subsubsection{krb5\_auth\_con\_getlocalsubkey} 15428\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalsubkey:krb5-auth-con-getlocalsubkey}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalsubkey::doc}}\index{krb5\_auth\_con\_getlocalsubkey (C function)@\spxentry{krb5\_auth\_con\_getlocalsubkey}\spxextra{C function}} 15429 15430\begin{fulllineitems} 15431\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getlocalsubkey:c.krb5_auth_con_getlocalsubkey}}% 15432\pysigstartmultiline 15433\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getlocalsubkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 15434\pysigstopmultiline 15435\end{fulllineitems} 15436 15437\begin{quote}\begin{description} 15438\item[{param}] \leavevmode 15439\sphinxAtStartPar 15440\sphinxstylestrong{context} 15441 15442\sphinxAtStartPar 15443\sphinxstylestrong{auth\_context} 15444 15445\sphinxAtStartPar 15446\sphinxstylestrong{keyblock} 15447 15448\end{description}\end{quote} 15449 15450\sphinxAtStartPar 15451DEPRECATED Replaced by krb5\_auth\_con\_getsendsubkey(). 15452 15453 15454\subsubsection{krb5\_auth\_con\_getremotesubkey} 15455\label{\detokenize{appdev/refs/api/krb5_auth_con_getremotesubkey:krb5-auth-con-getremotesubkey}}\label{\detokenize{appdev/refs/api/krb5_auth_con_getremotesubkey::doc}}\index{krb5\_auth\_con\_getremotesubkey (C function)@\spxentry{krb5\_auth\_con\_getremotesubkey}\spxextra{C function}} 15456 15457\begin{fulllineitems} 15458\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_getremotesubkey:c.krb5_auth_con_getremotesubkey}}% 15459\pysigstartmultiline 15460\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_getremotesubkey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 15461\pysigstopmultiline 15462\end{fulllineitems} 15463 15464\begin{quote}\begin{description} 15465\item[{param}] \leavevmode 15466\sphinxAtStartPar 15467\sphinxstylestrong{context} 15468 15469\sphinxAtStartPar 15470\sphinxstylestrong{auth\_context} 15471 15472\sphinxAtStartPar 15473\sphinxstylestrong{keyblock} 15474 15475\end{description}\end{quote} 15476 15477\sphinxAtStartPar 15478DEPRECATED Replaced by krb5\_auth\_con\_getrecvsubkey(). 15479 15480 15481\subsubsection{krb5\_auth\_con\_initivector \sphinxhyphen{} Cause an auth context to use cipher state.} 15482\label{\detokenize{appdev/refs/api/krb5_auth_con_initivector:krb5-auth-con-initivector-cause-an-auth-context-to-use-cipher-state}}\label{\detokenize{appdev/refs/api/krb5_auth_con_initivector::doc}}\index{krb5\_auth\_con\_initivector (C function)@\spxentry{krb5\_auth\_con\_initivector}\spxextra{C function}} 15483 15484\begin{fulllineitems} 15485\phantomsection\label{\detokenize{appdev/refs/api/krb5_auth_con_initivector:c.krb5_auth_con_initivector}}% 15486\pysigstartmultiline 15487\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_con\_initivector}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}]{\sphinxcrossref{\DUrole{n}{krb5\_auth\_context}}}}\DUrole{w}{ }\DUrole{n}{auth\_context}}{}% 15488\pysigstopmultiline 15489\end{fulllineitems} 15490 15491\begin{quote}\begin{description} 15492\item[{param}] \leavevmode 15493\sphinxAtStartPar 15494\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{context} \sphinxhyphen{} Library context 15495 15496\sphinxAtStartPar 15497\sphinxstylestrong{{[}in{]}} \sphinxstylestrong{auth\_context} \sphinxhyphen{} Authentication context 15498 15499\end{description}\end{quote} 15500\begin{quote}\begin{description} 15501\item[{retval}] \leavevmode\begin{itemize} 15502\item {} 15503\sphinxAtStartPar 155040 Success; otherwise \sphinxhyphen{} Kerberos error codes 15505 15506\end{itemize} 15507 15508\end{description}\end{quote} 15509 15510\sphinxAtStartPar 15511Prepare \sphinxstyleemphasis{auth\_context} to use cipher state when krb5\_mk\_priv() or krb5\_rd\_priv() encrypt or decrypt data. 15512 15513 15514\subsubsection{krb5\_build\_principal\_va} 15515\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)@\spxentry{krb5\_build\_principal\_va}\spxextra{C function}} 15516 15517\begin{fulllineitems} 15518\phantomsection\label{\detokenize{appdev/refs/api/krb5_build_principal_va:c.krb5_build_principal_va}}% 15519\pysigstartmultiline 15520\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_build\_principal\_va}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\DUrole{n}{princ}, \DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\DUrole{n}{rlen}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{realm}, \DUrole{n}{va\_list}\DUrole{w}{ }\DUrole{n}{ap}}{}% 15521\pysigstopmultiline 15522\end{fulllineitems} 15523 15524\begin{quote}\begin{description} 15525\item[{param}] \leavevmode 15526\sphinxAtStartPar 15527\sphinxstylestrong{context} 15528 15529\sphinxAtStartPar 15530\sphinxstylestrong{princ} 15531 15532\sphinxAtStartPar 15533\sphinxstylestrong{rlen} 15534 15535\sphinxAtStartPar 15536\sphinxstylestrong{realm} 15537 15538\sphinxAtStartPar 15539\sphinxstylestrong{ap} 15540 15541\end{description}\end{quote} 15542 15543\sphinxAtStartPar 15544DEPRECATED Replaced by krb5\_build\_principal\_alloc\_va(). 15545 15546 15547\subsubsection{krb5\_c\_random\_seed} 15548\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)@\spxentry{krb5\_c\_random\_seed}\spxextra{C function}} 15549 15550\begin{fulllineitems} 15551\phantomsection\label{\detokenize{appdev/refs/api/krb5_c_random_seed:c.krb5_c_random_seed}}% 15552\pysigstartmultiline 15553\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_c\_random\_seed}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}}{}% 15554\pysigstopmultiline 15555\end{fulllineitems} 15556 15557\begin{quote}\begin{description} 15558\item[{param}] \leavevmode 15559\sphinxAtStartPar 15560\sphinxstylestrong{context} 15561 15562\sphinxAtStartPar 15563\sphinxstylestrong{data} 15564 15565\end{description}\end{quote} 15566 15567\sphinxAtStartPar 15568DEPRECATED This call is no longer necessary. 15569 15570 15571\subsubsection{krb5\_calculate\_checksum} 15572\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)@\spxentry{krb5\_calculate\_checksum}\spxextra{C function}} 15573 15574\begin{fulllineitems} 15575\phantomsection\label{\detokenize{appdev/refs/api/krb5_calculate_checksum:c.krb5_calculate_checksum}}% 15576\pysigstartmultiline 15577\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_calculate\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{ctype}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_pointer}}}}\DUrole{w}{ }\DUrole{n}{in}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{in\_length}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_pointer}}}}\DUrole{w}{ }\DUrole{n}{seed}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{seed\_length}, {\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{outcksum}}{}% 15578\pysigstopmultiline 15579\end{fulllineitems} 15580 15581\begin{quote}\begin{description} 15582\item[{param}] \leavevmode 15583\sphinxAtStartPar 15584\sphinxstylestrong{context} 15585 15586\sphinxAtStartPar 15587\sphinxstylestrong{ctype} 15588 15589\sphinxAtStartPar 15590\sphinxstylestrong{in} 15591 15592\sphinxAtStartPar 15593\sphinxstylestrong{in\_length} 15594 15595\sphinxAtStartPar 15596\sphinxstylestrong{seed} 15597 15598\sphinxAtStartPar 15599\sphinxstylestrong{seed\_length} 15600 15601\sphinxAtStartPar 15602\sphinxstylestrong{outcksum} 15603 15604\end{description}\end{quote} 15605 15606\sphinxAtStartPar 15607DEPRECATED See krb5\_c\_make\_checksum() 15608 15609 15610\subsubsection{krb5\_checksum\_size} 15611\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)@\spxentry{krb5\_checksum\_size}\spxextra{C function}} 15612 15613\begin{fulllineitems} 15614\phantomsection\label{\detokenize{appdev/refs/api/krb5_checksum_size:c.krb5_checksum_size}}% 15615\pysigstartmultiline 15616\pysiglinewithargsret{\DUrole{n}{size\_t}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_checksum\_size}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{ctype}}{}% 15617\pysigstopmultiline 15618\end{fulllineitems} 15619 15620\begin{quote}\begin{description} 15621\item[{param}] \leavevmode 15622\sphinxAtStartPar 15623\sphinxstylestrong{context} 15624 15625\sphinxAtStartPar 15626\sphinxstylestrong{ctype} 15627 15628\end{description}\end{quote} 15629 15630\sphinxAtStartPar 15631DEPRECATED See krb5\_c\_checksum\_length() 15632 15633 15634\subsubsection{krb5\_encrypt} 15635\label{\detokenize{appdev/refs/api/krb5_encrypt:krb5-encrypt}}\label{\detokenize{appdev/refs/api/krb5_encrypt::doc}}\index{krb5\_encrypt (C function)@\spxentry{krb5\_encrypt}\spxextra{C function}} 15636 15637\begin{fulllineitems} 15638\phantomsection\label{\detokenize{appdev/refs/api/krb5_encrypt:c.krb5_encrypt}}% 15639\pysigstartmultiline 15640\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_encrypt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_pointer}}}}\DUrole{w}{ }\DUrole{n}{inptr}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{outptr}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{size}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{ivec}}{}% 15641\pysigstopmultiline 15642\end{fulllineitems} 15643 15644\begin{quote}\begin{description} 15645\item[{param}] \leavevmode 15646\sphinxAtStartPar 15647\sphinxstylestrong{context} 15648 15649\sphinxAtStartPar 15650\sphinxstylestrong{inptr} 15651 15652\sphinxAtStartPar 15653\sphinxstylestrong{outptr} 15654 15655\sphinxAtStartPar 15656\sphinxstylestrong{size} 15657 15658\sphinxAtStartPar 15659\sphinxstylestrong{eblock} 15660 15661\sphinxAtStartPar 15662\sphinxstylestrong{ivec} 15663 15664\end{description}\end{quote} 15665 15666\sphinxAtStartPar 15667DEPRECATED Replaced by krb5\_c\_* API family. 15668 15669 15670\subsubsection{krb5\_decrypt} 15671\label{\detokenize{appdev/refs/api/krb5_decrypt:krb5-decrypt}}\label{\detokenize{appdev/refs/api/krb5_decrypt::doc}}\index{krb5\_decrypt (C function)@\spxentry{krb5\_decrypt}\spxextra{C function}} 15672 15673\begin{fulllineitems} 15674\phantomsection\label{\detokenize{appdev/refs/api/krb5_decrypt:c.krb5_decrypt}}% 15675\pysigstartmultiline 15676\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_decrypt}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_pointer}}}}\DUrole{w}{ }\DUrole{n}{inptr}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{outptr}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{size}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{ivec}}{}% 15677\pysigstopmultiline 15678\end{fulllineitems} 15679 15680\begin{quote}\begin{description} 15681\item[{param}] \leavevmode 15682\sphinxAtStartPar 15683\sphinxstylestrong{context} 15684 15685\sphinxAtStartPar 15686\sphinxstylestrong{inptr} 15687 15688\sphinxAtStartPar 15689\sphinxstylestrong{outptr} 15690 15691\sphinxAtStartPar 15692\sphinxstylestrong{size} 15693 15694\sphinxAtStartPar 15695\sphinxstylestrong{eblock} 15696 15697\sphinxAtStartPar 15698\sphinxstylestrong{ivec} 15699 15700\end{description}\end{quote} 15701 15702\sphinxAtStartPar 15703DEPRECATED Replaced by krb5\_c\_* API family. 15704 15705 15706\subsubsection{krb5\_eblock\_enctype} 15707\label{\detokenize{appdev/refs/api/krb5_eblock_enctype:krb5-eblock-enctype}}\label{\detokenize{appdev/refs/api/krb5_eblock_enctype::doc}}\index{krb5\_eblock\_enctype (C function)@\spxentry{krb5\_eblock\_enctype}\spxextra{C function}} 15708 15709\begin{fulllineitems} 15710\phantomsection\label{\detokenize{appdev/refs/api/krb5_eblock_enctype:c.krb5_eblock_enctype}}% 15711\pysigstartmultiline 15712\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_eblock\_enctype}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}}{}% 15713\pysigstopmultiline 15714\end{fulllineitems} 15715 15716\begin{quote}\begin{description} 15717\item[{param}] \leavevmode 15718\sphinxAtStartPar 15719\sphinxstylestrong{context} 15720 15721\sphinxAtStartPar 15722\sphinxstylestrong{eblock} 15723 15724\end{description}\end{quote} 15725 15726\sphinxAtStartPar 15727DEPRECATED Replaced by krb5\_c\_* API family. 15728 15729 15730\subsubsection{krb5\_encrypt\_size} 15731\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)@\spxentry{krb5\_encrypt\_size}\spxextra{C function}} 15732 15733\begin{fulllineitems} 15734\phantomsection\label{\detokenize{appdev/refs/api/krb5_encrypt_size:c.krb5_encrypt_size}}% 15735\pysigstartmultiline 15736\pysiglinewithargsret{\DUrole{n}{size\_t}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_encrypt\_size}}}}{\DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{length}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{crypto}}{}% 15737\pysigstopmultiline 15738\end{fulllineitems} 15739 15740\begin{quote}\begin{description} 15741\item[{param}] \leavevmode 15742\sphinxAtStartPar 15743\sphinxstylestrong{length} 15744 15745\sphinxAtStartPar 15746\sphinxstylestrong{crypto} 15747 15748\end{description}\end{quote} 15749 15750\sphinxAtStartPar 15751DEPRECATED Replaced by krb5\_c\_* API family. 15752 15753 15754\subsubsection{krb5\_finish\_key} 15755\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)@\spxentry{krb5\_finish\_key}\spxextra{C function}} 15756 15757\begin{fulllineitems} 15758\phantomsection\label{\detokenize{appdev/refs/api/krb5_finish_key:c.krb5_finish_key}}% 15759\pysigstartmultiline 15760\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_finish\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}}{}% 15761\pysigstopmultiline 15762\end{fulllineitems} 15763 15764\begin{quote}\begin{description} 15765\item[{param}] \leavevmode 15766\sphinxAtStartPar 15767\sphinxstylestrong{context} 15768 15769\sphinxAtStartPar 15770\sphinxstylestrong{eblock} 15771 15772\end{description}\end{quote} 15773 15774\sphinxAtStartPar 15775DEPRECATED Replaced by krb5\_c\_* API family. 15776 15777 15778\subsubsection{krb5\_finish\_random\_key} 15779\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)@\spxentry{krb5\_finish\_random\_key}\spxextra{C function}} 15780 15781\begin{fulllineitems} 15782\phantomsection\label{\detokenize{appdev/refs/api/krb5_finish_random_key:c.krb5_finish_random_key}}% 15783\pysigstartmultiline 15784\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_finish\_random\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ptr}}{}% 15785\pysigstopmultiline 15786\end{fulllineitems} 15787 15788\begin{quote}\begin{description} 15789\item[{param}] \leavevmode 15790\sphinxAtStartPar 15791\sphinxstylestrong{context} 15792 15793\sphinxAtStartPar 15794\sphinxstylestrong{eblock} 15795 15796\sphinxAtStartPar 15797\sphinxstylestrong{ptr} 15798 15799\end{description}\end{quote} 15800 15801\sphinxAtStartPar 15802DEPRECATED Replaced by krb5\_c\_* API family. 15803 15804 15805\subsubsection{krb5\_cc\_gen\_new} 15806\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)@\spxentry{krb5\_cc\_gen\_new}\spxextra{C function}} 15807 15808\begin{fulllineitems} 15809\phantomsection\label{\detokenize{appdev/refs/api/krb5_cc_gen_new:c.krb5_cc_gen_new}}% 15810\pysigstartmultiline 15811\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_gen\_new}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cache}}{}% 15812\pysigstopmultiline 15813\end{fulllineitems} 15814 15815\begin{quote}\begin{description} 15816\item[{param}] \leavevmode 15817\sphinxAtStartPar 15818\sphinxstylestrong{context} 15819 15820\sphinxAtStartPar 15821\sphinxstylestrong{cache} 15822 15823\end{description}\end{quote} 15824 15825 15826\subsubsection{krb5\_get\_credentials\_renew} 15827\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)@\spxentry{krb5\_get\_credentials\_renew}\spxextra{C function}} 15828 15829\begin{fulllineitems} 15830\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_credentials_renew:c.krb5_get_credentials_renew}}% 15831\pysigstartmultiline 15832\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_credentials\_renew}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out\_creds}}{}% 15833\pysigstopmultiline 15834\end{fulllineitems} 15835 15836\begin{quote}\begin{description} 15837\item[{param}] \leavevmode 15838\sphinxAtStartPar 15839\sphinxstylestrong{context} 15840 15841\sphinxAtStartPar 15842\sphinxstylestrong{options} 15843 15844\sphinxAtStartPar 15845\sphinxstylestrong{ccache} 15846 15847\sphinxAtStartPar 15848\sphinxstylestrong{in\_creds} 15849 15850\sphinxAtStartPar 15851\sphinxstylestrong{out\_creds} 15852 15853\end{description}\end{quote} 15854 15855\sphinxAtStartPar 15856DEPRECATED Replaced by krb5\_get\_renewed\_creds. 15857 15858 15859\subsubsection{krb5\_get\_credentials\_validate} 15860\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)@\spxentry{krb5\_get\_credentials\_validate}\spxextra{C function}} 15861 15862\begin{fulllineitems} 15863\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_credentials_validate:c.krb5_get_credentials_validate}}% 15864\pysigstartmultiline 15865\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_credentials\_validate}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{in\_creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{out\_creds}}{}% 15866\pysigstopmultiline 15867\end{fulllineitems} 15868 15869\begin{quote}\begin{description} 15870\item[{param}] \leavevmode 15871\sphinxAtStartPar 15872\sphinxstylestrong{context} 15873 15874\sphinxAtStartPar 15875\sphinxstylestrong{options} 15876 15877\sphinxAtStartPar 15878\sphinxstylestrong{ccache} 15879 15880\sphinxAtStartPar 15881\sphinxstylestrong{in\_creds} 15882 15883\sphinxAtStartPar 15884\sphinxstylestrong{out\_creds} 15885 15886\end{description}\end{quote} 15887 15888\sphinxAtStartPar 15889DEPRECATED Replaced by krb5\_get\_validated\_creds. 15890 15891 15892\subsubsection{krb5\_get\_in\_tkt\_with\_password} 15893\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)@\spxentry{krb5\_get\_in\_tkt\_with\_password}\spxextra{C function}} 15894 15895\begin{fulllineitems} 15896\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_password:c.krb5_get_in_tkt_with_password}}% 15897\pysigstartmultiline 15898\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_in\_tkt\_with\_password}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addrs}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ktypes}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{\DUrole{n}{krb5\_preauthtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pre\_auth\_types}, \DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{password}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ret\_as\_reply}}{}% 15899\pysigstopmultiline 15900\end{fulllineitems} 15901 15902\begin{quote}\begin{description} 15903\item[{param}] \leavevmode 15904\sphinxAtStartPar 15905\sphinxstylestrong{context} 15906 15907\sphinxAtStartPar 15908\sphinxstylestrong{options} 15909 15910\sphinxAtStartPar 15911\sphinxstylestrong{addrs} 15912 15913\sphinxAtStartPar 15914\sphinxstylestrong{ktypes} 15915 15916\sphinxAtStartPar 15917\sphinxstylestrong{pre\_auth\_types} 15918 15919\sphinxAtStartPar 15920\sphinxstylestrong{password} 15921 15922\sphinxAtStartPar 15923\sphinxstylestrong{ccache} 15924 15925\sphinxAtStartPar 15926\sphinxstylestrong{creds} 15927 15928\sphinxAtStartPar 15929\sphinxstylestrong{ret\_as\_reply} 15930 15931\end{description}\end{quote} 15932 15933\sphinxAtStartPar 15934DEPRECATED Replaced by krb5\_get\_init\_creds\_password(). 15935 15936 15937\subsubsection{krb5\_get\_in\_tkt\_with\_skey} 15938\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)@\spxentry{krb5\_get\_in\_tkt\_with\_skey}\spxextra{C function}} 15939 15940\begin{fulllineitems} 15941\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_skey:c.krb5_get_in_tkt_with_skey}}% 15942\pysigstartmultiline 15943\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_in\_tkt\_with\_skey}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addrs}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ktypes}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{\DUrole{n}{krb5\_preauthtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pre\_auth\_types}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ret\_as\_reply}}{}% 15944\pysigstopmultiline 15945\end{fulllineitems} 15946 15947\begin{quote}\begin{description} 15948\item[{param}] \leavevmode 15949\sphinxAtStartPar 15950\sphinxstylestrong{context} 15951 15952\sphinxAtStartPar 15953\sphinxstylestrong{options} 15954 15955\sphinxAtStartPar 15956\sphinxstylestrong{addrs} 15957 15958\sphinxAtStartPar 15959\sphinxstylestrong{ktypes} 15960 15961\sphinxAtStartPar 15962\sphinxstylestrong{pre\_auth\_types} 15963 15964\sphinxAtStartPar 15965\sphinxstylestrong{key} 15966 15967\sphinxAtStartPar 15968\sphinxstylestrong{ccache} 15969 15970\sphinxAtStartPar 15971\sphinxstylestrong{creds} 15972 15973\sphinxAtStartPar 15974\sphinxstylestrong{ret\_as\_reply} 15975 15976\end{description}\end{quote} 15977 15978\sphinxAtStartPar 15979DEPRECATED Replaced by krb5\_get\_init\_creds(). 15980 15981 15982\subsubsection{krb5\_get\_in\_tkt\_with\_keytab} 15983\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)@\spxentry{krb5\_get\_in\_tkt\_with\_keytab}\spxextra{C function}} 15984 15985\begin{fulllineitems} 15986\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_in_tkt_with_keytab:c.krb5_get_in_tkt_with_keytab}}% 15987\pysigstartmultiline 15988\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_in\_tkt\_with\_keytab}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\DUrole{n}{options}, {\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{k}{const}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{addrs}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ktypes}, {\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{\DUrole{n}{krb5\_preauthtype}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{pre\_auth\_types}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab}}}}\DUrole{w}{ }\DUrole{n}{arg\_keytab}, {\hyperref[\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}]{\sphinxcrossref{\DUrole{n}{krb5\_ccache}}}}\DUrole{w}{ }\DUrole{n}{ccache}, {\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{creds}, {\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{ret\_as\_reply}}{}% 15989\pysigstopmultiline 15990\end{fulllineitems} 15991 15992\begin{quote}\begin{description} 15993\item[{param}] \leavevmode 15994\sphinxAtStartPar 15995\sphinxstylestrong{context} 15996 15997\sphinxAtStartPar 15998\sphinxstylestrong{options} 15999 16000\sphinxAtStartPar 16001\sphinxstylestrong{addrs} 16002 16003\sphinxAtStartPar 16004\sphinxstylestrong{ktypes} 16005 16006\sphinxAtStartPar 16007\sphinxstylestrong{pre\_auth\_types} 16008 16009\sphinxAtStartPar 16010\sphinxstylestrong{arg\_keytab} 16011 16012\sphinxAtStartPar 16013\sphinxstylestrong{ccache} 16014 16015\sphinxAtStartPar 16016\sphinxstylestrong{creds} 16017 16018\sphinxAtStartPar 16019\sphinxstylestrong{ret\_as\_reply} 16020 16021\end{description}\end{quote} 16022 16023\sphinxAtStartPar 16024DEPRECATED Replaced by krb5\_get\_init\_creds\_keytab(). 16025 16026 16027\subsubsection{krb5\_get\_init\_creds\_opt\_init} 16028\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)@\spxentry{krb5\_get\_init\_creds\_opt\_init}\spxextra{C function}} 16029 16030\begin{fulllineitems} 16031\phantomsection\label{\detokenize{appdev/refs/api/krb5_get_init_creds_opt_init:c.krb5_get_init_creds_opt_init}}% 16032\pysigstartmultiline 16033\pysiglinewithargsret{\DUrole{kt}{void}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt\_init}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{opt}}{}% 16034\pysigstopmultiline 16035\end{fulllineitems} 16036 16037\begin{quote}\begin{description} 16038\item[{param}] \leavevmode 16039\sphinxAtStartPar 16040\sphinxstylestrong{opt} 16041 16042\end{description}\end{quote} 16043 16044\sphinxAtStartPar 16045DEPRECATED Use krb5\_get\_init\_creds\_opt\_alloc() instead. 16046 16047 16048\subsubsection{krb5\_init\_random\_key} 16049\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)@\spxentry{krb5\_init\_random\_key}\spxextra{C function}} 16050 16051\begin{fulllineitems} 16052\phantomsection\label{\detokenize{appdev/refs/api/krb5_init_random_key:c.krb5_init_random_key}}% 16053\pysigstartmultiline 16054\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_random\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{ptr}}{}% 16055\pysigstopmultiline 16056\end{fulllineitems} 16057 16058\begin{quote}\begin{description} 16059\item[{param}] \leavevmode 16060\sphinxAtStartPar 16061\sphinxstylestrong{context} 16062 16063\sphinxAtStartPar 16064\sphinxstylestrong{eblock} 16065 16066\sphinxAtStartPar 16067\sphinxstylestrong{keyblock} 16068 16069\sphinxAtStartPar 16070\sphinxstylestrong{ptr} 16071 16072\end{description}\end{quote} 16073 16074\sphinxAtStartPar 16075DEPRECATED Replaced by krb5\_c\_* API family. 16076 16077 16078\subsubsection{krb5\_kt\_free\_entry} 16079\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)@\spxentry{krb5\_kt\_free\_entry}\spxextra{C function}} 16080 16081\begin{fulllineitems} 16082\phantomsection\label{\detokenize{appdev/refs/api/krb5_kt_free_entry:c.krb5_kt_free_entry}}% 16083\pysigstartmultiline 16084\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_free\_entry}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{entry}}{}% 16085\pysigstopmultiline 16086\end{fulllineitems} 16087 16088\begin{quote}\begin{description} 16089\item[{param}] \leavevmode 16090\sphinxAtStartPar 16091\sphinxstylestrong{context} 16092 16093\sphinxAtStartPar 16094\sphinxstylestrong{entry} 16095 16096\end{description}\end{quote} 16097 16098\sphinxAtStartPar 16099DEPRECATED Use krb5\_free\_keytab\_entry\_contents instead. 16100 16101 16102\subsubsection{krb5\_random\_key} 16103\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)@\spxentry{krb5\_random\_key}\spxextra{C function}} 16104 16105\begin{fulllineitems} 16106\phantomsection\label{\detokenize{appdev/refs/api/krb5_random_key:c.krb5_random_key}}% 16107\pysigstartmultiline 16108\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_random\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_pointer}}}}\DUrole{w}{ }\DUrole{n}{ptr}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\DUrole{n}{keyblock}}{}% 16109\pysigstopmultiline 16110\end{fulllineitems} 16111 16112\begin{quote}\begin{description} 16113\item[{param}] \leavevmode 16114\sphinxAtStartPar 16115\sphinxstylestrong{context} 16116 16117\sphinxAtStartPar 16118\sphinxstylestrong{eblock} 16119 16120\sphinxAtStartPar 16121\sphinxstylestrong{ptr} 16122 16123\sphinxAtStartPar 16124\sphinxstylestrong{keyblock} 16125 16126\end{description}\end{quote} 16127 16128\sphinxAtStartPar 16129DEPRECATED Replaced by krb5\_c\_* API family. 16130 16131 16132\subsubsection{krb5\_process\_key} 16133\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)@\spxentry{krb5\_process\_key}\spxextra{C function}} 16134 16135\begin{fulllineitems} 16136\phantomsection\label{\detokenize{appdev/refs/api/krb5_process_key:c.krb5_process_key}}% 16137\pysigstartmultiline 16138\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_process\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{key}}{}% 16139\pysigstopmultiline 16140\end{fulllineitems} 16141 16142\begin{quote}\begin{description} 16143\item[{param}] \leavevmode 16144\sphinxAtStartPar 16145\sphinxstylestrong{context} 16146 16147\sphinxAtStartPar 16148\sphinxstylestrong{eblock} 16149 16150\sphinxAtStartPar 16151\sphinxstylestrong{key} 16152 16153\end{description}\end{quote} 16154 16155\sphinxAtStartPar 16156DEPRECATED Replaced by krb5\_c\_* API family. 16157 16158 16159\subsubsection{krb5\_string\_to\_key} 16160\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)@\spxentry{krb5\_string\_to\_key}\spxextra{C function}} 16161 16162\begin{fulllineitems} 16163\phantomsection\label{\detokenize{appdev/refs/api/krb5_string_to_key:c.krb5_string_to_key}}% 16164\pysigstartmultiline 16165\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_string\_to\_key}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{keyblock}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{data}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{salt}}{}% 16166\pysigstopmultiline 16167\end{fulllineitems} 16168 16169\begin{quote}\begin{description} 16170\item[{param}] \leavevmode 16171\sphinxAtStartPar 16172\sphinxstylestrong{context} 16173 16174\sphinxAtStartPar 16175\sphinxstylestrong{eblock} 16176 16177\sphinxAtStartPar 16178\sphinxstylestrong{keyblock} 16179 16180\sphinxAtStartPar 16181\sphinxstylestrong{data} 16182 16183\sphinxAtStartPar 16184\sphinxstylestrong{salt} 16185 16186\end{description}\end{quote} 16187 16188\sphinxAtStartPar 16189DEPRECATED See krb5\_c\_string\_to\_key() 16190 16191 16192\subsubsection{krb5\_use\_enctype} 16193\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)@\spxentry{krb5\_use\_enctype}\spxextra{C function}} 16194 16195\begin{fulllineitems} 16196\phantomsection\label{\detokenize{appdev/refs/api/krb5_use_enctype:c.krb5_use_enctype}}% 16197\pysigstartmultiline 16198\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_use\_enctype}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{eblock}, {\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{n}{enctype}}{}% 16199\pysigstopmultiline 16200\end{fulllineitems} 16201 16202\begin{quote}\begin{description} 16203\item[{param}] \leavevmode 16204\sphinxAtStartPar 16205\sphinxstylestrong{context} 16206 16207\sphinxAtStartPar 16208\sphinxstylestrong{eblock} 16209 16210\sphinxAtStartPar 16211\sphinxstylestrong{enctype} 16212 16213\end{description}\end{quote} 16214 16215\sphinxAtStartPar 16216DEPRECATED Replaced by krb5\_c\_* API family. 16217 16218 16219\subsubsection{krb5\_verify\_checksum} 16220\label{\detokenize{appdev/refs/api/krb5_verify_checksum:krb5-verify-checksum}}\label{\detokenize{appdev/refs/api/krb5_verify_checksum::doc}}\index{krb5\_verify\_checksum (C function)@\spxentry{krb5\_verify\_checksum}\spxextra{C function}} 16221 16222\begin{fulllineitems} 16223\phantomsection\label{\detokenize{appdev/refs/api/krb5_verify_checksum:c.krb5_verify_checksum}}% 16224\pysigstartmultiline 16225\pysiglinewithargsret{{\hyperref[\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}]{\sphinxcrossref{\DUrole{n}{krb5\_error\_code}}}}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_verify\_checksum}}}}{{\hyperref[\detokenize{appdev/refs/types/krb5_context:c.krb5_context}]{\sphinxcrossref{\DUrole{n}{krb5\_context}}}}\DUrole{w}{ }\DUrole{n}{context}, {\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\DUrole{n}{ctype}, \DUrole{k}{const}\DUrole{w}{ }{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{n}{cksum}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_pointer}}}}\DUrole{w}{ }\DUrole{n}{in}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{in\_length}, {\hyperref[\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_pointer}}}}\DUrole{w}{ }\DUrole{n}{seed}, \DUrole{n}{size\_t}\DUrole{w}{ }\DUrole{n}{seed\_length}}{}% 16226\pysigstopmultiline 16227\end{fulllineitems} 16228 16229\begin{quote}\begin{description} 16230\item[{param}] \leavevmode 16231\sphinxAtStartPar 16232\sphinxstylestrong{context} 16233 16234\sphinxAtStartPar 16235\sphinxstylestrong{ctype} 16236 16237\sphinxAtStartPar 16238\sphinxstylestrong{cksum} 16239 16240\sphinxAtStartPar 16241\sphinxstylestrong{in} 16242 16243\sphinxAtStartPar 16244\sphinxstylestrong{in\_length} 16245 16246\sphinxAtStartPar 16247\sphinxstylestrong{seed} 16248 16249\sphinxAtStartPar 16250\sphinxstylestrong{seed\_length} 16251 16252\end{description}\end{quote} 16253 16254\sphinxAtStartPar 16255DEPRECATED See krb5\_c\_verify\_checksum() 16256 16257 16258\section{krb5 types and structures} 16259\label{\detokenize{appdev/refs/types/index:krb5-types-and-structures}}\label{\detokenize{appdev/refs/types/index::doc}} 16260 16261\subsection{Public} 16262\label{\detokenize{appdev/refs/types/index:public}} 16263 16264\subsubsection{krb5\_address} 16265\label{\detokenize{appdev/refs/types/krb5_address:krb5-address}}\label{\detokenize{appdev/refs/types/krb5_address:krb5-address-struct}}\label{\detokenize{appdev/refs/types/krb5_address::doc}}\index{krb5\_address (C type)@\spxentry{krb5\_address}\spxextra{C type}} 16266 16267\begin{fulllineitems} 16268\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address}}% 16269\pysigstartmultiline 16270\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_address}}}}% 16271\pysigstopmultiline 16272\end{fulllineitems} 16273 16274 16275\sphinxAtStartPar 16276Structure for address. 16277 16278 16279\paragraph{Declaration} 16280\label{\detokenize{appdev/refs/types/krb5_address:declaration}} 16281\sphinxAtStartPar 16282typedef struct \_krb5\_address krb5\_address 16283 16284 16285\paragraph{Members} 16286\label{\detokenize{appdev/refs/types/krb5_address:members}}\index{krb5\_address.magic (C member)@\spxentry{krb5\_address.magic}\spxextra{C member}} 16287 16288\begin{fulllineitems} 16289\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.magic}}% 16290\pysigstartmultiline 16291\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16292\pysigstopmultiline 16293\end{fulllineitems} 16294 16295\index{krb5\_address.addrtype (C member)@\spxentry{krb5\_address.addrtype}\spxextra{C member}} 16296 16297\begin{fulllineitems} 16298\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.addrtype}}% 16299\pysigstartmultiline 16300\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_addrtype:c.krb5_addrtype}]{\sphinxcrossref{\DUrole{n}{krb5\_addrtype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{addrtype}}}}% 16301\pysigstopmultiline 16302\end{fulllineitems} 16303 16304\index{krb5\_address.length (C member)@\spxentry{krb5\_address.length}\spxextra{C member}} 16305 16306\begin{fulllineitems} 16307\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.length}}% 16308\pysigstartmultiline 16309\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 16310\pysigstopmultiline 16311\end{fulllineitems} 16312 16313\index{krb5\_address.contents (C member)@\spxentry{krb5\_address.contents}\spxextra{C member}} 16314 16315\begin{fulllineitems} 16316\phantomsection\label{\detokenize{appdev/refs/types/krb5_address:c.krb5_address.contents}}% 16317\pysigstartmultiline 16318\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{contents}}}}% 16319\pysigstopmultiline 16320\end{fulllineitems} 16321 16322 16323 16324\subsubsection{krb5\_addrtype} 16325\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)@\spxentry{krb5\_addrtype}\spxextra{C type}} 16326 16327\begin{fulllineitems} 16328\phantomsection\label{\detokenize{appdev/refs/types/krb5_addrtype:c.krb5_addrtype}}% 16329\pysigstartmultiline 16330\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_addrtype}}}}% 16331\pysigstopmultiline 16332\end{fulllineitems} 16333 16334 16335 16336\paragraph{Declaration} 16337\label{\detokenize{appdev/refs/types/krb5_addrtype:declaration}} 16338\sphinxAtStartPar 16339typedef krb5\_int32 krb5\_addrtype 16340 16341 16342\subsubsection{krb5\_ap\_req} 16343\label{\detokenize{appdev/refs/types/krb5_ap_req:krb5-ap-req}}\label{\detokenize{appdev/refs/types/krb5_ap_req:krb5-ap-req-struct}}\label{\detokenize{appdev/refs/types/krb5_ap_req::doc}}\index{krb5\_ap\_req (C type)@\spxentry{krb5\_ap\_req}\spxextra{C type}} 16344 16345\begin{fulllineitems} 16346\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req}}% 16347\pysigstartmultiline 16348\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ap\_req}}}}% 16349\pysigstopmultiline 16350\end{fulllineitems} 16351 16352 16353\sphinxAtStartPar 16354Authentication header. 16355 16356 16357\paragraph{Declaration} 16358\label{\detokenize{appdev/refs/types/krb5_ap_req:declaration}} 16359\sphinxAtStartPar 16360typedef struct \_krb5\_ap\_req krb5\_ap\_req 16361 16362 16363\paragraph{Members} 16364\label{\detokenize{appdev/refs/types/krb5_ap_req:members}}\index{krb5\_ap\_req.magic (C member)@\spxentry{krb5\_ap\_req.magic}\spxextra{C member}} 16365 16366\begin{fulllineitems} 16367\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.magic}}% 16368\pysigstartmultiline 16369\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16370\pysigstopmultiline 16371\end{fulllineitems} 16372 16373\index{krb5\_ap\_req.ap\_options (C member)@\spxentry{krb5\_ap\_req.ap\_options}\spxextra{C member}} 16374 16375\begin{fulllineitems} 16376\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.ap_options}}% 16377\pysigstartmultiline 16378\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ap\_options}}}}% 16379\pysigstopmultiline 16380\sphinxAtStartPar 16381Requested options. 16382 16383\end{fulllineitems} 16384 16385\index{krb5\_ap\_req.ticket (C member)@\spxentry{krb5\_ap\_req.ticket}\spxextra{C member}} 16386 16387\begin{fulllineitems} 16388\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.ticket}}% 16389\pysigstartmultiline 16390\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ticket}}}}% 16391\pysigstopmultiline 16392\sphinxAtStartPar 16393Ticket. 16394 16395\end{fulllineitems} 16396 16397\index{krb5\_ap\_req.authenticator (C member)@\spxentry{krb5\_ap\_req.authenticator}\spxextra{C member}} 16398 16399\begin{fulllineitems} 16400\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req.authenticator}}% 16401\pysigstartmultiline 16402\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_req:c.krb5_ap_req}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authenticator}}}}% 16403\pysigstopmultiline 16404\sphinxAtStartPar 16405Encrypted authenticator. 16406 16407\end{fulllineitems} 16408 16409 16410 16411\subsubsection{krb5\_ap\_rep} 16412\label{\detokenize{appdev/refs/types/krb5_ap_rep:krb5-ap-rep}}\label{\detokenize{appdev/refs/types/krb5_ap_rep:krb5-ap-rep-struct}}\label{\detokenize{appdev/refs/types/krb5_ap_rep::doc}}\index{krb5\_ap\_rep (C type)@\spxentry{krb5\_ap\_rep}\spxextra{C type}} 16413 16414\begin{fulllineitems} 16415\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep}}% 16416\pysigstartmultiline 16417\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ap\_rep}}}}% 16418\pysigstopmultiline 16419\end{fulllineitems} 16420 16421 16422\sphinxAtStartPar 16423C representaton of AP\sphinxhyphen{}REP message. 16424 16425\sphinxAtStartPar 16426The server’s response to a client’s request for mutual authentication. 16427 16428 16429\paragraph{Declaration} 16430\label{\detokenize{appdev/refs/types/krb5_ap_rep:declaration}} 16431\sphinxAtStartPar 16432typedef struct \_krb5\_ap\_rep krb5\_ap\_rep 16433 16434 16435\paragraph{Members} 16436\label{\detokenize{appdev/refs/types/krb5_ap_rep:members}}\index{krb5\_ap\_rep.magic (C member)@\spxentry{krb5\_ap\_rep.magic}\spxextra{C member}} 16437 16438\begin{fulllineitems} 16439\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep.magic}}% 16440\pysigstartmultiline 16441\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16442\pysigstopmultiline 16443\end{fulllineitems} 16444 16445\index{krb5\_ap\_rep.enc\_part (C member)@\spxentry{krb5\_ap\_rep.enc\_part}\spxextra{C member}} 16446 16447\begin{fulllineitems} 16448\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep.enc_part}}% 16449\pysigstartmultiline 16450\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep:c.krb5_ap_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part}}}}% 16451\pysigstopmultiline 16452\sphinxAtStartPar 16453Ciphertext of ApRepEncPart. 16454 16455\end{fulllineitems} 16456 16457 16458 16459\subsubsection{krb5\_ap\_rep\_enc\_part} 16460\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:krb5-ap-rep-enc-part}}\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}}\index{krb5\_ap\_rep\_enc\_part (C type)@\spxentry{krb5\_ap\_rep\_enc\_part}\spxextra{C type}} 16461 16462\begin{fulllineitems} 16463\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}}% 16464\pysigstartmultiline 16465\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}% 16466\pysigstopmultiline 16467\end{fulllineitems} 16468 16469 16470\sphinxAtStartPar 16471Cleartext that is encrypted and put into \sphinxcode{\sphinxupquote{\_krb5\_ap\_rep}} . 16472 16473 16474\paragraph{Declaration} 16475\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:declaration}} 16476\sphinxAtStartPar 16477typedef struct \_krb5\_ap\_rep\_enc\_part krb5\_ap\_rep\_enc\_part 16478 16479 16480\paragraph{Members} 16481\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:members}}\index{krb5\_ap\_rep\_enc\_part.magic (C member)@\spxentry{krb5\_ap\_rep\_enc\_part.magic}\spxextra{C member}} 16482 16483\begin{fulllineitems} 16484\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.magic}}% 16485\pysigstartmultiline 16486\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16487\pysigstopmultiline 16488\end{fulllineitems} 16489 16490\index{krb5\_ap\_rep\_enc\_part.ctime (C member)@\spxentry{krb5\_ap\_rep\_enc\_part.ctime}\spxextra{C member}} 16491 16492\begin{fulllineitems} 16493\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.ctime}}% 16494\pysigstartmultiline 16495\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ctime}}}}% 16496\pysigstopmultiline 16497\sphinxAtStartPar 16498Client time, seconds portion. 16499 16500\end{fulllineitems} 16501 16502\index{krb5\_ap\_rep\_enc\_part.cusec (C member)@\spxentry{krb5\_ap\_rep\_enc\_part.cusec}\spxextra{C member}} 16503 16504\begin{fulllineitems} 16505\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.cusec}}% 16506\pysigstartmultiline 16507\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{cusec}}}}% 16508\pysigstopmultiline 16509\sphinxAtStartPar 16510Client time, microseconds portion. 16511 16512\end{fulllineitems} 16513 16514\index{krb5\_ap\_rep\_enc\_part.subkey (C member)@\spxentry{krb5\_ap\_rep\_enc\_part.subkey}\spxextra{C member}} 16515 16516\begin{fulllineitems} 16517\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.subkey}}% 16518\pysigstartmultiline 16519\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{subkey}}}}% 16520\pysigstopmultiline 16521\sphinxAtStartPar 16522Subkey (optional) 16523 16524\end{fulllineitems} 16525 16526\index{krb5\_ap\_rep\_enc\_part.seq\_number (C member)@\spxentry{krb5\_ap\_rep\_enc\_part.seq\_number}\spxextra{C member}} 16527 16528\begin{fulllineitems} 16529\phantomsection\label{\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part.seq_number}}% 16530\pysigstartmultiline 16531\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ap_rep_enc_part:c.krb5_ap_rep_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_ap\_rep\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{seq\_number}}}}% 16532\pysigstopmultiline 16533\sphinxAtStartPar 16534Sequence number. 16535 16536\end{fulllineitems} 16537 16538 16539 16540\subsubsection{krb5\_authdata} 16541\label{\detokenize{appdev/refs/types/krb5_authdata:krb5-authdata}}\label{\detokenize{appdev/refs/types/krb5_authdata:krb5-authdata-struct}}\label{\detokenize{appdev/refs/types/krb5_authdata::doc}}\index{krb5\_authdata (C type)@\spxentry{krb5\_authdata}\spxextra{C type}} 16542 16543\begin{fulllineitems} 16544\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}}% 16545\pysigstartmultiline 16546\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_authdata}}}}% 16547\pysigstopmultiline 16548\end{fulllineitems} 16549 16550 16551\sphinxAtStartPar 16552Structure for auth data. 16553 16554 16555\paragraph{Declaration} 16556\label{\detokenize{appdev/refs/types/krb5_authdata:declaration}} 16557\sphinxAtStartPar 16558typedef struct \_krb5\_authdata krb5\_authdata 16559 16560 16561\paragraph{Members} 16562\label{\detokenize{appdev/refs/types/krb5_authdata:members}}\index{krb5\_authdata.magic (C member)@\spxentry{krb5\_authdata.magic}\spxextra{C member}} 16563 16564\begin{fulllineitems} 16565\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.magic}}% 16566\pysigstartmultiline 16567\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16568\pysigstopmultiline 16569\end{fulllineitems} 16570 16571\index{krb5\_authdata.ad\_type (C member)@\spxentry{krb5\_authdata.ad\_type}\spxextra{C member}} 16572 16573\begin{fulllineitems} 16574\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.ad_type}}% 16575\pysigstartmultiline 16576\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}]{\sphinxcrossref{\DUrole{n}{krb5\_authdatatype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ad\_type}}}}% 16577\pysigstopmultiline 16578\sphinxAtStartPar 16579ADTYPE. 16580 16581\end{fulllineitems} 16582 16583\index{krb5\_authdata.length (C member)@\spxentry{krb5\_authdata.length}\spxextra{C member}} 16584 16585\begin{fulllineitems} 16586\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.length}}% 16587\pysigstartmultiline 16588\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 16589\pysigstopmultiline 16590\sphinxAtStartPar 16591Length of data. 16592 16593\end{fulllineitems} 16594 16595\index{krb5\_authdata.contents (C member)@\spxentry{krb5\_authdata.contents}\spxextra{C member}} 16596 16597\begin{fulllineitems} 16598\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata.contents}}% 16599\pysigstartmultiline 16600\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{contents}}}}% 16601\pysigstopmultiline 16602\sphinxAtStartPar 16603Data. 16604 16605\end{fulllineitems} 16606 16607 16608 16609\subsubsection{krb5\_authdatatype} 16610\label{\detokenize{appdev/refs/types/krb5_authdatatype:krb5-authdatatype}}\label{\detokenize{appdev/refs/types/krb5_authdatatype:krb5-authdatatype-struct}}\label{\detokenize{appdev/refs/types/krb5_authdatatype::doc}}\index{krb5\_authdatatype (C type)@\spxentry{krb5\_authdatatype}\spxextra{C type}} 16611 16612\begin{fulllineitems} 16613\phantomsection\label{\detokenize{appdev/refs/types/krb5_authdatatype:c.krb5_authdatatype}}% 16614\pysigstartmultiline 16615\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_authdatatype}}}}% 16616\pysigstopmultiline 16617\end{fulllineitems} 16618 16619 16620 16621\paragraph{Declaration} 16622\label{\detokenize{appdev/refs/types/krb5_authdatatype:declaration}} 16623\sphinxAtStartPar 16624typedef krb5\_int32 krb5\_authdatatype 16625 16626 16627\subsubsection{krb5\_authenticator} 16628\label{\detokenize{appdev/refs/types/krb5_authenticator:krb5-authenticator}}\label{\detokenize{appdev/refs/types/krb5_authenticator:krb5-authenticator-struct}}\label{\detokenize{appdev/refs/types/krb5_authenticator::doc}}\index{krb5\_authenticator (C type)@\spxentry{krb5\_authenticator}\spxextra{C type}} 16629 16630\begin{fulllineitems} 16631\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}}% 16632\pysigstartmultiline 16633\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_authenticator}}}}% 16634\pysigstopmultiline 16635\end{fulllineitems} 16636 16637 16638\sphinxAtStartPar 16639Ticket authenticator. 16640 16641\sphinxAtStartPar 16642The C representation of an unencrypted authenticator. 16643 16644 16645\paragraph{Declaration} 16646\label{\detokenize{appdev/refs/types/krb5_authenticator:declaration}} 16647\sphinxAtStartPar 16648typedef struct \_krb5\_authenticator krb5\_authenticator 16649 16650 16651\paragraph{Members} 16652\label{\detokenize{appdev/refs/types/krb5_authenticator:members}}\index{krb5\_authenticator.magic (C member)@\spxentry{krb5\_authenticator.magic}\spxextra{C member}} 16653 16654\begin{fulllineitems} 16655\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.magic}}% 16656\pysigstartmultiline 16657\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16658\pysigstopmultiline 16659\end{fulllineitems} 16660 16661\index{krb5\_authenticator.client (C member)@\spxentry{krb5\_authenticator.client}\spxextra{C member}} 16662 16663\begin{fulllineitems} 16664\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.client}}% 16665\pysigstartmultiline 16666\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 16667\pysigstopmultiline 16668\sphinxAtStartPar 16669client name/realm 16670 16671\end{fulllineitems} 16672 16673\index{krb5\_authenticator.checksum (C member)@\spxentry{krb5\_authenticator.checksum}\spxextra{C member}} 16674 16675\begin{fulllineitems} 16676\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.checksum}}% 16677\pysigstartmultiline 16678\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{checksum}}}}% 16679\pysigstopmultiline 16680\sphinxAtStartPar 16681checksum, includes type, optional 16682 16683\end{fulllineitems} 16684 16685\index{krb5\_authenticator.cusec (C member)@\spxentry{krb5\_authenticator.cusec}\spxextra{C member}} 16686 16687\begin{fulllineitems} 16688\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.cusec}}% 16689\pysigstartmultiline 16690\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{cusec}}}}% 16691\pysigstopmultiline 16692\sphinxAtStartPar 16693client usec portion 16694 16695\end{fulllineitems} 16696 16697\index{krb5\_authenticator.ctime (C member)@\spxentry{krb5\_authenticator.ctime}\spxextra{C member}} 16698 16699\begin{fulllineitems} 16700\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.ctime}}% 16701\pysigstartmultiline 16702\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ctime}}}}% 16703\pysigstopmultiline 16704\sphinxAtStartPar 16705client sec portion 16706 16707\end{fulllineitems} 16708 16709\index{krb5\_authenticator.subkey (C member)@\spxentry{krb5\_authenticator.subkey}\spxextra{C member}} 16710 16711\begin{fulllineitems} 16712\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.subkey}}% 16713\pysigstartmultiline 16714\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{subkey}}}}% 16715\pysigstopmultiline 16716\sphinxAtStartPar 16717true session key, optional 16718 16719\end{fulllineitems} 16720 16721\index{krb5\_authenticator.seq\_number (C member)@\spxentry{krb5\_authenticator.seq\_number}\spxextra{C member}} 16722 16723\begin{fulllineitems} 16724\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.seq_number}}% 16725\pysigstartmultiline 16726\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{seq\_number}}}}% 16727\pysigstopmultiline 16728\sphinxAtStartPar 16729sequence \#, optional 16730 16731\end{fulllineitems} 16732 16733\index{krb5\_authenticator.authorization\_data (C member)@\spxentry{krb5\_authenticator.authorization\_data}\spxextra{C member}} 16734 16735\begin{fulllineitems} 16736\phantomsection\label{\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator.authorization_data}}% 16737\pysigstartmultiline 16738\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authorization\_data}}}}% 16739\pysigstopmultiline 16740\sphinxAtStartPar 16741authoriazation data 16742 16743\end{fulllineitems} 16744 16745 16746 16747\subsubsection{krb5\_boolean} 16748\label{\detokenize{appdev/refs/types/krb5_boolean:krb5-boolean}}\label{\detokenize{appdev/refs/types/krb5_boolean:krb5-boolean-struct}}\label{\detokenize{appdev/refs/types/krb5_boolean::doc}}\index{krb5\_boolean (C type)@\spxentry{krb5\_boolean}\spxextra{C type}} 16749 16750\begin{fulllineitems} 16751\phantomsection\label{\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}}% 16752\pysigstartmultiline 16753\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_boolean}}}}% 16754\pysigstopmultiline 16755\end{fulllineitems} 16756 16757 16758 16759\paragraph{Declaration} 16760\label{\detokenize{appdev/refs/types/krb5_boolean:declaration}} 16761\sphinxAtStartPar 16762typedef unsigned int krb5\_boolean 16763 16764 16765\subsubsection{krb5\_checksum} 16766\label{\detokenize{appdev/refs/types/krb5_checksum:krb5-checksum}}\label{\detokenize{appdev/refs/types/krb5_checksum:krb5-checksum-struct}}\label{\detokenize{appdev/refs/types/krb5_checksum::doc}}\index{krb5\_checksum (C type)@\spxentry{krb5\_checksum}\spxextra{C type}} 16767 16768\begin{fulllineitems} 16769\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}}% 16770\pysigstartmultiline 16771\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_checksum}}}}% 16772\pysigstopmultiline 16773\end{fulllineitems} 16774 16775 16776 16777\paragraph{Declaration} 16778\label{\detokenize{appdev/refs/types/krb5_checksum:declaration}} 16779\sphinxAtStartPar 16780typedef struct \_krb5\_checksum krb5\_checksum 16781 16782 16783\paragraph{Members} 16784\label{\detokenize{appdev/refs/types/krb5_checksum:members}}\index{krb5\_checksum.magic (C member)@\spxentry{krb5\_checksum.magic}\spxextra{C member}} 16785 16786\begin{fulllineitems} 16787\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.magic}}% 16788\pysigstartmultiline 16789\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16790\pysigstopmultiline 16791\end{fulllineitems} 16792 16793\index{krb5\_checksum.checksum\_type (C member)@\spxentry{krb5\_checksum.checksum\_type}\spxextra{C member}} 16794 16795\begin{fulllineitems} 16796\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.checksum_type}}% 16797\pysigstartmultiline 16798\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}]{\sphinxcrossref{\DUrole{n}{krb5\_cksumtype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{checksum\_type}}}}% 16799\pysigstopmultiline 16800\end{fulllineitems} 16801 16802\index{krb5\_checksum.length (C member)@\spxentry{krb5\_checksum.length}\spxextra{C member}} 16803 16804\begin{fulllineitems} 16805\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.length}}% 16806\pysigstartmultiline 16807\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 16808\pysigstopmultiline 16809\end{fulllineitems} 16810 16811\index{krb5\_checksum.contents (C member)@\spxentry{krb5\_checksum.contents}\spxextra{C member}} 16812 16813\begin{fulllineitems} 16814\phantomsection\label{\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum.contents}}% 16815\pysigstartmultiline 16816\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{contents}}}}% 16817\pysigstopmultiline 16818\end{fulllineitems} 16819 16820 16821 16822\subsubsection{krb5\_const\_pointer} 16823\label{\detokenize{appdev/refs/types/krb5_const_pointer:krb5-const-pointer}}\label{\detokenize{appdev/refs/types/krb5_const_pointer:krb5-const-pointer-struct}}\label{\detokenize{appdev/refs/types/krb5_const_pointer::doc}}\index{krb5\_const\_pointer (C type)@\spxentry{krb5\_const\_pointer}\spxextra{C type}} 16824 16825\begin{fulllineitems} 16826\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_pointer:c.krb5_const_pointer}}% 16827\pysigstartmultiline 16828\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_const\_pointer}}}}% 16829\pysigstopmultiline 16830\end{fulllineitems} 16831 16832 16833 16834\paragraph{Declaration} 16835\label{\detokenize{appdev/refs/types/krb5_const_pointer:declaration}} 16836\sphinxAtStartPar 16837typedef void const* krb5\_const\_pointer 16838 16839 16840\subsubsection{krb5\_const\_principal} 16841\label{\detokenize{appdev/refs/types/krb5_const_principal:krb5-const-principal}}\label{\detokenize{appdev/refs/types/krb5_const_principal:krb5-const-principal-struct}}\label{\detokenize{appdev/refs/types/krb5_const_principal::doc}}\index{krb5\_const\_principal (C type)@\spxentry{krb5\_const\_principal}\spxextra{C type}} 16842 16843\begin{fulllineitems} 16844\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}}% 16845\pysigstartmultiline 16846\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_const\_principal}}}}% 16847\pysigstopmultiline 16848\end{fulllineitems} 16849 16850 16851\sphinxAtStartPar 16852Constant version of {\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{krb5\_principal\_data}}}}} . 16853 16854 16855\paragraph{Declaration} 16856\label{\detokenize{appdev/refs/types/krb5_const_principal:declaration}} 16857\sphinxAtStartPar 16858typedef const krb5\_principal\_data* krb5\_const\_principal 16859 16860 16861\paragraph{Members} 16862\label{\detokenize{appdev/refs/types/krb5_const_principal:members}}\index{krb5\_const\_principal.magic (C member)@\spxentry{krb5\_const\_principal.magic}\spxextra{C member}} 16863 16864\begin{fulllineitems} 16865\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.magic}}% 16866\pysigstartmultiline 16867\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16868\pysigstopmultiline 16869\end{fulllineitems} 16870 16871\index{krb5\_const\_principal.realm (C member)@\spxentry{krb5\_const\_principal.realm}\spxextra{C member}} 16872 16873\begin{fulllineitems} 16874\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.realm}}% 16875\pysigstartmultiline 16876\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{realm}}}}% 16877\pysigstopmultiline 16878\end{fulllineitems} 16879 16880\index{krb5\_const\_principal.data (C member)@\spxentry{krb5\_const\_principal.data}\spxextra{C member}} 16881 16882\begin{fulllineitems} 16883\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.data}}% 16884\pysigstartmultiline 16885\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{data}}}}% 16886\pysigstopmultiline 16887\sphinxAtStartPar 16888An array of strings. 16889 16890\end{fulllineitems} 16891 16892\index{krb5\_const\_principal.length (C member)@\spxentry{krb5\_const\_principal.length}\spxextra{C member}} 16893 16894\begin{fulllineitems} 16895\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.length}}% 16896\pysigstartmultiline 16897\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 16898\pysigstopmultiline 16899\end{fulllineitems} 16900 16901\index{krb5\_const\_principal.type (C member)@\spxentry{krb5\_const\_principal.type}\spxextra{C member}} 16902 16903\begin{fulllineitems} 16904\phantomsection\label{\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal.type}}% 16905\pysigstartmultiline 16906\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_const_principal:c.krb5_const_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_const\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{type}}}}% 16907\pysigstopmultiline 16908\end{fulllineitems} 16909 16910 16911 16912\subsubsection{krb5\_cred} 16913\label{\detokenize{appdev/refs/types/krb5_cred:krb5-cred}}\label{\detokenize{appdev/refs/types/krb5_cred:krb5-cred-struct}}\label{\detokenize{appdev/refs/types/krb5_cred::doc}}\index{krb5\_cred (C type)@\spxentry{krb5\_cred}\spxextra{C type}} 16914 16915\begin{fulllineitems} 16916\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred}}% 16917\pysigstartmultiline 16918\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cred}}}}% 16919\pysigstopmultiline 16920\end{fulllineitems} 16921 16922 16923\sphinxAtStartPar 16924Credentials data structure. 16925 16926 16927\paragraph{Declaration} 16928\label{\detokenize{appdev/refs/types/krb5_cred:declaration}} 16929\sphinxAtStartPar 16930typedef struct \_krb5\_cred krb5\_cred 16931 16932 16933\paragraph{Members} 16934\label{\detokenize{appdev/refs/types/krb5_cred:members}}\index{krb5\_cred.magic (C member)@\spxentry{krb5\_cred.magic}\spxextra{C member}} 16935 16936\begin{fulllineitems} 16937\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.magic}}% 16938\pysigstartmultiline 16939\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred}]{\sphinxcrossref{\DUrole{n}{krb5\_cred}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 16940\pysigstopmultiline 16941\end{fulllineitems} 16942 16943\index{krb5\_cred.tickets (C member)@\spxentry{krb5\_cred.tickets}\spxextra{C member}} 16944 16945\begin{fulllineitems} 16946\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.tickets}}% 16947\pysigstartmultiline 16948\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred}]{\sphinxcrossref{\DUrole{n}{krb5\_cred}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{tickets}}}}% 16949\pysigstopmultiline 16950\sphinxAtStartPar 16951Tickets. 16952 16953\end{fulllineitems} 16954 16955\index{krb5\_cred.enc\_part (C member)@\spxentry{krb5\_cred.enc\_part}\spxextra{C member}} 16956 16957\begin{fulllineitems} 16958\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.enc_part}}% 16959\pysigstartmultiline 16960\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred}]{\sphinxcrossref{\DUrole{n}{krb5\_cred}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part}}}}% 16961\pysigstopmultiline 16962\sphinxAtStartPar 16963Encrypted part. 16964 16965\end{fulllineitems} 16966 16967\index{krb5\_cred.enc\_part2 (C member)@\spxentry{krb5\_cred.enc\_part2}\spxextra{C member}} 16968 16969\begin{fulllineitems} 16970\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred.enc_part2}}% 16971\pysigstartmultiline 16972\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred:c.krb5_cred}]{\sphinxcrossref{\DUrole{n}{krb5\_cred}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part2}}}}% 16973\pysigstopmultiline 16974\sphinxAtStartPar 16975Unencrypted version, if available. 16976 16977\end{fulllineitems} 16978 16979 16980 16981\subsubsection{krb5\_cred\_enc\_part} 16982\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}}\label{\detokenize{appdev/refs/types/krb5_cred_enc_part::doc}}\index{krb5\_cred\_enc\_part (C type)@\spxentry{krb5\_cred\_enc\_part}\spxextra{C type}} 16983 16984\begin{fulllineitems} 16985\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}}% 16986\pysigstartmultiline 16987\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cred\_enc\_part}}}}% 16988\pysigstopmultiline 16989\end{fulllineitems} 16990 16991 16992\sphinxAtStartPar 16993Cleartext credentials information. 16994 16995 16996\paragraph{Declaration} 16997\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:declaration}} 16998\sphinxAtStartPar 16999typedef struct \_krb5\_cred\_enc\_part krb5\_cred\_enc\_part 17000 17001 17002\paragraph{Members} 17003\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:members}}\index{krb5\_cred\_enc\_part.magic (C member)@\spxentry{krb5\_cred\_enc\_part.magic}\spxextra{C member}} 17004 17005\begin{fulllineitems} 17006\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.magic}}% 17007\pysigstartmultiline 17008\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17009\pysigstopmultiline 17010\end{fulllineitems} 17011 17012\index{krb5\_cred\_enc\_part.nonce (C member)@\spxentry{krb5\_cred\_enc\_part.nonce}\spxextra{C member}} 17013 17014\begin{fulllineitems} 17015\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.nonce}}% 17016\pysigstartmultiline 17017\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{nonce}}}}% 17018\pysigstopmultiline 17019\sphinxAtStartPar 17020Nonce (optional) 17021 17022\end{fulllineitems} 17023 17024\index{krb5\_cred\_enc\_part.timestamp (C member)@\spxentry{krb5\_cred\_enc\_part.timestamp}\spxextra{C member}} 17025 17026\begin{fulllineitems} 17027\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.timestamp}}% 17028\pysigstartmultiline 17029\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{timestamp}}}}% 17030\pysigstopmultiline 17031\sphinxAtStartPar 17032Generation time, seconds portion. 17033 17034\end{fulllineitems} 17035 17036\index{krb5\_cred\_enc\_part.usec (C member)@\spxentry{krb5\_cred\_enc\_part.usec}\spxextra{C member}} 17037 17038\begin{fulllineitems} 17039\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.usec}}% 17040\pysigstartmultiline 17041\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{usec}}}}% 17042\pysigstopmultiline 17043\sphinxAtStartPar 17044Generation time, microseconds portion. 17045 17046\end{fulllineitems} 17047 17048\index{krb5\_cred\_enc\_part.s\_address (C member)@\spxentry{krb5\_cred\_enc\_part.s\_address}\spxextra{C member}} 17049 17050\begin{fulllineitems} 17051\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.s_address}}% 17052\pysigstartmultiline 17053\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{s\_address}}}}% 17054\pysigstopmultiline 17055\sphinxAtStartPar 17056Sender address (optional) 17057 17058\end{fulllineitems} 17059 17060\index{krb5\_cred\_enc\_part.r\_address (C member)@\spxentry{krb5\_cred\_enc\_part.r\_address}\spxextra{C member}} 17061 17062\begin{fulllineitems} 17063\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.r_address}}% 17064\pysigstartmultiline 17065\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{r\_address}}}}% 17066\pysigstopmultiline 17067\sphinxAtStartPar 17068Recipient address (optional) 17069 17070\end{fulllineitems} 17071 17072\index{krb5\_cred\_enc\_part.ticket\_info (C member)@\spxentry{krb5\_cred\_enc\_part.ticket\_info}\spxextra{C member}} 17073 17074\begin{fulllineitems} 17075\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part.ticket_info}}% 17076\pysigstartmultiline 17077\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_enc_part:c.krb5_cred_enc_part}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_enc\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ticket\_info}}}}% 17078\pysigstopmultiline 17079\end{fulllineitems} 17080 17081 17082 17083\subsubsection{krb5\_cred\_info} 17084\label{\detokenize{appdev/refs/types/krb5_cred_info:krb5-cred-info}}\label{\detokenize{appdev/refs/types/krb5_cred_info:krb5-cred-info-struct}}\label{\detokenize{appdev/refs/types/krb5_cred_info::doc}}\index{krb5\_cred\_info (C type)@\spxentry{krb5\_cred\_info}\spxextra{C type}} 17085 17086\begin{fulllineitems} 17087\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}}% 17088\pysigstartmultiline 17089\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cred\_info}}}}% 17090\pysigstopmultiline 17091\end{fulllineitems} 17092 17093 17094\sphinxAtStartPar 17095Credentials information inserted into \sphinxstyleemphasis{EncKrbCredPart} . 17096 17097 17098\paragraph{Declaration} 17099\label{\detokenize{appdev/refs/types/krb5_cred_info:declaration}} 17100\sphinxAtStartPar 17101typedef struct \_krb5\_cred\_info krb5\_cred\_info 17102 17103 17104\paragraph{Members} 17105\label{\detokenize{appdev/refs/types/krb5_cred_info:members}}\index{krb5\_cred\_info.magic (C member)@\spxentry{krb5\_cred\_info.magic}\spxextra{C member}} 17106 17107\begin{fulllineitems} 17108\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.magic}}% 17109\pysigstartmultiline 17110\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17111\pysigstopmultiline 17112\end{fulllineitems} 17113 17114\index{krb5\_cred\_info.session (C member)@\spxentry{krb5\_cred\_info.session}\spxextra{C member}} 17115 17116\begin{fulllineitems} 17117\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.session}}% 17118\pysigstartmultiline 17119\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{session}}}}% 17120\pysigstopmultiline 17121\sphinxAtStartPar 17122Session key used to encrypt ticket. 17123 17124\end{fulllineitems} 17125 17126\index{krb5\_cred\_info.client (C member)@\spxentry{krb5\_cred\_info.client}\spxextra{C member}} 17127 17128\begin{fulllineitems} 17129\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.client}}% 17130\pysigstartmultiline 17131\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 17132\pysigstopmultiline 17133\sphinxAtStartPar 17134Client principal and realm. 17135 17136\end{fulllineitems} 17137 17138\index{krb5\_cred\_info.server (C member)@\spxentry{krb5\_cred\_info.server}\spxextra{C member}} 17139 17140\begin{fulllineitems} 17141\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.server}}% 17142\pysigstartmultiline 17143\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{server}}}}% 17144\pysigstopmultiline 17145\sphinxAtStartPar 17146Server principal and realm. 17147 17148\end{fulllineitems} 17149 17150\index{krb5\_cred\_info.flags (C member)@\spxentry{krb5\_cred\_info.flags}\spxextra{C member}} 17151 17152\begin{fulllineitems} 17153\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.flags}}% 17154\pysigstartmultiline 17155\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 17156\pysigstopmultiline 17157\sphinxAtStartPar 17158Ticket flags. 17159 17160\end{fulllineitems} 17161 17162\index{krb5\_cred\_info.times (C member)@\spxentry{krb5\_cred\_info.times}\spxextra{C member}} 17163 17164\begin{fulllineitems} 17165\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.times}}% 17166\pysigstartmultiline 17167\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{times}}}}% 17168\pysigstopmultiline 17169\sphinxAtStartPar 17170Auth, start, end, renew\_till. 17171 17172\end{fulllineitems} 17173 17174\index{krb5\_cred\_info.caddrs (C member)@\spxentry{krb5\_cred\_info.caddrs}\spxextra{C member}} 17175 17176\begin{fulllineitems} 17177\phantomsection\label{\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info.caddrs}}% 17178\pysigstartmultiline 17179\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_cred_info:c.krb5_cred_info}]{\sphinxcrossref{\DUrole{n}{krb5\_cred\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{caddrs}}}}% 17180\pysigstopmultiline 17181\sphinxAtStartPar 17182Array of pointers to addrs (optional) 17183 17184\end{fulllineitems} 17185 17186 17187 17188\subsubsection{krb5\_creds} 17189\label{\detokenize{appdev/refs/types/krb5_creds:krb5-creds}}\label{\detokenize{appdev/refs/types/krb5_creds:krb5-creds-struct}}\label{\detokenize{appdev/refs/types/krb5_creds::doc}}\index{krb5\_creds (C type)@\spxentry{krb5\_creds}\spxextra{C type}} 17190 17191\begin{fulllineitems} 17192\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}}% 17193\pysigstartmultiline 17194\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_creds}}}}% 17195\pysigstopmultiline 17196\end{fulllineitems} 17197 17198 17199\sphinxAtStartPar 17200Credentials structure including ticket, session key, and lifetime info. 17201 17202 17203\paragraph{Declaration} 17204\label{\detokenize{appdev/refs/types/krb5_creds:declaration}} 17205\sphinxAtStartPar 17206typedef struct \_krb5\_creds krb5\_creds 17207 17208 17209\paragraph{Members} 17210\label{\detokenize{appdev/refs/types/krb5_creds:members}}\index{krb5\_creds.magic (C member)@\spxentry{krb5\_creds.magic}\spxextra{C member}} 17211 17212\begin{fulllineitems} 17213\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.magic}}% 17214\pysigstartmultiline 17215\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17216\pysigstopmultiline 17217\end{fulllineitems} 17218 17219\index{krb5\_creds.client (C member)@\spxentry{krb5\_creds.client}\spxextra{C member}} 17220 17221\begin{fulllineitems} 17222\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.client}}% 17223\pysigstartmultiline 17224\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 17225\pysigstopmultiline 17226\sphinxAtStartPar 17227client’s principal identifier 17228 17229\end{fulllineitems} 17230 17231\index{krb5\_creds.server (C member)@\spxentry{krb5\_creds.server}\spxextra{C member}} 17232 17233\begin{fulllineitems} 17234\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.server}}% 17235\pysigstartmultiline 17236\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{server}}}}% 17237\pysigstopmultiline 17238\sphinxAtStartPar 17239server’s principal identifier 17240 17241\end{fulllineitems} 17242 17243\index{krb5\_creds.keyblock (C member)@\spxentry{krb5\_creds.keyblock}\spxextra{C member}} 17244 17245\begin{fulllineitems} 17246\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.keyblock}}% 17247\pysigstartmultiline 17248\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{keyblock}}}}% 17249\pysigstopmultiline 17250\sphinxAtStartPar 17251session encryption key info 17252 17253\end{fulllineitems} 17254 17255\index{krb5\_creds.times (C member)@\spxentry{krb5\_creds.times}\spxextra{C member}} 17256 17257\begin{fulllineitems} 17258\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.times}}% 17259\pysigstartmultiline 17260\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{times}}}}% 17261\pysigstopmultiline 17262\sphinxAtStartPar 17263lifetime info 17264 17265\end{fulllineitems} 17266 17267\index{krb5\_creds.is\_skey (C member)@\spxentry{krb5\_creds.is\_skey}\spxextra{C member}} 17268 17269\begin{fulllineitems} 17270\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.is_skey}}% 17271\pysigstartmultiline 17272\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{is\_skey}}}}% 17273\pysigstopmultiline 17274\sphinxAtStartPar 17275true if ticket is encrypted in another ticket’s skey 17276 17277\end{fulllineitems} 17278 17279\index{krb5\_creds.ticket\_flags (C member)@\spxentry{krb5\_creds.ticket\_flags}\spxextra{C member}} 17280 17281\begin{fulllineitems} 17282\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.ticket_flags}}% 17283\pysigstartmultiline 17284\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ticket\_flags}}}}% 17285\pysigstopmultiline 17286\sphinxAtStartPar 17287flags in ticket 17288 17289\end{fulllineitems} 17290 17291\index{krb5\_creds.addresses (C member)@\spxentry{krb5\_creds.addresses}\spxextra{C member}} 17292 17293\begin{fulllineitems} 17294\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.addresses}}% 17295\pysigstartmultiline 17296\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{addresses}}}}% 17297\pysigstopmultiline 17298\sphinxAtStartPar 17299addrs in ticket 17300 17301\end{fulllineitems} 17302 17303\index{krb5\_creds.ticket (C member)@\spxentry{krb5\_creds.ticket}\spxextra{C member}} 17304 17305\begin{fulllineitems} 17306\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.ticket}}% 17307\pysigstartmultiline 17308\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ticket}}}}% 17309\pysigstopmultiline 17310\sphinxAtStartPar 17311ticket string itself 17312 17313\end{fulllineitems} 17314 17315\index{krb5\_creds.second\_ticket (C member)@\spxentry{krb5\_creds.second\_ticket}\spxextra{C member}} 17316 17317\begin{fulllineitems} 17318\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.second_ticket}}% 17319\pysigstartmultiline 17320\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{second\_ticket}}}}% 17321\pysigstopmultiline 17322\sphinxAtStartPar 17323second ticket, if related to ticket (via DUPLICATE\sphinxhyphen{}SKEY or ENC\sphinxhyphen{}TKT\sphinxhyphen{}IN\sphinxhyphen{}SKEY) 17324 17325\end{fulllineitems} 17326 17327\index{krb5\_creds.authdata (C member)@\spxentry{krb5\_creds.authdata}\spxextra{C member}} 17328 17329\begin{fulllineitems} 17330\phantomsection\label{\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds.authdata}}% 17331\pysigstartmultiline 17332\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_creds:c.krb5_creds}]{\sphinxcrossref{\DUrole{n}{krb5\_creds}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authdata}}}}% 17333\pysigstopmultiline 17334\sphinxAtStartPar 17335authorization data 17336 17337\end{fulllineitems} 17338 17339 17340 17341\subsubsection{krb5\_crypto\_iov} 17342\label{\detokenize{appdev/refs/types/krb5_crypto_iov:krb5-crypto-iov}}\label{\detokenize{appdev/refs/types/krb5_crypto_iov:krb5-crypto-iov-struct}}\label{\detokenize{appdev/refs/types/krb5_crypto_iov::doc}}\index{krb5\_crypto\_iov (C type)@\spxentry{krb5\_crypto\_iov}\spxextra{C type}} 17343 17344\begin{fulllineitems} 17345\phantomsection\label{\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}}% 17346\pysigstartmultiline 17347\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_crypto\_iov}}}}% 17348\pysigstopmultiline 17349\end{fulllineitems} 17350 17351 17352\sphinxAtStartPar 17353Structure to describe a region of text to be encrypted or decrypted. 17354 17355\sphinxAtStartPar 17356The \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\sphinxhyphen{}place; data is overwritten. Callers must allocate the right number of krb5\_crypto\_iov structures before calling into an iov API. 17357 17358 17359\paragraph{Declaration} 17360\label{\detokenize{appdev/refs/types/krb5_crypto_iov:declaration}} 17361\sphinxAtStartPar 17362typedef struct \_krb5\_crypto\_iov krb5\_crypto\_iov 17363 17364 17365\paragraph{Members} 17366\label{\detokenize{appdev/refs/types/krb5_crypto_iov:members}}\index{krb5\_crypto\_iov.flags (C member)@\spxentry{krb5\_crypto\_iov.flags}\spxextra{C member}} 17367 17368\begin{fulllineitems} 17369\phantomsection\label{\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov.flags}}% 17370\pysigstartmultiline 17371\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_cryptotype:c.krb5_cryptotype}]{\sphinxcrossref{\DUrole{n}{krb5\_cryptotype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 17372\pysigstopmultiline 17373\sphinxAtStartPar 17374iov type (see KRB5\_CRYPTO\_TYPE macros) 17375 17376\end{fulllineitems} 17377 17378\index{krb5\_crypto\_iov.data (C member)@\spxentry{krb5\_crypto\_iov.data}\spxextra{C member}} 17379 17380\begin{fulllineitems} 17381\phantomsection\label{\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov.data}}% 17382\pysigstartmultiline 17383\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_crypto_iov:c.krb5_crypto_iov}]{\sphinxcrossref{\DUrole{n}{krb5\_crypto\_iov}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{data}}}}% 17384\pysigstopmultiline 17385\end{fulllineitems} 17386 17387 17388 17389\subsubsection{krb5\_cryptotype} 17390\label{\detokenize{appdev/refs/types/krb5_cryptotype:krb5-cryptotype}}\label{\detokenize{appdev/refs/types/krb5_cryptotype:krb5-cryptotype-struct}}\label{\detokenize{appdev/refs/types/krb5_cryptotype::doc}}\index{krb5\_cryptotype (C type)@\spxentry{krb5\_cryptotype}\spxextra{C type}} 17391 17392\begin{fulllineitems} 17393\phantomsection\label{\detokenize{appdev/refs/types/krb5_cryptotype:c.krb5_cryptotype}}% 17394\pysigstartmultiline 17395\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cryptotype}}}}% 17396\pysigstopmultiline 17397\end{fulllineitems} 17398 17399 17400 17401\paragraph{Declaration} 17402\label{\detokenize{appdev/refs/types/krb5_cryptotype:declaration}} 17403\sphinxAtStartPar 17404typedef krb5\_int32 krb5\_cryptotype 17405 17406 17407\subsubsection{krb5\_data} 17408\label{\detokenize{appdev/refs/types/krb5_data:krb5-data}}\label{\detokenize{appdev/refs/types/krb5_data:krb5-data-struct}}\label{\detokenize{appdev/refs/types/krb5_data::doc}}\index{krb5\_data (C type)@\spxentry{krb5\_data}\spxextra{C type}} 17409 17410\begin{fulllineitems} 17411\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data}}% 17412\pysigstartmultiline 17413\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_data}}}}% 17414\pysigstopmultiline 17415\end{fulllineitems} 17416 17417 17418 17419\paragraph{Declaration} 17420\label{\detokenize{appdev/refs/types/krb5_data:declaration}} 17421\sphinxAtStartPar 17422typedef struct \_krb5\_data krb5\_data 17423 17424 17425\paragraph{Members} 17426\label{\detokenize{appdev/refs/types/krb5_data:members}}\index{krb5\_data.magic (C member)@\spxentry{krb5\_data.magic}\spxextra{C member}} 17427 17428\begin{fulllineitems} 17429\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data.magic}}% 17430\pysigstartmultiline 17431\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17432\pysigstopmultiline 17433\end{fulllineitems} 17434 17435\index{krb5\_data.length (C member)@\spxentry{krb5\_data.length}\spxextra{C member}} 17436 17437\begin{fulllineitems} 17438\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data.length}}% 17439\pysigstartmultiline 17440\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 17441\pysigstopmultiline 17442\end{fulllineitems} 17443 17444\index{krb5\_data.data (C member)@\spxentry{krb5\_data.data}\spxextra{C member}} 17445 17446\begin{fulllineitems} 17447\phantomsection\label{\detokenize{appdev/refs/types/krb5_data:c.krb5_data.data}}% 17448\pysigstartmultiline 17449\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{data}}}}% 17450\pysigstopmultiline 17451\end{fulllineitems} 17452 17453 17454 17455\subsubsection{krb5\_deltat} 17456\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)@\spxentry{krb5\_deltat}\spxextra{C type}} 17457 17458\begin{fulllineitems} 17459\phantomsection\label{\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}}% 17460\pysigstartmultiline 17461\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_deltat}}}}% 17462\pysigstopmultiline 17463\end{fulllineitems} 17464 17465 17466 17467\paragraph{Declaration} 17468\label{\detokenize{appdev/refs/types/krb5_deltat:declaration}} 17469\sphinxAtStartPar 17470typedef krb5\_int32 krb5\_deltat 17471 17472 17473\subsubsection{krb5\_enc\_data} 17474\label{\detokenize{appdev/refs/types/krb5_enc_data:krb5-enc-data}}\label{\detokenize{appdev/refs/types/krb5_enc_data:krb5-enc-data-struct}}\label{\detokenize{appdev/refs/types/krb5_enc_data::doc}}\index{krb5\_enc\_data (C type)@\spxentry{krb5\_enc\_data}\spxextra{C type}} 17475 17476\begin{fulllineitems} 17477\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}}% 17478\pysigstartmultiline 17479\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_enc\_data}}}}% 17480\pysigstopmultiline 17481\end{fulllineitems} 17482 17483 17484 17485\paragraph{Declaration} 17486\label{\detokenize{appdev/refs/types/krb5_enc_data:declaration}} 17487\sphinxAtStartPar 17488typedef struct \_krb5\_enc\_data krb5\_enc\_data 17489 17490 17491\paragraph{Members} 17492\label{\detokenize{appdev/refs/types/krb5_enc_data:members}}\index{krb5\_enc\_data.magic (C member)@\spxentry{krb5\_enc\_data.magic}\spxextra{C member}} 17493 17494\begin{fulllineitems} 17495\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.magic}}% 17496\pysigstartmultiline 17497\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17498\pysigstopmultiline 17499\end{fulllineitems} 17500 17501\index{krb5\_enc\_data.enctype (C member)@\spxentry{krb5\_enc\_data.enctype}\spxextra{C member}} 17502 17503\begin{fulllineitems} 17504\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.enctype}}% 17505\pysigstartmultiline 17506\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enctype}}}}% 17507\pysigstopmultiline 17508\end{fulllineitems} 17509 17510\index{krb5\_enc\_data.kvno (C member)@\spxentry{krb5\_enc\_data.kvno}\spxextra{C member}} 17511 17512\begin{fulllineitems} 17513\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.kvno}}% 17514\pysigstartmultiline 17515\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{\DUrole{n}{krb5\_kvno}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{kvno}}}}% 17516\pysigstopmultiline 17517\end{fulllineitems} 17518 17519\index{krb5\_enc\_data.ciphertext (C member)@\spxentry{krb5\_enc\_data.ciphertext}\spxextra{C member}} 17520 17521\begin{fulllineitems} 17522\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data.ciphertext}}% 17523\pysigstartmultiline 17524\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ciphertext}}}}% 17525\pysigstopmultiline 17526\end{fulllineitems} 17527 17528 17529 17530\subsubsection{krb5\_enc\_kdc\_rep\_part} 17531\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}}\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part::doc}}\index{krb5\_enc\_kdc\_rep\_part (C type)@\spxentry{krb5\_enc\_kdc\_rep\_part}\spxextra{C type}} 17532 17533\begin{fulllineitems} 17534\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}}% 17535\pysigstartmultiline 17536\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}% 17537\pysigstopmultiline 17538\end{fulllineitems} 17539 17540 17541\sphinxAtStartPar 17542C representation of \sphinxstyleemphasis{EncKDCRepPart} protocol message. 17543 17544\sphinxAtStartPar 17545This is the cleartext message that is encrypted and inserted in \sphinxstyleemphasis{KDC\sphinxhyphen{}REP} . 17546 17547 17548\paragraph{Declaration} 17549\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:declaration}} 17550\sphinxAtStartPar 17551typedef struct \_krb5\_enc\_kdc\_rep\_part krb5\_enc\_kdc\_rep\_part 17552 17553 17554\paragraph{Members} 17555\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:members}}\index{krb5\_enc\_kdc\_rep\_part.magic (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.magic}\spxextra{C member}} 17556 17557\begin{fulllineitems} 17558\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.magic}}% 17559\pysigstartmultiline 17560\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17561\pysigstopmultiline 17562\end{fulllineitems} 17563 17564\index{krb5\_enc\_kdc\_rep\_part.msg\_type (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.msg\_type}\spxextra{C member}} 17565 17566\begin{fulllineitems} 17567\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.msg_type}}% 17568\pysigstartmultiline 17569\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}]{\sphinxcrossref{\DUrole{n}{krb5\_msgtype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{msg\_type}}}}% 17570\pysigstopmultiline 17571\sphinxAtStartPar 17572krb5 message type 17573 17574\end{fulllineitems} 17575 17576\index{krb5\_enc\_kdc\_rep\_part.session (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.session}\spxextra{C member}} 17577 17578\begin{fulllineitems} 17579\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.session}}% 17580\pysigstartmultiline 17581\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{session}}}}% 17582\pysigstopmultiline 17583\sphinxAtStartPar 17584Session key. 17585 17586\end{fulllineitems} 17587 17588\index{krb5\_enc\_kdc\_rep\_part.last\_req (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.last\_req}\spxextra{C member}} 17589 17590\begin{fulllineitems} 17591\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.last_req}}% 17592\pysigstartmultiline 17593\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_last\_req\_entry}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{last\_req}}}}% 17594\pysigstopmultiline 17595\sphinxAtStartPar 17596Array of pointers to entries. 17597 17598\end{fulllineitems} 17599 17600\index{krb5\_enc\_kdc\_rep\_part.nonce (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.nonce}\spxextra{C member}} 17601 17602\begin{fulllineitems} 17603\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.nonce}}% 17604\pysigstartmultiline 17605\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{nonce}}}}% 17606\pysigstopmultiline 17607\sphinxAtStartPar 17608Nonce from request. 17609 17610\end{fulllineitems} 17611 17612\index{krb5\_enc\_kdc\_rep\_part.key\_exp (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.key\_exp}\spxextra{C member}} 17613 17614\begin{fulllineitems} 17615\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.key_exp}}% 17616\pysigstartmultiline 17617\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{key\_exp}}}}% 17618\pysigstopmultiline 17619\sphinxAtStartPar 17620Expiration date. 17621 17622\end{fulllineitems} 17623 17624\index{krb5\_enc\_kdc\_rep\_part.flags (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.flags}\spxextra{C member}} 17625 17626\begin{fulllineitems} 17627\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.flags}}% 17628\pysigstartmultiline 17629\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 17630\pysigstopmultiline 17631\sphinxAtStartPar 17632Ticket flags. 17633 17634\end{fulllineitems} 17635 17636\index{krb5\_enc\_kdc\_rep\_part.times (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.times}\spxextra{C member}} 17637 17638\begin{fulllineitems} 17639\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.times}}% 17640\pysigstartmultiline 17641\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{times}}}}% 17642\pysigstopmultiline 17643\sphinxAtStartPar 17644Lifetime info. 17645 17646\end{fulllineitems} 17647 17648\index{krb5\_enc\_kdc\_rep\_part.server (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.server}\spxextra{C member}} 17649 17650\begin{fulllineitems} 17651\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.server}}% 17652\pysigstartmultiline 17653\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{server}}}}% 17654\pysigstopmultiline 17655\sphinxAtStartPar 17656Server’s principal identifier. 17657 17658\end{fulllineitems} 17659 17660\index{krb5\_enc\_kdc\_rep\_part.caddrs (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.caddrs}\spxextra{C member}} 17661 17662\begin{fulllineitems} 17663\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.caddrs}}% 17664\pysigstartmultiline 17665\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{caddrs}}}}% 17666\pysigstopmultiline 17667\sphinxAtStartPar 17668Array of ptrs to addrs, optional. 17669 17670\end{fulllineitems} 17671 17672\index{krb5\_enc\_kdc\_rep\_part.enc\_padata (C member)@\spxentry{krb5\_enc\_kdc\_rep\_part.enc\_padata}\spxextra{C member}} 17673 17674\begin{fulllineitems} 17675\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part.enc_padata}}% 17676\pysigstartmultiline 17677\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_padata}}}}% 17678\pysigstopmultiline 17679\sphinxAtStartPar 17680Encrypted preauthentication data. 17681 17682\end{fulllineitems} 17683 17684 17685 17686\subsubsection{krb5\_enc\_tkt\_part} 17687\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:krb5-enc-tkt-part}}\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:krb5-enc-tkt-part-struct}}\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part::doc}}\index{krb5\_enc\_tkt\_part (C type)@\spxentry{krb5\_enc\_tkt\_part}\spxextra{C type}} 17688 17689\begin{fulllineitems} 17690\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}}% 17691\pysigstartmultiline 17692\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_enc\_tkt\_part}}}}% 17693\pysigstopmultiline 17694\end{fulllineitems} 17695 17696 17697\sphinxAtStartPar 17698Encrypted part of ticket. 17699 17700 17701\paragraph{Declaration} 17702\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:declaration}} 17703\sphinxAtStartPar 17704typedef struct \_krb5\_enc\_tkt\_part krb5\_enc\_tkt\_part 17705 17706 17707\paragraph{Members} 17708\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:members}}\index{krb5\_enc\_tkt\_part.magic (C member)@\spxentry{krb5\_enc\_tkt\_part.magic}\spxextra{C member}} 17709 17710\begin{fulllineitems} 17711\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.magic}}% 17712\pysigstartmultiline 17713\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17714\pysigstopmultiline 17715\end{fulllineitems} 17716 17717\index{krb5\_enc\_tkt\_part.flags (C member)@\spxentry{krb5\_enc\_tkt\_part.flags}\spxextra{C member}} 17718 17719\begin{fulllineitems} 17720\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.flags}}% 17721\pysigstartmultiline 17722\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 17723\pysigstopmultiline 17724\sphinxAtStartPar 17725flags 17726 17727\end{fulllineitems} 17728 17729\index{krb5\_enc\_tkt\_part.session (C member)@\spxentry{krb5\_enc\_tkt\_part.session}\spxextra{C member}} 17730 17731\begin{fulllineitems} 17732\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.session}}% 17733\pysigstartmultiline 17734\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{session}}}}% 17735\pysigstopmultiline 17736\sphinxAtStartPar 17737session key: includes enctype 17738 17739\end{fulllineitems} 17740 17741\index{krb5\_enc\_tkt\_part.client (C member)@\spxentry{krb5\_enc\_tkt\_part.client}\spxextra{C member}} 17742 17743\begin{fulllineitems} 17744\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.client}}% 17745\pysigstartmultiline 17746\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 17747\pysigstopmultiline 17748\sphinxAtStartPar 17749client name/realm 17750 17751\end{fulllineitems} 17752 17753\index{krb5\_enc\_tkt\_part.transited (C member)@\spxentry{krb5\_enc\_tkt\_part.transited}\spxextra{C member}} 17754 17755\begin{fulllineitems} 17756\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.transited}}% 17757\pysigstartmultiline 17758\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}]{\sphinxcrossref{\DUrole{n}{krb5\_transited}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{transited}}}}% 17759\pysigstopmultiline 17760\sphinxAtStartPar 17761list of transited realms 17762 17763\end{fulllineitems} 17764 17765\index{krb5\_enc\_tkt\_part.times (C member)@\spxentry{krb5\_enc\_tkt\_part.times}\spxextra{C member}} 17766 17767\begin{fulllineitems} 17768\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.times}}% 17769\pysigstartmultiline 17770\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{times}}}}% 17771\pysigstopmultiline 17772\sphinxAtStartPar 17773auth, start, end, renew\_till 17774 17775\end{fulllineitems} 17776 17777\index{krb5\_enc\_tkt\_part.caddrs (C member)@\spxentry{krb5\_enc\_tkt\_part.caddrs}\spxextra{C member}} 17778 17779\begin{fulllineitems} 17780\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.caddrs}}% 17781\pysigstartmultiline 17782\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{caddrs}}}}% 17783\pysigstopmultiline 17784\sphinxAtStartPar 17785array of ptrs to addresses 17786 17787\end{fulllineitems} 17788 17789\index{krb5\_enc\_tkt\_part.authorization\_data (C member)@\spxentry{krb5\_enc\_tkt\_part.authorization\_data}\spxextra{C member}} 17790 17791\begin{fulllineitems} 17792\phantomsection\label{\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part.authorization_data}}% 17793\pysigstartmultiline 17794\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authorization\_data}}}}% 17795\pysigstopmultiline 17796\sphinxAtStartPar 17797auth data 17798 17799\end{fulllineitems} 17800 17801 17802 17803\subsubsection{krb5\_encrypt\_block} 17804\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)@\spxentry{krb5\_encrypt\_block}\spxextra{C type}} 17805 17806\begin{fulllineitems} 17807\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}}% 17808\pysigstartmultiline 17809\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_encrypt\_block}}}}% 17810\pysigstopmultiline 17811\end{fulllineitems} 17812 17813 17814 17815\paragraph{Declaration} 17816\label{\detokenize{appdev/refs/types/krb5_encrypt_block:declaration}} 17817\sphinxAtStartPar 17818typedef struct \_krb5\_encrypt\_block krb5\_encrypt\_block 17819 17820 17821\paragraph{Members} 17822\label{\detokenize{appdev/refs/types/krb5_encrypt_block:members}}\index{krb5\_encrypt\_block.magic (C member)@\spxentry{krb5\_encrypt\_block.magic}\spxextra{C member}} 17823 17824\begin{fulllineitems} 17825\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block.magic}}% 17826\pysigstartmultiline 17827\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17828\pysigstopmultiline 17829\end{fulllineitems} 17830 17831\index{krb5\_encrypt\_block.crypto\_entry (C member)@\spxentry{krb5\_encrypt\_block.crypto\_entry}\spxextra{C member}} 17832 17833\begin{fulllineitems} 17834\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block.crypto_entry}}% 17835\pysigstartmultiline 17836\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{crypto\_entry}}}}% 17837\pysigstopmultiline 17838\end{fulllineitems} 17839 17840\index{krb5\_encrypt\_block.key (C member)@\spxentry{krb5\_encrypt\_block.key}\spxextra{C member}} 17841 17842\begin{fulllineitems} 17843\phantomsection\label{\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block.key}}% 17844\pysigstartmultiline 17845\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_encrypt_block:c.krb5_encrypt_block}]{\sphinxcrossref{\DUrole{n}{krb5\_encrypt\_block}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{key}}}}% 17846\pysigstopmultiline 17847\end{fulllineitems} 17848 17849 17850 17851\subsubsection{krb5\_enctype} 17852\label{\detokenize{appdev/refs/types/krb5_enctype:krb5-enctype}}\label{\detokenize{appdev/refs/types/krb5_enctype:krb5-enctype-struct}}\label{\detokenize{appdev/refs/types/krb5_enctype::doc}}\index{krb5\_enctype (C type)@\spxentry{krb5\_enctype}\spxextra{C type}} 17853 17854\begin{fulllineitems} 17855\phantomsection\label{\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}}% 17856\pysigstartmultiline 17857\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_enctype}}}}% 17858\pysigstopmultiline 17859\end{fulllineitems} 17860 17861 17862 17863\paragraph{Declaration} 17864\label{\detokenize{appdev/refs/types/krb5_enctype:declaration}} 17865\sphinxAtStartPar 17866typedef krb5\_int32 krb5\_enctype 17867 17868 17869\subsubsection{krb5\_error} 17870\label{\detokenize{appdev/refs/types/krb5_error:krb5-error}}\label{\detokenize{appdev/refs/types/krb5_error:krb5-error-struct}}\label{\detokenize{appdev/refs/types/krb5_error::doc}}\index{krb5\_error (C type)@\spxentry{krb5\_error}\spxextra{C type}} 17871 17872\begin{fulllineitems} 17873\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error}}% 17874\pysigstartmultiline 17875\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_error}}}}% 17876\pysigstopmultiline 17877\end{fulllineitems} 17878 17879 17880\sphinxAtStartPar 17881Error message structure. 17882 17883 17884\paragraph{Declaration} 17885\label{\detokenize{appdev/refs/types/krb5_error:declaration}} 17886\sphinxAtStartPar 17887typedef struct \_krb5\_error krb5\_error 17888 17889 17890\paragraph{Members} 17891\label{\detokenize{appdev/refs/types/krb5_error:members}}\index{krb5\_error.magic (C member)@\spxentry{krb5\_error.magic}\spxextra{C member}} 17892 17893\begin{fulllineitems} 17894\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.magic}}% 17895\pysigstartmultiline 17896\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 17897\pysigstopmultiline 17898\end{fulllineitems} 17899 17900\index{krb5\_error.ctime (C member)@\spxentry{krb5\_error.ctime}\spxextra{C member}} 17901 17902\begin{fulllineitems} 17903\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.ctime}}% 17904\pysigstartmultiline 17905\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ctime}}}}% 17906\pysigstopmultiline 17907\sphinxAtStartPar 17908Client sec portion; optional. 17909 17910\end{fulllineitems} 17911 17912\index{krb5\_error.cusec (C member)@\spxentry{krb5\_error.cusec}\spxextra{C member}} 17913 17914\begin{fulllineitems} 17915\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.cusec}}% 17916\pysigstartmultiline 17917\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{cusec}}}}% 17918\pysigstopmultiline 17919\sphinxAtStartPar 17920Client usec portion; optional. 17921 17922\end{fulllineitems} 17923 17924\index{krb5\_error.susec (C member)@\spxentry{krb5\_error.susec}\spxextra{C member}} 17925 17926\begin{fulllineitems} 17927\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.susec}}% 17928\pysigstartmultiline 17929\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{susec}}}}% 17930\pysigstopmultiline 17931\sphinxAtStartPar 17932Server usec portion. 17933 17934\end{fulllineitems} 17935 17936\index{krb5\_error.stime (C member)@\spxentry{krb5\_error.stime}\spxextra{C member}} 17937 17938\begin{fulllineitems} 17939\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.stime}}% 17940\pysigstartmultiline 17941\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{stime}}}}% 17942\pysigstopmultiline 17943\sphinxAtStartPar 17944Server sec portion. 17945 17946\end{fulllineitems} 17947 17948\index{krb5\_error.error (C member)@\spxentry{krb5\_error.error}\spxextra{C member}} 17949 17950\begin{fulllineitems} 17951\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.error}}% 17952\pysigstartmultiline 17953\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{error}}}}% 17954\pysigstopmultiline 17955\sphinxAtStartPar 17956Error code (protocol error \#’s) 17957 17958\end{fulllineitems} 17959 17960\index{krb5\_error.client (C member)@\spxentry{krb5\_error.client}\spxextra{C member}} 17961 17962\begin{fulllineitems} 17963\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.client}}% 17964\pysigstartmultiline 17965\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 17966\pysigstopmultiline 17967\sphinxAtStartPar 17968Client principal and realm. 17969 17970\end{fulllineitems} 17971 17972\index{krb5\_error.server (C member)@\spxentry{krb5\_error.server}\spxextra{C member}} 17973 17974\begin{fulllineitems} 17975\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.server}}% 17976\pysigstartmultiline 17977\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{server}}}}% 17978\pysigstopmultiline 17979\sphinxAtStartPar 17980Server principal and realm. 17981 17982\end{fulllineitems} 17983 17984\index{krb5\_error.text (C member)@\spxentry{krb5\_error.text}\spxextra{C member}} 17985 17986\begin{fulllineitems} 17987\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.text}}% 17988\pysigstartmultiline 17989\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{text}}}}% 17990\pysigstopmultiline 17991\sphinxAtStartPar 17992Descriptive text. 17993 17994\end{fulllineitems} 17995 17996\index{krb5\_error.e\_data (C member)@\spxentry{krb5\_error.e\_data}\spxextra{C member}} 17997 17998\begin{fulllineitems} 17999\phantomsection\label{\detokenize{appdev/refs/types/krb5_error:c.krb5_error.e_data}}% 18000\pysigstartmultiline 18001\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_error:c.krb5_error}]{\sphinxcrossref{\DUrole{n}{krb5\_error}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{e\_data}}}}% 18002\pysigstopmultiline 18003\sphinxAtStartPar 18004Additional error\sphinxhyphen{}describing data. 18005 18006\end{fulllineitems} 18007 18008 18009 18010\subsubsection{krb5\_error\_code} 18011\label{\detokenize{appdev/refs/types/krb5_error_code:krb5-error-code}}\label{\detokenize{appdev/refs/types/krb5_error_code:krb5-error-code-struct}}\label{\detokenize{appdev/refs/types/krb5_error_code::doc}}\index{krb5\_error\_code (C type)@\spxentry{krb5\_error\_code}\spxextra{C type}} 18012 18013\begin{fulllineitems} 18014\phantomsection\label{\detokenize{appdev/refs/types/krb5_error_code:c.krb5_error_code}}% 18015\pysigstartmultiline 18016\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_error\_code}}}}% 18017\pysigstopmultiline 18018\end{fulllineitems} 18019 18020 18021\sphinxAtStartPar 18022Used to convey an operation status. 18023 18024\sphinxAtStartPar 18025The value 0 indicates success; any other values are com\_err codes. Use krb5\_get\_error\_message() to obtain a string describing the error. 18026 18027 18028\paragraph{Declaration} 18029\label{\detokenize{appdev/refs/types/krb5_error_code:declaration}} 18030\sphinxAtStartPar 18031typedef krb5\_int32 krb5\_error\_code 18032 18033 18034\subsubsection{krb5\_expire\_callback\_func} 18035\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:krb5-expire-callback-func}}\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:krb5-expire-callback-func-struct}}\label{\detokenize{appdev/refs/types/krb5_expire_callback_func::doc}}\index{krb5\_expire\_callback\_func (C type)@\spxentry{krb5\_expire\_callback\_func}\spxextra{C type}} 18036 18037\begin{fulllineitems} 18038\phantomsection\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:c.krb5_expire_callback_func}}% 18039\pysigstartmultiline 18040\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_expire\_callback\_func}}}}% 18041\pysigstopmultiline 18042\end{fulllineitems} 18043 18044 18045 18046\paragraph{Declaration} 18047\label{\detokenize{appdev/refs/types/krb5_expire_callback_func:declaration}} 18048\sphinxAtStartPar 18049typedef void( * krb5\_expire\_callback\_func) (krb5\_context context, void *data, krb5\_timestamp password\_expiration, krb5\_timestamp account\_expiration, krb5\_boolean is\_last\_req) 18050 18051 18052\subsubsection{krb5\_flags} 18053\label{\detokenize{appdev/refs/types/krb5_flags:krb5-flags}}\label{\detokenize{appdev/refs/types/krb5_flags:krb5-flags-struct}}\label{\detokenize{appdev/refs/types/krb5_flags::doc}}\index{krb5\_flags (C type)@\spxentry{krb5\_flags}\spxextra{C type}} 18054 18055\begin{fulllineitems} 18056\phantomsection\label{\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}}% 18057\pysigstartmultiline 18058\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_flags}}}}% 18059\pysigstopmultiline 18060\end{fulllineitems} 18061 18062 18063 18064\paragraph{Declaration} 18065\label{\detokenize{appdev/refs/types/krb5_flags:declaration}} 18066\sphinxAtStartPar 18067typedef krb5\_int32 krb5\_flags 18068 18069 18070\subsubsection{krb5\_get\_init\_creds\_opt} 18071\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:krb5-get-init-creds-opt}}\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}}\index{krb5\_get\_init\_creds\_opt (C type)@\spxentry{krb5\_get\_init\_creds\_opt}\spxextra{C type}} 18072 18073\begin{fulllineitems} 18074\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}}% 18075\pysigstartmultiline 18076\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}% 18077\pysigstopmultiline 18078\end{fulllineitems} 18079 18080 18081\sphinxAtStartPar 18082Store options for \sphinxstyleemphasis{\_krb5\_get\_init\_creds} . 18083 18084 18085\paragraph{Declaration} 18086\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:declaration}} 18087\sphinxAtStartPar 18088typedef struct \_krb5\_get\_init\_creds\_opt krb5\_get\_init\_creds\_opt 18089 18090 18091\paragraph{Members} 18092\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:members}}\index{krb5\_get\_init\_creds\_opt.flags (C member)@\spxentry{krb5\_get\_init\_creds\_opt.flags}\spxextra{C member}} 18093 18094\begin{fulllineitems} 18095\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.flags}}% 18096\pysigstartmultiline 18097\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 18098\pysigstopmultiline 18099\end{fulllineitems} 18100 18101\index{krb5\_get\_init\_creds\_opt.tkt\_life (C member)@\spxentry{krb5\_get\_init\_creds\_opt.tkt\_life}\spxextra{C member}} 18102 18103\begin{fulllineitems} 18104\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.tkt_life}}% 18105\pysigstartmultiline 18106\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{tkt\_life}}}}% 18107\pysigstopmultiline 18108\end{fulllineitems} 18109 18110\index{krb5\_get\_init\_creds\_opt.renew\_life (C member)@\spxentry{krb5\_get\_init\_creds\_opt.renew\_life}\spxextra{C member}} 18111 18112\begin{fulllineitems} 18113\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.renew_life}}% 18114\pysigstartmultiline 18115\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_deltat:c.krb5_deltat}]{\sphinxcrossref{\DUrole{n}{krb5\_deltat}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{renew\_life}}}}% 18116\pysigstopmultiline 18117\end{fulllineitems} 18118 18119\index{krb5\_get\_init\_creds\_opt.forwardable (C member)@\spxentry{krb5\_get\_init\_creds\_opt.forwardable}\spxextra{C member}} 18120 18121\begin{fulllineitems} 18122\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.forwardable}}% 18123\pysigstartmultiline 18124\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{forwardable}}}}% 18125\pysigstopmultiline 18126\end{fulllineitems} 18127 18128\index{krb5\_get\_init\_creds\_opt.proxiable (C member)@\spxentry{krb5\_get\_init\_creds\_opt.proxiable}\spxextra{C member}} 18129 18130\begin{fulllineitems} 18131\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.proxiable}}% 18132\pysigstartmultiline 18133\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{proxiable}}}}% 18134\pysigstopmultiline 18135\end{fulllineitems} 18136 18137\index{krb5\_get\_init\_creds\_opt.etype\_list (C member)@\spxentry{krb5\_get\_init\_creds\_opt.etype\_list}\spxextra{C member}} 18138 18139\begin{fulllineitems} 18140\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.etype_list}}% 18141\pysigstartmultiline 18142\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{etype\_list}}}}% 18143\pysigstopmultiline 18144\end{fulllineitems} 18145 18146\index{krb5\_get\_init\_creds\_opt.etype\_list\_length (C member)@\spxentry{krb5\_get\_init\_creds\_opt.etype\_list\_length}\spxextra{C member}} 18147 18148\begin{fulllineitems} 18149\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.etype_list_length}}% 18150\pysigstartmultiline 18151\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{etype\_list\_length}}}}% 18152\pysigstopmultiline 18153\end{fulllineitems} 18154 18155\index{krb5\_get\_init\_creds\_opt.address\_list (C member)@\spxentry{krb5\_get\_init\_creds\_opt.address\_list}\spxextra{C member}} 18156 18157\begin{fulllineitems} 18158\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.address_list}}% 18159\pysigstartmultiline 18160\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{address\_list}}}}% 18161\pysigstopmultiline 18162\end{fulllineitems} 18163 18164\index{krb5\_get\_init\_creds\_opt.preauth\_list (C member)@\spxentry{krb5\_get\_init\_creds\_opt.preauth\_list}\spxextra{C member}} 18165 18166\begin{fulllineitems} 18167\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.preauth_list}}% 18168\pysigstartmultiline 18169\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{\DUrole{n}{krb5\_preauthtype}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{preauth\_list}}}}% 18170\pysigstopmultiline 18171\end{fulllineitems} 18172 18173\index{krb5\_get\_init\_creds\_opt.preauth\_list\_length (C member)@\spxentry{krb5\_get\_init\_creds\_opt.preauth\_list\_length}\spxextra{C member}} 18174 18175\begin{fulllineitems} 18176\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.preauth_list_length}}% 18177\pysigstartmultiline 18178\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{preauth\_list\_length}}}}% 18179\pysigstopmultiline 18180\end{fulllineitems} 18181 18182\index{krb5\_get\_init\_creds\_opt.salt (C member)@\spxentry{krb5\_get\_init\_creds\_opt.salt}\spxextra{C member}} 18183 18184\begin{fulllineitems} 18185\phantomsection\label{\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt.salt}}% 18186\pysigstartmultiline 18187\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_get_init_creds_opt:c.krb5_get_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_get\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{salt}}}}% 18188\pysigstopmultiline 18189\end{fulllineitems} 18190 18191 18192 18193\subsubsection{krb5\_gic\_opt\_pa\_data} 18194\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}}\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data::doc}}\index{krb5\_gic\_opt\_pa\_data (C type)@\spxentry{krb5\_gic\_opt\_pa\_data}\spxextra{C type}} 18195 18196\begin{fulllineitems} 18197\phantomsection\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data}}% 18198\pysigstartmultiline 18199\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_gic\_opt\_pa\_data}}}}% 18200\pysigstopmultiline 18201\end{fulllineitems} 18202 18203 18204\sphinxAtStartPar 18205Generic preauth option attribute/value pairs. 18206 18207 18208\paragraph{Declaration} 18209\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:declaration}} 18210\sphinxAtStartPar 18211typedef struct \_krb5\_gic\_opt\_pa\_data krb5\_gic\_opt\_pa\_data 18212 18213 18214\paragraph{Members} 18215\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:members}}\index{krb5\_gic\_opt\_pa\_data.attr (C member)@\spxentry{krb5\_gic\_opt\_pa\_data.attr}\spxextra{C member}} 18216 18217\begin{fulllineitems} 18218\phantomsection\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data.attr}}% 18219\pysigstartmultiline 18220\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_gic\_opt\_pa\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{attr}}}}% 18221\pysigstopmultiline 18222\end{fulllineitems} 18223 18224\index{krb5\_gic\_opt\_pa\_data.value (C member)@\spxentry{krb5\_gic\_opt\_pa\_data.value}\spxextra{C member}} 18225 18226\begin{fulllineitems} 18227\phantomsection\label{\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data.value}}% 18228\pysigstartmultiline 18229\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_gic_opt_pa_data:c.krb5_gic_opt_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_gic\_opt\_pa\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{value}}}}% 18230\pysigstopmultiline 18231\end{fulllineitems} 18232 18233 18234 18235\subsubsection{krb5\_int16} 18236\label{\detokenize{appdev/refs/types/krb5_int16:krb5-int16}}\label{\detokenize{appdev/refs/types/krb5_int16:krb5-int16-struct}}\label{\detokenize{appdev/refs/types/krb5_int16::doc}}\index{krb5\_int16 (C type)@\spxentry{krb5\_int16}\spxextra{C type}} 18237 18238\begin{fulllineitems} 18239\phantomsection\label{\detokenize{appdev/refs/types/krb5_int16:c.krb5_int16}}% 18240\pysigstartmultiline 18241\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_int16}}}}% 18242\pysigstopmultiline 18243\end{fulllineitems} 18244 18245 18246 18247\paragraph{Declaration} 18248\label{\detokenize{appdev/refs/types/krb5_int16:declaration}} 18249\sphinxAtStartPar 18250typedef int16\_t krb5\_int16 18251 18252 18253\subsubsection{krb5\_int32} 18254\label{\detokenize{appdev/refs/types/krb5_int32:krb5-int32}}\label{\detokenize{appdev/refs/types/krb5_int32:krb5-int32-struct}}\label{\detokenize{appdev/refs/types/krb5_int32::doc}}\index{krb5\_int32 (C type)@\spxentry{krb5\_int32}\spxextra{C type}} 18255 18256\begin{fulllineitems} 18257\phantomsection\label{\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}}% 18258\pysigstartmultiline 18259\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_int32}}}}% 18260\pysigstopmultiline 18261\end{fulllineitems} 18262 18263 18264 18265\paragraph{Declaration} 18266\label{\detokenize{appdev/refs/types/krb5_int32:declaration}} 18267\sphinxAtStartPar 18268typedef int32\_t krb5\_int32 18269 18270 18271\subsubsection{krb5\_kdc\_rep} 18272\label{\detokenize{appdev/refs/types/krb5_kdc_rep:krb5-kdc-rep}}\label{\detokenize{appdev/refs/types/krb5_kdc_rep:krb5-kdc-rep-struct}}\label{\detokenize{appdev/refs/types/krb5_kdc_rep::doc}}\index{krb5\_kdc\_rep (C type)@\spxentry{krb5\_kdc\_rep}\spxextra{C type}} 18273 18274\begin{fulllineitems} 18275\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}}% 18276\pysigstartmultiline 18277\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kdc\_rep}}}}% 18278\pysigstopmultiline 18279\end{fulllineitems} 18280 18281 18282\sphinxAtStartPar 18283Representation of the \sphinxstyleemphasis{KDC\sphinxhyphen{}REP} protocol message. 18284 18285 18286\paragraph{Declaration} 18287\label{\detokenize{appdev/refs/types/krb5_kdc_rep:declaration}} 18288\sphinxAtStartPar 18289typedef struct \_krb5\_kdc\_rep krb5\_kdc\_rep 18290 18291 18292\paragraph{Members} 18293\label{\detokenize{appdev/refs/types/krb5_kdc_rep:members}}\index{krb5\_kdc\_rep.magic (C member)@\spxentry{krb5\_kdc\_rep.magic}\spxextra{C member}} 18294 18295\begin{fulllineitems} 18296\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.magic}}% 18297\pysigstartmultiline 18298\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 18299\pysigstopmultiline 18300\end{fulllineitems} 18301 18302\index{krb5\_kdc\_rep.msg\_type (C member)@\spxentry{krb5\_kdc\_rep.msg\_type}\spxextra{C member}} 18303 18304\begin{fulllineitems} 18305\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.msg_type}}% 18306\pysigstartmultiline 18307\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}]{\sphinxcrossref{\DUrole{n}{krb5\_msgtype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{msg\_type}}}}% 18308\pysigstopmultiline 18309\sphinxAtStartPar 18310KRB5\_AS\_REP or KRB5\_KDC\_REP. 18311 18312\end{fulllineitems} 18313 18314\index{krb5\_kdc\_rep.padata (C member)@\spxentry{krb5\_kdc\_rep.padata}\spxextra{C member}} 18315 18316\begin{fulllineitems} 18317\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.padata}}% 18318\pysigstartmultiline 18319\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{padata}}}}% 18320\pysigstopmultiline 18321\sphinxAtStartPar 18322Preauthentication data from KDC. 18323 18324\end{fulllineitems} 18325 18326\index{krb5\_kdc\_rep.client (C member)@\spxentry{krb5\_kdc\_rep.client}\spxextra{C member}} 18327 18328\begin{fulllineitems} 18329\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.client}}% 18330\pysigstartmultiline 18331\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 18332\pysigstopmultiline 18333\sphinxAtStartPar 18334Client principal and realm. 18335 18336\end{fulllineitems} 18337 18338\index{krb5\_kdc\_rep.ticket (C member)@\spxentry{krb5\_kdc\_rep.ticket}\spxextra{C member}} 18339 18340\begin{fulllineitems} 18341\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.ticket}}% 18342\pysigstartmultiline 18343\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ticket}}}}% 18344\pysigstopmultiline 18345\sphinxAtStartPar 18346Ticket. 18347 18348\end{fulllineitems} 18349 18350\index{krb5\_kdc\_rep.enc\_part (C member)@\spxentry{krb5\_kdc\_rep.enc\_part}\spxextra{C member}} 18351 18352\begin{fulllineitems} 18353\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.enc_part}}% 18354\pysigstartmultiline 18355\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part}}}}% 18356\pysigstopmultiline 18357\sphinxAtStartPar 18358Encrypted part of reply. 18359 18360\end{fulllineitems} 18361 18362\index{krb5\_kdc\_rep.enc\_part2 (C member)@\spxentry{krb5\_kdc\_rep.enc\_part2}\spxextra{C member}} 18363 18364\begin{fulllineitems} 18365\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep.enc_part2}}% 18366\pysigstartmultiline 18367\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_kdc_rep_part:c.krb5_enc_kdc_rep_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_kdc\_rep\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_rep:c.krb5_kdc_rep}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_rep}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part2}}}}% 18368\pysigstopmultiline 18369\sphinxAtStartPar 18370Unencrypted version, if available. 18371 18372\end{fulllineitems} 18373 18374 18375 18376\subsubsection{krb5\_kdc\_req} 18377\label{\detokenize{appdev/refs/types/krb5_kdc_req:krb5-kdc-req}}\label{\detokenize{appdev/refs/types/krb5_kdc_req:krb5-kdc-req-struct}}\label{\detokenize{appdev/refs/types/krb5_kdc_req::doc}}\index{krb5\_kdc\_req (C type)@\spxentry{krb5\_kdc\_req}\spxextra{C type}} 18378 18379\begin{fulllineitems} 18380\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}}% 18381\pysigstartmultiline 18382\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kdc\_req}}}}% 18383\pysigstopmultiline 18384\end{fulllineitems} 18385 18386 18387\sphinxAtStartPar 18388C representation of KDC\sphinxhyphen{}REQ protocol message, including KDC\sphinxhyphen{}REQ\sphinxhyphen{}BODY. 18389 18390 18391\paragraph{Declaration} 18392\label{\detokenize{appdev/refs/types/krb5_kdc_req:declaration}} 18393\sphinxAtStartPar 18394typedef struct \_krb5\_kdc\_req krb5\_kdc\_req 18395 18396 18397\paragraph{Members} 18398\label{\detokenize{appdev/refs/types/krb5_kdc_req:members}}\index{krb5\_kdc\_req.magic (C member)@\spxentry{krb5\_kdc\_req.magic}\spxextra{C member}} 18399 18400\begin{fulllineitems} 18401\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.magic}}% 18402\pysigstartmultiline 18403\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 18404\pysigstopmultiline 18405\end{fulllineitems} 18406 18407\index{krb5\_kdc\_req.msg\_type (C member)@\spxentry{krb5\_kdc\_req.msg\_type}\spxextra{C member}} 18408 18409\begin{fulllineitems} 18410\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.msg_type}}% 18411\pysigstartmultiline 18412\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}]{\sphinxcrossref{\DUrole{n}{krb5\_msgtype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{msg\_type}}}}% 18413\pysigstopmultiline 18414\sphinxAtStartPar 18415KRB5\_AS\_REQ or KRB5\_TGS\_REQ. 18416 18417\end{fulllineitems} 18418 18419\index{krb5\_kdc\_req.padata (C member)@\spxentry{krb5\_kdc\_req.padata}\spxextra{C member}} 18420 18421\begin{fulllineitems} 18422\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.padata}}% 18423\pysigstartmultiline 18424\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{padata}}}}% 18425\pysigstopmultiline 18426\sphinxAtStartPar 18427Preauthentication data. 18428 18429\end{fulllineitems} 18430 18431\index{krb5\_kdc\_req.kdc\_options (C member)@\spxentry{krb5\_kdc\_req.kdc\_options}\spxextra{C member}} 18432 18433\begin{fulllineitems} 18434\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.kdc_options}}% 18435\pysigstartmultiline 18436\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{kdc\_options}}}}% 18437\pysigstopmultiline 18438\sphinxAtStartPar 18439Requested options. 18440 18441\end{fulllineitems} 18442 18443\index{krb5\_kdc\_req.client (C member)@\spxentry{krb5\_kdc\_req.client}\spxextra{C member}} 18444 18445\begin{fulllineitems} 18446\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.client}}% 18447\pysigstartmultiline 18448\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{client}}}}% 18449\pysigstopmultiline 18450\sphinxAtStartPar 18451Client principal and realm. 18452 18453\end{fulllineitems} 18454 18455\index{krb5\_kdc\_req.server (C member)@\spxentry{krb5\_kdc\_req.server}\spxextra{C member}} 18456 18457\begin{fulllineitems} 18458\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.server}}% 18459\pysigstartmultiline 18460\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{server}}}}% 18461\pysigstopmultiline 18462\sphinxAtStartPar 18463Server principal and realm. 18464 18465\end{fulllineitems} 18466 18467\index{krb5\_kdc\_req.from (C member)@\spxentry{krb5\_kdc\_req.from}\spxextra{C member}} 18468 18469\begin{fulllineitems} 18470\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.from}}% 18471\pysigstartmultiline 18472\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{from}}}}% 18473\pysigstopmultiline 18474\sphinxAtStartPar 18475Requested start time. 18476 18477\end{fulllineitems} 18478 18479\index{krb5\_kdc\_req.till (C member)@\spxentry{krb5\_kdc\_req.till}\spxextra{C member}} 18480 18481\begin{fulllineitems} 18482\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.till}}% 18483\pysigstartmultiline 18484\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{till}}}}% 18485\pysigstopmultiline 18486\sphinxAtStartPar 18487Requested end time. 18488 18489\end{fulllineitems} 18490 18491\index{krb5\_kdc\_req.rtime (C member)@\spxentry{krb5\_kdc\_req.rtime}\spxextra{C member}} 18492 18493\begin{fulllineitems} 18494\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.rtime}}% 18495\pysigstartmultiline 18496\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{rtime}}}}% 18497\pysigstopmultiline 18498\sphinxAtStartPar 18499Requested renewable end time. 18500 18501\end{fulllineitems} 18502 18503\index{krb5\_kdc\_req.nonce (C member)@\spxentry{krb5\_kdc\_req.nonce}\spxextra{C member}} 18504 18505\begin{fulllineitems} 18506\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.nonce}}% 18507\pysigstartmultiline 18508\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{nonce}}}}% 18509\pysigstopmultiline 18510\sphinxAtStartPar 18511Nonce to match request and response. 18512 18513\end{fulllineitems} 18514 18515\index{krb5\_kdc\_req.nktypes (C member)@\spxentry{krb5\_kdc\_req.nktypes}\spxextra{C member}} 18516 18517\begin{fulllineitems} 18518\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.nktypes}}% 18519\pysigstartmultiline 18520\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{nktypes}}}}% 18521\pysigstopmultiline 18522\sphinxAtStartPar 18523Number of enctypes. 18524 18525\end{fulllineitems} 18526 18527\index{krb5\_kdc\_req.ktype (C member)@\spxentry{krb5\_kdc\_req.ktype}\spxextra{C member}} 18528 18529\begin{fulllineitems} 18530\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.ktype}}% 18531\pysigstartmultiline 18532\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ktype}}}}% 18533\pysigstopmultiline 18534\sphinxAtStartPar 18535Requested enctypes. 18536 18537\end{fulllineitems} 18538 18539\index{krb5\_kdc\_req.addresses (C member)@\spxentry{krb5\_kdc\_req.addresses}\spxextra{C member}} 18540 18541\begin{fulllineitems} 18542\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.addresses}}% 18543\pysigstartmultiline 18544\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_address:c.krb5_address}]{\sphinxcrossref{\DUrole{n}{krb5\_address}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{addresses}}}}% 18545\pysigstopmultiline 18546\sphinxAtStartPar 18547Requested addresses (optional) 18548 18549\end{fulllineitems} 18550 18551\index{krb5\_kdc\_req.authorization\_data (C member)@\spxentry{krb5\_kdc\_req.authorization\_data}\spxextra{C member}} 18552 18553\begin{fulllineitems} 18554\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.authorization_data}}% 18555\pysigstartmultiline 18556\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authorization\_data}}}}% 18557\pysigstopmultiline 18558\sphinxAtStartPar 18559Encrypted authz data (optional) 18560 18561\end{fulllineitems} 18562 18563\index{krb5\_kdc\_req.unenc\_authdata (C member)@\spxentry{krb5\_kdc\_req.unenc\_authdata}\spxextra{C member}} 18564 18565\begin{fulllineitems} 18566\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.unenc_authdata}}% 18567\pysigstartmultiline 18568\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authdata:c.krb5_authdata}]{\sphinxcrossref{\DUrole{n}{krb5\_authdata}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{unenc\_authdata}}}}% 18569\pysigstopmultiline 18570\sphinxAtStartPar 18571Unencrypted authz data. 18572 18573\end{fulllineitems} 18574 18575\index{krb5\_kdc\_req.second\_ticket (C member)@\spxentry{krb5\_kdc\_req.second\_ticket}\spxextra{C member}} 18576 18577\begin{fulllineitems} 18578\phantomsection\label{\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req.second_ticket}}% 18579\pysigstartmultiline 18580\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_kdc_req:c.krb5_kdc_req}]{\sphinxcrossref{\DUrole{n}{krb5\_kdc\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{second\_ticket}}}}% 18581\pysigstopmultiline 18582\sphinxAtStartPar 18583Second ticket array (optional) 18584 18585\end{fulllineitems} 18586 18587 18588 18589\subsubsection{krb5\_keyblock} 18590\label{\detokenize{appdev/refs/types/krb5_keyblock:krb5-keyblock}}\label{\detokenize{appdev/refs/types/krb5_keyblock:krb5-keyblock-struct}}\label{\detokenize{appdev/refs/types/krb5_keyblock::doc}}\index{krb5\_keyblock (C type)@\spxentry{krb5\_keyblock}\spxextra{C type}} 18591 18592\begin{fulllineitems} 18593\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}}% 18594\pysigstartmultiline 18595\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_keyblock}}}}% 18596\pysigstopmultiline 18597\end{fulllineitems} 18598 18599 18600\sphinxAtStartPar 18601Exposed contents of a key. 18602 18603 18604\paragraph{Declaration} 18605\label{\detokenize{appdev/refs/types/krb5_keyblock:declaration}} 18606\sphinxAtStartPar 18607typedef struct \_krb5\_keyblock krb5\_keyblock 18608 18609 18610\paragraph{Members} 18611\label{\detokenize{appdev/refs/types/krb5_keyblock:members}}\index{krb5\_keyblock.magic (C member)@\spxentry{krb5\_keyblock.magic}\spxextra{C member}} 18612 18613\begin{fulllineitems} 18614\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.magic}}% 18615\pysigstartmultiline 18616\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 18617\pysigstopmultiline 18618\end{fulllineitems} 18619 18620\index{krb5\_keyblock.enctype (C member)@\spxentry{krb5\_keyblock.enctype}\spxextra{C member}} 18621 18622\begin{fulllineitems} 18623\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.enctype}}% 18624\pysigstartmultiline 18625\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enctype:c.krb5_enctype}]{\sphinxcrossref{\DUrole{n}{krb5\_enctype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enctype}}}}% 18626\pysigstopmultiline 18627\end{fulllineitems} 18628 18629\index{krb5\_keyblock.length (C member)@\spxentry{krb5\_keyblock.length}\spxextra{C member}} 18630 18631\begin{fulllineitems} 18632\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.length}}% 18633\pysigstartmultiline 18634\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 18635\pysigstopmultiline 18636\end{fulllineitems} 18637 18638\index{krb5\_keyblock.contents (C member)@\spxentry{krb5\_keyblock.contents}\spxextra{C member}} 18639 18640\begin{fulllineitems} 18641\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock.contents}}% 18642\pysigstartmultiline 18643\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{contents}}}}% 18644\pysigstopmultiline 18645\end{fulllineitems} 18646 18647 18648 18649\subsubsection{krb5\_keytab\_entry} 18650\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)@\spxentry{krb5\_keytab\_entry}\spxextra{C type}} 18651 18652\begin{fulllineitems} 18653\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}}% 18654\pysigstartmultiline 18655\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_keytab\_entry}}}}% 18656\pysigstopmultiline 18657\end{fulllineitems} 18658 18659 18660\sphinxAtStartPar 18661A key table entry. 18662 18663 18664\paragraph{Declaration} 18665\label{\detokenize{appdev/refs/types/krb5_keytab_entry:declaration}} 18666\sphinxAtStartPar 18667typedef struct krb5\_keytab\_entry\_st krb5\_keytab\_entry 18668 18669 18670\paragraph{Members} 18671\label{\detokenize{appdev/refs/types/krb5_keytab_entry:members}}\index{krb5\_keytab\_entry.magic (C member)@\spxentry{krb5\_keytab\_entry.magic}\spxextra{C member}} 18672 18673\begin{fulllineitems} 18674\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.magic}}% 18675\pysigstartmultiline 18676\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 18677\pysigstopmultiline 18678\end{fulllineitems} 18679 18680\index{krb5\_keytab\_entry.principal (C member)@\spxentry{krb5\_keytab\_entry.principal}\spxextra{C member}} 18681 18682\begin{fulllineitems} 18683\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.principal}}% 18684\pysigstartmultiline 18685\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{principal}}}}% 18686\pysigstopmultiline 18687\sphinxAtStartPar 18688Principal of this key. 18689 18690\end{fulllineitems} 18691 18692\index{krb5\_keytab\_entry.timestamp (C member)@\spxentry{krb5\_keytab\_entry.timestamp}\spxextra{C member}} 18693 18694\begin{fulllineitems} 18695\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.timestamp}}% 18696\pysigstartmultiline 18697\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{timestamp}}}}% 18698\pysigstopmultiline 18699\sphinxAtStartPar 18700Time entry written to keytable. 18701 18702\end{fulllineitems} 18703 18704\index{krb5\_keytab\_entry.vno (C member)@\spxentry{krb5\_keytab\_entry.vno}\spxextra{C member}} 18705 18706\begin{fulllineitems} 18707\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.vno}}% 18708\pysigstartmultiline 18709\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}]{\sphinxcrossref{\DUrole{n}{krb5\_kvno}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{vno}}}}% 18710\pysigstopmultiline 18711\sphinxAtStartPar 18712Key version number. 18713 18714\end{fulllineitems} 18715 18716\index{krb5\_keytab\_entry.key (C member)@\spxentry{krb5\_keytab\_entry.key}\spxextra{C member}} 18717 18718\begin{fulllineitems} 18719\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry.key}}% 18720\pysigstartmultiline 18721\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_keyblock:c.krb5_keyblock}]{\sphinxcrossref{\DUrole{n}{krb5\_keyblock}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_keytab_entry:c.krb5_keytab_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_keytab\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{key}}}}% 18722\pysigstopmultiline 18723\sphinxAtStartPar 18724The secret key. 18725 18726\end{fulllineitems} 18727 18728 18729 18730\subsubsection{krb5\_keyusage} 18731\label{\detokenize{appdev/refs/types/krb5_keyusage:krb5-keyusage}}\label{\detokenize{appdev/refs/types/krb5_keyusage:krb5-keyusage-struct}}\label{\detokenize{appdev/refs/types/krb5_keyusage::doc}}\index{krb5\_keyusage (C type)@\spxentry{krb5\_keyusage}\spxextra{C type}} 18732 18733\begin{fulllineitems} 18734\phantomsection\label{\detokenize{appdev/refs/types/krb5_keyusage:c.krb5_keyusage}}% 18735\pysigstartmultiline 18736\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_keyusage}}}}% 18737\pysigstopmultiline 18738\end{fulllineitems} 18739 18740 18741 18742\paragraph{Declaration} 18743\label{\detokenize{appdev/refs/types/krb5_keyusage:declaration}} 18744\sphinxAtStartPar 18745typedef krb5\_int32 krb5\_keyusage 18746 18747 18748\subsubsection{krb5\_kt\_cursor} 18749\label{\detokenize{appdev/refs/types/krb5_kt_cursor:krb5-kt-cursor}}\label{\detokenize{appdev/refs/types/krb5_kt_cursor:krb5-kt-cursor-struct}}\label{\detokenize{appdev/refs/types/krb5_kt_cursor::doc}}\index{krb5\_kt\_cursor (C type)@\spxentry{krb5\_kt\_cursor}\spxextra{C type}} 18750 18751\begin{fulllineitems} 18752\phantomsection\label{\detokenize{appdev/refs/types/krb5_kt_cursor:c.krb5_kt_cursor}}% 18753\pysigstartmultiline 18754\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kt\_cursor}}}}% 18755\pysigstopmultiline 18756\end{fulllineitems} 18757 18758 18759 18760\paragraph{Declaration} 18761\label{\detokenize{appdev/refs/types/krb5_kt_cursor:declaration}} 18762\sphinxAtStartPar 18763typedef krb5\_pointer krb5\_kt\_cursor 18764 18765 18766\subsubsection{krb5\_kvno} 18767\label{\detokenize{appdev/refs/types/krb5_kvno:krb5-kvno}}\label{\detokenize{appdev/refs/types/krb5_kvno:krb5-kvno-struct}}\label{\detokenize{appdev/refs/types/krb5_kvno::doc}}\index{krb5\_kvno (C type)@\spxentry{krb5\_kvno}\spxextra{C type}} 18768 18769\begin{fulllineitems} 18770\phantomsection\label{\detokenize{appdev/refs/types/krb5_kvno:c.krb5_kvno}}% 18771\pysigstartmultiline 18772\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_kvno}}}}% 18773\pysigstopmultiline 18774\end{fulllineitems} 18775 18776 18777 18778\paragraph{Declaration} 18779\label{\detokenize{appdev/refs/types/krb5_kvno:declaration}} 18780\sphinxAtStartPar 18781typedef unsigned int krb5\_kvno 18782 18783 18784\subsubsection{krb5\_last\_req\_entry} 18785\label{\detokenize{appdev/refs/types/krb5_last_req_entry:krb5-last-req-entry}}\label{\detokenize{appdev/refs/types/krb5_last_req_entry:krb5-last-req-entry-struct}}\label{\detokenize{appdev/refs/types/krb5_last_req_entry::doc}}\index{krb5\_last\_req\_entry (C type)@\spxentry{krb5\_last\_req\_entry}\spxextra{C type}} 18786 18787\begin{fulllineitems} 18788\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}}% 18789\pysigstartmultiline 18790\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_last\_req\_entry}}}}% 18791\pysigstopmultiline 18792\end{fulllineitems} 18793 18794 18795\sphinxAtStartPar 18796Last request entry. 18797 18798 18799\paragraph{Declaration} 18800\label{\detokenize{appdev/refs/types/krb5_last_req_entry:declaration}} 18801\sphinxAtStartPar 18802typedef struct \_krb5\_last\_req\_entry krb5\_last\_req\_entry 18803 18804 18805\paragraph{Members} 18806\label{\detokenize{appdev/refs/types/krb5_last_req_entry:members}}\index{krb5\_last\_req\_entry.magic (C member)@\spxentry{krb5\_last\_req\_entry.magic}\spxextra{C member}} 18807 18808\begin{fulllineitems} 18809\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry.magic}}% 18810\pysigstartmultiline 18811\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_last\_req\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 18812\pysigstopmultiline 18813\end{fulllineitems} 18814 18815\index{krb5\_last\_req\_entry.lr\_type (C member)@\spxentry{krb5\_last\_req\_entry.lr\_type}\spxextra{C member}} 18816 18817\begin{fulllineitems} 18818\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry.lr_type}}% 18819\pysigstartmultiline 18820\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_last\_req\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{lr\_type}}}}% 18821\pysigstopmultiline 18822\sphinxAtStartPar 18823LR type. 18824 18825\end{fulllineitems} 18826 18827\index{krb5\_last\_req\_entry.value (C member)@\spxentry{krb5\_last\_req\_entry.value}\spxextra{C member}} 18828 18829\begin{fulllineitems} 18830\phantomsection\label{\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry.value}}% 18831\pysigstartmultiline 18832\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_last_req_entry:c.krb5_last_req_entry}]{\sphinxcrossref{\DUrole{n}{krb5\_last\_req\_entry}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{value}}}}% 18833\pysigstopmultiline 18834\sphinxAtStartPar 18835Timestamp. 18836 18837\end{fulllineitems} 18838 18839 18840 18841\subsubsection{krb5\_magic} 18842\label{\detokenize{appdev/refs/types/krb5_magic:krb5-magic}}\label{\detokenize{appdev/refs/types/krb5_magic:krb5-magic-struct}}\label{\detokenize{appdev/refs/types/krb5_magic::doc}}\index{krb5\_magic (C type)@\spxentry{krb5\_magic}\spxextra{C type}} 18843 18844\begin{fulllineitems} 18845\phantomsection\label{\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}}% 18846\pysigstartmultiline 18847\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_magic}}}}% 18848\pysigstopmultiline 18849\end{fulllineitems} 18850 18851 18852 18853\paragraph{Declaration} 18854\label{\detokenize{appdev/refs/types/krb5_magic:declaration}} 18855\sphinxAtStartPar 18856typedef krb5\_error\_code krb5\_magic 18857 18858 18859\subsubsection{krb5\_mk\_req\_checksum\_func} 18860\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:krb5-mk-req-checksum-func}}\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}}\index{krb5\_mk\_req\_checksum\_func (C type)@\spxentry{krb5\_mk\_req\_checksum\_func}\spxextra{C type}} 18861 18862\begin{fulllineitems} 18863\phantomsection\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:c.krb5_mk_req_checksum_func}}% 18864\pysigstartmultiline 18865\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_mk\_req\_checksum\_func}}}}% 18866\pysigstopmultiline 18867\end{fulllineitems} 18868 18869 18870\sphinxAtStartPar 18871Type of function used as a callback to generate checksum data for mk\_req. 18872 18873 18874\paragraph{Declaration} 18875\label{\detokenize{appdev/refs/types/krb5_mk_req_checksum_func:declaration}} 18876\sphinxAtStartPar 18877typedef krb5\_error\_code( * krb5\_mk\_req\_checksum\_func) (krb5\_context, krb5\_auth\_context, void *, krb5\_data **) 18878 18879 18880\subsubsection{krb5\_msgtype} 18881\label{\detokenize{appdev/refs/types/krb5_msgtype:krb5-msgtype}}\label{\detokenize{appdev/refs/types/krb5_msgtype:krb5-msgtype-struct}}\label{\detokenize{appdev/refs/types/krb5_msgtype::doc}}\index{krb5\_msgtype (C type)@\spxentry{krb5\_msgtype}\spxextra{C type}} 18882 18883\begin{fulllineitems} 18884\phantomsection\label{\detokenize{appdev/refs/types/krb5_msgtype:c.krb5_msgtype}}% 18885\pysigstartmultiline 18886\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_msgtype}}}}% 18887\pysigstopmultiline 18888\end{fulllineitems} 18889 18890 18891 18892\paragraph{Declaration} 18893\label{\detokenize{appdev/refs/types/krb5_msgtype:declaration}} 18894\sphinxAtStartPar 18895typedef unsigned int krb5\_msgtype 18896 18897 18898\subsubsection{krb5\_octet} 18899\label{\detokenize{appdev/refs/types/krb5_octet:krb5-octet}}\label{\detokenize{appdev/refs/types/krb5_octet:krb5-octet-struct}}\label{\detokenize{appdev/refs/types/krb5_octet::doc}}\index{krb5\_octet (C type)@\spxentry{krb5\_octet}\spxextra{C type}} 18900 18901\begin{fulllineitems} 18902\phantomsection\label{\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}}% 18903\pysigstartmultiline 18904\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_octet}}}}% 18905\pysigstopmultiline 18906\end{fulllineitems} 18907 18908 18909 18910\paragraph{Declaration} 18911\label{\detokenize{appdev/refs/types/krb5_octet:declaration}} 18912\sphinxAtStartPar 18913typedef uint8\_t krb5\_octet 18914 18915 18916\subsubsection{krb5\_pa\_pac\_req} 18917\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:krb5-pa-pac-req}}\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:krb5-pa-pac-req-struct}}\label{\detokenize{appdev/refs/types/krb5_pa_pac_req::doc}}\index{krb5\_pa\_pac\_req (C type)@\spxentry{krb5\_pa\_pac\_req}\spxextra{C type}} 18918 18919\begin{fulllineitems} 18920\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:c.krb5_pa_pac_req}}% 18921\pysigstartmultiline 18922\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pa\_pac\_req}}}}% 18923\pysigstopmultiline 18924\end{fulllineitems} 18925 18926 18927 18928\paragraph{Declaration} 18929\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:declaration}} 18930\sphinxAtStartPar 18931typedef struct \_krb5\_pa\_pac\_req krb5\_pa\_pac\_req 18932 18933 18934\paragraph{Members} 18935\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:members}}\index{krb5\_pa\_pac\_req.include\_pac (C member)@\spxentry{krb5\_pa\_pac\_req.include\_pac}\spxextra{C member}} 18936 18937\begin{fulllineitems} 18938\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_pac_req:c.krb5_pa_pac_req.include_pac}}% 18939\pysigstartmultiline 18940\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_boolean:c.krb5_boolean}]{\sphinxcrossref{\DUrole{n}{krb5\_boolean}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_pac_req:c.krb5_pa_pac_req}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_pac\_req}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{include\_pac}}}}% 18941\pysigstopmultiline 18942\sphinxAtStartPar 18943TRUE if a PAC should be included in TGS\sphinxhyphen{}REP. 18944 18945\end{fulllineitems} 18946 18947 18948 18949\subsubsection{krb5\_pa\_server\_referral\_data} 18950\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:krb5-pa-server-referral-data}}\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}}\index{krb5\_pa\_server\_referral\_data (C type)@\spxentry{krb5\_pa\_server\_referral\_data}\spxextra{C type}} 18951 18952\begin{fulllineitems} 18953\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}}% 18954\pysigstartmultiline 18955\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pa\_server\_referral\_data}}}}% 18956\pysigstopmultiline 18957\end{fulllineitems} 18958 18959 18960 18961\paragraph{Declaration} 18962\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:declaration}} 18963\sphinxAtStartPar 18964typedef struct \_krb5\_pa\_server\_referral\_data krb5\_pa\_server\_referral\_data 18965 18966 18967\paragraph{Members} 18968\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:members}}\index{krb5\_pa\_server\_referral\_data.referred\_realm (C member)@\spxentry{krb5\_pa\_server\_referral\_data.referred\_realm}\spxextra{C member}} 18969 18970\begin{fulllineitems} 18971\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.referred_realm}}% 18972\pysigstartmultiline 18973\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_server\_referral\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{referred\_realm}}}}% 18974\pysigstopmultiline 18975\end{fulllineitems} 18976 18977\index{krb5\_pa\_server\_referral\_data.true\_principal\_name (C member)@\spxentry{krb5\_pa\_server\_referral\_data.true\_principal\_name}\spxextra{C member}} 18978 18979\begin{fulllineitems} 18980\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.true_principal_name}}% 18981\pysigstartmultiline 18982\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_server\_referral\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{true\_principal\_name}}}}% 18983\pysigstopmultiline 18984\end{fulllineitems} 18985 18986\index{krb5\_pa\_server\_referral\_data.requested\_principal\_name (C member)@\spxentry{krb5\_pa\_server\_referral\_data.requested\_principal\_name}\spxextra{C member}} 18987 18988\begin{fulllineitems} 18989\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.requested_principal_name}}% 18990\pysigstartmultiline 18991\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_server\_referral\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{requested\_principal\_name}}}}% 18992\pysigstopmultiline 18993\end{fulllineitems} 18994 18995\index{krb5\_pa\_server\_referral\_data.referral\_valid\_until (C member)@\spxentry{krb5\_pa\_server\_referral\_data.referral\_valid\_until}\spxextra{C member}} 18996 18997\begin{fulllineitems} 18998\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.referral_valid_until}}% 18999\pysigstartmultiline 19000\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_server\_referral\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{referral\_valid\_until}}}}% 19001\pysigstopmultiline 19002\end{fulllineitems} 19003 19004\index{krb5\_pa\_server\_referral\_data.rep\_cksum (C member)@\spxentry{krb5\_pa\_server\_referral\_data.rep\_cksum}\spxextra{C member}} 19005 19006\begin{fulllineitems} 19007\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data.rep_cksum}}% 19008\pysigstartmultiline 19009\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_checksum:c.krb5_checksum}]{\sphinxcrossref{\DUrole{n}{krb5\_checksum}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_server_referral_data:c.krb5_pa_server_referral_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_server\_referral\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{rep\_cksum}}}}% 19010\pysigstopmultiline 19011\end{fulllineitems} 19012 19013 19014 19015\subsubsection{krb5\_pa\_svr\_referral\_data} 19016\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:krb5-pa-svr-referral-data-struct}}\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data::doc}}\index{krb5\_pa\_svr\_referral\_data (C type)@\spxentry{krb5\_pa\_svr\_referral\_data}\spxextra{C type}} 19017 19018\begin{fulllineitems} 19019\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:c.krb5_pa_svr_referral_data}}% 19020\pysigstartmultiline 19021\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pa\_svr\_referral\_data}}}}% 19022\pysigstopmultiline 19023\end{fulllineitems} 19024 19025 19026 19027\paragraph{Declaration} 19028\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:declaration}} 19029\sphinxAtStartPar 19030typedef struct \_krb5\_pa\_svr\_referral\_data krb5\_pa\_svr\_referral\_data 19031 19032 19033\paragraph{Members} 19034\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:members}}\index{krb5\_pa\_svr\_referral\_data.principal (C member)@\spxentry{krb5\_pa\_svr\_referral\_data.principal}\spxextra{C member}} 19035 19036\begin{fulllineitems} 19037\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:c.krb5_pa_svr_referral_data.principal}}% 19038\pysigstartmultiline 19039\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_svr_referral_data:c.krb5_pa_svr_referral_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_svr\_referral\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{principal}}}}% 19040\pysigstopmultiline 19041\sphinxAtStartPar 19042Referred name, only realm is required. 19043 19044\end{fulllineitems} 19045 19046 19047 19048\subsubsection{krb5\_pa\_data} 19049\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)@\spxentry{krb5\_pa\_data}\spxextra{C type}} 19050 19051\begin{fulllineitems} 19052\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}}% 19053\pysigstartmultiline 19054\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pa\_data}}}}% 19055\pysigstopmultiline 19056\end{fulllineitems} 19057 19058 19059\sphinxAtStartPar 19060Pre\sphinxhyphen{}authentication data. 19061 19062 19063\paragraph{Declaration} 19064\label{\detokenize{appdev/refs/types/krb5_pa_data:declaration}} 19065\sphinxAtStartPar 19066typedef struct \_krb5\_pa\_data krb5\_pa\_data 19067 19068 19069\paragraph{Members} 19070\label{\detokenize{appdev/refs/types/krb5_pa_data:members}}\index{krb5\_pa\_data.magic (C member)@\spxentry{krb5\_pa\_data.magic}\spxextra{C member}} 19071 19072\begin{fulllineitems} 19073\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.magic}}% 19074\pysigstartmultiline 19075\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 19076\pysigstopmultiline 19077\end{fulllineitems} 19078 19079\index{krb5\_pa\_data.pa\_type (C member)@\spxentry{krb5\_pa\_data.pa\_type}\spxextra{C member}} 19080 19081\begin{fulllineitems} 19082\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.pa_type}}% 19083\pysigstartmultiline 19084\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}]{\sphinxcrossref{\DUrole{n}{krb5\_preauthtype}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{pa\_type}}}}% 19085\pysigstopmultiline 19086\sphinxAtStartPar 19087Preauthentication data type. 19088 19089\end{fulllineitems} 19090 19091\index{krb5\_pa\_data.length (C member)@\spxentry{krb5\_pa\_data.length}\spxextra{C member}} 19092 19093\begin{fulllineitems} 19094\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.length}}% 19095\pysigstartmultiline 19096\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 19097\pysigstopmultiline 19098\sphinxAtStartPar 19099Length of data. 19100 19101\end{fulllineitems} 19102 19103\index{krb5\_pa\_data.contents (C member)@\spxentry{krb5\_pa\_data.contents}\spxextra{C member}} 19104 19105\begin{fulllineitems} 19106\phantomsection\label{\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data.contents}}% 19107\pysigstartmultiline 19108\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pa_data:c.krb5_pa_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pa\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{contents}}}}% 19109\pysigstopmultiline 19110\sphinxAtStartPar 19111Data. 19112 19113\end{fulllineitems} 19114 19115 19116 19117\subsubsection{krb5\_pointer} 19118\label{\detokenize{appdev/refs/types/krb5_pointer:krb5-pointer}}\label{\detokenize{appdev/refs/types/krb5_pointer:krb5-pointer-struct}}\label{\detokenize{appdev/refs/types/krb5_pointer::doc}}\index{krb5\_pointer (C type)@\spxentry{krb5\_pointer}\spxextra{C type}} 19119 19120\begin{fulllineitems} 19121\phantomsection\label{\detokenize{appdev/refs/types/krb5_pointer:c.krb5_pointer}}% 19122\pysigstartmultiline 19123\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pointer}}}}% 19124\pysigstopmultiline 19125\end{fulllineitems} 19126 19127 19128 19129\paragraph{Declaration} 19130\label{\detokenize{appdev/refs/types/krb5_pointer:declaration}} 19131\sphinxAtStartPar 19132typedef void* krb5\_pointer 19133 19134 19135\subsubsection{krb5\_post\_recv\_fn} 19136\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)@\spxentry{krb5\_post\_recv\_fn}\spxextra{C type}} 19137 19138\begin{fulllineitems} 19139\phantomsection\label{\detokenize{appdev/refs/types/krb5_post_recv_fn:c.krb5_post_recv_fn}}% 19140\pysigstartmultiline 19141\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_post\_recv\_fn}}}}% 19142\pysigstopmultiline 19143\end{fulllineitems} 19144 19145 19146\sphinxAtStartPar 19147Hook function for inspecting or overriding KDC replies. 19148 19149\sphinxAtStartPar 19150If \sphinxstyleemphasis{code} is non\sphinxhyphen{}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. 19151The hook function should use krb5\_copy\_data() to construct the value for \sphinxstyleemphasis{new\_reply\_out} , to ensure that it can be freed correctly by the library. 19152 19153 19154\paragraph{Declaration} 19155\label{\detokenize{appdev/refs/types/krb5_post_recv_fn:declaration}} 19156\sphinxAtStartPar 19157typedef 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) 19158 19159 19160\subsubsection{krb5\_pre\_send\_fn} 19161\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:krb5-pre-send-fn}}\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:krb5-pre-send-fn-struct}}\label{\detokenize{appdev/refs/types/krb5_pre_send_fn::doc}}\index{krb5\_pre\_send\_fn (C type)@\spxentry{krb5\_pre\_send\_fn}\spxextra{C type}} 19162 19163\begin{fulllineitems} 19164\phantomsection\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:c.krb5_pre_send_fn}}% 19165\pysigstartmultiline 19166\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pre\_send\_fn}}}}% 19167\pysigstopmultiline 19168\end{fulllineitems} 19169 19170 19171\sphinxAtStartPar 19172Hook function for inspecting or modifying messages sent to KDCs. 19173 19174\sphinxAtStartPar 19175If the hook function sets \sphinxstyleemphasis{new\_reply\_out} , \sphinxstyleemphasis{message} will not be sent to the KDC, and the given reply will used instead. 19176If the hook function sets \sphinxstyleemphasis{new\_message\_out} , the given message will be sent to the KDC in place of \sphinxstyleemphasis{message} . 19177If the hook function returns successfully without setting either output, \sphinxstyleemphasis{message} will be sent to the KDC normally. 19178The hook function should use 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. 19179 19180 19181\paragraph{Declaration} 19182\label{\detokenize{appdev/refs/types/krb5_pre_send_fn:declaration}} 19183\sphinxAtStartPar 19184typedef 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) 19185 19186 19187\subsubsection{krb5\_preauthtype} 19188\label{\detokenize{appdev/refs/types/krb5_preauthtype:krb5-preauthtype}}\label{\detokenize{appdev/refs/types/krb5_preauthtype:krb5-preauthtype-struct}}\label{\detokenize{appdev/refs/types/krb5_preauthtype::doc}}\index{krb5\_preauthtype (C type)@\spxentry{krb5\_preauthtype}\spxextra{C type}} 19189 19190\begin{fulllineitems} 19191\phantomsection\label{\detokenize{appdev/refs/types/krb5_preauthtype:c.krb5_preauthtype}}% 19192\pysigstartmultiline 19193\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_preauthtype}}}}% 19194\pysigstopmultiline 19195\end{fulllineitems} 19196 19197 19198 19199\paragraph{Declaration} 19200\label{\detokenize{appdev/refs/types/krb5_preauthtype:declaration}} 19201\sphinxAtStartPar 19202typedef krb5\_int32 krb5\_preauthtype 19203 19204 19205\subsubsection{krb5\_principal} 19206\label{\detokenize{appdev/refs/types/krb5_principal:krb5-principal}}\label{\detokenize{appdev/refs/types/krb5_principal:krb5-principal-struct}}\label{\detokenize{appdev/refs/types/krb5_principal::doc}}\index{krb5\_principal (C type)@\spxentry{krb5\_principal}\spxextra{C type}} 19207 19208\begin{fulllineitems} 19209\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}}% 19210\pysigstartmultiline 19211\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_principal}}}}% 19212\pysigstopmultiline 19213\end{fulllineitems} 19214 19215 19216 19217\paragraph{Declaration} 19218\label{\detokenize{appdev/refs/types/krb5_principal:declaration}} 19219\sphinxAtStartPar 19220typedef krb5\_principal\_data* krb5\_principal 19221 19222 19223\paragraph{Members} 19224\label{\detokenize{appdev/refs/types/krb5_principal:members}}\index{krb5\_principal.magic (C member)@\spxentry{krb5\_principal.magic}\spxextra{C member}} 19225 19226\begin{fulllineitems} 19227\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.magic}}% 19228\pysigstartmultiline 19229\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 19230\pysigstopmultiline 19231\end{fulllineitems} 19232 19233\index{krb5\_principal.realm (C member)@\spxentry{krb5\_principal.realm}\spxextra{C member}} 19234 19235\begin{fulllineitems} 19236\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.realm}}% 19237\pysigstartmultiline 19238\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{realm}}}}% 19239\pysigstopmultiline 19240\end{fulllineitems} 19241 19242\index{krb5\_principal.data (C member)@\spxentry{krb5\_principal.data}\spxextra{C member}} 19243 19244\begin{fulllineitems} 19245\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.data}}% 19246\pysigstartmultiline 19247\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{data}}}}% 19248\pysigstopmultiline 19249\sphinxAtStartPar 19250An array of strings. 19251 19252\end{fulllineitems} 19253 19254\index{krb5\_principal.length (C member)@\spxentry{krb5\_principal.length}\spxextra{C member}} 19255 19256\begin{fulllineitems} 19257\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.length}}% 19258\pysigstartmultiline 19259\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 19260\pysigstopmultiline 19261\end{fulllineitems} 19262 19263\index{krb5\_principal.type (C member)@\spxentry{krb5\_principal.type}\spxextra{C member}} 19264 19265\begin{fulllineitems} 19266\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal.type}}% 19267\pysigstartmultiline 19268\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{type}}}}% 19269\pysigstopmultiline 19270\end{fulllineitems} 19271 19272 19273 19274\subsubsection{krb5\_principal\_data} 19275\label{\detokenize{appdev/refs/types/krb5_principal_data:krb5-principal-data}}\label{\detokenize{appdev/refs/types/krb5_principal_data:krb5-principal-data-struct}}\label{\detokenize{appdev/refs/types/krb5_principal_data::doc}}\index{krb5\_principal\_data (C type)@\spxentry{krb5\_principal\_data}\spxextra{C type}} 19276 19277\begin{fulllineitems} 19278\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}}% 19279\pysigstartmultiline 19280\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_principal\_data}}}}% 19281\pysigstopmultiline 19282\end{fulllineitems} 19283 19284 19285 19286\paragraph{Declaration} 19287\label{\detokenize{appdev/refs/types/krb5_principal_data:declaration}} 19288\sphinxAtStartPar 19289typedef struct krb5\_principal\_data krb5\_principal\_data 19290 19291 19292\paragraph{Members} 19293\label{\detokenize{appdev/refs/types/krb5_principal_data:members}}\index{krb5\_principal\_data.magic (C member)@\spxentry{krb5\_principal\_data.magic}\spxextra{C member}} 19294 19295\begin{fulllineitems} 19296\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.magic}}% 19297\pysigstartmultiline 19298\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\DUrole{n}{krb5\_principal\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 19299\pysigstopmultiline 19300\end{fulllineitems} 19301 19302\index{krb5\_principal\_data.realm (C member)@\spxentry{krb5\_principal\_data.realm}\spxextra{C member}} 19303 19304\begin{fulllineitems} 19305\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.realm}}% 19306\pysigstartmultiline 19307\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\DUrole{n}{krb5\_principal\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{realm}}}}% 19308\pysigstopmultiline 19309\end{fulllineitems} 19310 19311\index{krb5\_principal\_data.data (C member)@\spxentry{krb5\_principal\_data.data}\spxextra{C member}} 19312 19313\begin{fulllineitems} 19314\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.data}}% 19315\pysigstartmultiline 19316\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\DUrole{n}{krb5\_principal\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{data}}}}% 19317\pysigstopmultiline 19318\sphinxAtStartPar 19319An array of strings. 19320 19321\end{fulllineitems} 19322 19323\index{krb5\_principal\_data.length (C member)@\spxentry{krb5\_principal\_data.length}\spxextra{C member}} 19324 19325\begin{fulllineitems} 19326\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.length}}% 19327\pysigstartmultiline 19328\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\DUrole{n}{krb5\_principal\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 19329\pysigstopmultiline 19330\end{fulllineitems} 19331 19332\index{krb5\_principal\_data.type (C member)@\spxentry{krb5\_principal\_data.type}\spxextra{C member}} 19333 19334\begin{fulllineitems} 19335\phantomsection\label{\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data.type}}% 19336\pysigstartmultiline 19337\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_principal_data:c.krb5_principal_data}]{\sphinxcrossref{\DUrole{n}{krb5\_principal\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{type}}}}% 19338\pysigstopmultiline 19339\end{fulllineitems} 19340 19341 19342 19343\subsubsection{krb5\_prompt} 19344\label{\detokenize{appdev/refs/types/krb5_prompt:krb5-prompt}}\label{\detokenize{appdev/refs/types/krb5_prompt:krb5-prompt-struct}}\label{\detokenize{appdev/refs/types/krb5_prompt::doc}}\index{krb5\_prompt (C type)@\spxentry{krb5\_prompt}\spxextra{C type}} 19345 19346\begin{fulllineitems} 19347\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}}% 19348\pysigstartmultiline 19349\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_prompt}}}}% 19350\pysigstopmultiline 19351\end{fulllineitems} 19352 19353 19354\sphinxAtStartPar 19355Text for prompt used in prompter callback function. 19356 19357 19358\paragraph{Declaration} 19359\label{\detokenize{appdev/refs/types/krb5_prompt:declaration}} 19360\sphinxAtStartPar 19361typedef struct \_krb5\_prompt krb5\_prompt 19362 19363 19364\paragraph{Members} 19365\label{\detokenize{appdev/refs/types/krb5_prompt:members}}\index{krb5\_prompt.prompt (C member)@\spxentry{krb5\_prompt.prompt}\spxextra{C member}} 19366 19367\begin{fulllineitems} 19368\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt.prompt}}% 19369\pysigstartmultiline 19370\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}]{\sphinxcrossref{\DUrole{n}{krb5\_prompt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{prompt}}}}% 19371\pysigstopmultiline 19372\sphinxAtStartPar 19373The prompt to show to the user. 19374 19375\end{fulllineitems} 19376 19377\index{krb5\_prompt.hidden (C member)@\spxentry{krb5\_prompt.hidden}\spxextra{C member}} 19378 19379\begin{fulllineitems} 19380\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt.hidden}}% 19381\pysigstartmultiline 19382\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}]{\sphinxcrossref{\DUrole{n}{krb5\_prompt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{hidden}}}}% 19383\pysigstopmultiline 19384\sphinxAtStartPar 19385Boolean; informative prompt or hidden (e.g. 19386PIN) 19387 19388\end{fulllineitems} 19389 19390\index{krb5\_prompt.reply (C member)@\spxentry{krb5\_prompt.reply}\spxextra{C member}} 19391 19392\begin{fulllineitems} 19393\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt.reply}}% 19394\pysigstartmultiline 19395\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_prompt:c.krb5_prompt}]{\sphinxcrossref{\DUrole{n}{krb5\_prompt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{reply}}}}% 19396\pysigstopmultiline 19397\sphinxAtStartPar 19398Must be allocated before call to prompt routine. 19399 19400\end{fulllineitems} 19401 19402 19403 19404\subsubsection{krb5\_prompt\_type} 19405\label{\detokenize{appdev/refs/types/krb5_prompt_type:krb5-prompt-type}}\label{\detokenize{appdev/refs/types/krb5_prompt_type:krb5-prompt-type-struct}}\label{\detokenize{appdev/refs/types/krb5_prompt_type::doc}}\index{krb5\_prompt\_type (C type)@\spxentry{krb5\_prompt\_type}\spxextra{C type}} 19406 19407\begin{fulllineitems} 19408\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompt_type:c.krb5_prompt_type}}% 19409\pysigstartmultiline 19410\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_prompt\_type}}}}% 19411\pysigstopmultiline 19412\end{fulllineitems} 19413 19414 19415 19416\paragraph{Declaration} 19417\label{\detokenize{appdev/refs/types/krb5_prompt_type:declaration}} 19418\sphinxAtStartPar 19419typedef krb5\_int32 krb5\_prompt\_type 19420 19421 19422\subsubsection{krb5\_prompter\_fct} 19423\label{\detokenize{appdev/refs/types/krb5_prompter_fct:krb5-prompter-fct}}\label{\detokenize{appdev/refs/types/krb5_prompter_fct:krb5-prompter-fct-struct}}\label{\detokenize{appdev/refs/types/krb5_prompter_fct::doc}}\index{krb5\_prompter\_fct (C type)@\spxentry{krb5\_prompter\_fct}\spxextra{C type}} 19424 19425\begin{fulllineitems} 19426\phantomsection\label{\detokenize{appdev/refs/types/krb5_prompter_fct:c.krb5_prompter_fct}}% 19427\pysigstartmultiline 19428\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_prompter\_fct}}}}% 19429\pysigstopmultiline 19430\end{fulllineitems} 19431 19432 19433\sphinxAtStartPar 19434Pointer to a prompter callback function. 19435 19436 19437\paragraph{Declaration} 19438\label{\detokenize{appdev/refs/types/krb5_prompter_fct:declaration}} 19439\sphinxAtStartPar 19440typedef krb5\_error\_code( * krb5\_prompter\_fct) (krb5\_context context, void *data, const char *name, const char *banner, int num\_prompts, krb5\_prompt prompts{[}{]}) 19441 19442 19443\subsubsection{krb5\_pwd\_data} 19444\label{\detokenize{appdev/refs/types/krb5_pwd_data:krb5-pwd-data}}\label{\detokenize{appdev/refs/types/krb5_pwd_data:krb5-pwd-data-struct}}\label{\detokenize{appdev/refs/types/krb5_pwd_data::doc}}\index{krb5\_pwd\_data (C type)@\spxentry{krb5\_pwd\_data}\spxextra{C type}} 19445 19446\begin{fulllineitems} 19447\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data}}% 19448\pysigstartmultiline 19449\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pwd\_data}}}}% 19450\pysigstopmultiline 19451\end{fulllineitems} 19452 19453 19454 19455\paragraph{Declaration} 19456\label{\detokenize{appdev/refs/types/krb5_pwd_data:declaration}} 19457\sphinxAtStartPar 19458typedef struct \_krb5\_pwd\_data krb5\_pwd\_data 19459 19460 19461\paragraph{Members} 19462\label{\detokenize{appdev/refs/types/krb5_pwd_data:members}}\index{krb5\_pwd\_data.magic (C member)@\spxentry{krb5\_pwd\_data.magic}\spxextra{C member}} 19463 19464\begin{fulllineitems} 19465\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data.magic}}% 19466\pysigstartmultiline 19467\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pwd\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 19468\pysigstopmultiline 19469\end{fulllineitems} 19470 19471\index{krb5\_pwd\_data.sequence\_count (C member)@\spxentry{krb5\_pwd\_data.sequence\_count}\spxextra{C member}} 19472 19473\begin{fulllineitems} 19474\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data.sequence_count}}% 19475\pysigstartmultiline 19476\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pwd\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{sequence\_count}}}}% 19477\pysigstopmultiline 19478\end{fulllineitems} 19479 19480\index{krb5\_pwd\_data.element (C member)@\spxentry{krb5\_pwd\_data.element}\spxextra{C member}} 19481 19482\begin{fulllineitems} 19483\phantomsection\label{\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data.element}}% 19484\pysigstartmultiline 19485\pysigline{{\hyperref[\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}]{\sphinxcrossref{\DUrole{n}{passwd\_phrase\_element}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_pwd_data:c.krb5_pwd_data}]{\sphinxcrossref{\DUrole{n}{krb5\_pwd\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{element}}}}% 19486\pysigstopmultiline 19487\end{fulllineitems} 19488 19489 19490 19491\subsubsection{krb5\_responder\_context} 19492\label{\detokenize{appdev/refs/types/krb5_responder_context:krb5-responder-context}}\label{\detokenize{appdev/refs/types/krb5_responder_context:krb5-responder-context-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_context::doc}}\index{krb5\_responder\_context (C type)@\spxentry{krb5\_responder\_context}\spxextra{C type}} 19493 19494\begin{fulllineitems} 19495\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_context:c.krb5_responder_context}}% 19496\pysigstartmultiline 19497\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_context}}}}% 19498\pysigstopmultiline 19499\end{fulllineitems} 19500 19501 19502\sphinxAtStartPar 19503A container for a set of preauthentication questions and answers. 19504 19505\sphinxAtStartPar 19506A responder context is supplied by the krb5 authentication system to a krb5\_responder\_fn callback. It contains a list of questions and can receive answers. Questions contained in a responder context can be listed using krb5\_responder\_list\_questions(), retrieved using krb5\_responder\_get\_challenge(), or answered using krb5\_responder\_set\_answer(). The form of a question’s challenge and answer depend on the question name. 19507 19508 19509\paragraph{Declaration} 19510\label{\detokenize{appdev/refs/types/krb5_responder_context:declaration}} 19511\sphinxAtStartPar 19512typedef struct krb5\_responder\_context\_st* krb5\_responder\_context 19513 19514 19515\subsubsection{krb5\_responder\_fn} 19516\label{\detokenize{appdev/refs/types/krb5_responder_fn:krb5-responder-fn}}\label{\detokenize{appdev/refs/types/krb5_responder_fn:krb5-responder-fn-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_fn::doc}}\index{krb5\_responder\_fn (C type)@\spxentry{krb5\_responder\_fn}\spxextra{C type}} 19517 19518\begin{fulllineitems} 19519\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_fn:c.krb5_responder_fn}}% 19520\pysigstartmultiline 19521\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_fn}}}}% 19522\pysigstopmultiline 19523\end{fulllineitems} 19524 19525 19526\sphinxAtStartPar 19527Responder function for an initial credential exchange. 19528 19529\sphinxAtStartPar 19530If a required question is unanswered, the prompter may be called. 19531 19532 19533\paragraph{Declaration} 19534\label{\detokenize{appdev/refs/types/krb5_responder_fn:declaration}} 19535\sphinxAtStartPar 19536typedef krb5\_error\_code( * krb5\_responder\_fn) (krb5\_context ctx, void *data, krb5\_responder\_context rctx) 19537 19538 19539\subsubsection{krb5\_responder\_otp\_challenge} 19540\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)@\spxentry{krb5\_responder\_otp\_challenge}\spxextra{C type}} 19541 19542\begin{fulllineitems} 19543\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}}% 19544\pysigstartmultiline 19545\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_otp\_challenge}}}}% 19546\pysigstopmultiline 19547\end{fulllineitems} 19548 19549 19550 19551\paragraph{Declaration} 19552\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:declaration}} 19553\sphinxAtStartPar 19554typedef struct \_krb5\_responder\_otp\_challenge krb5\_responder\_otp\_challenge 19555 19556 19557\paragraph{Members} 19558\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:members}}\index{krb5\_responder\_otp\_challenge.service (C member)@\spxentry{krb5\_responder\_otp\_challenge.service}\spxextra{C member}} 19559 19560\begin{fulllineitems} 19561\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge.service}}% 19562\pysigstartmultiline 19563\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_challenge}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{service}}}}% 19564\pysigstopmultiline 19565\end{fulllineitems} 19566 19567\index{krb5\_responder\_otp\_challenge.tokeninfo (C member)@\spxentry{krb5\_responder\_otp\_challenge.tokeninfo}\spxextra{C member}} 19568 19569\begin{fulllineitems} 19570\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge.tokeninfo}}% 19571\pysigstartmultiline 19572\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_challenge:c.krb5_responder_otp_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_challenge}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{tokeninfo}}}}% 19573\pysigstopmultiline 19574\end{fulllineitems} 19575 19576 19577 19578\subsubsection{krb5\_responder\_otp\_tokeninfo} 19579\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)@\spxentry{krb5\_responder\_otp\_tokeninfo}\spxextra{C type}} 19580 19581\begin{fulllineitems} 19582\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}}% 19583\pysigstartmultiline 19584\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}% 19585\pysigstopmultiline 19586\end{fulllineitems} 19587 19588 19589 19590\paragraph{Declaration} 19591\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:declaration}} 19592\sphinxAtStartPar 19593typedef struct \_krb5\_responder\_otp\_tokeninfo krb5\_responder\_otp\_tokeninfo 19594 19595 19596\paragraph{Members} 19597\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:members}}\index{krb5\_responder\_otp\_tokeninfo.flags (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.flags}\spxextra{C member}} 19598 19599\begin{fulllineitems} 19600\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.flags}}% 19601\pysigstartmultiline 19602\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 19603\pysigstopmultiline 19604\end{fulllineitems} 19605 19606\index{krb5\_responder\_otp\_tokeninfo.format (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.format}\spxextra{C member}} 19607 19608\begin{fulllineitems} 19609\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.format}}% 19610\pysigstartmultiline 19611\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{format}}}}% 19612\pysigstopmultiline 19613\end{fulllineitems} 19614 19615\index{krb5\_responder\_otp\_tokeninfo.length (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.length}\spxextra{C member}} 19616 19617\begin{fulllineitems} 19618\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.length}}% 19619\pysigstartmultiline 19620\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 19621\pysigstopmultiline 19622\end{fulllineitems} 19623 19624\index{krb5\_responder\_otp\_tokeninfo.vendor (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.vendor}\spxextra{C member}} 19625 19626\begin{fulllineitems} 19627\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.vendor}}% 19628\pysigstartmultiline 19629\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{vendor}}}}% 19630\pysigstopmultiline 19631\end{fulllineitems} 19632 19633\index{krb5\_responder\_otp\_tokeninfo.challenge (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.challenge}\spxextra{C member}} 19634 19635\begin{fulllineitems} 19636\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.challenge}}% 19637\pysigstartmultiline 19638\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{challenge}}}}% 19639\pysigstopmultiline 19640\end{fulllineitems} 19641 19642\index{krb5\_responder\_otp\_tokeninfo.token\_id (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.token\_id}\spxextra{C member}} 19643 19644\begin{fulllineitems} 19645\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.token_id}}% 19646\pysigstartmultiline 19647\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{token\_id}}}}% 19648\pysigstopmultiline 19649\end{fulllineitems} 19650 19651\index{krb5\_responder\_otp\_tokeninfo.alg\_id (C member)@\spxentry{krb5\_responder\_otp\_tokeninfo.alg\_id}\spxextra{C member}} 19652 19653\begin{fulllineitems} 19654\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo.alg_id}}% 19655\pysigstartmultiline 19656\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_otp_tokeninfo:c.krb5_responder_otp_tokeninfo}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_otp\_tokeninfo}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{alg\_id}}}}% 19657\pysigstopmultiline 19658\end{fulllineitems} 19659 19660 19661 19662\subsubsection{krb5\_responder\_pkinit\_challenge} 19663\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:krb5-responder-pkinit-challenge}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:krb5-responder-pkinit-challenge-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge::doc}}\index{krb5\_responder\_pkinit\_challenge (C type)@\spxentry{krb5\_responder\_pkinit\_challenge}\spxextra{C type}} 19664 19665\begin{fulllineitems} 19666\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}}% 19667\pysigstartmultiline 19668\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_pkinit\_challenge}}}}% 19669\pysigstopmultiline 19670\end{fulllineitems} 19671 19672 19673 19674\paragraph{Declaration} 19675\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:declaration}} 19676\sphinxAtStartPar 19677typedef struct \_krb5\_responder\_pkinit\_challenge krb5\_responder\_pkinit\_challenge 19678 19679 19680\paragraph{Members} 19681\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:members}}\index{krb5\_responder\_pkinit\_challenge.identities (C member)@\spxentry{krb5\_responder\_pkinit\_challenge.identities}\spxextra{C member}} 19682 19683\begin{fulllineitems} 19684\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge.identities}}% 19685\pysigstartmultiline 19686\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_pkinit\_identity}}}}\DUrole{w}{ }\DUrole{p}{*}\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_challenge:c.krb5_responder_pkinit_challenge}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_pkinit\_challenge}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{identities}}}}% 19687\pysigstopmultiline 19688\end{fulllineitems} 19689 19690 19691 19692\subsubsection{krb5\_responder\_pkinit\_identity} 19693\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:krb5-responder-pkinit-identity}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:krb5-responder-pkinit-identity-struct}}\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity::doc}}\index{krb5\_responder\_pkinit\_identity (C type)@\spxentry{krb5\_responder\_pkinit\_identity}\spxextra{C type}} 19694 19695\begin{fulllineitems} 19696\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity}}% 19697\pysigstartmultiline 19698\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_responder\_pkinit\_identity}}}}% 19699\pysigstopmultiline 19700\end{fulllineitems} 19701 19702 19703 19704\paragraph{Declaration} 19705\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:declaration}} 19706\sphinxAtStartPar 19707typedef struct \_krb5\_responder\_pkinit\_identity krb5\_responder\_pkinit\_identity 19708 19709 19710\paragraph{Members} 19711\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:members}}\index{krb5\_responder\_pkinit\_identity.identity (C member)@\spxentry{krb5\_responder\_pkinit\_identity.identity}\spxextra{C member}} 19712 19713\begin{fulllineitems} 19714\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity.identity}}% 19715\pysigstartmultiline 19716\pysigline{\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_pkinit\_identity}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{identity}}}}% 19717\pysigstopmultiline 19718\end{fulllineitems} 19719 19720\index{krb5\_responder\_pkinit\_identity.token\_flags (C member)@\spxentry{krb5\_responder\_pkinit\_identity.token\_flags}\spxextra{C member}} 19721 19722\begin{fulllineitems} 19723\phantomsection\label{\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity.token_flags}}% 19724\pysigstartmultiline 19725\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_responder_pkinit_identity:c.krb5_responder_pkinit_identity}]{\sphinxcrossref{\DUrole{n}{krb5\_responder\_pkinit\_identity}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{token\_flags}}}}% 19726\pysigstopmultiline 19727\end{fulllineitems} 19728 19729 19730 19731\subsubsection{krb5\_response} 19732\label{\detokenize{appdev/refs/types/krb5_response:krb5-response}}\label{\detokenize{appdev/refs/types/krb5_response:krb5-response-struct}}\label{\detokenize{appdev/refs/types/krb5_response::doc}}\index{krb5\_response (C type)@\spxentry{krb5\_response}\spxextra{C type}} 19733 19734\begin{fulllineitems} 19735\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response}}% 19736\pysigstartmultiline 19737\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_response}}}}% 19738\pysigstopmultiline 19739\end{fulllineitems} 19740 19741 19742 19743\paragraph{Declaration} 19744\label{\detokenize{appdev/refs/types/krb5_response:declaration}} 19745\sphinxAtStartPar 19746typedef struct \_krb5\_response krb5\_response 19747 19748 19749\paragraph{Members} 19750\label{\detokenize{appdev/refs/types/krb5_response:members}}\index{krb5\_response.magic (C member)@\spxentry{krb5\_response.magic}\spxextra{C member}} 19751 19752\begin{fulllineitems} 19753\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.magic}}% 19754\pysigstartmultiline 19755\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_response:c.krb5_response}]{\sphinxcrossref{\DUrole{n}{krb5\_response}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 19756\pysigstopmultiline 19757\end{fulllineitems} 19758 19759\index{krb5\_response.message\_type (C member)@\spxentry{krb5\_response.message\_type}\spxextra{C member}} 19760 19761\begin{fulllineitems} 19762\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.message_type}}% 19763\pysigstartmultiline 19764\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_response:c.krb5_response}]{\sphinxcrossref{\DUrole{n}{krb5\_response}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{message\_type}}}}% 19765\pysigstopmultiline 19766\end{fulllineitems} 19767 19768\index{krb5\_response.response (C member)@\spxentry{krb5\_response.response}\spxextra{C member}} 19769 19770\begin{fulllineitems} 19771\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.response}}% 19772\pysigstartmultiline 19773\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_response:c.krb5_response}]{\sphinxcrossref{\DUrole{n}{krb5\_response}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{response}}}}% 19774\pysigstopmultiline 19775\end{fulllineitems} 19776 19777\index{krb5\_response.expected\_nonce (C member)@\spxentry{krb5\_response.expected\_nonce}\spxextra{C member}} 19778 19779\begin{fulllineitems} 19780\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.expected_nonce}}% 19781\pysigstartmultiline 19782\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_response:c.krb5_response}]{\sphinxcrossref{\DUrole{n}{krb5\_response}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{expected\_nonce}}}}% 19783\pysigstopmultiline 19784\end{fulllineitems} 19785 19786\index{krb5\_response.request\_time (C member)@\spxentry{krb5\_response.request\_time}\spxextra{C member}} 19787 19788\begin{fulllineitems} 19789\phantomsection\label{\detokenize{appdev/refs/types/krb5_response:c.krb5_response.request_time}}% 19790\pysigstartmultiline 19791\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_response:c.krb5_response}]{\sphinxcrossref{\DUrole{n}{krb5\_response}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{request\_time}}}}% 19792\pysigstopmultiline 19793\end{fulllineitems} 19794 19795 19796 19797\subsubsection{krb5\_replay\_data} 19798\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)@\spxentry{krb5\_replay\_data}\spxextra{C type}} 19799 19800\begin{fulllineitems} 19801\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}}% 19802\pysigstartmultiline 19803\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_replay\_data}}}}% 19804\pysigstopmultiline 19805\end{fulllineitems} 19806 19807 19808\sphinxAtStartPar 19809Replay data. 19810 19811\sphinxAtStartPar 19812Sequence number and timestamp information output by krb5\_rd\_priv() and krb5\_rd\_safe(). 19813 19814 19815\paragraph{Declaration} 19816\label{\detokenize{appdev/refs/types/krb5_replay_data:declaration}} 19817\sphinxAtStartPar 19818typedef struct krb5\_replay\_data krb5\_replay\_data 19819 19820 19821\paragraph{Members} 19822\label{\detokenize{appdev/refs/types/krb5_replay_data:members}}\index{krb5\_replay\_data.timestamp (C member)@\spxentry{krb5\_replay\_data.timestamp}\spxextra{C member}} 19823 19824\begin{fulllineitems} 19825\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data.timestamp}}% 19826\pysigstartmultiline 19827\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{timestamp}}}}% 19828\pysigstopmultiline 19829\sphinxAtStartPar 19830Timestamp, seconds portion. 19831 19832\end{fulllineitems} 19833 19834\index{krb5\_replay\_data.usec (C member)@\spxentry{krb5\_replay\_data.usec}\spxextra{C member}} 19835 19836\begin{fulllineitems} 19837\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data.usec}}% 19838\pysigstartmultiline 19839\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{usec}}}}% 19840\pysigstopmultiline 19841\sphinxAtStartPar 19842Timestamp, microseconds portion. 19843 19844\end{fulllineitems} 19845 19846\index{krb5\_replay\_data.seq (C member)@\spxentry{krb5\_replay\_data.seq}\spxextra{C member}} 19847 19848\begin{fulllineitems} 19849\phantomsection\label{\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data.seq}}% 19850\pysigstartmultiline 19851\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}]{\sphinxcrossref{\DUrole{n}{krb5\_ui\_4}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_replay_data:c.krb5_replay_data}]{\sphinxcrossref{\DUrole{n}{krb5\_replay\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{seq}}}}% 19852\pysigstopmultiline 19853\sphinxAtStartPar 19854Sequence number. 19855 19856\end{fulllineitems} 19857 19858 19859 19860\subsubsection{krb5\_ticket} 19861\label{\detokenize{appdev/refs/types/krb5_ticket:krb5-ticket}}\label{\detokenize{appdev/refs/types/krb5_ticket:krb5-ticket-struct}}\label{\detokenize{appdev/refs/types/krb5_ticket::doc}}\index{krb5\_ticket (C type)@\spxentry{krb5\_ticket}\spxextra{C type}} 19862 19863\begin{fulllineitems} 19864\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}}% 19865\pysigstartmultiline 19866\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ticket}}}}% 19867\pysigstopmultiline 19868\end{fulllineitems} 19869 19870 19871\sphinxAtStartPar 19872Ticket structure. 19873 19874\sphinxAtStartPar 19875The C representation of the ticket message, with a pointer to the C representation of the encrypted part. 19876 19877 19878\paragraph{Declaration} 19879\label{\detokenize{appdev/refs/types/krb5_ticket:declaration}} 19880\sphinxAtStartPar 19881typedef struct \_krb5\_ticket krb5\_ticket 19882 19883 19884\paragraph{Members} 19885\label{\detokenize{appdev/refs/types/krb5_ticket:members}}\index{krb5\_ticket.magic (C member)@\spxentry{krb5\_ticket.magic}\spxextra{C member}} 19886 19887\begin{fulllineitems} 19888\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.magic}}% 19889\pysigstartmultiline 19890\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 19891\pysigstopmultiline 19892\end{fulllineitems} 19893 19894\index{krb5\_ticket.server (C member)@\spxentry{krb5\_ticket.server}\spxextra{C member}} 19895 19896\begin{fulllineitems} 19897\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.server}}% 19898\pysigstartmultiline 19899\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_principal:c.krb5_principal}]{\sphinxcrossref{\DUrole{n}{krb5\_principal}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{server}}}}% 19900\pysigstopmultiline 19901\sphinxAtStartPar 19902server name/realm 19903 19904\end{fulllineitems} 19905 19906\index{krb5\_ticket.enc\_part (C member)@\spxentry{krb5\_ticket.enc\_part}\spxextra{C member}} 19907 19908\begin{fulllineitems} 19909\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.enc_part}}% 19910\pysigstartmultiline 19911\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_data:c.krb5_enc_data}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part}}}}% 19912\pysigstopmultiline 19913\sphinxAtStartPar 19914encryption type, kvno, encrypted encoding 19915 19916\end{fulllineitems} 19917 19918\index{krb5\_ticket.enc\_part2 (C member)@\spxentry{krb5\_ticket.enc\_part2}\spxextra{C member}} 19919 19920\begin{fulllineitems} 19921\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket.enc_part2}}% 19922\pysigstartmultiline 19923\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_enc_tkt_part:c.krb5_enc_tkt_part}]{\sphinxcrossref{\DUrole{n}{krb5\_enc\_tkt\_part}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{enc\_part2}}}}% 19924\pysigstopmultiline 19925\sphinxAtStartPar 19926ptr to decrypted version, if available 19927 19928\end{fulllineitems} 19929 19930 19931 19932\subsubsection{krb5\_ticket\_times} 19933\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)@\spxentry{krb5\_ticket\_times}\spxextra{C type}} 19934 19935\begin{fulllineitems} 19936\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}}% 19937\pysigstartmultiline 19938\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ticket\_times}}}}% 19939\pysigstopmultiline 19940\end{fulllineitems} 19941 19942 19943\sphinxAtStartPar 19944Ticket start time, end time, and renewal duration. 19945 19946 19947\paragraph{Declaration} 19948\label{\detokenize{appdev/refs/types/krb5_ticket_times:declaration}} 19949\sphinxAtStartPar 19950typedef struct \_krb5\_ticket\_times krb5\_ticket\_times 19951 19952 19953\paragraph{Members} 19954\label{\detokenize{appdev/refs/types/krb5_ticket_times:members}}\index{krb5\_ticket\_times.authtime (C member)@\spxentry{krb5\_ticket\_times.authtime}\spxextra{C member}} 19955 19956\begin{fulllineitems} 19957\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.authtime}}% 19958\pysigstartmultiline 19959\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authtime}}}}% 19960\pysigstopmultiline 19961\sphinxAtStartPar 19962Time at which KDC issued the initial ticket that corresponds to this ticket. 19963 19964\end{fulllineitems} 19965 19966\index{krb5\_ticket\_times.starttime (C member)@\spxentry{krb5\_ticket\_times.starttime}\spxextra{C member}} 19967 19968\begin{fulllineitems} 19969\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.starttime}}% 19970\pysigstartmultiline 19971\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{starttime}}}}% 19972\pysigstopmultiline 19973\sphinxAtStartPar 19974optional in ticket, if not present, use \sphinxstyleemphasis{authtime} 19975 19976\end{fulllineitems} 19977 19978\index{krb5\_ticket\_times.endtime (C member)@\spxentry{krb5\_ticket\_times.endtime}\spxextra{C member}} 19979 19980\begin{fulllineitems} 19981\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.endtime}}% 19982\pysigstartmultiline 19983\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{endtime}}}}% 19984\pysigstopmultiline 19985\sphinxAtStartPar 19986Ticket expiration time. 19987 19988\end{fulllineitems} 19989 19990\index{krb5\_ticket\_times.renew\_till (C member)@\spxentry{krb5\_ticket\_times.renew\_till}\spxextra{C member}} 19991 19992\begin{fulllineitems} 19993\phantomsection\label{\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times.renew_till}}% 19994\pysigstartmultiline 19995\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}]{\sphinxcrossref{\DUrole{n}{krb5\_timestamp}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket_times:c.krb5_ticket_times}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket\_times}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{renew\_till}}}}% 19996\pysigstopmultiline 19997\sphinxAtStartPar 19998Latest time at which renewal of ticket can be valid. 19999 20000\end{fulllineitems} 20001 20002 20003 20004\subsubsection{krb5\_timestamp} 20005\label{\detokenize{appdev/refs/types/krb5_timestamp:krb5-timestamp}}\label{\detokenize{appdev/refs/types/krb5_timestamp:krb5-timestamp-struct}}\label{\detokenize{appdev/refs/types/krb5_timestamp::doc}}\index{krb5\_timestamp (C type)@\spxentry{krb5\_timestamp}\spxextra{C type}} 20006 20007\begin{fulllineitems} 20008\phantomsection\label{\detokenize{appdev/refs/types/krb5_timestamp:c.krb5_timestamp}}% 20009\pysigstartmultiline 20010\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_timestamp}}}}% 20011\pysigstopmultiline 20012\end{fulllineitems} 20013 20014 20015\sphinxAtStartPar 20016Represents a timestamp in seconds since the POSIX epoch. 20017 20018\sphinxAtStartPar 20019This 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\sphinxhyphen{}bit time\_t. 20020 20021 20022\paragraph{Declaration} 20023\label{\detokenize{appdev/refs/types/krb5_timestamp:declaration}} 20024\sphinxAtStartPar 20025typedef krb5\_int32 krb5\_timestamp 20026 20027 20028\subsubsection{krb5\_tkt\_authent} 20029\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)@\spxentry{krb5\_tkt\_authent}\spxextra{C type}} 20030 20031\begin{fulllineitems} 20032\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent}}% 20033\pysigstartmultiline 20034\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_authent}}}}% 20035\pysigstopmultiline 20036\end{fulllineitems} 20037 20038 20039\sphinxAtStartPar 20040Ticket authentication data. 20041 20042 20043\paragraph{Declaration} 20044\label{\detokenize{appdev/refs/types/krb5_tkt_authent:declaration}} 20045\sphinxAtStartPar 20046typedef struct \_krb5\_tkt\_authent krb5\_tkt\_authent 20047 20048 20049\paragraph{Members} 20050\label{\detokenize{appdev/refs/types/krb5_tkt_authent:members}}\index{krb5\_tkt\_authent.magic (C member)@\spxentry{krb5\_tkt\_authent.magic}\spxextra{C member}} 20051 20052\begin{fulllineitems} 20053\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.magic}}% 20054\pysigstartmultiline 20055\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_authent}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 20056\pysigstopmultiline 20057\end{fulllineitems} 20058 20059\index{krb5\_tkt\_authent.ticket (C member)@\spxentry{krb5\_tkt\_authent.ticket}\spxextra{C member}} 20060 20061\begin{fulllineitems} 20062\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.ticket}}% 20063\pysigstartmultiline 20064\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_ticket:c.krb5_ticket}]{\sphinxcrossref{\DUrole{n}{krb5\_ticket}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_authent}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ticket}}}}% 20065\pysigstopmultiline 20066\end{fulllineitems} 20067 20068\index{krb5\_tkt\_authent.authenticator (C member)@\spxentry{krb5\_tkt\_authent.authenticator}\spxextra{C member}} 20069 20070\begin{fulllineitems} 20071\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.authenticator}}% 20072\pysigstartmultiline 20073\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_authenticator:c.krb5_authenticator}]{\sphinxcrossref{\DUrole{n}{krb5\_authenticator}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_authent}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{authenticator}}}}% 20074\pysigstopmultiline 20075\end{fulllineitems} 20076 20077\index{krb5\_tkt\_authent.ap\_options (C member)@\spxentry{krb5\_tkt\_authent.ap\_options}\spxextra{C member}} 20078 20079\begin{fulllineitems} 20080\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent.ap_options}}% 20081\pysigstartmultiline 20082\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_tkt_authent:c.krb5_tkt_authent}]{\sphinxcrossref{\DUrole{n}{krb5\_tkt\_authent}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ap\_options}}}}% 20083\pysigstopmultiline 20084\end{fulllineitems} 20085 20086 20087 20088\subsubsection{krb5\_trace\_callback} 20089\label{\detokenize{appdev/refs/types/krb5_trace_callback:krb5-trace-callback}}\label{\detokenize{appdev/refs/types/krb5_trace_callback:krb5-trace-callback-struct}}\label{\detokenize{appdev/refs/types/krb5_trace_callback::doc}}\index{krb5\_trace\_callback (C type)@\spxentry{krb5\_trace\_callback}\spxextra{C type}} 20090 20091\begin{fulllineitems} 20092\phantomsection\label{\detokenize{appdev/refs/types/krb5_trace_callback:c.krb5_trace_callback}}% 20093\pysigstartmultiline 20094\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_trace\_callback}}}}% 20095\pysigstopmultiline 20096\end{fulllineitems} 20097 20098 20099 20100\paragraph{Declaration} 20101\label{\detokenize{appdev/refs/types/krb5_trace_callback:declaration}} 20102\sphinxAtStartPar 20103typedef void( * krb5\_trace\_callback) (krb5\_context context, const krb5\_trace\_info *info, void *cb\_data) 20104 20105 20106\subsubsection{krb5\_trace\_info} 20107\label{\detokenize{appdev/refs/types/krb5_trace_info:krb5-trace-info}}\label{\detokenize{appdev/refs/types/krb5_trace_info:krb5-trace-info-struct}}\label{\detokenize{appdev/refs/types/krb5_trace_info::doc}}\index{krb5\_trace\_info (C type)@\spxentry{krb5\_trace\_info}\spxextra{C type}} 20108 20109\begin{fulllineitems} 20110\phantomsection\label{\detokenize{appdev/refs/types/krb5_trace_info:c.krb5_trace_info}}% 20111\pysigstartmultiline 20112\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_trace\_info}}}}% 20113\pysigstopmultiline 20114\end{fulllineitems} 20115 20116 20117\sphinxAtStartPar 20118A wrapper for passing information to a \sphinxstyleemphasis{krb5\_trace\_callback} . 20119 20120\sphinxAtStartPar 20121Currently, 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. 20122 20123 20124\paragraph{Declaration} 20125\label{\detokenize{appdev/refs/types/krb5_trace_info:declaration}} 20126\sphinxAtStartPar 20127typedef struct \_krb5\_trace\_info krb5\_trace\_info 20128 20129 20130\paragraph{Members} 20131\label{\detokenize{appdev/refs/types/krb5_trace_info:members}}\index{krb5\_trace\_info.message (C member)@\spxentry{krb5\_trace\_info.message}\spxextra{C member}} 20132 20133\begin{fulllineitems} 20134\phantomsection\label{\detokenize{appdev/refs/types/krb5_trace_info:c.krb5_trace_info.message}}% 20135\pysigstartmultiline 20136\pysigline{\DUrole{k}{const}\DUrole{w}{ }\DUrole{kt}{char}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_trace_info:c.krb5_trace_info}]{\sphinxcrossref{\DUrole{n}{krb5\_trace\_info}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{message}}}}% 20137\pysigstopmultiline 20138\end{fulllineitems} 20139 20140 20141 20142\subsubsection{krb5\_transited} 20143\label{\detokenize{appdev/refs/types/krb5_transited:krb5-transited}}\label{\detokenize{appdev/refs/types/krb5_transited:krb5-transited-struct}}\label{\detokenize{appdev/refs/types/krb5_transited::doc}}\index{krb5\_transited (C type)@\spxentry{krb5\_transited}\spxextra{C type}} 20144 20145\begin{fulllineitems} 20146\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}}% 20147\pysigstartmultiline 20148\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_transited}}}}% 20149\pysigstopmultiline 20150\end{fulllineitems} 20151 20152 20153\sphinxAtStartPar 20154Structure for transited encoding. 20155 20156 20157\paragraph{Declaration} 20158\label{\detokenize{appdev/refs/types/krb5_transited:declaration}} 20159\sphinxAtStartPar 20160typedef struct \_krb5\_transited krb5\_transited 20161 20162 20163\paragraph{Members} 20164\label{\detokenize{appdev/refs/types/krb5_transited:members}}\index{krb5\_transited.magic (C member)@\spxentry{krb5\_transited.magic}\spxextra{C member}} 20165 20166\begin{fulllineitems} 20167\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited.magic}}% 20168\pysigstartmultiline 20169\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}]{\sphinxcrossref{\DUrole{n}{krb5\_transited}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 20170\pysigstopmultiline 20171\end{fulllineitems} 20172 20173\index{krb5\_transited.tr\_type (C member)@\spxentry{krb5\_transited.tr\_type}\spxextra{C member}} 20174 20175\begin{fulllineitems} 20176\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited.tr_type}}% 20177\pysigstartmultiline 20178\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}]{\sphinxcrossref{\DUrole{n}{krb5\_transited}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{tr\_type}}}}% 20179\pysigstopmultiline 20180\sphinxAtStartPar 20181Transited encoding type. 20182 20183\end{fulllineitems} 20184 20185\index{krb5\_transited.tr\_contents (C member)@\spxentry{krb5\_transited.tr\_contents}\spxextra{C member}} 20186 20187\begin{fulllineitems} 20188\phantomsection\label{\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited.tr_contents}}% 20189\pysigstartmultiline 20190\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_transited:c.krb5_transited}]{\sphinxcrossref{\DUrole{n}{krb5\_transited}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{tr\_contents}}}}% 20191\pysigstopmultiline 20192\sphinxAtStartPar 20193Contents. 20194 20195\end{fulllineitems} 20196 20197 20198 20199\subsubsection{krb5\_typed\_data} 20200\label{\detokenize{appdev/refs/types/krb5_typed_data:krb5-typed-data}}\label{\detokenize{appdev/refs/types/krb5_typed_data:krb5-typed-data-struct}}\label{\detokenize{appdev/refs/types/krb5_typed_data::doc}}\index{krb5\_typed\_data (C type)@\spxentry{krb5\_typed\_data}\spxextra{C type}} 20201 20202\begin{fulllineitems} 20203\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data}}% 20204\pysigstartmultiline 20205\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_typed\_data}}}}% 20206\pysigstopmultiline 20207\end{fulllineitems} 20208 20209 20210 20211\paragraph{Declaration} 20212\label{\detokenize{appdev/refs/types/krb5_typed_data:declaration}} 20213\sphinxAtStartPar 20214typedef struct \_krb5\_typed\_data krb5\_typed\_data 20215 20216 20217\paragraph{Members} 20218\label{\detokenize{appdev/refs/types/krb5_typed_data:members}}\index{krb5\_typed\_data.magic (C member)@\spxentry{krb5\_typed\_data.magic}\spxextra{C member}} 20219 20220\begin{fulllineitems} 20221\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.magic}}% 20222\pysigstartmultiline 20223\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data}]{\sphinxcrossref{\DUrole{n}{krb5\_typed\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 20224\pysigstopmultiline 20225\end{fulllineitems} 20226 20227\index{krb5\_typed\_data.type (C member)@\spxentry{krb5\_typed\_data.type}\spxextra{C member}} 20228 20229\begin{fulllineitems} 20230\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.type}}% 20231\pysigstartmultiline 20232\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_int32:c.krb5_int32}]{\sphinxcrossref{\DUrole{n}{krb5\_int32}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data}]{\sphinxcrossref{\DUrole{n}{krb5\_typed\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{type}}}}% 20233\pysigstopmultiline 20234\end{fulllineitems} 20235 20236\index{krb5\_typed\_data.length (C member)@\spxentry{krb5\_typed\_data.length}\spxextra{C member}} 20237 20238\begin{fulllineitems} 20239\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.length}}% 20240\pysigstartmultiline 20241\pysigline{\DUrole{kt}{unsigned}\DUrole{w}{ }\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data}]{\sphinxcrossref{\DUrole{n}{krb5\_typed\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{length}}}}% 20242\pysigstopmultiline 20243\end{fulllineitems} 20244 20245\index{krb5\_typed\_data.data (C member)@\spxentry{krb5\_typed\_data.data}\spxextra{C member}} 20246 20247\begin{fulllineitems} 20248\phantomsection\label{\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data.data}}% 20249\pysigstartmultiline 20250\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_octet:c.krb5_octet}]{\sphinxcrossref{\DUrole{n}{krb5\_octet}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_typed_data:c.krb5_typed_data}]{\sphinxcrossref{\DUrole{n}{krb5\_typed\_data}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{data}}}}% 20251\pysigstopmultiline 20252\end{fulllineitems} 20253 20254 20255 20256\subsubsection{krb5\_ui\_2} 20257\label{\detokenize{appdev/refs/types/krb5_ui_2:krb5-ui-2}}\label{\detokenize{appdev/refs/types/krb5_ui_2:krb5-ui-2-struct}}\label{\detokenize{appdev/refs/types/krb5_ui_2::doc}}\index{krb5\_ui\_2 (C type)@\spxentry{krb5\_ui\_2}\spxextra{C type}} 20258 20259\begin{fulllineitems} 20260\phantomsection\label{\detokenize{appdev/refs/types/krb5_ui_2:c.krb5_ui_2}}% 20261\pysigstartmultiline 20262\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ui\_2}}}}% 20263\pysigstopmultiline 20264\end{fulllineitems} 20265 20266 20267 20268\paragraph{Declaration} 20269\label{\detokenize{appdev/refs/types/krb5_ui_2:declaration}} 20270\sphinxAtStartPar 20271typedef uint16\_t krb5\_ui\_2 20272 20273 20274\subsubsection{krb5\_ui\_4} 20275\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)@\spxentry{krb5\_ui\_4}\spxextra{C type}} 20276 20277\begin{fulllineitems} 20278\phantomsection\label{\detokenize{appdev/refs/types/krb5_ui_4:c.krb5_ui_4}}% 20279\pysigstartmultiline 20280\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ui\_4}}}}% 20281\pysigstopmultiline 20282\end{fulllineitems} 20283 20284 20285 20286\paragraph{Declaration} 20287\label{\detokenize{appdev/refs/types/krb5_ui_4:declaration}} 20288\sphinxAtStartPar 20289typedef uint32\_t krb5\_ui\_4 20290 20291 20292\subsubsection{krb5\_verify\_init\_creds\_opt} 20293\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:krb5-verify-init-creds-opt}}\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}}\index{krb5\_verify\_init\_creds\_opt (C type)@\spxentry{krb5\_verify\_init\_creds\_opt}\spxextra{C type}} 20294 20295\begin{fulllineitems} 20296\phantomsection\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}}% 20297\pysigstartmultiline 20298\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_verify\_init\_creds\_opt}}}}% 20299\pysigstopmultiline 20300\end{fulllineitems} 20301 20302 20303 20304\paragraph{Declaration} 20305\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:declaration}} 20306\sphinxAtStartPar 20307typedef struct \_krb5\_verify\_init\_creds\_opt krb5\_verify\_init\_creds\_opt 20308 20309 20310\paragraph{Members} 20311\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:members}}\index{krb5\_verify\_init\_creds\_opt.flags (C member)@\spxentry{krb5\_verify\_init\_creds\_opt.flags}\spxextra{C member}} 20312 20313\begin{fulllineitems} 20314\phantomsection\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt.flags}}% 20315\pysigstartmultiline 20316\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_flags:c.krb5_flags}]{\sphinxcrossref{\DUrole{n}{krb5\_flags}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_verify\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{flags}}}}% 20317\pysigstopmultiline 20318\end{fulllineitems} 20319 20320\index{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail (C member)@\spxentry{krb5\_verify\_init\_creds\_opt.ap\_req\_nofail}\spxextra{C member}} 20321 20322\begin{fulllineitems} 20323\phantomsection\label{\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt.ap_req_nofail}}% 20324\pysigstartmultiline 20325\pysigline{\DUrole{kt}{int}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/krb5_verify_init_creds_opt:c.krb5_verify_init_creds_opt}]{\sphinxcrossref{\DUrole{n}{krb5\_verify\_init\_creds\_opt}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{ap\_req\_nofail}}}}% 20326\pysigstopmultiline 20327\sphinxAtStartPar 20328boolean 20329 20330\end{fulllineitems} 20331 20332 20333 20334\subsubsection{passwd\_phrase\_element} 20335\label{\detokenize{appdev/refs/types/passwd_phrase_element:passwd-phrase-element}}\label{\detokenize{appdev/refs/types/passwd_phrase_element:passwd-phrase-element-struct}}\label{\detokenize{appdev/refs/types/passwd_phrase_element::doc}}\index{passwd\_phrase\_element (C type)@\spxentry{passwd\_phrase\_element}\spxextra{C type}} 20336 20337\begin{fulllineitems} 20338\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}}% 20339\pysigstartmultiline 20340\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{passwd\_phrase\_element}}}}% 20341\pysigstopmultiline 20342\end{fulllineitems} 20343 20344 20345 20346\paragraph{Declaration} 20347\label{\detokenize{appdev/refs/types/passwd_phrase_element:declaration}} 20348\sphinxAtStartPar 20349typedef struct \_passwd\_phrase\_element passwd\_phrase\_element 20350 20351 20352\paragraph{Members} 20353\label{\detokenize{appdev/refs/types/passwd_phrase_element:members}}\index{passwd\_phrase\_element.magic (C member)@\spxentry{passwd\_phrase\_element.magic}\spxextra{C member}} 20354 20355\begin{fulllineitems} 20356\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element.magic}}% 20357\pysigstartmultiline 20358\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_magic:c.krb5_magic}]{\sphinxcrossref{\DUrole{n}{krb5\_magic}}}}\DUrole{w}{ }\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}]{\sphinxcrossref{\DUrole{n}{passwd\_phrase\_element}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{magic}}}}% 20359\pysigstopmultiline 20360\end{fulllineitems} 20361 20362\index{passwd\_phrase\_element.passwd (C member)@\spxentry{passwd\_phrase\_element.passwd}\spxextra{C member}} 20363 20364\begin{fulllineitems} 20365\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element.passwd}}% 20366\pysigstartmultiline 20367\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}]{\sphinxcrossref{\DUrole{n}{passwd\_phrase\_element}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{passwd}}}}% 20368\pysigstopmultiline 20369\end{fulllineitems} 20370 20371\index{passwd\_phrase\_element.phrase (C member)@\spxentry{passwd\_phrase\_element.phrase}\spxextra{C member}} 20372 20373\begin{fulllineitems} 20374\phantomsection\label{\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element.phrase}}% 20375\pysigstartmultiline 20376\pysigline{{\hyperref[\detokenize{appdev/refs/types/krb5_data:c.krb5_data}]{\sphinxcrossref{\DUrole{n}{krb5\_data}}}}\DUrole{w}{ }\DUrole{p}{*}\sphinxcode{\sphinxupquote{{\hyperref[\detokenize{appdev/refs/types/passwd_phrase_element:c.passwd_phrase_element}]{\sphinxcrossref{\DUrole{n}{passwd\_phrase\_element}}}}\DUrole{p}{.}}}\sphinxbfcode{\sphinxupquote{\DUrole{n}{phrase}}}}% 20377\pysigstopmultiline 20378\end{fulllineitems} 20379 20380 20381 20382\subsection{Internal} 20383\label{\detokenize{appdev/refs/types/index:internal}} 20384 20385\subsubsection{krb5\_auth\_context} 20386\label{\detokenize{appdev/refs/types/krb5_auth_context:krb5-auth-context}}\label{\detokenize{appdev/refs/types/krb5_auth_context:krb5-auth-context-struct}}\label{\detokenize{appdev/refs/types/krb5_auth_context::doc}}\index{krb5\_auth\_context (C type)@\spxentry{krb5\_auth\_context}\spxextra{C type}} 20387 20388\begin{fulllineitems} 20389\phantomsection\label{\detokenize{appdev/refs/types/krb5_auth_context:c.krb5_auth_context}}% 20390\pysigstartmultiline 20391\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_auth\_context}}}}% 20392\pysigstopmultiline 20393\end{fulllineitems} 20394 20395 20396 20397\paragraph{Declaration} 20398\label{\detokenize{appdev/refs/types/krb5_auth_context:declaration}} 20399\sphinxAtStartPar 20400typedef struct \_krb5\_auth\_context* krb5\_auth\_context 20401 20402 20403\subsubsection{krb5\_cksumtype} 20404\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)@\spxentry{krb5\_cksumtype}\spxextra{C type}} 20405 20406\begin{fulllineitems} 20407\phantomsection\label{\detokenize{appdev/refs/types/krb5_cksumtype:c.krb5_cksumtype}}% 20408\pysigstartmultiline 20409\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cksumtype}}}}% 20410\pysigstopmultiline 20411\end{fulllineitems} 20412 20413 20414 20415\paragraph{Declaration} 20416\label{\detokenize{appdev/refs/types/krb5_cksumtype:declaration}} 20417\sphinxAtStartPar 20418typedef krb5\_int32 krb5\_cksumtype 20419 20420 20421\subsubsection{krb5\_context} 20422\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)@\spxentry{krb5\_context}\spxextra{C type}} 20423 20424\begin{fulllineitems} 20425\phantomsection\label{\detokenize{appdev/refs/types/krb5_context:c.krb5_context}}% 20426\pysigstartmultiline 20427\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_context}}}}% 20428\pysigstopmultiline 20429\end{fulllineitems} 20430 20431 20432 20433\paragraph{Declaration} 20434\label{\detokenize{appdev/refs/types/krb5_context:declaration}} 20435\sphinxAtStartPar 20436typedef struct \_krb5\_context* krb5\_context 20437 20438 20439\subsubsection{krb5\_cc\_cursor} 20440\label{\detokenize{appdev/refs/types/krb5_cc_cursor:krb5-cc-cursor}}\label{\detokenize{appdev/refs/types/krb5_cc_cursor:krb5-cc-cursor-struct}}\label{\detokenize{appdev/refs/types/krb5_cc_cursor::doc}}\index{krb5\_cc\_cursor (C type)@\spxentry{krb5\_cc\_cursor}\spxextra{C type}} 20441 20442\begin{fulllineitems} 20443\phantomsection\label{\detokenize{appdev/refs/types/krb5_cc_cursor:c.krb5_cc_cursor}}% 20444\pysigstartmultiline 20445\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cc\_cursor}}}}% 20446\pysigstopmultiline 20447\end{fulllineitems} 20448 20449 20450\sphinxAtStartPar 20451Cursor for sequential lookup. 20452 20453 20454\paragraph{Declaration} 20455\label{\detokenize{appdev/refs/types/krb5_cc_cursor:declaration}} 20456\sphinxAtStartPar 20457typedef krb5\_pointer krb5\_cc\_cursor 20458 20459 20460\subsubsection{krb5\_ccache} 20461\label{\detokenize{appdev/refs/types/krb5_ccache:krb5-ccache}}\label{\detokenize{appdev/refs/types/krb5_ccache:krb5-ccache-struct}}\label{\detokenize{appdev/refs/types/krb5_ccache::doc}}\index{krb5\_ccache (C type)@\spxentry{krb5\_ccache}\spxextra{C type}} 20462 20463\begin{fulllineitems} 20464\phantomsection\label{\detokenize{appdev/refs/types/krb5_ccache:c.krb5_ccache}}% 20465\pysigstartmultiline 20466\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_ccache}}}}% 20467\pysigstopmultiline 20468\end{fulllineitems} 20469 20470 20471 20472\paragraph{Declaration} 20473\label{\detokenize{appdev/refs/types/krb5_ccache:declaration}} 20474\sphinxAtStartPar 20475typedef struct \_krb5\_ccache* krb5\_ccache 20476 20477 20478\subsubsection{krb5\_cccol\_cursor} 20479\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:krb5-cccol-cursor}}\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:krb5-cccol-cursor-struct}}\label{\detokenize{appdev/refs/types/krb5_cccol_cursor::doc}}\index{krb5\_cccol\_cursor (C type)@\spxentry{krb5\_cccol\_cursor}\spxextra{C type}} 20480 20481\begin{fulllineitems} 20482\phantomsection\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:c.krb5_cccol_cursor}}% 20483\pysigstartmultiline 20484\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_cccol\_cursor}}}}% 20485\pysigstopmultiline 20486\end{fulllineitems} 20487 20488 20489\sphinxAtStartPar 20490Cursor for iterating over all ccaches. 20491 20492 20493\paragraph{Declaration} 20494\label{\detokenize{appdev/refs/types/krb5_cccol_cursor:declaration}} 20495\sphinxAtStartPar 20496typedef struct \_krb5\_cccol\_cursor* krb5\_cccol\_cursor 20497 20498 20499\subsubsection{krb5\_init\_creds\_context} 20500\label{\detokenize{appdev/refs/types/krb5_init_creds_context:krb5-init-creds-context}}\label{\detokenize{appdev/refs/types/krb5_init_creds_context:krb5-init-creds-context-struct}}\label{\detokenize{appdev/refs/types/krb5_init_creds_context::doc}}\index{krb5\_init\_creds\_context (C type)@\spxentry{krb5\_init\_creds\_context}\spxextra{C type}} 20501 20502\begin{fulllineitems} 20503\phantomsection\label{\detokenize{appdev/refs/types/krb5_init_creds_context:c.krb5_init_creds_context}}% 20504\pysigstartmultiline 20505\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_init\_creds\_context}}}}% 20506\pysigstopmultiline 20507\end{fulllineitems} 20508 20509 20510 20511\paragraph{Declaration} 20512\label{\detokenize{appdev/refs/types/krb5_init_creds_context:declaration}} 20513\sphinxAtStartPar 20514typedef struct \_krb5\_init\_creds\_context* krb5\_init\_creds\_context 20515 20516 20517\subsubsection{krb5\_key} 20518\label{\detokenize{appdev/refs/types/krb5_key:krb5-key}}\label{\detokenize{appdev/refs/types/krb5_key:krb5-key-struct}}\label{\detokenize{appdev/refs/types/krb5_key::doc}}\index{krb5\_key (C type)@\spxentry{krb5\_key}\spxextra{C type}} 20519 20520\begin{fulllineitems} 20521\phantomsection\label{\detokenize{appdev/refs/types/krb5_key:c.krb5_key}}% 20522\pysigstartmultiline 20523\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_key}}}}% 20524\pysigstopmultiline 20525\end{fulllineitems} 20526 20527 20528\sphinxAtStartPar 20529Opaque identifier for a key. 20530 20531\sphinxAtStartPar 20532Use 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\sphinxhyphen{}protected. 20533 20534 20535\paragraph{Declaration} 20536\label{\detokenize{appdev/refs/types/krb5_key:declaration}} 20537\sphinxAtStartPar 20538typedef struct krb5\_key\_st* krb5\_key 20539 20540 20541\subsubsection{krb5\_keytab} 20542\label{\detokenize{appdev/refs/types/krb5_keytab:krb5-keytab}}\label{\detokenize{appdev/refs/types/krb5_keytab:krb5-keytab-struct}}\label{\detokenize{appdev/refs/types/krb5_keytab::doc}}\index{krb5\_keytab (C type)@\spxentry{krb5\_keytab}\spxextra{C type}} 20543 20544\begin{fulllineitems} 20545\phantomsection\label{\detokenize{appdev/refs/types/krb5_keytab:c.krb5_keytab}}% 20546\pysigstartmultiline 20547\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_keytab}}}}% 20548\pysigstopmultiline 20549\end{fulllineitems} 20550 20551 20552 20553\paragraph{Declaration} 20554\label{\detokenize{appdev/refs/types/krb5_keytab:declaration}} 20555\sphinxAtStartPar 20556typedef struct \_krb5\_kt* krb5\_keytab 20557 20558 20559\subsubsection{krb5\_pac} 20560\label{\detokenize{appdev/refs/types/krb5_pac:krb5-pac}}\label{\detokenize{appdev/refs/types/krb5_pac:krb5-pac-struct}}\label{\detokenize{appdev/refs/types/krb5_pac::doc}}\index{krb5\_pac (C type)@\spxentry{krb5\_pac}\spxextra{C type}} 20561 20562\begin{fulllineitems} 20563\phantomsection\label{\detokenize{appdev/refs/types/krb5_pac:c.krb5_pac}}% 20564\pysigstartmultiline 20565\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_pac}}}}% 20566\pysigstopmultiline 20567\end{fulllineitems} 20568 20569 20570\sphinxAtStartPar 20571PAC data structure to convey authorization information. 20572 20573 20574\paragraph{Declaration} 20575\label{\detokenize{appdev/refs/types/krb5_pac:declaration}} 20576\sphinxAtStartPar 20577typedef struct krb5\_pac\_data* krb5\_pac 20578 20579 20580\subsubsection{krb5\_rcache} 20581\label{\detokenize{appdev/refs/types/krb5_rcache:krb5-rcache}}\label{\detokenize{appdev/refs/types/krb5_rcache:krb5-rcache-struct}}\label{\detokenize{appdev/refs/types/krb5_rcache::doc}}\index{krb5\_rcache (C type)@\spxentry{krb5\_rcache}\spxextra{C type}} 20582 20583\begin{fulllineitems} 20584\phantomsection\label{\detokenize{appdev/refs/types/krb5_rcache:c.krb5_rcache}}% 20585\pysigstartmultiline 20586\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_rcache}}}}% 20587\pysigstopmultiline 20588\end{fulllineitems} 20589 20590 20591 20592\paragraph{Declaration} 20593\label{\detokenize{appdev/refs/types/krb5_rcache:declaration}} 20594\sphinxAtStartPar 20595typedef struct krb5\_rc\_st* krb5\_rcache 20596 20597 20598\subsubsection{krb5\_tkt\_creds\_context} 20599\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}}\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context::doc}}\index{krb5\_tkt\_creds\_context (C type)@\spxentry{krb5\_tkt\_creds\_context}\spxextra{C type}} 20600 20601\begin{fulllineitems} 20602\phantomsection\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context:c.krb5_tkt_creds_context}}% 20603\pysigstartmultiline 20604\pysigline{\DUrole{k}{type}\DUrole{w}{ }\sphinxbfcode{\sphinxupquote{\DUrole{n}{krb5\_tkt\_creds\_context}}}}% 20605\pysigstopmultiline 20606\end{fulllineitems} 20607 20608 20609 20610\paragraph{Declaration} 20611\label{\detokenize{appdev/refs/types/krb5_tkt_creds_context:declaration}} 20612\sphinxAtStartPar 20613typedef struct \_krb5\_tkt\_creds\_context* krb5\_tkt\_creds\_context 20614 20615 20616\section{krb5 simple macros} 20617\label{\detokenize{appdev/refs/macros/index:krb5-simple-macros}}\label{\detokenize{appdev/refs/macros/index::doc}} 20618 20619\subsection{Public} 20620\label{\detokenize{appdev/refs/macros/index:public}} 20621 20622\subsubsection{ADDRTYPE\_ADDRPORT} 20623\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT:addrtype-addrport}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT:addrtype-addrport-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT::doc}}\index{ADDRTYPE\_ADDRPORT (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_ADDRPORT}\spxextra{built\sphinxhyphen{}in variable}} 20624 20625\begin{fulllineitems} 20626\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_ADDRPORT:ADDRTYPE_ADDRPORT}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_ADDRPORT}}} 20627\end{fulllineitems} 20628 20629 20630 20631\begin{savenotes}\sphinxattablestart 20632\centering 20633\begin{tabulary}{\linewidth}[t]{|T|T|} 20634\hline 20635 20636\sphinxAtStartPar 20637\sphinxcode{\sphinxupquote{ADDRTYPE\_ADDRPORT}} 20638& 20639\sphinxAtStartPar 20640\sphinxcode{\sphinxupquote{0x0100}} 20641\\ 20642\hline 20643\end{tabulary} 20644\par 20645\sphinxattableend\end{savenotes} 20646 20647 20648\subsubsection{ADDRTYPE\_CHAOS} 20649\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\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_CHAOS}\spxextra{built\sphinxhyphen{}in variable}} 20650 20651\begin{fulllineitems} 20652\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_CHAOS:ADDRTYPE_CHAOS}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_CHAOS}}} 20653\end{fulllineitems} 20654 20655 20656 20657\begin{savenotes}\sphinxattablestart 20658\centering 20659\begin{tabulary}{\linewidth}[t]{|T|T|} 20660\hline 20661 20662\sphinxAtStartPar 20663\sphinxcode{\sphinxupquote{ADDRTYPE\_CHAOS}} 20664& 20665\sphinxAtStartPar 20666\sphinxcode{\sphinxupquote{0x0005}} 20667\\ 20668\hline 20669\end{tabulary} 20670\par 20671\sphinxattableend\end{savenotes} 20672 20673 20674\subsubsection{ADDRTYPE\_DDP} 20675\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP:addrtype-ddp}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP:addrtype-ddp-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP::doc}}\index{ADDRTYPE\_DDP (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_DDP}\spxextra{built\sphinxhyphen{}in variable}} 20676 20677\begin{fulllineitems} 20678\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_DDP:ADDRTYPE_DDP}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_DDP}}} 20679\end{fulllineitems} 20680 20681 20682 20683\begin{savenotes}\sphinxattablestart 20684\centering 20685\begin{tabulary}{\linewidth}[t]{|T|T|} 20686\hline 20687 20688\sphinxAtStartPar 20689\sphinxcode{\sphinxupquote{ADDRTYPE\_DDP}} 20690& 20691\sphinxAtStartPar 20692\sphinxcode{\sphinxupquote{0x0010}} 20693\\ 20694\hline 20695\end{tabulary} 20696\par 20697\sphinxattableend\end{savenotes} 20698 20699 20700\subsubsection{ADDRTYPE\_INET} 20701\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\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_INET}\spxextra{built\sphinxhyphen{}in variable}} 20702 20703\begin{fulllineitems} 20704\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET:ADDRTYPE_INET}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_INET}}} 20705\end{fulllineitems} 20706 20707 20708 20709\begin{savenotes}\sphinxattablestart 20710\centering 20711\begin{tabulary}{\linewidth}[t]{|T|T|} 20712\hline 20713 20714\sphinxAtStartPar 20715\sphinxcode{\sphinxupquote{ADDRTYPE\_INET}} 20716& 20717\sphinxAtStartPar 20718\sphinxcode{\sphinxupquote{0x0002}} 20719\\ 20720\hline 20721\end{tabulary} 20722\par 20723\sphinxattableend\end{savenotes} 20724 20725 20726\subsubsection{ADDRTYPE\_INET6} 20727\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6:addrtype-inet6}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6:addrtype-inet6-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6::doc}}\index{ADDRTYPE\_INET6 (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_INET6}\spxextra{built\sphinxhyphen{}in variable}} 20728 20729\begin{fulllineitems} 20730\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_INET6:ADDRTYPE_INET6}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_INET6}}} 20731\end{fulllineitems} 20732 20733 20734 20735\begin{savenotes}\sphinxattablestart 20736\centering 20737\begin{tabulary}{\linewidth}[t]{|T|T|} 20738\hline 20739 20740\sphinxAtStartPar 20741\sphinxcode{\sphinxupquote{ADDRTYPE\_INET6}} 20742& 20743\sphinxAtStartPar 20744\sphinxcode{\sphinxupquote{0x0018}} 20745\\ 20746\hline 20747\end{tabulary} 20748\par 20749\sphinxattableend\end{savenotes} 20750 20751 20752\subsubsection{ADDRTYPE\_IPPORT} 20753\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT:addrtype-ipport}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT:addrtype-ipport-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT::doc}}\index{ADDRTYPE\_IPPORT (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_IPPORT}\spxextra{built\sphinxhyphen{}in variable}} 20754 20755\begin{fulllineitems} 20756\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_IPPORT:ADDRTYPE_IPPORT}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_IPPORT}}} 20757\end{fulllineitems} 20758 20759 20760 20761\begin{savenotes}\sphinxattablestart 20762\centering 20763\begin{tabulary}{\linewidth}[t]{|T|T|} 20764\hline 20765 20766\sphinxAtStartPar 20767\sphinxcode{\sphinxupquote{ADDRTYPE\_IPPORT}} 20768& 20769\sphinxAtStartPar 20770\sphinxcode{\sphinxupquote{0x0101}} 20771\\ 20772\hline 20773\end{tabulary} 20774\par 20775\sphinxattableend\end{savenotes} 20776 20777 20778\subsubsection{ADDRTYPE\_ISO} 20779\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO:addrtype-iso}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO:addrtype-iso-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO::doc}}\index{ADDRTYPE\_ISO (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_ISO}\spxextra{built\sphinxhyphen{}in variable}} 20780 20781\begin{fulllineitems} 20782\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_ISO:ADDRTYPE_ISO}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_ISO}}} 20783\end{fulllineitems} 20784 20785 20786 20787\begin{savenotes}\sphinxattablestart 20788\centering 20789\begin{tabulary}{\linewidth}[t]{|T|T|} 20790\hline 20791 20792\sphinxAtStartPar 20793\sphinxcode{\sphinxupquote{ADDRTYPE\_ISO}} 20794& 20795\sphinxAtStartPar 20796\sphinxcode{\sphinxupquote{0x0007}} 20797\\ 20798\hline 20799\end{tabulary} 20800\par 20801\sphinxattableend\end{savenotes} 20802 20803 20804\subsubsection{ADDRTYPE\_IS\_LOCAL} 20805\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL:addrtype-is-local}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL:addrtype-is-local-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL::doc}}\index{ADDRTYPE\_IS\_LOCAL (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_IS\_LOCAL}\spxextra{built\sphinxhyphen{}in variable}} 20806 20807\begin{fulllineitems} 20808\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_IS_LOCAL:ADDRTYPE_IS_LOCAL}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_IS\_LOCAL}}} 20809\end{fulllineitems} 20810 20811 20812 20813\begin{savenotes}\sphinxattablestart 20814\centering 20815\begin{tabulary}{\linewidth}[t]{|T|T|} 20816\hline 20817 20818\sphinxAtStartPar 20819\sphinxcode{\sphinxupquote{ADDRTYPE\_IS\_LOCAL (addrtype)}} 20820& 20821\sphinxAtStartPar 20822\sphinxcode{\sphinxupquote{(addrtype \& 0x8000)}} 20823\\ 20824\hline 20825\end{tabulary} 20826\par 20827\sphinxattableend\end{savenotes} 20828 20829 20830\subsubsection{ADDRTYPE\_NETBIOS} 20831\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS:addrtype-netbios}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS:addrtype-netbios-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS::doc}}\index{ADDRTYPE\_NETBIOS (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_NETBIOS}\spxextra{built\sphinxhyphen{}in variable}} 20832 20833\begin{fulllineitems} 20834\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_NETBIOS:ADDRTYPE_NETBIOS}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_NETBIOS}}} 20835\end{fulllineitems} 20836 20837 20838 20839\begin{savenotes}\sphinxattablestart 20840\centering 20841\begin{tabulary}{\linewidth}[t]{|T|T|} 20842\hline 20843 20844\sphinxAtStartPar 20845\sphinxcode{\sphinxupquote{ADDRTYPE\_NETBIOS}} 20846& 20847\sphinxAtStartPar 20848\sphinxcode{\sphinxupquote{0x0014}} 20849\\ 20850\hline 20851\end{tabulary} 20852\par 20853\sphinxattableend\end{savenotes} 20854 20855 20856\subsubsection{ADDRTYPE\_XNS} 20857\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS:addrtype-xns}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS:addrtype-xns-data}}\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS::doc}}\index{ADDRTYPE\_XNS (built\sphinxhyphen{}in variable)@\spxentry{ADDRTYPE\_XNS}\spxextra{built\sphinxhyphen{}in variable}} 20858 20859\begin{fulllineitems} 20860\phantomsection\label{\detokenize{appdev/refs/macros/ADDRTYPE_XNS:ADDRTYPE_XNS}}\pysigline{\sphinxbfcode{\sphinxupquote{ADDRTYPE\_XNS}}} 20861\end{fulllineitems} 20862 20863 20864 20865\begin{savenotes}\sphinxattablestart 20866\centering 20867\begin{tabulary}{\linewidth}[t]{|T|T|} 20868\hline 20869 20870\sphinxAtStartPar 20871\sphinxcode{\sphinxupquote{ADDRTYPE\_XNS}} 20872& 20873\sphinxAtStartPar 20874\sphinxcode{\sphinxupquote{0x0006}} 20875\\ 20876\hline 20877\end{tabulary} 20878\par 20879\sphinxattableend\end{savenotes} 20880 20881 20882\subsubsection{AD\_TYPE\_EXTERNAL} 20883\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL:ad-type-external}}\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL:ad-type-external-data}}\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL::doc}}\index{AD\_TYPE\_EXTERNAL (built\sphinxhyphen{}in variable)@\spxentry{AD\_TYPE\_EXTERNAL}\spxextra{built\sphinxhyphen{}in variable}} 20884 20885\begin{fulllineitems} 20886\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_EXTERNAL:AD_TYPE_EXTERNAL}}\pysigline{\sphinxbfcode{\sphinxupquote{AD\_TYPE\_EXTERNAL}}} 20887\end{fulllineitems} 20888 20889 20890 20891\begin{savenotes}\sphinxattablestart 20892\centering 20893\begin{tabulary}{\linewidth}[t]{|T|T|} 20894\hline 20895 20896\sphinxAtStartPar 20897\sphinxcode{\sphinxupquote{AD\_TYPE\_EXTERNAL}} 20898& 20899\sphinxAtStartPar 20900\sphinxcode{\sphinxupquote{0x4000}} 20901\\ 20902\hline 20903\end{tabulary} 20904\par 20905\sphinxattableend\end{savenotes} 20906 20907 20908\subsubsection{AD\_TYPE\_FIELD\_TYPE\_MASK} 20909\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:ad-type-field-type-mask-data}}\label{\detokenize{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK::doc}}\index{AD\_TYPE\_FIELD\_TYPE\_MASK (built\sphinxhyphen{}in variable)@\spxentry{AD\_TYPE\_FIELD\_TYPE\_MASK}\spxextra{built\sphinxhyphen{}in variable}} 20910 20911\begin{fulllineitems} 20912\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_FIELD_TYPE_MASK:AD_TYPE_FIELD_TYPE_MASK}}\pysigline{\sphinxbfcode{\sphinxupquote{AD\_TYPE\_FIELD\_TYPE\_MASK}}} 20913\end{fulllineitems} 20914 20915 20916 20917\begin{savenotes}\sphinxattablestart 20918\centering 20919\begin{tabulary}{\linewidth}[t]{|T|T|} 20920\hline 20921 20922\sphinxAtStartPar 20923\sphinxcode{\sphinxupquote{AD\_TYPE\_FIELD\_TYPE\_MASK}} 20924& 20925\sphinxAtStartPar 20926\sphinxcode{\sphinxupquote{0x1fff}} 20927\\ 20928\hline 20929\end{tabulary} 20930\par 20931\sphinxattableend\end{savenotes} 20932 20933 20934\subsubsection{AD\_TYPE\_REGISTERED} 20935\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED:ad-type-registered}}\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED:ad-type-registered-data}}\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED::doc}}\index{AD\_TYPE\_REGISTERED (built\sphinxhyphen{}in variable)@\spxentry{AD\_TYPE\_REGISTERED}\spxextra{built\sphinxhyphen{}in variable}} 20936 20937\begin{fulllineitems} 20938\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_REGISTERED:AD_TYPE_REGISTERED}}\pysigline{\sphinxbfcode{\sphinxupquote{AD\_TYPE\_REGISTERED}}} 20939\end{fulllineitems} 20940 20941 20942 20943\begin{savenotes}\sphinxattablestart 20944\centering 20945\begin{tabulary}{\linewidth}[t]{|T|T|} 20946\hline 20947 20948\sphinxAtStartPar 20949\sphinxcode{\sphinxupquote{AD\_TYPE\_REGISTERED}} 20950& 20951\sphinxAtStartPar 20952\sphinxcode{\sphinxupquote{0x2000}} 20953\\ 20954\hline 20955\end{tabulary} 20956\par 20957\sphinxattableend\end{savenotes} 20958 20959 20960\subsubsection{AD\_TYPE\_RESERVED} 20961\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED:ad-type-reserved}}\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED:ad-type-reserved-data}}\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED::doc}}\index{AD\_TYPE\_RESERVED (built\sphinxhyphen{}in variable)@\spxentry{AD\_TYPE\_RESERVED}\spxextra{built\sphinxhyphen{}in variable}} 20962 20963\begin{fulllineitems} 20964\phantomsection\label{\detokenize{appdev/refs/macros/AD_TYPE_RESERVED:AD_TYPE_RESERVED}}\pysigline{\sphinxbfcode{\sphinxupquote{AD\_TYPE\_RESERVED}}} 20965\end{fulllineitems} 20966 20967 20968 20969\begin{savenotes}\sphinxattablestart 20970\centering 20971\begin{tabulary}{\linewidth}[t]{|T|T|} 20972\hline 20973 20974\sphinxAtStartPar 20975\sphinxcode{\sphinxupquote{AD\_TYPE\_RESERVED}} 20976& 20977\sphinxAtStartPar 20978\sphinxcode{\sphinxupquote{0x8000}} 20979\\ 20980\hline 20981\end{tabulary} 20982\par 20983\sphinxattableend\end{savenotes} 20984 20985 20986\subsubsection{AP\_OPTS\_ETYPE\_NEGOTIATION} 20987\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}}\label{\detokenize{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION::doc}}\index{AP\_OPTS\_ETYPE\_NEGOTIATION (built\sphinxhyphen{}in variable)@\spxentry{AP\_OPTS\_ETYPE\_NEGOTIATION}\spxextra{built\sphinxhyphen{}in variable}} 20988 20989\begin{fulllineitems} 20990\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_ETYPE_NEGOTIATION:AP_OPTS_ETYPE_NEGOTIATION}}\pysigline{\sphinxbfcode{\sphinxupquote{AP\_OPTS\_ETYPE\_NEGOTIATION}}} 20991\end{fulllineitems} 20992 20993 20994 20995\begin{savenotes}\sphinxattablestart 20996\centering 20997\begin{tabulary}{\linewidth}[t]{|T|T|} 20998\hline 20999 21000\sphinxAtStartPar 21001\sphinxcode{\sphinxupquote{AP\_OPTS\_ETYPE\_NEGOTIATION}} 21002& 21003\sphinxAtStartPar 21004\sphinxcode{\sphinxupquote{0x00000002}} 21005\\ 21006\hline 21007\end{tabulary} 21008\par 21009\sphinxattableend\end{savenotes} 21010 21011 21012\subsubsection{AP\_OPTS\_MUTUAL\_REQUIRED} 21013\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\sphinxhyphen{}in variable)@\spxentry{AP\_OPTS\_MUTUAL\_REQUIRED}\spxextra{built\sphinxhyphen{}in variable}} 21014 21015\begin{fulllineitems} 21016\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_MUTUAL_REQUIRED:AP_OPTS_MUTUAL_REQUIRED}}\pysigline{\sphinxbfcode{\sphinxupquote{AP\_OPTS\_MUTUAL\_REQUIRED}}} 21017\end{fulllineitems} 21018 21019 21020\sphinxAtStartPar 21021Perform a mutual authentication exchange. 21022 21023 21024\begin{savenotes}\sphinxattablestart 21025\centering 21026\begin{tabulary}{\linewidth}[t]{|T|T|} 21027\hline 21028 21029\sphinxAtStartPar 21030\sphinxcode{\sphinxupquote{AP\_OPTS\_MUTUAL\_REQUIRED}} 21031& 21032\sphinxAtStartPar 21033\sphinxcode{\sphinxupquote{0x20000000}} 21034\\ 21035\hline 21036\end{tabulary} 21037\par 21038\sphinxattableend\end{savenotes} 21039 21040 21041\subsubsection{AP\_OPTS\_RESERVED} 21042\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED:ap-opts-reserved}}\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED:ap-opts-reserved-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED::doc}}\index{AP\_OPTS\_RESERVED (built\sphinxhyphen{}in variable)@\spxentry{AP\_OPTS\_RESERVED}\spxextra{built\sphinxhyphen{}in variable}} 21043 21044\begin{fulllineitems} 21045\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_RESERVED:AP_OPTS_RESERVED}}\pysigline{\sphinxbfcode{\sphinxupquote{AP\_OPTS\_RESERVED}}} 21046\end{fulllineitems} 21047 21048 21049 21050\begin{savenotes}\sphinxattablestart 21051\centering 21052\begin{tabulary}{\linewidth}[t]{|T|T|} 21053\hline 21054 21055\sphinxAtStartPar 21056\sphinxcode{\sphinxupquote{AP\_OPTS\_RESERVED}} 21057& 21058\sphinxAtStartPar 21059\sphinxcode{\sphinxupquote{0x80000000}} 21060\\ 21061\hline 21062\end{tabulary} 21063\par 21064\sphinxattableend\end{savenotes} 21065 21066 21067\subsubsection{AP\_OPTS\_USE\_SESSION\_KEY} 21068\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:ap-opts-use-session-key-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY::doc}}\index{AP\_OPTS\_USE\_SESSION\_KEY (built\sphinxhyphen{}in variable)@\spxentry{AP\_OPTS\_USE\_SESSION\_KEY}\spxextra{built\sphinxhyphen{}in variable}} 21069 21070\begin{fulllineitems} 21071\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SESSION_KEY:AP_OPTS_USE_SESSION_KEY}}\pysigline{\sphinxbfcode{\sphinxupquote{AP\_OPTS\_USE\_SESSION\_KEY}}} 21072\end{fulllineitems} 21073 21074 21075\sphinxAtStartPar 21076Use session key. 21077 21078 21079\begin{savenotes}\sphinxattablestart 21080\centering 21081\begin{tabulary}{\linewidth}[t]{|T|T|} 21082\hline 21083 21084\sphinxAtStartPar 21085\sphinxcode{\sphinxupquote{AP\_OPTS\_USE\_SESSION\_KEY}} 21086& 21087\sphinxAtStartPar 21088\sphinxcode{\sphinxupquote{0x40000000}} 21089\\ 21090\hline 21091\end{tabulary} 21092\par 21093\sphinxattableend\end{savenotes} 21094 21095 21096\subsubsection{AP\_OPTS\_USE\_SUBKEY} 21097\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\sphinxhyphen{}in variable)@\spxentry{AP\_OPTS\_USE\_SUBKEY}\spxextra{built\sphinxhyphen{}in variable}} 21098 21099\begin{fulllineitems} 21100\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_USE_SUBKEY:AP_OPTS_USE_SUBKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{AP\_OPTS\_USE\_SUBKEY}}} 21101\end{fulllineitems} 21102 21103 21104\sphinxAtStartPar 21105Generate a subsession key from the current session key obtained from the credentials. 21106 21107 21108\begin{savenotes}\sphinxattablestart 21109\centering 21110\begin{tabulary}{\linewidth}[t]{|T|T|} 21111\hline 21112 21113\sphinxAtStartPar 21114\sphinxcode{\sphinxupquote{AP\_OPTS\_USE\_SUBKEY}} 21115& 21116\sphinxAtStartPar 21117\sphinxcode{\sphinxupquote{0x00000001}} 21118\\ 21119\hline 21120\end{tabulary} 21121\par 21122\sphinxattableend\end{savenotes} 21123 21124 21125\subsubsection{AP\_OPTS\_WIRE\_MASK} 21126\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK:ap-opts-wire-mask}}\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK:ap-opts-wire-mask-data}}\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK::doc}}\index{AP\_OPTS\_WIRE\_MASK (built\sphinxhyphen{}in variable)@\spxentry{AP\_OPTS\_WIRE\_MASK}\spxextra{built\sphinxhyphen{}in variable}} 21127 21128\begin{fulllineitems} 21129\phantomsection\label{\detokenize{appdev/refs/macros/AP_OPTS_WIRE_MASK:AP_OPTS_WIRE_MASK}}\pysigline{\sphinxbfcode{\sphinxupquote{AP\_OPTS\_WIRE\_MASK}}} 21130\end{fulllineitems} 21131 21132 21133 21134\begin{savenotes}\sphinxattablestart 21135\centering 21136\begin{tabulary}{\linewidth}[t]{|T|T|} 21137\hline 21138 21139\sphinxAtStartPar 21140\sphinxcode{\sphinxupquote{AP\_OPTS\_WIRE\_MASK}} 21141& 21142\sphinxAtStartPar 21143\sphinxcode{\sphinxupquote{0xfffffff0}} 21144\\ 21145\hline 21146\end{tabulary} 21147\par 21148\sphinxattableend\end{savenotes} 21149 21150 21151\subsubsection{CKSUMTYPE\_CMAC\_CAMELLIA128} 21152\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:cksumtype-cmac-camellia128}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:cksumtype-cmac-camellia128-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128::doc}}\index{CKSUMTYPE\_CMAC\_CAMELLIA128 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_CMAC\_CAMELLIA128}\spxextra{built\sphinxhyphen{}in variable}} 21153 21154\begin{fulllineitems} 21155\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA128:CKSUMTYPE_CMAC_CAMELLIA128}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_CMAC\_CAMELLIA128}}} 21156\end{fulllineitems} 21157 21158 21159\sphinxAtStartPar 21160RFC 6803. 21161 21162 21163\begin{savenotes}\sphinxattablestart 21164\centering 21165\begin{tabulary}{\linewidth}[t]{|T|T|} 21166\hline 21167 21168\sphinxAtStartPar 21169\sphinxcode{\sphinxupquote{CKSUMTYPE\_CMAC\_CAMELLIA128}} 21170& 21171\sphinxAtStartPar 21172\sphinxcode{\sphinxupquote{0x0011}} 21173\\ 21174\hline 21175\end{tabulary} 21176\par 21177\sphinxattableend\end{savenotes} 21178 21179 21180\subsubsection{CKSUMTYPE\_CMAC\_CAMELLIA256} 21181\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:cksumtype-cmac-camellia256}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:cksumtype-cmac-camellia256-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256::doc}}\index{CKSUMTYPE\_CMAC\_CAMELLIA256 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_CMAC\_CAMELLIA256}\spxextra{built\sphinxhyphen{}in variable}} 21182 21183\begin{fulllineitems} 21184\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CMAC_CAMELLIA256:CKSUMTYPE_CMAC_CAMELLIA256}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_CMAC\_CAMELLIA256}}} 21185\end{fulllineitems} 21186 21187 21188\sphinxAtStartPar 21189RFC 6803. 21190 21191 21192\begin{savenotes}\sphinxattablestart 21193\centering 21194\begin{tabulary}{\linewidth}[t]{|T|T|} 21195\hline 21196 21197\sphinxAtStartPar 21198\sphinxcode{\sphinxupquote{CKSUMTYPE\_CMAC\_CAMELLIA256}} 21199& 21200\sphinxAtStartPar 21201\sphinxcode{\sphinxupquote{0x0012}} 21202\\ 21203\hline 21204\end{tabulary} 21205\par 21206\sphinxattableend\end{savenotes} 21207 21208 21209\subsubsection{CKSUMTYPE\_CRC32} 21210\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32:cksumtype-crc32}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32:cksumtype-crc32-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32::doc}}\index{CKSUMTYPE\_CRC32 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_CRC32}\spxextra{built\sphinxhyphen{}in variable}} 21211 21212\begin{fulllineitems} 21213\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_CRC32:CKSUMTYPE_CRC32}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_CRC32}}} 21214\end{fulllineitems} 21215 21216 21217 21218\begin{savenotes}\sphinxattablestart 21219\centering 21220\begin{tabulary}{\linewidth}[t]{|T|T|} 21221\hline 21222 21223\sphinxAtStartPar 21224\sphinxcode{\sphinxupquote{CKSUMTYPE\_CRC32}} 21225& 21226\sphinxAtStartPar 21227\sphinxcode{\sphinxupquote{0x0001}} 21228\\ 21229\hline 21230\end{tabulary} 21231\par 21232\sphinxattableend\end{savenotes} 21233 21234 21235\subsubsection{CKSUMTYPE\_DESCBC} 21236\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC:cksumtype-descbc}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC:cksumtype-descbc-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC::doc}}\index{CKSUMTYPE\_DESCBC (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_DESCBC}\spxextra{built\sphinxhyphen{}in variable}} 21237 21238\begin{fulllineitems} 21239\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_DESCBC:CKSUMTYPE_DESCBC}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_DESCBC}}} 21240\end{fulllineitems} 21241 21242 21243 21244\begin{savenotes}\sphinxattablestart 21245\centering 21246\begin{tabulary}{\linewidth}[t]{|T|T|} 21247\hline 21248 21249\sphinxAtStartPar 21250\sphinxcode{\sphinxupquote{CKSUMTYPE\_DESCBC}} 21251& 21252\sphinxAtStartPar 21253\sphinxcode{\sphinxupquote{0x0004}} 21254\\ 21255\hline 21256\end{tabulary} 21257\par 21258\sphinxattableend\end{savenotes} 21259 21260 21261\subsubsection{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR} 21262\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:cksumtype-hmac-md5-arcfour}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:cksumtype-hmac-md5-arcfour-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR::doc}}\index{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}\spxextra{built\sphinxhyphen{}in variable}} 21263 21264\begin{fulllineitems} 21265\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_MD5_ARCFOUR:CKSUMTYPE_HMAC_MD5_ARCFOUR}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}}} 21266\end{fulllineitems} 21267 21268 21269\sphinxAtStartPar 21270RFC 4757. 21271 21272 21273\begin{savenotes}\sphinxattablestart 21274\centering 21275\begin{tabulary}{\linewidth}[t]{|T|T|} 21276\hline 21277 21278\sphinxAtStartPar 21279\sphinxcode{\sphinxupquote{CKSUMTYPE\_HMAC\_MD5\_ARCFOUR}} 21280& 21281\sphinxAtStartPar 21282\sphinxcode{\sphinxupquote{\sphinxhyphen{}138}} 21283\\ 21284\hline 21285\end{tabulary} 21286\par 21287\sphinxattableend\end{savenotes} 21288 21289 21290\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128} 21291\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}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128::doc}}\index{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}\spxextra{built\sphinxhyphen{}in variable}} 21292 21293\begin{fulllineitems} 21294\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES128:CKSUMTYPE_HMAC_SHA1_96_AES128}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}}} 21295\end{fulllineitems} 21296 21297 21298\sphinxAtStartPar 21299RFC 3962. 21300 21301\sphinxAtStartPar 21302Used with ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96 21303 21304 21305\begin{savenotes}\sphinxattablestart 21306\centering 21307\begin{tabulary}{\linewidth}[t]{|T|T|} 21308\hline 21309 21310\sphinxAtStartPar 21311\sphinxcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA1\_96\_AES128}} 21312& 21313\sphinxAtStartPar 21314\sphinxcode{\sphinxupquote{0x000f}} 21315\\ 21316\hline 21317\end{tabulary} 21318\par 21319\sphinxattableend\end{savenotes} 21320 21321 21322\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256} 21323\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}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256::doc}}\index{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}\spxextra{built\sphinxhyphen{}in variable}} 21324 21325\begin{fulllineitems} 21326\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_96_AES256:CKSUMTYPE_HMAC_SHA1_96_AES256}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}}} 21327\end{fulllineitems} 21328 21329 21330\sphinxAtStartPar 21331RFC 3962. 21332 21333\sphinxAtStartPar 21334Used with ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96 21335 21336 21337\begin{savenotes}\sphinxattablestart 21338\centering 21339\begin{tabulary}{\linewidth}[t]{|T|T|} 21340\hline 21341 21342\sphinxAtStartPar 21343\sphinxcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA1\_96\_AES256}} 21344& 21345\sphinxAtStartPar 21346\sphinxcode{\sphinxupquote{0x0010}} 21347\\ 21348\hline 21349\end{tabulary} 21350\par 21351\sphinxattableend\end{savenotes} 21352 21353 21354\subsubsection{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128} 21355\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA256_128_AES128:cksumtype-hmac-sha256-128-aes128}}\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}}\index{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128}\spxextra{built\sphinxhyphen{}in variable}} 21356 21357\begin{fulllineitems} 21358\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA256_128_AES128:CKSUMTYPE_HMAC_SHA256_128_AES128}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128}}} 21359\end{fulllineitems} 21360 21361 21362\sphinxAtStartPar 21363RFC 8009. 21364 21365 21366\begin{savenotes}\sphinxattablestart 21367\centering 21368\begin{tabulary}{\linewidth}[t]{|T|T|} 21369\hline 21370 21371\sphinxAtStartPar 21372\sphinxcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA256\_128\_AES128}} 21373& 21374\sphinxAtStartPar 21375\sphinxcode{\sphinxupquote{0x0013}} 21376\\ 21377\hline 21378\end{tabulary} 21379\par 21380\sphinxattableend\end{savenotes} 21381 21382 21383\subsubsection{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256} 21384\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\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256}\spxextra{built\sphinxhyphen{}in variable}} 21385 21386\begin{fulllineitems} 21387\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA384_192_AES256:CKSUMTYPE_HMAC_SHA384_192_AES256}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256}}} 21388\end{fulllineitems} 21389 21390 21391\sphinxAtStartPar 21392RFC 8009. 21393 21394 21395\begin{savenotes}\sphinxattablestart 21396\centering 21397\begin{tabulary}{\linewidth}[t]{|T|T|} 21398\hline 21399 21400\sphinxAtStartPar 21401\sphinxcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA384\_192\_AES256}} 21402& 21403\sphinxAtStartPar 21404\sphinxcode{\sphinxupquote{0x0014}} 21405\\ 21406\hline 21407\end{tabulary} 21408\par 21409\sphinxattableend\end{savenotes} 21410 21411 21412\subsubsection{CKSUMTYPE\_HMAC\_SHA1\_DES3} 21413\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}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3::doc}}\index{CKSUMTYPE\_HMAC\_SHA1\_DES3 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_HMAC\_SHA1\_DES3}\spxextra{built\sphinxhyphen{}in variable}} 21414 21415\begin{fulllineitems} 21416\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_HMAC_SHA1_DES3:CKSUMTYPE_HMAC_SHA1_DES3}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA1\_DES3}}} 21417\end{fulllineitems} 21418 21419 21420 21421\begin{savenotes}\sphinxattablestart 21422\centering 21423\begin{tabulary}{\linewidth}[t]{|T|T|} 21424\hline 21425 21426\sphinxAtStartPar 21427\sphinxcode{\sphinxupquote{CKSUMTYPE\_HMAC\_SHA1\_DES3}} 21428& 21429\sphinxAtStartPar 21430\sphinxcode{\sphinxupquote{0x000c}} 21431\\ 21432\hline 21433\end{tabulary} 21434\par 21435\sphinxattableend\end{savenotes} 21436 21437 21438\subsubsection{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR} 21439\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\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}\spxextra{built\sphinxhyphen{}in variable}} 21440 21441\begin{fulllineitems} 21442\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_MD5_HMAC_ARCFOUR:CKSUMTYPE_MD5_HMAC_ARCFOUR}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}}} 21443\end{fulllineitems} 21444 21445 21446 21447\begin{savenotes}\sphinxattablestart 21448\centering 21449\begin{tabulary}{\linewidth}[t]{|T|T|} 21450\hline 21451 21452\sphinxAtStartPar 21453\sphinxcode{\sphinxupquote{CKSUMTYPE\_MD5\_HMAC\_ARCFOUR}} 21454& 21455\sphinxAtStartPar 21456\sphinxcode{\sphinxupquote{\sphinxhyphen{}137 /* Microsoft netlogon */}} 21457\\ 21458\hline 21459\end{tabulary} 21460\par 21461\sphinxattableend\end{savenotes} 21462 21463 21464\subsubsection{CKSUMTYPE\_NIST\_SHA} 21465\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA:cksumtype-nist-sha}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA:cksumtype-nist-sha-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA::doc}}\index{CKSUMTYPE\_NIST\_SHA (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_NIST\_SHA}\spxextra{built\sphinxhyphen{}in variable}} 21466 21467\begin{fulllineitems} 21468\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_NIST_SHA:CKSUMTYPE_NIST_SHA}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_NIST\_SHA}}} 21469\end{fulllineitems} 21470 21471 21472 21473\begin{savenotes}\sphinxattablestart 21474\centering 21475\begin{tabulary}{\linewidth}[t]{|T|T|} 21476\hline 21477 21478\sphinxAtStartPar 21479\sphinxcode{\sphinxupquote{CKSUMTYPE\_NIST\_SHA}} 21480& 21481\sphinxAtStartPar 21482\sphinxcode{\sphinxupquote{0x0009}} 21483\\ 21484\hline 21485\end{tabulary} 21486\par 21487\sphinxattableend\end{savenotes} 21488 21489 21490\subsubsection{CKSUMTYPE\_RSA\_MD4} 21491\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4:cksumtype-rsa-md4}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4:cksumtype-rsa-md4-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4::doc}}\index{CKSUMTYPE\_RSA\_MD4 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_RSA\_MD4}\spxextra{built\sphinxhyphen{}in variable}} 21492 21493\begin{fulllineitems} 21494\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4:CKSUMTYPE_RSA_MD4}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD4}}} 21495\end{fulllineitems} 21496 21497 21498 21499\begin{savenotes}\sphinxattablestart 21500\centering 21501\begin{tabulary}{\linewidth}[t]{|T|T|} 21502\hline 21503 21504\sphinxAtStartPar 21505\sphinxcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD4}} 21506& 21507\sphinxAtStartPar 21508\sphinxcode{\sphinxupquote{0x0002}} 21509\\ 21510\hline 21511\end{tabulary} 21512\par 21513\sphinxattableend\end{savenotes} 21514 21515 21516\subsubsection{CKSUMTYPE\_RSA\_MD4\_DES} 21517\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}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES::doc}}\index{CKSUMTYPE\_RSA\_MD4\_DES (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_RSA\_MD4\_DES}\spxextra{built\sphinxhyphen{}in variable}} 21518 21519\begin{fulllineitems} 21520\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD4_DES:CKSUMTYPE_RSA_MD4_DES}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD4\_DES}}} 21521\end{fulllineitems} 21522 21523 21524 21525\begin{savenotes}\sphinxattablestart 21526\centering 21527\begin{tabulary}{\linewidth}[t]{|T|T|} 21528\hline 21529 21530\sphinxAtStartPar 21531\sphinxcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD4\_DES}} 21532& 21533\sphinxAtStartPar 21534\sphinxcode{\sphinxupquote{0x0003}} 21535\\ 21536\hline 21537\end{tabulary} 21538\par 21539\sphinxattableend\end{savenotes} 21540 21541 21542\subsubsection{CKSUMTYPE\_RSA\_MD5} 21543\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5:cksumtype-rsa-md5}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5:cksumtype-rsa-md5-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5::doc}}\index{CKSUMTYPE\_RSA\_MD5 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_RSA\_MD5}\spxextra{built\sphinxhyphen{}in variable}} 21544 21545\begin{fulllineitems} 21546\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5:CKSUMTYPE_RSA_MD5}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD5}}} 21547\end{fulllineitems} 21548 21549 21550 21551\begin{savenotes}\sphinxattablestart 21552\centering 21553\begin{tabulary}{\linewidth}[t]{|T|T|} 21554\hline 21555 21556\sphinxAtStartPar 21557\sphinxcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD5}} 21558& 21559\sphinxAtStartPar 21560\sphinxcode{\sphinxupquote{0x0007}} 21561\\ 21562\hline 21563\end{tabulary} 21564\par 21565\sphinxattableend\end{savenotes} 21566 21567 21568\subsubsection{CKSUMTYPE\_RSA\_MD5\_DES} 21569\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:cksumtype-rsa-md5-des}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:cksumtype-rsa-md5-des-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES::doc}}\index{CKSUMTYPE\_RSA\_MD5\_DES (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_RSA\_MD5\_DES}\spxextra{built\sphinxhyphen{}in variable}} 21570 21571\begin{fulllineitems} 21572\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_RSA_MD5_DES:CKSUMTYPE_RSA_MD5_DES}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD5\_DES}}} 21573\end{fulllineitems} 21574 21575 21576 21577\begin{savenotes}\sphinxattablestart 21578\centering 21579\begin{tabulary}{\linewidth}[t]{|T|T|} 21580\hline 21581 21582\sphinxAtStartPar 21583\sphinxcode{\sphinxupquote{CKSUMTYPE\_RSA\_MD5\_DES}} 21584& 21585\sphinxAtStartPar 21586\sphinxcode{\sphinxupquote{0x0008}} 21587\\ 21588\hline 21589\end{tabulary} 21590\par 21591\sphinxattableend\end{savenotes} 21592 21593 21594\subsubsection{CKSUMTYPE\_SHA1} 21595\label{\detokenize{appdev/refs/macros/CKSUMTYPE_SHA1:cksumtype-sha1}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_SHA1:cksumtype-sha1-data}}\label{\detokenize{appdev/refs/macros/CKSUMTYPE_SHA1::doc}}\index{CKSUMTYPE\_SHA1 (built\sphinxhyphen{}in variable)@\spxentry{CKSUMTYPE\_SHA1}\spxextra{built\sphinxhyphen{}in variable}} 21596 21597\begin{fulllineitems} 21598\phantomsection\label{\detokenize{appdev/refs/macros/CKSUMTYPE_SHA1:CKSUMTYPE_SHA1}}\pysigline{\sphinxbfcode{\sphinxupquote{CKSUMTYPE\_SHA1}}} 21599\end{fulllineitems} 21600 21601 21602\sphinxAtStartPar 21603RFC 3961. 21604 21605 21606\begin{savenotes}\sphinxattablestart 21607\centering 21608\begin{tabulary}{\linewidth}[t]{|T|T|} 21609\hline 21610 21611\sphinxAtStartPar 21612\sphinxcode{\sphinxupquote{CKSUMTYPE\_SHA1}} 21613& 21614\sphinxAtStartPar 21615\sphinxcode{\sphinxupquote{0x000e}} 21616\\ 21617\hline 21618\end{tabulary} 21619\par 21620\sphinxattableend\end{savenotes} 21621 21622 21623\subsubsection{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96} 21624\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:enctype-aes128-cts-hmac-sha1-96}}\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}}\index{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}\spxextra{built\sphinxhyphen{}in variable}} 21625 21626\begin{fulllineitems} 21627\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA1_96:ENCTYPE_AES128_CTS_HMAC_SHA1_96}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}}} 21628\end{fulllineitems} 21629 21630 21631\sphinxAtStartPar 21632RFC 3962. 21633 21634 21635\begin{savenotes}\sphinxattablestart 21636\centering 21637\begin{tabulary}{\linewidth}[t]{|T|T|} 21638\hline 21639 21640\sphinxAtStartPar 21641\sphinxcode{\sphinxupquote{ENCTYPE\_AES128\_CTS\_HMAC\_SHA1\_96}} 21642& 21643\sphinxAtStartPar 21644\sphinxcode{\sphinxupquote{0x0011}} 21645\\ 21646\hline 21647\end{tabulary} 21648\par 21649\sphinxattableend\end{savenotes} 21650 21651 21652\subsubsection{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128} 21653\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\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128}\spxextra{built\sphinxhyphen{}in variable}} 21654 21655\begin{fulllineitems} 21656\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES128_CTS_HMAC_SHA256_128:ENCTYPE_AES128_CTS_HMAC_SHA256_128}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128}}} 21657\end{fulllineitems} 21658 21659 21660\sphinxAtStartPar 21661RFC 8009. 21662 21663 21664\begin{savenotes}\sphinxattablestart 21665\centering 21666\begin{tabulary}{\linewidth}[t]{|T|T|} 21667\hline 21668 21669\sphinxAtStartPar 21670\sphinxcode{\sphinxupquote{ENCTYPE\_AES128\_CTS\_HMAC\_SHA256\_128}} 21671& 21672\sphinxAtStartPar 21673\sphinxcode{\sphinxupquote{0x0013}} 21674\\ 21675\hline 21676\end{tabulary} 21677\par 21678\sphinxattableend\end{savenotes} 21679 21680 21681\subsubsection{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96} 21682\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:enctype-aes256-cts-hmac-sha1-96}}\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}}\index{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}\spxextra{built\sphinxhyphen{}in variable}} 21683 21684\begin{fulllineitems} 21685\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA1_96:ENCTYPE_AES256_CTS_HMAC_SHA1_96}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}}} 21686\end{fulllineitems} 21687 21688 21689\sphinxAtStartPar 21690RFC 3962. 21691 21692 21693\begin{savenotes}\sphinxattablestart 21694\centering 21695\begin{tabulary}{\linewidth}[t]{|T|T|} 21696\hline 21697 21698\sphinxAtStartPar 21699\sphinxcode{\sphinxupquote{ENCTYPE\_AES256\_CTS\_HMAC\_SHA1\_96}} 21700& 21701\sphinxAtStartPar 21702\sphinxcode{\sphinxupquote{0x0012}} 21703\\ 21704\hline 21705\end{tabulary} 21706\par 21707\sphinxattableend\end{savenotes} 21708 21709 21710\subsubsection{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192} 21711\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:enctype-aes256-cts-hmac-sha384-192-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192::doc}}\index{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192}\spxextra{built\sphinxhyphen{}in variable}} 21712 21713\begin{fulllineitems} 21714\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_AES256_CTS_HMAC_SHA384_192:ENCTYPE_AES256_CTS_HMAC_SHA384_192}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192}}} 21715\end{fulllineitems} 21716 21717 21718\sphinxAtStartPar 21719RFC 8009. 21720 21721 21722\begin{savenotes}\sphinxattablestart 21723\centering 21724\begin{tabulary}{\linewidth}[t]{|T|T|} 21725\hline 21726 21727\sphinxAtStartPar 21728\sphinxcode{\sphinxupquote{ENCTYPE\_AES256\_CTS\_HMAC\_SHA384\_192}} 21729& 21730\sphinxAtStartPar 21731\sphinxcode{\sphinxupquote{0x0014}} 21732\\ 21733\hline 21734\end{tabulary} 21735\par 21736\sphinxattableend\end{savenotes} 21737 21738 21739\subsubsection{ENCTYPE\_ARCFOUR\_HMAC} 21740\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\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_ARCFOUR\_HMAC}\spxextra{built\sphinxhyphen{}in variable}} 21741 21742\begin{fulllineitems} 21743\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC:ENCTYPE_ARCFOUR_HMAC}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_ARCFOUR\_HMAC}}} 21744\end{fulllineitems} 21745 21746 21747\sphinxAtStartPar 21748RFC 4757. 21749 21750 21751\begin{savenotes}\sphinxattablestart 21752\centering 21753\begin{tabulary}{\linewidth}[t]{|T|T|} 21754\hline 21755 21756\sphinxAtStartPar 21757\sphinxcode{\sphinxupquote{ENCTYPE\_ARCFOUR\_HMAC}} 21758& 21759\sphinxAtStartPar 21760\sphinxcode{\sphinxupquote{0x0017}} 21761\\ 21762\hline 21763\end{tabulary} 21764\par 21765\sphinxattableend\end{savenotes} 21766 21767 21768\subsubsection{ENCTYPE\_ARCFOUR\_HMAC\_EXP} 21769\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:enctype-arcfour-hmac-exp}}\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:enctype-arcfour-hmac-exp-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP::doc}}\index{ENCTYPE\_ARCFOUR\_HMAC\_EXP (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_ARCFOUR\_HMAC\_EXP}\spxextra{built\sphinxhyphen{}in variable}} 21770 21771\begin{fulllineitems} 21772\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_ARCFOUR_HMAC_EXP:ENCTYPE_ARCFOUR_HMAC_EXP}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_ARCFOUR\_HMAC\_EXP}}} 21773\end{fulllineitems} 21774 21775 21776\sphinxAtStartPar 21777RFC 4757. 21778 21779 21780\begin{savenotes}\sphinxattablestart 21781\centering 21782\begin{tabulary}{\linewidth}[t]{|T|T|} 21783\hline 21784 21785\sphinxAtStartPar 21786\sphinxcode{\sphinxupquote{ENCTYPE\_ARCFOUR\_HMAC\_EXP}} 21787& 21788\sphinxAtStartPar 21789\sphinxcode{\sphinxupquote{0x0018}} 21790\\ 21791\hline 21792\end{tabulary} 21793\par 21794\sphinxattableend\end{savenotes} 21795 21796 21797\subsubsection{ENCTYPE\_CAMELLIA128\_CTS\_CMAC} 21798\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:enctype-camellia128-cts-cmac}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:enctype-camellia128-cts-cmac-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC::doc}}\index{ENCTYPE\_CAMELLIA128\_CTS\_CMAC (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}\spxextra{built\sphinxhyphen{}in variable}} 21799 21800\begin{fulllineitems} 21801\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA128_CTS_CMAC:ENCTYPE_CAMELLIA128_CTS_CMAC}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}}} 21802\end{fulllineitems} 21803 21804 21805\sphinxAtStartPar 21806RFC 6803. 21807 21808 21809\begin{savenotes}\sphinxattablestart 21810\centering 21811\begin{tabulary}{\linewidth}[t]{|T|T|} 21812\hline 21813 21814\sphinxAtStartPar 21815\sphinxcode{\sphinxupquote{ENCTYPE\_CAMELLIA128\_CTS\_CMAC}} 21816& 21817\sphinxAtStartPar 21818\sphinxcode{\sphinxupquote{0x0019}} 21819\\ 21820\hline 21821\end{tabulary} 21822\par 21823\sphinxattableend\end{savenotes} 21824 21825 21826\subsubsection{ENCTYPE\_CAMELLIA256\_CTS\_CMAC} 21827\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:enctype-camellia256-cts-cmac}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:enctype-camellia256-cts-cmac-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC::doc}}\index{ENCTYPE\_CAMELLIA256\_CTS\_CMAC (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}\spxextra{built\sphinxhyphen{}in variable}} 21828 21829\begin{fulllineitems} 21830\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_CAMELLIA256_CTS_CMAC:ENCTYPE_CAMELLIA256_CTS_CMAC}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}}} 21831\end{fulllineitems} 21832 21833 21834\sphinxAtStartPar 21835RFC 6803. 21836 21837 21838\begin{savenotes}\sphinxattablestart 21839\centering 21840\begin{tabulary}{\linewidth}[t]{|T|T|} 21841\hline 21842 21843\sphinxAtStartPar 21844\sphinxcode{\sphinxupquote{ENCTYPE\_CAMELLIA256\_CTS\_CMAC}} 21845& 21846\sphinxAtStartPar 21847\sphinxcode{\sphinxupquote{0x001a}} 21848\\ 21849\hline 21850\end{tabulary} 21851\par 21852\sphinxattableend\end{savenotes} 21853 21854 21855\subsubsection{ENCTYPE\_DES3\_CBC\_ENV} 21856\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}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV::doc}}\index{ENCTYPE\_DES3\_CBC\_ENV (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES3\_CBC\_ENV}\spxextra{built\sphinxhyphen{}in variable}} 21857 21858\begin{fulllineitems} 21859\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_ENV:ENCTYPE_DES3_CBC_ENV}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_ENV}}} 21860\end{fulllineitems} 21861 21862 21863\sphinxAtStartPar 21864DES\sphinxhyphen{}3 cbc mode, CMS enveloped data. 21865 21866 21867\begin{savenotes}\sphinxattablestart 21868\centering 21869\begin{tabulary}{\linewidth}[t]{|T|T|} 21870\hline 21871 21872\sphinxAtStartPar 21873\sphinxcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_ENV}} 21874& 21875\sphinxAtStartPar 21876\sphinxcode{\sphinxupquote{0x000f}} 21877\\ 21878\hline 21879\end{tabulary} 21880\par 21881\sphinxattableend\end{savenotes} 21882 21883 21884\subsubsection{ENCTYPE\_DES3\_CBC\_RAW} 21885\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:enctype-des3-cbc-raw}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:enctype-des3-cbc-raw-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW::doc}}\index{ENCTYPE\_DES3\_CBC\_RAW (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES3\_CBC\_RAW}\spxextra{built\sphinxhyphen{}in variable}} 21886 21887\begin{fulllineitems} 21888\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_RAW:ENCTYPE_DES3_CBC_RAW}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_RAW}}} 21889\end{fulllineitems} 21890 21891 21892 21893\begin{savenotes}\sphinxattablestart 21894\centering 21895\begin{tabulary}{\linewidth}[t]{|T|T|} 21896\hline 21897 21898\sphinxAtStartPar 21899\sphinxcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_RAW}} 21900& 21901\sphinxAtStartPar 21902\sphinxcode{\sphinxupquote{0x0006}} 21903\\ 21904\hline 21905\end{tabulary} 21906\par 21907\sphinxattableend\end{savenotes} 21908 21909 21910\subsubsection{ENCTYPE\_DES3\_CBC\_SHA} 21911\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:enctype-des3-cbc-sha}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:enctype-des3-cbc-sha-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA::doc}}\index{ENCTYPE\_DES3\_CBC\_SHA (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES3\_CBC\_SHA}\spxextra{built\sphinxhyphen{}in variable}} 21912 21913\begin{fulllineitems} 21914\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA:ENCTYPE_DES3_CBC_SHA}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_SHA}}} 21915\end{fulllineitems} 21916 21917 21918 21919\begin{savenotes}\sphinxattablestart 21920\centering 21921\begin{tabulary}{\linewidth}[t]{|T|T|} 21922\hline 21923 21924\sphinxAtStartPar 21925\sphinxcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_SHA}} 21926& 21927\sphinxAtStartPar 21928\sphinxcode{\sphinxupquote{0x0005}} 21929\\ 21930\hline 21931\end{tabulary} 21932\par 21933\sphinxattableend\end{savenotes} 21934 21935 21936\subsubsection{ENCTYPE\_DES3\_CBC\_SHA1} 21937\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}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1::doc}}\index{ENCTYPE\_DES3\_CBC\_SHA1 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES3\_CBC\_SHA1}\spxextra{built\sphinxhyphen{}in variable}} 21938 21939\begin{fulllineitems} 21940\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES3_CBC_SHA1:ENCTYPE_DES3_CBC_SHA1}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_SHA1}}} 21941\end{fulllineitems} 21942 21943 21944 21945\begin{savenotes}\sphinxattablestart 21946\centering 21947\begin{tabulary}{\linewidth}[t]{|T|T|} 21948\hline 21949 21950\sphinxAtStartPar 21951\sphinxcode{\sphinxupquote{ENCTYPE\_DES3\_CBC\_SHA1}} 21952& 21953\sphinxAtStartPar 21954\sphinxcode{\sphinxupquote{0x0010}} 21955\\ 21956\hline 21957\end{tabulary} 21958\par 21959\sphinxattableend\end{savenotes} 21960 21961 21962\subsubsection{ENCTYPE\_DES\_CBC\_CRC} 21963\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:enctype-des-cbc-crc}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:enctype-des-cbc-crc-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC::doc}}\index{ENCTYPE\_DES\_CBC\_CRC (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES\_CBC\_CRC}\spxextra{built\sphinxhyphen{}in variable}} 21964 21965\begin{fulllineitems} 21966\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_CRC:ENCTYPE_DES_CBC_CRC}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_CRC}}} 21967\end{fulllineitems} 21968 21969 21970 21971\begin{savenotes}\sphinxattablestart 21972\centering 21973\begin{tabulary}{\linewidth}[t]{|T|T|} 21974\hline 21975 21976\sphinxAtStartPar 21977\sphinxcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_CRC}} 21978& 21979\sphinxAtStartPar 21980\sphinxcode{\sphinxupquote{0x0001}} 21981\\ 21982\hline 21983\end{tabulary} 21984\par 21985\sphinxattableend\end{savenotes} 21986 21987 21988\subsubsection{ENCTYPE\_DES\_CBC\_MD4} 21989\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:enctype-des-cbc-md4}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:enctype-des-cbc-md4-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4::doc}}\index{ENCTYPE\_DES\_CBC\_MD4 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES\_CBC\_MD4}\spxextra{built\sphinxhyphen{}in variable}} 21990 21991\begin{fulllineitems} 21992\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD4:ENCTYPE_DES_CBC_MD4}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_MD4}}} 21993\end{fulllineitems} 21994 21995 21996 21997\begin{savenotes}\sphinxattablestart 21998\centering 21999\begin{tabulary}{\linewidth}[t]{|T|T|} 22000\hline 22001 22002\sphinxAtStartPar 22003\sphinxcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_MD4}} 22004& 22005\sphinxAtStartPar 22006\sphinxcode{\sphinxupquote{0x0002}} 22007\\ 22008\hline 22009\end{tabulary} 22010\par 22011\sphinxattableend\end{savenotes} 22012 22013 22014\subsubsection{ENCTYPE\_DES\_CBC\_MD5} 22015\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:enctype-des-cbc-md5}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:enctype-des-cbc-md5-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5::doc}}\index{ENCTYPE\_DES\_CBC\_MD5 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES\_CBC\_MD5}\spxextra{built\sphinxhyphen{}in variable}} 22016 22017\begin{fulllineitems} 22018\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_MD5:ENCTYPE_DES_CBC_MD5}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_MD5}}} 22019\end{fulllineitems} 22020 22021 22022 22023\begin{savenotes}\sphinxattablestart 22024\centering 22025\begin{tabulary}{\linewidth}[t]{|T|T|} 22026\hline 22027 22028\sphinxAtStartPar 22029\sphinxcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_MD5}} 22030& 22031\sphinxAtStartPar 22032\sphinxcode{\sphinxupquote{0x0003}} 22033\\ 22034\hline 22035\end{tabulary} 22036\par 22037\sphinxattableend\end{savenotes} 22038 22039 22040\subsubsection{ENCTYPE\_DES\_CBC\_RAW} 22041\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:enctype-des-cbc-raw}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:enctype-des-cbc-raw-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW::doc}}\index{ENCTYPE\_DES\_CBC\_RAW (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES\_CBC\_RAW}\spxextra{built\sphinxhyphen{}in variable}} 22042 22043\begin{fulllineitems} 22044\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_CBC_RAW:ENCTYPE_DES_CBC_RAW}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_RAW}}} 22045\end{fulllineitems} 22046 22047 22048 22049\begin{savenotes}\sphinxattablestart 22050\centering 22051\begin{tabulary}{\linewidth}[t]{|T|T|} 22052\hline 22053 22054\sphinxAtStartPar 22055\sphinxcode{\sphinxupquote{ENCTYPE\_DES\_CBC\_RAW}} 22056& 22057\sphinxAtStartPar 22058\sphinxcode{\sphinxupquote{0x0004}} 22059\\ 22060\hline 22061\end{tabulary} 22062\par 22063\sphinxattableend\end{savenotes} 22064 22065 22066\subsubsection{ENCTYPE\_DES\_HMAC\_SHA1} 22067\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:enctype-des-hmac-sha1}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:enctype-des-hmac-sha1-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1::doc}}\index{ENCTYPE\_DES\_HMAC\_SHA1 (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DES\_HMAC\_SHA1}\spxextra{built\sphinxhyphen{}in variable}} 22068 22069\begin{fulllineitems} 22070\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DES_HMAC_SHA1:ENCTYPE_DES_HMAC_SHA1}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DES\_HMAC\_SHA1}}} 22071\end{fulllineitems} 22072 22073 22074 22075\begin{savenotes}\sphinxattablestart 22076\centering 22077\begin{tabulary}{\linewidth}[t]{|T|T|} 22078\hline 22079 22080\sphinxAtStartPar 22081\sphinxcode{\sphinxupquote{ENCTYPE\_DES\_HMAC\_SHA1}} 22082& 22083\sphinxAtStartPar 22084\sphinxcode{\sphinxupquote{0x0008}} 22085\\ 22086\hline 22087\end{tabulary} 22088\par 22089\sphinxattableend\end{savenotes} 22090 22091 22092\subsubsection{ENCTYPE\_DSA\_SHA1\_CMS} 22093\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:enctype-dsa-sha1-cms}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:enctype-dsa-sha1-cms-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS::doc}}\index{ENCTYPE\_DSA\_SHA1\_CMS (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_DSA\_SHA1\_CMS}\spxextra{built\sphinxhyphen{}in variable}} 22094 22095\begin{fulllineitems} 22096\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_DSA_SHA1_CMS:ENCTYPE_DSA_SHA1_CMS}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_DSA\_SHA1\_CMS}}} 22097\end{fulllineitems} 22098 22099 22100\sphinxAtStartPar 22101DSA with SHA1, CMS signature. 22102 22103 22104\begin{savenotes}\sphinxattablestart 22105\centering 22106\begin{tabulary}{\linewidth}[t]{|T|T|} 22107\hline 22108 22109\sphinxAtStartPar 22110\sphinxcode{\sphinxupquote{ENCTYPE\_DSA\_SHA1\_CMS}} 22111& 22112\sphinxAtStartPar 22113\sphinxcode{\sphinxupquote{0x0009}} 22114\\ 22115\hline 22116\end{tabulary} 22117\par 22118\sphinxattableend\end{savenotes} 22119 22120 22121\subsubsection{ENCTYPE\_MD5\_RSA\_CMS} 22122\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\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_MD5\_RSA\_CMS}\spxextra{built\sphinxhyphen{}in variable}} 22123 22124\begin{fulllineitems} 22125\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_MD5_RSA_CMS:ENCTYPE_MD5_RSA_CMS}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_MD5\_RSA\_CMS}}} 22126\end{fulllineitems} 22127 22128 22129\sphinxAtStartPar 22130MD5 with RSA, CMS signature. 22131 22132 22133\begin{savenotes}\sphinxattablestart 22134\centering 22135\begin{tabulary}{\linewidth}[t]{|T|T|} 22136\hline 22137 22138\sphinxAtStartPar 22139\sphinxcode{\sphinxupquote{ENCTYPE\_MD5\_RSA\_CMS}} 22140& 22141\sphinxAtStartPar 22142\sphinxcode{\sphinxupquote{0x000a}} 22143\\ 22144\hline 22145\end{tabulary} 22146\par 22147\sphinxattableend\end{savenotes} 22148 22149 22150\subsubsection{ENCTYPE\_NULL} 22151\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL:enctype-null}}\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL:enctype-null-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL::doc}}\index{ENCTYPE\_NULL (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_NULL}\spxextra{built\sphinxhyphen{}in variable}} 22152 22153\begin{fulllineitems} 22154\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_NULL:ENCTYPE_NULL}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_NULL}}} 22155\end{fulllineitems} 22156 22157 22158 22159\begin{savenotes}\sphinxattablestart 22160\centering 22161\begin{tabulary}{\linewidth}[t]{|T|T|} 22162\hline 22163 22164\sphinxAtStartPar 22165\sphinxcode{\sphinxupquote{ENCTYPE\_NULL}} 22166& 22167\sphinxAtStartPar 22168\sphinxcode{\sphinxupquote{0x0000}} 22169\\ 22170\hline 22171\end{tabulary} 22172\par 22173\sphinxattableend\end{savenotes} 22174 22175 22176\subsubsection{ENCTYPE\_RC2\_CBC\_ENV} 22177\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:enctype-rc2-cbc-env}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:enctype-rc2-cbc-env-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV::doc}}\index{ENCTYPE\_RC2\_CBC\_ENV (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_RC2\_CBC\_ENV}\spxextra{built\sphinxhyphen{}in variable}} 22178 22179\begin{fulllineitems} 22180\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_RC2_CBC_ENV:ENCTYPE_RC2_CBC_ENV}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_RC2\_CBC\_ENV}}} 22181\end{fulllineitems} 22182 22183 22184\sphinxAtStartPar 22185RC2 cbc mode, CMS enveloped data. 22186 22187 22188\begin{savenotes}\sphinxattablestart 22189\centering 22190\begin{tabulary}{\linewidth}[t]{|T|T|} 22191\hline 22192 22193\sphinxAtStartPar 22194\sphinxcode{\sphinxupquote{ENCTYPE\_RC2\_CBC\_ENV}} 22195& 22196\sphinxAtStartPar 22197\sphinxcode{\sphinxupquote{0x000c}} 22198\\ 22199\hline 22200\end{tabulary} 22201\par 22202\sphinxattableend\end{savenotes} 22203 22204 22205\subsubsection{ENCTYPE\_RSA\_ENV} 22206\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV:enctype-rsa-env}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV:enctype-rsa-env-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV::doc}}\index{ENCTYPE\_RSA\_ENV (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_RSA\_ENV}\spxextra{built\sphinxhyphen{}in variable}} 22207 22208\begin{fulllineitems} 22209\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ENV:ENCTYPE_RSA_ENV}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_RSA\_ENV}}} 22210\end{fulllineitems} 22211 22212 22213\sphinxAtStartPar 22214RSA encryption, CMS enveloped data. 22215 22216 22217\begin{savenotes}\sphinxattablestart 22218\centering 22219\begin{tabulary}{\linewidth}[t]{|T|T|} 22220\hline 22221 22222\sphinxAtStartPar 22223\sphinxcode{\sphinxupquote{ENCTYPE\_RSA\_ENV}} 22224& 22225\sphinxAtStartPar 22226\sphinxcode{\sphinxupquote{0x000d}} 22227\\ 22228\hline 22229\end{tabulary} 22230\par 22231\sphinxattableend\end{savenotes} 22232 22233 22234\subsubsection{ENCTYPE\_RSA\_ES\_OAEP\_ENV} 22235\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}}\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV::doc}}\index{ENCTYPE\_RSA\_ES\_OAEP\_ENV (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_RSA\_ES\_OAEP\_ENV}\spxextra{built\sphinxhyphen{}in variable}} 22236 22237\begin{fulllineitems} 22238\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_RSA_ES_OAEP_ENV:ENCTYPE_RSA_ES_OAEP_ENV}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_RSA\_ES\_OAEP\_ENV}}} 22239\end{fulllineitems} 22240 22241 22242\sphinxAtStartPar 22243RSA w/OEAP encryption, CMS enveloped data. 22244 22245 22246\begin{savenotes}\sphinxattablestart 22247\centering 22248\begin{tabulary}{\linewidth}[t]{|T|T|} 22249\hline 22250 22251\sphinxAtStartPar 22252\sphinxcode{\sphinxupquote{ENCTYPE\_RSA\_ES\_OAEP\_ENV}} 22253& 22254\sphinxAtStartPar 22255\sphinxcode{\sphinxupquote{0x000e}} 22256\\ 22257\hline 22258\end{tabulary} 22259\par 22260\sphinxattableend\end{savenotes} 22261 22262 22263\subsubsection{ENCTYPE\_SHA1\_RSA\_CMS} 22264\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:enctype-sha1-rsa-cms}}\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:enctype-sha1-rsa-cms-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS::doc}}\index{ENCTYPE\_SHA1\_RSA\_CMS (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_SHA1\_RSA\_CMS}\spxextra{built\sphinxhyphen{}in variable}} 22265 22266\begin{fulllineitems} 22267\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_SHA1_RSA_CMS:ENCTYPE_SHA1_RSA_CMS}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_SHA1\_RSA\_CMS}}} 22268\end{fulllineitems} 22269 22270 22271\sphinxAtStartPar 22272SHA1 with RSA, CMS signature. 22273 22274 22275\begin{savenotes}\sphinxattablestart 22276\centering 22277\begin{tabulary}{\linewidth}[t]{|T|T|} 22278\hline 22279 22280\sphinxAtStartPar 22281\sphinxcode{\sphinxupquote{ENCTYPE\_SHA1\_RSA\_CMS}} 22282& 22283\sphinxAtStartPar 22284\sphinxcode{\sphinxupquote{0x000b}} 22285\\ 22286\hline 22287\end{tabulary} 22288\par 22289\sphinxattableend\end{savenotes} 22290 22291 22292\subsubsection{ENCTYPE\_UNKNOWN} 22293\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN:enctype-unknown}}\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN:enctype-unknown-data}}\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN::doc}}\index{ENCTYPE\_UNKNOWN (built\sphinxhyphen{}in variable)@\spxentry{ENCTYPE\_UNKNOWN}\spxextra{built\sphinxhyphen{}in variable}} 22294 22295\begin{fulllineitems} 22296\phantomsection\label{\detokenize{appdev/refs/macros/ENCTYPE_UNKNOWN:ENCTYPE_UNKNOWN}}\pysigline{\sphinxbfcode{\sphinxupquote{ENCTYPE\_UNKNOWN}}} 22297\end{fulllineitems} 22298 22299 22300 22301\begin{savenotes}\sphinxattablestart 22302\centering 22303\begin{tabulary}{\linewidth}[t]{|T|T|} 22304\hline 22305 22306\sphinxAtStartPar 22307\sphinxcode{\sphinxupquote{ENCTYPE\_UNKNOWN}} 22308& 22309\sphinxAtStartPar 22310\sphinxcode{\sphinxupquote{0x01ff}} 22311\\ 22312\hline 22313\end{tabulary} 22314\par 22315\sphinxattableend\end{savenotes} 22316 22317 22318\subsubsection{KDC\_OPT\_ALLOW\_POSTDATE} 22319\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\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_ALLOW\_POSTDATE}\spxextra{built\sphinxhyphen{}in variable}} 22320 22321\begin{fulllineitems} 22322\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_ALLOW_POSTDATE:KDC_OPT_ALLOW_POSTDATE}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_ALLOW\_POSTDATE}}} 22323\end{fulllineitems} 22324 22325 22326 22327\begin{savenotes}\sphinxattablestart 22328\centering 22329\begin{tabulary}{\linewidth}[t]{|T|T|} 22330\hline 22331 22332\sphinxAtStartPar 22333\sphinxcode{\sphinxupquote{KDC\_OPT\_ALLOW\_POSTDATE}} 22334& 22335\sphinxAtStartPar 22336\sphinxcode{\sphinxupquote{0x04000000}} 22337\\ 22338\hline 22339\end{tabulary} 22340\par 22341\sphinxattableend\end{savenotes} 22342 22343 22344\subsubsection{KDC\_OPT\_CANONICALIZE} 22345\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\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_CANONICALIZE}\spxextra{built\sphinxhyphen{}in variable}} 22346 22347\begin{fulllineitems} 22348\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_CANONICALIZE:KDC_OPT_CANONICALIZE}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_CANONICALIZE}}} 22349\end{fulllineitems} 22350 22351 22352 22353\begin{savenotes}\sphinxattablestart 22354\centering 22355\begin{tabulary}{\linewidth}[t]{|T|T|} 22356\hline 22357 22358\sphinxAtStartPar 22359\sphinxcode{\sphinxupquote{KDC\_OPT\_CANONICALIZE}} 22360& 22361\sphinxAtStartPar 22362\sphinxcode{\sphinxupquote{0x00010000}} 22363\\ 22364\hline 22365\end{tabulary} 22366\par 22367\sphinxattableend\end{savenotes} 22368 22369 22370\subsubsection{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT} 22371\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:kdc-opt-cname-in-addl-tkt-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT::doc}}\index{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}\spxextra{built\sphinxhyphen{}in variable}} 22372 22373\begin{fulllineitems} 22374\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_CNAME_IN_ADDL_TKT:KDC_OPT_CNAME_IN_ADDL_TKT}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}}} 22375\end{fulllineitems} 22376 22377 22378 22379\begin{savenotes}\sphinxattablestart 22380\centering 22381\begin{tabulary}{\linewidth}[t]{|T|T|} 22382\hline 22383 22384\sphinxAtStartPar 22385\sphinxcode{\sphinxupquote{KDC\_OPT\_CNAME\_IN\_ADDL\_TKT}} 22386& 22387\sphinxAtStartPar 22388\sphinxcode{\sphinxupquote{0x00020000}} 22389\\ 22390\hline 22391\end{tabulary} 22392\par 22393\sphinxattableend\end{savenotes} 22394 22395 22396\subsubsection{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK} 22397\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:kdc-opt-disable-transited-check-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK::doc}}\index{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}\spxextra{built\sphinxhyphen{}in variable}} 22398 22399\begin{fulllineitems} 22400\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_DISABLE_TRANSITED_CHECK:KDC_OPT_DISABLE_TRANSITED_CHECK}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}}} 22401\end{fulllineitems} 22402 22403 22404 22405\begin{savenotes}\sphinxattablestart 22406\centering 22407\begin{tabulary}{\linewidth}[t]{|T|T|} 22408\hline 22409 22410\sphinxAtStartPar 22411\sphinxcode{\sphinxupquote{KDC\_OPT\_DISABLE\_TRANSITED\_CHECK}} 22412& 22413\sphinxAtStartPar 22414\sphinxcode{\sphinxupquote{0x00000020}} 22415\\ 22416\hline 22417\end{tabulary} 22418\par 22419\sphinxattableend\end{savenotes} 22420 22421 22422\subsubsection{KDC\_OPT\_ENC\_TKT\_IN\_SKEY} 22423\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:kdc-opt-enc-tkt-in-skey-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY::doc}}\index{KDC\_OPT\_ENC\_TKT\_IN\_SKEY (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}\spxextra{built\sphinxhyphen{}in variable}} 22424 22425\begin{fulllineitems} 22426\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_ENC_TKT_IN_SKEY:KDC_OPT_ENC_TKT_IN_SKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}}} 22427\end{fulllineitems} 22428 22429 22430 22431\begin{savenotes}\sphinxattablestart 22432\centering 22433\begin{tabulary}{\linewidth}[t]{|T|T|} 22434\hline 22435 22436\sphinxAtStartPar 22437\sphinxcode{\sphinxupquote{KDC\_OPT\_ENC\_TKT\_IN\_SKEY}} 22438& 22439\sphinxAtStartPar 22440\sphinxcode{\sphinxupquote{0x00000008}} 22441\\ 22442\hline 22443\end{tabulary} 22444\par 22445\sphinxattableend\end{savenotes} 22446 22447 22448\subsubsection{KDC\_OPT\_FORWARDABLE} 22449\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE:kdc-opt-forwardable}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE:kdc-opt-forwardable-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE::doc}}\index{KDC\_OPT\_FORWARDABLE (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_FORWARDABLE}\spxextra{built\sphinxhyphen{}in variable}} 22450 22451\begin{fulllineitems} 22452\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDABLE:KDC_OPT_FORWARDABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_FORWARDABLE}}} 22453\end{fulllineitems} 22454 22455 22456 22457\begin{savenotes}\sphinxattablestart 22458\centering 22459\begin{tabulary}{\linewidth}[t]{|T|T|} 22460\hline 22461 22462\sphinxAtStartPar 22463\sphinxcode{\sphinxupquote{KDC\_OPT\_FORWARDABLE}} 22464& 22465\sphinxAtStartPar 22466\sphinxcode{\sphinxupquote{0x40000000}} 22467\\ 22468\hline 22469\end{tabulary} 22470\par 22471\sphinxattableend\end{savenotes} 22472 22473 22474\subsubsection{KDC\_OPT\_FORWARDED} 22475\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED:kdc-opt-forwarded}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED:kdc-opt-forwarded-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED::doc}}\index{KDC\_OPT\_FORWARDED (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_FORWARDED}\spxextra{built\sphinxhyphen{}in variable}} 22476 22477\begin{fulllineitems} 22478\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_FORWARDED:KDC_OPT_FORWARDED}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_FORWARDED}}} 22479\end{fulllineitems} 22480 22481 22482 22483\begin{savenotes}\sphinxattablestart 22484\centering 22485\begin{tabulary}{\linewidth}[t]{|T|T|} 22486\hline 22487 22488\sphinxAtStartPar 22489\sphinxcode{\sphinxupquote{KDC\_OPT\_FORWARDED}} 22490& 22491\sphinxAtStartPar 22492\sphinxcode{\sphinxupquote{0x20000000}} 22493\\ 22494\hline 22495\end{tabulary} 22496\par 22497\sphinxattableend\end{savenotes} 22498 22499 22500\subsubsection{KDC\_OPT\_POSTDATED} 22501\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED:kdc-opt-postdated}}\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED:kdc-opt-postdated-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED::doc}}\index{KDC\_OPT\_POSTDATED (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_POSTDATED}\spxextra{built\sphinxhyphen{}in variable}} 22502 22503\begin{fulllineitems} 22504\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_POSTDATED:KDC_OPT_POSTDATED}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_POSTDATED}}} 22505\end{fulllineitems} 22506 22507 22508 22509\begin{savenotes}\sphinxattablestart 22510\centering 22511\begin{tabulary}{\linewidth}[t]{|T|T|} 22512\hline 22513 22514\sphinxAtStartPar 22515\sphinxcode{\sphinxupquote{KDC\_OPT\_POSTDATED}} 22516& 22517\sphinxAtStartPar 22518\sphinxcode{\sphinxupquote{0x02000000}} 22519\\ 22520\hline 22521\end{tabulary} 22522\par 22523\sphinxattableend\end{savenotes} 22524 22525 22526\subsubsection{KDC\_OPT\_PROXIABLE} 22527\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE:kdc-opt-proxiable}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE:kdc-opt-proxiable-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE::doc}}\index{KDC\_OPT\_PROXIABLE (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_PROXIABLE}\spxextra{built\sphinxhyphen{}in variable}} 22528 22529\begin{fulllineitems} 22530\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXIABLE:KDC_OPT_PROXIABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_PROXIABLE}}} 22531\end{fulllineitems} 22532 22533 22534 22535\begin{savenotes}\sphinxattablestart 22536\centering 22537\begin{tabulary}{\linewidth}[t]{|T|T|} 22538\hline 22539 22540\sphinxAtStartPar 22541\sphinxcode{\sphinxupquote{KDC\_OPT\_PROXIABLE}} 22542& 22543\sphinxAtStartPar 22544\sphinxcode{\sphinxupquote{0x10000000}} 22545\\ 22546\hline 22547\end{tabulary} 22548\par 22549\sphinxattableend\end{savenotes} 22550 22551 22552\subsubsection{KDC\_OPT\_PROXY} 22553\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY:kdc-opt-proxy}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY:kdc-opt-proxy-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY::doc}}\index{KDC\_OPT\_PROXY (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_PROXY}\spxextra{built\sphinxhyphen{}in variable}} 22554 22555\begin{fulllineitems} 22556\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_PROXY:KDC_OPT_PROXY}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_PROXY}}} 22557\end{fulllineitems} 22558 22559 22560 22561\begin{savenotes}\sphinxattablestart 22562\centering 22563\begin{tabulary}{\linewidth}[t]{|T|T|} 22564\hline 22565 22566\sphinxAtStartPar 22567\sphinxcode{\sphinxupquote{KDC\_OPT\_PROXY}} 22568& 22569\sphinxAtStartPar 22570\sphinxcode{\sphinxupquote{0x08000000}} 22571\\ 22572\hline 22573\end{tabulary} 22574\par 22575\sphinxattableend\end{savenotes} 22576 22577 22578\subsubsection{KDC\_OPT\_RENEW} 22579\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW:kdc-opt-renew}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW:kdc-opt-renew-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW::doc}}\index{KDC\_OPT\_RENEW (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_RENEW}\spxextra{built\sphinxhyphen{}in variable}} 22580 22581\begin{fulllineitems} 22582\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEW:KDC_OPT_RENEW}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_RENEW}}} 22583\end{fulllineitems} 22584 22585 22586 22587\begin{savenotes}\sphinxattablestart 22588\centering 22589\begin{tabulary}{\linewidth}[t]{|T|T|} 22590\hline 22591 22592\sphinxAtStartPar 22593\sphinxcode{\sphinxupquote{KDC\_OPT\_RENEW}} 22594& 22595\sphinxAtStartPar 22596\sphinxcode{\sphinxupquote{0x00000002}} 22597\\ 22598\hline 22599\end{tabulary} 22600\par 22601\sphinxattableend\end{savenotes} 22602 22603 22604\subsubsection{KDC\_OPT\_RENEWABLE} 22605\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\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_RENEWABLE}\spxextra{built\sphinxhyphen{}in variable}} 22606 22607\begin{fulllineitems} 22608\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE:KDC_OPT_RENEWABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_RENEWABLE}}} 22609\end{fulllineitems} 22610 22611 22612 22613\begin{savenotes}\sphinxattablestart 22614\centering 22615\begin{tabulary}{\linewidth}[t]{|T|T|} 22616\hline 22617 22618\sphinxAtStartPar 22619\sphinxcode{\sphinxupquote{KDC\_OPT\_RENEWABLE}} 22620& 22621\sphinxAtStartPar 22622\sphinxcode{\sphinxupquote{0x00800000}} 22623\\ 22624\hline 22625\end{tabulary} 22626\par 22627\sphinxattableend\end{savenotes} 22628 22629 22630\subsubsection{KDC\_OPT\_RENEWABLE\_OK} 22631\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:kdc-opt-renewable-ok}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:kdc-opt-renewable-ok-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK::doc}}\index{KDC\_OPT\_RENEWABLE\_OK (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_RENEWABLE\_OK}\spxextra{built\sphinxhyphen{}in variable}} 22632 22633\begin{fulllineitems} 22634\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_RENEWABLE_OK:KDC_OPT_RENEWABLE_OK}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_RENEWABLE\_OK}}} 22635\end{fulllineitems} 22636 22637 22638 22639\begin{savenotes}\sphinxattablestart 22640\centering 22641\begin{tabulary}{\linewidth}[t]{|T|T|} 22642\hline 22643 22644\sphinxAtStartPar 22645\sphinxcode{\sphinxupquote{KDC\_OPT\_RENEWABLE\_OK}} 22646& 22647\sphinxAtStartPar 22648\sphinxcode{\sphinxupquote{0x00000010}} 22649\\ 22650\hline 22651\end{tabulary} 22652\par 22653\sphinxattableend\end{savenotes} 22654 22655 22656\subsubsection{KDC\_OPT\_REQUEST\_ANONYMOUS} 22657\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\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_REQUEST\_ANONYMOUS}\spxextra{built\sphinxhyphen{}in variable}} 22658 22659\begin{fulllineitems} 22660\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_REQUEST_ANONYMOUS:KDC_OPT_REQUEST_ANONYMOUS}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_REQUEST\_ANONYMOUS}}} 22661\end{fulllineitems} 22662 22663 22664 22665\begin{savenotes}\sphinxattablestart 22666\centering 22667\begin{tabulary}{\linewidth}[t]{|T|T|} 22668\hline 22669 22670\sphinxAtStartPar 22671\sphinxcode{\sphinxupquote{KDC\_OPT\_REQUEST\_ANONYMOUS}} 22672& 22673\sphinxAtStartPar 22674\sphinxcode{\sphinxupquote{0x00008000}} 22675\\ 22676\hline 22677\end{tabulary} 22678\par 22679\sphinxattableend\end{savenotes} 22680 22681 22682\subsubsection{KDC\_OPT\_VALIDATE} 22683\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE:kdc-opt-validate}}\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE:kdc-opt-validate-data}}\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE::doc}}\index{KDC\_OPT\_VALIDATE (built\sphinxhyphen{}in variable)@\spxentry{KDC\_OPT\_VALIDATE}\spxextra{built\sphinxhyphen{}in variable}} 22684 22685\begin{fulllineitems} 22686\phantomsection\label{\detokenize{appdev/refs/macros/KDC_OPT_VALIDATE:KDC_OPT_VALIDATE}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_OPT\_VALIDATE}}} 22687\end{fulllineitems} 22688 22689 22690 22691\begin{savenotes}\sphinxattablestart 22692\centering 22693\begin{tabulary}{\linewidth}[t]{|T|T|} 22694\hline 22695 22696\sphinxAtStartPar 22697\sphinxcode{\sphinxupquote{KDC\_OPT\_VALIDATE}} 22698& 22699\sphinxAtStartPar 22700\sphinxcode{\sphinxupquote{0x00000001}} 22701\\ 22702\hline 22703\end{tabulary} 22704\par 22705\sphinxattableend\end{savenotes} 22706 22707 22708\subsubsection{KDC\_TKT\_COMMON\_MASK} 22709\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK:kdc-tkt-common-mask}}\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK:kdc-tkt-common-mask-data}}\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK::doc}}\index{KDC\_TKT\_COMMON\_MASK (built\sphinxhyphen{}in variable)@\spxentry{KDC\_TKT\_COMMON\_MASK}\spxextra{built\sphinxhyphen{}in variable}} 22710 22711\begin{fulllineitems} 22712\phantomsection\label{\detokenize{appdev/refs/macros/KDC_TKT_COMMON_MASK:KDC_TKT_COMMON_MASK}}\pysigline{\sphinxbfcode{\sphinxupquote{KDC\_TKT\_COMMON\_MASK}}} 22713\end{fulllineitems} 22714 22715 22716 22717\begin{savenotes}\sphinxattablestart 22718\centering 22719\begin{tabulary}{\linewidth}[t]{|T|T|} 22720\hline 22721 22722\sphinxAtStartPar 22723\sphinxcode{\sphinxupquote{KDC\_TKT\_COMMON\_MASK}} 22724& 22725\sphinxAtStartPar 22726\sphinxcode{\sphinxupquote{0x54800000}} 22727\\ 22728\hline 22729\end{tabulary} 22730\par 22731\sphinxattableend\end{savenotes} 22732 22733 22734\subsubsection{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE} 22735\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}\spxextra{built\sphinxhyphen{}in variable}} 22736 22737\begin{fulllineitems} 22738\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE:KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}}} 22739\end{fulllineitems} 22740 22741 22742\sphinxAtStartPar 22743alternate authentication types 22744 22745 22746\begin{savenotes}\sphinxattablestart 22747\centering 22748\begin{tabulary}{\linewidth}[t]{|T|T|} 22749\hline 22750 22751\sphinxAtStartPar 22752\sphinxcode{\sphinxupquote{KRB5\_ALTAUTH\_ATT\_CHALLENGE\_RESPONSE}} 22753& 22754\sphinxAtStartPar 22755\sphinxcode{\sphinxupquote{64}} 22756\\ 22757\hline 22758\end{tabulary} 22759\par 22760\sphinxattableend\end{savenotes} 22761 22762 22763\subsubsection{KRB5\_ANONYMOUS\_PRINCSTR} 22764\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_ANONYMOUS\_PRINCSTR}\spxextra{built\sphinxhyphen{}in variable}} 22765 22766\begin{fulllineitems} 22767\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_PRINCSTR:KRB5_ANONYMOUS_PRINCSTR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_ANONYMOUS\_PRINCSTR}}} 22768\end{fulllineitems} 22769 22770 22771\sphinxAtStartPar 22772Anonymous principal name. 22773 22774 22775\begin{savenotes}\sphinxattablestart 22776\centering 22777\begin{tabulary}{\linewidth}[t]{|T|T|} 22778\hline 22779 22780\sphinxAtStartPar 22781\sphinxcode{\sphinxupquote{KRB5\_ANONYMOUS\_PRINCSTR}} 22782& 22783\sphinxAtStartPar 22784\sphinxcode{\sphinxupquote{"ANONYMOUS"}} 22785\\ 22786\hline 22787\end{tabulary} 22788\par 22789\sphinxattableend\end{savenotes} 22790 22791 22792\subsubsection{KRB5\_ANONYMOUS\_REALMSTR} 22793\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:krb5-anonymous-realmstr}}\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:krb5-anonymous-realmstr-data}}\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR::doc}}\index{KRB5\_ANONYMOUS\_REALMSTR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_ANONYMOUS\_REALMSTR}\spxextra{built\sphinxhyphen{}in variable}} 22794 22795\begin{fulllineitems} 22796\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ANONYMOUS_REALMSTR:KRB5_ANONYMOUS_REALMSTR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_ANONYMOUS\_REALMSTR}}} 22797\end{fulllineitems} 22798 22799 22800\sphinxAtStartPar 22801Anonymous realm. 22802 22803 22804\begin{savenotes}\sphinxattablestart 22805\centering 22806\begin{tabulary}{\linewidth}[t]{|T|T|} 22807\hline 22808 22809\sphinxAtStartPar 22810\sphinxcode{\sphinxupquote{KRB5\_ANONYMOUS\_REALMSTR}} 22811& 22812\sphinxAtStartPar 22813\sphinxcode{\sphinxupquote{"WELLKNOWN:ANONYMOUS"}} 22814\\ 22815\hline 22816\end{tabulary} 22817\par 22818\sphinxattableend\end{savenotes} 22819 22820 22821\subsubsection{KRB5\_AP\_REP} 22822\label{\detokenize{appdev/refs/macros/KRB5_AP_REP:krb5-ap-rep}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REP:krb5-ap-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REP::doc}}\index{KRB5\_AP\_REP (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AP\_REP}\spxextra{built\sphinxhyphen{}in variable}} 22823 22824\begin{fulllineitems} 22825\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AP_REP:KRB5_AP_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AP\_REP}}} 22826\end{fulllineitems} 22827 22828 22829\sphinxAtStartPar 22830Response to mutual AP request. 22831 22832 22833\begin{savenotes}\sphinxattablestart 22834\centering 22835\begin{tabulary}{\linewidth}[t]{|T|T|} 22836\hline 22837 22838\sphinxAtStartPar 22839\sphinxcode{\sphinxupquote{KRB5\_AP\_REP}} 22840& 22841\sphinxAtStartPar 22842\sphinxcode{\sphinxupquote{((krb5\_msgtype)15)}} 22843\\ 22844\hline 22845\end{tabulary} 22846\par 22847\sphinxattableend\end{savenotes} 22848 22849 22850\subsubsection{KRB5\_AP\_REQ} 22851\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ:krb5-ap-req}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ:krb5-ap-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ::doc}}\index{KRB5\_AP\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AP\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 22852 22853\begin{fulllineitems} 22854\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AP_REQ:KRB5_AP_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AP\_REQ}}} 22855\end{fulllineitems} 22856 22857 22858\sphinxAtStartPar 22859Auth req to application server. 22860 22861 22862\begin{savenotes}\sphinxattablestart 22863\centering 22864\begin{tabulary}{\linewidth}[t]{|T|T|} 22865\hline 22866 22867\sphinxAtStartPar 22868\sphinxcode{\sphinxupquote{KRB5\_AP\_REQ}} 22869& 22870\sphinxAtStartPar 22871\sphinxcode{\sphinxupquote{((krb5\_msgtype)14)}} 22872\\ 22873\hline 22874\end{tabulary} 22875\par 22876\sphinxattableend\end{savenotes} 22877 22878 22879\subsubsection{KRB5\_AS\_REP} 22880\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_AS\_REP}\spxextra{built\sphinxhyphen{}in variable}} 22881 22882\begin{fulllineitems} 22883\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AS_REP:KRB5_AS_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AS\_REP}}} 22884\end{fulllineitems} 22885 22886 22887\sphinxAtStartPar 22888Response to AS request. 22889 22890 22891\begin{savenotes}\sphinxattablestart 22892\centering 22893\begin{tabulary}{\linewidth}[t]{|T|T|} 22894\hline 22895 22896\sphinxAtStartPar 22897\sphinxcode{\sphinxupquote{KRB5\_AS\_REP}} 22898& 22899\sphinxAtStartPar 22900\sphinxcode{\sphinxupquote{((krb5\_msgtype)11)}} 22901\\ 22902\hline 22903\end{tabulary} 22904\par 22905\sphinxattableend\end{savenotes} 22906 22907 22908\subsubsection{KRB5\_AS\_REQ} 22909\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_AS\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 22910 22911\begin{fulllineitems} 22912\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AS_REQ:KRB5_AS_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AS\_REQ}}} 22913\end{fulllineitems} 22914 22915 22916\sphinxAtStartPar 22917Initial authentication request. 22918 22919 22920\begin{savenotes}\sphinxattablestart 22921\centering 22922\begin{tabulary}{\linewidth}[t]{|T|T|} 22923\hline 22924 22925\sphinxAtStartPar 22926\sphinxcode{\sphinxupquote{KRB5\_AS\_REQ}} 22927& 22928\sphinxAtStartPar 22929\sphinxcode{\sphinxupquote{((krb5\_msgtype)10)}} 22930\\ 22931\hline 22932\end{tabulary} 22933\par 22934\sphinxattableend\end{savenotes} 22935 22936 22937\subsubsection{KRB5\_AUTHDATA\_AND\_OR} 22938\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:krb5-authdata-and-or}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:krb5-authdata-and-or-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR::doc}}\index{KRB5\_AUTHDATA\_AND\_OR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_AND\_OR}\spxextra{built\sphinxhyphen{}in variable}} 22939 22940\begin{fulllineitems} 22941\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AND_OR:KRB5_AUTHDATA_AND_OR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_AND\_OR}}} 22942\end{fulllineitems} 22943 22944 22945 22946\begin{savenotes}\sphinxattablestart 22947\centering 22948\begin{tabulary}{\linewidth}[t]{|T|T|} 22949\hline 22950 22951\sphinxAtStartPar 22952\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_AND\_OR}} 22953& 22954\sphinxAtStartPar 22955\sphinxcode{\sphinxupquote{5}} 22956\\ 22957\hline 22958\end{tabulary} 22959\par 22960\sphinxattableend\end{savenotes} 22961 22962 22963\subsubsection{KRB5\_AUTHDATA\_AP\_OPTIONS} 22964\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AP_OPTIONS:krb5-authdata-ap-options}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AP_OPTIONS:krb5-authdata-ap-options-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AP_OPTIONS::doc}}\index{KRB5\_AUTHDATA\_AP\_OPTIONS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_AP\_OPTIONS}\spxextra{built\sphinxhyphen{}in variable}} 22965 22966\begin{fulllineitems} 22967\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AP_OPTIONS:KRB5_AUTHDATA_AP_OPTIONS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_AP\_OPTIONS}}} 22968\end{fulllineitems} 22969 22970 22971 22972\begin{savenotes}\sphinxattablestart 22973\centering 22974\begin{tabulary}{\linewidth}[t]{|T|T|} 22975\hline 22976 22977\sphinxAtStartPar 22978\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_AP\_OPTIONS}} 22979& 22980\sphinxAtStartPar 22981\sphinxcode{\sphinxupquote{143}} 22982\\ 22983\hline 22984\end{tabulary} 22985\par 22986\sphinxattableend\end{savenotes} 22987 22988 22989\subsubsection{KRB5\_AUTHDATA\_AUTH\_INDICATOR} 22990\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR:krb5-authdata-auth-indicator}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR:krb5-authdata-auth-indicator-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR::doc}}\index{KRB5\_AUTHDATA\_AUTH\_INDICATOR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_AUTH\_INDICATOR}\spxextra{built\sphinxhyphen{}in variable}} 22991 22992\begin{fulllineitems} 22993\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_AUTH_INDICATOR:KRB5_AUTHDATA_AUTH_INDICATOR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_AUTH\_INDICATOR}}} 22994\end{fulllineitems} 22995 22996 22997 22998\begin{savenotes}\sphinxattablestart 22999\centering 23000\begin{tabulary}{\linewidth}[t]{|T|T|} 23001\hline 23002 23003\sphinxAtStartPar 23004\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_AUTH\_INDICATOR}} 23005& 23006\sphinxAtStartPar 23007\sphinxcode{\sphinxupquote{97}} 23008\\ 23009\hline 23010\end{tabulary} 23011\par 23012\sphinxattableend\end{savenotes} 23013 23014 23015\subsubsection{KRB5\_AUTHDATA\_CAMMAC} 23016\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC:krb5-authdata-cammac}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC:krb5-authdata-cammac-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC::doc}}\index{KRB5\_AUTHDATA\_CAMMAC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_CAMMAC}\spxextra{built\sphinxhyphen{}in variable}} 23017 23018\begin{fulllineitems} 23019\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_CAMMAC:KRB5_AUTHDATA_CAMMAC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_CAMMAC}}} 23020\end{fulllineitems} 23021 23022 23023 23024\begin{savenotes}\sphinxattablestart 23025\centering 23026\begin{tabulary}{\linewidth}[t]{|T|T|} 23027\hline 23028 23029\sphinxAtStartPar 23030\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_CAMMAC}} 23031& 23032\sphinxAtStartPar 23033\sphinxcode{\sphinxupquote{96}} 23034\\ 23035\hline 23036\end{tabulary} 23037\par 23038\sphinxattableend\end{savenotes} 23039 23040 23041\subsubsection{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION} 23042\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:krb5-authdata-etype-negotiation}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:krb5-authdata-etype-negotiation-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION::doc}}\index{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}\spxextra{built\sphinxhyphen{}in variable}} 23043 23044\begin{fulllineitems} 23045\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_ETYPE_NEGOTIATION:KRB5_AUTHDATA_ETYPE_NEGOTIATION}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}}} 23046\end{fulllineitems} 23047 23048 23049\sphinxAtStartPar 23050RFC 4537. 23051 23052 23053\begin{savenotes}\sphinxattablestart 23054\centering 23055\begin{tabulary}{\linewidth}[t]{|T|T|} 23056\hline 23057 23058\sphinxAtStartPar 23059\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_ETYPE\_NEGOTIATION}} 23060& 23061\sphinxAtStartPar 23062\sphinxcode{\sphinxupquote{129}} 23063\\ 23064\hline 23065\end{tabulary} 23066\par 23067\sphinxattableend\end{savenotes} 23068 23069 23070\subsubsection{KRB5\_AUTHDATA\_FX\_ARMOR} 23071\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}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR::doc}}\index{KRB5\_AUTHDATA\_FX\_ARMOR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_FX\_ARMOR}\spxextra{built\sphinxhyphen{}in variable}} 23072 23073\begin{fulllineitems} 23074\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_FX_ARMOR:KRB5_AUTHDATA_FX_ARMOR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_FX\_ARMOR}}} 23075\end{fulllineitems} 23076 23077 23078 23079\begin{savenotes}\sphinxattablestart 23080\centering 23081\begin{tabulary}{\linewidth}[t]{|T|T|} 23082\hline 23083 23084\sphinxAtStartPar 23085\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_FX\_ARMOR}} 23086& 23087\sphinxAtStartPar 23088\sphinxcode{\sphinxupquote{71}} 23089\\ 23090\hline 23091\end{tabulary} 23092\par 23093\sphinxattableend\end{savenotes} 23094 23095 23096\subsubsection{KRB5\_AUTHDATA\_IF\_RELEVANT} 23097\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:krb5-authdata-if-relevant}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:krb5-authdata-if-relevant-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT::doc}}\index{KRB5\_AUTHDATA\_IF\_RELEVANT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_IF\_RELEVANT}\spxextra{built\sphinxhyphen{}in variable}} 23098 23099\begin{fulllineitems} 23100\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_IF_RELEVANT:KRB5_AUTHDATA_IF_RELEVANT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_IF\_RELEVANT}}} 23101\end{fulllineitems} 23102 23103 23104 23105\begin{savenotes}\sphinxattablestart 23106\centering 23107\begin{tabulary}{\linewidth}[t]{|T|T|} 23108\hline 23109 23110\sphinxAtStartPar 23111\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_IF\_RELEVANT}} 23112& 23113\sphinxAtStartPar 23114\sphinxcode{\sphinxupquote{1}} 23115\\ 23116\hline 23117\end{tabulary} 23118\par 23119\sphinxattableend\end{savenotes} 23120 23121 23122\subsubsection{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS} 23123\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:krb5-authdata-initial-verified-cas-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS::doc}}\index{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}\spxextra{built\sphinxhyphen{}in variable}} 23124 23125\begin{fulllineitems} 23126\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_INITIAL_VERIFIED_CAS:KRB5_AUTHDATA_INITIAL_VERIFIED_CAS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}}} 23127\end{fulllineitems} 23128 23129 23130 23131\begin{savenotes}\sphinxattablestart 23132\centering 23133\begin{tabulary}{\linewidth}[t]{|T|T|} 23134\hline 23135 23136\sphinxAtStartPar 23137\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_INITIAL\_VERIFIED\_CAS}} 23138& 23139\sphinxAtStartPar 23140\sphinxcode{\sphinxupquote{9}} 23141\\ 23142\hline 23143\end{tabulary} 23144\par 23145\sphinxattableend\end{savenotes} 23146 23147 23148\subsubsection{KRB5\_AUTHDATA\_KDC\_ISSUED} 23149\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:krb5-authdata-kdc-issued}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:krb5-authdata-kdc-issued-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED::doc}}\index{KRB5\_AUTHDATA\_KDC\_ISSUED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_KDC\_ISSUED}\spxextra{built\sphinxhyphen{}in variable}} 23150 23151\begin{fulllineitems} 23152\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_KDC_ISSUED:KRB5_AUTHDATA_KDC_ISSUED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_KDC\_ISSUED}}} 23153\end{fulllineitems} 23154 23155 23156 23157\begin{savenotes}\sphinxattablestart 23158\centering 23159\begin{tabulary}{\linewidth}[t]{|T|T|} 23160\hline 23161 23162\sphinxAtStartPar 23163\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_KDC\_ISSUED}} 23164& 23165\sphinxAtStartPar 23166\sphinxcode{\sphinxupquote{4}} 23167\\ 23168\hline 23169\end{tabulary} 23170\par 23171\sphinxattableend\end{savenotes} 23172 23173 23174\subsubsection{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC} 23175\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:krb5-authdata-mandatory-for-kdc-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC::doc}}\index{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}\spxextra{built\sphinxhyphen{}in variable}} 23176 23177\begin{fulllineitems} 23178\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_MANDATORY_FOR_KDC:KRB5_AUTHDATA_MANDATORY_FOR_KDC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}}} 23179\end{fulllineitems} 23180 23181 23182 23183\begin{savenotes}\sphinxattablestart 23184\centering 23185\begin{tabulary}{\linewidth}[t]{|T|T|} 23186\hline 23187 23188\sphinxAtStartPar 23189\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_MANDATORY\_FOR\_KDC}} 23190& 23191\sphinxAtStartPar 23192\sphinxcode{\sphinxupquote{8}} 23193\\ 23194\hline 23195\end{tabulary} 23196\par 23197\sphinxattableend\end{savenotes} 23198 23199 23200\subsubsection{KRB5\_AUTHDATA\_OSF\_DCE} 23201\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:krb5-authdata-osf-dce}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:krb5-authdata-osf-dce-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE::doc}}\index{KRB5\_AUTHDATA\_OSF\_DCE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_OSF\_DCE}\spxextra{built\sphinxhyphen{}in variable}} 23202 23203\begin{fulllineitems} 23204\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_OSF_DCE:KRB5_AUTHDATA_OSF_DCE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_OSF\_DCE}}} 23205\end{fulllineitems} 23206 23207 23208 23209\begin{savenotes}\sphinxattablestart 23210\centering 23211\begin{tabulary}{\linewidth}[t]{|T|T|} 23212\hline 23213 23214\sphinxAtStartPar 23215\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_OSF\_DCE}} 23216& 23217\sphinxAtStartPar 23218\sphinxcode{\sphinxupquote{64}} 23219\\ 23220\hline 23221\end{tabulary} 23222\par 23223\sphinxattableend\end{savenotes} 23224 23225 23226\subsubsection{KRB5\_AUTHDATA\_SESAME} 23227\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME:krb5-authdata-sesame}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME:krb5-authdata-sesame-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME::doc}}\index{KRB5\_AUTHDATA\_SESAME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_SESAME}\spxextra{built\sphinxhyphen{}in variable}} 23228 23229\begin{fulllineitems} 23230\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SESAME:KRB5_AUTHDATA_SESAME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_SESAME}}} 23231\end{fulllineitems} 23232 23233 23234 23235\begin{savenotes}\sphinxattablestart 23236\centering 23237\begin{tabulary}{\linewidth}[t]{|T|T|} 23238\hline 23239 23240\sphinxAtStartPar 23241\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_SESAME}} 23242& 23243\sphinxAtStartPar 23244\sphinxcode{\sphinxupquote{65}} 23245\\ 23246\hline 23247\end{tabulary} 23248\par 23249\sphinxattableend\end{savenotes} 23250 23251 23252\subsubsection{KRB5\_AUTHDATA\_SIGNTICKET} 23253\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:krb5-authdata-signticket}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:krb5-authdata-signticket-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET::doc}}\index{KRB5\_AUTHDATA\_SIGNTICKET (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_SIGNTICKET}\spxextra{built\sphinxhyphen{}in variable}} 23254 23255\begin{fulllineitems} 23256\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_SIGNTICKET:KRB5_AUTHDATA_SIGNTICKET}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_SIGNTICKET}}} 23257\end{fulllineitems} 23258 23259 23260 23261\begin{savenotes}\sphinxattablestart 23262\centering 23263\begin{tabulary}{\linewidth}[t]{|T|T|} 23264\hline 23265 23266\sphinxAtStartPar 23267\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_SIGNTICKET}} 23268& 23269\sphinxAtStartPar 23270\sphinxcode{\sphinxupquote{512}} 23271\\ 23272\hline 23273\end{tabulary} 23274\par 23275\sphinxattableend\end{savenotes} 23276 23277 23278\subsubsection{KRB5\_AUTHDATA\_WIN2K\_PAC} 23279\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:krb5-authdata-win2k-pac}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:krb5-authdata-win2k-pac-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC::doc}}\index{KRB5\_AUTHDATA\_WIN2K\_PAC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTHDATA\_WIN2K\_PAC}\spxextra{built\sphinxhyphen{}in variable}} 23280 23281\begin{fulllineitems} 23282\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTHDATA_WIN2K_PAC:KRB5_AUTHDATA_WIN2K_PAC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTHDATA\_WIN2K\_PAC}}} 23283\end{fulllineitems} 23284 23285 23286 23287\begin{savenotes}\sphinxattablestart 23288\centering 23289\begin{tabulary}{\linewidth}[t]{|T|T|} 23290\hline 23291 23292\sphinxAtStartPar 23293\sphinxcode{\sphinxupquote{KRB5\_AUTHDATA\_WIN2K\_PAC}} 23294& 23295\sphinxAtStartPar 23296\sphinxcode{\sphinxupquote{128}} 23297\\ 23298\hline 23299\end{tabulary} 23300\par 23301\sphinxattableend\end{savenotes} 23302 23303 23304\subsubsection{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE} 23305\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:krb5-auth-context-do-sequence-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE::doc}}\index{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}\spxextra{built\sphinxhyphen{}in variable}} 23306 23307\begin{fulllineitems} 23308\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_SEQUENCE:KRB5_AUTH_CONTEXT_DO_SEQUENCE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}}} 23309\end{fulllineitems} 23310 23311 23312\sphinxAtStartPar 23313Prevent replays with sequence numbers. 23314 23315 23316\begin{savenotes}\sphinxattablestart 23317\centering 23318\begin{tabulary}{\linewidth}[t]{|T|T|} 23319\hline 23320 23321\sphinxAtStartPar 23322\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_DO\_SEQUENCE}} 23323& 23324\sphinxAtStartPar 23325\sphinxcode{\sphinxupquote{0x00000004}} 23326\\ 23327\hline 23328\end{tabulary} 23329\par 23330\sphinxattableend\end{savenotes} 23331 23332 23333\subsubsection{KRB5\_AUTH\_CONTEXT\_DO\_TIME} 23334\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:krb5-auth-context-do-time-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME::doc}}\index{KRB5\_AUTH\_CONTEXT\_DO\_TIME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_DO\_TIME}\spxextra{built\sphinxhyphen{}in variable}} 23335 23336\begin{fulllineitems} 23337\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_DO_TIME:KRB5_AUTH_CONTEXT_DO_TIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_DO\_TIME}}} 23338\end{fulllineitems} 23339 23340 23341\sphinxAtStartPar 23342Prevent replays with timestamps and replay cache. 23343 23344 23345\begin{savenotes}\sphinxattablestart 23346\centering 23347\begin{tabulary}{\linewidth}[t]{|T|T|} 23348\hline 23349 23350\sphinxAtStartPar 23351\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_DO\_TIME}} 23352& 23353\sphinxAtStartPar 23354\sphinxcode{\sphinxupquote{0x00000001}} 23355\\ 23356\hline 23357\end{tabulary} 23358\par 23359\sphinxattableend\end{savenotes} 23360 23361 23362\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR} 23363\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}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR::doc}}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}\spxextra{built\sphinxhyphen{}in variable}} 23364 23365\begin{fulllineitems} 23366\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}}} 23367\end{fulllineitems} 23368 23369 23370\sphinxAtStartPar 23371Generate the local network address. 23372 23373 23374\begin{savenotes}\sphinxattablestart 23375\centering 23376\begin{tabulary}{\linewidth}[t]{|T|T|} 23377\hline 23378 23379\sphinxAtStartPar 23380\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_ADDR}} 23381& 23382\sphinxAtStartPar 23383\sphinxcode{\sphinxupquote{0x00000001}} 23384\\ 23385\hline 23386\end{tabulary} 23387\par 23388\sphinxattableend\end{savenotes} 23389 23390 23391\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR} 23392\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}\spxextra{built\sphinxhyphen{}in variable}} 23393 23394\begin{fulllineitems} 23395\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}}} 23396\end{fulllineitems} 23397 23398 23399\sphinxAtStartPar 23400Generate the local network address and the local port. 23401 23402 23403\begin{savenotes}\sphinxattablestart 23404\centering 23405\begin{tabulary}{\linewidth}[t]{|T|T|} 23406\hline 23407 23408\sphinxAtStartPar 23409\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_LOCAL\_FULL\_ADDR}} 23410& 23411\sphinxAtStartPar 23412\sphinxcode{\sphinxupquote{0x00000004}} 23413\\ 23414\hline 23415\end{tabulary} 23416\par 23417\sphinxattableend\end{savenotes} 23418 23419 23420\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR} 23421\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:krb5-auth-context-generate-remote-addr-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR::doc}}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}\spxextra{built\sphinxhyphen{}in variable}} 23422 23423\begin{fulllineitems} 23424\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}}} 23425\end{fulllineitems} 23426 23427 23428\sphinxAtStartPar 23429Generate the remote network address. 23430 23431 23432\begin{savenotes}\sphinxattablestart 23433\centering 23434\begin{tabulary}{\linewidth}[t]{|T|T|} 23435\hline 23436 23437\sphinxAtStartPar 23438\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_ADDR}} 23439& 23440\sphinxAtStartPar 23441\sphinxcode{\sphinxupquote{0x00000002}} 23442\\ 23443\hline 23444\end{tabulary} 23445\par 23446\sphinxattableend\end{savenotes} 23447 23448 23449\subsubsection{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR} 23450\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:krb5-auth-context-generate-remote-full-addr-data}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR::doc}}\index{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}\spxextra{built\sphinxhyphen{}in variable}} 23451 23452\begin{fulllineitems} 23453\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR:KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}}} 23454\end{fulllineitems} 23455 23456 23457\sphinxAtStartPar 23458Generate the remote network address and the remote port. 23459 23460 23461\begin{savenotes}\sphinxattablestart 23462\centering 23463\begin{tabulary}{\linewidth}[t]{|T|T|} 23464\hline 23465 23466\sphinxAtStartPar 23467\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_GENERATE\_REMOTE\_FULL\_ADDR}} 23468& 23469\sphinxAtStartPar 23470\sphinxcode{\sphinxupquote{0x00000008}} 23471\\ 23472\hline 23473\end{tabulary} 23474\par 23475\sphinxattableend\end{savenotes} 23476 23477 23478\subsubsection{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL} 23479\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}\spxextra{built\sphinxhyphen{}in variable}} 23480 23481\begin{fulllineitems} 23482\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_PERMIT_ALL:KRB5_AUTH_CONTEXT_PERMIT_ALL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}}} 23483\end{fulllineitems} 23484 23485 23486 23487\begin{savenotes}\sphinxattablestart 23488\centering 23489\begin{tabulary}{\linewidth}[t]{|T|T|} 23490\hline 23491 23492\sphinxAtStartPar 23493\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_PERMIT\_ALL}} 23494& 23495\sphinxAtStartPar 23496\sphinxcode{\sphinxupquote{0x00000010}} 23497\\ 23498\hline 23499\end{tabulary} 23500\par 23501\sphinxattableend\end{savenotes} 23502 23503 23504\subsubsection{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE} 23505\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}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE::doc}}\index{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}\spxextra{built\sphinxhyphen{}in variable}} 23506 23507\begin{fulllineitems} 23508\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_SEQUENCE:KRB5_AUTH_CONTEXT_RET_SEQUENCE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}}} 23509\end{fulllineitems} 23510 23511 23512\sphinxAtStartPar 23513Save sequence numbers for application. 23514 23515 23516\begin{savenotes}\sphinxattablestart 23517\centering 23518\begin{tabulary}{\linewidth}[t]{|T|T|} 23519\hline 23520 23521\sphinxAtStartPar 23522\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_RET\_SEQUENCE}} 23523& 23524\sphinxAtStartPar 23525\sphinxcode{\sphinxupquote{0x00000008}} 23526\\ 23527\hline 23528\end{tabulary} 23529\par 23530\sphinxattableend\end{savenotes} 23531 23532 23533\subsubsection{KRB5\_AUTH\_CONTEXT\_RET\_TIME} 23534\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}}\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME::doc}}\index{KRB5\_AUTH\_CONTEXT\_RET\_TIME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_RET\_TIME}\spxextra{built\sphinxhyphen{}in variable}} 23535 23536\begin{fulllineitems} 23537\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_RET_TIME:KRB5_AUTH_CONTEXT_RET_TIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_RET\_TIME}}} 23538\end{fulllineitems} 23539 23540 23541\sphinxAtStartPar 23542Save timestamps for application. 23543 23544 23545\begin{savenotes}\sphinxattablestart 23546\centering 23547\begin{tabulary}{\linewidth}[t]{|T|T|} 23548\hline 23549 23550\sphinxAtStartPar 23551\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_RET\_TIME}} 23552& 23553\sphinxAtStartPar 23554\sphinxcode{\sphinxupquote{0x00000002}} 23555\\ 23556\hline 23557\end{tabulary} 23558\par 23559\sphinxattableend\end{savenotes} 23560 23561 23562\subsubsection{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY} 23563\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:krb5-auth-context-use-subkey}}\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::doc}}\index{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}\spxextra{built\sphinxhyphen{}in variable}} 23564 23565\begin{fulllineitems} 23566\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_AUTH_CONTEXT_USE_SUBKEY:KRB5_AUTH_CONTEXT_USE_SUBKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}}} 23567\end{fulllineitems} 23568 23569 23570 23571\begin{savenotes}\sphinxattablestart 23572\centering 23573\begin{tabulary}{\linewidth}[t]{|T|T|} 23574\hline 23575 23576\sphinxAtStartPar 23577\sphinxcode{\sphinxupquote{KRB5\_AUTH\_CONTEXT\_USE\_SUBKEY}} 23578& 23579\sphinxAtStartPar 23580\sphinxcode{\sphinxupquote{0x00000020}} 23581\\ 23582\hline 23583\end{tabulary} 23584\par 23585\sphinxattableend\end{savenotes} 23586 23587 23588\subsubsection{KRB5\_CRED} 23589\label{\detokenize{appdev/refs/macros/KRB5_CRED:krb5-cred}}\label{\detokenize{appdev/refs/macros/KRB5_CRED:krb5-cred-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRED::doc}}\index{KRB5\_CRED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRED}\spxextra{built\sphinxhyphen{}in variable}} 23590 23591\begin{fulllineitems} 23592\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRED:KRB5_CRED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRED}}} 23593\end{fulllineitems} 23594 23595 23596\sphinxAtStartPar 23597Cred forwarding message. 23598 23599 23600\begin{savenotes}\sphinxattablestart 23601\centering 23602\begin{tabulary}{\linewidth}[t]{|T|T|} 23603\hline 23604 23605\sphinxAtStartPar 23606\sphinxcode{\sphinxupquote{KRB5\_CRED}} 23607& 23608\sphinxAtStartPar 23609\sphinxcode{\sphinxupquote{((krb5\_msgtype)22)}} 23610\\ 23611\hline 23612\end{tabulary} 23613\par 23614\sphinxattableend\end{savenotes} 23615 23616 23617\subsubsection{KRB5\_CRYPTO\_TYPE\_CHECKSUM} 23618\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:krb5-crypto-type-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:krb5-crypto-type-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM::doc}}\index{KRB5\_CRYPTO\_TYPE\_CHECKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_CHECKSUM}\spxextra{built\sphinxhyphen{}in variable}} 23619 23620\begin{fulllineitems} 23621\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_CHECKSUM:KRB5_CRYPTO_TYPE_CHECKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_CHECKSUM}}} 23622\end{fulllineitems} 23623 23624 23625\sphinxAtStartPar 23626{[}out{]} checksum for MIC 23627 23628 23629\begin{savenotes}\sphinxattablestart 23630\centering 23631\begin{tabulary}{\linewidth}[t]{|T|T|} 23632\hline 23633 23634\sphinxAtStartPar 23635\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_CHECKSUM}} 23636& 23637\sphinxAtStartPar 23638\sphinxcode{\sphinxupquote{6}} 23639\\ 23640\hline 23641\end{tabulary} 23642\par 23643\sphinxattableend\end{savenotes} 23644 23645 23646\subsubsection{KRB5\_CRYPTO\_TYPE\_DATA} 23647\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}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA::doc}}\index{KRB5\_CRYPTO\_TYPE\_DATA (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_DATA}\spxextra{built\sphinxhyphen{}in variable}} 23648 23649\begin{fulllineitems} 23650\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_DATA:KRB5_CRYPTO_TYPE_DATA}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_DATA}}} 23651\end{fulllineitems} 23652 23653 23654\sphinxAtStartPar 23655{[}in, out{]} plaintext 23656 23657 23658\begin{savenotes}\sphinxattablestart 23659\centering 23660\begin{tabulary}{\linewidth}[t]{|T|T|} 23661\hline 23662 23663\sphinxAtStartPar 23664\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_DATA}} 23665& 23666\sphinxAtStartPar 23667\sphinxcode{\sphinxupquote{2}} 23668\\ 23669\hline 23670\end{tabulary} 23671\par 23672\sphinxattableend\end{savenotes} 23673 23674 23675\subsubsection{KRB5\_CRYPTO\_TYPE\_EMPTY} 23676\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}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY::doc}}\index{KRB5\_CRYPTO\_TYPE\_EMPTY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_EMPTY}\spxextra{built\sphinxhyphen{}in variable}} 23677 23678\begin{fulllineitems} 23679\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_EMPTY:KRB5_CRYPTO_TYPE_EMPTY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_EMPTY}}} 23680\end{fulllineitems} 23681 23682 23683\sphinxAtStartPar 23684{[}in{]} ignored 23685 23686 23687\begin{savenotes}\sphinxattablestart 23688\centering 23689\begin{tabulary}{\linewidth}[t]{|T|T|} 23690\hline 23691 23692\sphinxAtStartPar 23693\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_EMPTY}} 23694& 23695\sphinxAtStartPar 23696\sphinxcode{\sphinxupquote{0}} 23697\\ 23698\hline 23699\end{tabulary} 23700\par 23701\sphinxattableend\end{savenotes} 23702 23703 23704\subsubsection{KRB5\_CRYPTO\_TYPE\_HEADER} 23705\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_HEADER}\spxextra{built\sphinxhyphen{}in variable}} 23706 23707\begin{fulllineitems} 23708\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_HEADER:KRB5_CRYPTO_TYPE_HEADER}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_HEADER}}} 23709\end{fulllineitems} 23710 23711 23712\sphinxAtStartPar 23713{[}out{]} header 23714 23715 23716\begin{savenotes}\sphinxattablestart 23717\centering 23718\begin{tabulary}{\linewidth}[t]{|T|T|} 23719\hline 23720 23721\sphinxAtStartPar 23722\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_HEADER}} 23723& 23724\sphinxAtStartPar 23725\sphinxcode{\sphinxupquote{1}} 23726\\ 23727\hline 23728\end{tabulary} 23729\par 23730\sphinxattableend\end{savenotes} 23731 23732 23733\subsubsection{KRB5\_CRYPTO\_TYPE\_PADDING} 23734\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:krb5-crypto-type-padding}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:krb5-crypto-type-padding-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING::doc}}\index{KRB5\_CRYPTO\_TYPE\_PADDING (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_PADDING}\spxextra{built\sphinxhyphen{}in variable}} 23735 23736\begin{fulllineitems} 23737\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_PADDING:KRB5_CRYPTO_TYPE_PADDING}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_PADDING}}} 23738\end{fulllineitems} 23739 23740 23741\sphinxAtStartPar 23742{[}out{]} padding 23743 23744 23745\begin{savenotes}\sphinxattablestart 23746\centering 23747\begin{tabulary}{\linewidth}[t]{|T|T|} 23748\hline 23749 23750\sphinxAtStartPar 23751\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_PADDING}} 23752& 23753\sphinxAtStartPar 23754\sphinxcode{\sphinxupquote{4}} 23755\\ 23756\hline 23757\end{tabulary} 23758\par 23759\sphinxattableend\end{savenotes} 23760 23761 23762\subsubsection{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY} 23763\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}\spxextra{built\sphinxhyphen{}in variable}} 23764 23765\begin{fulllineitems} 23766\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_SIGN_ONLY:KRB5_CRYPTO_TYPE_SIGN_ONLY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}}} 23767\end{fulllineitems} 23768 23769 23770\sphinxAtStartPar 23771{[}in{]} associated data 23772 23773 23774\begin{savenotes}\sphinxattablestart 23775\centering 23776\begin{tabulary}{\linewidth}[t]{|T|T|} 23777\hline 23778 23779\sphinxAtStartPar 23780\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_SIGN\_ONLY}} 23781& 23782\sphinxAtStartPar 23783\sphinxcode{\sphinxupquote{3}} 23784\\ 23785\hline 23786\end{tabulary} 23787\par 23788\sphinxattableend\end{savenotes} 23789 23790 23791\subsubsection{KRB5\_CRYPTO\_TYPE\_STREAM} 23792\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:krb5-crypto-type-stream}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:krb5-crypto-type-stream-data}}\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM::doc}}\index{KRB5\_CRYPTO\_TYPE\_STREAM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_STREAM}\spxextra{built\sphinxhyphen{}in variable}} 23793 23794\begin{fulllineitems} 23795\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_STREAM:KRB5_CRYPTO_TYPE_STREAM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_STREAM}}} 23796\end{fulllineitems} 23797 23798 23799\sphinxAtStartPar 23800{[}in{]} entire message without decomposing the structure into header, data and trailer buffers 23801 23802 23803\begin{savenotes}\sphinxattablestart 23804\centering 23805\begin{tabulary}{\linewidth}[t]{|T|T|} 23806\hline 23807 23808\sphinxAtStartPar 23809\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_STREAM}} 23810& 23811\sphinxAtStartPar 23812\sphinxcode{\sphinxupquote{7}} 23813\\ 23814\hline 23815\end{tabulary} 23816\par 23817\sphinxattableend\end{savenotes} 23818 23819 23820\subsubsection{KRB5\_CRYPTO\_TYPE\_TRAILER} 23821\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_CRYPTO\_TYPE\_TRAILER}\spxextra{built\sphinxhyphen{}in variable}} 23822 23823\begin{fulllineitems} 23824\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CRYPTO_TYPE_TRAILER:KRB5_CRYPTO_TYPE_TRAILER}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_TRAILER}}} 23825\end{fulllineitems} 23826 23827 23828\sphinxAtStartPar 23829{[}out{]} checksum for encrypt 23830 23831 23832\begin{savenotes}\sphinxattablestart 23833\centering 23834\begin{tabulary}{\linewidth}[t]{|T|T|} 23835\hline 23836 23837\sphinxAtStartPar 23838\sphinxcode{\sphinxupquote{KRB5\_CRYPTO\_TYPE\_TRAILER}} 23839& 23840\sphinxAtStartPar 23841\sphinxcode{\sphinxupquote{5}} 23842\\ 23843\hline 23844\end{tabulary} 23845\par 23846\sphinxattableend\end{savenotes} 23847 23848 23849\subsubsection{KRB5\_CYBERSAFE\_SECUREID} 23850\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:krb5-cybersafe-secureid}}\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:krb5-cybersafe-secureid-data}}\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID::doc}}\index{KRB5\_CYBERSAFE\_SECUREID (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_CYBERSAFE\_SECUREID}\spxextra{built\sphinxhyphen{}in variable}} 23851 23852\begin{fulllineitems} 23853\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_CYBERSAFE_SECUREID:KRB5_CYBERSAFE_SECUREID}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_CYBERSAFE\_SECUREID}}} 23854\end{fulllineitems} 23855 23856 23857\sphinxAtStartPar 23858Cybersafe. 23859 23860\sphinxAtStartPar 23861RFC 4120 23862 23863 23864\begin{savenotes}\sphinxattablestart 23865\centering 23866\begin{tabulary}{\linewidth}[t]{|T|T|} 23867\hline 23868 23869\sphinxAtStartPar 23870\sphinxcode{\sphinxupquote{KRB5\_CYBERSAFE\_SECUREID}} 23871& 23872\sphinxAtStartPar 23873\sphinxcode{\sphinxupquote{9}} 23874\\ 23875\hline 23876\end{tabulary} 23877\par 23878\sphinxattableend\end{savenotes} 23879 23880 23881\subsubsection{KRB5\_DOMAIN\_X500\_COMPRESS} 23882\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}}\label{\detokenize{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS::doc}}\index{KRB5\_DOMAIN\_X500\_COMPRESS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_DOMAIN\_X500\_COMPRESS}\spxextra{built\sphinxhyphen{}in variable}} 23883 23884\begin{fulllineitems} 23885\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_DOMAIN_X500_COMPRESS:KRB5_DOMAIN_X500_COMPRESS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_DOMAIN\_X500\_COMPRESS}}} 23886\end{fulllineitems} 23887 23888 23889\sphinxAtStartPar 23890Transited encoding types. 23891 23892 23893\begin{savenotes}\sphinxattablestart 23894\centering 23895\begin{tabulary}{\linewidth}[t]{|T|T|} 23896\hline 23897 23898\sphinxAtStartPar 23899\sphinxcode{\sphinxupquote{KRB5\_DOMAIN\_X500\_COMPRESS}} 23900& 23901\sphinxAtStartPar 23902\sphinxcode{\sphinxupquote{1}} 23903\\ 23904\hline 23905\end{tabulary} 23906\par 23907\sphinxattableend\end{savenotes} 23908 23909 23910\subsubsection{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP} 23911\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}\spxextra{built\sphinxhyphen{}in variable}} 23912 23913\begin{fulllineitems} 23914\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ENCPADATA_REQ_ENC_PA_REP:KRB5_ENCPADATA_REQ_ENC_PA_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}}} 23915\end{fulllineitems} 23916 23917 23918\sphinxAtStartPar 23919RFC 6806. 23920 23921 23922\begin{savenotes}\sphinxattablestart 23923\centering 23924\begin{tabulary}{\linewidth}[t]{|T|T|} 23925\hline 23926 23927\sphinxAtStartPar 23928\sphinxcode{\sphinxupquote{KRB5\_ENCPADATA\_REQ\_ENC\_PA\_REP}} 23929& 23930\sphinxAtStartPar 23931\sphinxcode{\sphinxupquote{149}} 23932\\ 23933\hline 23934\end{tabulary} 23935\par 23936\sphinxattableend\end{savenotes} 23937 23938 23939\subsubsection{KRB5\_ERROR} 23940\label{\detokenize{appdev/refs/macros/KRB5_ERROR:krb5-error}}\label{\detokenize{appdev/refs/macros/KRB5_ERROR:krb5-error-data}}\label{\detokenize{appdev/refs/macros/KRB5_ERROR::doc}}\index{KRB5\_ERROR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_ERROR}\spxextra{built\sphinxhyphen{}in variable}} 23941 23942\begin{fulllineitems} 23943\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_ERROR:KRB5_ERROR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_ERROR}}} 23944\end{fulllineitems} 23945 23946 23947\sphinxAtStartPar 23948Error response. 23949 23950 23951\begin{savenotes}\sphinxattablestart 23952\centering 23953\begin{tabulary}{\linewidth}[t]{|T|T|} 23954\hline 23955 23956\sphinxAtStartPar 23957\sphinxcode{\sphinxupquote{KRB5\_ERROR}} 23958& 23959\sphinxAtStartPar 23960\sphinxcode{\sphinxupquote{((krb5\_msgtype)30)}} 23961\\ 23962\hline 23963\end{tabulary} 23964\par 23965\sphinxattableend\end{savenotes} 23966 23967 23968\subsubsection{KRB5\_FAST\_REQUIRED} 23969\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_FAST\_REQUIRED}\spxextra{built\sphinxhyphen{}in variable}} 23970 23971\begin{fulllineitems} 23972\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_FAST_REQUIRED:KRB5_FAST_REQUIRED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_FAST\_REQUIRED}}} 23973\end{fulllineitems} 23974 23975 23976\sphinxAtStartPar 23977Require KDC to support FAST. 23978 23979 23980\begin{savenotes}\sphinxattablestart 23981\centering 23982\begin{tabulary}{\linewidth}[t]{|T|T|} 23983\hline 23984 23985\sphinxAtStartPar 23986\sphinxcode{\sphinxupquote{KRB5\_FAST\_REQUIRED}} 23987& 23988\sphinxAtStartPar 23989\sphinxcode{\sphinxupquote{0x0001}} 23990\\ 23991\hline 23992\end{tabulary} 23993\par 23994\sphinxattableend\end{savenotes} 23995 23996 23997\subsubsection{KRB5\_GC\_CACHED} 23998\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_CACHED}\spxextra{built\sphinxhyphen{}in variable}} 23999 24000\begin{fulllineitems} 24001\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_CACHED:KRB5_GC_CACHED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_CACHED}}} 24002\end{fulllineitems} 24003 24004 24005\sphinxAtStartPar 24006Want cached ticket only. 24007 24008 24009\begin{savenotes}\sphinxattablestart 24010\centering 24011\begin{tabulary}{\linewidth}[t]{|T|T|} 24012\hline 24013 24014\sphinxAtStartPar 24015\sphinxcode{\sphinxupquote{KRB5\_GC\_CACHED}} 24016& 24017\sphinxAtStartPar 24018\sphinxcode{\sphinxupquote{2}} 24019\\ 24020\hline 24021\end{tabulary} 24022\par 24023\sphinxattableend\end{savenotes} 24024 24025 24026\subsubsection{KRB5\_GC\_CANONICALIZE} 24027\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE:krb5-gc-canonicalize}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE:krb5-gc-canonicalize-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE::doc}}\index{KRB5\_GC\_CANONICALIZE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_CANONICALIZE}\spxextra{built\sphinxhyphen{}in variable}} 24028 24029\begin{fulllineitems} 24030\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_CANONICALIZE:KRB5_GC_CANONICALIZE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_CANONICALIZE}}} 24031\end{fulllineitems} 24032 24033 24034\sphinxAtStartPar 24035Set canonicalize KDC option. 24036 24037 24038\begin{savenotes}\sphinxattablestart 24039\centering 24040\begin{tabulary}{\linewidth}[t]{|T|T|} 24041\hline 24042 24043\sphinxAtStartPar 24044\sphinxcode{\sphinxupquote{KRB5\_GC\_CANONICALIZE}} 24045& 24046\sphinxAtStartPar 24047\sphinxcode{\sphinxupquote{4}} 24048\\ 24049\hline 24050\end{tabulary} 24051\par 24052\sphinxattableend\end{savenotes} 24053 24054 24055\subsubsection{KRB5\_GC\_CONSTRAINED\_DELEGATION} 24056\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_CONSTRAINED\_DELEGATION}\spxextra{built\sphinxhyphen{}in variable}} 24057 24058\begin{fulllineitems} 24059\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_CONSTRAINED_DELEGATION:KRB5_GC_CONSTRAINED_DELEGATION}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_CONSTRAINED\_DELEGATION}}} 24060\end{fulllineitems} 24061 24062 24063\sphinxAtStartPar 24064Constrained delegation. 24065 24066 24067\begin{savenotes}\sphinxattablestart 24068\centering 24069\begin{tabulary}{\linewidth}[t]{|T|T|} 24070\hline 24071 24072\sphinxAtStartPar 24073\sphinxcode{\sphinxupquote{KRB5\_GC\_CONSTRAINED\_DELEGATION}} 24074& 24075\sphinxAtStartPar 24076\sphinxcode{\sphinxupquote{64}} 24077\\ 24078\hline 24079\end{tabulary} 24080\par 24081\sphinxattableend\end{savenotes} 24082 24083 24084\subsubsection{KRB5\_GC\_FORWARDABLE} 24085\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE:krb5-gc-forwardable}}\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE:krb5-gc-forwardable-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE::doc}}\index{KRB5\_GC\_FORWARDABLE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_FORWARDABLE}\spxextra{built\sphinxhyphen{}in variable}} 24086 24087\begin{fulllineitems} 24088\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_FORWARDABLE:KRB5_GC_FORWARDABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_FORWARDABLE}}} 24089\end{fulllineitems} 24090 24091 24092\sphinxAtStartPar 24093Acquire forwardable tickets. 24094 24095 24096\begin{savenotes}\sphinxattablestart 24097\centering 24098\begin{tabulary}{\linewidth}[t]{|T|T|} 24099\hline 24100 24101\sphinxAtStartPar 24102\sphinxcode{\sphinxupquote{KRB5\_GC\_FORWARDABLE}} 24103& 24104\sphinxAtStartPar 24105\sphinxcode{\sphinxupquote{16}} 24106\\ 24107\hline 24108\end{tabulary} 24109\par 24110\sphinxattableend\end{savenotes} 24111 24112 24113\subsubsection{KRB5\_GC\_NO\_STORE} 24114\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}}\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_STORE::doc}}\index{KRB5\_GC\_NO\_STORE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_NO\_STORE}\spxextra{built\sphinxhyphen{}in variable}} 24115 24116\begin{fulllineitems} 24117\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_STORE:KRB5_GC_NO_STORE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_NO\_STORE}}} 24118\end{fulllineitems} 24119 24120 24121\sphinxAtStartPar 24122Do not store in credential cache. 24123 24124 24125\begin{savenotes}\sphinxattablestart 24126\centering 24127\begin{tabulary}{\linewidth}[t]{|T|T|} 24128\hline 24129 24130\sphinxAtStartPar 24131\sphinxcode{\sphinxupquote{KRB5\_GC\_NO\_STORE}} 24132& 24133\sphinxAtStartPar 24134\sphinxcode{\sphinxupquote{8}} 24135\\ 24136\hline 24137\end{tabulary} 24138\par 24139\sphinxattableend\end{savenotes} 24140 24141 24142\subsubsection{KRB5\_GC\_NO\_TRANSIT\_CHECK} 24143\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:krb5-gc-no-transit-check-data}}\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK::doc}}\index{KRB5\_GC\_NO\_TRANSIT\_CHECK (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_NO\_TRANSIT\_CHECK}\spxextra{built\sphinxhyphen{}in variable}} 24144 24145\begin{fulllineitems} 24146\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_NO_TRANSIT_CHECK:KRB5_GC_NO_TRANSIT_CHECK}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_NO\_TRANSIT\_CHECK}}} 24147\end{fulllineitems} 24148 24149 24150\sphinxAtStartPar 24151Disable transited check. 24152 24153 24154\begin{savenotes}\sphinxattablestart 24155\centering 24156\begin{tabulary}{\linewidth}[t]{|T|T|} 24157\hline 24158 24159\sphinxAtStartPar 24160\sphinxcode{\sphinxupquote{KRB5\_GC\_NO\_TRANSIT\_CHECK}} 24161& 24162\sphinxAtStartPar 24163\sphinxcode{\sphinxupquote{32}} 24164\\ 24165\hline 24166\end{tabulary} 24167\par 24168\sphinxattableend\end{savenotes} 24169 24170 24171\subsubsection{KRB5\_GC\_USER\_USER} 24172\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}}\label{\detokenize{appdev/refs/macros/KRB5_GC_USER_USER::doc}}\index{KRB5\_GC\_USER\_USER (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GC\_USER\_USER}\spxextra{built\sphinxhyphen{}in variable}} 24173 24174\begin{fulllineitems} 24175\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GC_USER_USER:KRB5_GC_USER_USER}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GC\_USER\_USER}}} 24176\end{fulllineitems} 24177 24178 24179\sphinxAtStartPar 24180Want user\sphinxhyphen{}user ticket. 24181 24182 24183\begin{savenotes}\sphinxattablestart 24184\centering 24185\begin{tabulary}{\linewidth}[t]{|T|T|} 24186\hline 24187 24188\sphinxAtStartPar 24189\sphinxcode{\sphinxupquote{KRB5\_GC\_USER\_USER}} 24190& 24191\sphinxAtStartPar 24192\sphinxcode{\sphinxupquote{1}} 24193\\ 24194\hline 24195\end{tabulary} 24196\par 24197\sphinxattableend\end{savenotes} 24198 24199 24200\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST} 24201\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:krb5-get-init-creds-opt-address-list-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}\spxextra{built\sphinxhyphen{}in variable}} 24202 24203\begin{fulllineitems} 24204\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST:KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}}} 24205\end{fulllineitems} 24206 24207 24208 24209\begin{savenotes}\sphinxattablestart 24210\centering 24211\begin{tabulary}{\linewidth}[t]{|T|T|} 24212\hline 24213 24214\sphinxAtStartPar 24215\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_ADDRESS\_LIST}} 24216& 24217\sphinxAtStartPar 24218\sphinxcode{\sphinxupquote{0x0020}} 24219\\ 24220\hline 24221\end{tabulary} 24222\par 24223\sphinxattableend\end{savenotes} 24224 24225 24226\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS} 24227\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:krb5-get-init-creds-opt-anonymous}}\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}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}\spxextra{built\sphinxhyphen{}in variable}} 24228 24229\begin{fulllineitems} 24230\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ANONYMOUS:KRB5_GET_INIT_CREDS_OPT_ANONYMOUS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}}} 24231\end{fulllineitems} 24232 24233 24234 24235\begin{savenotes}\sphinxattablestart 24236\centering 24237\begin{tabulary}{\linewidth}[t]{|T|T|} 24238\hline 24239 24240\sphinxAtStartPar 24241\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_ANONYMOUS}} 24242& 24243\sphinxAtStartPar 24244\sphinxcode{\sphinxupquote{0x0400}} 24245\\ 24246\hline 24247\end{tabulary} 24248\par 24249\sphinxattableend\end{savenotes} 24250 24251 24252\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE} 24253\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:krb5-get-init-creds-opt-canonicalize}}\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::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}\spxextra{built\sphinxhyphen{}in variable}} 24254 24255\begin{fulllineitems} 24256\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CANONICALIZE:KRB5_GET_INIT_CREDS_OPT_CANONICALIZE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}}} 24257\end{fulllineitems} 24258 24259 24260 24261\begin{savenotes}\sphinxattablestart 24262\centering 24263\begin{tabulary}{\linewidth}[t]{|T|T|} 24264\hline 24265 24266\sphinxAtStartPar 24267\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_CANONICALIZE}} 24268& 24269\sphinxAtStartPar 24270\sphinxcode{\sphinxupquote{0x0200}} 24271\\ 24272\hline 24273\end{tabulary} 24274\par 24275\sphinxattableend\end{savenotes} 24276 24277 24278\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT} 24279\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}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}\spxextra{built\sphinxhyphen{}in variable}} 24280 24281\begin{fulllineitems} 24282\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT:KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}}} 24283\end{fulllineitems} 24284 24285 24286 24287\begin{savenotes}\sphinxattablestart 24288\centering 24289\begin{tabulary}{\linewidth}[t]{|T|T|} 24290\hline 24291 24292\sphinxAtStartPar 24293\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_CHG\_PWD\_PRMPT}} 24294& 24295\sphinxAtStartPar 24296\sphinxcode{\sphinxupquote{0x0100}} 24297\\ 24298\hline 24299\end{tabulary} 24300\par 24301\sphinxattableend\end{savenotes} 24302 24303 24304\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST} 24305\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:krb5-get-init-creds-opt-etype-list-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}\spxextra{built\sphinxhyphen{}in variable}} 24306 24307\begin{fulllineitems} 24308\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST:KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}}} 24309\end{fulllineitems} 24310 24311 24312 24313\begin{savenotes}\sphinxattablestart 24314\centering 24315\begin{tabulary}{\linewidth}[t]{|T|T|} 24316\hline 24317 24318\sphinxAtStartPar 24319\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_ETYPE\_LIST}} 24320& 24321\sphinxAtStartPar 24322\sphinxcode{\sphinxupquote{0x0010}} 24323\\ 24324\hline 24325\end{tabulary} 24326\par 24327\sphinxattableend\end{savenotes} 24328 24329 24330\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE} 24331\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}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}\spxextra{built\sphinxhyphen{}in variable}} 24332 24333\begin{fulllineitems} 24334\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_FORWARDABLE:KRB5_GET_INIT_CREDS_OPT_FORWARDABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}}} 24335\end{fulllineitems} 24336 24337 24338 24339\begin{savenotes}\sphinxattablestart 24340\centering 24341\begin{tabulary}{\linewidth}[t]{|T|T|} 24342\hline 24343 24344\sphinxAtStartPar 24345\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_FORWARDABLE}} 24346& 24347\sphinxAtStartPar 24348\sphinxcode{\sphinxupquote{0x0004}} 24349\\ 24350\hline 24351\end{tabulary} 24352\par 24353\sphinxattableend\end{savenotes} 24354 24355 24356\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST} 24357\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}\spxextra{built\sphinxhyphen{}in variable}} 24358 24359\begin{fulllineitems} 24360\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST:KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}}} 24361\end{fulllineitems} 24362 24363 24364 24365\begin{savenotes}\sphinxattablestart 24366\centering 24367\begin{tabulary}{\linewidth}[t]{|T|T|} 24368\hline 24369 24370\sphinxAtStartPar 24371\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_PREAUTH\_LIST}} 24372& 24373\sphinxAtStartPar 24374\sphinxcode{\sphinxupquote{0x0040}} 24375\\ 24376\hline 24377\end{tabulary} 24378\par 24379\sphinxattableend\end{savenotes} 24380 24381 24382\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE} 24383\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:krb5-get-init-creds-opt-proxiable-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}\spxextra{built\sphinxhyphen{}in variable}} 24384 24385\begin{fulllineitems} 24386\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_PROXIABLE:KRB5_GET_INIT_CREDS_OPT_PROXIABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}}} 24387\end{fulllineitems} 24388 24389 24390 24391\begin{savenotes}\sphinxattablestart 24392\centering 24393\begin{tabulary}{\linewidth}[t]{|T|T|} 24394\hline 24395 24396\sphinxAtStartPar 24397\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_PROXIABLE}} 24398& 24399\sphinxAtStartPar 24400\sphinxcode{\sphinxupquote{0x0008}} 24401\\ 24402\hline 24403\end{tabulary} 24404\par 24405\sphinxattableend\end{savenotes} 24406 24407 24408\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE} 24409\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:krb5-get-init-creds-opt-renew-life}}\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::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}\spxextra{built\sphinxhyphen{}in variable}} 24410 24411\begin{fulllineitems} 24412\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE:KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}}} 24413\end{fulllineitems} 24414 24415 24416 24417\begin{savenotes}\sphinxattablestart 24418\centering 24419\begin{tabulary}{\linewidth}[t]{|T|T|} 24420\hline 24421 24422\sphinxAtStartPar 24423\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_RENEW\_LIFE}} 24424& 24425\sphinxAtStartPar 24426\sphinxcode{\sphinxupquote{0x0002}} 24427\\ 24428\hline 24429\end{tabulary} 24430\par 24431\sphinxattableend\end{savenotes} 24432 24433 24434\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT} 24435\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:krb5-get-init-creds-opt-salt-data}}\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}\spxextra{built\sphinxhyphen{}in variable}} 24436 24437\begin{fulllineitems} 24438\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_SALT:KRB5_GET_INIT_CREDS_OPT_SALT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}}} 24439\end{fulllineitems} 24440 24441 24442 24443\begin{savenotes}\sphinxattablestart 24444\centering 24445\begin{tabulary}{\linewidth}[t]{|T|T|} 24446\hline 24447 24448\sphinxAtStartPar 24449\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_SALT}} 24450& 24451\sphinxAtStartPar 24452\sphinxcode{\sphinxupquote{0x0080}} 24453\\ 24454\hline 24455\end{tabulary} 24456\par 24457\sphinxattableend\end{savenotes} 24458 24459 24460\subsubsection{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE} 24461\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:krb5-get-init-creds-opt-tkt-life}}\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::doc}}\index{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}\spxextra{built\sphinxhyphen{}in variable}} 24462 24463\begin{fulllineitems} 24464\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_GET_INIT_CREDS_OPT_TKT_LIFE:KRB5_GET_INIT_CREDS_OPT_TKT_LIFE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}}} 24465\end{fulllineitems} 24466 24467 24468 24469\begin{savenotes}\sphinxattablestart 24470\centering 24471\begin{tabulary}{\linewidth}[t]{|T|T|} 24472\hline 24473 24474\sphinxAtStartPar 24475\sphinxcode{\sphinxupquote{KRB5\_GET\_INIT\_CREDS\_OPT\_TKT\_LIFE}} 24476& 24477\sphinxAtStartPar 24478\sphinxcode{\sphinxupquote{0x0001}} 24479\\ 24480\hline 24481\end{tabulary} 24482\par 24483\sphinxattableend\end{savenotes} 24484 24485 24486\subsubsection{KRB5\_INIT\_CONTEXT\_SECURE} 24487\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}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE::doc}}\index{KRB5\_INIT\_CONTEXT\_SECURE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INIT\_CONTEXT\_SECURE}\spxextra{built\sphinxhyphen{}in variable}} 24488 24489\begin{fulllineitems} 24490\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_SECURE:KRB5_INIT_CONTEXT_SECURE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INIT\_CONTEXT\_SECURE}}} 24491\end{fulllineitems} 24492 24493 24494\sphinxAtStartPar 24495Use secure context configuration. 24496 24497 24498\begin{savenotes}\sphinxattablestart 24499\centering 24500\begin{tabulary}{\linewidth}[t]{|T|T|} 24501\hline 24502 24503\sphinxAtStartPar 24504\sphinxcode{\sphinxupquote{KRB5\_INIT\_CONTEXT\_SECURE}} 24505& 24506\sphinxAtStartPar 24507\sphinxcode{\sphinxupquote{0x1}} 24508\\ 24509\hline 24510\end{tabulary} 24511\par 24512\sphinxattableend\end{savenotes} 24513 24514 24515\subsubsection{KRB5\_INIT\_CONTEXT\_KDC} 24516\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:krb5-init-context-kdc}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:krb5-init-context-kdc-data}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC::doc}}\index{KRB5\_INIT\_CONTEXT\_KDC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INIT\_CONTEXT\_KDC}\spxextra{built\sphinxhyphen{}in variable}} 24517 24518\begin{fulllineitems} 24519\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INIT_CONTEXT_KDC:KRB5_INIT_CONTEXT_KDC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INIT\_CONTEXT\_KDC}}} 24520\end{fulllineitems} 24521 24522 24523\sphinxAtStartPar 24524Use KDC configuration if available. 24525 24526 24527\begin{savenotes}\sphinxattablestart 24528\centering 24529\begin{tabulary}{\linewidth}[t]{|T|T|} 24530\hline 24531 24532\sphinxAtStartPar 24533\sphinxcode{\sphinxupquote{KRB5\_INIT\_CONTEXT\_KDC}} 24534& 24535\sphinxAtStartPar 24536\sphinxcode{\sphinxupquote{0x2}} 24537\\ 24538\hline 24539\end{tabulary} 24540\par 24541\sphinxattableend\end{savenotes} 24542 24543 24544\subsubsection{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE} 24545\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:krb5-init-creds-step-flag-continue-data}}\label{\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE::doc}}\index{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}\spxextra{built\sphinxhyphen{}in variable}} 24546 24547\begin{fulllineitems} 24548\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INIT_CREDS_STEP_FLAG_CONTINUE:KRB5_INIT_CREDS_STEP_FLAG_CONTINUE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}}} 24549\end{fulllineitems} 24550 24551 24552\sphinxAtStartPar 24553More responses needed. 24554 24555 24556\begin{savenotes}\sphinxattablestart 24557\centering 24558\begin{tabulary}{\linewidth}[t]{|T|T|} 24559\hline 24560 24561\sphinxAtStartPar 24562\sphinxcode{\sphinxupquote{KRB5\_INIT\_CREDS\_STEP\_FLAG\_CONTINUE}} 24563& 24564\sphinxAtStartPar 24565\sphinxcode{\sphinxupquote{0x1}} 24566\\ 24567\hline 24568\end{tabulary} 24569\par 24570\sphinxattableend\end{savenotes} 24571 24572 24573\subsubsection{KRB5\_INT16\_MAX} 24574\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX:krb5-int16-max}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX:krb5-int16-max-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX::doc}}\index{KRB5\_INT16\_MAX (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INT16\_MAX}\spxextra{built\sphinxhyphen{}in variable}} 24575 24576\begin{fulllineitems} 24577\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT16_MAX:KRB5_INT16_MAX}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INT16\_MAX}}} 24578\end{fulllineitems} 24579 24580 24581 24582\begin{savenotes}\sphinxattablestart 24583\centering 24584\begin{tabulary}{\linewidth}[t]{|T|T|} 24585\hline 24586 24587\sphinxAtStartPar 24588\sphinxcode{\sphinxupquote{KRB5\_INT16\_MAX}} 24589& 24590\sphinxAtStartPar 24591\sphinxcode{\sphinxupquote{65535}} 24592\\ 24593\hline 24594\end{tabulary} 24595\par 24596\sphinxattableend\end{savenotes} 24597 24598 24599\subsubsection{KRB5\_INT16\_MIN} 24600\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN:krb5-int16-min}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN:krb5-int16-min-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN::doc}}\index{KRB5\_INT16\_MIN (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INT16\_MIN}\spxextra{built\sphinxhyphen{}in variable}} 24601 24602\begin{fulllineitems} 24603\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT16_MIN:KRB5_INT16_MIN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INT16\_MIN}}} 24604\end{fulllineitems} 24605 24606 24607 24608\begin{savenotes}\sphinxattablestart 24609\centering 24610\begin{tabulary}{\linewidth}[t]{|T|T|} 24611\hline 24612 24613\sphinxAtStartPar 24614\sphinxcode{\sphinxupquote{KRB5\_INT16\_MIN}} 24615& 24616\sphinxAtStartPar 24617\sphinxcode{\sphinxupquote{(\sphinxhyphen{}KRB5\_INT16\_MAX\sphinxhyphen{}1)}} 24618\\ 24619\hline 24620\end{tabulary} 24621\par 24622\sphinxattableend\end{savenotes} 24623 24624 24625\subsubsection{KRB5\_INT32\_MAX} 24626\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX:krb5-int32-max}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX:krb5-int32-max-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX::doc}}\index{KRB5\_INT32\_MAX (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INT32\_MAX}\spxextra{built\sphinxhyphen{}in variable}} 24627 24628\begin{fulllineitems} 24629\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT32_MAX:KRB5_INT32_MAX}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INT32\_MAX}}} 24630\end{fulllineitems} 24631 24632 24633 24634\begin{savenotes}\sphinxattablestart 24635\centering 24636\begin{tabulary}{\linewidth}[t]{|T|T|} 24637\hline 24638 24639\sphinxAtStartPar 24640\sphinxcode{\sphinxupquote{KRB5\_INT32\_MAX}} 24641& 24642\sphinxAtStartPar 24643\sphinxcode{\sphinxupquote{2147483647}} 24644\\ 24645\hline 24646\end{tabulary} 24647\par 24648\sphinxattableend\end{savenotes} 24649 24650 24651\subsubsection{KRB5\_INT32\_MIN} 24652\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN:krb5-int32-min}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN:krb5-int32-min-data}}\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN::doc}}\index{KRB5\_INT32\_MIN (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_INT32\_MIN}\spxextra{built\sphinxhyphen{}in variable}} 24653 24654\begin{fulllineitems} 24655\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_INT32_MIN:KRB5_INT32_MIN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_INT32\_MIN}}} 24656\end{fulllineitems} 24657 24658 24659 24660\begin{savenotes}\sphinxattablestart 24661\centering 24662\begin{tabulary}{\linewidth}[t]{|T|T|} 24663\hline 24664 24665\sphinxAtStartPar 24666\sphinxcode{\sphinxupquote{KRB5\_INT32\_MIN}} 24667& 24668\sphinxAtStartPar 24669\sphinxcode{\sphinxupquote{(\sphinxhyphen{}KRB5\_INT32\_MAX\sphinxhyphen{}1)}} 24670\\ 24671\hline 24672\end{tabulary} 24673\par 24674\sphinxattableend\end{savenotes} 24675 24676 24677\subsubsection{KRB5\_KEYUSAGE\_AD\_ITE} 24678\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:krb5-keyusage-ad-ite}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:krb5-keyusage-ad-ite-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE::doc}}\index{KRB5\_KEYUSAGE\_AD\_ITE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AD\_ITE}\spxextra{built\sphinxhyphen{}in variable}} 24679 24680\begin{fulllineitems} 24681\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_ITE:KRB5_KEYUSAGE_AD_ITE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_ITE}}} 24682\end{fulllineitems} 24683 24684 24685 24686\begin{savenotes}\sphinxattablestart 24687\centering 24688\begin{tabulary}{\linewidth}[t]{|T|T|} 24689\hline 24690 24691\sphinxAtStartPar 24692\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_ITE}} 24693& 24694\sphinxAtStartPar 24695\sphinxcode{\sphinxupquote{21}} 24696\\ 24697\hline 24698\end{tabulary} 24699\par 24700\sphinxattableend\end{savenotes} 24701 24702 24703\subsubsection{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM} 24704\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:krb5-keyusage-ad-kdcissued-cksum}}\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::doc}}\index{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 24705 24706\begin{fulllineitems} 24707\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM:KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}}} 24708\end{fulllineitems} 24709 24710 24711 24712\begin{savenotes}\sphinxattablestart 24713\centering 24714\begin{tabulary}{\linewidth}[t]{|T|T|} 24715\hline 24716 24717\sphinxAtStartPar 24718\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_KDCISSUED\_CKSUM}} 24719& 24720\sphinxAtStartPar 24721\sphinxcode{\sphinxupquote{19}} 24722\\ 24723\hline 24724\end{tabulary} 24725\par 24726\sphinxattableend\end{savenotes} 24727 24728 24729\subsubsection{KRB5\_KEYUSAGE\_AD\_MTE} 24730\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:krb5-keyusage-ad-mte}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:krb5-keyusage-ad-mte-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE::doc}}\index{KRB5\_KEYUSAGE\_AD\_MTE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AD\_MTE}\spxextra{built\sphinxhyphen{}in variable}} 24731 24732\begin{fulllineitems} 24733\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_MTE:KRB5_KEYUSAGE_AD_MTE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_MTE}}} 24734\end{fulllineitems} 24735 24736 24737 24738\begin{savenotes}\sphinxattablestart 24739\centering 24740\begin{tabulary}{\linewidth}[t]{|T|T|} 24741\hline 24742 24743\sphinxAtStartPar 24744\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_MTE}} 24745& 24746\sphinxAtStartPar 24747\sphinxcode{\sphinxupquote{20}} 24748\\ 24749\hline 24750\end{tabulary} 24751\par 24752\sphinxattableend\end{savenotes} 24753 24754 24755\subsubsection{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH} 24756\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:krb5-keyusage-ad-signedpath}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:krb5-keyusage-ad-signedpath-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH::doc}}\index{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}\spxextra{built\sphinxhyphen{}in variable}} 24757 24758\begin{fulllineitems} 24759\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AD_SIGNEDPATH:KRB5_KEYUSAGE_AD_SIGNEDPATH}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}}} 24760\end{fulllineitems} 24761 24762 24763 24764\begin{savenotes}\sphinxattablestart 24765\centering 24766\begin{tabulary}{\linewidth}[t]{|T|T|} 24767\hline 24768 24769\sphinxAtStartPar 24770\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AD\_SIGNEDPATH}} 24771& 24772\sphinxAtStartPar 24773\sphinxcode{\sphinxupquote{\sphinxhyphen{}21}} 24774\\ 24775\hline 24776\end{tabulary} 24777\par 24778\sphinxattableend\end{savenotes} 24779 24780 24781\subsubsection{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM} 24782\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:krb5-keyusage-app-data-cksum}}\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}}\index{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 24783 24784\begin{fulllineitems} 24785\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_CKSUM:KRB5_KEYUSAGE_APP_DATA_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}}} 24786\end{fulllineitems} 24787 24788 24789 24790\begin{savenotes}\sphinxattablestart 24791\centering 24792\begin{tabulary}{\linewidth}[t]{|T|T|} 24793\hline 24794 24795\sphinxAtStartPar 24796\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_APP\_DATA\_CKSUM}} 24797& 24798\sphinxAtStartPar 24799\sphinxcode{\sphinxupquote{17}} 24800\\ 24801\hline 24802\end{tabulary} 24803\par 24804\sphinxattableend\end{savenotes} 24805 24806 24807\subsubsection{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT} 24808\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}\spxextra{built\sphinxhyphen{}in variable}} 24809 24810\begin{fulllineitems} 24811\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_APP_DATA_ENCRYPT:KRB5_KEYUSAGE_APP_DATA_ENCRYPT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}}} 24812\end{fulllineitems} 24813 24814 24815 24816\begin{savenotes}\sphinxattablestart 24817\centering 24818\begin{tabulary}{\linewidth}[t]{|T|T|} 24819\hline 24820 24821\sphinxAtStartPar 24822\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_APP\_DATA\_ENCRYPT}} 24823& 24824\sphinxAtStartPar 24825\sphinxcode{\sphinxupquote{16}} 24826\\ 24827\hline 24828\end{tabulary} 24829\par 24830\sphinxattableend\end{savenotes} 24831 24832 24833\subsubsection{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART} 24834\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART::doc}}\index{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}\spxextra{built\sphinxhyphen{}in variable}} 24835 24836\begin{fulllineitems} 24837\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REP_ENCPART:KRB5_KEYUSAGE_AP_REP_ENCPART}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}}} 24838\end{fulllineitems} 24839 24840 24841 24842\begin{savenotes}\sphinxattablestart 24843\centering 24844\begin{tabulary}{\linewidth}[t]{|T|T|} 24845\hline 24846 24847\sphinxAtStartPar 24848\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AP\_REP\_ENCPART}} 24849& 24850\sphinxAtStartPar 24851\sphinxcode{\sphinxupquote{12}} 24852\\ 24853\hline 24854\end{tabulary} 24855\par 24856\sphinxattableend\end{savenotes} 24857 24858 24859\subsubsection{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH} 24860\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH::doc}}\index{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}\spxextra{built\sphinxhyphen{}in variable}} 24861 24862\begin{fulllineitems} 24863\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH:KRB5_KEYUSAGE_AP_REQ_AUTH}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}}} 24864\end{fulllineitems} 24865 24866 24867 24868\begin{savenotes}\sphinxattablestart 24869\centering 24870\begin{tabulary}{\linewidth}[t]{|T|T|} 24871\hline 24872 24873\sphinxAtStartPar 24874\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH}} 24875& 24876\sphinxAtStartPar 24877\sphinxcode{\sphinxupquote{11}} 24878\\ 24879\hline 24880\end{tabulary} 24881\par 24882\sphinxattableend\end{savenotes} 24883 24884 24885\subsubsection{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM} 24886\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:krb5-keyusage-ap-req-auth-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM::doc}}\index{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 24887 24888\begin{fulllineitems} 24889\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM:KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}}} 24890\end{fulllineitems} 24891 24892 24893 24894\begin{savenotes}\sphinxattablestart 24895\centering 24896\begin{tabulary}{\linewidth}[t]{|T|T|} 24897\hline 24898 24899\sphinxAtStartPar 24900\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AP\_REQ\_AUTH\_CKSUM}} 24901& 24902\sphinxAtStartPar 24903\sphinxcode{\sphinxupquote{10}} 24904\\ 24905\hline 24906\end{tabulary} 24907\par 24908\sphinxattableend\end{savenotes} 24909 24910 24911\subsubsection{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART} 24912\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:krb5-keyusage-as-rep-encpart}}\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}}\index{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}\spxextra{built\sphinxhyphen{}in variable}} 24913 24914\begin{fulllineitems} 24915\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REP_ENCPART:KRB5_KEYUSAGE_AS_REP_ENCPART}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}}} 24916\end{fulllineitems} 24917 24918 24919 24920\begin{savenotes}\sphinxattablestart 24921\centering 24922\begin{tabulary}{\linewidth}[t]{|T|T|} 24923\hline 24924 24925\sphinxAtStartPar 24926\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AS\_REP\_ENCPART}} 24927& 24928\sphinxAtStartPar 24929\sphinxcode{\sphinxupquote{3}} 24930\\ 24931\hline 24932\end{tabulary} 24933\par 24934\sphinxattableend\end{savenotes} 24935 24936 24937\subsubsection{KRB5\_KEYUSAGE\_AS\_REQ} 24938\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:krb5-keyusage-as-req}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:krb5-keyusage-as-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ::doc}}\index{KRB5\_KEYUSAGE\_AS\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AS\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 24939 24940\begin{fulllineitems} 24941\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ:KRB5_KEYUSAGE_AS_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AS\_REQ}}} 24942\end{fulllineitems} 24943 24944 24945 24946\begin{savenotes}\sphinxattablestart 24947\centering 24948\begin{tabulary}{\linewidth}[t]{|T|T|} 24949\hline 24950 24951\sphinxAtStartPar 24952\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AS\_REQ}} 24953& 24954\sphinxAtStartPar 24955\sphinxcode{\sphinxupquote{56}} 24956\\ 24957\hline 24958\end{tabulary} 24959\par 24960\sphinxattableend\end{savenotes} 24961 24962 24963\subsubsection{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS} 24964\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:krb5-keyusage-as-req-pa-enc-ts}}\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}}\index{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}\spxextra{built\sphinxhyphen{}in variable}} 24965 24966\begin{fulllineitems} 24967\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS:KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}}} 24968\end{fulllineitems} 24969 24970 24971 24972\begin{savenotes}\sphinxattablestart 24973\centering 24974\begin{tabulary}{\linewidth}[t]{|T|T|} 24975\hline 24976 24977\sphinxAtStartPar 24978\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_AS\_REQ\_PA\_ENC\_TS}} 24979& 24980\sphinxAtStartPar 24981\sphinxcode{\sphinxupquote{1}} 24982\\ 24983\hline 24984\end{tabulary} 24985\par 24986\sphinxattableend\end{savenotes} 24987 24988 24989\subsubsection{KRB5\_KEYUSAGE\_CAMMAC} 24990\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC:krb5-keyusage-cammac}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC:krb5-keyusage-cammac-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC::doc}}\index{KRB5\_KEYUSAGE\_CAMMAC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_CAMMAC}\spxextra{built\sphinxhyphen{}in variable}} 24991 24992\begin{fulllineitems} 24993\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_CAMMAC:KRB5_KEYUSAGE_CAMMAC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_CAMMAC}}} 24994\end{fulllineitems} 24995 24996 24997 24998\begin{savenotes}\sphinxattablestart 24999\centering 25000\begin{tabulary}{\linewidth}[t]{|T|T|} 25001\hline 25002 25003\sphinxAtStartPar 25004\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_CAMMAC}} 25005& 25006\sphinxAtStartPar 25007\sphinxcode{\sphinxupquote{64}} 25008\\ 25009\hline 25010\end{tabulary} 25011\par 25012\sphinxattableend\end{savenotes} 25013 25014 25015\subsubsection{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT} 25016\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:krb5-keyusage-enc-challenge-client}}\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}}\index{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}\spxextra{built\sphinxhyphen{}in variable}} 25017 25018\begin{fulllineitems} 25019\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT:KRB5_KEYUSAGE_ENC_CHALLENGE_CLIENT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}}} 25020\end{fulllineitems} 25021 25022 25023 25024\begin{savenotes}\sphinxattablestart 25025\centering 25026\begin{tabulary}{\linewidth}[t]{|T|T|} 25027\hline 25028 25029\sphinxAtStartPar 25030\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_CLIENT}} 25031& 25032\sphinxAtStartPar 25033\sphinxcode{\sphinxupquote{54}} 25034\\ 25035\hline 25036\end{tabulary} 25037\par 25038\sphinxattableend\end{savenotes} 25039 25040 25041\subsubsection{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC} 25042\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:krb5-keyusage-enc-challenge-kdc-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC::doc}}\index{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}\spxextra{built\sphinxhyphen{}in variable}} 25043 25044\begin{fulllineitems} 25045\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_ENC_CHALLENGE_KDC:KRB5_KEYUSAGE_ENC_CHALLENGE_KDC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}}} 25046\end{fulllineitems} 25047 25048 25049 25050\begin{savenotes}\sphinxattablestart 25051\centering 25052\begin{tabulary}{\linewidth}[t]{|T|T|} 25053\hline 25054 25055\sphinxAtStartPar 25056\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_ENC\_CHALLENGE\_KDC}} 25057& 25058\sphinxAtStartPar 25059\sphinxcode{\sphinxupquote{55}} 25060\\ 25061\hline 25062\end{tabulary} 25063\par 25064\sphinxattableend\end{savenotes} 25065 25066 25067\subsubsection{KRB5\_KEYUSAGE\_FAST\_ENC} 25068\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:krb5-keyusage-fast-enc}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:krb5-keyusage-fast-enc-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC::doc}}\index{KRB5\_KEYUSAGE\_FAST\_ENC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_FAST\_ENC}\spxextra{built\sphinxhyphen{}in variable}} 25069 25070\begin{fulllineitems} 25071\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_ENC:KRB5_KEYUSAGE_FAST_ENC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_ENC}}} 25072\end{fulllineitems} 25073 25074 25075 25076\begin{savenotes}\sphinxattablestart 25077\centering 25078\begin{tabulary}{\linewidth}[t]{|T|T|} 25079\hline 25080 25081\sphinxAtStartPar 25082\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_ENC}} 25083& 25084\sphinxAtStartPar 25085\sphinxcode{\sphinxupquote{51}} 25086\\ 25087\hline 25088\end{tabulary} 25089\par 25090\sphinxattableend\end{savenotes} 25091 25092 25093\subsubsection{KRB5\_KEYUSAGE\_FAST\_FINISHED} 25094\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:krb5-keyusage-fast-finished}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:krb5-keyusage-fast-finished-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED::doc}}\index{KRB5\_KEYUSAGE\_FAST\_FINISHED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_FAST\_FINISHED}\spxextra{built\sphinxhyphen{}in variable}} 25095 25096\begin{fulllineitems} 25097\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_FINISHED:KRB5_KEYUSAGE_FAST_FINISHED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_FINISHED}}} 25098\end{fulllineitems} 25099 25100 25101 25102\begin{savenotes}\sphinxattablestart 25103\centering 25104\begin{tabulary}{\linewidth}[t]{|T|T|} 25105\hline 25106 25107\sphinxAtStartPar 25108\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_FINISHED}} 25109& 25110\sphinxAtStartPar 25111\sphinxcode{\sphinxupquote{53}} 25112\\ 25113\hline 25114\end{tabulary} 25115\par 25116\sphinxattableend\end{savenotes} 25117 25118 25119\subsubsection{KRB5\_KEYUSAGE\_FAST\_REP} 25120\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:krb5-keyusage-fast-rep}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:krb5-keyusage-fast-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP::doc}}\index{KRB5\_KEYUSAGE\_FAST\_REP (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_FAST\_REP}\spxextra{built\sphinxhyphen{}in variable}} 25121 25122\begin{fulllineitems} 25123\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REP:KRB5_KEYUSAGE_FAST_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_REP}}} 25124\end{fulllineitems} 25125 25126 25127 25128\begin{savenotes}\sphinxattablestart 25129\centering 25130\begin{tabulary}{\linewidth}[t]{|T|T|} 25131\hline 25132 25133\sphinxAtStartPar 25134\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_REP}} 25135& 25136\sphinxAtStartPar 25137\sphinxcode{\sphinxupquote{52}} 25138\\ 25139\hline 25140\end{tabulary} 25141\par 25142\sphinxattableend\end{savenotes} 25143 25144 25145\subsubsection{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM} 25146\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:krb5-keyusage-fast-req-chksum}}\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}}\index{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}\spxextra{built\sphinxhyphen{}in variable}} 25147 25148\begin{fulllineitems} 25149\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_FAST_REQ_CHKSUM:KRB5_KEYUSAGE_FAST_REQ_CHKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}}} 25150\end{fulllineitems} 25151 25152 25153 25154\begin{savenotes}\sphinxattablestart 25155\centering 25156\begin{tabulary}{\linewidth}[t]{|T|T|} 25157\hline 25158 25159\sphinxAtStartPar 25160\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_FAST\_REQ\_CHKSUM}} 25161& 25162\sphinxAtStartPar 25163\sphinxcode{\sphinxupquote{50}} 25164\\ 25165\hline 25166\end{tabulary} 25167\par 25168\sphinxattableend\end{savenotes} 25169 25170 25171\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC} 25172\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:krb5-keyusage-gss-tok-mic-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC::doc}}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}\spxextra{built\sphinxhyphen{}in variable}} 25173 25174\begin{fulllineitems} 25175\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_MIC:KRB5_KEYUSAGE_GSS_TOK_MIC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}}} 25176\end{fulllineitems} 25177 25178 25179 25180\begin{savenotes}\sphinxattablestart 25181\centering 25182\begin{tabulary}{\linewidth}[t]{|T|T|} 25183\hline 25184 25185\sphinxAtStartPar 25186\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_GSS\_TOK\_MIC}} 25187& 25188\sphinxAtStartPar 25189\sphinxcode{\sphinxupquote{22}} 25190\\ 25191\hline 25192\end{tabulary} 25193\par 25194\sphinxattableend\end{savenotes} 25195 25196 25197\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG} 25198\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG::doc}}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}\spxextra{built\sphinxhyphen{}in variable}} 25199 25200\begin{fulllineitems} 25201\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG:KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}}} 25202\end{fulllineitems} 25203 25204 25205 25206\begin{savenotes}\sphinxattablestart 25207\centering 25208\begin{tabulary}{\linewidth}[t]{|T|T|} 25209\hline 25210 25211\sphinxAtStartPar 25212\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_INTEG}} 25213& 25214\sphinxAtStartPar 25215\sphinxcode{\sphinxupquote{23}} 25216\\ 25217\hline 25218\end{tabulary} 25219\par 25220\sphinxattableend\end{savenotes} 25221 25222 25223\subsubsection{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV} 25224\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:krb5-keyusage-gss-tok-wrap-priv}}\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}}\index{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}\spxextra{built\sphinxhyphen{}in variable}} 25225 25226\begin{fulllineitems} 25227\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV:KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}}} 25228\end{fulllineitems} 25229 25230 25231 25232\begin{savenotes}\sphinxattablestart 25233\centering 25234\begin{tabulary}{\linewidth}[t]{|T|T|} 25235\hline 25236 25237\sphinxAtStartPar 25238\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_GSS\_TOK\_WRAP\_PRIV}} 25239& 25240\sphinxAtStartPar 25241\sphinxcode{\sphinxupquote{24}} 25242\\ 25243\hline 25244\end{tabulary} 25245\par 25246\sphinxattableend\end{savenotes} 25247 25248 25249\subsubsection{KRB5\_KEYUSAGE\_IAKERB\_FINISHED} 25250\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:krb5-keyusage-iakerb-finished}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:krb5-keyusage-iakerb-finished-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED::doc}}\index{KRB5\_KEYUSAGE\_IAKERB\_FINISHED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}\spxextra{built\sphinxhyphen{}in variable}} 25251 25252\begin{fulllineitems} 25253\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_IAKERB_FINISHED:KRB5_KEYUSAGE_IAKERB_FINISHED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}}} 25254\end{fulllineitems} 25255 25256 25257 25258\begin{savenotes}\sphinxattablestart 25259\centering 25260\begin{tabulary}{\linewidth}[t]{|T|T|} 25261\hline 25262 25263\sphinxAtStartPar 25264\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_IAKERB\_FINISHED}} 25265& 25266\sphinxAtStartPar 25267\sphinxcode{\sphinxupquote{42}} 25268\\ 25269\hline 25270\end{tabulary} 25271\par 25272\sphinxattableend\end{savenotes} 25273 25274 25275\subsubsection{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET} 25276\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:krb5-keyusage-kdc-rep-ticket}}\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::doc}}\index{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}\spxextra{built\sphinxhyphen{}in variable}} 25277 25278\begin{fulllineitems} 25279\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KDC_REP_TICKET:KRB5_KEYUSAGE_KDC_REP_TICKET}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}}} 25280\end{fulllineitems} 25281 25282 25283 25284\begin{savenotes}\sphinxattablestart 25285\centering 25286\begin{tabulary}{\linewidth}[t]{|T|T|} 25287\hline 25288 25289\sphinxAtStartPar 25290\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_KDC\_REP\_TICKET}} 25291& 25292\sphinxAtStartPar 25293\sphinxcode{\sphinxupquote{2}} 25294\\ 25295\hline 25296\end{tabulary} 25297\par 25298\sphinxattableend\end{savenotes} 25299 25300 25301\subsubsection{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART} 25302\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:krb5-keyusage-krb-cred-encpart}}\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}}\index{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}\spxextra{built\sphinxhyphen{}in variable}} 25303 25304\begin{fulllineitems} 25305\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_CRED_ENCPART:KRB5_KEYUSAGE_KRB_CRED_ENCPART}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}}} 25306\end{fulllineitems} 25307 25308 25309 25310\begin{savenotes}\sphinxattablestart 25311\centering 25312\begin{tabulary}{\linewidth}[t]{|T|T|} 25313\hline 25314 25315\sphinxAtStartPar 25316\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_CRED\_ENCPART}} 25317& 25318\sphinxAtStartPar 25319\sphinxcode{\sphinxupquote{14}} 25320\\ 25321\hline 25322\end{tabulary} 25323\par 25324\sphinxattableend\end{savenotes} 25325 25326 25327\subsubsection{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM} 25328\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:krb5-keyusage-krb-error-cksum}}\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}}\index{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 25329 25330\begin{fulllineitems} 25331\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_ERROR_CKSUM:KRB5_KEYUSAGE_KRB_ERROR_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}}} 25332\end{fulllineitems} 25333 25334 25335 25336\begin{savenotes}\sphinxattablestart 25337\centering 25338\begin{tabulary}{\linewidth}[t]{|T|T|} 25339\hline 25340 25341\sphinxAtStartPar 25342\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_ERROR\_CKSUM}} 25343& 25344\sphinxAtStartPar 25345\sphinxcode{\sphinxupquote{18}} 25346\\ 25347\hline 25348\end{tabulary} 25349\par 25350\sphinxattableend\end{savenotes} 25351 25352 25353\subsubsection{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART} 25354\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}\spxextra{built\sphinxhyphen{}in variable}} 25355 25356\begin{fulllineitems} 25357\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_PRIV_ENCPART:KRB5_KEYUSAGE_KRB_PRIV_ENCPART}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}}} 25358\end{fulllineitems} 25359 25360 25361 25362\begin{savenotes}\sphinxattablestart 25363\centering 25364\begin{tabulary}{\linewidth}[t]{|T|T|} 25365\hline 25366 25367\sphinxAtStartPar 25368\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_PRIV\_ENCPART}} 25369& 25370\sphinxAtStartPar 25371\sphinxcode{\sphinxupquote{13}} 25372\\ 25373\hline 25374\end{tabulary} 25375\par 25376\sphinxattableend\end{savenotes} 25377 25378 25379\subsubsection{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM} 25380\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:krb5-keyusage-krb-safe-cksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM::doc}}\index{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 25381 25382\begin{fulllineitems} 25383\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_KRB_SAFE_CKSUM:KRB5_KEYUSAGE_KRB_SAFE_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}}} 25384\end{fulllineitems} 25385 25386 25387 25388\begin{savenotes}\sphinxattablestart 25389\centering 25390\begin{tabulary}{\linewidth}[t]{|T|T|} 25391\hline 25392 25393\sphinxAtStartPar 25394\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_KRB\_SAFE\_CKSUM}} 25395& 25396\sphinxAtStartPar 25397\sphinxcode{\sphinxupquote{15}} 25398\\ 25399\hline 25400\end{tabulary} 25401\par 25402\sphinxattableend\end{savenotes} 25403 25404 25405\subsubsection{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS} 25406\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS}\spxextra{built\sphinxhyphen{}in variable}} 25407 25408\begin{fulllineitems} 25409\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_AS_FRESHNESS:KRB5_KEYUSAGE_PA_AS_FRESHNESS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS}}} 25410\end{fulllineitems} 25411 25412 25413\sphinxAtStartPar 25414Used for freshness tokens. 25415 25416 25417\begin{savenotes}\sphinxattablestart 25418\centering 25419\begin{tabulary}{\linewidth}[t]{|T|T|} 25420\hline 25421 25422\sphinxAtStartPar 25423\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_AS\_FRESHNESS}} 25424& 25425\sphinxAtStartPar 25426\sphinxcode{\sphinxupquote{514}} 25427\\ 25428\hline 25429\end{tabulary} 25430\par 25431\sphinxattableend\end{savenotes} 25432 25433 25434\subsubsection{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE} 25435\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE::doc}}\index{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE}\spxextra{built\sphinxhyphen{}in variable}} 25436 25437\begin{fulllineitems} 25438\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_FX_COOKIE:KRB5_KEYUSAGE_PA_FX_COOKIE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE}}} 25439\end{fulllineitems} 25440 25441 25442\sphinxAtStartPar 25443Used for encrypted FAST cookies. 25444 25445 25446\begin{savenotes}\sphinxattablestart 25447\centering 25448\begin{tabulary}{\linewidth}[t]{|T|T|} 25449\hline 25450 25451\sphinxAtStartPar 25452\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_FX\_COOKIE}} 25453& 25454\sphinxAtStartPar 25455\sphinxcode{\sphinxupquote{513}} 25456\\ 25457\hline 25458\end{tabulary} 25459\par 25460\sphinxattableend\end{savenotes} 25461 25462 25463\subsubsection{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST} 25464\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}\spxextra{built\sphinxhyphen{}in variable}} 25465 25466\begin{fulllineitems} 25467\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_OTP_REQUEST:KRB5_KEYUSAGE_PA_OTP_REQUEST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}}} 25468\end{fulllineitems} 25469 25470 25471\sphinxAtStartPar 25472See RFC 6560 section 4.2. 25473 25474 25475\begin{savenotes}\sphinxattablestart 25476\centering 25477\begin{tabulary}{\linewidth}[t]{|T|T|} 25478\hline 25479 25480\sphinxAtStartPar 25481\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_OTP\_REQUEST}} 25482& 25483\sphinxAtStartPar 25484\sphinxcode{\sphinxupquote{45}} 25485\\ 25486\hline 25487\end{tabulary} 25488\par 25489\sphinxattableend\end{savenotes} 25490 25491 25492\subsubsection{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX} 25493\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:krb5-keyusage-pa-pkinit-kx}}\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::doc}}\index{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}\spxextra{built\sphinxhyphen{}in variable}} 25494 25495\begin{fulllineitems} 25496\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_PKINIT_KX:KRB5_KEYUSAGE_PA_PKINIT_KX}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}}} 25497\end{fulllineitems} 25498 25499 25500 25501\begin{savenotes}\sphinxattablestart 25502\centering 25503\begin{tabulary}{\linewidth}[t]{|T|T|} 25504\hline 25505 25506\sphinxAtStartPar 25507\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_PKINIT\_KX}} 25508& 25509\sphinxAtStartPar 25510\sphinxcode{\sphinxupquote{44}} 25511\\ 25512\hline 25513\end{tabulary} 25514\par 25515\sphinxattableend\end{savenotes} 25516 25517 25518\subsubsection{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY} 25519\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:krb5-keyusage-pa-s4u-x509-user-reply-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY::doc}}\index{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}\spxextra{built\sphinxhyphen{}in variable}} 25520 25521\begin{fulllineitems} 25522\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY:KRB5_KEYUSAGE_PA_S4U_X509_USER_REPLY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}}} 25523\end{fulllineitems} 25524 25525 25526 25527\begin{savenotes}\sphinxattablestart 25528\centering 25529\begin{tabulary}{\linewidth}[t]{|T|T|} 25530\hline 25531 25532\sphinxAtStartPar 25533\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REPLY}} 25534& 25535\sphinxAtStartPar 25536\sphinxcode{\sphinxupquote{27}} 25537\\ 25538\hline 25539\end{tabulary} 25540\par 25541\sphinxattableend\end{savenotes} 25542 25543 25544\subsubsection{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST} 25545\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST::doc}}\index{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}\spxextra{built\sphinxhyphen{}in variable}} 25546 25547\begin{fulllineitems} 25548\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST:KRB5_KEYUSAGE_PA_S4U_X509_USER_REQUEST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}}} 25549\end{fulllineitems} 25550 25551 25552 25553\begin{savenotes}\sphinxattablestart 25554\centering 25555\begin{tabulary}{\linewidth}[t]{|T|T|} 25556\hline 25557 25558\sphinxAtStartPar 25559\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_S4U\_X509\_USER\_REQUEST}} 25560& 25561\sphinxAtStartPar 25562\sphinxcode{\sphinxupquote{26}} 25563\\ 25564\hline 25565\end{tabulary} 25566\par 25567\sphinxattableend\end{savenotes} 25568 25569 25570\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM} 25571\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:krb5-keyusage-pa-sam-challenge-cksum}}\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::doc}}\index{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 25572 25573\begin{fulllineitems} 25574\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM:KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}}} 25575\end{fulllineitems} 25576 25577 25578 25579\begin{savenotes}\sphinxattablestart 25580\centering 25581\begin{tabulary}{\linewidth}[t]{|T|T|} 25582\hline 25583 25584\sphinxAtStartPar 25585\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_CKSUM}} 25586& 25587\sphinxAtStartPar 25588\sphinxcode{\sphinxupquote{25}} 25589\\ 25590\hline 25591\end{tabulary} 25592\par 25593\sphinxattableend\end{savenotes} 25594 25595 25596\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID} 25597\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}\spxextra{built\sphinxhyphen{}in variable}} 25598 25599\begin{fulllineitems} 25600\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID:KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}}} 25601\end{fulllineitems} 25602 25603 25604 25605\begin{savenotes}\sphinxattablestart 25606\centering 25607\begin{tabulary}{\linewidth}[t]{|T|T|} 25608\hline 25609 25610\sphinxAtStartPar 25611\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_SAM\_CHALLENGE\_TRACKID}} 25612& 25613\sphinxAtStartPar 25614\sphinxcode{\sphinxupquote{26}} 25615\\ 25616\hline 25617\end{tabulary} 25618\par 25619\sphinxattableend\end{savenotes} 25620 25621 25622\subsubsection{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE} 25623\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:krb5-keyusage-pa-sam-response-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE::doc}}\index{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}\spxextra{built\sphinxhyphen{}in variable}} 25624 25625\begin{fulllineitems} 25626\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_PA_SAM_RESPONSE:KRB5_KEYUSAGE_PA_SAM_RESPONSE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}}} 25627\end{fulllineitems} 25628 25629 25630 25631\begin{savenotes}\sphinxattablestart 25632\centering 25633\begin{tabulary}{\linewidth}[t]{|T|T|} 25634\hline 25635 25636\sphinxAtStartPar 25637\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_PA\_SAM\_RESPONSE}} 25638& 25639\sphinxAtStartPar 25640\sphinxcode{\sphinxupquote{27}} 25641\\ 25642\hline 25643\end{tabulary} 25644\par 25645\sphinxattableend\end{savenotes} 25646 25647 25648\subsubsection{KRB5\_KEYUSAGE\_SPAKE} 25649\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_SPAKE}\spxextra{built\sphinxhyphen{}in variable}} 25650 25651\begin{fulllineitems} 25652\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_SPAKE:KRB5_KEYUSAGE_SPAKE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_SPAKE}}} 25653\end{fulllineitems} 25654 25655 25656 25657\begin{savenotes}\sphinxattablestart 25658\centering 25659\begin{tabulary}{\linewidth}[t]{|T|T|} 25660\hline 25661 25662\sphinxAtStartPar 25663\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_SPAKE}} 25664& 25665\sphinxAtStartPar 25666\sphinxcode{\sphinxupquote{65}} 25667\\ 25668\hline 25669\end{tabulary} 25670\par 25671\sphinxattableend\end{savenotes} 25672 25673 25674\subsubsection{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY} 25675\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}\spxextra{built\sphinxhyphen{}in variable}} 25676 25677\begin{fulllineitems} 25678\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY:KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}}} 25679\end{fulllineitems} 25680 25681 25682 25683\begin{savenotes}\sphinxattablestart 25684\centering 25685\begin{tabulary}{\linewidth}[t]{|T|T|} 25686\hline 25687 25688\sphinxAtStartPar 25689\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SESSKEY}} 25690& 25691\sphinxAtStartPar 25692\sphinxcode{\sphinxupquote{8}} 25693\\ 25694\hline 25695\end{tabulary} 25696\par 25697\sphinxattableend\end{savenotes} 25698 25699 25700\subsubsection{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY} 25701\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:krb5-keyusage-tgs-rep-encpart-subkey}}\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}}\index{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}\spxextra{built\sphinxhyphen{}in variable}} 25702 25703\begin{fulllineitems} 25704\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY:KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}}} 25705\end{fulllineitems} 25706 25707 25708 25709\begin{savenotes}\sphinxattablestart 25710\centering 25711\begin{tabulary}{\linewidth}[t]{|T|T|} 25712\hline 25713 25714\sphinxAtStartPar 25715\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REP\_ENCPART\_SUBKEY}} 25716& 25717\sphinxAtStartPar 25718\sphinxcode{\sphinxupquote{9}} 25719\\ 25720\hline 25721\end{tabulary} 25722\par 25723\sphinxattableend\end{savenotes} 25724 25725 25726\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY} 25727\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY::doc}}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}\spxextra{built\sphinxhyphen{}in variable}} 25728 25729\begin{fulllineitems} 25730\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY:KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}}} 25731\end{fulllineitems} 25732 25733 25734 25735\begin{savenotes}\sphinxattablestart 25736\centering 25737\begin{tabulary}{\linewidth}[t]{|T|T|} 25738\hline 25739 25740\sphinxAtStartPar 25741\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SESSKEY}} 25742& 25743\sphinxAtStartPar 25744\sphinxcode{\sphinxupquote{4}} 25745\\ 25746\hline 25747\end{tabulary} 25748\par 25749\sphinxattableend\end{savenotes} 25750 25751 25752\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY} 25753\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:krb5-keyusage-tgs-req-ad-subkey-data}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY::doc}}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}\spxextra{built\sphinxhyphen{}in variable}} 25754 25755\begin{fulllineitems} 25756\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY:KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}}} 25757\end{fulllineitems} 25758 25759 25760 25761\begin{savenotes}\sphinxattablestart 25762\centering 25763\begin{tabulary}{\linewidth}[t]{|T|T|} 25764\hline 25765 25766\sphinxAtStartPar 25767\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AD\_SUBKEY}} 25768& 25769\sphinxAtStartPar 25770\sphinxcode{\sphinxupquote{5}} 25771\\ 25772\hline 25773\end{tabulary} 25774\par 25775\sphinxattableend\end{savenotes} 25776 25777 25778\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH} 25779\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}}\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH::doc}}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}\spxextra{built\sphinxhyphen{}in variable}} 25780 25781\begin{fulllineitems} 25782\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH:KRB5_KEYUSAGE_TGS_REQ_AUTH}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}}} 25783\end{fulllineitems} 25784 25785 25786 25787\begin{savenotes}\sphinxattablestart 25788\centering 25789\begin{tabulary}{\linewidth}[t]{|T|T|} 25790\hline 25791 25792\sphinxAtStartPar 25793\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH}} 25794& 25795\sphinxAtStartPar 25796\sphinxcode{\sphinxupquote{7}} 25797\\ 25798\hline 25799\end{tabulary} 25800\par 25801\sphinxattableend\end{savenotes} 25802 25803 25804\subsubsection{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM} 25805\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:krb5-keyusage-tgs-req-auth-cksum}}\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}}\index{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}\spxextra{built\sphinxhyphen{}in variable}} 25806 25807\begin{fulllineitems} 25808\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM:KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}}} 25809\end{fulllineitems} 25810 25811 25812 25813\begin{savenotes}\sphinxattablestart 25814\centering 25815\begin{tabulary}{\linewidth}[t]{|T|T|} 25816\hline 25817 25818\sphinxAtStartPar 25819\sphinxcode{\sphinxupquote{KRB5\_KEYUSAGE\_TGS\_REQ\_AUTH\_CKSUM}} 25820& 25821\sphinxAtStartPar 25822\sphinxcode{\sphinxupquote{6}} 25823\\ 25824\hline 25825\end{tabulary} 25826\par 25827\sphinxattableend\end{savenotes} 25828 25829 25830\subsubsection{KRB5\_KPASSWD\_ACCESSDENIED} 25831\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_ACCESSDENIED}\spxextra{built\sphinxhyphen{}in variable}} 25832 25833\begin{fulllineitems} 25834\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_ACCESSDENIED:KRB5_KPASSWD_ACCESSDENIED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_ACCESSDENIED}}} 25835\end{fulllineitems} 25836 25837 25838\sphinxAtStartPar 25839Not authorized. 25840 25841 25842\begin{savenotes}\sphinxattablestart 25843\centering 25844\begin{tabulary}{\linewidth}[t]{|T|T|} 25845\hline 25846 25847\sphinxAtStartPar 25848\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_ACCESSDENIED}} 25849& 25850\sphinxAtStartPar 25851\sphinxcode{\sphinxupquote{5}} 25852\\ 25853\hline 25854\end{tabulary} 25855\par 25856\sphinxattableend\end{savenotes} 25857 25858 25859\subsubsection{KRB5\_KPASSWD\_AUTHERROR} 25860\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:krb5-kpasswd-autherror}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:krb5-kpasswd-autherror-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR::doc}}\index{KRB5\_KPASSWD\_AUTHERROR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_AUTHERROR}\spxextra{built\sphinxhyphen{}in variable}} 25861 25862\begin{fulllineitems} 25863\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_AUTHERROR:KRB5_KPASSWD_AUTHERROR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_AUTHERROR}}} 25864\end{fulllineitems} 25865 25866 25867\sphinxAtStartPar 25868Authentication error. 25869 25870 25871\begin{savenotes}\sphinxattablestart 25872\centering 25873\begin{tabulary}{\linewidth}[t]{|T|T|} 25874\hline 25875 25876\sphinxAtStartPar 25877\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_AUTHERROR}} 25878& 25879\sphinxAtStartPar 25880\sphinxcode{\sphinxupquote{3}} 25881\\ 25882\hline 25883\end{tabulary} 25884\par 25885\sphinxattableend\end{savenotes} 25886 25887 25888\subsubsection{KRB5\_KPASSWD\_BAD\_VERSION} 25889\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:krb5-kpasswd-bad-version}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:krb5-kpasswd-bad-version-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION::doc}}\index{KRB5\_KPASSWD\_BAD\_VERSION (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_BAD\_VERSION}\spxextra{built\sphinxhyphen{}in variable}} 25890 25891\begin{fulllineitems} 25892\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_BAD_VERSION:KRB5_KPASSWD_BAD_VERSION}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_BAD\_VERSION}}} 25893\end{fulllineitems} 25894 25895 25896\sphinxAtStartPar 25897Unknown RPC version. 25898 25899 25900\begin{savenotes}\sphinxattablestart 25901\centering 25902\begin{tabulary}{\linewidth}[t]{|T|T|} 25903\hline 25904 25905\sphinxAtStartPar 25906\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_BAD\_VERSION}} 25907& 25908\sphinxAtStartPar 25909\sphinxcode{\sphinxupquote{6}} 25910\\ 25911\hline 25912\end{tabulary} 25913\par 25914\sphinxattableend\end{savenotes} 25915 25916 25917\subsubsection{KRB5\_KPASSWD\_HARDERROR} 25918\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_HARDERROR}\spxextra{built\sphinxhyphen{}in variable}} 25919 25920\begin{fulllineitems} 25921\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_HARDERROR:KRB5_KPASSWD_HARDERROR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_HARDERROR}}} 25922\end{fulllineitems} 25923 25924 25925\sphinxAtStartPar 25926Server error. 25927 25928 25929\begin{savenotes}\sphinxattablestart 25930\centering 25931\begin{tabulary}{\linewidth}[t]{|T|T|} 25932\hline 25933 25934\sphinxAtStartPar 25935\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_HARDERROR}} 25936& 25937\sphinxAtStartPar 25938\sphinxcode{\sphinxupquote{2}} 25939\\ 25940\hline 25941\end{tabulary} 25942\par 25943\sphinxattableend\end{savenotes} 25944 25945 25946\subsubsection{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED} 25947\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:krb5-kpasswd-initial-flag-needed-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED::doc}}\index{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}\spxextra{built\sphinxhyphen{}in variable}} 25948 25949\begin{fulllineitems} 25950\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_INITIAL_FLAG_NEEDED:KRB5_KPASSWD_INITIAL_FLAG_NEEDED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}}} 25951\end{fulllineitems} 25952 25953 25954\sphinxAtStartPar 25955The presented credentials were not obtained using a password directly. 25956 25957 25958\begin{savenotes}\sphinxattablestart 25959\centering 25960\begin{tabulary}{\linewidth}[t]{|T|T|} 25961\hline 25962 25963\sphinxAtStartPar 25964\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_INITIAL\_FLAG\_NEEDED}} 25965& 25966\sphinxAtStartPar 25967\sphinxcode{\sphinxupquote{7}} 25968\\ 25969\hline 25970\end{tabulary} 25971\par 25972\sphinxattableend\end{savenotes} 25973 25974 25975\subsubsection{KRB5\_KPASSWD\_MALFORMED} 25976\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:krb5-kpasswd-malformed}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:krb5-kpasswd-malformed-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED::doc}}\index{KRB5\_KPASSWD\_MALFORMED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_MALFORMED}\spxextra{built\sphinxhyphen{}in variable}} 25977 25978\begin{fulllineitems} 25979\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_MALFORMED:KRB5_KPASSWD_MALFORMED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_MALFORMED}}} 25980\end{fulllineitems} 25981 25982 25983\sphinxAtStartPar 25984Malformed request. 25985 25986 25987\begin{savenotes}\sphinxattablestart 25988\centering 25989\begin{tabulary}{\linewidth}[t]{|T|T|} 25990\hline 25991 25992\sphinxAtStartPar 25993\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_MALFORMED}} 25994& 25995\sphinxAtStartPar 25996\sphinxcode{\sphinxupquote{1}} 25997\\ 25998\hline 25999\end{tabulary} 26000\par 26001\sphinxattableend\end{savenotes} 26002 26003 26004\subsubsection{KRB5\_KPASSWD\_SOFTERROR} 26005\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:krb5-kpasswd-softerror}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:krb5-kpasswd-softerror-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR::doc}}\index{KRB5\_KPASSWD\_SOFTERROR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_SOFTERROR}\spxextra{built\sphinxhyphen{}in variable}} 26006 26007\begin{fulllineitems} 26008\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SOFTERROR:KRB5_KPASSWD_SOFTERROR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_SOFTERROR}}} 26009\end{fulllineitems} 26010 26011 26012\sphinxAtStartPar 26013Password change rejected. 26014 26015 26016\begin{savenotes}\sphinxattablestart 26017\centering 26018\begin{tabulary}{\linewidth}[t]{|T|T|} 26019\hline 26020 26021\sphinxAtStartPar 26022\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_SOFTERROR}} 26023& 26024\sphinxAtStartPar 26025\sphinxcode{\sphinxupquote{4}} 26026\\ 26027\hline 26028\end{tabulary} 26029\par 26030\sphinxattableend\end{savenotes} 26031 26032 26033\subsubsection{KRB5\_KPASSWD\_SUCCESS} 26034\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:krb5-kpasswd-success}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:krb5-kpasswd-success-data}}\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS::doc}}\index{KRB5\_KPASSWD\_SUCCESS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_KPASSWD\_SUCCESS}\spxextra{built\sphinxhyphen{}in variable}} 26035 26036\begin{fulllineitems} 26037\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_KPASSWD_SUCCESS:KRB5_KPASSWD_SUCCESS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_KPASSWD\_SUCCESS}}} 26038\end{fulllineitems} 26039 26040 26041\sphinxAtStartPar 26042Success. 26043 26044 26045\begin{savenotes}\sphinxattablestart 26046\centering 26047\begin{tabulary}{\linewidth}[t]{|T|T|} 26048\hline 26049 26050\sphinxAtStartPar 26051\sphinxcode{\sphinxupquote{KRB5\_KPASSWD\_SUCCESS}} 26052& 26053\sphinxAtStartPar 26054\sphinxcode{\sphinxupquote{0}} 26055\\ 26056\hline 26057\end{tabulary} 26058\par 26059\sphinxattableend\end{savenotes} 26060 26061 26062\subsubsection{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME} 26063\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}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME::doc}}\index{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}\spxextra{built\sphinxhyphen{}in variable}} 26064 26065\begin{fulllineitems} 26066\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_ACCT_EXPTIME:KRB5_LRQ_ALL_ACCT_EXPTIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}}} 26067\end{fulllineitems} 26068 26069 26070 26071\begin{savenotes}\sphinxattablestart 26072\centering 26073\begin{tabulary}{\linewidth}[t]{|T|T|} 26074\hline 26075 26076\sphinxAtStartPar 26077\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_ACCT\_EXPTIME}} 26078& 26079\sphinxAtStartPar 26080\sphinxcode{\sphinxupquote{7}} 26081\\ 26082\hline 26083\end{tabulary} 26084\par 26085\sphinxattableend\end{savenotes} 26086 26087 26088\subsubsection{KRB5\_LRQ\_ALL\_LAST\_INITIAL} 26089\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}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL::doc}}\index{KRB5\_LRQ\_ALL\_LAST\_INITIAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_LAST\_INITIAL}\spxextra{built\sphinxhyphen{}in variable}} 26090 26091\begin{fulllineitems} 26092\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_INITIAL:KRB5_LRQ_ALL_LAST_INITIAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_INITIAL}}} 26093\end{fulllineitems} 26094 26095 26096 26097\begin{savenotes}\sphinxattablestart 26098\centering 26099\begin{tabulary}{\linewidth}[t]{|T|T|} 26100\hline 26101 26102\sphinxAtStartPar 26103\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_INITIAL}} 26104& 26105\sphinxAtStartPar 26106\sphinxcode{\sphinxupquote{2}} 26107\\ 26108\hline 26109\end{tabulary} 26110\par 26111\sphinxattableend\end{savenotes} 26112 26113 26114\subsubsection{KRB5\_LRQ\_ALL\_LAST\_RENEWAL} 26115\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}\spxextra{built\sphinxhyphen{}in variable}} 26116 26117\begin{fulllineitems} 26118\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_RENEWAL:KRB5_LRQ_ALL_LAST_RENEWAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}}} 26119\end{fulllineitems} 26120 26121 26122 26123\begin{savenotes}\sphinxattablestart 26124\centering 26125\begin{tabulary}{\linewidth}[t]{|T|T|} 26126\hline 26127 26128\sphinxAtStartPar 26129\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_RENEWAL}} 26130& 26131\sphinxAtStartPar 26132\sphinxcode{\sphinxupquote{4}} 26133\\ 26134\hline 26135\end{tabulary} 26136\par 26137\sphinxattableend\end{savenotes} 26138 26139 26140\subsubsection{KRB5\_LRQ\_ALL\_LAST\_REQ} 26141\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}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ::doc}}\index{KRB5\_LRQ\_ALL\_LAST\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_LAST\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 26142 26143\begin{fulllineitems} 26144\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_REQ:KRB5_LRQ_ALL_LAST_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_REQ}}} 26145\end{fulllineitems} 26146 26147 26148 26149\begin{savenotes}\sphinxattablestart 26150\centering 26151\begin{tabulary}{\linewidth}[t]{|T|T|} 26152\hline 26153 26154\sphinxAtStartPar 26155\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_REQ}} 26156& 26157\sphinxAtStartPar 26158\sphinxcode{\sphinxupquote{5}} 26159\\ 26160\hline 26161\end{tabulary} 26162\par 26163\sphinxattableend\end{savenotes} 26164 26165 26166\subsubsection{KRB5\_LRQ\_ALL\_LAST\_TGT} 26167\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:krb5-lrq-all-last-tgt-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT::doc}}\index{KRB5\_LRQ\_ALL\_LAST\_TGT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_LAST\_TGT}\spxextra{built\sphinxhyphen{}in variable}} 26168 26169\begin{fulllineitems} 26170\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT:KRB5_LRQ_ALL_LAST_TGT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_TGT}}} 26171\end{fulllineitems} 26172 26173 26174 26175\begin{savenotes}\sphinxattablestart 26176\centering 26177\begin{tabulary}{\linewidth}[t]{|T|T|} 26178\hline 26179 26180\sphinxAtStartPar 26181\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_TGT}} 26182& 26183\sphinxAtStartPar 26184\sphinxcode{\sphinxupquote{1}} 26185\\ 26186\hline 26187\end{tabulary} 26188\par 26189\sphinxattableend\end{savenotes} 26190 26191 26192\subsubsection{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED} 26193\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}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED::doc}}\index{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}\spxextra{built\sphinxhyphen{}in variable}} 26194 26195\begin{fulllineitems} 26196\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_LAST_TGT_ISSUED:KRB5_LRQ_ALL_LAST_TGT_ISSUED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}}} 26197\end{fulllineitems} 26198 26199 26200 26201\begin{savenotes}\sphinxattablestart 26202\centering 26203\begin{tabulary}{\linewidth}[t]{|T|T|} 26204\hline 26205 26206\sphinxAtStartPar 26207\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_LAST\_TGT\_ISSUED}} 26208& 26209\sphinxAtStartPar 26210\sphinxcode{\sphinxupquote{3}} 26211\\ 26212\hline 26213\end{tabulary} 26214\par 26215\sphinxattableend\end{savenotes} 26216 26217 26218\subsubsection{KRB5\_LRQ\_ALL\_PW\_EXPTIME} 26219\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:krb5-lrq-all-pw-exptime}}\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}}\index{KRB5\_LRQ\_ALL\_PW\_EXPTIME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ALL\_PW\_EXPTIME}\spxextra{built\sphinxhyphen{}in variable}} 26220 26221\begin{fulllineitems} 26222\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ALL_PW_EXPTIME:KRB5_LRQ_ALL_PW_EXPTIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ALL\_PW\_EXPTIME}}} 26223\end{fulllineitems} 26224 26225 26226 26227\begin{savenotes}\sphinxattablestart 26228\centering 26229\begin{tabulary}{\linewidth}[t]{|T|T|} 26230\hline 26231 26232\sphinxAtStartPar 26233\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ALL\_PW\_EXPTIME}} 26234& 26235\sphinxAtStartPar 26236\sphinxcode{\sphinxupquote{6}} 26237\\ 26238\hline 26239\end{tabulary} 26240\par 26241\sphinxattableend\end{savenotes} 26242 26243 26244\subsubsection{KRB5\_LRQ\_NONE} 26245\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE:krb5-lrq-none}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE:krb5-lrq-none-data}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE::doc}}\index{KRB5\_LRQ\_NONE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_NONE}\spxextra{built\sphinxhyphen{}in variable}} 26246 26247\begin{fulllineitems} 26248\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_NONE:KRB5_LRQ_NONE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_NONE}}} 26249\end{fulllineitems} 26250 26251 26252 26253\begin{savenotes}\sphinxattablestart 26254\centering 26255\begin{tabulary}{\linewidth}[t]{|T|T|} 26256\hline 26257 26258\sphinxAtStartPar 26259\sphinxcode{\sphinxupquote{KRB5\_LRQ\_NONE}} 26260& 26261\sphinxAtStartPar 26262\sphinxcode{\sphinxupquote{0}} 26263\\ 26264\hline 26265\end{tabulary} 26266\par 26267\sphinxattableend\end{savenotes} 26268 26269 26270\subsubsection{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME} 26271\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}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME::doc}}\index{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}\spxextra{built\sphinxhyphen{}in variable}} 26272 26273\begin{fulllineitems} 26274\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_ACCT_EXPTIME:KRB5_LRQ_ONE_ACCT_EXPTIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}}} 26275\end{fulllineitems} 26276 26277 26278 26279\begin{savenotes}\sphinxattablestart 26280\centering 26281\begin{tabulary}{\linewidth}[t]{|T|T|} 26282\hline 26283 26284\sphinxAtStartPar 26285\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_ACCT\_EXPTIME}} 26286& 26287\sphinxAtStartPar 26288\sphinxcode{\sphinxupquote{(\sphinxhyphen{}7)}} 26289\\ 26290\hline 26291\end{tabulary} 26292\par 26293\sphinxattableend\end{savenotes} 26294 26295 26296\subsubsection{KRB5\_LRQ\_ONE\_LAST\_INITIAL} 26297\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:krb5-lrq-one-last-initial}}\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}}\index{KRB5\_LRQ\_ONE\_LAST\_INITIAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_LAST\_INITIAL}\spxextra{built\sphinxhyphen{}in variable}} 26298 26299\begin{fulllineitems} 26300\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_INITIAL:KRB5_LRQ_ONE_LAST_INITIAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_INITIAL}}} 26301\end{fulllineitems} 26302 26303 26304 26305\begin{savenotes}\sphinxattablestart 26306\centering 26307\begin{tabulary}{\linewidth}[t]{|T|T|} 26308\hline 26309 26310\sphinxAtStartPar 26311\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_INITIAL}} 26312& 26313\sphinxAtStartPar 26314\sphinxcode{\sphinxupquote{(\sphinxhyphen{}2)}} 26315\\ 26316\hline 26317\end{tabulary} 26318\par 26319\sphinxattableend\end{savenotes} 26320 26321 26322\subsubsection{KRB5\_LRQ\_ONE\_LAST\_RENEWAL} 26323\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:krb5-lrq-one-last-renewal}}\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}}\index{KRB5\_LRQ\_ONE\_LAST\_RENEWAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}\spxextra{built\sphinxhyphen{}in variable}} 26324 26325\begin{fulllineitems} 26326\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_RENEWAL:KRB5_LRQ_ONE_LAST_RENEWAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}}} 26327\end{fulllineitems} 26328 26329 26330 26331\begin{savenotes}\sphinxattablestart 26332\centering 26333\begin{tabulary}{\linewidth}[t]{|T|T|} 26334\hline 26335 26336\sphinxAtStartPar 26337\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_RENEWAL}} 26338& 26339\sphinxAtStartPar 26340\sphinxcode{\sphinxupquote{(\sphinxhyphen{}4)}} 26341\\ 26342\hline 26343\end{tabulary} 26344\par 26345\sphinxattableend\end{savenotes} 26346 26347 26348\subsubsection{KRB5\_LRQ\_ONE\_LAST\_REQ} 26349\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}}\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ::doc}}\index{KRB5\_LRQ\_ONE\_LAST\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_LAST\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 26350 26351\begin{fulllineitems} 26352\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_REQ:KRB5_LRQ_ONE_LAST_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_REQ}}} 26353\end{fulllineitems} 26354 26355 26356 26357\begin{savenotes}\sphinxattablestart 26358\centering 26359\begin{tabulary}{\linewidth}[t]{|T|T|} 26360\hline 26361 26362\sphinxAtStartPar 26363\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_REQ}} 26364& 26365\sphinxAtStartPar 26366\sphinxcode{\sphinxupquote{(\sphinxhyphen{}5)}} 26367\\ 26368\hline 26369\end{tabulary} 26370\par 26371\sphinxattableend\end{savenotes} 26372 26373 26374\subsubsection{KRB5\_LRQ\_ONE\_LAST\_TGT} 26375\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:krb5-lrq-one-last-tgt}}\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}}\index{KRB5\_LRQ\_ONE\_LAST\_TGT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_LAST\_TGT}\spxextra{built\sphinxhyphen{}in variable}} 26376 26377\begin{fulllineitems} 26378\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT:KRB5_LRQ_ONE_LAST_TGT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_TGT}}} 26379\end{fulllineitems} 26380 26381 26382 26383\begin{savenotes}\sphinxattablestart 26384\centering 26385\begin{tabulary}{\linewidth}[t]{|T|T|} 26386\hline 26387 26388\sphinxAtStartPar 26389\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_TGT}} 26390& 26391\sphinxAtStartPar 26392\sphinxcode{\sphinxupquote{(\sphinxhyphen{}1)}} 26393\\ 26394\hline 26395\end{tabulary} 26396\par 26397\sphinxattableend\end{savenotes} 26398 26399 26400\subsubsection{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED} 26401\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}\spxextra{built\sphinxhyphen{}in variable}} 26402 26403\begin{fulllineitems} 26404\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_LAST_TGT_ISSUED:KRB5_LRQ_ONE_LAST_TGT_ISSUED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}}} 26405\end{fulllineitems} 26406 26407 26408 26409\begin{savenotes}\sphinxattablestart 26410\centering 26411\begin{tabulary}{\linewidth}[t]{|T|T|} 26412\hline 26413 26414\sphinxAtStartPar 26415\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_LAST\_TGT\_ISSUED}} 26416& 26417\sphinxAtStartPar 26418\sphinxcode{\sphinxupquote{(\sphinxhyphen{}3)}} 26419\\ 26420\hline 26421\end{tabulary} 26422\par 26423\sphinxattableend\end{savenotes} 26424 26425 26426\subsubsection{KRB5\_LRQ\_ONE\_PW\_EXPTIME} 26427\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_LRQ\_ONE\_PW\_EXPTIME}\spxextra{built\sphinxhyphen{}in variable}} 26428 26429\begin{fulllineitems} 26430\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_LRQ_ONE_PW_EXPTIME:KRB5_LRQ_ONE_PW_EXPTIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_LRQ\_ONE\_PW\_EXPTIME}}} 26431\end{fulllineitems} 26432 26433 26434 26435\begin{savenotes}\sphinxattablestart 26436\centering 26437\begin{tabulary}{\linewidth}[t]{|T|T|} 26438\hline 26439 26440\sphinxAtStartPar 26441\sphinxcode{\sphinxupquote{KRB5\_LRQ\_ONE\_PW\_EXPTIME}} 26442& 26443\sphinxAtStartPar 26444\sphinxcode{\sphinxupquote{(\sphinxhyphen{}6)}} 26445\\ 26446\hline 26447\end{tabulary} 26448\par 26449\sphinxattableend\end{savenotes} 26450 26451 26452\subsubsection{KRB5\_NT\_ENTERPRISE\_PRINCIPAL} 26453\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:krb5-nt-enterprise-principal}}\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:krb5-nt-enterprise-principal-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL::doc}}\index{KRB5\_NT\_ENTERPRISE\_PRINCIPAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}\spxextra{built\sphinxhyphen{}in variable}} 26454 26455\begin{fulllineitems} 26456\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_ENTERPRISE_PRINCIPAL:KRB5_NT_ENTERPRISE_PRINCIPAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}}} 26457\end{fulllineitems} 26458 26459 26460\sphinxAtStartPar 26461Windows 2000 UPN. 26462 26463 26464\begin{savenotes}\sphinxattablestart 26465\centering 26466\begin{tabulary}{\linewidth}[t]{|T|T|} 26467\hline 26468 26469\sphinxAtStartPar 26470\sphinxcode{\sphinxupquote{KRB5\_NT\_ENTERPRISE\_PRINCIPAL}} 26471& 26472\sphinxAtStartPar 26473\sphinxcode{\sphinxupquote{10}} 26474\\ 26475\hline 26476\end{tabulary} 26477\par 26478\sphinxattableend\end{savenotes} 26479 26480 26481\subsubsection{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID} 26482\label{\detokenize{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:krb5-nt-ent-principal-and-id}}\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}}\index{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}\spxextra{built\sphinxhyphen{}in variable}} 26483 26484\begin{fulllineitems} 26485\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_ENT_PRINCIPAL_AND_ID:KRB5_NT_ENT_PRINCIPAL_AND_ID}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}}} 26486\end{fulllineitems} 26487 26488 26489\sphinxAtStartPar 26490NT 4 style name and SID. 26491 26492 26493\begin{savenotes}\sphinxattablestart 26494\centering 26495\begin{tabulary}{\linewidth}[t]{|T|T|} 26496\hline 26497 26498\sphinxAtStartPar 26499\sphinxcode{\sphinxupquote{KRB5\_NT\_ENT\_PRINCIPAL\_AND\_ID}} 26500& 26501\sphinxAtStartPar 26502\sphinxcode{\sphinxupquote{\sphinxhyphen{}130}} 26503\\ 26504\hline 26505\end{tabulary} 26506\par 26507\sphinxattableend\end{savenotes} 26508 26509 26510\subsubsection{KRB5\_NT\_MS\_PRINCIPAL} 26511\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}}\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL::doc}}\index{KRB5\_NT\_MS\_PRINCIPAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_MS\_PRINCIPAL}\spxextra{built\sphinxhyphen{}in variable}} 26512 26513\begin{fulllineitems} 26514\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL:KRB5_NT_MS_PRINCIPAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_MS\_PRINCIPAL}}} 26515\end{fulllineitems} 26516 26517 26518\sphinxAtStartPar 26519Windows 2000 UPN and SID. 26520 26521 26522\begin{savenotes}\sphinxattablestart 26523\centering 26524\begin{tabulary}{\linewidth}[t]{|T|T|} 26525\hline 26526 26527\sphinxAtStartPar 26528\sphinxcode{\sphinxupquote{KRB5\_NT\_MS\_PRINCIPAL}} 26529& 26530\sphinxAtStartPar 26531\sphinxcode{\sphinxupquote{\sphinxhyphen{}128}} 26532\\ 26533\hline 26534\end{tabulary} 26535\par 26536\sphinxattableend\end{savenotes} 26537 26538 26539\subsubsection{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID} 26540\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:krb5-nt-ms-principal-and-id}}\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}}\index{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}\spxextra{built\sphinxhyphen{}in variable}} 26541 26542\begin{fulllineitems} 26543\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_MS_PRINCIPAL_AND_ID:KRB5_NT_MS_PRINCIPAL_AND_ID}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}}} 26544\end{fulllineitems} 26545 26546 26547\sphinxAtStartPar 26548NT 4 style name. 26549 26550 26551\begin{savenotes}\sphinxattablestart 26552\centering 26553\begin{tabulary}{\linewidth}[t]{|T|T|} 26554\hline 26555 26556\sphinxAtStartPar 26557\sphinxcode{\sphinxupquote{KRB5\_NT\_MS\_PRINCIPAL\_AND\_ID}} 26558& 26559\sphinxAtStartPar 26560\sphinxcode{\sphinxupquote{\sphinxhyphen{}129}} 26561\\ 26562\hline 26563\end{tabulary} 26564\par 26565\sphinxattableend\end{savenotes} 26566 26567 26568\subsubsection{KRB5\_NT\_PRINCIPAL} 26569\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL:krb5-nt-principal}}\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL:krb5-nt-principal-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL::doc}}\index{KRB5\_NT\_PRINCIPAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_PRINCIPAL}\spxextra{built\sphinxhyphen{}in variable}} 26570 26571\begin{fulllineitems} 26572\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_PRINCIPAL:KRB5_NT_PRINCIPAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_PRINCIPAL}}} 26573\end{fulllineitems} 26574 26575 26576\sphinxAtStartPar 26577Just the name of the principal as in DCE, or for users. 26578 26579 26580\begin{savenotes}\sphinxattablestart 26581\centering 26582\begin{tabulary}{\linewidth}[t]{|T|T|} 26583\hline 26584 26585\sphinxAtStartPar 26586\sphinxcode{\sphinxupquote{KRB5\_NT\_PRINCIPAL}} 26587& 26588\sphinxAtStartPar 26589\sphinxcode{\sphinxupquote{1}} 26590\\ 26591\hline 26592\end{tabulary} 26593\par 26594\sphinxattableend\end{savenotes} 26595 26596 26597\subsubsection{KRB5\_NT\_SMTP\_NAME} 26598\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_SMTP\_NAME}\spxextra{built\sphinxhyphen{}in variable}} 26599 26600\begin{fulllineitems} 26601\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SMTP_NAME:KRB5_NT_SMTP_NAME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_SMTP\_NAME}}} 26602\end{fulllineitems} 26603 26604 26605\sphinxAtStartPar 26606Name in form of SMTP email name. 26607 26608 26609\begin{savenotes}\sphinxattablestart 26610\centering 26611\begin{tabulary}{\linewidth}[t]{|T|T|} 26612\hline 26613 26614\sphinxAtStartPar 26615\sphinxcode{\sphinxupquote{KRB5\_NT\_SMTP\_NAME}} 26616& 26617\sphinxAtStartPar 26618\sphinxcode{\sphinxupquote{7}} 26619\\ 26620\hline 26621\end{tabulary} 26622\par 26623\sphinxattableend\end{savenotes} 26624 26625 26626\subsubsection{KRB5\_NT\_SRV\_HST} 26627\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:krb5-nt-srv-hst}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:krb5-nt-srv-hst-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST::doc}}\index{KRB5\_NT\_SRV\_HST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_SRV\_HST}\spxextra{built\sphinxhyphen{}in variable}} 26628 26629\begin{fulllineitems} 26630\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_HST:KRB5_NT_SRV_HST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_SRV\_HST}}} 26631\end{fulllineitems} 26632 26633 26634\sphinxAtStartPar 26635Service with host name as instance (telnet, rcommands) 26636 26637 26638\begin{savenotes}\sphinxattablestart 26639\centering 26640\begin{tabulary}{\linewidth}[t]{|T|T|} 26641\hline 26642 26643\sphinxAtStartPar 26644\sphinxcode{\sphinxupquote{KRB5\_NT\_SRV\_HST}} 26645& 26646\sphinxAtStartPar 26647\sphinxcode{\sphinxupquote{3}} 26648\\ 26649\hline 26650\end{tabulary} 26651\par 26652\sphinxattableend\end{savenotes} 26653 26654 26655\subsubsection{KRB5\_NT\_SRV\_INST} 26656\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST:krb5-nt-srv-inst}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST:krb5-nt-srv-inst-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST::doc}}\index{KRB5\_NT\_SRV\_INST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_SRV\_INST}\spxextra{built\sphinxhyphen{}in variable}} 26657 26658\begin{fulllineitems} 26659\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_INST:KRB5_NT_SRV_INST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_SRV\_INST}}} 26660\end{fulllineitems} 26661 26662 26663\sphinxAtStartPar 26664Service and other unique instance (krbtgt) 26665 26666 26667\begin{savenotes}\sphinxattablestart 26668\centering 26669\begin{tabulary}{\linewidth}[t]{|T|T|} 26670\hline 26671 26672\sphinxAtStartPar 26673\sphinxcode{\sphinxupquote{KRB5\_NT\_SRV\_INST}} 26674& 26675\sphinxAtStartPar 26676\sphinxcode{\sphinxupquote{2}} 26677\\ 26678\hline 26679\end{tabulary} 26680\par 26681\sphinxattableend\end{savenotes} 26682 26683 26684\subsubsection{KRB5\_NT\_SRV\_XHST} 26685\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_SRV\_XHST}\spxextra{built\sphinxhyphen{}in variable}} 26686 26687\begin{fulllineitems} 26688\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_SRV_XHST:KRB5_NT_SRV_XHST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_SRV\_XHST}}} 26689\end{fulllineitems} 26690 26691 26692\sphinxAtStartPar 26693Service with host as remaining components. 26694 26695 26696\begin{savenotes}\sphinxattablestart 26697\centering 26698\begin{tabulary}{\linewidth}[t]{|T|T|} 26699\hline 26700 26701\sphinxAtStartPar 26702\sphinxcode{\sphinxupquote{KRB5\_NT\_SRV\_XHST}} 26703& 26704\sphinxAtStartPar 26705\sphinxcode{\sphinxupquote{4}} 26706\\ 26707\hline 26708\end{tabulary} 26709\par 26710\sphinxattableend\end{savenotes} 26711 26712 26713\subsubsection{KRB5\_NT\_UID} 26714\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_UID}\spxextra{built\sphinxhyphen{}in variable}} 26715 26716\begin{fulllineitems} 26717\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_UID:KRB5_NT_UID}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_UID}}} 26718\end{fulllineitems} 26719 26720 26721\sphinxAtStartPar 26722Unique ID. 26723 26724 26725\begin{savenotes}\sphinxattablestart 26726\centering 26727\begin{tabulary}{\linewidth}[t]{|T|T|} 26728\hline 26729 26730\sphinxAtStartPar 26731\sphinxcode{\sphinxupquote{KRB5\_NT\_UID}} 26732& 26733\sphinxAtStartPar 26734\sphinxcode{\sphinxupquote{5}} 26735\\ 26736\hline 26737\end{tabulary} 26738\par 26739\sphinxattableend\end{savenotes} 26740 26741 26742\subsubsection{KRB5\_NT\_UNKNOWN} 26743\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:krb5-nt-unknown}}\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:krb5-nt-unknown-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN::doc}}\index{KRB5\_NT\_UNKNOWN (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_UNKNOWN}\spxextra{built\sphinxhyphen{}in variable}} 26744 26745\begin{fulllineitems} 26746\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_UNKNOWN:KRB5_NT_UNKNOWN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_UNKNOWN}}} 26747\end{fulllineitems} 26748 26749 26750\sphinxAtStartPar 26751Name type not known. 26752 26753 26754\begin{savenotes}\sphinxattablestart 26755\centering 26756\begin{tabulary}{\linewidth}[t]{|T|T|} 26757\hline 26758 26759\sphinxAtStartPar 26760\sphinxcode{\sphinxupquote{KRB5\_NT\_UNKNOWN}} 26761& 26762\sphinxAtStartPar 26763\sphinxcode{\sphinxupquote{0}} 26764\\ 26765\hline 26766\end{tabulary} 26767\par 26768\sphinxattableend\end{savenotes} 26769 26770 26771\subsubsection{KRB5\_NT\_WELLKNOWN} 26772\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN:krb5-nt-wellknown}}\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN:krb5-nt-wellknown-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN::doc}}\index{KRB5\_NT\_WELLKNOWN (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_WELLKNOWN}\spxextra{built\sphinxhyphen{}in variable}} 26773 26774\begin{fulllineitems} 26775\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_WELLKNOWN:KRB5_NT_WELLKNOWN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_WELLKNOWN}}} 26776\end{fulllineitems} 26777 26778 26779\sphinxAtStartPar 26780Well\sphinxhyphen{}known (special) principal. 26781 26782 26783\begin{savenotes}\sphinxattablestart 26784\centering 26785\begin{tabulary}{\linewidth}[t]{|T|T|} 26786\hline 26787 26788\sphinxAtStartPar 26789\sphinxcode{\sphinxupquote{KRB5\_NT\_WELLKNOWN}} 26790& 26791\sphinxAtStartPar 26792\sphinxcode{\sphinxupquote{11}} 26793\\ 26794\hline 26795\end{tabulary} 26796\par 26797\sphinxattableend\end{savenotes} 26798 26799 26800\subsubsection{KRB5\_NT\_X500\_PRINCIPAL} 26801\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:krb5-nt-x500-principal}}\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:krb5-nt-x500-principal-data}}\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL::doc}}\index{KRB5\_NT\_X500\_PRINCIPAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_NT\_X500\_PRINCIPAL}\spxextra{built\sphinxhyphen{}in variable}} 26802 26803\begin{fulllineitems} 26804\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_NT_X500_PRINCIPAL:KRB5_NT_X500_PRINCIPAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_NT\_X500\_PRINCIPAL}}} 26805\end{fulllineitems} 26806 26807 26808\sphinxAtStartPar 26809PKINIT. 26810 26811 26812\begin{savenotes}\sphinxattablestart 26813\centering 26814\begin{tabulary}{\linewidth}[t]{|T|T|} 26815\hline 26816 26817\sphinxAtStartPar 26818\sphinxcode{\sphinxupquote{KRB5\_NT\_X500\_PRINCIPAL}} 26819& 26820\sphinxAtStartPar 26821\sphinxcode{\sphinxupquote{6}} 26822\\ 26823\hline 26824\end{tabulary} 26825\par 26826\sphinxattableend\end{savenotes} 26827 26828 26829\subsubsection{KRB5\_PAC\_ATTRIBUTES\_INFO} 26830\label{\detokenize{appdev/refs/macros/KRB5_PAC_ATTRIBUTES_INFO:krb5-pac-attributes-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_ATTRIBUTES_INFO:krb5-pac-attributes-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_ATTRIBUTES_INFO::doc}}\index{KRB5\_PAC\_ATTRIBUTES\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_ATTRIBUTES\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 26831 26832\begin{fulllineitems} 26833\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_ATTRIBUTES_INFO:KRB5_PAC_ATTRIBUTES_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_ATTRIBUTES\_INFO}}} 26834\end{fulllineitems} 26835 26836 26837\sphinxAtStartPar 26838PAC attributes. 26839 26840 26841\begin{savenotes}\sphinxattablestart 26842\centering 26843\begin{tabulary}{\linewidth}[t]{|T|T|} 26844\hline 26845 26846\sphinxAtStartPar 26847\sphinxcode{\sphinxupquote{KRB5\_PAC\_ATTRIBUTES\_INFO}} 26848& 26849\sphinxAtStartPar 26850\sphinxcode{\sphinxupquote{17}} 26851\\ 26852\hline 26853\end{tabulary} 26854\par 26855\sphinxattableend\end{savenotes} 26856 26857 26858\subsubsection{KRB5\_PAC\_CLIENT\_INFO} 26859\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:krb5-pac-client-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:krb5-pac-client-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO::doc}}\index{KRB5\_PAC\_CLIENT\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_CLIENT\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 26860 26861\begin{fulllineitems} 26862\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_INFO:KRB5_PAC_CLIENT_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_CLIENT\_INFO}}} 26863\end{fulllineitems} 26864 26865 26866\sphinxAtStartPar 26867Client name and ticket info. 26868 26869 26870\begin{savenotes}\sphinxattablestart 26871\centering 26872\begin{tabulary}{\linewidth}[t]{|T|T|} 26873\hline 26874 26875\sphinxAtStartPar 26876\sphinxcode{\sphinxupquote{KRB5\_PAC\_CLIENT\_INFO}} 26877& 26878\sphinxAtStartPar 26879\sphinxcode{\sphinxupquote{10}} 26880\\ 26881\hline 26882\end{tabulary} 26883\par 26884\sphinxattableend\end{savenotes} 26885 26886 26887\subsubsection{KRB5\_PAC\_CLIENT\_CLAIMS} 26888\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_CLAIMS:krb5-pac-client-claims}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_CLAIMS:krb5-pac-client-claims-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_CLAIMS::doc}}\index{KRB5\_PAC\_CLIENT\_CLAIMS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_CLIENT\_CLAIMS}\spxextra{built\sphinxhyphen{}in variable}} 26889 26890\begin{fulllineitems} 26891\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_CLIENT_CLAIMS:KRB5_PAC_CLIENT_CLAIMS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_CLIENT\_CLAIMS}}} 26892\end{fulllineitems} 26893 26894 26895\sphinxAtStartPar 26896Client claims information. 26897 26898 26899\begin{savenotes}\sphinxattablestart 26900\centering 26901\begin{tabulary}{\linewidth}[t]{|T|T|} 26902\hline 26903 26904\sphinxAtStartPar 26905\sphinxcode{\sphinxupquote{KRB5\_PAC\_CLIENT\_CLAIMS}} 26906& 26907\sphinxAtStartPar 26908\sphinxcode{\sphinxupquote{13}} 26909\\ 26910\hline 26911\end{tabulary} 26912\par 26913\sphinxattableend\end{savenotes} 26914 26915 26916\subsubsection{KRB5\_PAC\_CREDENTIALS\_INFO} 26917\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}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO::doc}}\index{KRB5\_PAC\_CREDENTIALS\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_CREDENTIALS\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 26918 26919\begin{fulllineitems} 26920\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_CREDENTIALS_INFO:KRB5_PAC_CREDENTIALS_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_CREDENTIALS\_INFO}}} 26921\end{fulllineitems} 26922 26923 26924\sphinxAtStartPar 26925Credentials information. 26926 26927 26928\begin{savenotes}\sphinxattablestart 26929\centering 26930\begin{tabulary}{\linewidth}[t]{|T|T|} 26931\hline 26932 26933\sphinxAtStartPar 26934\sphinxcode{\sphinxupquote{KRB5\_PAC\_CREDENTIALS\_INFO}} 26935& 26936\sphinxAtStartPar 26937\sphinxcode{\sphinxupquote{2}} 26938\\ 26939\hline 26940\end{tabulary} 26941\par 26942\sphinxattableend\end{savenotes} 26943 26944 26945\subsubsection{KRB5\_PAC\_DELEGATION\_INFO} 26946\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:krb5-pac-delegation-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:krb5-pac-delegation-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO::doc}}\index{KRB5\_PAC\_DELEGATION\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_DELEGATION\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 26947 26948\begin{fulllineitems} 26949\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_DELEGATION_INFO:KRB5_PAC_DELEGATION_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_DELEGATION\_INFO}}} 26950\end{fulllineitems} 26951 26952 26953\sphinxAtStartPar 26954Constrained delegation info. 26955 26956 26957\begin{savenotes}\sphinxattablestart 26958\centering 26959\begin{tabulary}{\linewidth}[t]{|T|T|} 26960\hline 26961 26962\sphinxAtStartPar 26963\sphinxcode{\sphinxupquote{KRB5\_PAC\_DELEGATION\_INFO}} 26964& 26965\sphinxAtStartPar 26966\sphinxcode{\sphinxupquote{11}} 26967\\ 26968\hline 26969\end{tabulary} 26970\par 26971\sphinxattableend\end{savenotes} 26972 26973 26974\subsubsection{KRB5\_PAC\_DEVICE\_CLAIMS} 26975\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_CLAIMS:krb5-pac-device-claims}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_CLAIMS:krb5-pac-device-claims-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_CLAIMS::doc}}\index{KRB5\_PAC\_DEVICE\_CLAIMS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_DEVICE\_CLAIMS}\spxextra{built\sphinxhyphen{}in variable}} 26976 26977\begin{fulllineitems} 26978\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_CLAIMS:KRB5_PAC_DEVICE_CLAIMS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_DEVICE\_CLAIMS}}} 26979\end{fulllineitems} 26980 26981 26982\sphinxAtStartPar 26983Device claims information. 26984 26985 26986\begin{savenotes}\sphinxattablestart 26987\centering 26988\begin{tabulary}{\linewidth}[t]{|T|T|} 26989\hline 26990 26991\sphinxAtStartPar 26992\sphinxcode{\sphinxupquote{KRB5\_PAC\_DEVICE\_CLAIMS}} 26993& 26994\sphinxAtStartPar 26995\sphinxcode{\sphinxupquote{15}} 26996\\ 26997\hline 26998\end{tabulary} 26999\par 27000\sphinxattableend\end{savenotes} 27001 27002 27003\subsubsection{KRB5\_PAC\_DEVICE\_INFO} 27004\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_INFO:krb5-pac-device-info}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_INFO:krb5-pac-device-info-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_INFO::doc}}\index{KRB5\_PAC\_DEVICE\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_DEVICE\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 27005 27006\begin{fulllineitems} 27007\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_DEVICE_INFO:KRB5_PAC_DEVICE_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_DEVICE\_INFO}}} 27008\end{fulllineitems} 27009 27010 27011\sphinxAtStartPar 27012Device information. 27013 27014 27015\begin{savenotes}\sphinxattablestart 27016\centering 27017\begin{tabulary}{\linewidth}[t]{|T|T|} 27018\hline 27019 27020\sphinxAtStartPar 27021\sphinxcode{\sphinxupquote{KRB5\_PAC\_DEVICE\_INFO}} 27022& 27023\sphinxAtStartPar 27024\sphinxcode{\sphinxupquote{14}} 27025\\ 27026\hline 27027\end{tabulary} 27028\par 27029\sphinxattableend\end{savenotes} 27030 27031 27032\subsubsection{KRB5\_PAC\_LOGON\_INFO} 27033\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_LOGON\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 27034 27035\begin{fulllineitems} 27036\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_LOGON_INFO:KRB5_PAC_LOGON_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_LOGON\_INFO}}} 27037\end{fulllineitems} 27038 27039 27040\sphinxAtStartPar 27041Logon information. 27042 27043 27044\begin{savenotes}\sphinxattablestart 27045\centering 27046\begin{tabulary}{\linewidth}[t]{|T|T|} 27047\hline 27048 27049\sphinxAtStartPar 27050\sphinxcode{\sphinxupquote{KRB5\_PAC\_LOGON\_INFO}} 27051& 27052\sphinxAtStartPar 27053\sphinxcode{\sphinxupquote{1}} 27054\\ 27055\hline 27056\end{tabulary} 27057\par 27058\sphinxattableend\end{savenotes} 27059 27060 27061\subsubsection{KRB5\_PAC\_PRIVSVR\_CHECKSUM} 27062\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:krb5-pac-privsvr-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:krb5-pac-privsvr-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM::doc}}\index{KRB5\_PAC\_PRIVSVR\_CHECKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_PRIVSVR\_CHECKSUM}\spxextra{built\sphinxhyphen{}in variable}} 27063 27064\begin{fulllineitems} 27065\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_PRIVSVR_CHECKSUM:KRB5_PAC_PRIVSVR_CHECKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_PRIVSVR\_CHECKSUM}}} 27066\end{fulllineitems} 27067 27068 27069\sphinxAtStartPar 27070KDC checksum. 27071 27072 27073\begin{savenotes}\sphinxattablestart 27074\centering 27075\begin{tabulary}{\linewidth}[t]{|T|T|} 27076\hline 27077 27078\sphinxAtStartPar 27079\sphinxcode{\sphinxupquote{KRB5\_PAC\_PRIVSVR\_CHECKSUM}} 27080& 27081\sphinxAtStartPar 27082\sphinxcode{\sphinxupquote{7}} 27083\\ 27084\hline 27085\end{tabulary} 27086\par 27087\sphinxattableend\end{savenotes} 27088 27089 27090\subsubsection{KRB5\_PAC\_REQUESTOR} 27091\label{\detokenize{appdev/refs/macros/KRB5_PAC_REQUESTOR:krb5-pac-requestor}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_REQUESTOR:krb5-pac-requestor-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_REQUESTOR::doc}}\index{KRB5\_PAC\_REQUESTOR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_REQUESTOR}\spxextra{built\sphinxhyphen{}in variable}} 27092 27093\begin{fulllineitems} 27094\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_REQUESTOR:KRB5_PAC_REQUESTOR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_REQUESTOR}}} 27095\end{fulllineitems} 27096 27097 27098\sphinxAtStartPar 27099PAC requestor SID. 27100 27101 27102\begin{savenotes}\sphinxattablestart 27103\centering 27104\begin{tabulary}{\linewidth}[t]{|T|T|} 27105\hline 27106 27107\sphinxAtStartPar 27108\sphinxcode{\sphinxupquote{KRB5\_PAC\_REQUESTOR}} 27109& 27110\sphinxAtStartPar 27111\sphinxcode{\sphinxupquote{18}} 27112\\ 27113\hline 27114\end{tabulary} 27115\par 27116\sphinxattableend\end{savenotes} 27117 27118 27119\subsubsection{KRB5\_PAC\_SERVER\_CHECKSUM} 27120\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:krb5-pac-server-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:krb5-pac-server-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM::doc}}\index{KRB5\_PAC\_SERVER\_CHECKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_SERVER\_CHECKSUM}\spxextra{built\sphinxhyphen{}in variable}} 27121 27122\begin{fulllineitems} 27123\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_SERVER_CHECKSUM:KRB5_PAC_SERVER_CHECKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_SERVER\_CHECKSUM}}} 27124\end{fulllineitems} 27125 27126 27127\sphinxAtStartPar 27128Server checksum. 27129 27130 27131\begin{savenotes}\sphinxattablestart 27132\centering 27133\begin{tabulary}{\linewidth}[t]{|T|T|} 27134\hline 27135 27136\sphinxAtStartPar 27137\sphinxcode{\sphinxupquote{KRB5\_PAC\_SERVER\_CHECKSUM}} 27138& 27139\sphinxAtStartPar 27140\sphinxcode{\sphinxupquote{6}} 27141\\ 27142\hline 27143\end{tabulary} 27144\par 27145\sphinxattableend\end{savenotes} 27146 27147 27148\subsubsection{KRB5\_PAC\_TICKET\_CHECKSUM} 27149\label{\detokenize{appdev/refs/macros/KRB5_PAC_TICKET_CHECKSUM:krb5-pac-ticket-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_TICKET_CHECKSUM:krb5-pac-ticket-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_TICKET_CHECKSUM::doc}}\index{KRB5\_PAC\_TICKET\_CHECKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_TICKET\_CHECKSUM}\spxextra{built\sphinxhyphen{}in variable}} 27150 27151\begin{fulllineitems} 27152\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_TICKET_CHECKSUM:KRB5_PAC_TICKET_CHECKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_TICKET\_CHECKSUM}}} 27153\end{fulllineitems} 27154 27155 27156\sphinxAtStartPar 27157Ticket checksum. 27158 27159 27160\begin{savenotes}\sphinxattablestart 27161\centering 27162\begin{tabulary}{\linewidth}[t]{|T|T|} 27163\hline 27164 27165\sphinxAtStartPar 27166\sphinxcode{\sphinxupquote{KRB5\_PAC\_TICKET\_CHECKSUM}} 27167& 27168\sphinxAtStartPar 27169\sphinxcode{\sphinxupquote{16}} 27170\\ 27171\hline 27172\end{tabulary} 27173\par 27174\sphinxattableend\end{savenotes} 27175 27176 27177\subsubsection{KRB5\_PAC\_UPN\_DNS\_INFO} 27178\label{\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:krb5-pac-upn-dns-info}}\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}}\index{KRB5\_PAC\_UPN\_DNS\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_UPN\_DNS\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 27179 27180\begin{fulllineitems} 27181\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_UPN_DNS_INFO:KRB5_PAC_UPN_DNS_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_UPN\_DNS\_INFO}}} 27182\end{fulllineitems} 27183 27184 27185\sphinxAtStartPar 27186User principal name and DNS info. 27187 27188 27189\begin{savenotes}\sphinxattablestart 27190\centering 27191\begin{tabulary}{\linewidth}[t]{|T|T|} 27192\hline 27193 27194\sphinxAtStartPar 27195\sphinxcode{\sphinxupquote{KRB5\_PAC\_UPN\_DNS\_INFO}} 27196& 27197\sphinxAtStartPar 27198\sphinxcode{\sphinxupquote{12}} 27199\\ 27200\hline 27201\end{tabulary} 27202\par 27203\sphinxattableend\end{savenotes} 27204 27205 27206\subsubsection{KRB5\_PAC\_FULL\_CHECKSUM} 27207\label{\detokenize{appdev/refs/macros/KRB5_PAC_FULL_CHECKSUM:krb5-pac-full-checksum}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_FULL_CHECKSUM:krb5-pac-full-checksum-data}}\label{\detokenize{appdev/refs/macros/KRB5_PAC_FULL_CHECKSUM::doc}}\index{KRB5\_PAC\_FULL\_CHECKSUM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PAC\_FULL\_CHECKSUM}\spxextra{built\sphinxhyphen{}in variable}} 27208 27209\begin{fulllineitems} 27210\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PAC_FULL_CHECKSUM:KRB5_PAC_FULL_CHECKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PAC\_FULL\_CHECKSUM}}} 27211\end{fulllineitems} 27212 27213 27214\sphinxAtStartPar 27215KDC full checksum. 27216 27217 27218\begin{savenotes}\sphinxattablestart 27219\centering 27220\begin{tabulary}{\linewidth}[t]{|T|T|} 27221\hline 27222 27223\sphinxAtStartPar 27224\sphinxcode{\sphinxupquote{KRB5\_PAC\_FULL\_CHECKSUM}} 27225& 27226\sphinxAtStartPar 27227\sphinxcode{\sphinxupquote{19}} 27228\\ 27229\hline 27230\end{tabulary} 27231\par 27232\sphinxattableend\end{savenotes} 27233 27234 27235\subsubsection{KRB5\_PADATA\_AFS3\_SALT} 27236\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AFS3_SALT::doc}}\index{KRB5\_PADATA\_AFS3\_SALT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_AFS3\_SALT}\spxextra{built\sphinxhyphen{}in variable}} 27237 27238\begin{fulllineitems} 27239\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AFS3_SALT:KRB5_PADATA_AFS3_SALT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_AFS3\_SALT}}} 27240\end{fulllineitems} 27241 27242 27243\sphinxAtStartPar 27244Cygnus. 27245 27246\sphinxAtStartPar 27247RFC 4120, 3961 27248 27249 27250\begin{savenotes}\sphinxattablestart 27251\centering 27252\begin{tabulary}{\linewidth}[t]{|T|T|} 27253\hline 27254 27255\sphinxAtStartPar 27256\sphinxcode{\sphinxupquote{KRB5\_PADATA\_AFS3\_SALT}} 27257& 27258\sphinxAtStartPar 27259\sphinxcode{\sphinxupquote{10}} 27260\\ 27261\hline 27262\end{tabulary} 27263\par 27264\sphinxattableend\end{savenotes} 27265 27266 27267\subsubsection{KRB5\_PADATA\_AP\_REQ} 27268\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ:krb5-padata-ap-req}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ:krb5-padata-ap-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ::doc}}\index{KRB5\_PADATA\_AP\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_AP\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 27269 27270\begin{fulllineitems} 27271\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AP_REQ:KRB5_PADATA_AP_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_AP\_REQ}}} 27272\end{fulllineitems} 27273 27274 27275 27276\begin{savenotes}\sphinxattablestart 27277\centering 27278\begin{tabulary}{\linewidth}[t]{|T|T|} 27279\hline 27280 27281\sphinxAtStartPar 27282\sphinxcode{\sphinxupquote{KRB5\_PADATA\_AP\_REQ}} 27283& 27284\sphinxAtStartPar 27285\sphinxcode{\sphinxupquote{1}} 27286\\ 27287\hline 27288\end{tabulary} 27289\par 27290\sphinxattableend\end{savenotes} 27291 27292 27293\subsubsection{KRB5\_PADATA\_AS\_CHECKSUM} 27294\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_AS\_CHECKSUM}\spxextra{built\sphinxhyphen{}in variable}} 27295 27296\begin{fulllineitems} 27297\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_CHECKSUM:KRB5_PADATA_AS_CHECKSUM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_AS\_CHECKSUM}}} 27298\end{fulllineitems} 27299 27300 27301\sphinxAtStartPar 27302AS checksum. 27303 27304 27305\begin{savenotes}\sphinxattablestart 27306\centering 27307\begin{tabulary}{\linewidth}[t]{|T|T|} 27308\hline 27309 27310\sphinxAtStartPar 27311\sphinxcode{\sphinxupquote{KRB5\_PADATA\_AS\_CHECKSUM}} 27312& 27313\sphinxAtStartPar 27314\sphinxcode{\sphinxupquote{132}} 27315\\ 27316\hline 27317\end{tabulary} 27318\par 27319\sphinxattableend\end{savenotes} 27320 27321 27322\subsubsection{KRB5\_PADATA\_AS\_FRESHNESS} 27323\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS:krb5-padata-as-freshness}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS:krb5-padata-as-freshness-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS::doc}}\index{KRB5\_PADATA\_AS\_FRESHNESS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_AS\_FRESHNESS}\spxextra{built\sphinxhyphen{}in variable}} 27324 27325\begin{fulllineitems} 27326\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_AS_FRESHNESS:KRB5_PADATA_AS_FRESHNESS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_AS\_FRESHNESS}}} 27327\end{fulllineitems} 27328 27329 27330\sphinxAtStartPar 27331RFC 8070. 27332 27333 27334\begin{savenotes}\sphinxattablestart 27335\centering 27336\begin{tabulary}{\linewidth}[t]{|T|T|} 27337\hline 27338 27339\sphinxAtStartPar 27340\sphinxcode{\sphinxupquote{KRB5\_PADATA\_AS\_FRESHNESS}} 27341& 27342\sphinxAtStartPar 27343\sphinxcode{\sphinxupquote{150}} 27344\\ 27345\hline 27346\end{tabulary} 27347\par 27348\sphinxattableend\end{savenotes} 27349 27350 27351\subsubsection{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE} 27352\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:krb5-padata-encrypted-challenge}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:krb5-padata-encrypted-challenge-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE::doc}}\index{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}\spxextra{built\sphinxhyphen{}in variable}} 27353 27354\begin{fulllineitems} 27355\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENCRYPTED_CHALLENGE:KRB5_PADATA_ENCRYPTED_CHALLENGE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}}} 27356\end{fulllineitems} 27357 27358 27359\sphinxAtStartPar 27360RFC 6113. 27361 27362 27363\begin{savenotes}\sphinxattablestart 27364\centering 27365\begin{tabulary}{\linewidth}[t]{|T|T|} 27366\hline 27367 27368\sphinxAtStartPar 27369\sphinxcode{\sphinxupquote{KRB5\_PADATA\_ENCRYPTED\_CHALLENGE}} 27370& 27371\sphinxAtStartPar 27372\sphinxcode{\sphinxupquote{138}} 27373\\ 27374\hline 27375\end{tabulary} 27376\par 27377\sphinxattableend\end{savenotes} 27378 27379 27380\subsubsection{KRB5\_PADATA\_ENC\_SANDIA\_SECURID} 27381\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:krb5-padata-enc-sandia-securid-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID::doc}}\index{KRB5\_PADATA\_ENC\_SANDIA\_SECURID (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}\spxextra{built\sphinxhyphen{}in variable}} 27382 27383\begin{fulllineitems} 27384\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_SANDIA_SECURID:KRB5_PADATA_ENC_SANDIA_SECURID}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}}} 27385\end{fulllineitems} 27386 27387 27388\sphinxAtStartPar 27389SecurId passcode. 27390 27391\sphinxAtStartPar 27392RFC 4120 27393 27394 27395\begin{savenotes}\sphinxattablestart 27396\centering 27397\begin{tabulary}{\linewidth}[t]{|T|T|} 27398\hline 27399 27400\sphinxAtStartPar 27401\sphinxcode{\sphinxupquote{KRB5\_PADATA\_ENC\_SANDIA\_SECURID}} 27402& 27403\sphinxAtStartPar 27404\sphinxcode{\sphinxupquote{6}} 27405\\ 27406\hline 27407\end{tabulary} 27408\par 27409\sphinxattableend\end{savenotes} 27410 27411 27412\subsubsection{KRB5\_PADATA\_ENC\_TIMESTAMP} 27413\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP::doc}}\index{KRB5\_PADATA\_ENC\_TIMESTAMP (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_ENC\_TIMESTAMP}\spxextra{built\sphinxhyphen{}in variable}} 27414 27415\begin{fulllineitems} 27416\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_TIMESTAMP:KRB5_PADATA_ENC_TIMESTAMP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_ENC\_TIMESTAMP}}} 27417\end{fulllineitems} 27418 27419 27420\sphinxAtStartPar 27421RFC 4120. 27422 27423 27424\begin{savenotes}\sphinxattablestart 27425\centering 27426\begin{tabulary}{\linewidth}[t]{|T|T|} 27427\hline 27428 27429\sphinxAtStartPar 27430\sphinxcode{\sphinxupquote{KRB5\_PADATA\_ENC\_TIMESTAMP}} 27431& 27432\sphinxAtStartPar 27433\sphinxcode{\sphinxupquote{2}} 27434\\ 27435\hline 27436\end{tabulary} 27437\par 27438\sphinxattableend\end{savenotes} 27439 27440 27441\subsubsection{KRB5\_PADATA\_ENC\_UNIX\_TIME} 27442\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_ENC\_UNIX\_TIME}\spxextra{built\sphinxhyphen{}in variable}} 27443 27444\begin{fulllineitems} 27445\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ENC_UNIX_TIME:KRB5_PADATA_ENC_UNIX_TIME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_ENC\_UNIX\_TIME}}} 27446\end{fulllineitems} 27447 27448 27449\sphinxAtStartPar 27450timestamp encrypted in key. 27451 27452\sphinxAtStartPar 27453RFC 4120 27454 27455 27456\begin{savenotes}\sphinxattablestart 27457\centering 27458\begin{tabulary}{\linewidth}[t]{|T|T|} 27459\hline 27460 27461\sphinxAtStartPar 27462\sphinxcode{\sphinxupquote{KRB5\_PADATA\_ENC\_UNIX\_TIME}} 27463& 27464\sphinxAtStartPar 27465\sphinxcode{\sphinxupquote{5}} 27466\\ 27467\hline 27468\end{tabulary} 27469\par 27470\sphinxattableend\end{savenotes} 27471 27472 27473\subsubsection{KRB5\_PADATA\_ETYPE\_INFO} 27474\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO::doc}}\index{KRB5\_PADATA\_ETYPE\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_ETYPE\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 27475 27476\begin{fulllineitems} 27477\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO:KRB5_PADATA_ETYPE_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_ETYPE\_INFO}}} 27478\end{fulllineitems} 27479 27480 27481\sphinxAtStartPar 27482Etype info for preauth. 27483 27484\sphinxAtStartPar 27485RFC 4120 27486 27487 27488\begin{savenotes}\sphinxattablestart 27489\centering 27490\begin{tabulary}{\linewidth}[t]{|T|T|} 27491\hline 27492 27493\sphinxAtStartPar 27494\sphinxcode{\sphinxupquote{KRB5\_PADATA\_ETYPE\_INFO}} 27495& 27496\sphinxAtStartPar 27497\sphinxcode{\sphinxupquote{11}} 27498\\ 27499\hline 27500\end{tabulary} 27501\par 27502\sphinxattableend\end{savenotes} 27503 27504 27505\subsubsection{KRB5\_PADATA\_ETYPE\_INFO2} 27506\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:krb5-padata-etype-info2}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:krb5-padata-etype-info2-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2::doc}}\index{KRB5\_PADATA\_ETYPE\_INFO2 (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_ETYPE\_INFO2}\spxextra{built\sphinxhyphen{}in variable}} 27507 27508\begin{fulllineitems} 27509\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_ETYPE_INFO2:KRB5_PADATA_ETYPE_INFO2}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_ETYPE\_INFO2}}} 27510\end{fulllineitems} 27511 27512 27513\sphinxAtStartPar 27514RFC 4120. 27515 27516 27517\begin{savenotes}\sphinxattablestart 27518\centering 27519\begin{tabulary}{\linewidth}[t]{|T|T|} 27520\hline 27521 27522\sphinxAtStartPar 27523\sphinxcode{\sphinxupquote{KRB5\_PADATA\_ETYPE\_INFO2}} 27524& 27525\sphinxAtStartPar 27526\sphinxcode{\sphinxupquote{19}} 27527\\ 27528\hline 27529\end{tabulary} 27530\par 27531\sphinxattableend\end{savenotes} 27532 27533 27534\subsubsection{KRB5\_PADATA\_FOR\_USER} 27535\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER:krb5-padata-for-user}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER:krb5-padata-for-user-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER::doc}}\index{KRB5\_PADATA\_FOR\_USER (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_FOR\_USER}\spxextra{built\sphinxhyphen{}in variable}} 27536 27537\begin{fulllineitems} 27538\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FOR_USER:KRB5_PADATA_FOR_USER}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_FOR\_USER}}} 27539\end{fulllineitems} 27540 27541 27542\sphinxAtStartPar 27543username protocol transition request 27544 27545 27546\begin{savenotes}\sphinxattablestart 27547\centering 27548\begin{tabulary}{\linewidth}[t]{|T|T|} 27549\hline 27550 27551\sphinxAtStartPar 27552\sphinxcode{\sphinxupquote{KRB5\_PADATA\_FOR\_USER}} 27553& 27554\sphinxAtStartPar 27555\sphinxcode{\sphinxupquote{129}} 27556\\ 27557\hline 27558\end{tabulary} 27559\par 27560\sphinxattableend\end{savenotes} 27561 27562 27563\subsubsection{KRB5\_PADATA\_FX\_COOKIE} 27564\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:krb5-padata-fx-cookie}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:krb5-padata-fx-cookie-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE::doc}}\index{KRB5\_PADATA\_FX\_COOKIE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_FX\_COOKIE}\spxextra{built\sphinxhyphen{}in variable}} 27565 27566\begin{fulllineitems} 27567\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_COOKIE:KRB5_PADATA_FX_COOKIE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_FX\_COOKIE}}} 27568\end{fulllineitems} 27569 27570 27571\sphinxAtStartPar 27572RFC 6113. 27573 27574 27575\begin{savenotes}\sphinxattablestart 27576\centering 27577\begin{tabulary}{\linewidth}[t]{|T|T|} 27578\hline 27579 27580\sphinxAtStartPar 27581\sphinxcode{\sphinxupquote{KRB5\_PADATA\_FX\_COOKIE}} 27582& 27583\sphinxAtStartPar 27584\sphinxcode{\sphinxupquote{133}} 27585\\ 27586\hline 27587\end{tabulary} 27588\par 27589\sphinxattableend\end{savenotes} 27590 27591 27592\subsubsection{KRB5\_PADATA\_FX\_ERROR} 27593\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR:krb5-padata-fx-error}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR:krb5-padata-fx-error-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR::doc}}\index{KRB5\_PADATA\_FX\_ERROR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_FX\_ERROR}\spxextra{built\sphinxhyphen{}in variable}} 27594 27595\begin{fulllineitems} 27596\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_ERROR:KRB5_PADATA_FX_ERROR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_FX\_ERROR}}} 27597\end{fulllineitems} 27598 27599 27600\sphinxAtStartPar 27601RFC 6113. 27602 27603 27604\begin{savenotes}\sphinxattablestart 27605\centering 27606\begin{tabulary}{\linewidth}[t]{|T|T|} 27607\hline 27608 27609\sphinxAtStartPar 27610\sphinxcode{\sphinxupquote{KRB5\_PADATA\_FX\_ERROR}} 27611& 27612\sphinxAtStartPar 27613\sphinxcode{\sphinxupquote{137}} 27614\\ 27615\hline 27616\end{tabulary} 27617\par 27618\sphinxattableend\end{savenotes} 27619 27620 27621\subsubsection{KRB5\_PADATA\_FX\_FAST} 27622\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_FAST::doc}}\index{KRB5\_PADATA\_FX\_FAST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_FX\_FAST}\spxextra{built\sphinxhyphen{}in variable}} 27623 27624\begin{fulllineitems} 27625\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_FX_FAST:KRB5_PADATA_FX_FAST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_FX\_FAST}}} 27626\end{fulllineitems} 27627 27628 27629\sphinxAtStartPar 27630RFC 6113. 27631 27632 27633\begin{savenotes}\sphinxattablestart 27634\centering 27635\begin{tabulary}{\linewidth}[t]{|T|T|} 27636\hline 27637 27638\sphinxAtStartPar 27639\sphinxcode{\sphinxupquote{KRB5\_PADATA\_FX\_FAST}} 27640& 27641\sphinxAtStartPar 27642\sphinxcode{\sphinxupquote{136}} 27643\\ 27644\hline 27645\end{tabulary} 27646\par 27647\sphinxattableend\end{savenotes} 27648 27649 27650\subsubsection{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA} 27651\label{\detokenize{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:krb5-padata-get-from-typed-data}}\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}}\index{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}\spxextra{built\sphinxhyphen{}in variable}} 27652 27653\begin{fulllineitems} 27654\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_GET_FROM_TYPED_DATA:KRB5_PADATA_GET_FROM_TYPED_DATA}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}}} 27655\end{fulllineitems} 27656 27657 27658\sphinxAtStartPar 27659Embedded in typed data. 27660 27661\sphinxAtStartPar 27662RFC 4120 27663 27664 27665\begin{savenotes}\sphinxattablestart 27666\centering 27667\begin{tabulary}{\linewidth}[t]{|T|T|} 27668\hline 27669 27670\sphinxAtStartPar 27671\sphinxcode{\sphinxupquote{KRB5\_PADATA\_GET\_FROM\_TYPED\_DATA}} 27672& 27673\sphinxAtStartPar 27674\sphinxcode{\sphinxupquote{22}} 27675\\ 27676\hline 27677\end{tabulary} 27678\par 27679\sphinxattableend\end{savenotes} 27680 27681 27682\subsubsection{KRB5\_PADATA\_NONE} 27683\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE:krb5-padata-none}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE:krb5-padata-none-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE::doc}}\index{KRB5\_PADATA\_NONE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_NONE}\spxextra{built\sphinxhyphen{}in variable}} 27684 27685\begin{fulllineitems} 27686\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_NONE:KRB5_PADATA_NONE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_NONE}}} 27687\end{fulllineitems} 27688 27689 27690 27691\begin{savenotes}\sphinxattablestart 27692\centering 27693\begin{tabulary}{\linewidth}[t]{|T|T|} 27694\hline 27695 27696\sphinxAtStartPar 27697\sphinxcode{\sphinxupquote{KRB5\_PADATA\_NONE}} 27698& 27699\sphinxAtStartPar 27700\sphinxcode{\sphinxupquote{0}} 27701\\ 27702\hline 27703\end{tabulary} 27704\par 27705\sphinxattableend\end{savenotes} 27706 27707 27708\subsubsection{KRB5\_PADATA\_OSF\_DCE} 27709\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE:krb5-padata-osf-dce}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE:krb5-padata-osf-dce-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE::doc}}\index{KRB5\_PADATA\_OSF\_DCE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_OSF\_DCE}\spxextra{built\sphinxhyphen{}in variable}} 27710 27711\begin{fulllineitems} 27712\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OSF_DCE:KRB5_PADATA_OSF_DCE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_OSF\_DCE}}} 27713\end{fulllineitems} 27714 27715 27716\sphinxAtStartPar 27717OSF DCE. 27718 27719\sphinxAtStartPar 27720RFC 4120 27721 27722 27723\begin{savenotes}\sphinxattablestart 27724\centering 27725\begin{tabulary}{\linewidth}[t]{|T|T|} 27726\hline 27727 27728\sphinxAtStartPar 27729\sphinxcode{\sphinxupquote{KRB5\_PADATA\_OSF\_DCE}} 27730& 27731\sphinxAtStartPar 27732\sphinxcode{\sphinxupquote{8}} 27733\\ 27734\hline 27735\end{tabulary} 27736\par 27737\sphinxattableend\end{savenotes} 27738 27739 27740\subsubsection{KRB5\_PADATA\_OTP\_CHALLENGE} 27741\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE::doc}}\index{KRB5\_PADATA\_OTP\_CHALLENGE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_OTP\_CHALLENGE}\spxextra{built\sphinxhyphen{}in variable}} 27742 27743\begin{fulllineitems} 27744\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_CHALLENGE:KRB5_PADATA_OTP_CHALLENGE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_OTP\_CHALLENGE}}} 27745\end{fulllineitems} 27746 27747 27748\sphinxAtStartPar 27749RFC 6560 section 4.1. 27750 27751 27752\begin{savenotes}\sphinxattablestart 27753\centering 27754\begin{tabulary}{\linewidth}[t]{|T|T|} 27755\hline 27756 27757\sphinxAtStartPar 27758\sphinxcode{\sphinxupquote{KRB5\_PADATA\_OTP\_CHALLENGE}} 27759& 27760\sphinxAtStartPar 27761\sphinxcode{\sphinxupquote{141}} 27762\\ 27763\hline 27764\end{tabulary} 27765\par 27766\sphinxattableend\end{savenotes} 27767 27768 27769\subsubsection{KRB5\_PADATA\_OTP\_PIN\_CHANGE} 27770\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE::doc}}\index{KRB5\_PADATA\_OTP\_PIN\_CHANGE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_OTP\_PIN\_CHANGE}\spxextra{built\sphinxhyphen{}in variable}} 27771 27772\begin{fulllineitems} 27773\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_PIN_CHANGE:KRB5_PADATA_OTP_PIN_CHANGE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_OTP\_PIN\_CHANGE}}} 27774\end{fulllineitems} 27775 27776 27777\sphinxAtStartPar 27778RFC 6560 section 4.3. 27779 27780 27781\begin{savenotes}\sphinxattablestart 27782\centering 27783\begin{tabulary}{\linewidth}[t]{|T|T|} 27784\hline 27785 27786\sphinxAtStartPar 27787\sphinxcode{\sphinxupquote{KRB5\_PADATA\_OTP\_PIN\_CHANGE}} 27788& 27789\sphinxAtStartPar 27790\sphinxcode{\sphinxupquote{144}} 27791\\ 27792\hline 27793\end{tabulary} 27794\par 27795\sphinxattableend\end{savenotes} 27796 27797 27798\subsubsection{KRB5\_PADATA\_OTP\_REQUEST} 27799\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:krb5-padata-otp-request}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:krb5-padata-otp-request-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST::doc}}\index{KRB5\_PADATA\_OTP\_REQUEST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_OTP\_REQUEST}\spxextra{built\sphinxhyphen{}in variable}} 27800 27801\begin{fulllineitems} 27802\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_OTP_REQUEST:KRB5_PADATA_OTP_REQUEST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_OTP\_REQUEST}}} 27803\end{fulllineitems} 27804 27805 27806\sphinxAtStartPar 27807RFC 6560 section 4.2. 27808 27809 27810\begin{savenotes}\sphinxattablestart 27811\centering 27812\begin{tabulary}{\linewidth}[t]{|T|T|} 27813\hline 27814 27815\sphinxAtStartPar 27816\sphinxcode{\sphinxupquote{KRB5\_PADATA\_OTP\_REQUEST}} 27817& 27818\sphinxAtStartPar 27819\sphinxcode{\sphinxupquote{142}} 27820\\ 27821\hline 27822\end{tabulary} 27823\par 27824\sphinxattableend\end{savenotes} 27825 27826 27827\subsubsection{KRB5\_PADATA\_PAC\_OPTIONS} 27828\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_OPTIONS::doc}}\index{KRB5\_PADATA\_PAC\_OPTIONS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PAC\_OPTIONS}\spxextra{built\sphinxhyphen{}in variable}} 27829 27830\begin{fulllineitems} 27831\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_OPTIONS:KRB5_PADATA_PAC_OPTIONS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PAC\_OPTIONS}}} 27832\end{fulllineitems} 27833 27834 27835\sphinxAtStartPar 27836MS\sphinxhyphen{}KILE and MS\sphinxhyphen{}SFU. 27837 27838 27839\begin{savenotes}\sphinxattablestart 27840\centering 27841\begin{tabulary}{\linewidth}[t]{|T|T|} 27842\hline 27843 27844\sphinxAtStartPar 27845\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PAC\_OPTIONS}} 27846& 27847\sphinxAtStartPar 27848\sphinxcode{\sphinxupquote{167}} 27849\\ 27850\hline 27851\end{tabulary} 27852\par 27853\sphinxattableend\end{savenotes} 27854 27855 27856\subsubsection{KRB5\_PADATA\_PAC\_REQUEST} 27857\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:krb5-padata-pac-request}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:krb5-padata-pac-request-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST::doc}}\index{KRB5\_PADATA\_PAC\_REQUEST (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PAC\_REQUEST}\spxextra{built\sphinxhyphen{}in variable}} 27858 27859\begin{fulllineitems} 27860\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PAC_REQUEST:KRB5_PADATA_PAC_REQUEST}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PAC\_REQUEST}}} 27861\end{fulllineitems} 27862 27863 27864\sphinxAtStartPar 27865include Windows PAC 27866 27867 27868\begin{savenotes}\sphinxattablestart 27869\centering 27870\begin{tabulary}{\linewidth}[t]{|T|T|} 27871\hline 27872 27873\sphinxAtStartPar 27874\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PAC\_REQUEST}} 27875& 27876\sphinxAtStartPar 27877\sphinxcode{\sphinxupquote{128}} 27878\\ 27879\hline 27880\end{tabulary} 27881\par 27882\sphinxattableend\end{savenotes} 27883 27884 27885\subsubsection{KRB5\_PADATA\_PKINIT\_KX} 27886\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PKINIT\_KX}\spxextra{built\sphinxhyphen{}in variable}} 27887 27888\begin{fulllineitems} 27889\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PKINIT_KX:KRB5_PADATA_PKINIT_KX}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PKINIT\_KX}}} 27890\end{fulllineitems} 27891 27892 27893\sphinxAtStartPar 27894RFC 6112. 27895 27896 27897\begin{savenotes}\sphinxattablestart 27898\centering 27899\begin{tabulary}{\linewidth}[t]{|T|T|} 27900\hline 27901 27902\sphinxAtStartPar 27903\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PKINIT\_KX}} 27904& 27905\sphinxAtStartPar 27906\sphinxcode{\sphinxupquote{147}} 27907\\ 27908\hline 27909\end{tabulary} 27910\par 27911\sphinxattableend\end{savenotes} 27912 27913 27914\subsubsection{KRB5\_PADATA\_PK\_AS\_REP} 27915\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:krb5-padata-pk-as-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP::doc}}\index{KRB5\_PADATA\_PK\_AS\_REP (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PK\_AS\_REP}\spxextra{built\sphinxhyphen{}in variable}} 27916 27917\begin{fulllineitems} 27918\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP:KRB5_PADATA_PK_AS_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REP}}} 27919\end{fulllineitems} 27920 27921 27922\sphinxAtStartPar 27923PKINIT. 27924 27925\sphinxAtStartPar 27926RFC 4556 27927 27928 27929\begin{savenotes}\sphinxattablestart 27930\centering 27931\begin{tabulary}{\linewidth}[t]{|T|T|} 27932\hline 27933 27934\sphinxAtStartPar 27935\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REP}} 27936& 27937\sphinxAtStartPar 27938\sphinxcode{\sphinxupquote{17}} 27939\\ 27940\hline 27941\end{tabulary} 27942\par 27943\sphinxattableend\end{savenotes} 27944 27945 27946\subsubsection{KRB5\_PADATA\_PK\_AS\_REP\_OLD} 27947\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:krb5-padata-pk-as-rep-old}}\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}}\index{KRB5\_PADATA\_PK\_AS\_REP\_OLD (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PK\_AS\_REP\_OLD}\spxextra{built\sphinxhyphen{}in variable}} 27948 27949\begin{fulllineitems} 27950\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REP_OLD:KRB5_PADATA_PK_AS_REP_OLD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REP\_OLD}}} 27951\end{fulllineitems} 27952 27953 27954\sphinxAtStartPar 27955PKINIT. 27956 27957 27958\begin{savenotes}\sphinxattablestart 27959\centering 27960\begin{tabulary}{\linewidth}[t]{|T|T|} 27961\hline 27962 27963\sphinxAtStartPar 27964\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REP\_OLD}} 27965& 27966\sphinxAtStartPar 27967\sphinxcode{\sphinxupquote{15}} 27968\\ 27969\hline 27970\end{tabulary} 27971\par 27972\sphinxattableend\end{savenotes} 27973 27974 27975\subsubsection{KRB5\_PADATA\_PK\_AS\_REQ} 27976\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ::doc}}\index{KRB5\_PADATA\_PK\_AS\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PK\_AS\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 27977 27978\begin{fulllineitems} 27979\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ:KRB5_PADATA_PK_AS_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REQ}}} 27980\end{fulllineitems} 27981 27982 27983\sphinxAtStartPar 27984PKINIT. 27985 27986\sphinxAtStartPar 27987RFC 4556 27988 27989 27990\begin{savenotes}\sphinxattablestart 27991\centering 27992\begin{tabulary}{\linewidth}[t]{|T|T|} 27993\hline 27994 27995\sphinxAtStartPar 27996\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REQ}} 27997& 27998\sphinxAtStartPar 27999\sphinxcode{\sphinxupquote{16}} 28000\\ 28001\hline 28002\end{tabulary} 28003\par 28004\sphinxattableend\end{savenotes} 28005 28006 28007\subsubsection{KRB5\_PADATA\_PK\_AS\_REQ\_OLD} 28008\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}\spxextra{built\sphinxhyphen{}in variable}} 28009 28010\begin{fulllineitems} 28011\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PK_AS_REQ_OLD:KRB5_PADATA_PK_AS_REQ_OLD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}}} 28012\end{fulllineitems} 28013 28014 28015\sphinxAtStartPar 28016PKINIT. 28017 28018 28019\begin{savenotes}\sphinxattablestart 28020\centering 28021\begin{tabulary}{\linewidth}[t]{|T|T|} 28022\hline 28023 28024\sphinxAtStartPar 28025\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PK\_AS\_REQ\_OLD}} 28026& 28027\sphinxAtStartPar 28028\sphinxcode{\sphinxupquote{14}} 28029\\ 28030\hline 28031\end{tabulary} 28032\par 28033\sphinxattableend\end{savenotes} 28034 28035 28036\subsubsection{KRB5\_PADATA\_PW\_SALT} 28037\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT:krb5-padata-pw-salt}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT:krb5-padata-pw-salt-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT::doc}}\index{KRB5\_PADATA\_PW\_SALT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_PW\_SALT}\spxextra{built\sphinxhyphen{}in variable}} 28038 28039\begin{fulllineitems} 28040\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_PW_SALT:KRB5_PADATA_PW_SALT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_PW\_SALT}}} 28041\end{fulllineitems} 28042 28043 28044\sphinxAtStartPar 28045RFC 4120. 28046 28047 28048\begin{savenotes}\sphinxattablestart 28049\centering 28050\begin{tabulary}{\linewidth}[t]{|T|T|} 28051\hline 28052 28053\sphinxAtStartPar 28054\sphinxcode{\sphinxupquote{KRB5\_PADATA\_PW\_SALT}} 28055& 28056\sphinxAtStartPar 28057\sphinxcode{\sphinxupquote{3}} 28058\\ 28059\hline 28060\end{tabulary} 28061\par 28062\sphinxattableend\end{savenotes} 28063 28064 28065\subsubsection{KRB5\_PADATA\_REFERRAL} 28066\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL:krb5-padata-referral}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL:krb5-padata-referral-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL::doc}}\index{KRB5\_PADATA\_REFERRAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_REFERRAL}\spxextra{built\sphinxhyphen{}in variable}} 28067 28068\begin{fulllineitems} 28069\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REFERRAL:KRB5_PADATA_REFERRAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_REFERRAL}}} 28070\end{fulllineitems} 28071 28072 28073\sphinxAtStartPar 28074draft referral system 28075 28076 28077\begin{savenotes}\sphinxattablestart 28078\centering 28079\begin{tabulary}{\linewidth}[t]{|T|T|} 28080\hline 28081 28082\sphinxAtStartPar 28083\sphinxcode{\sphinxupquote{KRB5\_PADATA\_REFERRAL}} 28084& 28085\sphinxAtStartPar 28086\sphinxcode{\sphinxupquote{25}} 28087\\ 28088\hline 28089\end{tabulary} 28090\par 28091\sphinxattableend\end{savenotes} 28092 28093 28094\subsubsection{KRB5\_PADATA\_S4U\_X509\_USER} 28095\label{\detokenize{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:krb5-padata-s4u-x509-user}}\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}}\index{KRB5\_PADATA\_S4U\_X509\_USER (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_S4U\_X509\_USER}\spxextra{built\sphinxhyphen{}in variable}} 28096 28097\begin{fulllineitems} 28098\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_S4U_X509_USER:KRB5_PADATA_S4U_X509_USER}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_S4U\_X509\_USER}}} 28099\end{fulllineitems} 28100 28101 28102\sphinxAtStartPar 28103certificate protocol transition request 28104 28105 28106\begin{savenotes}\sphinxattablestart 28107\centering 28108\begin{tabulary}{\linewidth}[t]{|T|T|} 28109\hline 28110 28111\sphinxAtStartPar 28112\sphinxcode{\sphinxupquote{KRB5\_PADATA\_S4U\_X509\_USER}} 28113& 28114\sphinxAtStartPar 28115\sphinxcode{\sphinxupquote{130}} 28116\\ 28117\hline 28118\end{tabulary} 28119\par 28120\sphinxattableend\end{savenotes} 28121 28122 28123\subsubsection{KRB5\_PADATA\_SAM\_CHALLENGE} 28124\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:krb5-padata-sam-challenge}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:krb5-padata-sam-challenge-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE::doc}}\index{KRB5\_PADATA\_SAM\_CHALLENGE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SAM\_CHALLENGE}\spxextra{built\sphinxhyphen{}in variable}} 28125 28126\begin{fulllineitems} 28127\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE:KRB5_PADATA_SAM_CHALLENGE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SAM\_CHALLENGE}}} 28128\end{fulllineitems} 28129 28130 28131\sphinxAtStartPar 28132SAM/OTP. 28133 28134 28135\begin{savenotes}\sphinxattablestart 28136\centering 28137\begin{tabulary}{\linewidth}[t]{|T|T|} 28138\hline 28139 28140\sphinxAtStartPar 28141\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SAM\_CHALLENGE}} 28142& 28143\sphinxAtStartPar 28144\sphinxcode{\sphinxupquote{12}} 28145\\ 28146\hline 28147\end{tabulary} 28148\par 28149\sphinxattableend\end{savenotes} 28150 28151 28152\subsubsection{KRB5\_PADATA\_SAM\_CHALLENGE\_2} 28153\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:krb5-padata-sam-challenge-2-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2::doc}}\index{KRB5\_PADATA\_SAM\_CHALLENGE\_2 (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SAM\_CHALLENGE\_2}\spxextra{built\sphinxhyphen{}in variable}} 28154 28155\begin{fulllineitems} 28156\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_CHALLENGE_2:KRB5_PADATA_SAM_CHALLENGE_2}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SAM\_CHALLENGE\_2}}} 28157\end{fulllineitems} 28158 28159 28160\sphinxAtStartPar 28161draft challenge system, updated 28162 28163 28164\begin{savenotes}\sphinxattablestart 28165\centering 28166\begin{tabulary}{\linewidth}[t]{|T|T|} 28167\hline 28168 28169\sphinxAtStartPar 28170\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SAM\_CHALLENGE\_2}} 28171& 28172\sphinxAtStartPar 28173\sphinxcode{\sphinxupquote{30}} 28174\\ 28175\hline 28176\end{tabulary} 28177\par 28178\sphinxattableend\end{savenotes} 28179 28180 28181\subsubsection{KRB5\_PADATA\_SAM\_REDIRECT} 28182\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:krb5-padata-sam-redirect}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:krb5-padata-sam-redirect-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT::doc}}\index{KRB5\_PADATA\_SAM\_REDIRECT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SAM\_REDIRECT}\spxextra{built\sphinxhyphen{}in variable}} 28183 28184\begin{fulllineitems} 28185\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_REDIRECT:KRB5_PADATA_SAM_REDIRECT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SAM\_REDIRECT}}} 28186\end{fulllineitems} 28187 28188 28189\sphinxAtStartPar 28190SAM/OTP. 28191 28192\sphinxAtStartPar 28193RFC 4120 28194 28195 28196\begin{savenotes}\sphinxattablestart 28197\centering 28198\begin{tabulary}{\linewidth}[t]{|T|T|} 28199\hline 28200 28201\sphinxAtStartPar 28202\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SAM\_REDIRECT}} 28203& 28204\sphinxAtStartPar 28205\sphinxcode{\sphinxupquote{21}} 28206\\ 28207\hline 28208\end{tabulary} 28209\par 28210\sphinxattableend\end{savenotes} 28211 28212 28213\subsubsection{KRB5\_PADATA\_SAM\_RESPONSE} 28214\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:krb5-padata-sam-response}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:krb5-padata-sam-response-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE::doc}}\index{KRB5\_PADATA\_SAM\_RESPONSE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SAM\_RESPONSE}\spxextra{built\sphinxhyphen{}in variable}} 28215 28216\begin{fulllineitems} 28217\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE:KRB5_PADATA_SAM_RESPONSE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SAM\_RESPONSE}}} 28218\end{fulllineitems} 28219 28220 28221\sphinxAtStartPar 28222SAM/OTP. 28223 28224 28225\begin{savenotes}\sphinxattablestart 28226\centering 28227\begin{tabulary}{\linewidth}[t]{|T|T|} 28228\hline 28229 28230\sphinxAtStartPar 28231\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SAM\_RESPONSE}} 28232& 28233\sphinxAtStartPar 28234\sphinxcode{\sphinxupquote{13}} 28235\\ 28236\hline 28237\end{tabulary} 28238\par 28239\sphinxattableend\end{savenotes} 28240 28241 28242\subsubsection{KRB5\_PADATA\_SAM\_RESPONSE\_2} 28243\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2::doc}}\index{KRB5\_PADATA\_SAM\_RESPONSE\_2 (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SAM\_RESPONSE\_2}\spxextra{built\sphinxhyphen{}in variable}} 28244 28245\begin{fulllineitems} 28246\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SAM_RESPONSE_2:KRB5_PADATA_SAM_RESPONSE_2}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SAM\_RESPONSE\_2}}} 28247\end{fulllineitems} 28248 28249 28250\sphinxAtStartPar 28251draft challenge system, updated 28252 28253 28254\begin{savenotes}\sphinxattablestart 28255\centering 28256\begin{tabulary}{\linewidth}[t]{|T|T|} 28257\hline 28258 28259\sphinxAtStartPar 28260\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SAM\_RESPONSE\_2}} 28261& 28262\sphinxAtStartPar 28263\sphinxcode{\sphinxupquote{31}} 28264\\ 28265\hline 28266\end{tabulary} 28267\par 28268\sphinxattableend\end{savenotes} 28269 28270 28271\subsubsection{KRB5\_PADATA\_SESAME} 28272\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME:krb5-padata-sesame}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME:krb5-padata-sesame-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME::doc}}\index{KRB5\_PADATA\_SESAME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SESAME}\spxextra{built\sphinxhyphen{}in variable}} 28273 28274\begin{fulllineitems} 28275\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SESAME:KRB5_PADATA_SESAME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SESAME}}} 28276\end{fulllineitems} 28277 28278 28279\sphinxAtStartPar 28280Sesame project. 28281 28282\sphinxAtStartPar 28283RFC 4120 28284 28285 28286\begin{savenotes}\sphinxattablestart 28287\centering 28288\begin{tabulary}{\linewidth}[t]{|T|T|} 28289\hline 28290 28291\sphinxAtStartPar 28292\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SESAME}} 28293& 28294\sphinxAtStartPar 28295\sphinxcode{\sphinxupquote{7}} 28296\\ 28297\hline 28298\end{tabulary} 28299\par 28300\sphinxattableend\end{savenotes} 28301 28302 28303\subsubsection{KRB5\_PADATA\_SPAKE} 28304\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE:krb5-padata-spake}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE:krb5-padata-spake-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE::doc}}\index{KRB5\_PADATA\_SPAKE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SPAKE}\spxextra{built\sphinxhyphen{}in variable}} 28305 28306\begin{fulllineitems} 28307\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SPAKE:KRB5_PADATA_SPAKE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SPAKE}}} 28308\end{fulllineitems} 28309 28310 28311 28312\begin{savenotes}\sphinxattablestart 28313\centering 28314\begin{tabulary}{\linewidth}[t]{|T|T|} 28315\hline 28316 28317\sphinxAtStartPar 28318\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SPAKE}} 28319& 28320\sphinxAtStartPar 28321\sphinxcode{\sphinxupquote{151}} 28322\\ 28323\hline 28324\end{tabulary} 28325\par 28326\sphinxattableend\end{savenotes} 28327 28328 28329\subsubsection{KRB5\_PADATA\_REDHAT\_IDP\_OAUTH2} 28330\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_IDP_OAUTH2:krb5-padata-redhat-idp-oauth2}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_IDP_OAUTH2:krb5-padata-redhat-idp-oauth2-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_IDP_OAUTH2::doc}}\index{KRB5\_PADATA\_REDHAT\_IDP\_OAUTH2 (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_REDHAT\_IDP\_OAUTH2}\spxextra{built\sphinxhyphen{}in variable}} 28331 28332\begin{fulllineitems} 28333\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_IDP_OAUTH2:KRB5_PADATA_REDHAT_IDP_OAUTH2}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_REDHAT\_IDP\_OAUTH2}}} 28334\end{fulllineitems} 28335 28336 28337\sphinxAtStartPar 28338Red Hat IdP mechanism. 28339 28340 28341\begin{savenotes}\sphinxattablestart 28342\centering 28343\begin{tabulary}{\linewidth}[t]{|T|T|} 28344\hline 28345 28346\sphinxAtStartPar 28347\sphinxcode{\sphinxupquote{KRB5\_PADATA\_REDHAT\_IDP\_OAUTH2}} 28348& 28349\sphinxAtStartPar 28350\sphinxcode{\sphinxupquote{152}} 28351\\ 28352\hline 28353\end{tabulary} 28354\par 28355\sphinxattableend\end{savenotes} 28356 28357 28358\subsubsection{KRB5\_PADATA\_REDHAT\_PASSKEY} 28359\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_PASSKEY:krb5-padata-redhat-passkey}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_PASSKEY:krb5-padata-redhat-passkey-data}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_PASSKEY::doc}}\index{KRB5\_PADATA\_REDHAT\_PASSKEY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_REDHAT\_PASSKEY}\spxextra{built\sphinxhyphen{}in variable}} 28360 28361\begin{fulllineitems} 28362\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_REDHAT_PASSKEY:KRB5_PADATA_REDHAT_PASSKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_REDHAT\_PASSKEY}}} 28363\end{fulllineitems} 28364 28365 28366\sphinxAtStartPar 28367Red Hat Passkey mechanism. 28368 28369 28370\begin{savenotes}\sphinxattablestart 28371\centering 28372\begin{tabulary}{\linewidth}[t]{|T|T|} 28373\hline 28374 28375\sphinxAtStartPar 28376\sphinxcode{\sphinxupquote{KRB5\_PADATA\_REDHAT\_PASSKEY}} 28377& 28378\sphinxAtStartPar 28379\sphinxcode{\sphinxupquote{153}} 28380\\ 28381\hline 28382\end{tabulary} 28383\par 28384\sphinxattableend\end{savenotes} 28385 28386 28387\subsubsection{KRB5\_PADATA\_SVR\_REFERRAL\_INFO} 28388\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO::doc}}\index{KRB5\_PADATA\_SVR\_REFERRAL\_INFO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}\spxextra{built\sphinxhyphen{}in variable}} 28389 28390\begin{fulllineitems} 28391\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_SVR_REFERRAL_INFO:KRB5_PADATA_SVR_REFERRAL_INFO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}}} 28392\end{fulllineitems} 28393 28394 28395\sphinxAtStartPar 28396Windows 2000 referrals. 28397 28398\sphinxAtStartPar 28399RFC 6820 28400 28401 28402\begin{savenotes}\sphinxattablestart 28403\centering 28404\begin{tabulary}{\linewidth}[t]{|T|T|} 28405\hline 28406 28407\sphinxAtStartPar 28408\sphinxcode{\sphinxupquote{KRB5\_PADATA\_SVR\_REFERRAL\_INFO}} 28409& 28410\sphinxAtStartPar 28411\sphinxcode{\sphinxupquote{20}} 28412\\ 28413\hline 28414\end{tabulary} 28415\par 28416\sphinxattableend\end{savenotes} 28417 28418 28419\subsubsection{KRB5\_PADATA\_TGS\_REQ} 28420\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}}\label{\detokenize{appdev/refs/macros/KRB5_PADATA_TGS_REQ::doc}}\index{KRB5\_PADATA\_TGS\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_TGS\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 28421 28422\begin{fulllineitems} 28423\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_TGS_REQ:KRB5_PADATA_TGS_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_TGS\_REQ}}} 28424\end{fulllineitems} 28425 28426 28427 28428\begin{savenotes}\sphinxattablestart 28429\centering 28430\begin{tabulary}{\linewidth}[t]{|T|T|} 28431\hline 28432 28433\sphinxAtStartPar 28434\sphinxcode{\sphinxupquote{KRB5\_PADATA\_TGS\_REQ}} 28435& 28436\sphinxAtStartPar 28437\sphinxcode{\sphinxupquote{KRB5\_PADATA\_AP\_REQ}} 28438\\ 28439\hline 28440\end{tabulary} 28441\par 28442\sphinxattableend\end{savenotes} 28443 28444 28445\subsubsection{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO} 28446\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}\spxextra{built\sphinxhyphen{}in variable}} 28447 28448\begin{fulllineitems} 28449\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PADATA_USE_SPECIFIED_KVNO:KRB5_PADATA_USE_SPECIFIED_KVNO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}}} 28450\end{fulllineitems} 28451 28452 28453\sphinxAtStartPar 28454RFC 4120. 28455 28456 28457\begin{savenotes}\sphinxattablestart 28458\centering 28459\begin{tabulary}{\linewidth}[t]{|T|T|} 28460\hline 28461 28462\sphinxAtStartPar 28463\sphinxcode{\sphinxupquote{KRB5\_PADATA\_USE\_SPECIFIED\_KVNO}} 28464& 28465\sphinxAtStartPar 28466\sphinxcode{\sphinxupquote{20}} 28467\\ 28468\hline 28469\end{tabulary} 28470\par 28471\sphinxattableend\end{savenotes} 28472 28473 28474\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD} 28475\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:krb5-principal-compare-casefold}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:krb5-principal-compare-casefold-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD::doc}}\index{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}\spxextra{built\sphinxhyphen{}in variable}} 28476 28477\begin{fulllineitems} 28478\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_CASEFOLD:KRB5_PRINCIPAL_COMPARE_CASEFOLD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}}} 28479\end{fulllineitems} 28480 28481 28482\sphinxAtStartPar 28483case\sphinxhyphen{}insensitive 28484 28485 28486\begin{savenotes}\sphinxattablestart 28487\centering 28488\begin{tabulary}{\linewidth}[t]{|T|T|} 28489\hline 28490 28491\sphinxAtStartPar 28492\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_CASEFOLD}} 28493& 28494\sphinxAtStartPar 28495\sphinxcode{\sphinxupquote{4}} 28496\\ 28497\hline 28498\end{tabulary} 28499\par 28500\sphinxattableend\end{savenotes} 28501 28502 28503\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE} 28504\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}\spxextra{built\sphinxhyphen{}in variable}} 28505 28506\begin{fulllineitems} 28507\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_ENTERPRISE:KRB5_PRINCIPAL_COMPARE_ENTERPRISE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}}} 28508\end{fulllineitems} 28509 28510 28511\sphinxAtStartPar 28512UPNs as real principals. 28513 28514 28515\begin{savenotes}\sphinxattablestart 28516\centering 28517\begin{tabulary}{\linewidth}[t]{|T|T|} 28518\hline 28519 28520\sphinxAtStartPar 28521\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_ENTERPRISE}} 28522& 28523\sphinxAtStartPar 28524\sphinxcode{\sphinxupquote{2}} 28525\\ 28526\hline 28527\end{tabulary} 28528\par 28529\sphinxattableend\end{savenotes} 28530 28531 28532\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM} 28533\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:krb5-principal-compare-ignore-realm-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM::doc}}\index{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 28534 28535\begin{fulllineitems} 28536\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_IGNORE_REALM:KRB5_PRINCIPAL_COMPARE_IGNORE_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}}} 28537\end{fulllineitems} 28538 28539 28540\sphinxAtStartPar 28541ignore realm component 28542 28543 28544\begin{savenotes}\sphinxattablestart 28545\centering 28546\begin{tabulary}{\linewidth}[t]{|T|T|} 28547\hline 28548 28549\sphinxAtStartPar 28550\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_IGNORE\_REALM}} 28551& 28552\sphinxAtStartPar 28553\sphinxcode{\sphinxupquote{1}} 28554\\ 28555\hline 28556\end{tabulary} 28557\par 28558\sphinxattableend\end{savenotes} 28559 28560 28561\subsubsection{KRB5\_PRINCIPAL\_COMPARE\_UTF8} 28562\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:krb5-principal-compare-utf8}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:krb5-principal-compare-utf8-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8::doc}}\index{KRB5\_PRINCIPAL\_COMPARE\_UTF8 (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_COMPARE\_UTF8}\spxextra{built\sphinxhyphen{}in variable}} 28563 28564\begin{fulllineitems} 28565\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_COMPARE_UTF8:KRB5_PRINCIPAL_COMPARE_UTF8}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_UTF8}}} 28566\end{fulllineitems} 28567 28568 28569\sphinxAtStartPar 28570treat principals as UTF\sphinxhyphen{}8 28571 28572 28573\begin{savenotes}\sphinxattablestart 28574\centering 28575\begin{tabulary}{\linewidth}[t]{|T|T|} 28576\hline 28577 28578\sphinxAtStartPar 28579\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_COMPARE\_UTF8}} 28580& 28581\sphinxAtStartPar 28582\sphinxcode{\sphinxupquote{8}} 28583\\ 28584\hline 28585\end{tabulary} 28586\par 28587\sphinxattableend\end{savenotes} 28588 28589 28590\subsubsection{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE} 28591\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:krb5-principal-parse-enterprise}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:krb5-principal-parse-enterprise-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE::doc}}\index{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}\spxextra{built\sphinxhyphen{}in variable}} 28592 28593\begin{fulllineitems} 28594\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_ENTERPRISE:KRB5_PRINCIPAL_PARSE_ENTERPRISE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}}} 28595\end{fulllineitems} 28596 28597 28598\sphinxAtStartPar 28599Create single\sphinxhyphen{}component enterprise principle. 28600 28601 28602\begin{savenotes}\sphinxattablestart 28603\centering 28604\begin{tabulary}{\linewidth}[t]{|T|T|} 28605\hline 28606 28607\sphinxAtStartPar 28608\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_ENTERPRISE}} 28609& 28610\sphinxAtStartPar 28611\sphinxcode{\sphinxupquote{0x4}} 28612\\ 28613\hline 28614\end{tabulary} 28615\par 28616\sphinxattableend\end{savenotes} 28617 28618 28619\subsubsection{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM} 28620\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}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM::doc}}\index{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 28621 28622\begin{fulllineitems} 28623\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_IGNORE_REALM:KRB5_PRINCIPAL_PARSE_IGNORE_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}}} 28624\end{fulllineitems} 28625 28626 28627\sphinxAtStartPar 28628Ignore realm if present. 28629 28630 28631\begin{savenotes}\sphinxattablestart 28632\centering 28633\begin{tabulary}{\linewidth}[t]{|T|T|} 28634\hline 28635 28636\sphinxAtStartPar 28637\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_IGNORE\_REALM}} 28638& 28639\sphinxAtStartPar 28640\sphinxcode{\sphinxupquote{0x8}} 28641\\ 28642\hline 28643\end{tabulary} 28644\par 28645\sphinxattableend\end{savenotes} 28646 28647 28648\subsubsection{KRB5\_PRINCIPAL\_PARSE\_NO\_DEF\_REALM} 28649\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_DEF_REALM:krb5-principal-parse-no-def-realm}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_DEF_REALM:krb5-principal-parse-no-def-realm-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_DEF_REALM::doc}}\index{KRB5\_PRINCIPAL\_PARSE\_NO\_DEF\_REALM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_PARSE\_NO\_DEF\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 28650 28651\begin{fulllineitems} 28652\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_DEF_REALM:KRB5_PRINCIPAL_PARSE_NO_DEF_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_NO\_DEF\_REALM}}} 28653\end{fulllineitems} 28654 28655 28656\sphinxAtStartPar 28657Don’t add default realm. 28658 28659 28660\begin{savenotes}\sphinxattablestart 28661\centering 28662\begin{tabulary}{\linewidth}[t]{|T|T|} 28663\hline 28664 28665\sphinxAtStartPar 28666\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_NO\_DEF\_REALM}} 28667& 28668\sphinxAtStartPar 28669\sphinxcode{\sphinxupquote{0x10}} 28670\\ 28671\hline 28672\end{tabulary} 28673\par 28674\sphinxattableend\end{savenotes} 28675 28676 28677\subsubsection{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM} 28678\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:krb5-principal-parse-no-realm}}\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}}\index{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 28679 28680\begin{fulllineitems} 28681\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_NO_REALM:KRB5_PRINCIPAL_PARSE_NO_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}}} 28682\end{fulllineitems} 28683 28684 28685\sphinxAtStartPar 28686Error if realm is present. 28687 28688 28689\begin{savenotes}\sphinxattablestart 28690\centering 28691\begin{tabulary}{\linewidth}[t]{|T|T|} 28692\hline 28693 28694\sphinxAtStartPar 28695\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_NO\_REALM}} 28696& 28697\sphinxAtStartPar 28698\sphinxcode{\sphinxupquote{0x1}} 28699\\ 28700\hline 28701\end{tabulary} 28702\par 28703\sphinxattableend\end{savenotes} 28704 28705 28706\subsubsection{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM} 28707\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}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM::doc}}\index{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 28708 28709\begin{fulllineitems} 28710\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_PARSE_REQUIRE_REALM:KRB5_PRINCIPAL_PARSE_REQUIRE_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}}} 28711\end{fulllineitems} 28712 28713 28714\sphinxAtStartPar 28715Error if realm is not present. 28716 28717 28718\begin{savenotes}\sphinxattablestart 28719\centering 28720\begin{tabulary}{\linewidth}[t]{|T|T|} 28721\hline 28722 28723\sphinxAtStartPar 28724\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_PARSE\_REQUIRE\_REALM}} 28725& 28726\sphinxAtStartPar 28727\sphinxcode{\sphinxupquote{0x2}} 28728\\ 28729\hline 28730\end{tabulary} 28731\par 28732\sphinxattableend\end{savenotes} 28733 28734 28735\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY} 28736\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:krb5-principal-unparse-display}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:krb5-principal-unparse-display-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY::doc}}\index{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}\spxextra{built\sphinxhyphen{}in variable}} 28737 28738\begin{fulllineitems} 28739\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_DISPLAY:KRB5_PRINCIPAL_UNPARSE_DISPLAY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}}} 28740\end{fulllineitems} 28741 28742 28743\sphinxAtStartPar 28744Don’t escape special characters. 28745 28746 28747\begin{savenotes}\sphinxattablestart 28748\centering 28749\begin{tabulary}{\linewidth}[t]{|T|T|} 28750\hline 28751 28752\sphinxAtStartPar 28753\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_UNPARSE\_DISPLAY}} 28754& 28755\sphinxAtStartPar 28756\sphinxcode{\sphinxupquote{0x4}} 28757\\ 28758\hline 28759\end{tabulary} 28760\par 28761\sphinxattableend\end{savenotes} 28762 28763 28764\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM} 28765\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 28766 28767\begin{fulllineitems} 28768\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_NO_REALM:KRB5_PRINCIPAL_UNPARSE_NO_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}}} 28769\end{fulllineitems} 28770 28771 28772\sphinxAtStartPar 28773Omit realm always. 28774 28775 28776\begin{savenotes}\sphinxattablestart 28777\centering 28778\begin{tabulary}{\linewidth}[t]{|T|T|} 28779\hline 28780 28781\sphinxAtStartPar 28782\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_UNPARSE\_NO\_REALM}} 28783& 28784\sphinxAtStartPar 28785\sphinxcode{\sphinxupquote{0x2}} 28786\\ 28787\hline 28788\end{tabulary} 28789\par 28790\sphinxattableend\end{savenotes} 28791 28792 28793\subsubsection{KRB5\_PRINCIPAL\_UNPARSE\_SHORT} 28794\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}}\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT::doc}}\index{KRB5\_PRINCIPAL\_UNPARSE\_SHORT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}\spxextra{built\sphinxhyphen{}in variable}} 28795 28796\begin{fulllineitems} 28797\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRINCIPAL_UNPARSE_SHORT:KRB5_PRINCIPAL_UNPARSE_SHORT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}}} 28798\end{fulllineitems} 28799 28800 28801\sphinxAtStartPar 28802Omit realm if it is the local realm. 28803 28804 28805\begin{savenotes}\sphinxattablestart 28806\centering 28807\begin{tabulary}{\linewidth}[t]{|T|T|} 28808\hline 28809 28810\sphinxAtStartPar 28811\sphinxcode{\sphinxupquote{KRB5\_PRINCIPAL\_UNPARSE\_SHORT}} 28812& 28813\sphinxAtStartPar 28814\sphinxcode{\sphinxupquote{0x1}} 28815\\ 28816\hline 28817\end{tabulary} 28818\par 28819\sphinxattableend\end{savenotes} 28820 28821 28822\subsubsection{KRB5\_PRIV} 28823\label{\detokenize{appdev/refs/macros/KRB5_PRIV:krb5-priv}}\label{\detokenize{appdev/refs/macros/KRB5_PRIV:krb5-priv-data}}\label{\detokenize{appdev/refs/macros/KRB5_PRIV::doc}}\index{KRB5\_PRIV (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PRIV}\spxextra{built\sphinxhyphen{}in variable}} 28824 28825\begin{fulllineitems} 28826\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PRIV:KRB5_PRIV}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PRIV}}} 28827\end{fulllineitems} 28828 28829 28830\sphinxAtStartPar 28831Private application message. 28832 28833 28834\begin{savenotes}\sphinxattablestart 28835\centering 28836\begin{tabulary}{\linewidth}[t]{|T|T|} 28837\hline 28838 28839\sphinxAtStartPar 28840\sphinxcode{\sphinxupquote{KRB5\_PRIV}} 28841& 28842\sphinxAtStartPar 28843\sphinxcode{\sphinxupquote{((krb5\_msgtype)21)}} 28844\\ 28845\hline 28846\end{tabulary} 28847\par 28848\sphinxattableend\end{savenotes} 28849 28850 28851\subsubsection{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD} 28852\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:krb5-prompt-type-new-password-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD::doc}}\index{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}\spxextra{built\sphinxhyphen{}in variable}} 28853 28854\begin{fulllineitems} 28855\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD:KRB5_PROMPT_TYPE_NEW_PASSWORD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}}} 28856\end{fulllineitems} 28857 28858 28859\sphinxAtStartPar 28860Prompt for new password (during password change) 28861 28862 28863\begin{savenotes}\sphinxattablestart 28864\centering 28865\begin{tabulary}{\linewidth}[t]{|T|T|} 28866\hline 28867 28868\sphinxAtStartPar 28869\sphinxcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD}} 28870& 28871\sphinxAtStartPar 28872\sphinxcode{\sphinxupquote{0x2}} 28873\\ 28874\hline 28875\end{tabulary} 28876\par 28877\sphinxattableend\end{savenotes} 28878 28879 28880\subsubsection{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN} 28881\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}\spxextra{built\sphinxhyphen{}in variable}} 28882 28883\begin{fulllineitems} 28884\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN:KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}}} 28885\end{fulllineitems} 28886 28887 28888\sphinxAtStartPar 28889Prompt for new password again. 28890 28891 28892\begin{savenotes}\sphinxattablestart 28893\centering 28894\begin{tabulary}{\linewidth}[t]{|T|T|} 28895\hline 28896 28897\sphinxAtStartPar 28898\sphinxcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_NEW\_PASSWORD\_AGAIN}} 28899& 28900\sphinxAtStartPar 28901\sphinxcode{\sphinxupquote{0x3}} 28902\\ 28903\hline 28904\end{tabulary} 28905\par 28906\sphinxattableend\end{savenotes} 28907 28908 28909\subsubsection{KRB5\_PROMPT\_TYPE\_PASSWORD} 28910\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:krb5-prompt-type-password}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:krb5-prompt-type-password-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD::doc}}\index{KRB5\_PROMPT\_TYPE\_PASSWORD (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PROMPT\_TYPE\_PASSWORD}\spxextra{built\sphinxhyphen{}in variable}} 28911 28912\begin{fulllineitems} 28913\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PASSWORD:KRB5_PROMPT_TYPE_PASSWORD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_PASSWORD}}} 28914\end{fulllineitems} 28915 28916 28917\sphinxAtStartPar 28918Prompt for password. 28919 28920 28921\begin{savenotes}\sphinxattablestart 28922\centering 28923\begin{tabulary}{\linewidth}[t]{|T|T|} 28924\hline 28925 28926\sphinxAtStartPar 28927\sphinxcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_PASSWORD}} 28928& 28929\sphinxAtStartPar 28930\sphinxcode{\sphinxupquote{0x1}} 28931\\ 28932\hline 28933\end{tabulary} 28934\par 28935\sphinxattableend\end{savenotes} 28936 28937 28938\subsubsection{KRB5\_PROMPT\_TYPE\_PREAUTH} 28939\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:krb5-prompt-type-preauth}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:krb5-prompt-type-preauth-data}}\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH::doc}}\index{KRB5\_PROMPT\_TYPE\_PREAUTH (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PROMPT\_TYPE\_PREAUTH}\spxextra{built\sphinxhyphen{}in variable}} 28940 28941\begin{fulllineitems} 28942\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PROMPT_TYPE_PREAUTH:KRB5_PROMPT_TYPE_PREAUTH}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_PREAUTH}}} 28943\end{fulllineitems} 28944 28945 28946\sphinxAtStartPar 28947Prompt for preauthentication data (such as an OTP value) 28948 28949 28950\begin{savenotes}\sphinxattablestart 28951\centering 28952\begin{tabulary}{\linewidth}[t]{|T|T|} 28953\hline 28954 28955\sphinxAtStartPar 28956\sphinxcode{\sphinxupquote{KRB5\_PROMPT\_TYPE\_PREAUTH}} 28957& 28958\sphinxAtStartPar 28959\sphinxcode{\sphinxupquote{0x4}} 28960\\ 28961\hline 28962\end{tabulary} 28963\par 28964\sphinxattableend\end{savenotes} 28965 28966 28967\subsubsection{KRB5\_PVNO} 28968\label{\detokenize{appdev/refs/macros/KRB5_PVNO:krb5-pvno}}\label{\detokenize{appdev/refs/macros/KRB5_PVNO:krb5-pvno-data}}\label{\detokenize{appdev/refs/macros/KRB5_PVNO::doc}}\index{KRB5\_PVNO (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_PVNO}\spxextra{built\sphinxhyphen{}in variable}} 28969 28970\begin{fulllineitems} 28971\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_PVNO:KRB5_PVNO}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_PVNO}}} 28972\end{fulllineitems} 28973 28974 28975\sphinxAtStartPar 28976Protocol version number. 28977 28978 28979\begin{savenotes}\sphinxattablestart 28980\centering 28981\begin{tabulary}{\linewidth}[t]{|T|T|} 28982\hline 28983 28984\sphinxAtStartPar 28985\sphinxcode{\sphinxupquote{KRB5\_PVNO}} 28986& 28987\sphinxAtStartPar 28988\sphinxcode{\sphinxupquote{5}} 28989\\ 28990\hline 28991\end{tabulary} 28992\par 28993\sphinxattableend\end{savenotes} 28994 28995 28996\subsubsection{KRB5\_REALM\_BRANCH\_CHAR} 28997\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}}\label{\detokenize{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR::doc}}\index{KRB5\_REALM\_BRANCH\_CHAR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_REALM\_BRANCH\_CHAR}\spxextra{built\sphinxhyphen{}in variable}} 28998 28999\begin{fulllineitems} 29000\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_REALM_BRANCH_CHAR:KRB5_REALM_BRANCH_CHAR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_REALM\_BRANCH\_CHAR}}} 29001\end{fulllineitems} 29002 29003 29004 29005\begin{savenotes}\sphinxattablestart 29006\centering 29007\begin{tabulary}{\linewidth}[t]{|T|T|} 29008\hline 29009 29010\sphinxAtStartPar 29011\sphinxcode{\sphinxupquote{KRB5\_REALM\_BRANCH\_CHAR}} 29012& 29013\sphinxAtStartPar 29014\sphinxcode{\sphinxupquote{\textquotesingle{}.\textquotesingle{}}} 29015\\ 29016\hline 29017\end{tabulary} 29018\par 29019\sphinxattableend\end{savenotes} 29020 29021 29022\subsubsection{KRB5\_RECVAUTH\_BADAUTHVERS} 29023\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:krb5-recvauth-badauthvers}}\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:krb5-recvauth-badauthvers-data}}\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS::doc}}\index{KRB5\_RECVAUTH\_BADAUTHVERS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RECVAUTH\_BADAUTHVERS}\spxextra{built\sphinxhyphen{}in variable}} 29024 29025\begin{fulllineitems} 29026\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_BADAUTHVERS:KRB5_RECVAUTH_BADAUTHVERS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RECVAUTH\_BADAUTHVERS}}} 29027\end{fulllineitems} 29028 29029 29030 29031\begin{savenotes}\sphinxattablestart 29032\centering 29033\begin{tabulary}{\linewidth}[t]{|T|T|} 29034\hline 29035 29036\sphinxAtStartPar 29037\sphinxcode{\sphinxupquote{KRB5\_RECVAUTH\_BADAUTHVERS}} 29038& 29039\sphinxAtStartPar 29040\sphinxcode{\sphinxupquote{0x0002}} 29041\\ 29042\hline 29043\end{tabulary} 29044\par 29045\sphinxattableend\end{savenotes} 29046 29047 29048\subsubsection{KRB5\_RECVAUTH\_SKIP\_VERSION} 29049\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_RECVAUTH\_SKIP\_VERSION}\spxextra{built\sphinxhyphen{}in variable}} 29050 29051\begin{fulllineitems} 29052\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RECVAUTH_SKIP_VERSION:KRB5_RECVAUTH_SKIP_VERSION}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RECVAUTH\_SKIP\_VERSION}}} 29053\end{fulllineitems} 29054 29055 29056 29057\begin{savenotes}\sphinxattablestart 29058\centering 29059\begin{tabulary}{\linewidth}[t]{|T|T|} 29060\hline 29061 29062\sphinxAtStartPar 29063\sphinxcode{\sphinxupquote{KRB5\_RECVAUTH\_SKIP\_VERSION}} 29064& 29065\sphinxAtStartPar 29066\sphinxcode{\sphinxupquote{0x0001}} 29067\\ 29068\hline 29069\end{tabulary} 29070\par 29071\sphinxattableend\end{savenotes} 29072 29073 29074\subsubsection{KRB5\_REFERRAL\_REALM} 29075\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM:krb5-referral-realm}}\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM:krb5-referral-realm-data}}\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM::doc}}\index{KRB5\_REFERRAL\_REALM (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_REFERRAL\_REALM}\spxextra{built\sphinxhyphen{}in variable}} 29076 29077\begin{fulllineitems} 29078\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_REFERRAL_REALM:KRB5_REFERRAL_REALM}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_REFERRAL\_REALM}}} 29079\end{fulllineitems} 29080 29081 29082\sphinxAtStartPar 29083Constant for realm referrals. 29084 29085 29086\begin{savenotes}\sphinxattablestart 29087\centering 29088\begin{tabulary}{\linewidth}[t]{|T|T|} 29089\hline 29090 29091\sphinxAtStartPar 29092\sphinxcode{\sphinxupquote{KRB5\_REFERRAL\_REALM}} 29093& 29094\sphinxAtStartPar 29095\sphinxcode{\sphinxupquote{""}} 29096\\ 29097\hline 29098\end{tabulary} 29099\par 29100\sphinxattableend\end{savenotes} 29101 29102 29103\subsubsection{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW} 29104\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_COUNT_LOW:krb5-responder-pkinit-flags-token-user-pin-count-low}}\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}}\index{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW}\spxextra{built\sphinxhyphen{}in variable}} 29105 29106\begin{fulllineitems} 29107\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{\sphinxupquote{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW}}} 29108\end{fulllineitems} 29109 29110 29111\sphinxAtStartPar 29112This flag indicates that an incorrect PIN was supplied at least once since the last time the correct PIN was supplied. 29113 29114 29115\begin{savenotes}\sphinxattablestart 29116\centering 29117\begin{tabulary}{\linewidth}[t]{|T|T|} 29118\hline 29119 29120\sphinxAtStartPar 29121\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_COUNT\_LOW}} 29122& 29123\sphinxAtStartPar 29124\sphinxcode{\sphinxupquote{(1 \textless{}\textless{} 0)}} 29125\\ 29126\hline 29127\end{tabulary} 29128\par 29129\sphinxattableend\end{savenotes} 29130 29131 29132\subsubsection{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY} 29133\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:krb5-responder-pkinit-flags-token-user-pin-final-try-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_FINAL_TRY::doc}}\index{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY}\spxextra{built\sphinxhyphen{}in variable}} 29134 29135\begin{fulllineitems} 29136\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{\sphinxupquote{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY}}} 29137\end{fulllineitems} 29138 29139 29140\sphinxAtStartPar 29141This flag indicates that supplying an incorrect PIN will cause the token to lock itself. 29142 29143 29144\begin{savenotes}\sphinxattablestart 29145\centering 29146\begin{tabulary}{\linewidth}[t]{|T|T|} 29147\hline 29148 29149\sphinxAtStartPar 29150\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_FINAL\_TRY}} 29151& 29152\sphinxAtStartPar 29153\sphinxcode{\sphinxupquote{(1 \textless{}\textless{} 1)}} 29154\\ 29155\hline 29156\end{tabulary} 29157\par 29158\sphinxattableend\end{savenotes} 29159 29160 29161\subsubsection{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED} 29162\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}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED::doc}}\index{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED}\spxextra{built\sphinxhyphen{}in variable}} 29163 29164\begin{fulllineitems} 29165\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED:KRB5_RESPONDER_PKINIT_FLAGS_TOKEN_USER_PIN_LOCKED}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED}}} 29166\end{fulllineitems} 29167 29168 29169\sphinxAtStartPar 29170This flag indicates that the user PIN is locked, and you can’t log in to the token with it. 29171 29172 29173\begin{savenotes}\sphinxattablestart 29174\centering 29175\begin{tabulary}{\linewidth}[t]{|T|T|} 29176\hline 29177 29178\sphinxAtStartPar 29179\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_PKINIT\_FLAGS\_TOKEN\_USER\_PIN\_LOCKED}} 29180& 29181\sphinxAtStartPar 29182\sphinxcode{\sphinxupquote{(1 \textless{}\textless{} 2)}} 29183\\ 29184\hline 29185\end{tabulary} 29186\par 29187\sphinxattableend\end{savenotes} 29188 29189 29190\subsubsection{KRB5\_RESPONDER\_QUESTION\_PKINIT} 29191\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_QUESTION\_PKINIT}\spxextra{built\sphinxhyphen{}in variable}} 29192 29193\begin{fulllineitems} 29194\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PKINIT:KRB5_RESPONDER_QUESTION_PKINIT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_PKINIT}}} 29195\end{fulllineitems} 29196 29197 29198\sphinxAtStartPar 29199PKINIT responder question. 29200 29201\sphinxAtStartPar 29202The 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\sphinxhyphen{}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\sphinxhyphen{}named CKF\_* values in the PKCS\#11 API should not be depended on. 29203 29204\begin{sphinxVerbatim}[commandchars=\\\{\}] 29205\PYG{p}{\PYGZob{}} 29206\PYG{+w}{ }\PYG{n}{identity}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{o}{\PYGZgt{}}\PYG{+w}{ }\PYG{o}{:}\PYG{+w}{ }\PYG{n}{flags}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{number}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29207\PYG{+w}{ }\PYG{p}{.}\PYG{p}{.}\PYG{p}{.} 29208\PYG{p}{\PYGZcb{}} 29209\end{sphinxVerbatim} 29210 29211\sphinxAtStartPar 29212The answer to the question MUST be JSON formatted: 29213 29214\begin{sphinxVerbatim}[commandchars=\\\{\}] 29215\PYG{p}{\PYGZob{}} 29216\PYG{+w}{ }\PYG{n}{identity}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{o}{\PYGZgt{}}\PYG{+w}{ }\PYG{o}{:}\PYG{+w}{ }\PYG{n}{password}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29217\PYG{+w}{ }\PYG{p}{.}\PYG{p}{.}\PYG{p}{.} 29218\PYG{p}{\PYGZcb{}} 29219\end{sphinxVerbatim} 29220 29221 29222\begin{savenotes}\sphinxattablestart 29223\centering 29224\begin{tabulary}{\linewidth}[t]{|T|T|} 29225\hline 29226 29227\sphinxAtStartPar 29228\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_PKINIT}} 29229& 29230\sphinxAtStartPar 29231\sphinxcode{\sphinxupquote{"pkinit"}} 29232\\ 29233\hline 29234\end{tabulary} 29235\par 29236\sphinxattableend\end{savenotes} 29237 29238 29239\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN} 29240\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:krb5-responder-otp-flags-collect-pin}}\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}}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}\spxextra{built\sphinxhyphen{}in variable}} 29241 29242\begin{fulllineitems} 29243\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN:KRB5_RESPONDER_OTP_FLAGS_COLLECT_PIN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}}} 29244\end{fulllineitems} 29245 29246 29247\sphinxAtStartPar 29248This flag indicates that the PIN value MUST be collected. 29249 29250 29251\begin{savenotes}\sphinxattablestart 29252\centering 29253\begin{tabulary}{\linewidth}[t]{|T|T|} 29254\hline 29255 29256\sphinxAtStartPar 29257\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_PIN}} 29258& 29259\sphinxAtStartPar 29260\sphinxcode{\sphinxupquote{0x0002}} 29261\\ 29262\hline 29263\end{tabulary} 29264\par 29265\sphinxattableend\end{savenotes} 29266 29267 29268\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN} 29269\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:krb5-responder-otp-flags-collect-token-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN::doc}}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}\spxextra{built\sphinxhyphen{}in variable}} 29270 29271\begin{fulllineitems} 29272\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN:KRB5_RESPONDER_OTP_FLAGS_COLLECT_TOKEN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}}} 29273\end{fulllineitems} 29274 29275 29276\sphinxAtStartPar 29277This flag indicates that the token value MUST be collected. 29278 29279 29280\begin{savenotes}\sphinxattablestart 29281\centering 29282\begin{tabulary}{\linewidth}[t]{|T|T|} 29283\hline 29284 29285\sphinxAtStartPar 29286\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_COLLECT\_TOKEN}} 29287& 29288\sphinxAtStartPar 29289\sphinxcode{\sphinxupquote{0x0001}} 29290\\ 29291\hline 29292\end{tabulary} 29293\par 29294\sphinxattableend\end{savenotes} 29295 29296 29297\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP} 29298\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:krb5-responder-otp-flags-nextotp}}\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}}\index{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}\spxextra{built\sphinxhyphen{}in variable}} 29299 29300\begin{fulllineitems} 29301\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_NEXTOTP:KRB5_RESPONDER_OTP_FLAGS_NEXTOTP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}}} 29302\end{fulllineitems} 29303 29304 29305\sphinxAtStartPar 29306This flag indicates that the token is now in re\sphinxhyphen{}synchronization mode with the server. 29307 29308\sphinxAtStartPar 29309The user is expected to reply with the next code displayed on the token. 29310 29311 29312\begin{savenotes}\sphinxattablestart 29313\centering 29314\begin{tabulary}{\linewidth}[t]{|T|T|} 29315\hline 29316 29317\sphinxAtStartPar 29318\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_NEXTOTP}} 29319& 29320\sphinxAtStartPar 29321\sphinxcode{\sphinxupquote{0x0004}} 29322\\ 29323\hline 29324\end{tabulary} 29325\par 29326\sphinxattableend\end{savenotes} 29327 29328 29329\subsubsection{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN} 29330\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}\spxextra{built\sphinxhyphen{}in variable}} 29331 29332\begin{fulllineitems} 29333\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN:KRB5_RESPONDER_OTP_FLAGS_SEPARATE_PIN}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}}} 29334\end{fulllineitems} 29335 29336 29337\sphinxAtStartPar 29338This flag indicates that the PIN MUST be returned as a separate item. 29339 29340\sphinxAtStartPar 29341This 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. 29342 29343 29344\begin{savenotes}\sphinxattablestart 29345\centering 29346\begin{tabulary}{\linewidth}[t]{|T|T|} 29347\hline 29348 29349\sphinxAtStartPar 29350\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FLAGS\_SEPARATE\_PIN}} 29351& 29352\sphinxAtStartPar 29353\sphinxcode{\sphinxupquote{0x0008}} 29354\\ 29355\hline 29356\end{tabulary} 29357\par 29358\sphinxattableend\end{savenotes} 29359 29360 29361\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC} 29362\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:krb5-responder-otp-format-alphanumeric-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC::doc}}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}\spxextra{built\sphinxhyphen{}in variable}} 29363 29364\begin{fulllineitems} 29365\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC:KRB5_RESPONDER_OTP_FORMAT_ALPHANUMERIC}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}}} 29366\end{fulllineitems} 29367 29368 29369 29370\begin{savenotes}\sphinxattablestart 29371\centering 29372\begin{tabulary}{\linewidth}[t]{|T|T|} 29373\hline 29374 29375\sphinxAtStartPar 29376\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FORMAT\_ALPHANUMERIC}} 29377& 29378\sphinxAtStartPar 29379\sphinxcode{\sphinxupquote{2}} 29380\\ 29381\hline 29382\end{tabulary} 29383\par 29384\sphinxattableend\end{savenotes} 29385 29386 29387\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL} 29388\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:krb5-responder-otp-format-decimal}}\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}}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}\spxextra{built\sphinxhyphen{}in variable}} 29389 29390\begin{fulllineitems} 29391\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_DECIMAL:KRB5_RESPONDER_OTP_FORMAT_DECIMAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}}} 29392\end{fulllineitems} 29393 29394 29395\sphinxAtStartPar 29396These format constants identify the format of the token value. 29397 29398 29399\begin{savenotes}\sphinxattablestart 29400\centering 29401\begin{tabulary}{\linewidth}[t]{|T|T|} 29402\hline 29403 29404\sphinxAtStartPar 29405\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FORMAT\_DECIMAL}} 29406& 29407\sphinxAtStartPar 29408\sphinxcode{\sphinxupquote{0}} 29409\\ 29410\hline 29411\end{tabulary} 29412\par 29413\sphinxattableend\end{savenotes} 29414 29415 29416\subsubsection{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL} 29417\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:krb5-responder-otp-format-hexadecimal}}\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}}\index{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}\spxextra{built\sphinxhyphen{}in variable}} 29418 29419\begin{fulllineitems} 29420\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL:KRB5_RESPONDER_OTP_FORMAT_HEXADECIMAL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}}} 29421\end{fulllineitems} 29422 29423 29424 29425\begin{savenotes}\sphinxattablestart 29426\centering 29427\begin{tabulary}{\linewidth}[t]{|T|T|} 29428\hline 29429 29430\sphinxAtStartPar 29431\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_OTP\_FORMAT\_HEXADECIMAL}} 29432& 29433\sphinxAtStartPar 29434\sphinxcode{\sphinxupquote{1}} 29435\\ 29436\hline 29437\end{tabulary} 29438\par 29439\sphinxattableend\end{savenotes} 29440 29441 29442\subsubsection{KRB5\_RESPONDER\_QUESTION\_OTP} 29443\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_QUESTION\_OTP}\spxextra{built\sphinxhyphen{}in variable}} 29444 29445\begin{fulllineitems} 29446\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_OTP:KRB5_RESPONDER_QUESTION_OTP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_OTP}}} 29447\end{fulllineitems} 29448 29449 29450\sphinxAtStartPar 29451OTP responder question. 29452 29453\sphinxAtStartPar 29454The 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: 29455 29456\begin{sphinxVerbatim}[commandchars=\\\{\}] 29457\PYG{p}{\PYGZob{}} 29458\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{service}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29459\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{tokenInfo}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{p}{[} 29460\PYG{+w}{ }\PYG{p}{\PYGZob{}} 29461\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{flags}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{number}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29462\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{vendor}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29463\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{challenge}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29464\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{length}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{number}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29465\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{format}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{number}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29466\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{tokenID}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29467\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{algID}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29468\PYG{+w}{ }\PYG{p}{\PYGZcb{}}\PYG{p}{,} 29469\PYG{+w}{ }\PYG{p}{.}\PYG{p}{.}\PYG{p}{.} 29470\PYG{+w}{ }\PYG{p}{]} 29471\PYG{p}{\PYGZcb{}} 29472\end{sphinxVerbatim} 29473 29474\sphinxAtStartPar 29475The answer to the question MUST be JSON formatted: 29476 29477\begin{sphinxVerbatim}[commandchars=\\\{\}] 29478\PYG{p}{\PYGZob{}} 29479\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{tokeninfo}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{number}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29480\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{value}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29481\PYG{+w}{ }\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{pin}\PYG{l+s}{\PYGZdq{}}\PYG{o}{:}\PYG{+w}{ }\PYG{o}{\PYGZlt{}}\PYG{n}{string}\PYG{+w}{ }\PYG{p}{(}\PYG{n}{optional}\PYG{p}{)}\PYG{o}{\PYGZgt{}}\PYG{p}{,} 29482\PYG{p}{\PYGZcb{}} 29483\end{sphinxVerbatim} 29484 29485\sphinxAtStartPar 29486For more detail, please see RFC 6560. 29487 29488 29489\begin{savenotes}\sphinxattablestart 29490\centering 29491\begin{tabulary}{\linewidth}[t]{|T|T|} 29492\hline 29493 29494\sphinxAtStartPar 29495\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_OTP}} 29496& 29497\sphinxAtStartPar 29498\sphinxcode{\sphinxupquote{"otp"}} 29499\\ 29500\hline 29501\end{tabulary} 29502\par 29503\sphinxattableend\end{savenotes} 29504 29505 29506\subsubsection{KRB5\_RESPONDER\_QUESTION\_PASSWORD} 29507\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:krb5-responder-question-password}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:krb5-responder-question-password-data}}\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD::doc}}\index{KRB5\_RESPONDER\_QUESTION\_PASSWORD (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_RESPONDER\_QUESTION\_PASSWORD}\spxextra{built\sphinxhyphen{}in variable}} 29508 29509\begin{fulllineitems} 29510\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_RESPONDER_QUESTION_PASSWORD:KRB5_RESPONDER_QUESTION_PASSWORD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_PASSWORD}}} 29511\end{fulllineitems} 29512 29513 29514\sphinxAtStartPar 29515Long\sphinxhyphen{}term password responder question. 29516 29517\sphinxAtStartPar 29518This question is asked when the long\sphinxhyphen{}term password is needed. It has no challenge and the response is simply the password string. 29519 29520 29521\begin{savenotes}\sphinxattablestart 29522\centering 29523\begin{tabulary}{\linewidth}[t]{|T|T|} 29524\hline 29525 29526\sphinxAtStartPar 29527\sphinxcode{\sphinxupquote{KRB5\_RESPONDER\_QUESTION\_PASSWORD}} 29528& 29529\sphinxAtStartPar 29530\sphinxcode{\sphinxupquote{"password"}} 29531\\ 29532\hline 29533\end{tabulary} 29534\par 29535\sphinxattableend\end{savenotes} 29536 29537 29538\subsubsection{KRB5\_SAFE} 29539\label{\detokenize{appdev/refs/macros/KRB5_SAFE:krb5-safe}}\label{\detokenize{appdev/refs/macros/KRB5_SAFE:krb5-safe-data}}\label{\detokenize{appdev/refs/macros/KRB5_SAFE::doc}}\index{KRB5\_SAFE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_SAFE}\spxextra{built\sphinxhyphen{}in variable}} 29540 29541\begin{fulllineitems} 29542\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAFE:KRB5_SAFE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_SAFE}}} 29543\end{fulllineitems} 29544 29545 29546\sphinxAtStartPar 29547Safe application message. 29548 29549 29550\begin{savenotes}\sphinxattablestart 29551\centering 29552\begin{tabulary}{\linewidth}[t]{|T|T|} 29553\hline 29554 29555\sphinxAtStartPar 29556\sphinxcode{\sphinxupquote{KRB5\_SAFE}} 29557& 29558\sphinxAtStartPar 29559\sphinxcode{\sphinxupquote{((krb5\_msgtype)20)}} 29560\\ 29561\hline 29562\end{tabulary} 29563\par 29564\sphinxattableend\end{savenotes} 29565 29566 29567\subsubsection{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD} 29568\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}\spxextra{built\sphinxhyphen{}in variable}} 29569 29570\begin{fulllineitems} 29571\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAM_MUST_PK_ENCRYPT_SAD:KRB5_SAM_MUST_PK_ENCRYPT_SAD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}}} 29572\end{fulllineitems} 29573 29574 29575\sphinxAtStartPar 29576currently must be zero 29577 29578 29579\begin{savenotes}\sphinxattablestart 29580\centering 29581\begin{tabulary}{\linewidth}[t]{|T|T|} 29582\hline 29583 29584\sphinxAtStartPar 29585\sphinxcode{\sphinxupquote{KRB5\_SAM\_MUST\_PK\_ENCRYPT\_SAD}} 29586& 29587\sphinxAtStartPar 29588\sphinxcode{\sphinxupquote{0x20000000}} 29589\\ 29590\hline 29591\end{tabulary} 29592\par 29593\sphinxattableend\end{savenotes} 29594 29595 29596\subsubsection{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD} 29597\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:krb5-sam-send-encrypted-sad-data}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD::doc}}\index{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}\spxextra{built\sphinxhyphen{}in variable}} 29598 29599\begin{fulllineitems} 29600\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAM_SEND_ENCRYPTED_SAD:KRB5_SAM_SEND_ENCRYPTED_SAD}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}}} 29601\end{fulllineitems} 29602 29603 29604 29605\begin{savenotes}\sphinxattablestart 29606\centering 29607\begin{tabulary}{\linewidth}[t]{|T|T|} 29608\hline 29609 29610\sphinxAtStartPar 29611\sphinxcode{\sphinxupquote{KRB5\_SAM\_SEND\_ENCRYPTED\_SAD}} 29612& 29613\sphinxAtStartPar 29614\sphinxcode{\sphinxupquote{0x40000000}} 29615\\ 29616\hline 29617\end{tabulary} 29618\par 29619\sphinxattableend\end{savenotes} 29620 29621 29622\subsubsection{KRB5\_SAM\_USE\_SAD\_AS\_KEY} 29623\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}}\label{\detokenize{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY::doc}}\index{KRB5\_SAM\_USE\_SAD\_AS\_KEY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_SAM\_USE\_SAD\_AS\_KEY}\spxextra{built\sphinxhyphen{}in variable}} 29624 29625\begin{fulllineitems} 29626\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_SAM_USE_SAD_AS_KEY:KRB5_SAM_USE_SAD_AS_KEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_SAM\_USE\_SAD\_AS\_KEY}}} 29627\end{fulllineitems} 29628 29629 29630 29631\begin{savenotes}\sphinxattablestart 29632\centering 29633\begin{tabulary}{\linewidth}[t]{|T|T|} 29634\hline 29635 29636\sphinxAtStartPar 29637\sphinxcode{\sphinxupquote{KRB5\_SAM\_USE\_SAD\_AS\_KEY}} 29638& 29639\sphinxAtStartPar 29640\sphinxcode{\sphinxupquote{0x80000000}} 29641\\ 29642\hline 29643\end{tabulary} 29644\par 29645\sphinxattableend\end{savenotes} 29646 29647 29648\subsubsection{KRB5\_TC\_MATCH\_2ND\_TKT} 29649\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:krb5-tc-match-2nd-tkt}}\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}}\index{KRB5\_TC\_MATCH\_2ND\_TKT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_2ND\_TKT}\spxextra{built\sphinxhyphen{}in variable}} 29650 29651\begin{fulllineitems} 29652\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_2ND_TKT:KRB5_TC_MATCH_2ND_TKT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_2ND\_TKT}}} 29653\end{fulllineitems} 29654 29655 29656\sphinxAtStartPar 29657The second ticket must match. 29658 29659 29660\begin{savenotes}\sphinxattablestart 29661\centering 29662\begin{tabulary}{\linewidth}[t]{|T|T|} 29663\hline 29664 29665\sphinxAtStartPar 29666\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_2ND\_TKT}} 29667& 29668\sphinxAtStartPar 29669\sphinxcode{\sphinxupquote{0x00000080}} 29670\\ 29671\hline 29672\end{tabulary} 29673\par 29674\sphinxattableend\end{savenotes} 29675 29676 29677\subsubsection{KRB5\_TC\_MATCH\_AUTHDATA} 29678\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:krb5-tc-match-authdata}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:krb5-tc-match-authdata-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA::doc}}\index{KRB5\_TC\_MATCH\_AUTHDATA (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_AUTHDATA}\spxextra{built\sphinxhyphen{}in variable}} 29679 29680\begin{fulllineitems} 29681\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_AUTHDATA:KRB5_TC_MATCH_AUTHDATA}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_AUTHDATA}}} 29682\end{fulllineitems} 29683 29684 29685\sphinxAtStartPar 29686The authorization data must match. 29687 29688 29689\begin{savenotes}\sphinxattablestart 29690\centering 29691\begin{tabulary}{\linewidth}[t]{|T|T|} 29692\hline 29693 29694\sphinxAtStartPar 29695\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_AUTHDATA}} 29696& 29697\sphinxAtStartPar 29698\sphinxcode{\sphinxupquote{0x00000020}} 29699\\ 29700\hline 29701\end{tabulary} 29702\par 29703\sphinxattableend\end{savenotes} 29704 29705 29706\subsubsection{KRB5\_TC\_MATCH\_FLAGS} 29707\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:krb5-tc-match-flags}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:krb5-tc-match-flags-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS::doc}}\index{KRB5\_TC\_MATCH\_FLAGS (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_FLAGS}\spxextra{built\sphinxhyphen{}in variable}} 29708 29709\begin{fulllineitems} 29710\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS:KRB5_TC_MATCH_FLAGS}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_FLAGS}}} 29711\end{fulllineitems} 29712 29713 29714\sphinxAtStartPar 29715All the flags set in the match credentials must be set. 29716 29717 29718\begin{savenotes}\sphinxattablestart 29719\centering 29720\begin{tabulary}{\linewidth}[t]{|T|T|} 29721\hline 29722 29723\sphinxAtStartPar 29724\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_FLAGS}} 29725& 29726\sphinxAtStartPar 29727\sphinxcode{\sphinxupquote{0x00000004}} 29728\\ 29729\hline 29730\end{tabulary} 29731\par 29732\sphinxattableend\end{savenotes} 29733 29734 29735\subsubsection{KRB5\_TC\_MATCH\_FLAGS\_EXACT} 29736\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:krb5-tc-match-flags-exact-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT::doc}}\index{KRB5\_TC\_MATCH\_FLAGS\_EXACT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_FLAGS\_EXACT}\spxextra{built\sphinxhyphen{}in variable}} 29737 29738\begin{fulllineitems} 29739\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_FLAGS_EXACT:KRB5_TC_MATCH_FLAGS_EXACT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_FLAGS\_EXACT}}} 29740\end{fulllineitems} 29741 29742 29743\sphinxAtStartPar 29744All the flags must match exactly. 29745 29746 29747\begin{savenotes}\sphinxattablestart 29748\centering 29749\begin{tabulary}{\linewidth}[t]{|T|T|} 29750\hline 29751 29752\sphinxAtStartPar 29753\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_FLAGS\_EXACT}} 29754& 29755\sphinxAtStartPar 29756\sphinxcode{\sphinxupquote{0x00000010}} 29757\\ 29758\hline 29759\end{tabulary} 29760\par 29761\sphinxattableend\end{savenotes} 29762 29763 29764\subsubsection{KRB5\_TC\_MATCH\_IS\_SKEY} 29765\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_IS\_SKEY}\spxextra{built\sphinxhyphen{}in variable}} 29766 29767\begin{fulllineitems} 29768\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_IS_SKEY:KRB5_TC_MATCH_IS_SKEY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_IS\_SKEY}}} 29769\end{fulllineitems} 29770 29771 29772\sphinxAtStartPar 29773The is\_skey field must match exactly. 29774 29775 29776\begin{savenotes}\sphinxattablestart 29777\centering 29778\begin{tabulary}{\linewidth}[t]{|T|T|} 29779\hline 29780 29781\sphinxAtStartPar 29782\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_IS\_SKEY}} 29783& 29784\sphinxAtStartPar 29785\sphinxcode{\sphinxupquote{0x00000002}} 29786\\ 29787\hline 29788\end{tabulary} 29789\par 29790\sphinxattableend\end{savenotes} 29791 29792 29793\subsubsection{KRB5\_TC\_MATCH\_KTYPE} 29794\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_KTYPE}\spxextra{built\sphinxhyphen{}in variable}} 29795 29796\begin{fulllineitems} 29797\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_KTYPE:KRB5_TC_MATCH_KTYPE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_KTYPE}}} 29798\end{fulllineitems} 29799 29800 29801\sphinxAtStartPar 29802The encryption key type must match. 29803 29804 29805\begin{savenotes}\sphinxattablestart 29806\centering 29807\begin{tabulary}{\linewidth}[t]{|T|T|} 29808\hline 29809 29810\sphinxAtStartPar 29811\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_KTYPE}} 29812& 29813\sphinxAtStartPar 29814\sphinxcode{\sphinxupquote{0x00000100}} 29815\\ 29816\hline 29817\end{tabulary} 29818\par 29819\sphinxattableend\end{savenotes} 29820 29821 29822\subsubsection{KRB5\_TC\_MATCH\_SRV\_NAMEONLY} 29823\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}}\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY::doc}}\index{KRB5\_TC\_MATCH\_SRV\_NAMEONLY (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}\spxextra{built\sphinxhyphen{}in variable}} 29824 29825\begin{fulllineitems} 29826\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_SRV_NAMEONLY:KRB5_TC_MATCH_SRV_NAMEONLY}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}}} 29827\end{fulllineitems} 29828 29829 29830\sphinxAtStartPar 29831Only the name portion of the principal name must match. 29832 29833 29834\begin{savenotes}\sphinxattablestart 29835\centering 29836\begin{tabulary}{\linewidth}[t]{|T|T|} 29837\hline 29838 29839\sphinxAtStartPar 29840\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_SRV\_NAMEONLY}} 29841& 29842\sphinxAtStartPar 29843\sphinxcode{\sphinxupquote{0x00000040}} 29844\\ 29845\hline 29846\end{tabulary} 29847\par 29848\sphinxattableend\end{savenotes} 29849 29850 29851\subsubsection{KRB5\_TC\_MATCH\_TIMES} 29852\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_TIMES}\spxextra{built\sphinxhyphen{}in variable}} 29853 29854\begin{fulllineitems} 29855\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES:KRB5_TC_MATCH_TIMES}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_TIMES}}} 29856\end{fulllineitems} 29857 29858 29859\sphinxAtStartPar 29860The requested lifetime must be at least as great as the time specified. 29861 29862 29863\begin{savenotes}\sphinxattablestart 29864\centering 29865\begin{tabulary}{\linewidth}[t]{|T|T|} 29866\hline 29867 29868\sphinxAtStartPar 29869\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_TIMES}} 29870& 29871\sphinxAtStartPar 29872\sphinxcode{\sphinxupquote{0x00000001}} 29873\\ 29874\hline 29875\end{tabulary} 29876\par 29877\sphinxattableend\end{savenotes} 29878 29879 29880\subsubsection{KRB5\_TC\_MATCH\_TIMES\_EXACT} 29881\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:krb5-tc-match-times-exact}}\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}}\index{KRB5\_TC\_MATCH\_TIMES\_EXACT (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_MATCH\_TIMES\_EXACT}\spxextra{built\sphinxhyphen{}in variable}} 29882 29883\begin{fulllineitems} 29884\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_MATCH_TIMES_EXACT:KRB5_TC_MATCH_TIMES_EXACT}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_MATCH\_TIMES\_EXACT}}} 29885\end{fulllineitems} 29886 29887 29888\sphinxAtStartPar 29889All the time fields must match exactly. 29890 29891 29892\begin{savenotes}\sphinxattablestart 29893\centering 29894\begin{tabulary}{\linewidth}[t]{|T|T|} 29895\hline 29896 29897\sphinxAtStartPar 29898\sphinxcode{\sphinxupquote{KRB5\_TC\_MATCH\_TIMES\_EXACT}} 29899& 29900\sphinxAtStartPar 29901\sphinxcode{\sphinxupquote{0x00000008}} 29902\\ 29903\hline 29904\end{tabulary} 29905\par 29906\sphinxattableend\end{savenotes} 29907 29908 29909\subsubsection{KRB5\_TC\_NOTICKET} 29910\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET:krb5-tc-noticket}}\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET:krb5-tc-noticket-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET::doc}}\index{KRB5\_TC\_NOTICKET (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_NOTICKET}\spxextra{built\sphinxhyphen{}in variable}} 29911 29912\begin{fulllineitems} 29913\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_NOTICKET:KRB5_TC_NOTICKET}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_NOTICKET}}} 29914\end{fulllineitems} 29915 29916 29917 29918\begin{savenotes}\sphinxattablestart 29919\centering 29920\begin{tabulary}{\linewidth}[t]{|T|T|} 29921\hline 29922 29923\sphinxAtStartPar 29924\sphinxcode{\sphinxupquote{KRB5\_TC\_NOTICKET}} 29925& 29926\sphinxAtStartPar 29927\sphinxcode{\sphinxupquote{0x00000002}} 29928\\ 29929\hline 29930\end{tabulary} 29931\par 29932\sphinxattableend\end{savenotes} 29933 29934 29935\subsubsection{KRB5\_TC\_OPENCLOSE} 29936\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_OPENCLOSE}\spxextra{built\sphinxhyphen{}in variable}} 29937 29938\begin{fulllineitems} 29939\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_OPENCLOSE:KRB5_TC_OPENCLOSE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_OPENCLOSE}}} 29940\end{fulllineitems} 29941 29942 29943\sphinxAtStartPar 29944Open and close the file for each cache operation. 29945 29946 29947\begin{savenotes}\sphinxattablestart 29948\centering 29949\begin{tabulary}{\linewidth}[t]{|T|T|} 29950\hline 29951 29952\sphinxAtStartPar 29953\sphinxcode{\sphinxupquote{KRB5\_TC\_OPENCLOSE}} 29954& 29955\sphinxAtStartPar 29956\sphinxcode{\sphinxupquote{0x00000001}} 29957\\ 29958\hline 29959\end{tabulary} 29960\par 29961\sphinxattableend\end{savenotes} 29962 29963 29964\subsubsection{KRB5\_TC\_SUPPORTED\_KTYPES} 29965\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:krb5-tc-supported-ktypes}}\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:krb5-tc-supported-ktypes-data}}\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES::doc}}\index{KRB5\_TC\_SUPPORTED\_KTYPES (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TC\_SUPPORTED\_KTYPES}\spxextra{built\sphinxhyphen{}in variable}} 29966 29967\begin{fulllineitems} 29968\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TC_SUPPORTED_KTYPES:KRB5_TC_SUPPORTED_KTYPES}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TC\_SUPPORTED\_KTYPES}}} 29969\end{fulllineitems} 29970 29971 29972\sphinxAtStartPar 29973The supported key types must match. 29974 29975 29976\begin{savenotes}\sphinxattablestart 29977\centering 29978\begin{tabulary}{\linewidth}[t]{|T|T|} 29979\hline 29980 29981\sphinxAtStartPar 29982\sphinxcode{\sphinxupquote{KRB5\_TC\_SUPPORTED\_KTYPES}} 29983& 29984\sphinxAtStartPar 29985\sphinxcode{\sphinxupquote{0x00000200}} 29986\\ 29987\hline 29988\end{tabulary} 29989\par 29990\sphinxattableend\end{savenotes} 29991 29992 29993\subsubsection{KRB5\_TGS\_NAME} 29994\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME:krb5-tgs-name}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME:krb5-tgs-name-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME::doc}}\index{KRB5\_TGS\_NAME (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TGS\_NAME}\spxextra{built\sphinxhyphen{}in variable}} 29995 29996\begin{fulllineitems} 29997\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME:KRB5_TGS_NAME}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TGS\_NAME}}} 29998\end{fulllineitems} 29999 30000 30001 30002\begin{savenotes}\sphinxattablestart 30003\centering 30004\begin{tabulary}{\linewidth}[t]{|T|T|} 30005\hline 30006 30007\sphinxAtStartPar 30008\sphinxcode{\sphinxupquote{KRB5\_TGS\_NAME}} 30009& 30010\sphinxAtStartPar 30011\sphinxcode{\sphinxupquote{"krbtgt"}} 30012\\ 30013\hline 30014\end{tabulary} 30015\par 30016\sphinxattableend\end{savenotes} 30017 30018 30019\subsubsection{KRB5\_TGS\_NAME\_SIZE} 30020\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\sphinxhyphen{}in variable)@\spxentry{KRB5\_TGS\_NAME\_SIZE}\spxextra{built\sphinxhyphen{}in variable}} 30021 30022\begin{fulllineitems} 30023\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_NAME_SIZE:KRB5_TGS_NAME_SIZE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TGS\_NAME\_SIZE}}} 30024\end{fulllineitems} 30025 30026 30027 30028\begin{savenotes}\sphinxattablestart 30029\centering 30030\begin{tabulary}{\linewidth}[t]{|T|T|} 30031\hline 30032 30033\sphinxAtStartPar 30034\sphinxcode{\sphinxupquote{KRB5\_TGS\_NAME\_SIZE}} 30035& 30036\sphinxAtStartPar 30037\sphinxcode{\sphinxupquote{6}} 30038\\ 30039\hline 30040\end{tabulary} 30041\par 30042\sphinxattableend\end{savenotes} 30043 30044 30045\subsubsection{KRB5\_TGS\_REP} 30046\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP:krb5-tgs-rep}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP:krb5-tgs-rep-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP::doc}}\index{KRB5\_TGS\_REP (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TGS\_REP}\spxextra{built\sphinxhyphen{}in variable}} 30047 30048\begin{fulllineitems} 30049\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_REP:KRB5_TGS_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TGS\_REP}}} 30050\end{fulllineitems} 30051 30052 30053\sphinxAtStartPar 30054Response to TGS request. 30055 30056 30057\begin{savenotes}\sphinxattablestart 30058\centering 30059\begin{tabulary}{\linewidth}[t]{|T|T|} 30060\hline 30061 30062\sphinxAtStartPar 30063\sphinxcode{\sphinxupquote{KRB5\_TGS\_REP}} 30064& 30065\sphinxAtStartPar 30066\sphinxcode{\sphinxupquote{((krb5\_msgtype)13)}} 30067\\ 30068\hline 30069\end{tabulary} 30070\par 30071\sphinxattableend\end{savenotes} 30072 30073 30074\subsubsection{KRB5\_TGS\_REQ} 30075\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ:krb5-tgs-req}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ:krb5-tgs-req-data}}\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ::doc}}\index{KRB5\_TGS\_REQ (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TGS\_REQ}\spxextra{built\sphinxhyphen{}in variable}} 30076 30077\begin{fulllineitems} 30078\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TGS_REQ:KRB5_TGS_REQ}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TGS\_REQ}}} 30079\end{fulllineitems} 30080 30081 30082\sphinxAtStartPar 30083Ticket granting server request. 30084 30085 30086\begin{savenotes}\sphinxattablestart 30087\centering 30088\begin{tabulary}{\linewidth}[t]{|T|T|} 30089\hline 30090 30091\sphinxAtStartPar 30092\sphinxcode{\sphinxupquote{KRB5\_TGS\_REQ}} 30093& 30094\sphinxAtStartPar 30095\sphinxcode{\sphinxupquote{((krb5\_msgtype)12)}} 30096\\ 30097\hline 30098\end{tabulary} 30099\par 30100\sphinxattableend\end{savenotes} 30101 30102 30103\subsubsection{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE} 30104\label{\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:krb5-tkt-creds-step-flag-continue}}\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}}\index{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}\spxextra{built\sphinxhyphen{}in variable}} 30105 30106\begin{fulllineitems} 30107\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_TKT_CREDS_STEP_FLAG_CONTINUE:KRB5_TKT_CREDS_STEP_FLAG_CONTINUE}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}}} 30108\end{fulllineitems} 30109 30110 30111\sphinxAtStartPar 30112More responses needed. 30113 30114 30115\begin{savenotes}\sphinxattablestart 30116\centering 30117\begin{tabulary}{\linewidth}[t]{|T|T|} 30118\hline 30119 30120\sphinxAtStartPar 30121\sphinxcode{\sphinxupquote{KRB5\_TKT\_CREDS\_STEP\_FLAG\_CONTINUE}} 30122& 30123\sphinxAtStartPar 30124\sphinxcode{\sphinxupquote{0x1}} 30125\\ 30126\hline 30127\end{tabulary} 30128\par 30129\sphinxattableend\end{savenotes} 30130 30131 30132\subsubsection{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL} 30133\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:krb5-verify-init-creds-opt-ap-req-nofail-data}}\label{\detokenize{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL::doc}}\index{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}\spxextra{built\sphinxhyphen{}in variable}} 30134 30135\begin{fulllineitems} 30136\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL:KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}}} 30137\end{fulllineitems} 30138 30139 30140 30141\begin{savenotes}\sphinxattablestart 30142\centering 30143\begin{tabulary}{\linewidth}[t]{|T|T|} 30144\hline 30145 30146\sphinxAtStartPar 30147\sphinxcode{\sphinxupquote{KRB5\_VERIFY\_INIT\_CREDS\_OPT\_AP\_REQ\_NOFAIL}} 30148& 30149\sphinxAtStartPar 30150\sphinxcode{\sphinxupquote{0x0001}} 30151\\ 30152\hline 30153\end{tabulary} 30154\par 30155\sphinxattableend\end{savenotes} 30156 30157 30158\subsubsection{KRB5\_WELLKNOWN\_NAMESTR} 30159\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:krb5-wellknown-namestr}}\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:krb5-wellknown-namestr-data}}\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR::doc}}\index{KRB5\_WELLKNOWN\_NAMESTR (built\sphinxhyphen{}in variable)@\spxentry{KRB5\_WELLKNOWN\_NAMESTR}\spxextra{built\sphinxhyphen{}in variable}} 30160 30161\begin{fulllineitems} 30162\phantomsection\label{\detokenize{appdev/refs/macros/KRB5_WELLKNOWN_NAMESTR:KRB5_WELLKNOWN_NAMESTR}}\pysigline{\sphinxbfcode{\sphinxupquote{KRB5\_WELLKNOWN\_NAMESTR}}} 30163\end{fulllineitems} 30164 30165 30166\sphinxAtStartPar 30167First component of NT\_WELLKNOWN principals. 30168 30169 30170\begin{savenotes}\sphinxattablestart 30171\centering 30172\begin{tabulary}{\linewidth}[t]{|T|T|} 30173\hline 30174 30175\sphinxAtStartPar 30176\sphinxcode{\sphinxupquote{KRB5\_WELLKNOWN\_NAMESTR}} 30177& 30178\sphinxAtStartPar 30179\sphinxcode{\sphinxupquote{"WELLKNOWN"}} 30180\\ 30181\hline 30182\end{tabulary} 30183\par 30184\sphinxattableend\end{savenotes} 30185 30186 30187\subsubsection{LR\_TYPE\_INTERPRETATION\_MASK} 30188\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:lr-type-interpretation-mask}}\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:lr-type-interpretation-mask-data}}\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK::doc}}\index{LR\_TYPE\_INTERPRETATION\_MASK (built\sphinxhyphen{}in variable)@\spxentry{LR\_TYPE\_INTERPRETATION\_MASK}\spxextra{built\sphinxhyphen{}in variable}} 30189 30190\begin{fulllineitems} 30191\phantomsection\label{\detokenize{appdev/refs/macros/LR_TYPE_INTERPRETATION_MASK:LR_TYPE_INTERPRETATION_MASK}}\pysigline{\sphinxbfcode{\sphinxupquote{LR\_TYPE\_INTERPRETATION\_MASK}}} 30192\end{fulllineitems} 30193 30194 30195 30196\begin{savenotes}\sphinxattablestart 30197\centering 30198\begin{tabulary}{\linewidth}[t]{|T|T|} 30199\hline 30200 30201\sphinxAtStartPar 30202\sphinxcode{\sphinxupquote{LR\_TYPE\_INTERPRETATION\_MASK}} 30203& 30204\sphinxAtStartPar 30205\sphinxcode{\sphinxupquote{0x7fff}} 30206\\ 30207\hline 30208\end{tabulary} 30209\par 30210\sphinxattableend\end{savenotes} 30211 30212 30213\subsubsection{LR\_TYPE\_THIS\_SERVER\_ONLY} 30214\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:lr-type-this-server-only-data}}\label{\detokenize{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY::doc}}\index{LR\_TYPE\_THIS\_SERVER\_ONLY (built\sphinxhyphen{}in variable)@\spxentry{LR\_TYPE\_THIS\_SERVER\_ONLY}\spxextra{built\sphinxhyphen{}in variable}} 30215 30216\begin{fulllineitems} 30217\phantomsection\label{\detokenize{appdev/refs/macros/LR_TYPE_THIS_SERVER_ONLY:LR_TYPE_THIS_SERVER_ONLY}}\pysigline{\sphinxbfcode{\sphinxupquote{LR\_TYPE\_THIS\_SERVER\_ONLY}}} 30218\end{fulllineitems} 30219 30220 30221 30222\begin{savenotes}\sphinxattablestart 30223\centering 30224\begin{tabulary}{\linewidth}[t]{|T|T|} 30225\hline 30226 30227\sphinxAtStartPar 30228\sphinxcode{\sphinxupquote{LR\_TYPE\_THIS\_SERVER\_ONLY}} 30229& 30230\sphinxAtStartPar 30231\sphinxcode{\sphinxupquote{0x8000}} 30232\\ 30233\hline 30234\end{tabulary} 30235\par 30236\sphinxattableend\end{savenotes} 30237 30238 30239\subsubsection{MAX\_KEYTAB\_NAME\_LEN} 30240\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:max-keytab-name-len}}\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:max-keytab-name-len-data}}\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN::doc}}\index{MAX\_KEYTAB\_NAME\_LEN (built\sphinxhyphen{}in variable)@\spxentry{MAX\_KEYTAB\_NAME\_LEN}\spxextra{built\sphinxhyphen{}in variable}} 30241 30242\begin{fulllineitems} 30243\phantomsection\label{\detokenize{appdev/refs/macros/MAX_KEYTAB_NAME_LEN:MAX_KEYTAB_NAME_LEN}}\pysigline{\sphinxbfcode{\sphinxupquote{MAX\_KEYTAB\_NAME\_LEN}}} 30244\end{fulllineitems} 30245 30246 30247\sphinxAtStartPar 30248Long enough for MAXPATHLEN + some extra. 30249 30250 30251\begin{savenotes}\sphinxattablestart 30252\centering 30253\begin{tabulary}{\linewidth}[t]{|T|T|} 30254\hline 30255 30256\sphinxAtStartPar 30257\sphinxcode{\sphinxupquote{MAX\_KEYTAB\_NAME\_LEN}} 30258& 30259\sphinxAtStartPar 30260\sphinxcode{\sphinxupquote{1100}} 30261\\ 30262\hline 30263\end{tabulary} 30264\par 30265\sphinxattableend\end{savenotes} 30266 30267 30268\subsubsection{MSEC\_DIRBIT} 30269\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\sphinxhyphen{}in variable)@\spxentry{MSEC\_DIRBIT}\spxextra{built\sphinxhyphen{}in variable}} 30270 30271\begin{fulllineitems} 30272\phantomsection\label{\detokenize{appdev/refs/macros/MSEC_DIRBIT:MSEC_DIRBIT}}\pysigline{\sphinxbfcode{\sphinxupquote{MSEC\_DIRBIT}}} 30273\end{fulllineitems} 30274 30275 30276 30277\begin{savenotes}\sphinxattablestart 30278\centering 30279\begin{tabulary}{\linewidth}[t]{|T|T|} 30280\hline 30281 30282\sphinxAtStartPar 30283\sphinxcode{\sphinxupquote{MSEC\_DIRBIT}} 30284& 30285\sphinxAtStartPar 30286\sphinxcode{\sphinxupquote{0x8000}} 30287\\ 30288\hline 30289\end{tabulary} 30290\par 30291\sphinxattableend\end{savenotes} 30292 30293 30294\subsubsection{MSEC\_VAL\_MASK} 30295\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK:msec-val-mask}}\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK:msec-val-mask-data}}\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK::doc}}\index{MSEC\_VAL\_MASK (built\sphinxhyphen{}in variable)@\spxentry{MSEC\_VAL\_MASK}\spxextra{built\sphinxhyphen{}in variable}} 30296 30297\begin{fulllineitems} 30298\phantomsection\label{\detokenize{appdev/refs/macros/MSEC_VAL_MASK:MSEC_VAL_MASK}}\pysigline{\sphinxbfcode{\sphinxupquote{MSEC\_VAL\_MASK}}} 30299\end{fulllineitems} 30300 30301 30302 30303\begin{savenotes}\sphinxattablestart 30304\centering 30305\begin{tabulary}{\linewidth}[t]{|T|T|} 30306\hline 30307 30308\sphinxAtStartPar 30309\sphinxcode{\sphinxupquote{MSEC\_VAL\_MASK}} 30310& 30311\sphinxAtStartPar 30312\sphinxcode{\sphinxupquote{0x7fff}} 30313\\ 30314\hline 30315\end{tabulary} 30316\par 30317\sphinxattableend\end{savenotes} 30318 30319 30320\subsubsection{SALT\_TYPE\_AFS\_LENGTH} 30321\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:salt-type-afs-length}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:salt-type-afs-length-data}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH::doc}}\index{SALT\_TYPE\_AFS\_LENGTH (built\sphinxhyphen{}in variable)@\spxentry{SALT\_TYPE\_AFS\_LENGTH}\spxextra{built\sphinxhyphen{}in variable}} 30322 30323\begin{fulllineitems} 30324\phantomsection\label{\detokenize{appdev/refs/macros/SALT_TYPE_AFS_LENGTH:SALT_TYPE_AFS_LENGTH}}\pysigline{\sphinxbfcode{\sphinxupquote{SALT\_TYPE\_AFS\_LENGTH}}} 30325\end{fulllineitems} 30326 30327 30328 30329\begin{savenotes}\sphinxattablestart 30330\centering 30331\begin{tabulary}{\linewidth}[t]{|T|T|} 30332\hline 30333 30334\sphinxAtStartPar 30335\sphinxcode{\sphinxupquote{SALT\_TYPE\_AFS\_LENGTH}} 30336& 30337\sphinxAtStartPar 30338\sphinxcode{\sphinxupquote{UINT\_MAX}} 30339\\ 30340\hline 30341\end{tabulary} 30342\par 30343\sphinxattableend\end{savenotes} 30344 30345 30346\subsubsection{SALT\_TYPE\_NO\_LENGTH} 30347\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH:salt-type-no-length}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH:salt-type-no-length-data}}\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH::doc}}\index{SALT\_TYPE\_NO\_LENGTH (built\sphinxhyphen{}in variable)@\spxentry{SALT\_TYPE\_NO\_LENGTH}\spxextra{built\sphinxhyphen{}in variable}} 30348 30349\begin{fulllineitems} 30350\phantomsection\label{\detokenize{appdev/refs/macros/SALT_TYPE_NO_LENGTH:SALT_TYPE_NO_LENGTH}}\pysigline{\sphinxbfcode{\sphinxupquote{SALT\_TYPE\_NO\_LENGTH}}} 30351\end{fulllineitems} 30352 30353 30354 30355\begin{savenotes}\sphinxattablestart 30356\centering 30357\begin{tabulary}{\linewidth}[t]{|T|T|} 30358\hline 30359 30360\sphinxAtStartPar 30361\sphinxcode{\sphinxupquote{SALT\_TYPE\_NO\_LENGTH}} 30362& 30363\sphinxAtStartPar 30364\sphinxcode{\sphinxupquote{UINT\_MAX}} 30365\\ 30366\hline 30367\end{tabulary} 30368\par 30369\sphinxattableend\end{savenotes} 30370 30371 30372\subsubsection{THREEPARAMOPEN} 30373\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\sphinxhyphen{}in variable)@\spxentry{THREEPARAMOPEN}\spxextra{built\sphinxhyphen{}in variable}} 30374 30375\begin{fulllineitems} 30376\phantomsection\label{\detokenize{appdev/refs/macros/THREEPARAMOPEN:THREEPARAMOPEN}}\pysigline{\sphinxbfcode{\sphinxupquote{THREEPARAMOPEN}}} 30377\end{fulllineitems} 30378 30379 30380 30381\begin{savenotes}\sphinxattablestart 30382\centering 30383\begin{tabulary}{\linewidth}[t]{|T|T|} 30384\hline 30385 30386\sphinxAtStartPar 30387\sphinxcode{\sphinxupquote{THREEPARAMOPEN (x, y, z)}} 30388& 30389\sphinxAtStartPar 30390\sphinxcode{\sphinxupquote{open(x,y,z)}} 30391\\ 30392\hline 30393\end{tabulary} 30394\par 30395\sphinxattableend\end{savenotes} 30396 30397 30398\subsubsection{TKT\_FLG\_ANONYMOUS} 30399\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS:tkt-flg-anonymous}}\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS:tkt-flg-anonymous-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS::doc}}\index{TKT\_FLG\_ANONYMOUS (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_ANONYMOUS}\spxextra{built\sphinxhyphen{}in variable}} 30400 30401\begin{fulllineitems} 30402\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_ANONYMOUS:TKT_FLG_ANONYMOUS}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_ANONYMOUS}}} 30403\end{fulllineitems} 30404 30405 30406 30407\begin{savenotes}\sphinxattablestart 30408\centering 30409\begin{tabulary}{\linewidth}[t]{|T|T|} 30410\hline 30411 30412\sphinxAtStartPar 30413\sphinxcode{\sphinxupquote{TKT\_FLG\_ANONYMOUS}} 30414& 30415\sphinxAtStartPar 30416\sphinxcode{\sphinxupquote{0x00008000}} 30417\\ 30418\hline 30419\end{tabulary} 30420\par 30421\sphinxattableend\end{savenotes} 30422 30423 30424\subsubsection{TKT\_FLG\_ENC\_PA\_REP} 30425\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\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_ENC\_PA\_REP}\spxextra{built\sphinxhyphen{}in variable}} 30426 30427\begin{fulllineitems} 30428\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_ENC_PA_REP:TKT_FLG_ENC_PA_REP}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_ENC\_PA\_REP}}} 30429\end{fulllineitems} 30430 30431 30432 30433\begin{savenotes}\sphinxattablestart 30434\centering 30435\begin{tabulary}{\linewidth}[t]{|T|T|} 30436\hline 30437 30438\sphinxAtStartPar 30439\sphinxcode{\sphinxupquote{TKT\_FLG\_ENC\_PA\_REP}} 30440& 30441\sphinxAtStartPar 30442\sphinxcode{\sphinxupquote{0x00010000}} 30443\\ 30444\hline 30445\end{tabulary} 30446\par 30447\sphinxattableend\end{savenotes} 30448 30449 30450\subsubsection{TKT\_FLG\_FORWARDABLE} 30451\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE:tkt-flg-forwardable}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE:tkt-flg-forwardable-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE::doc}}\index{TKT\_FLG\_FORWARDABLE (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_FORWARDABLE}\spxextra{built\sphinxhyphen{}in variable}} 30452 30453\begin{fulllineitems} 30454\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDABLE:TKT_FLG_FORWARDABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_FORWARDABLE}}} 30455\end{fulllineitems} 30456 30457 30458 30459\begin{savenotes}\sphinxattablestart 30460\centering 30461\begin{tabulary}{\linewidth}[t]{|T|T|} 30462\hline 30463 30464\sphinxAtStartPar 30465\sphinxcode{\sphinxupquote{TKT\_FLG\_FORWARDABLE}} 30466& 30467\sphinxAtStartPar 30468\sphinxcode{\sphinxupquote{0x40000000}} 30469\\ 30470\hline 30471\end{tabulary} 30472\par 30473\sphinxattableend\end{savenotes} 30474 30475 30476\subsubsection{TKT\_FLG\_FORWARDED} 30477\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED:tkt-flg-forwarded}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED:tkt-flg-forwarded-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED::doc}}\index{TKT\_FLG\_FORWARDED (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_FORWARDED}\spxextra{built\sphinxhyphen{}in variable}} 30478 30479\begin{fulllineitems} 30480\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_FORWARDED:TKT_FLG_FORWARDED}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_FORWARDED}}} 30481\end{fulllineitems} 30482 30483 30484 30485\begin{savenotes}\sphinxattablestart 30486\centering 30487\begin{tabulary}{\linewidth}[t]{|T|T|} 30488\hline 30489 30490\sphinxAtStartPar 30491\sphinxcode{\sphinxupquote{TKT\_FLG\_FORWARDED}} 30492& 30493\sphinxAtStartPar 30494\sphinxcode{\sphinxupquote{0x20000000}} 30495\\ 30496\hline 30497\end{tabulary} 30498\par 30499\sphinxattableend\end{savenotes} 30500 30501 30502\subsubsection{TKT\_FLG\_HW\_AUTH} 30503\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}}\label{\detokenize{appdev/refs/macros/TKT_FLG_HW_AUTH::doc}}\index{TKT\_FLG\_HW\_AUTH (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_HW\_AUTH}\spxextra{built\sphinxhyphen{}in variable}} 30504 30505\begin{fulllineitems} 30506\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_HW_AUTH:TKT_FLG_HW_AUTH}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_HW\_AUTH}}} 30507\end{fulllineitems} 30508 30509 30510 30511\begin{savenotes}\sphinxattablestart 30512\centering 30513\begin{tabulary}{\linewidth}[t]{|T|T|} 30514\hline 30515 30516\sphinxAtStartPar 30517\sphinxcode{\sphinxupquote{TKT\_FLG\_HW\_AUTH}} 30518& 30519\sphinxAtStartPar 30520\sphinxcode{\sphinxupquote{0x00100000}} 30521\\ 30522\hline 30523\end{tabulary} 30524\par 30525\sphinxattableend\end{savenotes} 30526 30527 30528\subsubsection{TKT\_FLG\_INITIAL} 30529\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL:tkt-flg-initial}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL:tkt-flg-initial-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL::doc}}\index{TKT\_FLG\_INITIAL (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_INITIAL}\spxextra{built\sphinxhyphen{}in variable}} 30530 30531\begin{fulllineitems} 30532\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_INITIAL:TKT_FLG_INITIAL}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_INITIAL}}} 30533\end{fulllineitems} 30534 30535 30536 30537\begin{savenotes}\sphinxattablestart 30538\centering 30539\begin{tabulary}{\linewidth}[t]{|T|T|} 30540\hline 30541 30542\sphinxAtStartPar 30543\sphinxcode{\sphinxupquote{TKT\_FLG\_INITIAL}} 30544& 30545\sphinxAtStartPar 30546\sphinxcode{\sphinxupquote{0x00400000}} 30547\\ 30548\hline 30549\end{tabulary} 30550\par 30551\sphinxattableend\end{savenotes} 30552 30553 30554\subsubsection{TKT\_FLG\_INVALID} 30555\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID:tkt-flg-invalid}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID:tkt-flg-invalid-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID::doc}}\index{TKT\_FLG\_INVALID (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_INVALID}\spxextra{built\sphinxhyphen{}in variable}} 30556 30557\begin{fulllineitems} 30558\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_INVALID:TKT_FLG_INVALID}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_INVALID}}} 30559\end{fulllineitems} 30560 30561 30562 30563\begin{savenotes}\sphinxattablestart 30564\centering 30565\begin{tabulary}{\linewidth}[t]{|T|T|} 30566\hline 30567 30568\sphinxAtStartPar 30569\sphinxcode{\sphinxupquote{TKT\_FLG\_INVALID}} 30570& 30571\sphinxAtStartPar 30572\sphinxcode{\sphinxupquote{0x01000000}} 30573\\ 30574\hline 30575\end{tabulary} 30576\par 30577\sphinxattableend\end{savenotes} 30578 30579 30580\subsubsection{TKT\_FLG\_MAY\_POSTDATE} 30581\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:tkt-flg-may-postdate}}\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:tkt-flg-may-postdate-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE::doc}}\index{TKT\_FLG\_MAY\_POSTDATE (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_MAY\_POSTDATE}\spxextra{built\sphinxhyphen{}in variable}} 30582 30583\begin{fulllineitems} 30584\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_MAY_POSTDATE:TKT_FLG_MAY_POSTDATE}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_MAY\_POSTDATE}}} 30585\end{fulllineitems} 30586 30587 30588 30589\begin{savenotes}\sphinxattablestart 30590\centering 30591\begin{tabulary}{\linewidth}[t]{|T|T|} 30592\hline 30593 30594\sphinxAtStartPar 30595\sphinxcode{\sphinxupquote{TKT\_FLG\_MAY\_POSTDATE}} 30596& 30597\sphinxAtStartPar 30598\sphinxcode{\sphinxupquote{0x04000000}} 30599\\ 30600\hline 30601\end{tabulary} 30602\par 30603\sphinxattableend\end{savenotes} 30604 30605 30606\subsubsection{TKT\_FLG\_OK\_AS\_DELEGATE} 30607\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:tkt-flg-ok-as-delegate-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE::doc}}\index{TKT\_FLG\_OK\_AS\_DELEGATE (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_OK\_AS\_DELEGATE}\spxextra{built\sphinxhyphen{}in variable}} 30608 30609\begin{fulllineitems} 30610\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_OK_AS_DELEGATE:TKT_FLG_OK_AS_DELEGATE}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_OK\_AS\_DELEGATE}}} 30611\end{fulllineitems} 30612 30613 30614 30615\begin{savenotes}\sphinxattablestart 30616\centering 30617\begin{tabulary}{\linewidth}[t]{|T|T|} 30618\hline 30619 30620\sphinxAtStartPar 30621\sphinxcode{\sphinxupquote{TKT\_FLG\_OK\_AS\_DELEGATE}} 30622& 30623\sphinxAtStartPar 30624\sphinxcode{\sphinxupquote{0x00040000}} 30625\\ 30626\hline 30627\end{tabulary} 30628\par 30629\sphinxattableend\end{savenotes} 30630 30631 30632\subsubsection{TKT\_FLG\_POSTDATED} 30633\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED:tkt-flg-postdated}}\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED:tkt-flg-postdated-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED::doc}}\index{TKT\_FLG\_POSTDATED (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_POSTDATED}\spxextra{built\sphinxhyphen{}in variable}} 30634 30635\begin{fulllineitems} 30636\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_POSTDATED:TKT_FLG_POSTDATED}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_POSTDATED}}} 30637\end{fulllineitems} 30638 30639 30640 30641\begin{savenotes}\sphinxattablestart 30642\centering 30643\begin{tabulary}{\linewidth}[t]{|T|T|} 30644\hline 30645 30646\sphinxAtStartPar 30647\sphinxcode{\sphinxupquote{TKT\_FLG\_POSTDATED}} 30648& 30649\sphinxAtStartPar 30650\sphinxcode{\sphinxupquote{0x02000000}} 30651\\ 30652\hline 30653\end{tabulary} 30654\par 30655\sphinxattableend\end{savenotes} 30656 30657 30658\subsubsection{TKT\_FLG\_PRE\_AUTH} 30659\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH:tkt-flg-pre-auth}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH:tkt-flg-pre-auth-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH::doc}}\index{TKT\_FLG\_PRE\_AUTH (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_PRE\_AUTH}\spxextra{built\sphinxhyphen{}in variable}} 30660 30661\begin{fulllineitems} 30662\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_PRE_AUTH:TKT_FLG_PRE_AUTH}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_PRE\_AUTH}}} 30663\end{fulllineitems} 30664 30665 30666 30667\begin{savenotes}\sphinxattablestart 30668\centering 30669\begin{tabulary}{\linewidth}[t]{|T|T|} 30670\hline 30671 30672\sphinxAtStartPar 30673\sphinxcode{\sphinxupquote{TKT\_FLG\_PRE\_AUTH}} 30674& 30675\sphinxAtStartPar 30676\sphinxcode{\sphinxupquote{0x00200000}} 30677\\ 30678\hline 30679\end{tabulary} 30680\par 30681\sphinxattableend\end{savenotes} 30682 30683 30684\subsubsection{TKT\_FLG\_PROXIABLE} 30685\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\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_PROXIABLE}\spxextra{built\sphinxhyphen{}in variable}} 30686 30687\begin{fulllineitems} 30688\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXIABLE:TKT_FLG_PROXIABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_PROXIABLE}}} 30689\end{fulllineitems} 30690 30691 30692 30693\begin{savenotes}\sphinxattablestart 30694\centering 30695\begin{tabulary}{\linewidth}[t]{|T|T|} 30696\hline 30697 30698\sphinxAtStartPar 30699\sphinxcode{\sphinxupquote{TKT\_FLG\_PROXIABLE}} 30700& 30701\sphinxAtStartPar 30702\sphinxcode{\sphinxupquote{0x10000000}} 30703\\ 30704\hline 30705\end{tabulary} 30706\par 30707\sphinxattableend\end{savenotes} 30708 30709 30710\subsubsection{TKT\_FLG\_PROXY} 30711\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY:tkt-flg-proxy}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY:tkt-flg-proxy-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY::doc}}\index{TKT\_FLG\_PROXY (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_PROXY}\spxextra{built\sphinxhyphen{}in variable}} 30712 30713\begin{fulllineitems} 30714\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_PROXY:TKT_FLG_PROXY}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_PROXY}}} 30715\end{fulllineitems} 30716 30717 30718 30719\begin{savenotes}\sphinxattablestart 30720\centering 30721\begin{tabulary}{\linewidth}[t]{|T|T|} 30722\hline 30723 30724\sphinxAtStartPar 30725\sphinxcode{\sphinxupquote{TKT\_FLG\_PROXY}} 30726& 30727\sphinxAtStartPar 30728\sphinxcode{\sphinxupquote{0x08000000}} 30729\\ 30730\hline 30731\end{tabulary} 30732\par 30733\sphinxattableend\end{savenotes} 30734 30735 30736\subsubsection{TKT\_FLG\_RENEWABLE} 30737\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE:tkt-flg-renewable}}\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE:tkt-flg-renewable-data}}\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE::doc}}\index{TKT\_FLG\_RENEWABLE (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_RENEWABLE}\spxextra{built\sphinxhyphen{}in variable}} 30738 30739\begin{fulllineitems} 30740\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_RENEWABLE:TKT_FLG_RENEWABLE}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_RENEWABLE}}} 30741\end{fulllineitems} 30742 30743 30744 30745\begin{savenotes}\sphinxattablestart 30746\centering 30747\begin{tabulary}{\linewidth}[t]{|T|T|} 30748\hline 30749 30750\sphinxAtStartPar 30751\sphinxcode{\sphinxupquote{TKT\_FLG\_RENEWABLE}} 30752& 30753\sphinxAtStartPar 30754\sphinxcode{\sphinxupquote{0x00800000}} 30755\\ 30756\hline 30757\end{tabulary} 30758\par 30759\sphinxattableend\end{savenotes} 30760 30761 30762\subsubsection{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED} 30763\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}}\label{\detokenize{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED::doc}}\index{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED (built\sphinxhyphen{}in variable)@\spxentry{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}\spxextra{built\sphinxhyphen{}in variable}} 30764 30765\begin{fulllineitems} 30766\phantomsection\label{\detokenize{appdev/refs/macros/TKT_FLG_TRANSIT_POLICY_CHECKED:TKT_FLG_TRANSIT_POLICY_CHECKED}}\pysigline{\sphinxbfcode{\sphinxupquote{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}}} 30767\end{fulllineitems} 30768 30769 30770 30771\begin{savenotes}\sphinxattablestart 30772\centering 30773\begin{tabulary}{\linewidth}[t]{|T|T|} 30774\hline 30775 30776\sphinxAtStartPar 30777\sphinxcode{\sphinxupquote{TKT\_FLG\_TRANSIT\_POLICY\_CHECKED}} 30778& 30779\sphinxAtStartPar 30780\sphinxcode{\sphinxupquote{0x00080000}} 30781\\ 30782\hline 30783\end{tabulary} 30784\par 30785\sphinxattableend\end{savenotes} 30786 30787 30788\subsubsection{VALID\_INT\_BITS} 30789\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\sphinxhyphen{}in variable)@\spxentry{VALID\_INT\_BITS}\spxextra{built\sphinxhyphen{}in variable}} 30790 30791\begin{fulllineitems} 30792\phantomsection\label{\detokenize{appdev/refs/macros/VALID_INT_BITS:VALID_INT_BITS}}\pysigline{\sphinxbfcode{\sphinxupquote{VALID\_INT\_BITS}}} 30793\end{fulllineitems} 30794 30795 30796 30797\begin{savenotes}\sphinxattablestart 30798\centering 30799\begin{tabulary}{\linewidth}[t]{|T|T|} 30800\hline 30801 30802\sphinxAtStartPar 30803\sphinxcode{\sphinxupquote{VALID\_INT\_BITS}} 30804& 30805\sphinxAtStartPar 30806\sphinxcode{\sphinxupquote{INT\_MAX}} 30807\\ 30808\hline 30809\end{tabulary} 30810\par 30811\sphinxattableend\end{savenotes} 30812 30813 30814\subsubsection{VALID\_UINT\_BITS} 30815\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS:valid-uint-bits}}\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS:valid-uint-bits-data}}\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS::doc}}\index{VALID\_UINT\_BITS (built\sphinxhyphen{}in variable)@\spxentry{VALID\_UINT\_BITS}\spxextra{built\sphinxhyphen{}in variable}} 30816 30817\begin{fulllineitems} 30818\phantomsection\label{\detokenize{appdev/refs/macros/VALID_UINT_BITS:VALID_UINT_BITS}}\pysigline{\sphinxbfcode{\sphinxupquote{VALID\_UINT\_BITS}}} 30819\end{fulllineitems} 30820 30821 30822 30823\begin{savenotes}\sphinxattablestart 30824\centering 30825\begin{tabulary}{\linewidth}[t]{|T|T|} 30826\hline 30827 30828\sphinxAtStartPar 30829\sphinxcode{\sphinxupquote{VALID\_UINT\_BITS}} 30830& 30831\sphinxAtStartPar 30832\sphinxcode{\sphinxupquote{UINT\_MAX}} 30833\\ 30834\hline 30835\end{tabulary} 30836\par 30837\sphinxattableend\end{savenotes} 30838 30839 30840\subsubsection{krb5\_const} 30841\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\sphinxhyphen{}in variable)@\spxentry{krb5\_const}\spxextra{built\sphinxhyphen{}in variable}} 30842 30843\begin{fulllineitems} 30844\phantomsection\label{\detokenize{appdev/refs/macros/krb5_const:krb5_const}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_const}}} 30845\end{fulllineitems} 30846 30847 30848 30849\begin{savenotes}\sphinxattablestart 30850\centering 30851\begin{tabulary}{\linewidth}[t]{|T|T|} 30852\hline 30853 30854\sphinxAtStartPar 30855\sphinxcode{\sphinxupquote{krb5\_const}} 30856& 30857\sphinxAtStartPar 30858\sphinxcode{\sphinxupquote{const}} 30859\\ 30860\hline 30861\end{tabulary} 30862\par 30863\sphinxattableend\end{savenotes} 30864 30865 30866\subsubsection{krb5\_princ\_component} 30867\label{\detokenize{appdev/refs/macros/krb5_princ_component:krb5-princ-component}}\label{\detokenize{appdev/refs/macros/krb5_princ_component:krb5-princ-component-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_component::doc}}\index{krb5\_princ\_component (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_component}\spxextra{built\sphinxhyphen{}in variable}} 30868 30869\begin{fulllineitems} 30870\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_component:krb5_princ_component}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_component}}} 30871\end{fulllineitems} 30872 30873 30874 30875\begin{savenotes}\sphinxattablestart 30876\centering 30877\begin{tabulary}{\linewidth}[t]{|T|T|} 30878\hline 30879 30880\sphinxAtStartPar 30881\sphinxcode{\sphinxupquote{krb5\_princ\_component (context, princ, i)}} 30882& 30883\sphinxAtStartPar 30884\textasciigrave{}\textasciigrave{} (((i) \textless{} krb5\_princ\_size(context, princ)) ? (princ)\sphinxhyphen{}\textgreater{}data + (i) : NULL)\textasciigrave{}\textasciigrave{} 30885\\ 30886\hline 30887\end{tabulary} 30888\par 30889\sphinxattableend\end{savenotes} 30890 30891 30892\subsubsection{krb5\_princ\_name} 30893\label{\detokenize{appdev/refs/macros/krb5_princ_name:krb5-princ-name}}\label{\detokenize{appdev/refs/macros/krb5_princ_name:krb5-princ-name-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_name::doc}}\index{krb5\_princ\_name (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_name}\spxextra{built\sphinxhyphen{}in variable}} 30894 30895\begin{fulllineitems} 30896\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_name:krb5_princ_name}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_name}}} 30897\end{fulllineitems} 30898 30899 30900 30901\begin{savenotes}\sphinxattablestart 30902\centering 30903\begin{tabulary}{\linewidth}[t]{|T|T|} 30904\hline 30905 30906\sphinxAtStartPar 30907\sphinxcode{\sphinxupquote{krb5\_princ\_name (context, princ)}} 30908& 30909\sphinxAtStartPar 30910\sphinxcode{\sphinxupquote{(princ)\sphinxhyphen{}\textgreater{}data}} 30911\\ 30912\hline 30913\end{tabulary} 30914\par 30915\sphinxattableend\end{savenotes} 30916 30917 30918\subsubsection{krb5\_princ\_realm} 30919\label{\detokenize{appdev/refs/macros/krb5_princ_realm:krb5-princ-realm}}\label{\detokenize{appdev/refs/macros/krb5_princ_realm:krb5-princ-realm-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_realm::doc}}\index{krb5\_princ\_realm (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_realm}\spxextra{built\sphinxhyphen{}in variable}} 30920 30921\begin{fulllineitems} 30922\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_realm:krb5_princ_realm}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_realm}}} 30923\end{fulllineitems} 30924 30925 30926 30927\begin{savenotes}\sphinxattablestart 30928\centering 30929\begin{tabulary}{\linewidth}[t]{|T|T|} 30930\hline 30931 30932\sphinxAtStartPar 30933\sphinxcode{\sphinxupquote{krb5\_princ\_realm (context, princ)}} 30934& 30935\sphinxAtStartPar 30936\sphinxcode{\sphinxupquote{(\&(princ)\sphinxhyphen{}\textgreater{}realm)}} 30937\\ 30938\hline 30939\end{tabulary} 30940\par 30941\sphinxattableend\end{savenotes} 30942 30943 30944\subsubsection{krb5\_princ\_set\_realm} 30945\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm:krb5-princ-set-realm}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm:krb5-princ-set-realm-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm::doc}}\index{krb5\_princ\_set\_realm (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_set\_realm}\spxextra{built\sphinxhyphen{}in variable}} 30946 30947\begin{fulllineitems} 30948\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm:krb5_princ_set_realm}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_set\_realm}}} 30949\end{fulllineitems} 30950 30951 30952 30953\begin{savenotes}\sphinxattablestart 30954\centering 30955\begin{tabulary}{\linewidth}[t]{|T|T|} 30956\hline 30957 30958\sphinxAtStartPar 30959\sphinxcode{\sphinxupquote{krb5\_princ\_set\_realm (context, princ, value)}} 30960& 30961\sphinxAtStartPar 30962\sphinxcode{\sphinxupquote{((princ)\sphinxhyphen{}\textgreater{}realm = *(value))}} 30963\\ 30964\hline 30965\end{tabulary} 30966\par 30967\sphinxattableend\end{savenotes} 30968 30969 30970\subsubsection{krb5\_princ\_set\_realm\_data} 30971\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_data:krb5-princ-set-realm-data}}\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}}\index{krb5\_princ\_set\_realm\_data (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_set\_realm\_data}\spxextra{built\sphinxhyphen{}in variable}} 30972 30973\begin{fulllineitems} 30974\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_data:krb5_princ_set_realm_data}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_set\_realm\_data}}} 30975\end{fulllineitems} 30976 30977 30978 30979\begin{savenotes}\sphinxattablestart 30980\centering 30981\begin{tabulary}{\linewidth}[t]{|T|T|} 30982\hline 30983 30984\sphinxAtStartPar 30985\sphinxcode{\sphinxupquote{krb5\_princ\_set\_realm\_data (context, princ, value)}} 30986& 30987\sphinxAtStartPar 30988\sphinxcode{\sphinxupquote{(princ)\sphinxhyphen{}\textgreater{}realm.data = (value)}} 30989\\ 30990\hline 30991\end{tabulary} 30992\par 30993\sphinxattableend\end{savenotes} 30994 30995 30996\subsubsection{krb5\_princ\_set\_realm\_length} 30997\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_length:krb5-princ-set-realm-length}}\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}}\index{krb5\_princ\_set\_realm\_length (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_set\_realm\_length}\spxextra{built\sphinxhyphen{}in variable}} 30998 30999\begin{fulllineitems} 31000\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_set_realm_length:krb5_princ_set_realm_length}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_set\_realm\_length}}} 31001\end{fulllineitems} 31002 31003 31004 31005\begin{savenotes}\sphinxattablestart 31006\centering 31007\begin{tabulary}{\linewidth}[t]{|T|T|} 31008\hline 31009 31010\sphinxAtStartPar 31011\sphinxcode{\sphinxupquote{krb5\_princ\_set\_realm\_length (context, princ, value)}} 31012& 31013\sphinxAtStartPar 31014\sphinxcode{\sphinxupquote{(princ)\sphinxhyphen{}\textgreater{}realm.length = (value)}} 31015\\ 31016\hline 31017\end{tabulary} 31018\par 31019\sphinxattableend\end{savenotes} 31020 31021 31022\subsubsection{krb5\_princ\_size} 31023\label{\detokenize{appdev/refs/macros/krb5_princ_size:krb5-princ-size}}\label{\detokenize{appdev/refs/macros/krb5_princ_size:krb5-princ-size-data}}\label{\detokenize{appdev/refs/macros/krb5_princ_size::doc}}\index{krb5\_princ\_size (built\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_size}\spxextra{built\sphinxhyphen{}in variable}} 31024 31025\begin{fulllineitems} 31026\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_size:krb5_princ_size}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_size}}} 31027\end{fulllineitems} 31028 31029 31030 31031\begin{savenotes}\sphinxattablestart 31032\centering 31033\begin{tabulary}{\linewidth}[t]{|T|T|} 31034\hline 31035 31036\sphinxAtStartPar 31037\sphinxcode{\sphinxupquote{krb5\_princ\_size (context, princ)}} 31038& 31039\sphinxAtStartPar 31040\sphinxcode{\sphinxupquote{(princ)\sphinxhyphen{}\textgreater{}length}} 31041\\ 31042\hline 31043\end{tabulary} 31044\par 31045\sphinxattableend\end{savenotes} 31046 31047 31048\subsubsection{krb5\_princ\_type} 31049\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\sphinxhyphen{}in variable)@\spxentry{krb5\_princ\_type}\spxextra{built\sphinxhyphen{}in variable}} 31050 31051\begin{fulllineitems} 31052\phantomsection\label{\detokenize{appdev/refs/macros/krb5_princ_type:krb5_princ_type}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_princ\_type}}} 31053\end{fulllineitems} 31054 31055 31056 31057\begin{savenotes}\sphinxattablestart 31058\centering 31059\begin{tabulary}{\linewidth}[t]{|T|T|} 31060\hline 31061 31062\sphinxAtStartPar 31063\sphinxcode{\sphinxupquote{krb5\_princ\_type (context, princ)}} 31064& 31065\sphinxAtStartPar 31066\sphinxcode{\sphinxupquote{(princ)\sphinxhyphen{}\textgreater{}type}} 31067\\ 31068\hline 31069\end{tabulary} 31070\par 31071\sphinxattableend\end{savenotes} 31072 31073 31074\subsubsection{krb5\_roundup} 31075\label{\detokenize{appdev/refs/macros/krb5_roundup:krb5-roundup}}\label{\detokenize{appdev/refs/macros/krb5_roundup:krb5-roundup-data}}\label{\detokenize{appdev/refs/macros/krb5_roundup::doc}}\index{krb5\_roundup (built\sphinxhyphen{}in variable)@\spxentry{krb5\_roundup}\spxextra{built\sphinxhyphen{}in variable}} 31076 31077\begin{fulllineitems} 31078\phantomsection\label{\detokenize{appdev/refs/macros/krb5_roundup:krb5_roundup}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_roundup}}} 31079\end{fulllineitems} 31080 31081 31082 31083\begin{savenotes}\sphinxattablestart 31084\centering 31085\begin{tabulary}{\linewidth}[t]{|T|T|} 31086\hline 31087 31088\sphinxAtStartPar 31089\sphinxcode{\sphinxupquote{krb5\_roundup (x, y)}} 31090& 31091\sphinxAtStartPar 31092\sphinxcode{\sphinxupquote{((((x) + (y) \sphinxhyphen{} 1)/(y))*(y))}} 31093\\ 31094\hline 31095\end{tabulary} 31096\par 31097\sphinxattableend\end{savenotes} 31098 31099 31100\subsubsection{krb5\_x} 31101\label{\detokenize{appdev/refs/macros/krb5_x:krb5-x}}\label{\detokenize{appdev/refs/macros/krb5_x:krb5-x-data}}\label{\detokenize{appdev/refs/macros/krb5_x::doc}}\index{krb5\_x (built\sphinxhyphen{}in variable)@\spxentry{krb5\_x}\spxextra{built\sphinxhyphen{}in variable}} 31102 31103\begin{fulllineitems} 31104\phantomsection\label{\detokenize{appdev/refs/macros/krb5_x:krb5_x}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_x}}} 31105\end{fulllineitems} 31106 31107 31108 31109\begin{savenotes}\sphinxattablestart 31110\centering 31111\begin{tabulary}{\linewidth}[t]{|T|T|} 31112\hline 31113 31114\sphinxAtStartPar 31115\sphinxcode{\sphinxupquote{krb5\_x (ptr, args)}} 31116& 31117\sphinxAtStartPar 31118\sphinxcode{\sphinxupquote{((ptr)?((*(ptr)) args):(abort(),1))}} 31119\\ 31120\hline 31121\end{tabulary} 31122\par 31123\sphinxattableend\end{savenotes} 31124 31125 31126\subsubsection{krb5\_xc} 31127\label{\detokenize{appdev/refs/macros/krb5_xc:krb5-xc}}\label{\detokenize{appdev/refs/macros/krb5_xc:krb5-xc-data}}\label{\detokenize{appdev/refs/macros/krb5_xc::doc}}\index{krb5\_xc (built\sphinxhyphen{}in variable)@\spxentry{krb5\_xc}\spxextra{built\sphinxhyphen{}in variable}} 31128 31129\begin{fulllineitems} 31130\phantomsection\label{\detokenize{appdev/refs/macros/krb5_xc:krb5_xc}}\pysigline{\sphinxbfcode{\sphinxupquote{krb5\_xc}}} 31131\end{fulllineitems} 31132 31133 31134 31135\begin{savenotes}\sphinxattablestart 31136\centering 31137\begin{tabulary}{\linewidth}[t]{|T|T|} 31138\hline 31139 31140\sphinxAtStartPar 31141\sphinxcode{\sphinxupquote{krb5\_xc (ptr, args)}} 31142& 31143\sphinxAtStartPar 31144\sphinxcode{\sphinxupquote{((ptr)?((*(ptr)) args):(abort(),(char*)0))}} 31145\\ 31146\hline 31147\end{tabulary} 31148\par 31149\sphinxattableend\end{savenotes} 31150 31151 31152\subsection{Deprecated macros} 31153\label{\detokenize{appdev/refs/macros/index:deprecated-macros}} 31154 31155\subsubsection{krb524\_convert\_creds\_kdc} 31156\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc:krb524-convert-creds-kdc}}\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc:krb524-convert-creds-kdc-data}}\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc::doc}}\index{krb524\_convert\_creds\_kdc (built\sphinxhyphen{}in variable)@\spxentry{krb524\_convert\_creds\_kdc}\spxextra{built\sphinxhyphen{}in variable}} 31157 31158\begin{fulllineitems} 31159\phantomsection\label{\detokenize{appdev/refs/macros/krb524_convert_creds_kdc:krb524_convert_creds_kdc}}\pysigline{\sphinxbfcode{\sphinxupquote{krb524\_convert\_creds\_kdc}}} 31160\end{fulllineitems} 31161 31162 31163 31164\begin{savenotes}\sphinxattablestart 31165\centering 31166\begin{tabulary}{\linewidth}[t]{|T|T|} 31167\hline 31168 31169\sphinxAtStartPar 31170\sphinxcode{\sphinxupquote{krb524\_convert\_creds\_kdc}} 31171& 31172\sphinxAtStartPar 31173\sphinxcode{\sphinxupquote{krb5\_524\_convert\_creds}} 31174\\ 31175\hline 31176\end{tabulary} 31177\par 31178\sphinxattableend\end{savenotes} 31179 31180 31181\subsubsection{krb524\_init\_ets} 31182\label{\detokenize{appdev/refs/macros/krb524_init_ets:krb524-init-ets}}\label{\detokenize{appdev/refs/macros/krb524_init_ets:krb524-init-ets-data}}\label{\detokenize{appdev/refs/macros/krb524_init_ets::doc}}\index{krb524\_init\_ets (built\sphinxhyphen{}in variable)@\spxentry{krb524\_init\_ets}\spxextra{built\sphinxhyphen{}in variable}} 31183 31184\begin{fulllineitems} 31185\phantomsection\label{\detokenize{appdev/refs/macros/krb524_init_ets:krb524_init_ets}}\pysigline{\sphinxbfcode{\sphinxupquote{krb524\_init\_ets}}} 31186\end{fulllineitems} 31187 31188 31189 31190\begin{savenotes}\sphinxattablestart 31191\centering 31192\begin{tabulary}{\linewidth}[t]{|T|T|} 31193\hline 31194 31195\sphinxAtStartPar 31196\sphinxcode{\sphinxupquote{krb524\_init\_ets (x)}} 31197& 31198\sphinxAtStartPar 31199\sphinxcode{\sphinxupquote{(0)}} 31200\\ 31201\hline 31202\end{tabulary} 31203\par 31204\sphinxattableend\end{savenotes} 31205 31206 31207 31208\renewcommand{\indexname}{Index} 31209\printindex 31210\end{document}