1/*
2 * This file is auto generated.  Please do not edit it.
3 */
4
5#ifndef __KERBEROS5__
6#define __KERBEROS5__
7
8/* This file is generated, please don't edit it directly.  */
9#ifndef KRB5_KRB5_H_INCLUDED
10#define KRB5_KRB5_H_INCLUDED
11/* -*- c -*-
12 * include/krb5.h
13 *
14 * Copyright 1989,1990,1995,2001, 2003, 2007  by the Massachusetts Institute of Technology.
15 * All Rights Reserved.
16 *
17 * Export of this software from the United States of America may
18 *   require a specific license from the United States Government.
19 *   It is the responsibility of any person or organization contemplating
20 *   export to obtain such a license before exporting.
21 *
22 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
23 * distribute this software and its documentation for any purpose and
24 * without fee is hereby granted, provided that the above copyright
25 * notice appear in all copies and that both that copyright notice and
26 * this permission notice appear in supporting documentation, and that
27 * the name of M.I.T. not be used in advertising or publicity pertaining
28 * to distribution of the software without specific, written prior
29 * permission.	Furthermore if you modify this software you must label
30 * your software as modified software and not distribute it in such a
31 * fashion that it might be confused with the original M.I.T. software.
32 * M.I.T. makes no representations about the suitability of
33 * this software for any purpose.  It is provided "as is" without express
34 * or implied warranty.
35 *
36 *
37 * General definitions for Kerberos version 5.
38 */
39
40/*
41 * Copyright (C) 1998 by the FundsXpress, INC.
42 *
43 * All rights reserved.
44 *
45 * Export of this software from the United States of America may require
46 * a specific license from the United States Government.  It is the
47 * responsibility of any person or organization contemplating export to
48 * obtain such a license before exporting.
49 *
50 * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
51 * distribute this software and its documentation for any purpose and
52 * without fee is hereby granted, provided that the above copyright
53 * notice appear in all copies and that both that copyright notice and
54 * this permission notice appear in supporting documentation, and that
55 * the name of FundsXpress. not be used in advertising or publicity pertaining
56 * to distribution of the software without specific, written prior
57 * permission.  FundsXpress makes no representations about the suitability of
58 * this software for any purpose.  It is provided "as is" without express
59 * or implied warranty.
60 *
61 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
62 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
63 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
64 */
65
66#ifndef KRB5_GENERAL__
67#define KRB5_GENERAL__
68
69/* By default, do not expose deprecated interfaces. */
70#ifndef MIT_KRB5_DEPRECATED
71#define MIT_KRB5_DEPRECATED 0
72#endif
73
74#if defined(__MACH__) && defined(__APPLE__)
75#	include <TargetConditionals.h>
76#    if TARGET_RT_MAC_CFM
77#	error "Use KfM 4.0 SDK headers for CFM compilation."
78#    endif
79#endif
80
81#if defined(_MSDOS) || defined(_WIN32)
82#include <win-mac.h>
83#endif
84
85#ifndef KRB5_CALLCONV
86#define KRB5_CALLCONV
87#endif /* !KRB5_CALLCONV */
88
89#ifndef KRB5_CALLCONV_C
90#define KRB5_CALLCONV_C
91#endif /* !KRB5_CALLCONV_C */
92
93#include <stdlib.h>
94#include <limits.h>		/* for *_MAX */
95#include <stdarg.h>
96
97#ifndef KRB5INT_BEGIN_DECLS
98#if defined(__cplusplus)
99#define KRB5INT_BEGIN_DECLS	extern "C" {
100#define KRB5INT_END_DECLS	}
101#else
102#define KRB5INT_BEGIN_DECLS
103#define KRB5INT_END_DECLS
104#endif
105#endif
106
107KRB5INT_BEGIN_DECLS
108
109#if TARGET_OS_MAC
110#    pragma pack(push,2)
111#endif
112
113#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 30203
114# define KRB5_ATTR_DEPRECATED __attribute__((deprecated))
115#elif defined _WIN32
116# define KRB5_ATTR_DEPRECATED __declspec(deprecated)
117#else
118# define KRB5_ATTR_DEPRECATED
119#endif
120
121/* from profile.h */
122struct _profile_t;
123/* typedef struct _profile_t *profile_t; */
124
125/*
126 * begin wordsize.h
127 */
128
129/*
130 * Word-size related definition.
131 */
132
133typedef	unsigned char	mit_krb5_octet;
134
135#if INT_MAX == 0x7fff
136typedef	int	mit_krb5_int16;
137typedef	unsigned int	mit_krb5_ui_2;
138#elif SHRT_MAX == 0x7fff
139typedef	short	mit_krb5_int16;
140typedef	unsigned short	mit_krb5_ui_2;
141#else
142#error undefined 16 bit type
143#endif
144
145#if INT_MAX == 0x7fffffffL
146typedef	int	mit_krb5_int32;
147typedef	unsigned int	mit_krb5_ui_4;
148#elif LONG_MAX == 0x7fffffffL
149typedef	long	mit_krb5_int32;
150typedef	unsigned long	mit_krb5_ui_4;
151#elif SHRT_MAX == 0x7fffffffL
152typedef	short	mit_krb5_int32;
153typedef	unsigned short	mit_krb5_ui_4;
154#else
155#error: undefined 32 bit type
156#endif
157
158#define VALID_INT_BITS	  INT_MAX
159#define VALID_UINT_BITS	  UINT_MAX
160
161#define MIT_KRB5_INT32_MAX	2147483647
162/* this strange form is necessary since - is a unary operator, not a sign
163   indicator */
164#define MIT_KRB5_INT32_MIN	(-MIT_KRB5_INT32_MAX-1)
165
166#define MIT_KRB5_INT16_MAX 65535
167/* this strange form is necessary since - is a unary operator, not a sign
168   indicator */
169#define MIT_KRB5_INT16_MIN	(-MIT_KRB5_INT16_MAX-1)
170
171/*
172 * end wordsize.h
173 */
174
175/*
176 * begin "base-defs.h"
177 */
178
179/*
180 * Basic definitions for Kerberos V5 library
181 */
182
183#ifndef FALSE
184#define	FALSE	0
185#endif
186#ifndef TRUE
187#define	TRUE	1
188#endif
189
190typedef	unsigned int mit_krb5_boolean;
191typedef	unsigned int mit_krb5_msgtype;
192typedef	unsigned int mit_krb5_kvno;
193
194typedef	mit_krb5_int32 mit_krb5_addrtype;
195typedef mit_krb5_int32 mit_krb5_enctype;
196typedef mit_krb5_int32 mit_krb5_cksumtype;
197typedef mit_krb5_int32 mit_krb5_authdatatype;
198typedef mit_krb5_int32 mit_krb5_keyusage;
199
200typedef mit_krb5_int32	mit_krb5_preauthtype; /* This may change, later on */
201typedef	mit_krb5_int32	mit_krb5_flags;
202typedef mit_krb5_int32	mit_krb5_timestamp;
203typedef	mit_krb5_int32	mit_krb5_error_code;
204typedef mit_krb5_int32	mit_krb5_deltat;
205
206typedef mit_krb5_error_code	mit_krb5_magic;
207
208typedef struct _mit_krb5_data {
209	mit_krb5_magic magic;
210	unsigned int length;
211	char *data;
212} mit_krb5_data;
213
214typedef struct _mit_krb5_octet_data {
215	mit_krb5_magic magic;
216	unsigned int length;
217	mit_krb5_octet *data;
218} mit_krb5_octet_data;
219
220/*
221 * Hack length for crypto library to use the afs_string_to_key It is
222 * equivalent to -1 without possible sign extension
223 * We also overload for an unset salt type length - which is also -1, but
224 * hey, why not....
225*/
226#define SALT_TYPE_AFS_LENGTH UINT_MAX
227#define SALT_TYPE_NO_LENGTH  UINT_MAX
228
229typedef	void * mit_krb5_pointer;
230typedef void const * mit_krb5_const_pointer;
231
232typedef struct mit_krb5_principal_data {
233    mit_krb5_magic magic;
234    mit_krb5_data realm;
235    mit_krb5_data *data;		/* An array of strings */
236    mit_krb5_int32 length;
237    mit_krb5_int32 type;
238} mit_krb5_principal_data;
239
240typedef	mit_krb5_principal_data * mit_krb5_principal;
241
242/*
243 * Per V5 spec on definition of principal types
244 */
245
246/* Name type not known */
247#define MIT_KRB5_NT_UNKNOWN			0
248/* Just the name of the principal as in DCE, or for users */
249#define MIT_KRB5_NT_PRINCIPAL		1
250/* Service and other unique instance (krbtgt) */
251#define MIT_KRB5_NT_SRV_INST		2
252/* Service with host name as instance (telnet, rcommands) */
253#define MIT_KRB5_NT_SRV_HST			3
254/* Service with host as remaining components */
255#define MIT_KRB5_NT_SRV_XHST		4
256/* Unique ID */
257#define MIT_KRB5_NT_UID			5
258/* PKINIT */
259#define MIT_KRB5_NT_X500_PRINCIPAL		6
260/* Name in form of SMTP email name */
261#define MIT_KRB5_NT_SMTP_NAME		7
262/* Windows 2000 UPN */
263#define MIT_KRB5_NT_ENTERPRISE_PRINCIPAL	10
264/* Windows 2000 UPN and SID */
265#define MIT_KRB5_NT_MS_PRINCIPAL		-128
266/* NT 4 style name */
267#define MIT_KRB5_NT_MS_PRINCIPAL_AND_ID	-129
268/* NT 4 style name and SID */
269#define MIT_KRB5_NT_ENT_PRINCIPAL_AND_ID	-130
270
271/* constant version thereof: */
272typedef const mit_krb5_principal_data *mit_krb5_const_principal;
273
274#define krb5_princ_realm(context, princ) (&(princ)->realm)
275#define krb5_princ_set_realm(context, princ,value) ((princ)->realm = *(value))
276#define krb5_princ_set_realm_length(context, princ,value) (princ)->realm.length = (value)
277#define krb5_princ_set_realm_data(context, princ,value) (princ)->realm.data = (value)
278#define	krb5_princ_size(context, princ) (princ)->length
279#define	krb5_princ_type(context, princ) (princ)->type
280#define	krb5_princ_name(context, princ) (princ)->data
281#define	krb5_princ_component(context, princ,i)		\
282	    (((i) < krb5_princ_size(context, princ))	\
283	     ? (princ)->data + (i)			\
284	     : NULL)
285
286/*
287 * Constants for realm referrals.
288 */
289#define        MIT_KRB5_REFERRAL_REALM	""
290
291/*
292 * Referral-specific functions.
293 */
294mit_krb5_boolean KRB5_CALLCONV krb5_is_referral_realm(const mit_krb5_data *);
295
296/*
297 * end "base-defs.h"
298 */
299
300/*
301 * begin "hostaddr.h"
302 */
303
304/* structure for address */
305typedef struct _mit_krb5_address {
306    mit_krb5_magic magic;
307    mit_krb5_addrtype addrtype;
308    unsigned int length;
309    mit_krb5_octet *contents;
310} mit_krb5_address;
311
312/* per Kerberos v5 protocol spec */
313#define	MIT_ADDRTYPE_INET		0x0002
314#define	MIT_ADDRTYPE_CHAOS		0x0005
315#define	MIT_ADDRTYPE_XNS		0x0006
316#define	MIT_ADDRTYPE_ISO		0x0007
317#define MIT_ADDRTYPE_DDP		0x0010
318#define MIT_ADDRTYPE_INET6		0x0018
319/* not yet in the spec... */
320#define MIT_ADDRTYPE_ADDRPORT	0x0100
321#define MIT_ADDRTYPE_IPPORT		0x0101
322
323/* macros to determine if a type is a local type */
324#define MIT_ADDRTYPE_IS_LOCAL(addrtype) (addrtype & 0x8000)
325
326/*
327 * end "hostaddr.h"
328 */
329
330
331struct _mit_krb5_context;
332typedef struct _mit_krb5_context * mit_krb5_context;
333
334struct _mit_krb5_auth_context;
335typedef struct _mit_krb5_auth_context * mit_krb5_auth_context;
336
337struct _krb5_cryptosystem_entry;
338
339/*
340 * begin "encryption.h"
341 */
342
343typedef struct _mit_krb5_keyblock {
344    mit_krb5_magic magic;
345    mit_krb5_enctype enctype;
346    unsigned int length;
347    mit_krb5_octet *contents;
348} mit_krb5_keyblock;
349
350#ifdef KRB5_OLD_CRYPTO
351typedef struct _mit_krb5_encrypt_block {
352    mit_krb5_magic magic;
353    mit_krb5_enctype crypto_entry;		/* to call krb5_encrypt_size, you need
354					   this.  it was a pointer, but it
355					   doesn't have to be.  gross. */
356    mit_krb5_keyblock *key;
357} mit_krb5_encrypt_block;
358#endif
359
360typedef struct _mit_krb5_checksum {
361    mit_krb5_magic magic;
362    mit_krb5_cksumtype checksum_type;	/* checksum type */
363    unsigned int length;
364    mit_krb5_octet *contents;
365} mit_krb5_checksum;
366
367typedef struct _mit_krb5_enc_data {
368    mit_krb5_magic magic;
369    mit_krb5_enctype enctype;
370    mit_krb5_kvno kvno;
371    mit_krb5_data ciphertext;
372} mit_krb5_enc_data;
373
374/* per Kerberos v5 protocol spec */
375#define	ENCTYPE_NULL		0x0000
376#define	ENCTYPE_DES_CBC_CRC	0x0001	/* DES cbc mode with CRC-32 */
377#define	ENCTYPE_DES_CBC_MD4	0x0002	/* DES cbc mode with RSA-MD4 */
378#define	ENCTYPE_DES_CBC_MD5	0x0003	/* DES cbc mode with RSA-MD5 */
379#define	ENCTYPE_DES_CBC_RAW	0x0004	/* DES cbc mode raw */
380/* XXX deprecated? */
381#define	ENCTYPE_DES3_CBC_SHA	0x0005	/* DES-3 cbc mode with NIST-SHA */
382#define	ENCTYPE_DES3_CBC_RAW	0x0006	/* DES-3 cbc mode raw */
383#define ENCTYPE_DES_HMAC_SHA1	0x0008
384/* PKINIT */
385#define ENCTYPE_DSA_SHA1_CMS	0x0009	/* DSA with SHA1, CMS signature */
386#define ENCTYPE_MD5_RSA_CMS	0x000a	/* MD5 with RSA, CMS signature */
387#define ENCTYPE_SHA1_RSA_CMS	0x000b	/* SHA1 with RSA, CMS signature */
388#define ENCTYPE_RC2_CBC_ENV	0x000c	/* RC2 cbc mode, CMS enveloped data */
389#define ENCTYPE_RSA_ENV		0x000d	/* RSA encryption, CMS enveloped data */
390#define ENCTYPE_RSA_ES_OAEP_ENV	0x000e	/* RSA w/OEAP encryption, CMS enveloped data */
391#define ENCTYPE_DES3_CBC_ENV	0x000f	/* DES-3 cbc mode, CMS enveloped data */
392
393#define ENCTYPE_DES3_CBC_SHA1	0x0010
394#define ENCTYPE_AES128_CTS_HMAC_SHA1_96	0x0011
395#define ENCTYPE_AES256_CTS_HMAC_SHA1_96	0x0012
396#define ENCTYPE_ARCFOUR_HMAC	0x0017
397#define ENCTYPE_ARCFOUR_HMAC_EXP 0x0018
398#define ENCTYPE_UNKNOWN		0x01ff
399
400#define	CKSUMTYPE_CRC32		0x0001
401#define	CKSUMTYPE_RSA_MD4	0x0002
402#define	CKSUMTYPE_RSA_MD4_DES	0x0003
403#define	CKSUMTYPE_DESCBC	0x0004
404/* des-mac-k */
405/* rsa-md4-des-k */
406#define	CKSUMTYPE_RSA_MD5	0x0007
407#define	CKSUMTYPE_RSA_MD5_DES	0x0008
408#define CKSUMTYPE_NIST_SHA	0x0009
409#define CKSUMTYPE_HMAC_SHA1_DES3	0x000c
410#define CKSUMTYPE_HMAC_SHA1_96_AES128	0x000f
411#define CKSUMTYPE_HMAC_SHA1_96_AES256	0x0010
412#define CKSUMTYPE_HMAC_MD5_ARCFOUR -138 /*Microsoft md5 hmac cksumtype*/
413
414/* The following are entropy source designations. Whenever
415 * krb5_C_random_add_entropy is called, one of these source  ids is passed
416 * in.  This  allows the library  to better estimate bits of
417 * entropy in the sample and to keep track of what sources of entropy have
418 * contributed enough entropy.  Sources marked internal MUST NOT be
419 * used by applications outside the Kerberos library
420*/
421
422enum {
423  KRB5_C_RANDSOURCE_OLDAPI = 0, /*calls to krb5_C_RANDOM_SEED (INTERNAL)*/
424  KRB5_C_RANDSOURCE_OSRAND = 1, /* /dev/random or equivalent (internal)*/
425  KRB5_C_RANDSOURCE_TRUSTEDPARTY = 2, /* From KDC or other trusted party*/
426  /*This source should be used carefully; data in this category
427   * should be from a third party trusted to give random bits
428   * For example keys issued by the KDC in the application server.
429   */
430  KRB5_C_RANDSOURCE_TIMING = 3, /* Timing of operations*/
431  KRB5_C_RANDSOURCE_EXTERNAL_PROTOCOL = 4, /*Protocol data possibly from attacker*/
432  KRB5_C_RANDSOURCE_MAX = 5 /*Do not use; maximum source ID*/
433};
434
435#ifndef krb5_roundup
436/* round x up to nearest multiple of y */
437#define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y))
438#endif /* roundup */
439
440/* macro function definitions to help clean up code */
441
442#if 1
443#define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
444#define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
445#else
446#define krb5_x(ptr,args) ((*(ptr)) args)
447#define krb5_xc(ptr,args) ((*(ptr)) args)
448#endif
449
450mit_krb5_error_code KRB5_CALLCONV
451    krb5_c_encrypt
452    (mit_krb5_context context, const mit_krb5_keyblock *key,
453		    mit_krb5_keyusage usage, const mit_krb5_data *cipher_state,
454		    const mit_krb5_data *input, mit_krb5_enc_data *output);
455
456mit_krb5_error_code KRB5_CALLCONV
457    krb5_c_decrypt
458    (mit_krb5_context context, const mit_krb5_keyblock *key,
459		    mit_krb5_keyusage usage, const mit_krb5_data *cipher_state,
460		    const mit_krb5_enc_data *input, mit_krb5_data *output);
461
462mit_krb5_error_code KRB5_CALLCONV
463    krb5_c_encrypt_length
464    (mit_krb5_context context, mit_krb5_enctype enctype,
465		    size_t inputlen, size_t *length);
466
467mit_krb5_error_code KRB5_CALLCONV
468    krb5_c_block_size
469    (mit_krb5_context context, mit_krb5_enctype enctype,
470		    size_t *blocksize);
471
472mit_krb5_error_code KRB5_CALLCONV
473    krb5_c_keylengths
474    (mit_krb5_context context, mit_krb5_enctype enctype,
475		    size_t *keybytes, size_t *keylength);
476
477mit_krb5_error_code KRB5_CALLCONV
478	krb5_c_init_state
479(mit_krb5_context context,
480const mit_krb5_keyblock *key, mit_krb5_keyusage usage,
481mit_krb5_data *new_state);
482
483mit_krb5_error_code KRB5_CALLCONV
484	krb5_c_free_state
485(mit_krb5_context context, const mit_krb5_keyblock *key, mit_krb5_data *state);
486
487mit_krb5_error_code KRB5_CALLCONV
488    krb5_c_prf (mit_krb5_context, const mit_krb5_keyblock *,
489		mit_krb5_data *in, mit_krb5_data *out);
490
491mit_krb5_error_code KRB5_CALLCONV
492    krb5_c_prf_length (mit_krb5_context, mit_krb5_enctype, size_t *outlen);
493
494mit_krb5_error_code KRB5_CALLCONV
495    krb5_c_make_random_key
496    (mit_krb5_context context, mit_krb5_enctype enctype,
497		    mit_krb5_keyblock *k5_random_key);
498
499mit_krb5_error_code KRB5_CALLCONV
500    krb5_c_random_to_key
501    (mit_krb5_context context, mit_krb5_enctype enctype,
502		    mit_krb5_data *random_data, mit_krb5_keyblock *k5_random_key);
503
504/* Register a new entropy sample  with the PRNG. may cause
505* the PRNG to be reseeded, although this is not guaranteed.  See previous randsource definitions
506* for information on how each source should be used.
507*/
508mit_krb5_error_code KRB5_CALLCONV
509	krb5_c_random_add_entropy
510(mit_krb5_context context, unsigned int  randsource_id, const mit_krb5_data *data);
511
512
513mit_krb5_error_code KRB5_CALLCONV
514    krb5_c_random_make_octets
515    (mit_krb5_context context, mit_krb5_data *data);
516
517/*
518* Collect entropy from the OS if possible. strong requests that as strong
519* of a source of entropy  as available be used.  Setting strong may
520* increase the probability of blocking and should not  be used for normal
521* applications.  Good uses include seeding the PRNG for kadmind
522* and realm setup.
523* If successful is non-null, then successful is set to 1 if the OS provided
524* entropy else zero.
525*/
526mit_krb5_error_code KRB5_CALLCONV
527krb5_c_random_os_entropy
528(mit_krb5_context context, int strong, int *success);
529
530/*deprecated*/ mit_krb5_error_code KRB5_CALLCONV
531    krb5_c_random_seed
532    (mit_krb5_context context, mit_krb5_data *data);
533
534mit_krb5_error_code KRB5_CALLCONV
535    krb5_c_string_to_key
536    (mit_krb5_context context, mit_krb5_enctype enctype,
537		    const mit_krb5_data *string, const mit_krb5_data *salt,
538		    mit_krb5_keyblock *key);
539mit_krb5_error_code KRB5_CALLCONV
540krb5_c_string_to_key_with_params(mit_krb5_context context,
541				 mit_krb5_enctype enctype,
542				 const mit_krb5_data *string,
543				 const mit_krb5_data *salt,
544				 const mit_krb5_data *params,
545				 mit_krb5_keyblock *key);
546
547mit_krb5_error_code KRB5_CALLCONV
548    krb5_c_enctype_compare
549    (mit_krb5_context context, mit_krb5_enctype e1, mit_krb5_enctype e2,
550		    mit_krb5_boolean *similar);
551
552mit_krb5_error_code KRB5_CALLCONV
553    krb5_c_make_checksum
554    (mit_krb5_context context, mit_krb5_cksumtype cksumtype,
555		    const mit_krb5_keyblock *key, mit_krb5_keyusage usage,
556		    const mit_krb5_data *input, mit_krb5_checksum *cksum);
557
558mit_krb5_error_code KRB5_CALLCONV
559    krb5_c_verify_checksum
560    (mit_krb5_context context,
561		    const mit_krb5_keyblock *key, mit_krb5_keyusage usage,
562		    const mit_krb5_data *data,
563		    const mit_krb5_checksum *cksum,
564		    mit_krb5_boolean *valid);
565
566mit_krb5_error_code KRB5_CALLCONV
567    krb5_c_checksum_length
568    (mit_krb5_context context, mit_krb5_cksumtype cksumtype,
569		    size_t *length);
570
571mit_krb5_error_code KRB5_CALLCONV
572    krb5_c_keyed_checksum_types
573    (mit_krb5_context context, mit_krb5_enctype enctype,
574		    unsigned int *count, mit_krb5_cksumtype **cksumtypes);
575
576#define MIT_KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS		1
577#define MIT_KRB5_KEYUSAGE_KDC_REP_TICKET		2
578#define MIT_KRB5_KEYUSAGE_AS_REP_ENCPART		3
579#define MIT_KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY	4
580#define MIT_KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY		5
581#define MIT_KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM	6
582#define MIT_KRB5_KEYUSAGE_TGS_REQ_AUTH		7
583#define MIT_KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY	8
584#define MIT_KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY	9
585#define MIT_KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM		10
586#define MIT_KRB5_KEYUSAGE_AP_REQ_AUTH		11
587#define MIT_KRB5_KEYUSAGE_AP_REP_ENCPART		12
588#define MIT_KRB5_KEYUSAGE_KRB_PRIV_ENCPART		13
589#define MIT_KRB5_KEYUSAGE_KRB_CRED_ENCPART		14
590#define MIT_KRB5_KEYUSAGE_KRB_SAFE_CKSUM		15
591#define MIT_KRB5_KEYUSAGE_APP_DATA_ENCRYPT		16
592#define MIT_KRB5_KEYUSAGE_APP_DATA_CKSUM		17
593#define MIT_KRB5_KEYUSAGE_KRB_ERROR_CKSUM		18
594#define MIT_KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM	19
595#define MIT_KRB5_KEYUSAGE_AD_MTE			20
596#define MIT_KRB5_KEYUSAGE_AD_ITE			21
597
598/* XXX need to register these */
599
600#define MIT_KRB5_KEYUSAGE_GSS_TOK_MIC		22
601#define MIT_KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG	23
602#define MIT_KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV		24
603
604/* Defined in hardware preauth draft */
605
606#define MIT_KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM	25
607#define MIT_KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID	26
608#define MIT_KRB5_KEYUSAGE_PA_SAM_RESPONSE		27
609
610/* Defined in KDC referrals draft */
611#define MIT_KRB5_KEYUSAGE_PA_REFERRAL		26 /* XXX note conflict with above */
612
613mit_krb5_boolean KRB5_CALLCONV krb5_c_valid_enctype
614	(mit_krb5_enctype ktype);
615mit_krb5_boolean KRB5_CALLCONV krb5_c_valid_cksumtype
616	(mit_krb5_cksumtype ctype);
617mit_krb5_boolean KRB5_CALLCONV krb5_c_is_coll_proof_cksum
618	(mit_krb5_cksumtype ctype);
619mit_krb5_boolean KRB5_CALLCONV krb5_c_is_keyed_cksum
620	(mit_krb5_cksumtype ctype);
621
622#ifdef KRB5_OLD_CRYPTO
623/*
624 * old cryptosystem routine prototypes.  These are now layered
625 * on top of the functions above.
626 */
627mit_krb5_error_code KRB5_CALLCONV krb5_encrypt
628	(mit_krb5_context context,
629		mit_krb5_const_pointer inptr,
630		mit_krb5_pointer outptr,
631		size_t size,
632		mit_krb5_encrypt_block * eblock,
633		mit_krb5_pointer ivec);
634mit_krb5_error_code KRB5_CALLCONV krb5_decrypt
635	(mit_krb5_context context,
636		mit_krb5_const_pointer inptr,
637		mit_krb5_pointer outptr,
638		size_t size,
639		mit_krb5_encrypt_block * eblock,
640		mit_krb5_pointer ivec);
641mit_krb5_error_code KRB5_CALLCONV krb5_process_key
642	(mit_krb5_context context,
643		mit_krb5_encrypt_block * eblock,
644		const mit_krb5_keyblock * key);
645mit_krb5_error_code KRB5_CALLCONV krb5_finish_key
646	(mit_krb5_context context,
647		mit_krb5_encrypt_block * eblock);
648mit_krb5_error_code KRB5_CALLCONV krb5_string_to_key
649	(mit_krb5_context context,
650		const mit_krb5_encrypt_block * eblock,
651		mit_krb5_keyblock * keyblock,
652		const mit_krb5_data * data,
653		const mit_krb5_data * salt);
654mit_krb5_error_code KRB5_CALLCONV krb5_init_random_key
655	(mit_krb5_context context,
656		const mit_krb5_encrypt_block * eblock,
657		const mit_krb5_keyblock * keyblock,
658		mit_krb5_pointer * ptr);
659mit_krb5_error_code KRB5_CALLCONV krb5_finish_random_key
660	(mit_krb5_context context,
661		const mit_krb5_encrypt_block * eblock,
662		mit_krb5_pointer * ptr);
663mit_krb5_error_code KRB5_CALLCONV krb5_random_key
664	(mit_krb5_context context,
665		const mit_krb5_encrypt_block * eblock,
666		mit_krb5_pointer ptr,
667		mit_krb5_keyblock ** keyblock);
668mit_krb5_enctype KRB5_CALLCONV krb5_eblock_enctype
669	(mit_krb5_context context,
670		const mit_krb5_encrypt_block * eblock);
671mit_krb5_error_code KRB5_CALLCONV krb5_use_enctype
672	(mit_krb5_context context,
673		mit_krb5_encrypt_block * eblock,
674		mit_krb5_enctype enctype);
675size_t KRB5_CALLCONV krb5_encrypt_size
676	(size_t length,
677		mit_krb5_enctype crypto);
678size_t KRB5_CALLCONV mit_krb5_checksum_size
679	(mit_krb5_context context,
680		mit_krb5_cksumtype ctype);
681mit_krb5_error_code KRB5_CALLCONV krb5_calculate_checksum
682	(mit_krb5_context context,
683		mit_krb5_cksumtype ctype,
684		mit_krb5_const_pointer in, size_t in_length,
685		mit_krb5_const_pointer seed, size_t seed_length,
686		mit_krb5_checksum * outcksum);
687mit_krb5_error_code KRB5_CALLCONV krb5_verify_checksum
688	(mit_krb5_context context,
689		mit_krb5_cksumtype ctype,
690		const mit_krb5_checksum * cksum,
691		mit_krb5_const_pointer in, size_t in_length,
692		mit_krb5_const_pointer seed, size_t seed_length);
693
694#endif /* KRB5_OLD_CRYPTO */
695
696/*
697 * end "encryption.h"
698 */
699
700/*
701 * begin "fieldbits.h"
702 */
703
704/* kdc_options for kdc_request */
705/* options is 32 bits; each host is responsible to put the 4 bytes
706   representing these bits into net order before transmission */
707/* #define	KDC_OPT_RESERVED	0x80000000 */
708#define	MIT_KDC_OPT_FORWARDABLE		0x40000000
709#define	MIT_KDC_OPT_FORWARDED		0x20000000
710#define	MIT_KDC_OPT_PROXIABLE		0x10000000
711#define	MIT_KDC_OPT_PROXY			0x08000000
712#define	MIT_KDC_OPT_ALLOW_POSTDATE		0x04000000
713#define	MIT_KDC_OPT_POSTDATED		0x02000000
714/* #define	KDC_OPT_UNUSED		0x01000000 */
715#define	MIT_KDC_OPT_RENEWABLE		0x00800000
716/* #define	KDC_OPT_UNUSED		0x00400000 */
717/* #define	KDC_OPT_RESERVED	0x00200000 */
718/* #define	KDC_OPT_RESERVED	0x00100000 */
719/* #define	KDC_OPT_RESERVED	0x00080000 */
720/* #define	KDC_OPT_RESERVED	0x00040000 */
721#define	MIT_KDC_OPT_REQUEST_ANONYMOUS	0x00020000
722#define	MIT_KDC_OPT_CANONICALIZE		0x00010000
723/* #define	KDC_OPT_RESERVED	0x00008000 */
724/* #define	KDC_OPT_RESERVED	0x00004000 */
725/* #define	KDC_OPT_RESERVED	0x00002000 */
726/* #define	KDC_OPT_RESERVED	0x00001000 */
727/* #define	KDC_OPT_RESERVED	0x00000800 */
728/* #define	KDC_OPT_RESERVED	0x00000400 */
729/* #define	KDC_OPT_RESERVED	0x00000200 */
730/* #define	KDC_OPT_RESERVED	0x00000100 */
731/* #define	KDC_OPT_RESERVED	0x00000080 */
732/* #define	KDC_OPT_RESERVED	0x00000040 */
733#define	MIT_KDC_OPT_DISABLE_TRANSITED_CHECK	0x00000020
734#define	MIT_KDC_OPT_RENEWABLE_OK		0x00000010
735#define	MIT_KDC_OPT_ENC_TKT_IN_SKEY		0x00000008
736/* #define	KDC_OPT_UNUSED		0x00000004 */
737#define	MIT_KDC_OPT_RENEW			0x00000002
738#define	MIT_KDC_OPT_VALIDATE		0x00000001
739
740/*
741 * Mask of ticket flags in the TGT which should be converted into KDC
742 * options when using the TGT to get derivitive tickets.
743 *
744 *  New mask = KDC_OPT_FORWARDABLE | KDC_OPT_PROXIABLE |
745 *	       KDC_OPT_ALLOW_POSTDATE | KDC_OPT_RENEWABLE
746 */
747#define MIT_KDC_TKT_COMMON_MASK		0x54800000
748
749/* definitions for ap_options fields */
750/* ap_options are 32 bits; each host is responsible to put the 4 bytes
751   representing these bits into net order before transmission */
752#define	MIT_AP_OPTS_RESERVED		0x80000000
753#define	MIT_AP_OPTS_USE_SESSION_KEY		0x40000000
754#define	MIT_AP_OPTS_MUTUAL_REQUIRED		0x20000000
755/* #define	AP_OPTS_RESERVED	0x10000000 */
756/* #define	AP_OPTS_RESERVED	0x08000000 */
757/* #define	AP_OPTS_RESERVED	0x04000000 */
758/* #define	AP_OPTS_RESERVED	0x02000000 */
759/* #define	AP_OPTS_RESERVED	0x01000000 */
760/* #define	AP_OPTS_RESERVED	0x00800000 */
761/* #define	AP_OPTS_RESERVED	0x00400000 */
762/* #define	AP_OPTS_RESERVED	0x00200000 */
763/* #define	AP_OPTS_RESERVED	0x00100000 */
764/* #define	AP_OPTS_RESERVED	0x00080000 */
765/* #define	AP_OPTS_RESERVED	0x00040000 */
766/* #define	AP_OPTS_RESERVED	0x00020000 */
767/* #define	AP_OPTS_RESERVED	0x00010000 */
768/* #define	AP_OPTS_RESERVED	0x00008000 */
769/* #define	AP_OPTS_RESERVED	0x00004000 */
770/* #define	AP_OPTS_RESERVED	0x00002000 */
771/* #define	AP_OPTS_RESERVED	0x00001000 */
772/* #define	AP_OPTS_RESERVED	0x00000800 */
773/* #define	AP_OPTS_RESERVED	0x00000400 */
774/* #define	AP_OPTS_RESERVED	0x00000200 */
775/* #define	AP_OPTS_RESERVED	0x00000100 */
776/* #define	AP_OPTS_RESERVED	0x00000080 */
777/* #define	AP_OPTS_RESERVED	0x00000040 */
778/* #define	AP_OPTS_RESERVED	0x00000020 */
779/* #define	AP_OPTS_RESERVED	0x00000010 */
780/* #define	AP_OPTS_RESERVED	0x00000008 */
781/* #define	AP_OPTS_RESERVED	0x00000004 */
782/* #define	AP_OPTS_RESERVED	0x00000002 */
783#define MIT_AP_OPTS_USE_SUBKEY	0x00000001
784
785#define MIT_AP_OPTS_WIRE_MASK	0xfffffff0
786
787/* definitions for ad_type fields. */
788#define	MIT_AD_TYPE_RESERVED	0x8000
789#define	MIT_AD_TYPE_EXTERNAL	0x4000
790#define	MIT_AD_TYPE_REGISTERED	0x2000
791
792#define AD_TYPE_FIELD_TYPE_MASK	0x1fff
793
794/* Ticket flags */
795/* flags are 32 bits; each host is responsible to put the 4 bytes
796   representing these bits into net order before transmission */
797/* #define	TKT_FLG_RESERVED	0x80000000 */
798#define	MIT_TKT_FLG_FORWARDABLE		0x40000000
799#define	MIT_TKT_FLG_FORWARDED		0x20000000
800#define	MIT_TKT_FLG_PROXIABLE		0x10000000
801#define	MIT_TKT_FLG_PROXY			0x08000000
802#define	MIT_TKT_FLG_MAY_POSTDATE		0x04000000
803#define	MIT_TKT_FLG_POSTDATED		0x02000000
804#define	MIT_TKT_FLG_INVALID			0x01000000
805#define	MIT_TKT_FLG_RENEWABLE		0x00800000
806#define	MIT_TKT_FLG_INITIAL			0x00400000
807#define	MIT_TKT_FLG_PRE_AUTH		0x00200000
808#define	MIT_TKT_FLG_HW_AUTH			0x00100000
809#define	MIT_TKT_FLG_TRANSIT_POLICY_CHECKED	0x00080000
810#define	MIT_TKT_FLG_OK_AS_DELEGATE		0x00040000
811#define	MIT_TKT_FLG_ANONYMOUS		0x00020000
812/* #define	TKT_FLG_RESERVED	0x00010000 */
813/* #define	TKT_FLG_RESERVED	0x00008000 */
814/* #define	TKT_FLG_RESERVED	0x00004000 */
815/* #define	TKT_FLG_RESERVED	0x00002000 */
816/* #define	TKT_FLG_RESERVED	0x00001000 */
817/* #define	TKT_FLG_RESERVED	0x00000800 */
818/* #define	TKT_FLG_RESERVED	0x00000400 */
819/* #define	TKT_FLG_RESERVED	0x00000200 */
820/* #define	TKT_FLG_RESERVED	0x00000100 */
821/* #define	TKT_FLG_RESERVED	0x00000080 */
822/* #define	TKT_FLG_RESERVED	0x00000040 */
823/* #define	TKT_FLG_RESERVED	0x00000020 */
824/* #define	TKT_FLG_RESERVED	0x00000010 */
825/* #define	TKT_FLG_RESERVED	0x00000008 */
826/* #define	TKT_FLG_RESERVED	0x00000004 */
827/* #define	TKT_FLG_RESERVED	0x00000002 */
828/* #define	TKT_FLG_RESERVED	0x00000001 */
829
830/* definitions for lr_type fields. */
831#define	MIT_LR_TYPE_THIS_SERVER_ONLY	0x8000
832
833#define MIT_LR_TYPE_INTERPRETATION_MASK	0x7fff
834
835/* definitions for ad_type fields. */
836#define	MIT_AD_TYPE_EXTERNAL	0x4000
837#define	MIT_AD_TYPE_REGISTERED	0x2000
838
839#define MIT_AD_TYPE_FIELD_TYPE_MASK	0x1fff
840#define MIT_AD_TYPE_INTERNAL_MASK	0x3fff
841
842/* definitions for msec direction bit for KRB_SAFE, KRB_PRIV */
843#define	MIT_MSEC_DIRBIT		0x8000
844#define	MIT_MSEC_VAL_MASK		0x7fff
845
846/*
847 * end "fieldbits.h"
848 */
849
850/*
851 * begin "proto.h"
852 */
853
854/* Protocol version number */
855#define	MIT_KRB5_PVNO	5
856
857/* Message types */
858
859#define	MIT_KRB5_AS_REQ	((mit_krb5_msgtype)10) /* Req for initial authentication */
860#define	MIT_KRB5_AS_REP	((mit_krb5_msgtype)11) /* Response to KRB_AS_REQ request */
861#define	MIT_KRB5_TGS_REQ	((mit_krb5_msgtype)12) /* TGS request to server */
862#define	MIT_KRB5_TGS_REP	((mit_krb5_msgtype)13) /* Response to KRB_TGS_REQ req */
863#define	MIT_KRB5_AP_REQ	((mit_krb5_msgtype)14) /* application request to server */
864#define	MIT_KRB5_AP_REP	((mit_krb5_msgtype)15) /* Response to KRB_AP_REQ_MUTUAL */
865#define	MIT_KRB5_SAFE	((mit_krb5_msgtype)20) /* Safe application message */
866#define	MIT_KRB5_PRIV	((mit_krb5_msgtype)21) /* Private application message */
867#define	MIT_KRB5_CRED	((mit_krb5_msgtype)22) /* Credential forwarding message */
868#define	MIT_KRB5_ERROR	((mit_krb5_msgtype)30) /* Error response */
869
870/* LastReq types */
871#define MIT_KRB5_LRQ_NONE			0
872#define MIT_KRB5_LRQ_ALL_LAST_TGT		1
873#define MIT_KRB5_LRQ_ONE_LAST_TGT		(-1)
874#define MIT_KRB5_LRQ_ALL_LAST_INITIAL	2
875#define MIT_KRB5_LRQ_ONE_LAST_INITIAL	(-2)
876#define MIT_KRB5_LRQ_ALL_LAST_TGT_ISSUED	3
877#define MIT_KRB5_LRQ_ONE_LAST_TGT_ISSUED	(-3)
878#define MIT_KRB5_LRQ_ALL_LAST_RENEWAL	4
879#define MIT_KRB5_LRQ_ONE_LAST_RENEWAL	(-4)
880#define MIT_KRB5_LRQ_ALL_LAST_REQ		5
881#define MIT_KRB5_LRQ_ONE_LAST_REQ		(-5)
882#define MIT_KRB5_LRQ_ALL_PW_EXPTIME		6
883#define MIT_KRB5_LRQ_ONE_PW_EXPTIME		(-6)
884
885/* PADATA types */
886#define MIT_KRB5_PADATA_NONE		0
887#define	MIT_KRB5_PADATA_AP_REQ		1
888#define	MIT_KRB5_PADATA_TGS_REQ		KRB5_PADATA_AP_REQ
889#define MIT_KRB5_PADATA_ENC_TIMESTAMP	2
890#define	MIT_KRB5_PADATA_PW_SALT		3
891#if 0				/* Not used */
892#define MIT_KRB5_PADATA_ENC_ENCKEY		4  /* Key encrypted within itself */
893#endif
894#define MIT_KRB5_PADATA_ENC_UNIX_TIME	5  /* timestamp encrypted in key */
895#define MIT_KRB5_PADATA_ENC_SANDIA_SECURID	6  /* SecurId passcode */
896#define MIT_KRB5_PADATA_SESAME		7  /* Sesame project */
897#define MIT_KRB5_PADATA_OSF_DCE		8  /* OSF DCE */
898#define MIT_KRB5_CYBERSAFE_SECUREID		9  /* Cybersafe */
899#define	MIT_KRB5_PADATA_AFS3_SALT		10 /* Cygnus */
900#define MIT_KRB5_PADATA_ETYPE_INFO		11 /* Etype info for preauth */
901#define MIT_KRB5_PADATA_SAM_CHALLENGE	12 /* draft challenge system */
902#define MIT_KRB5_PADATA_SAM_RESPONSE	13 /* draft challenge system response */
903#define MIT_KRB5_PADATA_PK_AS_REQ_OLD	14 /* PKINIT */
904#define MIT_KRB5_PADATA_PK_AS_REP_OLD	15 /* PKINIT */
905#define MIT_KRB5_PADATA_PK_AS_REQ		16 /* PKINIT */
906#define MIT_KRB5_PADATA_PK_AS_REP		17 /* PKINIT */
907#define MIT_KRB5_PADATA_ETYPE_INFO2		19
908#define MIT_KRB5_PADATA_USE_SPECIFIED_KVNO	20
909#define MIT_KRB5_PADATA_SAM_REDIRECT	21
910#define MIT_KRB5_PADATA_GET_FROM_TYPED_DATA	22
911#define MIT_KRB5_PADATA_REFERRAL		25 /* draft referral system */
912#define MIT_KRB5_PADATA_SAM_CHALLENGE_2	30 /* draft challenge system, updated */
913#define MIT_KRB5_PADATA_SAM_RESPONSE_2	31 /* draft challenge system, updated */
914#define MIT_KRB5_PADATA_PK_AS_09_BINDING	132
915
916#define	MIT_KRB5_SAM_USE_SAD_AS_KEY		0x80000000
917#define	MIT_KRB5_SAM_SEND_ENCRYPTED_SAD	0x40000000
918#define	MIT_KRB5_SAM_MUST_PK_ENCRYPT_SAD	0x20000000 /* currently must be zero */
919
920/* Reserved for SPX pre-authentication. */
921#define MIT_KRB5_PADATA_DASS		16
922
923/* Transited encoding types */
924#define	MIT_KRB5_DOMAIN_X500_COMPRESS	1
925
926/* alternate authentication types */
927#define	MIT_KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE	64
928
929/* authorization data types */
930#define MIT_KRB5_AUTHDATA_IF_RELEVANT   1
931#define MIT_KRB5_AUTHDATA_KDC_ISSUED    4
932#define MIT_KRB5_AUTHDATA_AND_OR	    5
933#define MIT_KRB5_AUTHDATA_MANDATORY_FOR_KDC	8
934#define MIT_KRB5_AUTHDATA_INITIAL_VERIFIED_CAS	9
935#define	MIT_KRB5_AUTHDATA_OSF_DCE	64
936#define MIT_KRB5_AUTHDATA_SESAME	65
937
938/* password change constants */
939
940#define MIT_KRB5_KPASSWD_SUCCESS		0
941#define MIT_KRB5_KPASSWD_MALFORMED		1
942#define MIT_KRB5_KPASSWD_HARDERROR		2
943#define MIT_KRB5_KPASSWD_AUTHERROR		3
944#define MIT_KRB5_KPASSWD_SOFTERROR		4
945/* These are Microsoft's extensions in RFC 3244, and it looks like
946   they'll become standardized, possibly with other additions.  */
947#define MIT_KRB5_KPASSWD_ACCESSDENIED	5	/* unused */
948#define MIT_KRB5_KPASSWD_BAD_VERSION	6
949#define MIT_KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7	/* unused */
950
951/*
952 * end "proto.h"
953 */
954
955/* Time set */
956typedef struct _mit_krb5_ticket_times {
957    mit_krb5_timestamp authtime; /* XXX ? should ktime in KDC_REP == authtime
958				in ticket? otherwise client can't get this */
959    mit_krb5_timestamp starttime;		/* optional in ticket, if not present,
960					   use authtime */
961    mit_krb5_timestamp endtime;
962    mit_krb5_timestamp renew_till;
963} mit_krb5_ticket_times;
964
965/* structure for auth data */
966typedef struct _mit_krb5_authdata {
967    mit_krb5_magic magic;
968    mit_krb5_authdatatype ad_type;
969    unsigned int length;
970    mit_krb5_octet *contents;
971} mit_krb5_authdata;
972
973/* structure for transited encoding */
974typedef struct _mit_krb5_transited {
975    mit_krb5_magic magic;
976    mit_krb5_octet tr_type;
977    mit_krb5_data tr_contents;
978} mit_krb5_transited;
979
980typedef struct _krb5_enc_tkt_part {
981    mit_krb5_magic magic;
982    /* to-be-encrypted portion */
983    mit_krb5_flags flags;			/* flags */
984    mit_krb5_keyblock *session;		/* session key: includes enctype */
985    mit_krb5_principal client;		/* client name/realm */
986    mit_krb5_transited transited;		/* list of transited realms */
987    mit_krb5_ticket_times times;		/* auth, start, end, renew_till */
988    mit_krb5_address **caddrs;	/* array of ptrs to addresses */
989    mit_krb5_authdata **authorization_data; /* auth data */
990} krb5_enc_tkt_part;
991
992typedef struct _mit_krb5_ticket {
993    mit_krb5_magic magic;
994    /* cleartext portion */
995    mit_krb5_principal server;		/* server name/realm */
996    mit_krb5_enc_data enc_part;		/* encryption type, kvno, encrypted
997					   encoding */
998    krb5_enc_tkt_part *enc_part2;	/* ptr to decrypted version, if
999					   available */
1000} mit_krb5_ticket;
1001
1002/* the unencrypted version */
1003typedef struct _mit_krb5_authenticator {
1004    mit_krb5_magic magic;
1005    mit_krb5_principal client;		/* client name/realm */
1006    mit_krb5_checksum *checksum;	/* checksum, includes type, optional */
1007    mit_krb5_int32 cusec;			/* client usec portion */
1008    mit_krb5_timestamp ctime;		/* client sec portion */
1009    mit_krb5_keyblock *subkey;		/* true session key, optional */
1010    mit_krb5_ui_4 seq_number;		/* sequence #, optional */
1011    mit_krb5_authdata **authorization_data; /* New add by Ari, auth data */
1012} mit_krb5_authenticator;
1013
1014typedef struct _mit_krb5_tkt_authent {
1015    mit_krb5_magic magic;
1016    mit_krb5_ticket *ticket;
1017    mit_krb5_authenticator *authenticator;
1018    mit_krb5_flags ap_options;
1019} mit_krb5_tkt_authent;
1020
1021/* credentials:	 Ticket, session key, etc. */
1022typedef struct _mit_krb5_creds {
1023    mit_krb5_magic magic;
1024    mit_krb5_principal client;		/* client's principal identifier */
1025    mit_krb5_principal server;		/* server's principal identifier */
1026    mit_krb5_keyblock keyblock;		/* session encryption key info */
1027    mit_krb5_ticket_times times;		/* lifetime info */
1028    mit_krb5_boolean is_skey;		/* true if ticket is encrypted in
1029					   another ticket's skey */
1030    mit_krb5_flags ticket_flags;		/* flags in ticket */
1031    mit_krb5_address **addresses;	/* addrs in ticket */
1032    mit_krb5_data ticket;			/* ticket string itself */
1033    mit_krb5_data second_ticket;		/* second ticket, if related to
1034					   ticket (via DUPLICATE-SKEY or
1035					   ENC-TKT-IN-SKEY) */
1036    mit_krb5_authdata **authdata;	/* authorization data */
1037} mit_krb5_creds;
1038
1039/* Last request fields */
1040typedef struct _mit_krb5_last_req_entry {
1041    mit_krb5_magic magic;
1042    mit_krb5_int32 lr_type;
1043    mit_krb5_timestamp value;
1044} mit_krb5_last_req_entry;
1045
1046/* pre-authentication data */
1047typedef struct _mit_krb5_pa_data {
1048    mit_krb5_magic magic;
1049    mit_krb5_preauthtype  pa_type;
1050    unsigned int length;
1051    mit_krb5_octet *contents;
1052} mit_krb5_pa_data;
1053
1054typedef struct _mit_krb5_kdc_req {
1055    mit_krb5_magic magic;
1056    mit_krb5_msgtype msg_type;		/* AS_REQ or TGS_REQ? */
1057    mit_krb5_pa_data **padata;	/* e.g. encoded AP_REQ */
1058    /* real body */
1059    mit_krb5_flags kdc_options;		/* requested options */
1060    mit_krb5_principal client;		/* includes realm; optional */
1061    mit_krb5_principal server;		/* includes realm (only used if no
1062					   client) */
1063    mit_krb5_timestamp from;		/* requested starttime */
1064    mit_krb5_timestamp till;		/* requested endtime */
1065    mit_krb5_timestamp rtime;		/* (optional) requested renew_till */
1066    mit_krb5_int32 nonce;			/* nonce to match request/response */
1067    int nktypes;			/* # of ktypes, must be positive */
1068    mit_krb5_enctype *ktype;		/* requested enctype(s) */
1069    mit_krb5_address **addresses;	/* requested addresses, optional */
1070    mit_krb5_enc_data authorization_data;	/* encrypted auth data; OPTIONAL */
1071    mit_krb5_authdata **unenc_authdata; /* unencrypted auth data,
1072					   if available */
1073    mit_krb5_ticket **second_ticket;/* second ticket array; OPTIONAL */
1074} mit_krb5_kdc_req;
1075
1076typedef struct _mit_krb5_enc_kdc_rep_part {
1077    mit_krb5_magic magic;
1078    /* encrypted part: */
1079    mit_krb5_msgtype msg_type;		/* krb5 message type */
1080    mit_krb5_keyblock *session;		/* session key */
1081    mit_krb5_last_req_entry **last_req; /* array of ptrs to entries */
1082    mit_krb5_int32 nonce;			/* nonce from request */
1083    mit_krb5_timestamp key_exp;		/* expiration date */
1084    mit_krb5_flags flags;			/* ticket flags */
1085    mit_krb5_ticket_times times;		/* lifetime info */
1086    mit_krb5_principal server;		/* server's principal identifier */
1087    mit_krb5_address **caddrs;	/* array of ptrs to addresses,
1088					   optional */
1089} mit_krb5_enc_kdc_rep_part;
1090
1091typedef struct _mit_krb5_kdc_rep {
1092    mit_krb5_magic magic;
1093    /* cleartext part: */
1094    mit_krb5_msgtype msg_type;		/* AS_REP or KDC_REP? */
1095    mit_krb5_pa_data **padata;	/* preauthentication data from KDC */
1096    mit_krb5_principal client;		/* client's principal identifier */
1097    mit_krb5_ticket *ticket;		/* ticket */
1098    mit_krb5_enc_data enc_part;		/* encryption type, kvno, encrypted
1099					   encoding */
1100    mit_krb5_enc_kdc_rep_part *enc_part2;/* unencrypted version, if available */
1101} mit_krb5_kdc_rep;
1102
1103/* error message structure */
1104typedef struct _mit_krb5_error {
1105    mit_krb5_magic magic;
1106    /* some of these may be meaningless in certain contexts */
1107    mit_krb5_timestamp ctime;		/* client sec portion; optional */
1108    mit_krb5_int32 cusec;			/* client usec portion; optional */
1109    mit_krb5_int32 susec;			/* server usec portion */
1110    mit_krb5_timestamp stime;		/* server sec portion */
1111    mit_krb5_ui_4 error;			/* error code (protocol error #'s) */
1112    mit_krb5_principal client;		/* client's principal identifier;
1113					   optional */
1114    mit_krb5_principal server;		/* server's principal identifier */
1115    mit_krb5_data text;			/* descriptive text */
1116    mit_krb5_data e_data;			/* additional error-describing data */
1117} mit_krb5_error;
1118
1119typedef struct _mit_krb5_ap_req {
1120    mit_krb5_magic magic;
1121    mit_krb5_flags ap_options;		/* requested options */
1122    mit_krb5_ticket *ticket;		/* ticket */
1123    mit_krb5_enc_data authenticator;	/* authenticator (already encrypted) */
1124} mit_krb5_ap_req;
1125
1126typedef struct _mit_krb5_ap_rep {
1127    mit_krb5_magic magic;
1128    mit_krb5_enc_data enc_part;
1129} mit_krb5_ap_rep;
1130
1131typedef struct _mit_krb5_ap_rep_enc_part {
1132    mit_krb5_magic magic;
1133    mit_krb5_timestamp ctime;		/* client time, seconds portion */
1134    mit_krb5_int32 cusec;			/* client time, microseconds portion */
1135    mit_krb5_keyblock *subkey;		/* true session key, optional */
1136    mit_krb5_ui_4 seq_number;		/* sequence #, optional */
1137} mit_krb5_ap_rep_enc_part;
1138
1139typedef struct _mit_krb5_response {
1140    mit_krb5_magic magic;
1141    mit_krb5_octet message_type;
1142    mit_krb5_data response;
1143    mit_krb5_int32 expected_nonce;	/* The expected nonce for KDC_REP messages */
1144    mit_krb5_timestamp request_time;   /* When we made the request */
1145} mit_krb5_response;
1146
1147typedef struct _mit_krb5_cred_info {
1148    mit_krb5_magic magic;
1149    mit_krb5_keyblock *session;		/* session key used to encrypt */
1150					/* ticket */
1151    mit_krb5_principal client;		/* client name/realm, optional */
1152    mit_krb5_principal server;		/* server name/realm, optional */
1153    mit_krb5_flags flags;			/* ticket flags, optional */
1154    mit_krb5_ticket_times times;		/* auth, start, end, renew_till, */
1155					/* optional */
1156    mit_krb5_address **caddrs;	/* array of ptrs to addresses */
1157} mit_krb5_cred_info;
1158
1159typedef struct _mit_krb5_cred_enc_part {
1160    mit_krb5_magic magic;
1161    mit_krb5_int32 nonce;			/* nonce, optional */
1162    mit_krb5_timestamp timestamp;		/* client time */
1163    mit_krb5_int32 usec;			/* microsecond portion of time */
1164    mit_krb5_address *s_address;	/* sender address, optional */
1165    mit_krb5_address *r_address;	/* recipient address, optional */
1166    mit_krb5_cred_info **ticket_info;
1167} mit_krb5_cred_enc_part;
1168
1169typedef struct _mit_krb5_cred {
1170    mit_krb5_magic magic;
1171    mit_krb5_ticket **tickets;	/* tickets */
1172    mit_krb5_enc_data enc_part;		/* encrypted part */
1173    mit_krb5_cred_enc_part *enc_part2;	/* unencrypted version, if available*/
1174} mit_krb5_cred;
1175
1176/* Sandia password generation structures */
1177typedef struct _mit_passwd_phrase_element {
1178    mit_krb5_magic magic;
1179    mit_krb5_data *passwd;
1180    mit_krb5_data *phrase;
1181} mit_passwd_phrase_element;
1182
1183typedef struct _mit_krb5_pwd_data {
1184    mit_krb5_magic magic;
1185    int sequence_count;
1186    mit_passwd_phrase_element **element;
1187} mit_krb5_pwd_data;
1188
1189/* these need to be here so the typedefs are available for the prototypes */
1190
1191/*
1192 * begin "safepriv.h"
1193 */
1194
1195#define MIT_KRB5_AUTH_CONTEXT_DO_TIME	0x00000001
1196#define MIT_KRB5_AUTH_CONTEXT_RET_TIME	0x00000002
1197#define MIT_KRB5_AUTH_CONTEXT_DO_SEQUENCE	0x00000004
1198#define MIT_KRB5_AUTH_CONTEXT_RET_SEQUENCE	0x00000008
1199#define MIT_KRB5_AUTH_CONTEXT_PERMIT_ALL	0x00000010
1200#define MIT_KRB5_AUTH_CONTEXT_USE_SUBKEY	0x00000020
1201
1202typedef struct mit_krb5_replay_data {
1203    mit_krb5_timestamp	timestamp;
1204    mit_krb5_int32		usec;
1205    mit_krb5_ui_4		seq;
1206} mit_krb5_replay_data;
1207
1208/* flags for krb5_auth_con_genaddrs() */
1209#define MIT_KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR		0x00000001
1210#define MIT_KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR		0x00000002
1211#define MIT_KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR	0x00000004
1212#define MIT_KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR	0x00000008
1213
1214/* type of function used as a callback to generate checksum data for
1215 * mk_req */
1216
1217typedef mit_krb5_error_code
1218(KRB5_CALLCONV * krb5_mk_req_checksum_func) (mit_krb5_context, mit_krb5_auth_context , void *,
1219			       mit_krb5_data **);
1220
1221/*
1222 * end "safepriv.h"
1223 */
1224
1225
1226/*
1227 * begin "ccache.h"
1228 */
1229
1230typedef	mit_krb5_pointer	mit_krb5_cc_cursor;	/* cursor for sequential lookup */
1231
1232struct _mit_krb5_ccache;
1233typedef struct _mit_krb5_ccache *mit_krb5_ccache;
1234struct _mit_krb5_cc_ops;
1235typedef struct _mit_krb5_cc_ops mit_krb5_cc_ops;
1236
1237/*
1238 * Cursor for iterating over all ccaches
1239 */
1240struct _mit_krb5_cccol_cursor;
1241typedef struct _mit_krb5_cccol_cursor *mit_krb5_cccol_cursor;
1242
1243/* for retrieve_cred */
1244#define	MIT_KRB5_TC_MATCH_TIMES		0x00000001
1245#define	MIT_KRB5_TC_MATCH_IS_SKEY		0x00000002
1246#define	MIT_KRB5_TC_MATCH_FLAGS		0x00000004
1247#define	MIT_KRB5_TC_MATCH_TIMES_EXACT	0x00000008
1248#define	MIT_KRB5_TC_MATCH_FLAGS_EXACT	0x00000010
1249#define	MIT_KRB5_TC_MATCH_AUTHDATA		0x00000020
1250#define	MIT_KRB5_TC_MATCH_SRV_NAMEONLY	0x00000040
1251#define	MIT_KRB5_TC_MATCH_2ND_TKT		0x00000080
1252#define	MIT_KRB5_TC_MATCH_KTYPE		0x00000100
1253#define MIT_KRB5_TC_SUPPORTED_KTYPES	0x00000200
1254
1255/* for set_flags and other functions */
1256#define MIT_KRB5_TC_OPENCLOSE		0x00000001
1257#define MIT_KRB5_TC_NOTICKET                0x00000002
1258
1259const char * KRB5_CALLCONV
1260krb5_cc_get_name (mit_krb5_context context, mit_krb5_ccache cache);
1261
1262mit_krb5_error_code KRB5_CALLCONV
1263krb5_cc_gen_new (mit_krb5_context context, mit_krb5_ccache *cache);
1264
1265mit_krb5_error_code KRB5_CALLCONV
1266krb5_cc_initialize(mit_krb5_context context, mit_krb5_ccache cache,
1267		   mit_krb5_principal principal);
1268
1269mit_krb5_error_code KRB5_CALLCONV
1270krb5_cc_destroy (mit_krb5_context context, mit_krb5_ccache cache);
1271
1272mit_krb5_error_code KRB5_CALLCONV
1273krb5_cc_close (mit_krb5_context context, mit_krb5_ccache cache);
1274
1275mit_krb5_error_code KRB5_CALLCONV
1276krb5_cc_store_cred (mit_krb5_context context, mit_krb5_ccache cache,
1277		    mit_krb5_creds *creds);
1278
1279mit_krb5_error_code KRB5_CALLCONV
1280krb5_cc_retrieve_cred (mit_krb5_context context, mit_krb5_ccache cache,
1281		       mit_krb5_flags flags, mit_krb5_creds *mcreds,
1282		       mit_krb5_creds *creds);
1283
1284mit_krb5_error_code KRB5_CALLCONV
1285krb5_cc_get_principal (mit_krb5_context context, mit_krb5_ccache cache,
1286		       mit_krb5_principal *principal);
1287
1288mit_krb5_error_code KRB5_CALLCONV
1289krb5_cc_start_seq_get (mit_krb5_context context, mit_krb5_ccache cache,
1290		       mit_krb5_cc_cursor *cursor);
1291
1292mit_krb5_error_code KRB5_CALLCONV
1293krb5_cc_next_cred (mit_krb5_context context, mit_krb5_ccache cache,
1294		   mit_krb5_cc_cursor *cursor, mit_krb5_creds *creds);
1295
1296mit_krb5_error_code KRB5_CALLCONV
1297krb5_cc_end_seq_get (mit_krb5_context context, mit_krb5_ccache cache,
1298		     mit_krb5_cc_cursor *cursor);
1299
1300mit_krb5_error_code KRB5_CALLCONV
1301krb5_cc_remove_cred (mit_krb5_context context, mit_krb5_ccache cache, mit_krb5_flags flags,
1302		     mit_krb5_creds *creds);
1303
1304mit_krb5_error_code KRB5_CALLCONV
1305krb5_cc_set_flags (mit_krb5_context context, mit_krb5_ccache cache, mit_krb5_flags flags);
1306
1307mit_krb5_error_code KRB5_CALLCONV
1308krb5_cc_get_flags (mit_krb5_context context, mit_krb5_ccache cache, mit_krb5_flags *flags);
1309
1310const char * KRB5_CALLCONV
1311krb5_cc_get_type (mit_krb5_context context, mit_krb5_ccache cache);
1312
1313mit_krb5_error_code KRB5_CALLCONV
1314krb5_cc_move (mit_krb5_context context, mit_krb5_ccache src, mit_krb5_ccache dst);
1315
1316mit_krb5_error_code KRB5_CALLCONV
1317krb5_cc_last_change_time (
1318    mit_krb5_context context,
1319    mit_krb5_ccache ccache,
1320    mit_krb5_timestamp *change_time);
1321
1322mit_krb5_error_code KRB5_CALLCONV
1323krb5_cc_lock (mit_krb5_context context, mit_krb5_ccache ccache);
1324
1325mit_krb5_error_code KRB5_CALLCONV
1326krb5_cc_unlock (mit_krb5_context context, mit_krb5_ccache ccache);
1327
1328mit_krb5_error_code KRB5_CALLCONV
1329krb5_cc_cache_match (mit_krb5_context context,
1330		     mit_krb5_principal client,
1331		     mit_krb5_ccache *id);
1332
1333mit_krb5_error_code KRB5_CALLCONV
1334krb5_cccol_cursor_new(mit_krb5_context context, mit_krb5_cccol_cursor *cursor);
1335
1336mit_krb5_error_code KRB5_CALLCONV
1337krb5_cccol_cursor_next(
1338    mit_krb5_context context,
1339    mit_krb5_cccol_cursor cursor,
1340    mit_krb5_ccache *ccache);
1341
1342mit_krb5_error_code KRB5_CALLCONV
1343krb5_cccol_cursor_free(mit_krb5_context context, mit_krb5_cccol_cursor *cursor);
1344
1345mit_krb5_error_code KRB5_CALLCONV
1346krb5_cccol_last_change_time(mit_krb5_context context, mit_krb5_timestamp *change_time);
1347
1348mit_krb5_error_code KRB5_CALLCONV
1349krb5_cccol_lock(mit_krb5_context context);
1350
1351mit_krb5_error_code KRB5_CALLCONV
1352krb5_cccol_unlock(mit_krb5_context context);
1353
1354mit_krb5_error_code KRB5_CALLCONV
1355krb5_cc_new_unique(
1356    mit_krb5_context context,
1357    const char *type,
1358    const char *hint,
1359    mit_krb5_ccache *id);
1360
1361/*
1362 * end "ccache.h"
1363 */
1364
1365/*
1366 * begin "rcache.h"
1367 */
1368
1369struct mit_krb5_rc_st;
1370typedef struct mit_krb5_rc_st *mit_krb5_rcache;
1371
1372/*
1373 * end "rcache.h"
1374 */
1375
1376/*
1377 * begin "keytab.h"
1378 */
1379
1380
1381/* XXX */
1382#define MAX_KEYTAB_NAME_LEN 1100 /* Long enough for MAXPATHLEN + some extra */
1383
1384typedef mit_krb5_pointer mit_krb5_kt_cursor;	/* XXX */
1385
1386typedef struct mit_krb5_keytab_entry_st {
1387    mit_krb5_magic magic;
1388    mit_krb5_principal principal;	/* principal of this key */
1389    mit_krb5_timestamp timestamp;	/* time entry written to keytable */
1390    mit_krb5_kvno vno;		/* key version number */
1391    mit_krb5_keyblock key;		/* the secret key */
1392} mit_krb5_keytab_entry;
1393
1394struct _krb5_kt;
1395typedef struct _krb5_kt *mit_krb5_keytab;
1396
1397const char * KRB5_CALLCONV
1398krb5_kt_get_type (mit_krb5_context, mit_krb5_keytab keytab);
1399mit_krb5_error_code KRB5_CALLCONV
1400krb5_kt_get_name(mit_krb5_context context, mit_krb5_keytab keytab, char *name,
1401		 unsigned int namelen);
1402mit_krb5_error_code KRB5_CALLCONV
1403krb5_kt_close(mit_krb5_context context, mit_krb5_keytab keytab);
1404mit_krb5_error_code KRB5_CALLCONV
1405krb5_kt_get_entry(mit_krb5_context context, mit_krb5_keytab keytab,
1406		  mit_krb5_const_principal principal, mit_krb5_kvno vno,
1407		  mit_krb5_enctype enctype, mit_krb5_keytab_entry *entry);
1408mit_krb5_error_code KRB5_CALLCONV
1409krb5_kt_start_seq_get(mit_krb5_context context, mit_krb5_keytab keytab,
1410		      mit_krb5_kt_cursor *cursor);
1411mit_krb5_error_code KRB5_CALLCONV
1412krb5_kt_next_entry(mit_krb5_context context, mit_krb5_keytab keytab,
1413		   mit_krb5_keytab_entry *entry, mit_krb5_kt_cursor *cursor);
1414mit_krb5_error_code KRB5_CALLCONV
1415krb5_kt_end_seq_get(mit_krb5_context context, mit_krb5_keytab keytab,
1416		    mit_krb5_kt_cursor *cursor);
1417
1418/*
1419 * end "keytab.h"
1420 */
1421
1422/*
1423 * begin "func-proto.h"
1424 */
1425
1426mit_krb5_error_code KRB5_CALLCONV krb5_init_context
1427	(mit_krb5_context *);
1428mit_krb5_error_code KRB5_CALLCONV krb5_init_secure_context
1429	(mit_krb5_context *);
1430void KRB5_CALLCONV krb5_free_context
1431	(mit_krb5_context);
1432mit_krb5_error_code KRB5_CALLCONV krb5_copy_context
1433	(mit_krb5_context, mit_krb5_context *);
1434
1435mit_krb5_error_code KRB5_CALLCONV
1436krb5_set_default_tgs_enctypes
1437	(mit_krb5_context,
1438		const mit_krb5_enctype *);
1439
1440mit_krb5_error_code KRB5_CALLCONV krb5_get_permitted_enctypes
1441	(mit_krb5_context, mit_krb5_enctype **);
1442
1443mit_krb5_boolean KRB5_CALLCONV krb5_is_thread_safe(void);
1444
1445/* libkrb.spec */
1446
1447mit_krb5_error_code KRB5_CALLCONV
1448krb5_server_decrypt_ticket_keytab
1449  	(mit_krb5_context context,
1450                const mit_krb5_keytab kt,
1451                mit_krb5_ticket  *ticket);
1452
1453void KRB5_CALLCONV krb5_free_tgt_creds
1454	(mit_krb5_context,
1455	 mit_krb5_creds **); /* XXX too hard to do with const */
1456
1457#define	MIT_KRB5_GC_USER_USER	1	/* want user-user ticket */
1458#define	MIT_KRB5_GC_CACHED		2	/* want cached ticket only */
1459
1460mit_krb5_error_code KRB5_CALLCONV krb5_get_credentials
1461	(mit_krb5_context,
1462		mit_krb5_flags,
1463		mit_krb5_ccache,
1464		mit_krb5_creds *,
1465		mit_krb5_creds **);
1466mit_krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate
1467	(mit_krb5_context,
1468		mit_krb5_flags,
1469		mit_krb5_ccache,
1470		mit_krb5_creds *,
1471		mit_krb5_creds **);
1472mit_krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew
1473	(mit_krb5_context,
1474		mit_krb5_flags,
1475		mit_krb5_ccache,
1476		mit_krb5_creds *,
1477		mit_krb5_creds **);
1478mit_krb5_error_code KRB5_CALLCONV krb5_mk_req
1479	(mit_krb5_context,
1480		mit_krb5_auth_context *,
1481		mit_krb5_flags,
1482		char *,
1483		char *,
1484		mit_krb5_data *,
1485		mit_krb5_ccache,
1486		mit_krb5_data * );
1487mit_krb5_error_code KRB5_CALLCONV krb5_mk_req_extended
1488	(mit_krb5_context,
1489		mit_krb5_auth_context *,
1490		mit_krb5_flags,
1491		mit_krb5_data *,
1492		mit_krb5_creds *,
1493		mit_krb5_data * );
1494mit_krb5_error_code KRB5_CALLCONV krb5_mk_rep
1495	(mit_krb5_context,
1496		mit_krb5_auth_context,
1497		mit_krb5_data *);
1498mit_krb5_error_code KRB5_CALLCONV krb5_rd_rep
1499	(mit_krb5_context,
1500		mit_krb5_auth_context,
1501		const mit_krb5_data *,
1502		mit_krb5_ap_rep_enc_part **);
1503mit_krb5_error_code KRB5_CALLCONV krb5_mk_error
1504	(mit_krb5_context,
1505		const mit_krb5_error *,
1506		mit_krb5_data * );
1507mit_krb5_error_code KRB5_CALLCONV krb5_rd_error
1508	(mit_krb5_context,
1509		const mit_krb5_data *,
1510		mit_krb5_error ** );
1511mit_krb5_error_code KRB5_CALLCONV krb5_rd_safe
1512	(mit_krb5_context,
1513		mit_krb5_auth_context,
1514		const mit_krb5_data *,
1515		mit_krb5_data *,
1516		mit_krb5_replay_data *);
1517mit_krb5_error_code KRB5_CALLCONV krb5_rd_priv
1518	(mit_krb5_context,
1519		mit_krb5_auth_context,
1520		const mit_krb5_data *,
1521		mit_krb5_data *,
1522		mit_krb5_replay_data *);
1523mit_krb5_error_code KRB5_CALLCONV krb5_parse_name
1524	(mit_krb5_context,
1525		const char *,
1526		mit_krb5_principal * );
1527#define MIT_KRB5_PRINCIPAL_PARSE_NO_REALM		0x1
1528#define MIT_KRB5_PRINCIPAL_PARSE_REQUIRE_REALM	0x2
1529#define MIT_KRB5_PRINCIPAL_PARSE_ENTERPRISE		0x4
1530mit_krb5_error_code KRB5_CALLCONV krb5_parse_name_flags
1531	(mit_krb5_context,
1532		const char *,
1533		int,
1534		mit_krb5_principal * );
1535mit_krb5_error_code KRB5_CALLCONV krb5_unparse_name
1536	(mit_krb5_context,
1537		mit_krb5_const_principal,
1538		char ** );
1539mit_krb5_error_code KRB5_CALLCONV krb5_unparse_name_ext
1540	(mit_krb5_context,
1541		mit_krb5_const_principal,
1542		char **,
1543		unsigned int *);
1544#define MIT_KRB5_PRINCIPAL_UNPARSE_SHORT		0x1
1545#define MIT_KRB5_PRINCIPAL_UNPARSE_NO_REALM		0x2
1546#define MIT_KRB5_PRINCIPAL_UNPARSE_DISPLAY		0x4
1547mit_krb5_error_code KRB5_CALLCONV krb5_unparse_name_flags
1548	(mit_krb5_context,
1549		mit_krb5_const_principal,
1550		int,
1551		char **);
1552mit_krb5_error_code KRB5_CALLCONV krb5_unparse_name_flags_ext
1553	(mit_krb5_context,
1554		mit_krb5_const_principal,
1555		int,
1556		char **,
1557		unsigned int *);
1558
1559mit_krb5_error_code KRB5_CALLCONV krb5_set_principal_realm
1560	(mit_krb5_context, mit_krb5_principal, const char *);
1561
1562mit_krb5_boolean KRB5_CALLCONV mit_krb5_address_search
1563	(mit_krb5_context,
1564		const mit_krb5_address *,
1565		mit_krb5_address * const *);
1566mit_krb5_boolean KRB5_CALLCONV mit_krb5_address_compare
1567	(mit_krb5_context,
1568		const mit_krb5_address *,
1569		const mit_krb5_address *);
1570int KRB5_CALLCONV mit_krb5_address_order
1571	(mit_krb5_context,
1572		const mit_krb5_address *,
1573		const mit_krb5_address *);
1574mit_krb5_boolean KRB5_CALLCONV krb5_realm_compare
1575	(mit_krb5_context,
1576		mit_krb5_const_principal,
1577		mit_krb5_const_principal);
1578mit_krb5_boolean KRB5_CALLCONV krb5_principal_compare
1579	(mit_krb5_context,
1580		mit_krb5_const_principal,
1581		mit_krb5_const_principal);
1582mit_krb5_error_code KRB5_CALLCONV  krb5_init_keyblock
1583		(mit_krb5_context, mit_krb5_enctype enctype,
1584		size_t length, mit_krb5_keyblock **out);
1585  		/* Initialize a new keyblock and allocate storage
1586		 * for the contents of the key, which will be freed along
1587		 * with the keyblock when krb5_free_keyblock is called.
1588		 * It is legal to pass in a length of 0, in which
1589		 * case contents are left unallocated.
1590		 */
1591mit_krb5_error_code KRB5_CALLCONV krb5_copy_keyblock
1592	(mit_krb5_context,
1593		const mit_krb5_keyblock *,
1594		mit_krb5_keyblock **);
1595mit_krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_contents
1596	(mit_krb5_context,
1597		const mit_krb5_keyblock *,
1598		mit_krb5_keyblock *);
1599mit_krb5_error_code KRB5_CALLCONV krb5_copy_creds
1600	(mit_krb5_context,
1601		const mit_krb5_creds *,
1602		mit_krb5_creds **);
1603mit_krb5_error_code KRB5_CALLCONV krb5_copy_data
1604	(mit_krb5_context,
1605		const mit_krb5_data *,
1606		mit_krb5_data **);
1607mit_krb5_error_code KRB5_CALLCONV krb5_copy_principal
1608	(mit_krb5_context,
1609		mit_krb5_const_principal,
1610		mit_krb5_principal *);
1611mit_krb5_error_code KRB5_CALLCONV krb5_copy_addresses
1612	(mit_krb5_context,
1613		mit_krb5_address * const *,
1614		mit_krb5_address ***);
1615mit_krb5_error_code KRB5_CALLCONV krb5_copy_ticket
1616	(mit_krb5_context,
1617		const mit_krb5_ticket *,
1618		mit_krb5_ticket **);
1619mit_krb5_error_code KRB5_CALLCONV krb5_copy_authdata
1620	(mit_krb5_context,
1621		mit_krb5_authdata * const *,
1622		mit_krb5_authdata ***);
1623mit_krb5_error_code KRB5_CALLCONV krb5_copy_authenticator
1624	(mit_krb5_context,
1625		const mit_krb5_authenticator *,
1626		mit_krb5_authenticator **);
1627mit_krb5_error_code KRB5_CALLCONV krb5_copy_checksum
1628	(mit_krb5_context,
1629		const mit_krb5_checksum *,
1630		mit_krb5_checksum **);
1631mit_krb5_error_code KRB5_CALLCONV krb5_get_server_rcache
1632	(mit_krb5_context,
1633		const mit_krb5_data *, mit_krb5_rcache *);
1634mit_krb5_error_code KRB5_CALLCONV_C krb5_build_principal_ext
1635	(mit_krb5_context, mit_krb5_principal *, unsigned int, const char *, ...);
1636mit_krb5_error_code KRB5_CALLCONV_C krb5_build_principal
1637	(mit_krb5_context, mit_krb5_principal *, unsigned int, const char *, ...)
1638#if __GNUC__ >= 4
1639    __attribute__ ((sentinel))
1640#endif
1641    ;
1642#if MIT_KRB5_DEPRECATED
1643KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_build_principal_va
1644	(mit_krb5_context,
1645		mit_krb5_principal, unsigned int, const char *, va_list);
1646#endif
1647
1648/* Version of krb5_build_principal_va which allocates mit_krb5_principal_data */
1649mit_krb5_error_code KRB5_CALLCONV krb5_build_principal_alloc_va
1650        (mit_krb5_context, mit_krb5_principal *, unsigned int, const char *, va_list);
1651
1652mit_krb5_error_code KRB5_CALLCONV krb5_425_conv_principal
1653	(mit_krb5_context,
1654		const char *name,
1655		const char *instance, const char *realm,
1656		mit_krb5_principal *princ);
1657
1658mit_krb5_error_code KRB5_CALLCONV krb5_524_conv_principal
1659	(mit_krb5_context context, mit_krb5_const_principal princ,
1660		char *name, char *inst, char *realm);
1661
1662struct credentials;
1663int KRB5_CALLCONV krb5_524_convert_creds
1664	(mit_krb5_context context, mit_krb5_creds *v5creds,
1665	 struct credentials *v4creds);
1666#if MIT_KRB5_DEPRECATED
1667#define krb524_convert_creds_kdc krb5_524_convert_creds
1668#define krb524_init_ets(x) (0)
1669#endif
1670
1671/* libkt.spec */
1672mit_krb5_error_code KRB5_CALLCONV krb5_kt_resolve
1673	(mit_krb5_context,
1674		const char *,
1675		mit_krb5_keytab * );
1676mit_krb5_error_code KRB5_CALLCONV krb5_kt_default_name
1677	(mit_krb5_context,
1678		char *,
1679		int );
1680mit_krb5_error_code KRB5_CALLCONV krb5_kt_default
1681	(mit_krb5_context,
1682		mit_krb5_keytab * );
1683mit_krb5_error_code KRB5_CALLCONV krb5_free_keytab_entry_contents
1684	(mit_krb5_context,
1685		mit_krb5_keytab_entry * );
1686/* remove and add are functions, so that they can return NOWRITE
1687   if not a writable keytab */
1688mit_krb5_error_code KRB5_CALLCONV krb5_kt_remove_entry
1689	(mit_krb5_context,
1690		mit_krb5_keytab,
1691		mit_krb5_keytab_entry * );
1692mit_krb5_error_code KRB5_CALLCONV krb5_kt_add_entry
1693	(mit_krb5_context,
1694		mit_krb5_keytab,
1695		mit_krb5_keytab_entry * );
1696mit_krb5_error_code KRB5_CALLCONV krb5_principal2salt
1697	(mit_krb5_context,
1698		mit_krb5_const_principal, mit_krb5_data *);
1699/* librc.spec--see rcache.h */
1700
1701/* libcc.spec */
1702mit_krb5_error_code KRB5_CALLCONV krb5_cc_resolve
1703	(mit_krb5_context,
1704		const char *,
1705		mit_krb5_ccache * );
1706const char * KRB5_CALLCONV krb5_cc_default_name
1707	(mit_krb5_context);
1708mit_krb5_error_code KRB5_CALLCONV krb5_cc_set_default_name
1709	(mit_krb5_context, const char *);
1710mit_krb5_error_code KRB5_CALLCONV krb5_cc_default
1711	(mit_krb5_context,
1712		mit_krb5_ccache *);
1713
1714mit_krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds
1715	(mit_krb5_context context,
1716			mit_krb5_ccache incc,
1717			mit_krb5_ccache outcc);
1718
1719mit_krb5_error_code KRB5_CALLCONV
1720krb5_cc_get_config(mit_krb5_context, mit_krb5_ccache,
1721		   mit_krb5_const_principal,
1722		   const char *, mit_krb5_data *);
1723
1724mit_krb5_error_code KRB5_CALLCONV
1725krb5_cc_set_config(mit_krb5_context, mit_krb5_ccache,
1726		   mit_krb5_const_principal,
1727		   const char *, mit_krb5_data *);
1728
1729mit_krb5_boolean KRB5_CALLCONV
1730krb5_is_config_principal(mit_krb5_context,
1731			 mit_krb5_const_principal);
1732
1733/* krb5_free.c */
1734void KRB5_CALLCONV krb5_free_principal
1735	(mit_krb5_context, mit_krb5_principal );
1736void KRB5_CALLCONV krb5_free_authenticator
1737	(mit_krb5_context, mit_krb5_authenticator * );
1738void KRB5_CALLCONV krb5_free_addresses
1739	(mit_krb5_context, mit_krb5_address ** );
1740void KRB5_CALLCONV krb5_free_authdata
1741	(mit_krb5_context, mit_krb5_authdata ** );
1742void KRB5_CALLCONV krb5_free_ticket
1743	(mit_krb5_context, mit_krb5_ticket * );
1744void KRB5_CALLCONV krb5_free_error
1745	(mit_krb5_context, mit_krb5_error * );
1746void KRB5_CALLCONV krb5_free_creds
1747	(mit_krb5_context, mit_krb5_creds *);
1748void KRB5_CALLCONV krb5_free_cred_contents
1749	(mit_krb5_context, mit_krb5_creds *);
1750void KRB5_CALLCONV krb5_free_checksum
1751	(mit_krb5_context, mit_krb5_checksum *);
1752void KRB5_CALLCONV krb5_free_checksum_contents
1753	(mit_krb5_context, mit_krb5_checksum *);
1754void KRB5_CALLCONV krb5_free_keyblock
1755	(mit_krb5_context, mit_krb5_keyblock *);
1756void KRB5_CALLCONV krb5_free_keyblock_contents
1757	(mit_krb5_context, mit_krb5_keyblock *);
1758void KRB5_CALLCONV krb5_free_ap_rep_enc_part
1759	(mit_krb5_context, mit_krb5_ap_rep_enc_part *);
1760void KRB5_CALLCONV krb5_free_data
1761	(mit_krb5_context, mit_krb5_data *);
1762void KRB5_CALLCONV krb5_free_data_contents
1763	(mit_krb5_context, mit_krb5_data *);
1764void KRB5_CALLCONV krb5_free_unparsed_name
1765	(mit_krb5_context, char *);
1766void KRB5_CALLCONV krb5_free_cksumtypes
1767	(mit_krb5_context, mit_krb5_cksumtype *);
1768
1769/* From krb5/os but needed but by the outside world */
1770mit_krb5_error_code KRB5_CALLCONV krb5_us_timeofday
1771	(mit_krb5_context,
1772		mit_krb5_timestamp *,
1773		mit_krb5_int32 * );
1774mit_krb5_error_code KRB5_CALLCONV krb5_timeofday
1775	(mit_krb5_context,
1776		mit_krb5_timestamp * );
1777		 /* get all the addresses of this host */
1778mit_krb5_error_code KRB5_CALLCONV krb5_os_localaddr
1779	(mit_krb5_context,
1780		mit_krb5_address ***);
1781mit_krb5_error_code KRB5_CALLCONV krb5_get_default_realm
1782	(mit_krb5_context,
1783		 char ** );
1784mit_krb5_error_code KRB5_CALLCONV krb5_set_default_realm
1785	(mit_krb5_context,
1786		   const char * );
1787void KRB5_CALLCONV krb5_free_default_realm
1788	(mit_krb5_context,
1789		   char * );
1790mit_krb5_error_code KRB5_CALLCONV krb5_sname_to_principal
1791	(mit_krb5_context,
1792		const char *,
1793		   const char *,
1794		   mit_krb5_int32,
1795		   mit_krb5_principal *);
1796mit_krb5_error_code KRB5_CALLCONV
1797krb5_change_password
1798	(mit_krb5_context context, mit_krb5_creds *creds, char *newpw,
1799			int *result_code, mit_krb5_data *result_code_string,
1800			mit_krb5_data *result_string);
1801mit_krb5_error_code KRB5_CALLCONV
1802krb5_set_password
1803	(mit_krb5_context context, mit_krb5_creds *creds, char *newpw, mit_krb5_principal change_password_for,
1804			int *result_code, mit_krb5_data *result_code_string, mit_krb5_data *result_string);
1805mit_krb5_error_code KRB5_CALLCONV
1806krb5_set_password_using_ccache
1807	(mit_krb5_context context, mit_krb5_ccache ccache, char *newpw, mit_krb5_principal change_password_for,
1808			int *result_code, mit_krb5_data *result_code_string, mit_krb5_data *result_string);
1809
1810mit_krb5_error_code KRB5_CALLCONV
1811krb5_get_profile
1812	(mit_krb5_context, struct _profile_t * /* profile_t */ *);
1813
1814#if MIT_KRB5_DEPRECATED
1815KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_get_in_tkt
1816	(mit_krb5_context,
1817		mit_krb5_flags,
1818		mit_krb5_address * const *,
1819		mit_krb5_enctype *,
1820		mit_krb5_preauthtype *,
1821		mit_krb5_error_code ( * )(mit_krb5_context,
1822					mit_krb5_enctype,
1823					mit_krb5_data *,
1824					mit_krb5_const_pointer,
1825					mit_krb5_keyblock **),
1826		mit_krb5_const_pointer,
1827		mit_krb5_error_code ( * )(mit_krb5_context,
1828					const mit_krb5_keyblock *,
1829					mit_krb5_const_pointer,
1830					mit_krb5_kdc_rep * ),
1831		mit_krb5_const_pointer,
1832		mit_krb5_creds *,
1833		mit_krb5_ccache,
1834		mit_krb5_kdc_rep ** );
1835
1836KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_password
1837	(mit_krb5_context,
1838		mit_krb5_flags,
1839		mit_krb5_address * const *,
1840		mit_krb5_enctype *,
1841		mit_krb5_preauthtype *,
1842		const char *,
1843		mit_krb5_ccache,
1844		mit_krb5_creds *,
1845		mit_krb5_kdc_rep ** );
1846
1847KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_skey
1848	(mit_krb5_context,
1849		mit_krb5_flags,
1850		mit_krb5_address * const *,
1851		mit_krb5_enctype *,
1852		mit_krb5_preauthtype *,
1853		const mit_krb5_keyblock *,
1854		mit_krb5_ccache,
1855		mit_krb5_creds *,
1856		mit_krb5_kdc_rep ** );
1857
1858KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_keytab
1859	(mit_krb5_context,
1860		mit_krb5_flags,
1861		mit_krb5_address * const *,
1862		mit_krb5_enctype *,
1863		mit_krb5_preauthtype *,
1864		mit_krb5_keytab,
1865		mit_krb5_ccache,
1866		mit_krb5_creds *,
1867		mit_krb5_kdc_rep ** );
1868#endif /* MIT_KRB5_DEPRECATED */
1869
1870mit_krb5_error_code KRB5_CALLCONV krb5_rd_req
1871	(mit_krb5_context,
1872		mit_krb5_auth_context *,
1873		const mit_krb5_data *,
1874		mit_krb5_const_principal,
1875		mit_krb5_keytab,
1876		mit_krb5_flags *,
1877		mit_krb5_ticket **);
1878
1879mit_krb5_error_code KRB5_CALLCONV krb5_kt_read_service_key
1880	(mit_krb5_context,
1881		mit_krb5_pointer,
1882		mit_krb5_principal,
1883		mit_krb5_kvno,
1884		mit_krb5_enctype,
1885		mit_krb5_keyblock **);
1886mit_krb5_error_code KRB5_CALLCONV krb5_mk_safe
1887	(mit_krb5_context,
1888		mit_krb5_auth_context,
1889		const mit_krb5_data *,
1890		mit_krb5_data *,
1891		mit_krb5_replay_data *);
1892mit_krb5_error_code KRB5_CALLCONV krb5_mk_priv
1893	(mit_krb5_context,
1894		mit_krb5_auth_context,
1895		const mit_krb5_data *,
1896		mit_krb5_data *,
1897		mit_krb5_replay_data *);
1898
1899mit_krb5_error_code KRB5_CALLCONV krb5_sendauth
1900	(mit_krb5_context,
1901		mit_krb5_auth_context *,
1902		mit_krb5_pointer,
1903		char *,
1904		mit_krb5_principal,
1905		mit_krb5_principal,
1906		mit_krb5_flags,
1907		mit_krb5_data *,
1908		mit_krb5_creds *,
1909		mit_krb5_ccache,
1910		mit_krb5_error **,
1911		mit_krb5_ap_rep_enc_part **,
1912		mit_krb5_creds **);
1913
1914mit_krb5_error_code KRB5_CALLCONV krb5_recvauth
1915	(mit_krb5_context,
1916		mit_krb5_auth_context *,
1917		mit_krb5_pointer,
1918		char *,
1919		mit_krb5_principal,
1920		mit_krb5_int32,
1921		mit_krb5_keytab,
1922		mit_krb5_ticket **);
1923mit_krb5_error_code KRB5_CALLCONV krb5_recvauth_version
1924	(mit_krb5_context,
1925		mit_krb5_auth_context *,
1926		mit_krb5_pointer,
1927		mit_krb5_principal,
1928		mit_krb5_int32,
1929		mit_krb5_keytab,
1930		mit_krb5_ticket **,
1931		mit_krb5_data *);
1932
1933mit_krb5_error_code KRB5_CALLCONV krb5_mk_ncred
1934	(mit_krb5_context,
1935		mit_krb5_auth_context,
1936		mit_krb5_creds **,
1937		mit_krb5_data **,
1938		mit_krb5_replay_data *);
1939
1940mit_krb5_error_code KRB5_CALLCONV krb5_mk_1cred
1941	(mit_krb5_context,
1942		mit_krb5_auth_context,
1943		mit_krb5_creds *,
1944		mit_krb5_data **,
1945		mit_krb5_replay_data *);
1946
1947mit_krb5_error_code KRB5_CALLCONV krb5_rd_cred
1948	(mit_krb5_context,
1949		mit_krb5_auth_context,
1950		mit_krb5_data *,
1951		mit_krb5_creds ***,
1952		mit_krb5_replay_data *);
1953
1954mit_krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds
1955	(mit_krb5_context,
1956		mit_krb5_auth_context,
1957		char *,
1958		mit_krb5_principal,
1959		mit_krb5_principal,
1960		mit_krb5_ccache,
1961		int forwardable,
1962		mit_krb5_data *);
1963
1964mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_init
1965	(mit_krb5_context,
1966		mit_krb5_auth_context *);
1967
1968mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_free
1969	(mit_krb5_context,
1970		mit_krb5_auth_context);
1971
1972mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags
1973	(mit_krb5_context,
1974		mit_krb5_auth_context,
1975		mit_krb5_int32);
1976
1977mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags
1978	(mit_krb5_context,
1979		mit_krb5_auth_context,
1980		mit_krb5_int32 *);
1981
1982mit_krb5_error_code KRB5_CALLCONV
1983krb5_auth_con_set_checksum_func (mit_krb5_context, mit_krb5_auth_context,
1984				 krb5_mk_req_checksum_func, void *);
1985
1986mit_krb5_error_code KRB5_CALLCONV
1987krb5_auth_con_get_checksum_func( mit_krb5_context, mit_krb5_auth_context,
1988				 krb5_mk_req_checksum_func *, void **);
1989
1990mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setaddrs
1991	(mit_krb5_context,
1992		mit_krb5_auth_context,
1993		mit_krb5_address *,
1994		mit_krb5_address *);
1995
1996mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getaddrs
1997	(mit_krb5_context,
1998		mit_krb5_auth_context,
1999		mit_krb5_address **,
2000		mit_krb5_address **);
2001
2002mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setports
2003	(mit_krb5_context,
2004		mit_krb5_auth_context,
2005		mit_krb5_address *,
2006		mit_krb5_address *);
2007
2008mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setuseruserkey
2009	(mit_krb5_context,
2010		mit_krb5_auth_context,
2011		mit_krb5_keyblock *);
2012
2013mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey
2014	(mit_krb5_context,
2015		mit_krb5_auth_context,
2016		mit_krb5_keyblock **);
2017
2018mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getsendsubkey(
2019    mit_krb5_context, mit_krb5_auth_context, mit_krb5_keyblock **);
2020
2021mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getrecvsubkey(
2022    mit_krb5_context, mit_krb5_auth_context, mit_krb5_keyblock **);
2023
2024mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setsendsubkey(
2025    mit_krb5_context, mit_krb5_auth_context, mit_krb5_keyblock *);
2026
2027mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setrecvsubkey(
2028    mit_krb5_context, mit_krb5_auth_context, mit_krb5_keyblock *);
2029
2030#if MIT_KRB5_DEPRECATED
2031KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey
2032	(mit_krb5_context,
2033		mit_krb5_auth_context,
2034		mit_krb5_keyblock **);
2035
2036KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey
2037	(mit_krb5_context,
2038		mit_krb5_auth_context,
2039		mit_krb5_keyblock **);
2040#endif
2041
2042mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalseqnumber
2043	(mit_krb5_context,
2044		mit_krb5_auth_context,
2045		mit_krb5_int32 *);
2046
2047mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getremoteseqnumber
2048	(mit_krb5_context,
2049		mit_krb5_auth_context,
2050		mit_krb5_int32 *);
2051
2052#if MIT_KRB5_DEPRECATED
2053KRB5_ATTR_DEPRECATED mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_initivector
2054	(mit_krb5_context,
2055		mit_krb5_auth_context);
2056#endif
2057
2058mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache
2059	(mit_krb5_context,
2060		mit_krb5_auth_context,
2061		mit_krb5_rcache);
2062
2063mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getrcache
2064	(mit_krb5_context,
2065		mit_krb5_auth_context,
2066		mit_krb5_rcache *);
2067
2068mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator
2069	(mit_krb5_context,
2070		mit_krb5_auth_context,
2071		mit_krb5_authenticator **);
2072
2073#define KRB5_REALM_BRANCH_CHAR '.'
2074
2075/*
2076 * end "func-proto.h"
2077 */
2078
2079/*
2080 * begin stuff from libos.h
2081 */
2082
2083mit_krb5_error_code KRB5_CALLCONV krb5_read_password
2084	(mit_krb5_context,
2085		const char *,
2086		const char *,
2087		char *,
2088		unsigned int * );
2089mit_krb5_error_code KRB5_CALLCONV krb5_aname_to_localname
2090	(mit_krb5_context,
2091		mit_krb5_const_principal,
2092		int,
2093		char * );
2094mit_krb5_error_code KRB5_CALLCONV krb5_get_host_realm
2095	(mit_krb5_context,
2096		const char *,
2097		char *** );
2098mit_krb5_error_code KRB5_CALLCONV krb5_get_fallback_host_realm
2099	(mit_krb5_context,
2100		mit_krb5_data *,
2101		char *** );
2102mit_krb5_error_code KRB5_CALLCONV krb5_free_host_realm
2103	(mit_krb5_context,
2104		char * const * );
2105mit_krb5_boolean KRB5_CALLCONV krb5_kuserok
2106	(mit_krb5_context,
2107		mit_krb5_principal, const char *);
2108mit_krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs
2109	(mit_krb5_context,
2110		mit_krb5_auth_context,
2111		int, int);
2112mit_krb5_error_code KRB5_CALLCONV krb5_set_real_time
2113	(mit_krb5_context, mit_krb5_timestamp, mit_krb5_int32);
2114
2115mit_krb5_error_code KRB5_CALLCONV krb5_get_time_offsets
2116	(mit_krb5_context, mit_krb5_timestamp *, mit_krb5_int32 *);
2117
2118/* str_conv.c */
2119mit_krb5_error_code KRB5_CALLCONV krb5_string_to_enctype
2120	(char *, mit_krb5_enctype *);
2121mit_krb5_error_code KRB5_CALLCONV krb5_string_to_salttype
2122	(char *, mit_krb5_int32 *);
2123mit_krb5_error_code KRB5_CALLCONV krb5_string_to_cksumtype
2124	(char *, mit_krb5_cksumtype *);
2125mit_krb5_error_code KRB5_CALLCONV krb5_string_to_timestamp
2126	(char *, mit_krb5_timestamp *);
2127mit_krb5_error_code KRB5_CALLCONV krb5_string_to_deltat
2128	(char *, mit_krb5_deltat *);
2129mit_krb5_error_code KRB5_CALLCONV mit_krb5_enctype_to_string
2130	(mit_krb5_enctype, char *, size_t);
2131mit_krb5_error_code KRB5_CALLCONV krb5_salttype_to_string
2132	(mit_krb5_int32, char *, size_t);
2133mit_krb5_error_code KRB5_CALLCONV mit_krb5_cksumtype_to_string
2134	(mit_krb5_cksumtype, char *, size_t);
2135mit_krb5_error_code KRB5_CALLCONV mit_krb5_timestamp_to_string
2136	(mit_krb5_timestamp, char *, size_t);
2137mit_krb5_error_code KRB5_CALLCONV mit_krb5_timestamp_to_sfstring
2138	(mit_krb5_timestamp, char *, size_t, char *);
2139mit_krb5_error_code KRB5_CALLCONV mit_krb5_deltat_to_string
2140	(mit_krb5_deltat, char *, size_t);
2141
2142
2143
2144/* The name of the Kerberos ticket granting service... and its size */
2145#define	MIT_KRB5_TGS_NAME		"krbtgt"
2146#define MIT_KRB5_TGS_NAME_SIZE	6
2147
2148/* flags for recvauth */
2149#define MIT_KRB5_RECVAUTH_SKIP_VERSION	0x0001
2150#define MIT_KRB5_RECVAUTH_BADAUTHVERS	0x0002
2151/* initial ticket api functions */
2152
2153typedef struct _mit_krb5_prompt {
2154    char *prompt;
2155    int hidden;
2156    mit_krb5_data *reply;
2157} mit_krb5_prompt;
2158
2159typedef mit_krb5_error_code (KRB5_CALLCONV *mit_krb5_prompter_fct)(mit_krb5_context context,
2160					     void *data,
2161					     const char *name,
2162					     const char *banner,
2163					     int num_prompts,
2164					     mit_krb5_prompt prompts[]);
2165
2166
2167mit_krb5_error_code KRB5_CALLCONV
2168krb5_prompter_posix (mit_krb5_context context,
2169		void *data,
2170		const char *name,
2171		const char *banner,
2172		int num_prompts,
2173		mit_krb5_prompt prompts[]);
2174
2175typedef struct _mit_krb5_get_init_creds_opt {
2176    mit_krb5_flags flags;
2177    mit_krb5_deltat tkt_life;
2178    mit_krb5_deltat renew_life;
2179    int forwardable;
2180    int proxiable;
2181    mit_krb5_enctype *etype_list;
2182    int etype_list_length;
2183    mit_krb5_address **address_list;
2184    mit_krb5_preauthtype *preauth_list;
2185    int preauth_list_length;
2186    mit_krb5_data *salt;
2187} mit_krb5_get_init_creds_opt;
2188
2189#define MIT_KRB5_GET_INIT_CREDS_OPT_TKT_LIFE	0x0001
2190#define MIT_KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE	0x0002
2191#define MIT_KRB5_GET_INIT_CREDS_OPT_FORWARDABLE	0x0004
2192#define MIT_KRB5_GET_INIT_CREDS_OPT_PROXIABLE	0x0008
2193#define MIT_KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST	0x0010
2194#define MIT_KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST	0x0020
2195#define MIT_KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST	0x0040
2196#define MIT_KRB5_GET_INIT_CREDS_OPT_SALT		0x0080
2197#define MIT_KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT	0x0100
2198#define MIT_KRB5_GET_INIT_CREDS_OPT_CANONICALIZE	0x0200
2199
2200
2201mit_krb5_error_code KRB5_CALLCONV
2202krb5_get_init_creds_opt_alloc
2203(mit_krb5_context context,
2204		mit_krb5_get_init_creds_opt **opt);
2205
2206void KRB5_CALLCONV
2207krb5_get_init_creds_opt_free
2208(mit_krb5_context context,
2209		mit_krb5_get_init_creds_opt *opt);
2210
2211void KRB5_CALLCONV
2212krb5_get_init_creds_opt_init
2213(mit_krb5_get_init_creds_opt *opt);
2214
2215void KRB5_CALLCONV
2216krb5_get_init_creds_opt_set_tkt_life
2217(mit_krb5_get_init_creds_opt *opt,
2218		mit_krb5_deltat tkt_life);
2219
2220void KRB5_CALLCONV
2221krb5_get_init_creds_opt_set_renew_life
2222(mit_krb5_get_init_creds_opt *opt,
2223		mit_krb5_deltat renew_life);
2224
2225void KRB5_CALLCONV
2226krb5_get_init_creds_opt_set_forwardable
2227(mit_krb5_get_init_creds_opt *opt,
2228		int forwardable);
2229
2230void KRB5_CALLCONV
2231krb5_get_init_creds_opt_set_proxiable
2232(mit_krb5_get_init_creds_opt *opt,
2233		int proxiable);
2234
2235void KRB5_CALLCONV
2236krb5_get_init_creds_opt_set_canonicalize
2237(mit_krb5_get_init_creds_opt *opt,
2238		int canonicalize);
2239
2240void KRB5_CALLCONV
2241krb5_get_init_creds_opt_set_etype_list
2242(mit_krb5_get_init_creds_opt *opt,
2243		mit_krb5_enctype *etype_list,
2244		int etype_list_length);
2245
2246void KRB5_CALLCONV
2247krb5_get_init_creds_opt_set_address_list
2248(mit_krb5_get_init_creds_opt *opt,
2249		mit_krb5_address **addresses);
2250
2251void KRB5_CALLCONV
2252krb5_get_init_creds_opt_set_preauth_list
2253(mit_krb5_get_init_creds_opt *opt,
2254		mit_krb5_preauthtype *preauth_list,
2255		int preauth_list_length);
2256
2257void KRB5_CALLCONV
2258krb5_get_init_creds_opt_set_salt
2259(mit_krb5_get_init_creds_opt *opt,
2260		mit_krb5_data *salt);
2261
2262void KRB5_CALLCONV
2263krb5_get_init_creds_opt_set_change_password_prompt
2264(mit_krb5_get_init_creds_opt *opt,
2265		int prompt);
2266
2267/* Generic preauth option attribute/value pairs */
2268typedef struct _mit_krb5_gic_opt_pa_data {
2269    char *attr;
2270    char *value;
2271} mit_krb5_gic_opt_pa_data;
2272
2273/*
2274 * This function allows the caller to supply options to preauth
2275 * plugins.  Preauth plugin modules are given a chance to look
2276 * at each option at the time this function is called in ordre
2277 * to check the validity of the option.
2278 * The 'opt' pointer supplied to this function must have been
2279 * obtained using mit_krb5_get_init_creds_opt_alloc()
2280 */
2281mit_krb5_error_code KRB5_CALLCONV
2282krb5_get_init_creds_opt_set_pa
2283		(mit_krb5_context context,
2284		mit_krb5_get_init_creds_opt *opt,
2285		const char *attr,
2286		const char *value);
2287
2288typedef mit_krb5_error_code
2289(*mit_krb5_gic_process_last_req)(mit_krb5_context, mit_krb5_last_req_entry **, void *);
2290
2291mit_krb5_error_code KRB5_CALLCONV
2292krb5_get_init_creds_opt_set_process_last_req(mit_krb5_context,
2293					     mit_krb5_get_init_creds_opt *,
2294					     mit_krb5_gic_process_last_req,
2295					     void *);
2296
2297
2298mit_krb5_error_code KRB5_CALLCONV
2299krb5_get_init_creds_password
2300(mit_krb5_context context,
2301		mit_krb5_creds *creds,
2302		mit_krb5_principal client,
2303		char *password,
2304		mit_krb5_prompter_fct prompter,
2305		void *data,
2306		mit_krb5_deltat start_time,
2307		char *in_tkt_service,
2308		mit_krb5_get_init_creds_opt *k5_gic_options);
2309
2310mit_krb5_error_code KRB5_CALLCONV
2311krb5_get_init_creds_keytab
2312(mit_krb5_context context,
2313		mit_krb5_creds *creds,
2314		mit_krb5_principal client,
2315		mit_krb5_keytab arg_keytab,
2316		mit_krb5_deltat start_time,
2317		char *in_tkt_service,
2318		mit_krb5_get_init_creds_opt *k5_gic_options);
2319
2320typedef struct _mit_krb5_verify_init_creds_opt {
2321    mit_krb5_flags flags;
2322    int ap_req_nofail;
2323} mit_krb5_verify_init_creds_opt;
2324
2325#define MIT_KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL	0x0001
2326
2327void KRB5_CALLCONV
2328krb5_verify_init_creds_opt_init
2329(mit_krb5_verify_init_creds_opt *k5_vic_options);
2330void KRB5_CALLCONV
2331krb5_verify_init_creds_opt_set_ap_req_nofail
2332(mit_krb5_verify_init_creds_opt *k5_vic_options,
2333		int ap_req_nofail);
2334
2335mit_krb5_error_code KRB5_CALLCONV
2336krb5_verify_init_creds
2337(mit_krb5_context context,
2338		mit_krb5_creds *creds,
2339		mit_krb5_principal ap_req_server,
2340		mit_krb5_keytab ap_req_keytab,
2341		mit_krb5_ccache *ccache,
2342		mit_krb5_verify_init_creds_opt *k5_vic_options);
2343
2344mit_krb5_error_code KRB5_CALLCONV
2345krb5_get_validated_creds
2346(mit_krb5_context context,
2347		mit_krb5_creds *creds,
2348		mit_krb5_principal client,
2349		mit_krb5_ccache ccache,
2350		char *in_tkt_service);
2351
2352mit_krb5_error_code KRB5_CALLCONV
2353krb5_get_renewed_creds
2354(mit_krb5_context context,
2355		mit_krb5_creds *creds,
2356		mit_krb5_principal client,
2357		mit_krb5_ccache ccache,
2358		char *in_tkt_service);
2359
2360mit_krb5_error_code KRB5_CALLCONV
2361krb5_decode_ticket
2362(const mit_krb5_data *code,
2363		mit_krb5_ticket **rep);
2364
2365void KRB5_CALLCONV
2366krb5_appdefault_string
2367(mit_krb5_context context,
2368		const char *appname,
2369	        const mit_krb5_data *realm,
2370 		const char *option,
2371		const char *default_value,
2372		char ** ret_value);
2373
2374void KRB5_CALLCONV
2375krb5_appdefault_boolean
2376(mit_krb5_context context,
2377		const char *appname,
2378	        const mit_krb5_data *realm,
2379 		const char *option,
2380		int default_value,
2381		int *ret_value);
2382
2383/*
2384 * Prompter enhancements
2385 */
2386
2387#define MIT_KRB5_PROMPT_TYPE_PASSWORD            0x1
2388#define MIT_KRB5_PROMPT_TYPE_NEW_PASSWORD        0x2
2389#define MIT_KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN  0x3
2390#define MIT_KRB5_PROMPT_TYPE_PREAUTH             0x4
2391
2392typedef mit_krb5_int32 mit_krb5_prompt_type;
2393
2394mit_krb5_prompt_type* KRB5_CALLCONV krb5_get_prompt_types
2395	(mit_krb5_context context);
2396
2397/* Error reporting */
2398void KRB5_CALLCONV_C
2399krb5_set_error_message (mit_krb5_context, mit_krb5_error_code, const char *, ...)
2400#if !defined(__cplusplus) && (__GNUC__ > 2)
2401    __attribute__((__format__(__printf__, 3, 4)))
2402#endif
2403    ;
2404void KRB5_CALLCONV
2405krb5_vset_error_message (mit_krb5_context, mit_krb5_error_code, const char *, va_list)
2406#if !defined(__cplusplus) && (__GNUC__ > 2)
2407    __attribute__((__format__(__printf__, 3, 0)))
2408#endif
2409    ;
2410/*
2411 * The behavior of krb5_get_error_message is only defined the first
2412 * time it is called after a failed call to a krb5 function using the
2413 * same context, and only when the error code passed in is the same as
2414 * that returned by the krb5 function.  Future versions may return the
2415 * same string for the second and following calls.
2416 *
2417 * The string returned by this function must be freed using
2418 * krb5_free_error_message.
2419 */
2420const char * KRB5_CALLCONV
2421krb5_get_error_message (mit_krb5_context, mit_krb5_error_code);
2422void KRB5_CALLCONV
2423krb5_free_error_message (mit_krb5_context, const char *);
2424void KRB5_CALLCONV
2425krb5_clear_error_message (mit_krb5_context);
2426
2427
2428#if TARGET_OS_MAC
2429#    pragma pack(pop)
2430#endif
2431
2432KRB5INT_END_DECLS
2433
2434/* Don't use this!  We're going to phase it out.  It's just here to keep
2435   applications from breaking right away.  */
2436#define krb5_const const
2437
2438#undef KRB5_ATTR_DEPRECATED
2439
2440#endif /* KRB5_GENERAL__ */
2441/*
2442 * et-h-krb5_err.h:
2443 * This file is automatically generated; please do not edit it.
2444 */
2445
2446#include "mit-com_err.h"
2447
2448#define MIT_KRB5KDC_ERR_NONE                         (-1765328384L)
2449#define MIT_KRB5KDC_ERR_NAME_EXP                     (-1765328383L)
2450#define MIT_KRB5KDC_ERR_SERVICE_EXP                  (-1765328382L)
2451#define MIT_KRB5KDC_ERR_BAD_PVNO                     (-1765328381L)
2452#define MIT_KRB5KDC_ERR_C_OLD_MAST_KVNO              (-1765328380L)
2453#define MIT_KRB5KDC_ERR_S_OLD_MAST_KVNO              (-1765328379L)
2454#define MIT_KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN          (-1765328378L)
2455#define MIT_KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN          (-1765328377L)
2456#define MIT_KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE         (-1765328376L)
2457#define MIT_KRB5KDC_ERR_NULL_KEY                     (-1765328375L)
2458#define MIT_KRB5KDC_ERR_CANNOT_POSTDATE              (-1765328374L)
2459#define MIT_KRB5KDC_ERR_NEVER_VALID                  (-1765328373L)
2460#define MIT_KRB5KDC_ERR_POLICY                       (-1765328372L)
2461#define MIT_KRB5KDC_ERR_BADOPTION                    (-1765328371L)
2462#define MIT_KRB5KDC_ERR_ETYPE_NOSUPP                 (-1765328370L)
2463#define MIT_KRB5KDC_ERR_SUMTYPE_NOSUPP               (-1765328369L)
2464#define MIT_KRB5KDC_ERR_PADATA_TYPE_NOSUPP           (-1765328368L)
2465#define MIT_KRB5KDC_ERR_TRTYPE_NOSUPP                (-1765328367L)
2466#define MIT_KRB5KDC_ERR_CLIENT_REVOKED               (-1765328366L)
2467#define MIT_KRB5KDC_ERR_SERVICE_REVOKED              (-1765328365L)
2468#define MIT_KRB5KDC_ERR_TGT_REVOKED                  (-1765328364L)
2469#define MIT_KRB5KDC_ERR_CLIENT_NOTYET                (-1765328363L)
2470#define MIT_KRB5KDC_ERR_SERVICE_NOTYET               (-1765328362L)
2471#define MIT_KRB5KDC_ERR_KEY_EXP                      (-1765328361L)
2472#define MIT_KRB5KDC_ERR_PREAUTH_FAILED               (-1765328360L)
2473#define MIT_KRB5KDC_ERR_PREAUTH_REQUIRED             (-1765328359L)
2474#define MIT_KRB5KDC_ERR_SERVER_NOMATCH               (-1765328358L)
2475#define MIT_KRB5KDC_ERR_MUST_USE_USER2USER           (-1765328357L)
2476#define MIT_KRB5KDC_ERR_PATH_NOT_ACCEPTED            (-1765328356L)
2477#define MIT_KRB5KDC_ERR_SVC_UNAVAILABLE              (-1765328355L)
2478#define MIT_KRB5PLACEHOLD_30                         (-1765328354L)
2479#define MIT_KRB5KRB_AP_ERR_BAD_INTEGRITY             (-1765328353L)
2480#define MIT_KRB5KRB_AP_ERR_TKT_EXPIRED               (-1765328352L)
2481#define MIT_KRB5KRB_AP_ERR_TKT_NYV                   (-1765328351L)
2482#define MIT_KRB5KRB_AP_ERR_REPEAT                    (-1765328350L)
2483#define MIT_KRB5KRB_AP_ERR_NOT_US                    (-1765328349L)
2484#define MIT_KRB5KRB_AP_ERR_BADMATCH                  (-1765328348L)
2485#define MIT_KRB5KRB_AP_ERR_SKEW                      (-1765328347L)
2486#define MIT_KRB5KRB_AP_ERR_BADADDR                   (-1765328346L)
2487#define MIT_KRB5KRB_AP_ERR_BADVERSION                (-1765328345L)
2488#define MIT_KRB5KRB_AP_ERR_MSG_TYPE                  (-1765328344L)
2489#define MIT_KRB5KRB_AP_ERR_MODIFIED                  (-1765328343L)
2490#define MIT_KRB5KRB_AP_ERR_BADORDER                  (-1765328342L)
2491#define MIT_KRB5KRB_AP_ERR_ILL_CR_TKT                (-1765328341L)
2492#define MIT_KRB5KRB_AP_ERR_BADKEYVER                 (-1765328340L)
2493#define MIT_KRB5KRB_AP_ERR_NOKEY                     (-1765328339L)
2494#define MIT_KRB5KRB_AP_ERR_MUT_FAIL                  (-1765328338L)
2495#define MIT_KRB5KRB_AP_ERR_BADDIRECTION              (-1765328337L)
2496#define MIT_KRB5KRB_AP_ERR_METHOD                    (-1765328336L)
2497#define MIT_KRB5KRB_AP_ERR_BADSEQ                    (-1765328335L)
2498#define MIT_KRB5KRB_AP_ERR_INAPP_CKSUM               (-1765328334L)
2499#define MIT_KRB5KRB_AP_PATH_NOT_ACCEPTED             (-1765328333L)
2500#define MIT_KRB5KRB_ERR_RESPONSE_TOO_BIG             (-1765328332L)
2501#define MIT_KRB5PLACEHOLD_53                         (-1765328331L)
2502#define MIT_KRB5PLACEHOLD_54                         (-1765328330L)
2503#define MIT_KRB5PLACEHOLD_55                         (-1765328329L)
2504#define MIT_KRB5PLACEHOLD_56                         (-1765328328L)
2505#define MIT_KRB5PLACEHOLD_57                         (-1765328327L)
2506#define MIT_KRB5PLACEHOLD_58                         (-1765328326L)
2507#define MIT_KRB5PLACEHOLD_59                         (-1765328325L)
2508#define MIT_KRB5KRB_ERR_GENERIC                      (-1765328324L)
2509#define MIT_KRB5KRB_ERR_FIELD_TOOLONG                (-1765328323L)
2510#define MIT_KRB5KDC_ERR_CLIENT_NOT_TRUSTED           (-1765328322L)
2511#define MIT_KRB5KDC_ERR_KDC_NOT_TRUSTED              (-1765328321L)
2512#define MIT_KRB5KDC_ERR_INVALID_SIG                  (-1765328320L)
2513#define MIT_KRB5KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED (-1765328319L)
2514#define MIT_KRB5KDC_ERR_CERTIFICATE_MISMATCH         (-1765328318L)
2515#define MIT_KRB5KRB_AP_ERR_NO_TGT                    (-1765328317L)
2516#define MIT_KRB5KDC_ERR_WRONG_REALM                  (-1765328316L)
2517#define MIT_KRB5KRB_AP_ERR_USER_TO_USER_REQUIRED     (-1765328315L)
2518#define MIT_KRB5KDC_ERR_CANT_VERIFY_CERTIFICATE      (-1765328314L)
2519#define MIT_KRB5KDC_ERR_INVALID_CERTIFICATE          (-1765328313L)
2520#define MIT_KRB5KDC_ERR_REVOKED_CERTIFICATE          (-1765328312L)
2521#define MIT_KRB5KDC_ERR_REVOCATION_STATUS_UNKNOWN    (-1765328311L)
2522#define MIT_KRB5KDC_ERR_REVOCATION_STATUS_UNAVAILABLE (-1765328310L)
2523#define MIT_KRB5KDC_ERR_CLIENT_NAME_MISMATCH         (-1765328309L)
2524#define MIT_KRB5KDC_ERR_KDC_NAME_MISMATCH            (-1765328308L)
2525#define MIT_KRB5KDC_ERR_INCONSISTENT_KEY_PURPOSE     (-1765328307L)
2526#define MIT_KRB5KDC_ERR_DIGEST_IN_CERT_NOT_ACCEPTED  (-1765328306L)
2527#define MIT_KRB5KDC_ERR_PA_CHECKSUM_MUST_BE_INCLUDED (-1765328305L)
2528#define MIT_KRB5KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED (-1765328304L)
2529#define MIT_KRB5KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED (-1765328303L)
2530#define MIT_KRB5PLACEHOLD_82                         (-1765328302L)
2531#define MIT_KRB5PLACEHOLD_83                         (-1765328301L)
2532#define MIT_KRB5PLACEHOLD_84                         (-1765328300L)
2533#define MIT_KRB5PLACEHOLD_85                         (-1765328299L)
2534#define MIT_KRB5PLACEHOLD_86                         (-1765328298L)
2535#define MIT_KRB5PLACEHOLD_87                         (-1765328297L)
2536#define MIT_KRB5PLACEHOLD_88                         (-1765328296L)
2537#define MIT_KRB5PLACEHOLD_89                         (-1765328295L)
2538#define MIT_KRB5PLACEHOLD_90                         (-1765328294L)
2539#define MIT_KRB5PLACEHOLD_91                         (-1765328293L)
2540#define MIT_KRB5PLACEHOLD_92                         (-1765328292L)
2541#define MIT_KRB5PLACEHOLD_93                         (-1765328291L)
2542#define MIT_KRB5PLACEHOLD_94                         (-1765328290L)
2543#define MIT_KRB5PLACEHOLD_95                         (-1765328289L)
2544#define MIT_KRB5PLACEHOLD_96                         (-1765328288L)
2545#define MIT_KRB5PLACEHOLD_97                         (-1765328287L)
2546#define MIT_KRB5PLACEHOLD_98                         (-1765328286L)
2547#define MIT_KRB5PLACEHOLD_99                         (-1765328285L)
2548#define MIT_KRB5PLACEHOLD_100                        (-1765328284L)
2549#define MIT_KRB5PLACEHOLD_101                        (-1765328283L)
2550#define MIT_KRB5PLACEHOLD_102                        (-1765328282L)
2551#define MIT_KRB5PLACEHOLD_103                        (-1765328281L)
2552#define MIT_KRB5PLACEHOLD_104                        (-1765328280L)
2553#define MIT_KRB5PLACEHOLD_105                        (-1765328279L)
2554#define MIT_KRB5PLACEHOLD_106                        (-1765328278L)
2555#define MIT_KRB5PLACEHOLD_107                        (-1765328277L)
2556#define MIT_KRB5PLACEHOLD_108                        (-1765328276L)
2557#define MIT_KRB5PLACEHOLD_109                        (-1765328275L)
2558#define MIT_KRB5PLACEHOLD_110                        (-1765328274L)
2559#define MIT_KRB5PLACEHOLD_111                        (-1765328273L)
2560#define MIT_KRB5PLACEHOLD_112                        (-1765328272L)
2561#define MIT_KRB5PLACEHOLD_113                        (-1765328271L)
2562#define MIT_KRB5PLACEHOLD_114                        (-1765328270L)
2563#define MIT_KRB5PLACEHOLD_115                        (-1765328269L)
2564#define MIT_KRB5PLACEHOLD_116                        (-1765328268L)
2565#define MIT_KRB5PLACEHOLD_117                        (-1765328267L)
2566#define MIT_KRB5PLACEHOLD_118                        (-1765328266L)
2567#define MIT_KRB5PLACEHOLD_119                        (-1765328265L)
2568#define MIT_KRB5PLACEHOLD_120                        (-1765328264L)
2569#define MIT_KRB5PLACEHOLD_121                        (-1765328263L)
2570#define MIT_KRB5PLACEHOLD_122                        (-1765328262L)
2571#define MIT_KRB5PLACEHOLD_123                        (-1765328261L)
2572#define MIT_KRB5PLACEHOLD_124                        (-1765328260L)
2573#define MIT_KRB5PLACEHOLD_125                        (-1765328259L)
2574#define MIT_KRB5PLACEHOLD_126                        (-1765328258L)
2575#define MIT_KRB5PLACEHOLD_127                        (-1765328257L)
2576#define MIT_KRB5_ERR_RCSID                           (-1765328256L)
2577#define MIT_KRB5_LIBOS_BADLOCKFLAG                   (-1765328255L)
2578#define MIT_KRB5_LIBOS_CANTREADPWD                   (-1765328254L)
2579#define MIT_KRB5_LIBOS_BADPWDMATCH                   (-1765328253L)
2580#define MIT_KRB5_LIBOS_PWDINTR                       (-1765328252L)
2581#define MIT_KRB5_PARSE_ILLCHAR                       (-1765328251L)
2582#define MIT_KRB5_PARSE_MALFORMED                     (-1765328250L)
2583#define MIT_KRB5_CONFIG_CANTOPEN                     (-1765328249L)
2584#define MIT_KRB5_CONFIG_BADFORMAT                    (-1765328248L)
2585#define MIT_KRB5_CONFIG_NOTENUFSPACE                 (-1765328247L)
2586#define MIT_KRB5_BADMSGTYPE                          (-1765328246L)
2587#define MIT_KRB5_CC_BADNAME                          (-1765328245L)
2588#define MIT_KRB5_CC_UNKNOWN_TYPE                     (-1765328244L)
2589#define MIT_KRB5_CC_NOTFOUND                         (-1765328243L)
2590#define MIT_KRB5_CC_END                              (-1765328242L)
2591#define MIT_KRB5_NO_TKT_SUPPLIED                     (-1765328241L)
2592#define MIT_KRB5KRB_AP_WRONG_PRINC                   (-1765328240L)
2593#define MIT_KRB5KRB_AP_ERR_TKT_INVALID               (-1765328239L)
2594#define MIT_KRB5_PRINC_NOMATCH                       (-1765328238L)
2595#define MIT_KRB5_KDCREP_MODIFIED                     (-1765328237L)
2596#define MIT_KRB5_KDCREP_SKEW                         (-1765328236L)
2597#define MIT_KRB5_IN_TKT_REALM_MISMATCH               (-1765328235L)
2598#define MIT_KRB5_PROG_ETYPE_NOSUPP                   (-1765328234L)
2599#define MIT_KRB5_PROG_KEYTYPE_NOSUPP                 (-1765328233L)
2600#define MIT_KRB5_WRONG_ETYPE                         (-1765328232L)
2601#define MIT_KRB5_PROG_SUMTYPE_NOSUPP                 (-1765328231L)
2602#define MIT_KRB5_REALM_UNKNOWN                       (-1765328230L)
2603#define MIT_KRB5_SERVICE_UNKNOWN                     (-1765328229L)
2604#define MIT_KRB5_KDC_UNREACH                         (-1765328228L)
2605#define MIT_KRB5_NO_LOCALNAME                        (-1765328227L)
2606#define MIT_KRB5_MUTUAL_FAILED                       (-1765328226L)
2607#define MIT_KRB5_RC_TYPE_EXISTS                      (-1765328225L)
2608#define MIT_KRB5_RC_MALLOC                           (-1765328224L)
2609#define MIT_KRB5_RC_TYPE_NOTFOUND                    (-1765328223L)
2610#define MIT_KRB5_RC_UNKNOWN                          (-1765328222L)
2611#define MIT_KRB5_RC_REPLAY                           (-1765328221L)
2612#define MIT_KRB5_RC_IO                               (-1765328220L)
2613#define MIT_KRB5_RC_NOIO                             (-1765328219L)
2614#define MIT_KRB5_RC_PARSE                            (-1765328218L)
2615#define MIT_KRB5_RC_IO_EOF                           (-1765328217L)
2616#define MIT_KRB5_RC_IO_MALLOC                        (-1765328216L)
2617#define MIT_KRB5_RC_IO_PERM                          (-1765328215L)
2618#define MIT_KRB5_RC_IO_IO                            (-1765328214L)
2619#define MIT_KRB5_RC_IO_UNKNOWN                       (-1765328213L)
2620#define MIT_KRB5_RC_IO_SPACE                         (-1765328212L)
2621#define MIT_KRB5_TRANS_CANTOPEN                      (-1765328211L)
2622#define MIT_KRB5_TRANS_BADFORMAT                     (-1765328210L)
2623#define MIT_KRB5_LNAME_CANTOPEN                      (-1765328209L)
2624#define MIT_KRB5_LNAME_NOTRANS                       (-1765328208L)
2625#define MIT_KRB5_LNAME_BADFORMAT                     (-1765328207L)
2626#define MIT_KRB5_CRYPTO_INTERNAL                     (-1765328206L)
2627#define MIT_KRB5_KT_BADNAME                          (-1765328205L)
2628#define MIT_KRB5_KT_UNKNOWN_TYPE                     (-1765328204L)
2629#define MIT_KRB5_KT_NOTFOUND                         (-1765328203L)
2630#define MIT_KRB5_KT_END                              (-1765328202L)
2631#define MIT_KRB5_KT_NOWRITE                          (-1765328201L)
2632#define MIT_KRB5_KT_IOERR                            (-1765328200L)
2633#define MIT_KRB5_NO_TKT_IN_RLM                       (-1765328199L)
2634#define MIT_KRB5DES_BAD_KEYPAR                       (-1765328198L)
2635#define MIT_KRB5DES_WEAK_KEY                         (-1765328197L)
2636#define MIT_KRB5_BAD_ENCTYPE                         (-1765328196L)
2637#define MIT_KRB5_BAD_KEYSIZE                         (-1765328195L)
2638#define MIT_KRB5_BAD_MSIZE                           (-1765328194L)
2639#define MIT_KRB5_CC_TYPE_EXISTS                      (-1765328193L)
2640#define MIT_KRB5_KT_TYPE_EXISTS                      (-1765328192L)
2641#define MIT_KRB5_CC_IO                               (-1765328191L)
2642#define MIT_KRB5_FCC_PERM                            (-1765328190L)
2643#define MIT_KRB5_FCC_NOFILE                          (-1765328189L)
2644#define MIT_KRB5_FCC_INTERNAL                        (-1765328188L)
2645#define MIT_KRB5_CC_WRITE                            (-1765328187L)
2646#define MIT_KRB5_CC_NOMEM                            (-1765328186L)
2647#define MIT_KRB5_CC_FORMAT                           (-1765328185L)
2648#define MIT_KRB5_CC_NOT_KTYPE                        (-1765328184L)
2649#define MIT_KRB5_INVALID_FLAGS                       (-1765328183L)
2650#define MIT_KRB5_NO_2ND_TKT                          (-1765328182L)
2651#define MIT_KRB5_NOCREDS_SUPPLIED                    (-1765328181L)
2652#define MIT_KRB5_SENDAUTH_BADAUTHVERS                (-1765328180L)
2653#define MIT_KRB5_SENDAUTH_BADAPPLVERS                (-1765328179L)
2654#define MIT_KRB5_SENDAUTH_BADRESPONSE                (-1765328178L)
2655#define MIT_KRB5_SENDAUTH_REJECTED                   (-1765328177L)
2656#define MIT_KRB5_PREAUTH_BAD_TYPE                    (-1765328176L)
2657#define MIT_KRB5_PREAUTH_NO_KEY                      (-1765328175L)
2658#define MIT_KRB5_PREAUTH_FAILED                      (-1765328174L)
2659#define MIT_KRB5_RCACHE_BADVNO                       (-1765328173L)
2660#define MIT_KRB5_CCACHE_BADVNO                       (-1765328172L)
2661#define MIT_KRB5_KEYTAB_BADVNO                       (-1765328171L)
2662#define MIT_KRB5_PROG_ATYPE_NOSUPP                   (-1765328170L)
2663#define MIT_KRB5_RC_REQUIRED                         (-1765328169L)
2664#define MIT_KRB5_ERR_BAD_HOSTNAME                    (-1765328168L)
2665#define MIT_KRB5_ERR_HOST_REALM_UNKNOWN              (-1765328167L)
2666#define MIT_KRB5_SNAME_UNSUPP_NAMETYPE               (-1765328166L)
2667#define MIT_KRB5KRB_AP_ERR_V4_REPLY                  (-1765328165L)
2668#define MIT_KRB5_REALM_CANT_RESOLVE                  (-1765328164L)
2669#define MIT_KRB5_TKT_NOT_FORWARDABLE                 (-1765328163L)
2670#define MIT_KRB5_FWD_BAD_PRINCIPAL                   (-1765328162L)
2671#define MIT_KRB5_GET_IN_TKT_LOOP                     (-1765328161L)
2672#define MIT_KRB5_CONFIG_NODEFREALM                   (-1765328160L)
2673#define MIT_KRB5_SAM_UNSUPPORTED                     (-1765328159L)
2674#define MIT_KRB5_SAM_INVALID_ETYPE                   (-1765328158L)
2675#define MIT_KRB5_SAM_NO_CHECKSUM                     (-1765328157L)
2676#define MIT_KRB5_SAM_BAD_CHECKSUM                    (-1765328156L)
2677#define MIT_KRB5_KT_NAME_TOOLONG                     (-1765328155L)
2678#define MIT_KRB5_KT_KVNONOTFOUND                     (-1765328154L)
2679#define MIT_KRB5_APPL_EXPIRED                        (-1765328153L)
2680#define MIT_KRB5_LIB_EXPIRED                         (-1765328152L)
2681#define MIT_KRB5_CHPW_PWDNULL                        (-1765328151L)
2682#define MIT_KRB5_CHPW_FAIL                           (-1765328150L)
2683#define MIT_KRB5_KT_FORMAT                           (-1765328149L)
2684#define MIT_KRB5_NOPERM_ETYPE                        (-1765328148L)
2685#define MIT_KRB5_CONFIG_ETYPE_NOSUPP                 (-1765328147L)
2686#define MIT_KRB5_OBSOLETE_FN                         (-1765328146L)
2687#define MIT_KRB5_EAI_FAIL                            (-1765328145L)
2688#define MIT_KRB5_EAI_NODATA                          (-1765328144L)
2689#define MIT_KRB5_EAI_NONAME                          (-1765328143L)
2690#define MIT_KRB5_EAI_SERVICE                         (-1765328142L)
2691#define MIT_KRB5_ERR_NUMERIC_REALM                   (-1765328141L)
2692#define MIT_KRB5_ERR_BAD_S2K_PARAMS                  (-1765328140L)
2693#define MIT_KRB5_ERR_NO_SERVICE                      (-1765328139L)
2694#define MIT_KRB5_CC_READONLY                         (-1765328138L)
2695#define MIT_KRB5_CC_NOSUPP                           (-1765328137L)
2696#define MIT_KRB5_DELTAT_BADFORMAT                    (-1765328136L)
2697#define MIT_KRB5_PLUGIN_NO_HANDLE                    (-1765328135L)
2698#define MIT_KRB5_PLUGIN_OP_NOTSUPP                   (-1765328134L)
2699#define MIT_ERROR_TABLE_BASE_krb5 (-1765328384L)
2700
2701/*
2702 * et-h-kdb5_err.h:
2703 * This file is automatically generated; please do not edit it.
2704 */
2705
2706#include "mit-com_err.h"
2707
2708#define MIT_KRB5_KDB_RCSID                           (-1780008448L)
2709#define MIT_KRB5_KDB_INUSE                           (-1780008447L)
2710#define MIT_KRB5_KDB_UK_SERROR                       (-1780008446L)
2711#define MIT_KRB5_KDB_UK_RERROR                       (-1780008445L)
2712#define MIT_KRB5_KDB_UNAUTH                          (-1780008444L)
2713#define MIT_KRB5_KDB_NOENTRY                         (-1780008443L)
2714#define MIT_KRB5_KDB_ILL_WILDCARD                    (-1780008442L)
2715#define MIT_KRB5_KDB_DB_INUSE                        (-1780008441L)
2716#define MIT_KRB5_KDB_DB_CHANGED                      (-1780008440L)
2717#define MIT_KRB5_KDB_TRUNCATED_RECORD                (-1780008439L)
2718#define MIT_KRB5_KDB_RECURSIVELOCK                   (-1780008438L)
2719#define MIT_KRB5_KDB_NOTLOCKED                       (-1780008437L)
2720#define MIT_KRB5_KDB_BADLOCKMODE                     (-1780008436L)
2721#define MIT_KRB5_KDB_DBNOTINITED                     (-1780008435L)
2722#define MIT_KRB5_KDB_DBINITED                        (-1780008434L)
2723#define MIT_KRB5_KDB_ILLDIRECTION                    (-1780008433L)
2724#define MIT_KRB5_KDB_NOMASTERKEY                     (-1780008432L)
2725#define MIT_KRB5_KDB_BADMASTERKEY                    (-1780008431L)
2726#define MIT_KRB5_KDB_INVALIDKEYSIZE                  (-1780008430L)
2727#define MIT_KRB5_KDB_CANTREAD_STORED                 (-1780008429L)
2728#define MIT_KRB5_KDB_BADSTORED_MKEY                  (-1780008428L)
2729#define MIT_KRB5_KDB_CANTLOCK_DB                     (-1780008427L)
2730#define MIT_KRB5_KDB_DB_CORRUPT                      (-1780008426L)
2731#define MIT_KRB5_KDB_BAD_VERSION                     (-1780008425L)
2732#define MIT_KRB5_KDB_BAD_SALTTYPE                    (-1780008424L)
2733#define MIT_KRB5_KDB_BAD_ENCTYPE                     (-1780008423L)
2734#define MIT_KRB5_KDB_BAD_CREATEFLAGS                 (-1780008422L)
2735#define MIT_KRB5_KDB_NO_PERMITTED_KEY                (-1780008421L)
2736#define MIT_KRB5_KDB_NO_MATCHING_KEY                 (-1780008420L)
2737#define MIT_KRB5_KDB_DBTYPE_NOTFOUND                 (-1780008419L)
2738#define MIT_KRB5_KDB_DBTYPE_NOSUP                    (-1780008418L)
2739#define MIT_KRB5_KDB_DBTYPE_INIT                     (-1780008417L)
2740#define MIT_KRB5_KDB_SERVER_INTERNAL_ERR             (-1780008416L)
2741#define MIT_KRB5_KDB_ACCESS_ERROR                    (-1780008415L)
2742#define MIT_KRB5_KDB_INTERNAL_ERROR                  (-1780008414L)
2743#define MIT_KRB5_KDB_CONSTRAINT_VIOLATION            (-1780008413L)
2744#define MIT_KRB5_LOG_CONV                            (-1780008412L)
2745#define MIT_KRB5_LOG_UNSTABLE                        (-1780008411L)
2746#define MIT_KRB5_LOG_CORRUPT                         (-1780008410L)
2747#define MIT_KRB5_LOG_ERROR                           (-1780008409L)
2748#define MIT_ERROR_TABLE_BASE_kdb5 (-1780008448L)
2749
2750/*
2751 * et-h-kv5m_err.h:
2752 * This file is automatically generated; please do not edit it.
2753 */
2754
2755#include "mit-com_err.h"
2756
2757#define MIT_KV5M_NONE                                (-1760647424L)
2758#define MIT_KV5M_PRINCIPAL                           (-1760647423L)
2759#define MIT_KV5M_DATA                                (-1760647422L)
2760#define MIT_KV5M_KEYBLOCK                            (-1760647421L)
2761#define MIT_KV5M_CHECKSUM                            (-1760647420L)
2762#define MIT_KV5M_ENCRYPT_BLOCK                       (-1760647419L)
2763#define MIT_KV5M_ENC_DATA                            (-1760647418L)
2764#define MIT_KV5M_CRYPTOSYSTEM_ENTRY                  (-1760647417L)
2765#define MIT_KV5M_CS_TABLE_ENTRY                      (-1760647416L)
2766#define MIT_KV5M_CHECKSUM_ENTRY                      (-1760647415L)
2767#define MIT_KV5M_AUTHDATA                            (-1760647414L)
2768#define MIT_KV5M_TRANSITED                           (-1760647413L)
2769#define MIT_KV5M_ENC_TKT_PART                        (-1760647412L)
2770#define MIT_KV5M_TICKET                              (-1760647411L)
2771#define MIT_KV5M_AUTHENTICATOR                       (-1760647410L)
2772#define MIT_KV5M_TKT_AUTHENT                         (-1760647409L)
2773#define MIT_KV5M_CREDS                               (-1760647408L)
2774#define MIT_KV5M_LAST_REQ_ENTRY                      (-1760647407L)
2775#define MIT_KV5M_PA_DATA                             (-1760647406L)
2776#define MIT_KV5M_KDC_REQ                             (-1760647405L)
2777#define MIT_KV5M_ENC_KDC_REP_PART                    (-1760647404L)
2778#define MIT_KV5M_KDC_REP                             (-1760647403L)
2779#define MIT_KV5M_ERROR                               (-1760647402L)
2780#define MIT_KV5M_AP_REQ                              (-1760647401L)
2781#define MIT_KV5M_AP_REP                              (-1760647400L)
2782#define MIT_KV5M_AP_REP_ENC_PART                     (-1760647399L)
2783#define MIT_KV5M_RESPONSE                            (-1760647398L)
2784#define MIT_KV5M_SAFE                                (-1760647397L)
2785#define MIT_KV5M_PRIV                                (-1760647396L)
2786#define MIT_KV5M_PRIV_ENC_PART                       (-1760647395L)
2787#define MIT_KV5M_CRED                                (-1760647394L)
2788#define MIT_KV5M_CRED_INFO                           (-1760647393L)
2789#define MIT_KV5M_CRED_ENC_PART                       (-1760647392L)
2790#define MIT_KV5M_PWD_DATA                            (-1760647391L)
2791#define MIT_KV5M_ADDRESS                             (-1760647390L)
2792#define MIT_KV5M_KEYTAB_ENTRY                        (-1760647389L)
2793#define MIT_KV5M_CONTEXT                             (-1760647388L)
2794#define MIT_KV5M_OS_CONTEXT                          (-1760647387L)
2795#define MIT_KV5M_ALT_METHOD                          (-1760647386L)
2796#define MIT_KV5M_ETYPE_INFO_ENTRY                    (-1760647385L)
2797#define MIT_KV5M_DB_CONTEXT                          (-1760647384L)
2798#define MIT_KV5M_AUTH_CONTEXT                        (-1760647383L)
2799#define MIT_KV5M_KEYTAB                              (-1760647382L)
2800#define MIT_KV5M_RCACHE                              (-1760647381L)
2801#define MIT_KV5M_CCACHE                              (-1760647380L)
2802#define MIT_KV5M_PREAUTH_OPS                         (-1760647379L)
2803#define MIT_KV5M_SAM_CHALLENGE                       (-1760647378L)
2804#define MIT_KV5M_SAM_CHALLENGE_2                     (-1760647377L)
2805#define MIT_KV5M_SAM_KEY                             (-1760647376L)
2806#define MIT_KV5M_ENC_SAM_RESPONSE_ENC                (-1760647375L)
2807#define MIT_KV5M_ENC_SAM_RESPONSE_ENC_2              (-1760647374L)
2808#define MIT_KV5M_SAM_RESPONSE                        (-1760647373L)
2809#define MIT_KV5M_SAM_RESPONSE_2                      (-1760647372L)
2810#define MIT_KV5M_PREDICTED_SAM_RESPONSE              (-1760647371L)
2811#define MIT_KV5M_PASSWD_PHRASE_ELEMENT               (-1760647370L)
2812#define MIT_KV5M_GSS_OID                             (-1760647369L)
2813#define MIT_KV5M_GSS_QUEUE                           (-1760647368L)
2814#define MIT_ERROR_TABLE_BASE_kv5m (-1760647424L)
2815
2816/*
2817 * et-h-krb524_err.h:
2818 * This file is automatically generated; please do not edit it.
2819 */
2820
2821#include "mit-com_err.h"
2822
2823#define MIT_KRB524_BADKEY                            (-1750206208L)
2824#define MIT_KRB524_BADADDR                           (-1750206207L)
2825#define MIT_KRB524_BADPRINC                          (-1750206206L)
2826#define MIT_KRB524_BADREALM                          (-1750206205L)
2827#define MIT_KRB524_V4ERR                             (-1750206204L)
2828#define MIT_KRB524_ENCFULL                           (-1750206203L)
2829#define MIT_KRB524_DECEMPTY                          (-1750206202L)
2830#define MIT_KRB524_NOTRESP                           (-1750206201L)
2831#define MIT_KRB524_KRB4_DISABLED                     (-1750206200L)
2832#define MIT_ERROR_TABLE_BASE_k524 (-1750206208L)
2833
2834/*
2835 * et-h-asn1_err.h:
2836 * This file is automatically generated; please do not edit it.
2837 */
2838
2839#include "mit-com_err.h"
2840
2841#define MIT_ASN1_BAD_TIMEFORMAT                      (1859794432L)
2842#define MIT_ASN1_MISSING_FIELD                       (1859794433L)
2843#define MIT_ASN1_MISPLACED_FIELD                     (1859794434L)
2844#define MIT_ASN1_TYPE_MISMATCH                       (1859794435L)
2845#define MIT_ASN1_OVERFLOW                            (1859794436L)
2846#define MIT_ASN1_OVERRUN                             (1859794437L)
2847#define MIT_ASN1_BAD_ID                              (1859794438L)
2848#define MIT_ASN1_BAD_LENGTH                          (1859794439L)
2849#define MIT_ASN1_BAD_FORMAT                          (1859794440L)
2850#define MIT_ASN1_PARSE_ERROR                         (1859794441L)
2851#define MIT_ASN1_BAD_GMTIME                          (1859794442L)
2852#define MIT_ASN1_MISMATCH_INDEF                      (1859794443L)
2853#define MIT_ASN1_MISSING_EOC                         (1859794444L)
2854#define MIT_ERROR_TABLE_BASE_asn1 (1859794432L)
2855
2856#endif /* KRB5_KRB5_H_INCLUDED */
2857
2858#endif /* __KERBEROS5__ */
2859