xref: /illumos-gate/usr/src/uts/common/gssapi/mechs/krb5/include/krb5.h (revision eb42280b2139f489ab9ba5890cd6208cf3e58b38)
17c478bd9Sstevel@tonic-gate /*
2db02be57S  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
37c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
47c478bd9Sstevel@tonic-gate  */
57c478bd9Sstevel@tonic-gate 
67c478bd9Sstevel@tonic-gate /* This is the prologue to krb5.h */
77c478bd9Sstevel@tonic-gate /* Unfortunately some of these defines are compiler dependent */
87c478bd9Sstevel@tonic-gate #ifndef _KRB5_H
97c478bd9Sstevel@tonic-gate #define _KRB5_H
107c478bd9Sstevel@tonic-gate 
117c478bd9Sstevel@tonic-gate 
127c478bd9Sstevel@tonic-gate #define SIZEOF_INT 4
137c478bd9Sstevel@tonic-gate 
147c478bd9Sstevel@tonic-gate #ifdef _LP64
157c478bd9Sstevel@tonic-gate #define SIZEOF_LONG 8
167c478bd9Sstevel@tonic-gate #else
177c478bd9Sstevel@tonic-gate #define SIZEOF_LONG 4
187c478bd9Sstevel@tonic-gate #endif
197c478bd9Sstevel@tonic-gate 
207c478bd9Sstevel@tonic-gate #define SIZEOF_SHORT 2
217c478bd9Sstevel@tonic-gate #define HAVE_STDARG_H 1
227c478bd9Sstevel@tonic-gate #define HAVE_SYS_TYPES_H 1
237c478bd9Sstevel@tonic-gate /* End of prologue section */
247c478bd9Sstevel@tonic-gate /*
257c478bd9Sstevel@tonic-gate  * include/krb5.h
267c478bd9Sstevel@tonic-gate  *
27fe598cdcSmp  * Copyright 1989,1990,1995,2001, 2003  by the Massachusetts Institute of Technology.
287c478bd9Sstevel@tonic-gate  * All Rights Reserved.
297c478bd9Sstevel@tonic-gate  *
307c478bd9Sstevel@tonic-gate  * Export of this software from the United States of America may
317c478bd9Sstevel@tonic-gate  *   require a specific license from the United States Government.
327c478bd9Sstevel@tonic-gate  *   It is the responsibility of any person or organization contemplating
337c478bd9Sstevel@tonic-gate  *   export to obtain such a license before exporting.
34fe598cdcSmp  *
357c478bd9Sstevel@tonic-gate  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
367c478bd9Sstevel@tonic-gate  * distribute this software and its documentation for any purpose and
377c478bd9Sstevel@tonic-gate  * without fee is hereby granted, provided that the above copyright
387c478bd9Sstevel@tonic-gate  * notice appear in all copies and that both that copyright notice and
397c478bd9Sstevel@tonic-gate  * this permission notice appear in supporting documentation, and that
407c478bd9Sstevel@tonic-gate  * the name of M.I.T. not be used in advertising or publicity pertaining
417c478bd9Sstevel@tonic-gate  * to distribution of the software without specific, written prior
427c478bd9Sstevel@tonic-gate  * permission.	Furthermore if you modify this software you must label
437c478bd9Sstevel@tonic-gate  * your software as modified software and not distribute it in such a
447c478bd9Sstevel@tonic-gate  * fashion that it might be confused with the original M.I.T. software.
457c478bd9Sstevel@tonic-gate  * M.I.T. makes no representations about the suitability of
467c478bd9Sstevel@tonic-gate  * this software for any purpose.  It is provided "as is" without express
477c478bd9Sstevel@tonic-gate  * or implied warranty.
48159d09a2SMark Phalan  *
497c478bd9Sstevel@tonic-gate  *
507c478bd9Sstevel@tonic-gate  * General definitions for Kerberos version 5.
517c478bd9Sstevel@tonic-gate  */
527c478bd9Sstevel@tonic-gate 
537c478bd9Sstevel@tonic-gate /*
547c478bd9Sstevel@tonic-gate  * Copyright (C) 1998 by the FundsXpress, INC.
55159d09a2SMark Phalan  *
567c478bd9Sstevel@tonic-gate  * All rights reserved.
57159d09a2SMark Phalan  *
587c478bd9Sstevel@tonic-gate  * Export of this software from the United States of America may require
597c478bd9Sstevel@tonic-gate  * a specific license from the United States Government.  It is the
607c478bd9Sstevel@tonic-gate  * responsibility of any person or organization contemplating export to
617c478bd9Sstevel@tonic-gate  * obtain such a license before exporting.
62159d09a2SMark Phalan  *
637c478bd9Sstevel@tonic-gate  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
647c478bd9Sstevel@tonic-gate  * distribute this software and its documentation for any purpose and
657c478bd9Sstevel@tonic-gate  * without fee is hereby granted, provided that the above copyright
667c478bd9Sstevel@tonic-gate  * notice appear in all copies and that both that copyright notice and
677c478bd9Sstevel@tonic-gate  * this permission notice appear in supporting documentation, and that
687c478bd9Sstevel@tonic-gate  * the name of FundsXpress. not be used in advertising or publicity pertaining
697c478bd9Sstevel@tonic-gate  * to distribution of the software without specific, written prior
707c478bd9Sstevel@tonic-gate  * permission.  FundsXpress makes no representations about the suitability of
717c478bd9Sstevel@tonic-gate  * this software for any purpose.  It is provided "as is" without express
727c478bd9Sstevel@tonic-gate  * or implied warranty.
73159d09a2SMark Phalan  *
747c478bd9Sstevel@tonic-gate  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
757c478bd9Sstevel@tonic-gate  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
767c478bd9Sstevel@tonic-gate  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
777c478bd9Sstevel@tonic-gate  */
787c478bd9Sstevel@tonic-gate 
797c478bd9Sstevel@tonic-gate #ifndef KRB5_GENERAL__
807c478bd9Sstevel@tonic-gate #define KRB5_GENERAL__
817c478bd9Sstevel@tonic-gate 
827c478bd9Sstevel@tonic-gate #ifdef	_KERNEL
837c478bd9Sstevel@tonic-gate #include <sys/systm.h>
847c478bd9Sstevel@tonic-gate #include <sys/kmem.h>
857c478bd9Sstevel@tonic-gate 
867c478bd9Sstevel@tonic-gate #include <sys/crypto/common.h>
877c478bd9Sstevel@tonic-gate #include <sys/crypto/api.h>
887c478bd9Sstevel@tonic-gate 
897c478bd9Sstevel@tonic-gate /*
907c478bd9Sstevel@tonic-gate  * Just to be safe lets make sure the buffers are zero'ed after
917c478bd9Sstevel@tonic-gate  * malloc() as some code assumes this is the case.  To avoid warnings
927c478bd9Sstevel@tonic-gate  * of duplicated defines let remove the old one if present.
937c478bd9Sstevel@tonic-gate  */
947c478bd9Sstevel@tonic-gate #ifdef MALLOC
957c478bd9Sstevel@tonic-gate #undef MALLOC
967c478bd9Sstevel@tonic-gate #endif
977c478bd9Sstevel@tonic-gate #define MALLOC(n) kmem_zalloc((n), KM_SLEEP)
987c478bd9Sstevel@tonic-gate 
997c478bd9Sstevel@tonic-gate #define	FREE(x, n) kmem_free((x), (n))
1007c478bd9Sstevel@tonic-gate #define CALLOC(n, s) kmem_zalloc((n)*(s), KM_SLEEP)
1017c478bd9Sstevel@tonic-gate #define strcpy(dst,src,n) bcopy((src),(dst),(n))
1027c478bd9Sstevel@tonic-gate #define mutex_lock(lck)  mutex_enter(lck)
1037c478bd9Sstevel@tonic-gate #define mutex_unlock(lck)  mutex_exit(lck)
1047c478bd9Sstevel@tonic-gate 
1057c478bd9Sstevel@tonic-gate #else /* !_KERNEL */
1067c478bd9Sstevel@tonic-gate #define	MALLOC(n) malloc(n)
1077c478bd9Sstevel@tonic-gate #define	FREE(x, n) free(x)
1087c478bd9Sstevel@tonic-gate #define CALLOC(n, s) calloc((n), (s))
1097c478bd9Sstevel@tonic-gate #include <stdlib.h>
1107c478bd9Sstevel@tonic-gate #include <thread.h>
1117c478bd9Sstevel@tonic-gate #include <synch.h>
1127c478bd9Sstevel@tonic-gate #include <security/cryptoki.h>
113505d05c7Sgtb #include <limits.h>    /* for *_MAX */
1147c478bd9Sstevel@tonic-gate #endif /* _KERNEL */
1157c478bd9Sstevel@tonic-gate 
116505d05c7Sgtb /* By default, do not expose deprecated interfaces. */
117505d05c7Sgtb /* SUNW14resync - we need to enable this for rlogind and such */
118505d05c7Sgtb #ifndef KRB5_DEPRECATED
119505d05c7Sgtb #define KRB5_DEPRECATED 1
120505d05c7Sgtb #endif
121505d05c7Sgtb /* Do not expose private interfaces.  Build system will override. */
122505d05c7Sgtb /* SUNW14resync - for the Solaris build we set it to 1 here */
123505d05c7Sgtb #ifndef KRB5_PRIVATE
124505d05c7Sgtb #define KRB5_PRIVATE 1
125505d05c7Sgtb #endif
126505d05c7Sgtb 
127159d09a2SMark Phalan #if defined(__MACH__) && defined(__APPLE__)
128159d09a2SMark Phalan #	include <TargetConditionals.h>
129159d09a2SMark Phalan #    if TARGET_RT_MAC_CFM
130159d09a2SMark Phalan #	error "Use KfM 4.0 SDK headers for CFM compilation."
131159d09a2SMark Phalan #    endif
132505d05c7Sgtb #endif
1337c478bd9Sstevel@tonic-gate 
134159d09a2SMark Phalan #if defined(_MSDOS) || defined(_WIN32)
1357c478bd9Sstevel@tonic-gate #include <win-mac.h>
1367c478bd9Sstevel@tonic-gate #endif
1377c478bd9Sstevel@tonic-gate 
1387c478bd9Sstevel@tonic-gate #ifndef KRB5_CONFIG__
1397c478bd9Sstevel@tonic-gate #ifndef KRB5_CALLCONV
1407c478bd9Sstevel@tonic-gate #define KRB5_CALLCONV
1417c478bd9Sstevel@tonic-gate #define KRB5_CALLCONV_C
1427c478bd9Sstevel@tonic-gate #endif /* !KRB5_CALLCONV */
1437c478bd9Sstevel@tonic-gate #endif /* !KRB5_CONFIG__ */
1447c478bd9Sstevel@tonic-gate 
145505d05c7Sgtb #ifndef KRB5_CALLCONV_WRONG
146505d05c7Sgtb #define KRB5_CALLCONV_WRONG
147505d05c7Sgtb #endif
148505d05c7Sgtb 
149505d05c7Sgtb /* SUNW14resync XXX */
1507c478bd9Sstevel@tonic-gate #include <sys/types.h>
1517c478bd9Sstevel@tonic-gate #include <sys/socket.h>
1527c478bd9Sstevel@tonic-gate 
1537c478bd9Sstevel@tonic-gate #ifndef THREEPARAMOPEN
1547c478bd9Sstevel@tonic-gate #define THREEPARAMOPEN(x,y,z) open(x,y,z)
1557c478bd9Sstevel@tonic-gate #endif
1567c478bd9Sstevel@tonic-gate 
157505d05c7Sgtb 
1587c478bd9Sstevel@tonic-gate /*
1597c478bd9Sstevel@tonic-gate  * Solaris Kerberos:
16010db1377Sgtb  *   Samba needs a couple of these interfaces so old crypto is enabled.
1617c478bd9Sstevel@tonic-gate  */
16210db1377Sgtb #define KRB5_OLD_CRYPTO
1637c478bd9Sstevel@tonic-gate 
1647c478bd9Sstevel@tonic-gate 
165159d09a2SMark Phalan #ifndef KRB5INT_BEGIN_DECLS
166159d09a2SMark Phalan #if defined(__cplusplus)
167159d09a2SMark Phalan #define KRB5INT_BEGIN_DECLS	extern "C" {
168159d09a2SMark Phalan #define KRB5INT_END_DECLS	}
169159d09a2SMark Phalan #else
170159d09a2SMark Phalan #define KRB5INT_BEGIN_DECLS
171159d09a2SMark Phalan #define KRB5INT_END_DECLS
172159d09a2SMark Phalan #endif
173159d09a2SMark Phalan #endif
1747c478bd9Sstevel@tonic-gate 
175*eb42280bSWill Fiveash KRB5INT_BEGIN_DECLS
176*eb42280bSWill Fiveash 
177505d05c7Sgtb #if TARGET_OS_MAC
178505d05c7Sgtb #    pragma options align=mac68k
1797c478bd9Sstevel@tonic-gate #endif
1807c478bd9Sstevel@tonic-gate 
181505d05c7Sgtb /* from profile.h */
182505d05c7Sgtb struct _profile_t;
183505d05c7Sgtb /* typedef struct _profile_t *profile_t; */
184505d05c7Sgtb 
1857c478bd9Sstevel@tonic-gate /*
1867c478bd9Sstevel@tonic-gate  * begin wordsize.h
1877c478bd9Sstevel@tonic-gate  */
1887c478bd9Sstevel@tonic-gate 
1897c478bd9Sstevel@tonic-gate /*
1907c478bd9Sstevel@tonic-gate  * Word-size related definition.
1917c478bd9Sstevel@tonic-gate  */
1927c478bd9Sstevel@tonic-gate 
1937c478bd9Sstevel@tonic-gate typedef	unsigned char	krb5_octet;
1947c478bd9Sstevel@tonic-gate 
195505d05c7Sgtb #if INT_MAX == 0x7fff
1967c478bd9Sstevel@tonic-gate typedef	int	krb5_int16;
1977c478bd9Sstevel@tonic-gate typedef	unsigned int	krb5_ui_2;
198505d05c7Sgtb #elif SHRT_MAX == 0x7fff
1997c478bd9Sstevel@tonic-gate typedef	short	krb5_int16;
2007c478bd9Sstevel@tonic-gate typedef	unsigned short	krb5_ui_2;
2017c478bd9Sstevel@tonic-gate #else
202505d05c7Sgtb #error undefined 16 bit type
2037c478bd9Sstevel@tonic-gate #endif
2047c478bd9Sstevel@tonic-gate 
205505d05c7Sgtb #if INT_MAX == 0x7fffffffL
206159d09a2SMark Phalan typedef	int	krb5_int32;
2077c478bd9Sstevel@tonic-gate typedef	unsigned int	krb5_ui_4;
208505d05c7Sgtb #elif LONG_MAX == 0x7fffffffL
2097c478bd9Sstevel@tonic-gate typedef	long	krb5_int32;
2107c478bd9Sstevel@tonic-gate typedef	unsigned long	krb5_ui_4;
211505d05c7Sgtb #elif SHRT_MAX == 0x7fffffffL
2127c478bd9Sstevel@tonic-gate typedef	short	krb5_int32;
2137c478bd9Sstevel@tonic-gate typedef	unsigned short	krb5_ui_4;
2147c478bd9Sstevel@tonic-gate #else
215505d05c7Sgtb #error: undefined 32 bit type
2167c478bd9Sstevel@tonic-gate #endif
2177c478bd9Sstevel@tonic-gate 
218159d09a2SMark Phalan #define VALID_INT_BITS	  INT_MAX
219159d09a2SMark Phalan #define VALID_UINT_BITS	  UINT_MAX
220505d05c7Sgtb 
2217c478bd9Sstevel@tonic-gate #define KRB5_INT32_MAX	2147483647
2227c478bd9Sstevel@tonic-gate /* this strange form is necessary since - is a unary operator, not a sign
2237c478bd9Sstevel@tonic-gate    indicator */
2247c478bd9Sstevel@tonic-gate #define KRB5_INT32_MIN	(-KRB5_INT32_MAX-1)
2257c478bd9Sstevel@tonic-gate 
2267c478bd9Sstevel@tonic-gate #define KRB5_INT16_MAX 65535
2277c478bd9Sstevel@tonic-gate /* this strange form is necessary since - is a unary operator, not a sign
2287c478bd9Sstevel@tonic-gate    indicator */
2297c478bd9Sstevel@tonic-gate #define KRB5_INT16_MIN	(-KRB5_INT16_MAX-1)
2307c478bd9Sstevel@tonic-gate 
2317c478bd9Sstevel@tonic-gate /*
2327c478bd9Sstevel@tonic-gate  * end wordsize.h
2337c478bd9Sstevel@tonic-gate  */
2347c478bd9Sstevel@tonic-gate 
2357c478bd9Sstevel@tonic-gate /*
2367c478bd9Sstevel@tonic-gate  * begin "base-defs.h"
2377c478bd9Sstevel@tonic-gate  */
2387c478bd9Sstevel@tonic-gate 
2397c478bd9Sstevel@tonic-gate /*
2407c478bd9Sstevel@tonic-gate  * Basic definitions for Kerberos V5 library
2417c478bd9Sstevel@tonic-gate  */
2427c478bd9Sstevel@tonic-gate 
2437c478bd9Sstevel@tonic-gate #ifndef FALSE
2447c478bd9Sstevel@tonic-gate #define	FALSE	0
2457c478bd9Sstevel@tonic-gate #endif
2467c478bd9Sstevel@tonic-gate #ifndef TRUE
2477c478bd9Sstevel@tonic-gate #define	TRUE	1
2487c478bd9Sstevel@tonic-gate #endif
2497c478bd9Sstevel@tonic-gate 
2507c478bd9Sstevel@tonic-gate typedef	unsigned int krb5_boolean;
2517c478bd9Sstevel@tonic-gate typedef	unsigned int krb5_msgtype;
2527c478bd9Sstevel@tonic-gate typedef	unsigned int krb5_kvno;
2537c478bd9Sstevel@tonic-gate 
254159d09a2SMark Phalan typedef	krb5_int32 krb5_addrtype;
255159d09a2SMark Phalan typedef krb5_int32 krb5_enctype;
256159d09a2SMark Phalan typedef krb5_int32 krb5_cksumtype;
257159d09a2SMark Phalan typedef krb5_int32 krb5_authdatatype;
258159d09a2SMark Phalan typedef krb5_int32 krb5_keyusage;
2597c478bd9Sstevel@tonic-gate 
2607c478bd9Sstevel@tonic-gate typedef krb5_int32	krb5_preauthtype; /* This may change, later on */
2617c478bd9Sstevel@tonic-gate typedef	krb5_int32	krb5_flags;
2627c478bd9Sstevel@tonic-gate typedef krb5_int32	krb5_timestamp;
2637c478bd9Sstevel@tonic-gate typedef	krb5_int32	krb5_error_code;
2647c478bd9Sstevel@tonic-gate typedef krb5_int32	krb5_deltat;
2657c478bd9Sstevel@tonic-gate 
2667c478bd9Sstevel@tonic-gate typedef krb5_error_code	krb5_magic;
2677c478bd9Sstevel@tonic-gate 
2687c478bd9Sstevel@tonic-gate typedef struct _krb5_data {
269159d09a2SMark Phalan 	krb5_magic magic;
270159d09a2SMark Phalan 	unsigned int length;
271159d09a2SMark Phalan 	char *data;
2727c478bd9Sstevel@tonic-gate } krb5_data;
2737c478bd9Sstevel@tonic-gate 
274159d09a2SMark Phalan typedef struct _krb5_octet_data {
275159d09a2SMark Phalan 	krb5_magic magic;
276159d09a2SMark Phalan 	unsigned int length;
277159d09a2SMark Phalan 	krb5_octet *data;
278159d09a2SMark Phalan } krb5_octet_data;
279159d09a2SMark Phalan 
280505d05c7Sgtb /*
281159d09a2SMark Phalan  * Hack length for crypto library to use the afs_string_to_key It is
282159d09a2SMark Phalan  * equivalent to -1 without possible sign extension
283159d09a2SMark Phalan  * We also overload for an unset salt type length - which is also -1, but
284159d09a2SMark Phalan  * hey, why not....
285159d09a2SMark Phalan */
286159d09a2SMark Phalan #define SALT_TYPE_AFS_LENGTH UINT_MAX
287159d09a2SMark Phalan #define SALT_TYPE_NO_LENGTH  UINT_MAX
2887c478bd9Sstevel@tonic-gate 
289159d09a2SMark Phalan typedef	void * krb5_pointer;
290159d09a2SMark Phalan typedef void const * krb5_const_pointer;
2917c478bd9Sstevel@tonic-gate 
2927c478bd9Sstevel@tonic-gate typedef struct krb5_principal_data {
2937c478bd9Sstevel@tonic-gate     krb5_magic magic;
2947c478bd9Sstevel@tonic-gate     krb5_data realm;
2957c478bd9Sstevel@tonic-gate     krb5_data *data;		/* An array of strings */
2967c478bd9Sstevel@tonic-gate     krb5_int32 length;
2977c478bd9Sstevel@tonic-gate     krb5_int32 type;
2987c478bd9Sstevel@tonic-gate } krb5_principal_data;
2997c478bd9Sstevel@tonic-gate 
3007c478bd9Sstevel@tonic-gate typedef	krb5_principal_data * krb5_principal;
3017c478bd9Sstevel@tonic-gate 
3027c478bd9Sstevel@tonic-gate /*
3037c478bd9Sstevel@tonic-gate  * Per V5 spec on definition of principal types
3047c478bd9Sstevel@tonic-gate  */
3057c478bd9Sstevel@tonic-gate 
3067c478bd9Sstevel@tonic-gate /* Name type not known */
3077c478bd9Sstevel@tonic-gate #define KRB5_NT_UNKNOWN		0
3087c478bd9Sstevel@tonic-gate /* Just the name of the principal as in DCE, or for users */
3097c478bd9Sstevel@tonic-gate #define KRB5_NT_PRINCIPAL	1
3107c478bd9Sstevel@tonic-gate /* Service and other unique instance (krbtgt) */
3117c478bd9Sstevel@tonic-gate #define KRB5_NT_SRV_INST	2
3127c478bd9Sstevel@tonic-gate /* Service with host name as instance (telnet, rcommands) */
3137c478bd9Sstevel@tonic-gate #define KRB5_NT_SRV_HST		3
3147c478bd9Sstevel@tonic-gate /* Service with host as remaining components */
3157c478bd9Sstevel@tonic-gate #define KRB5_NT_SRV_XHST	4
3167c478bd9Sstevel@tonic-gate /* Unique ID */
3177c478bd9Sstevel@tonic-gate #define KRB5_NT_UID		5
3187c478bd9Sstevel@tonic-gate 
3197c478bd9Sstevel@tonic-gate /* constant version thereof: */
320505d05c7Sgtb typedef const krb5_principal_data *krb5_const_principal;
3217c478bd9Sstevel@tonic-gate 
3227c478bd9Sstevel@tonic-gate #define krb5_princ_realm(context, princ) (&(princ)->realm)
3237c478bd9Sstevel@tonic-gate #define krb5_princ_set_realm(context, princ,value) ((princ)->realm = *(value))
3247c478bd9Sstevel@tonic-gate #define krb5_princ_set_realm_length(context, princ,value) (princ)->realm.length = (value)
3257c478bd9Sstevel@tonic-gate #define krb5_princ_set_realm_data(context, princ,value) (princ)->realm.data = (value)
3267c478bd9Sstevel@tonic-gate #define	krb5_princ_size(context, princ) (princ)->length
3277c478bd9Sstevel@tonic-gate #define	krb5_princ_type(context, princ) (princ)->type
3287c478bd9Sstevel@tonic-gate #define	krb5_princ_name(context, princ) (princ)->data
329159d09a2SMark Phalan #define	krb5_princ_component(context, princ,i)		\
330159d09a2SMark Phalan 	    (((i) < krb5_princ_size(context, princ))	\
331159d09a2SMark Phalan 	     ? (princ)->data + (i)			\
332159d09a2SMark Phalan 	     : NULL)
3337c478bd9Sstevel@tonic-gate 
334fe598cdcSmp /*
335fe598cdcSmp  * Constants for realm referrals.
336fe598cdcSmp  */
337fe598cdcSmp #define        KRB5_REFERRAL_REALM	""
338fe598cdcSmp 
339fe598cdcSmp /*
340fe598cdcSmp  * Referral-specific functions.
341fe598cdcSmp  */
342fe598cdcSmp krb5_boolean KRB5_CALLCONV krb5_is_referral_realm(const krb5_data *);
343fe598cdcSmp 
3447c478bd9Sstevel@tonic-gate /*
3457c478bd9Sstevel@tonic-gate  * end "base-defs.h"
3467c478bd9Sstevel@tonic-gate  */
3477c478bd9Sstevel@tonic-gate 
3487c478bd9Sstevel@tonic-gate /*
3497c478bd9Sstevel@tonic-gate  * begin "hostaddr.h"
3507c478bd9Sstevel@tonic-gate  */
3517c478bd9Sstevel@tonic-gate 
3527c478bd9Sstevel@tonic-gate /* structure for address */
3537c478bd9Sstevel@tonic-gate typedef struct _krb5_address {
3547c478bd9Sstevel@tonic-gate     krb5_magic magic;
3557c478bd9Sstevel@tonic-gate     krb5_addrtype addrtype;
3567c478bd9Sstevel@tonic-gate     unsigned int length;
3577c478bd9Sstevel@tonic-gate     krb5_octet *contents;
3587c478bd9Sstevel@tonic-gate } krb5_address;
3597c478bd9Sstevel@tonic-gate 
3607c478bd9Sstevel@tonic-gate /* per Kerberos v5 protocol spec */
3617c478bd9Sstevel@tonic-gate #define	ADDRTYPE_INET		0x0002
3627c478bd9Sstevel@tonic-gate #define	ADDRTYPE_CHAOS		0x0005
3637c478bd9Sstevel@tonic-gate #define	ADDRTYPE_XNS		0x0006
3647c478bd9Sstevel@tonic-gate #define	ADDRTYPE_ISO		0x0007
365159d09a2SMark Phalan #define ADDRTYPE_DDP		0x0010
366159d09a2SMark Phalan #define ADDRTYPE_INET6		0x0018
3677c478bd9Sstevel@tonic-gate /* not yet in the spec... */
368159d09a2SMark Phalan #define ADDRTYPE_ADDRPORT	0x0100
369159d09a2SMark Phalan #define ADDRTYPE_IPPORT		0x0101
3707c478bd9Sstevel@tonic-gate 
3717c478bd9Sstevel@tonic-gate /* macros to determine if a type is a local type */
3727c478bd9Sstevel@tonic-gate #define ADDRTYPE_IS_LOCAL(addrtype) (addrtype & 0x8000)
3737c478bd9Sstevel@tonic-gate 
3747c478bd9Sstevel@tonic-gate /*
3757c478bd9Sstevel@tonic-gate  * end "hostaddr.h"
3767c478bd9Sstevel@tonic-gate  */
3777c478bd9Sstevel@tonic-gate 
3787c478bd9Sstevel@tonic-gate 
3797c478bd9Sstevel@tonic-gate struct _krb5_context;
3807c478bd9Sstevel@tonic-gate typedef struct _krb5_context * krb5_context;
3817c478bd9Sstevel@tonic-gate 
3827c478bd9Sstevel@tonic-gate struct _krb5_auth_context;
3837c478bd9Sstevel@tonic-gate typedef struct _krb5_auth_context * krb5_auth_context;
3847c478bd9Sstevel@tonic-gate 
3857c478bd9Sstevel@tonic-gate struct _krb5_cryptosystem_entry;
3867c478bd9Sstevel@tonic-gate 
387505d05c7Sgtb /* SUNW EF (I assume) crypto mods ... */
3887c478bd9Sstevel@tonic-gate struct _krb5_keyblock;
3897c478bd9Sstevel@tonic-gate 
3907c478bd9Sstevel@tonic-gate /*
3917c478bd9Sstevel@tonic-gate  * keyblocks will contain a list of derived keys,
3927c478bd9Sstevel@tonic-gate  * this  structure will contain the derived key data.
3937c478bd9Sstevel@tonic-gate  */
3947c478bd9Sstevel@tonic-gate typedef struct _dk_node {
3957c478bd9Sstevel@tonic-gate     krb5_keyusage   usage;
3967c478bd9Sstevel@tonic-gate     struct _krb5_keyblock   *derived_key;
3977c478bd9Sstevel@tonic-gate     uchar_t         dkid; /* derived key identifier byte */
3987c478bd9Sstevel@tonic-gate     struct _dk_node *next;
3997c478bd9Sstevel@tonic-gate } krb5_dk_node;
4007c478bd9Sstevel@tonic-gate 
4017c478bd9Sstevel@tonic-gate /*
4027c478bd9Sstevel@tonic-gate  * begin "encryption.h"
4037c478bd9Sstevel@tonic-gate  */
404159d09a2SMark Phalan 
4057c478bd9Sstevel@tonic-gate typedef struct _krb5_keyblock {
4067c478bd9Sstevel@tonic-gate     krb5_magic magic;
4077c478bd9Sstevel@tonic-gate     krb5_enctype enctype;
4087c478bd9Sstevel@tonic-gate     unsigned int length;
4097c478bd9Sstevel@tonic-gate     krb5_octet *contents;
4107c478bd9Sstevel@tonic-gate     krb5_dk_node   *dk_list; /* list of keys derived from this key */
4117c478bd9Sstevel@tonic-gate #ifdef _KERNEL
4127c478bd9Sstevel@tonic-gate     crypto_mech_type_t     kef_mt;
4137c478bd9Sstevel@tonic-gate     crypto_key_t           kef_key;
4147c478bd9Sstevel@tonic-gate     crypto_ctx_template_t  key_tmpl;
4157c478bd9Sstevel@tonic-gate #else
4167c478bd9Sstevel@tonic-gate     CK_OBJECT_HANDLE       hKey; /* PKCS#11 key object handle */
4177c478bd9Sstevel@tonic-gate     pid_t	pid; /* fork safety */
4187c478bd9Sstevel@tonic-gate #endif /* _KERNEL */
4197c478bd9Sstevel@tonic-gate } krb5_keyblock;
4207c478bd9Sstevel@tonic-gate 
4217c478bd9Sstevel@tonic-gate typedef struct _krb5_checksum {
4227c478bd9Sstevel@tonic-gate     krb5_magic magic;
4237c478bd9Sstevel@tonic-gate     krb5_cksumtype checksum_type;	/* checksum type */
4247c478bd9Sstevel@tonic-gate     unsigned int length;
4257c478bd9Sstevel@tonic-gate     krb5_octet *contents;
4267c478bd9Sstevel@tonic-gate } krb5_checksum;
4277c478bd9Sstevel@tonic-gate 
4287c478bd9Sstevel@tonic-gate typedef struct _krb5_encrypt_block {
4297c478bd9Sstevel@tonic-gate     krb5_magic magic;
4307c478bd9Sstevel@tonic-gate     krb5_enctype crypto_entry;		/* to call krb5_encrypt_size, you need
4317c478bd9Sstevel@tonic-gate 					   this.  it was a pointer, but it
4327c478bd9Sstevel@tonic-gate 					   doesn't have to be.  gross. */
4337c478bd9Sstevel@tonic-gate     krb5_keyblock *key;
4347c478bd9Sstevel@tonic-gate } krb5_encrypt_block;
4357c478bd9Sstevel@tonic-gate 
4367c478bd9Sstevel@tonic-gate typedef struct _krb5_enc_data {
4377c478bd9Sstevel@tonic-gate     krb5_magic magic;
4387c478bd9Sstevel@tonic-gate     krb5_enctype enctype;
4397c478bd9Sstevel@tonic-gate     krb5_kvno kvno;
4407c478bd9Sstevel@tonic-gate     krb5_data ciphertext;
4417c478bd9Sstevel@tonic-gate } krb5_enc_data;
4427c478bd9Sstevel@tonic-gate 
4437c478bd9Sstevel@tonic-gate /* per Kerberos v5 protocol spec */
4447c478bd9Sstevel@tonic-gate #define	ENCTYPE_NULL		0x0000
4457c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_CRC	0x0001	/* DES cbc mode with CRC-32 */
4467c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_MD4	0x0002	/* DES cbc mode with RSA-MD4 */
4477c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_MD5	0x0003	/* DES cbc mode with RSA-MD5 */
448159d09a2SMark Phalan #define	ENCTYPE_DES_CBC_RAW	0x0004	/* DES cbc mode raw */
4497c478bd9Sstevel@tonic-gate /* XXX deprecated? */
4507c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES3_CBC_SHA	0x0005	/* DES-3 cbc mode with NIST-SHA */
4517c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES3_CBC_RAW	0x0006	/* DES-3 cbc mode raw */
452159d09a2SMark Phalan #define ENCTYPE_DES_HMAC_SHA1	0x0008
453159d09a2SMark Phalan #define ENCTYPE_DES3_CBC_SHA1	0x0010
454159d09a2SMark Phalan #define ENCTYPE_AES128_CTS_HMAC_SHA1_96	0x0011
455159d09a2SMark Phalan #define ENCTYPE_AES256_CTS_HMAC_SHA1_96	0x0012
4567c478bd9Sstevel@tonic-gate #define ENCTYPE_ARCFOUR_HMAC	0x0017
4577c478bd9Sstevel@tonic-gate #define ENCTYPE_ARCFOUR_HMAC_EXP 0x0018
458159d09a2SMark Phalan #define ENCTYPE_UNKNOWN		0x01ff
4597c478bd9Sstevel@tonic-gate 
4607c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_CRC32		0x0001
4617c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD4	0x0002
4627c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD4_DES	0x0003
4637c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_DESCBC	0x0004
4647c478bd9Sstevel@tonic-gate /* des-mac-k */
4657c478bd9Sstevel@tonic-gate /* rsa-md4-des-k */
4667c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD5	0x0007
4677c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD5_DES	0x0008
468159d09a2SMark Phalan #define CKSUMTYPE_NIST_SHA	0x0009
469159d09a2SMark Phalan #define CKSUMTYPE_HMAC_SHA1_DES3	0x000c
4707c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_SHA1_96_AES128	0x000f
4717c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_SHA1_96_AES256	0x0010
4727c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_MD5_ARCFOUR -138 /*Microsoft md5 hmac cksumtype*/
4737c478bd9Sstevel@tonic-gate 
474505d05c7Sgtb /* The following are entropy source designations. Whenever
475505d05c7Sgtb  * krb5_C_random_add_entropy is called, one of these source  ids is passed
476505d05c7Sgtb  * in.  This  allows the library  to better estimate bits of
477505d05c7Sgtb  * entropy in the sample and to keep track of what sources of entropy have
478505d05c7Sgtb  * contributed enough entropy.  Sources marked internal MUST NOT be
479505d05c7Sgtb  * used by applications outside the Kerberos library
480505d05c7Sgtb */
481505d05c7Sgtb 
482505d05c7Sgtb enum {
483505d05c7Sgtb   KRB5_C_RANDSOURCE_OLDAPI = 0, /*calls to krb5_C_RANDOM_SEED (INTERNAL)*/
484505d05c7Sgtb   KRB5_C_RANDSOURCE_OSRAND = 1, /* /dev/random or equivalent (internal)*/
485505d05c7Sgtb   KRB5_C_RANDSOURCE_TRUSTEDPARTY = 2, /* From KDC or other trusted party*/
486505d05c7Sgtb   /*This source should be used carefully; data in this category
487505d05c7Sgtb    * should be from a third party trusted to give random bits
488505d05c7Sgtb    * For example keys issued by the KDC in the application server.
489505d05c7Sgtb    */
490505d05c7Sgtb   KRB5_C_RANDSOURCE_TIMING = 3, /* Timing of operations*/
491505d05c7Sgtb   KRB5_C_RANDSOURCE_EXTERNAL_PROTOCOL = 4, /*Protocol data possibly from attacker*/
492505d05c7Sgtb   KRB5_C_RANDSOURCE_MAX = 5 /*Do not use; maximum source ID*/
493505d05c7Sgtb };
4947c478bd9Sstevel@tonic-gate 
4957c478bd9Sstevel@tonic-gate #ifndef krb5_roundup
4967c478bd9Sstevel@tonic-gate /* round x up to nearest multiple of y */
4977c478bd9Sstevel@tonic-gate #define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y))
4987c478bd9Sstevel@tonic-gate #endif /* roundup */
4997c478bd9Sstevel@tonic-gate 
5007c478bd9Sstevel@tonic-gate /* macro function definitions to help clean up code */
5017c478bd9Sstevel@tonic-gate 
5027c478bd9Sstevel@tonic-gate #ifndef _KERNEL
5037c478bd9Sstevel@tonic-gate #define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
5047c478bd9Sstevel@tonic-gate #define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
5057c478bd9Sstevel@tonic-gate #else
5067c478bd9Sstevel@tonic-gate #define krb5_x(ptr,args) ((*(ptr)) args)
5077c478bd9Sstevel@tonic-gate #define krb5_xc(ptr,args) ((*(ptr)) args)
5087c478bd9Sstevel@tonic-gate #endif
5097c478bd9Sstevel@tonic-gate 
5107c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5117c478bd9Sstevel@tonic-gate     krb5_c_encrypt
512159d09a2SMark Phalan     (krb5_context context, const krb5_keyblock *key,
513159d09a2SMark Phalan 		    krb5_keyusage usage, const krb5_data *cipher_state,
514505d05c7Sgtb 		    const krb5_data *input, krb5_enc_data *output);
5157c478bd9Sstevel@tonic-gate 
5167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5177c478bd9Sstevel@tonic-gate     krb5_c_decrypt
518159d09a2SMark Phalan     (krb5_context context, const krb5_keyblock *key,
519159d09a2SMark Phalan 		    krb5_keyusage usage, const krb5_data *cipher_state,
520505d05c7Sgtb 		    const krb5_enc_data *input, krb5_data *output);
5217c478bd9Sstevel@tonic-gate 
5227c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5237c478bd9Sstevel@tonic-gate     krb5_c_encrypt_length
524505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
525505d05c7Sgtb 		    size_t inputlen, size_t *length);
5267c478bd9Sstevel@tonic-gate 
5277c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5287c478bd9Sstevel@tonic-gate     krb5_c_block_size
529505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
530505d05c7Sgtb 		    size_t *blocksize);
5317c478bd9Sstevel@tonic-gate 
532159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
533159d09a2SMark Phalan     krb5_c_keylengths
534159d09a2SMark Phalan     (krb5_context context, krb5_enctype enctype,
535159d09a2SMark Phalan                     size_t *keybytes, size_t *keylength);
536159d09a2SMark Phalan 
5377c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5387c478bd9Sstevel@tonic-gate 	krb5_c_init_state(krb5_context,
5397c478bd9Sstevel@tonic-gate 		const krb5_keyblock *, krb5_keyusage,
5407c478bd9Sstevel@tonic-gate 		krb5_data *);
5417c478bd9Sstevel@tonic-gate 
5427c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5437c478bd9Sstevel@tonic-gate 	krb5_c_free_state(krb5_context,
5447c478bd9Sstevel@tonic-gate 		const krb5_keyblock *, krb5_data *);
5457c478bd9Sstevel@tonic-gate 
5467c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5477c478bd9Sstevel@tonic-gate     krb5_c_make_random_key
548505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
549505d05c7Sgtb 		    krb5_keyblock *random_key);
550505d05c7Sgtb 
551159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
552159d09a2SMark Phalan     krb5_c_random_to_key
553159d09a2SMark Phalan     (krb5_context context, krb5_enctype enctype,
554159d09a2SMark Phalan                     krb5_data *random_data, krb5_keyblock *k5_random_key);
555159d09a2SMark Phalan 
556505d05c7Sgtb /* Register a new entropy sample  with the PRNG. may cause
557505d05c7Sgtb * the PRNG to be reseeded, although this is not guaranteed.  See previous randsource definitions
558505d05c7Sgtb * for information on how each source should be used.
559505d05c7Sgtb */
560505d05c7Sgtb krb5_error_code KRB5_CALLCONV
561505d05c7Sgtb         krb5_c_random_add_entropy
562505d05c7Sgtb (krb5_context context, unsigned int  randsource_id, const krb5_data *data);
5637c478bd9Sstevel@tonic-gate 
5647c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5657c478bd9Sstevel@tonic-gate     krb5_c_random_make_octets
566505d05c7Sgtb     (krb5_context context, krb5_data *data);
567505d05c7Sgtb 
568159d09a2SMark Phalan /*
569159d09a2SMark Phalan * Collect entropy from the OS if possible. strong requests that as strong
570159d09a2SMark Phalan * of a source of entropy  as available be used.  Setting strong may
571159d09a2SMark Phalan * increase the probability of blocking and should not  be used for normal
572159d09a2SMark Phalan * applications.  Good uses include seeding the PRNG for kadmind
573159d09a2SMark Phalan * and realm setup.
574159d09a2SMark Phalan * If successful is non-null, then successful is set to 1 if the OS provided
575159d09a2SMark Phalan * entropy else zero.
576159d09a2SMark Phalan */
577505d05c7Sgtb #if 0 /* SUNW14resync - not used in Solaris */
578159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
579159d09a2SMark Phalan krb5_c_random_os_entropy
580159d09a2SMark Phalan (krb5_context context, int strong, int *success);
581505d05c7Sgtb #endif
5827c478bd9Sstevel@tonic-gate 
583505d05c7Sgtb /*deprecated*/ krb5_error_code KRB5_CALLCONV
5847c478bd9Sstevel@tonic-gate     krb5_c_random_seed
585505d05c7Sgtb     (krb5_context context, krb5_data *data);
5867c478bd9Sstevel@tonic-gate 
5877c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5887c478bd9Sstevel@tonic-gate     krb5_c_string_to_key
589505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
590505d05c7Sgtb 		    const krb5_data *string, const krb5_data *salt,
591505d05c7Sgtb 		    krb5_keyblock *key);
592159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
5937c478bd9Sstevel@tonic-gate krb5_c_string_to_key_with_params(krb5_context context,
594159d09a2SMark Phalan 				 krb5_enctype enctype,
595159d09a2SMark Phalan 				 const krb5_data *string,
596159d09a2SMark Phalan 				 const krb5_data *salt,
597159d09a2SMark Phalan 				 const krb5_data *params,
598159d09a2SMark Phalan 				 krb5_keyblock *key);
5997c478bd9Sstevel@tonic-gate 
6007c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6017c478bd9Sstevel@tonic-gate     krb5_c_enctype_compare
602505d05c7Sgtb     (krb5_context context, krb5_enctype e1, krb5_enctype e2,
603505d05c7Sgtb 		    krb5_boolean *similar);
6047c478bd9Sstevel@tonic-gate 
6057c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6067c478bd9Sstevel@tonic-gate     krb5_c_make_checksum
607505d05c7Sgtb     (krb5_context context, krb5_cksumtype cksumtype,
608505d05c7Sgtb 		    const krb5_keyblock *key, krb5_keyusage usage,
609505d05c7Sgtb 		    const krb5_data *input, krb5_checksum *cksum);
610159d09a2SMark Phalan 
6117c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6127c478bd9Sstevel@tonic-gate     krb5_c_verify_checksum
613159d09a2SMark Phalan     (krb5_context context,
614505d05c7Sgtb 		    const krb5_keyblock *key, krb5_keyusage usage,
615505d05c7Sgtb 		    const krb5_data *data,
616505d05c7Sgtb 		    const krb5_checksum *cksum,
617505d05c7Sgtb 		    krb5_boolean *valid);
618159d09a2SMark Phalan 
6197c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6207c478bd9Sstevel@tonic-gate     krb5_c_checksum_length
621505d05c7Sgtb     (krb5_context context, krb5_cksumtype cksumtype,
622505d05c7Sgtb 		    size_t *length);
6237c478bd9Sstevel@tonic-gate 
6247c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6257c478bd9Sstevel@tonic-gate     krb5_c_keyed_checksum_types
626159d09a2SMark Phalan     (krb5_context context, krb5_enctype enctype,
627505d05c7Sgtb 		    unsigned int *count, krb5_cksumtype **cksumtypes);
6287c478bd9Sstevel@tonic-gate 
6297c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS		1
6307c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KDC_REP_TICKET		2
6317c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AS_REP_ENCPART		3
6327c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY	4
6337c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY		5
6347c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM	6
6357c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AUTH		7
6367c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY	8
6377c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY	9
6387c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM		10
6397c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AP_REQ_AUTH		11
6407c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AP_REP_ENCPART		12
6417c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_PRIV_ENCPART		13
6427c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_CRED_ENCPART		14
6437c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_SAFE_CKSUM		15
6447c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_APP_DATA_ENCRYPT		16
6457c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_APP_DATA_CKSUM		17
6467c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_ERROR_CKSUM		18
6477c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM	19
6487c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AD_MTE			20
6497c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AD_ITE			21
6507c478bd9Sstevel@tonic-gate 
6517c478bd9Sstevel@tonic-gate /* XXX need to register these */
6527c478bd9Sstevel@tonic-gate 
6537c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_GSS_TOK_MIC		22
6547c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG	23
6557c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV		24
6567c478bd9Sstevel@tonic-gate 
6577c478bd9Sstevel@tonic-gate /* Defined in hardware preauth draft */
6587c478bd9Sstevel@tonic-gate 
6597c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM	25
6607c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID	26
6617c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_PA_SAM_RESPONSE		27
6627c478bd9Sstevel@tonic-gate 
663fe598cdcSmp /* Defined in KDC referrals draft */
664fe598cdcSmp #define KRB5_KEYUSAGE_PA_REFERRAL		26 /* XXX note conflict with above */
665fe598cdcSmp 
6667c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_valid_enctype
667159d09a2SMark Phalan 	(krb5_enctype ktype);
6687c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_valid_cksumtype
669159d09a2SMark Phalan 	(krb5_cksumtype ctype);
6707c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_is_coll_proof_cksum
671159d09a2SMark Phalan 	(krb5_cksumtype ctype);
6727c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_is_keyed_cksum
673159d09a2SMark Phalan 	(krb5_cksumtype ctype);
674505d05c7Sgtb 
675505d05c7Sgtb #if KRB5_PRIVATE
676505d05c7Sgtb /* Use the above four instead.  */
677505d05c7Sgtb krb5_boolean KRB5_CALLCONV valid_enctype
678159d09a2SMark Phalan 	(krb5_enctype ktype);
679505d05c7Sgtb krb5_boolean KRB5_CALLCONV valid_cksumtype
680159d09a2SMark Phalan 	(krb5_cksumtype ctype);
681505d05c7Sgtb krb5_boolean KRB5_CALLCONV is_coll_proof_cksum
682159d09a2SMark Phalan 	(krb5_cksumtype ctype);
683505d05c7Sgtb krb5_boolean KRB5_CALLCONV is_keyed_cksum
684159d09a2SMark Phalan 	(krb5_cksumtype ctype);
685505d05c7Sgtb #endif
6867c478bd9Sstevel@tonic-gate 
68710db1377Sgtb #ifdef KRB5_OLD_CRYPTO
68810db1377Sgtb /*
68910db1377Sgtb  * old cryptosystem routine prototypes.  These are now layered
69010db1377Sgtb  * on top of the functions above.
69110db1377Sgtb  */
692159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_encrypt
693159d09a2SMark Phalan 	(krb5_context context,
694159d09a2SMark Phalan 		krb5_const_pointer inptr,
695159d09a2SMark Phalan 		krb5_pointer outptr,
696159d09a2SMark Phalan 		size_t size,
697159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
698159d09a2SMark Phalan 		krb5_pointer ivec);
699159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_decrypt
700159d09a2SMark Phalan 	(krb5_context context,
701159d09a2SMark Phalan 		krb5_const_pointer inptr,
702159d09a2SMark Phalan 		krb5_pointer outptr,
703159d09a2SMark Phalan 		size_t size,
704159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
705159d09a2SMark Phalan 		krb5_pointer ivec);
706159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_process_key
707159d09a2SMark Phalan 	(krb5_context context,
708159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
709159d09a2SMark Phalan 		const krb5_keyblock * key);
710159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_finish_key
711159d09a2SMark Phalan 	(krb5_context context,
712159d09a2SMark Phalan 		krb5_encrypt_block * eblock);
71310db1377Sgtb krb5_error_code KRB5_CALLCONV krb5_string_to_key
714159d09a2SMark Phalan 	(krb5_context context,
715159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
716159d09a2SMark Phalan 		krb5_keyblock * keyblock,
717159d09a2SMark Phalan 		const krb5_data * data,
718159d09a2SMark Phalan 		const krb5_data * salt);
719159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_init_random_key
720159d09a2SMark Phalan 	(krb5_context context,
721159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
722159d09a2SMark Phalan 		const krb5_keyblock * keyblock,
723159d09a2SMark Phalan 		krb5_pointer * ptr);
724159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_finish_random_key
725159d09a2SMark Phalan 	(krb5_context context,
726159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
727159d09a2SMark Phalan 		krb5_pointer * ptr);
728159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_random_key
729159d09a2SMark Phalan 	(krb5_context context,
730159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
731159d09a2SMark Phalan 		krb5_pointer ptr,
732159d09a2SMark Phalan 		krb5_keyblock ** keyblock);
733159d09a2SMark Phalan krb5_enctype KRB5_CALLCONV krb5_eblock_enctype
734159d09a2SMark Phalan 	(krb5_context context,
735159d09a2SMark Phalan 		const krb5_encrypt_block * eblock);
736159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_use_enctype
737159d09a2SMark Phalan 	(krb5_context context,
738159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
739159d09a2SMark Phalan 		krb5_enctype enctype);
740159d09a2SMark Phalan size_t KRB5_CALLCONV krb5_encrypt_size
741159d09a2SMark Phalan 	(size_t length,
742159d09a2SMark Phalan 		krb5_enctype crypto);
74310db1377Sgtb size_t KRB5_CALLCONV krb5_checksum_size
74410db1377Sgtb 	(krb5_context context,
74510db1377Sgtb 		krb5_cksumtype ctype);
746159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_calculate_checksum
747159d09a2SMark Phalan 	(krb5_context context,
748159d09a2SMark Phalan 		krb5_cksumtype ctype,
749159d09a2SMark Phalan 		krb5_const_pointer in, size_t in_length,
750159d09a2SMark Phalan 		krb5_const_pointer seed, size_t seed_length,
751159d09a2SMark Phalan 		krb5_checksum * outcksum);
752159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_verify_checksum
753159d09a2SMark Phalan 	(krb5_context context,
754159d09a2SMark Phalan 		krb5_cksumtype ctype,
755159d09a2SMark Phalan 		const krb5_checksum * cksum,
756159d09a2SMark Phalan 		krb5_const_pointer in, size_t in_length,
757159d09a2SMark Phalan 		krb5_const_pointer seed, size_t seed_length);
758159d09a2SMark Phalan 
759159d09a2SMark Phalan #if KRB5_PRIVATE
760159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_random_confounder
761159d09a2SMark Phalan 	(size_t, krb5_pointer);
762159d09a2SMark Phalan 
763159d09a2SMark Phalan krb5_error_code krb5_encrypt_data
764159d09a2SMark Phalan 	(krb5_context context, krb5_keyblock *key,
765159d09a2SMark Phalan 		krb5_pointer ivec, krb5_data *data,
766159d09a2SMark Phalan 		krb5_enc_data *enc_data);
767159d09a2SMark Phalan 
768159d09a2SMark Phalan krb5_error_code krb5_decrypt_data
769159d09a2SMark Phalan 	(krb5_context context, krb5_keyblock *key,
770159d09a2SMark Phalan 		krb5_pointer ivec, krb5_enc_data *data,
771159d09a2SMark Phalan 		krb5_data *enc_data);
772159d09a2SMark Phalan #endif
773159d09a2SMark Phalan 
77410db1377Sgtb #endif /* KRB5_OLD_CRYPTO */
7757c478bd9Sstevel@tonic-gate 
7767c478bd9Sstevel@tonic-gate /*
7777c478bd9Sstevel@tonic-gate  * end "encryption.h"
7787c478bd9Sstevel@tonic-gate  */
7797c478bd9Sstevel@tonic-gate 
7807c478bd9Sstevel@tonic-gate /*
7817c478bd9Sstevel@tonic-gate  * begin "fieldbits.h"
7827c478bd9Sstevel@tonic-gate  */
7837c478bd9Sstevel@tonic-gate 
7847c478bd9Sstevel@tonic-gate /* kdc_options for kdc_request */
7857c478bd9Sstevel@tonic-gate /* options is 32 bits; each host is responsible to put the 4 bytes
7867c478bd9Sstevel@tonic-gate    representing these bits into net order before transmission */
7877c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x80000000 */
7887c478bd9Sstevel@tonic-gate #define	KDC_OPT_FORWARDABLE		0x40000000
7897c478bd9Sstevel@tonic-gate #define	KDC_OPT_FORWARDED		0x20000000
7907c478bd9Sstevel@tonic-gate #define	KDC_OPT_PROXIABLE		0x10000000
7917c478bd9Sstevel@tonic-gate #define	KDC_OPT_PROXY			0x08000000
7927c478bd9Sstevel@tonic-gate #define	KDC_OPT_ALLOW_POSTDATE		0x04000000
7937c478bd9Sstevel@tonic-gate #define	KDC_OPT_POSTDATED		0x02000000
7947c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_UNUSED		0x01000000 */
7957c478bd9Sstevel@tonic-gate #define	KDC_OPT_RENEWABLE		0x00800000
7967c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_UNUSED		0x00400000 */
7977c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00200000 */
7987c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00100000 */
7997c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00080000 */
8007c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00040000 */
8017c478bd9Sstevel@tonic-gate #define	KDC_OPT_REQUEST_ANONYMOUS	0x00020000
802fe598cdcSmp #define	KDC_OPT_CANONICALIZE		0x00010000
8037c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00008000 */
8047c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00004000 */
8057c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00002000 */
8067c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00001000 */
8077c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000800 */
8087c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000400 */
8097c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000200 */
8107c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000100 */
8117c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000080 */
8127c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000040 */
813159d09a2SMark Phalan #define	KDC_OPT_DISABLE_TRANSITED_CHECK	0x00000020
8147c478bd9Sstevel@tonic-gate #define	KDC_OPT_RENEWABLE_OK		0x00000010
8157c478bd9Sstevel@tonic-gate #define	KDC_OPT_ENC_TKT_IN_SKEY		0x00000008
8167c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_UNUSED		0x00000004 */
8177c478bd9Sstevel@tonic-gate #define	KDC_OPT_RENEW			0x00000002
8187c478bd9Sstevel@tonic-gate #define	KDC_OPT_VALIDATE		0x00000001
8197c478bd9Sstevel@tonic-gate 
8207c478bd9Sstevel@tonic-gate /*
8217c478bd9Sstevel@tonic-gate  * Mask of ticket flags in the TGT which should be converted into KDC
8227c478bd9Sstevel@tonic-gate  * options when using the TGT to get derivitive tickets.
823159d09a2SMark Phalan  *
8247c478bd9Sstevel@tonic-gate  *  New mask = KDC_OPT_FORWARDABLE | KDC_OPT_PROXIABLE |
825159d09a2SMark Phalan  *	       KDC_OPT_ALLOW_POSTDATE | KDC_OPT_RENEWABLE
8267c478bd9Sstevel@tonic-gate  */
8277c478bd9Sstevel@tonic-gate #define KDC_TKT_COMMON_MASK		0x54800000
8287c478bd9Sstevel@tonic-gate 
8297c478bd9Sstevel@tonic-gate /* definitions for ap_options fields */
8307c478bd9Sstevel@tonic-gate /* ap_options are 32 bits; each host is responsible to put the 4 bytes
8317c478bd9Sstevel@tonic-gate    representing these bits into net order before transmission */
8327c478bd9Sstevel@tonic-gate #define	AP_OPTS_RESERVED		0x80000000
8337c478bd9Sstevel@tonic-gate #define	AP_OPTS_USE_SESSION_KEY		0x40000000
8347c478bd9Sstevel@tonic-gate #define	AP_OPTS_MUTUAL_REQUIRED		0x20000000
8357c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x10000000 */
8367c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x08000000 */
8377c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x04000000 */
8387c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x02000000 */
8397c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x01000000 */
8407c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00800000 */
8417c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00400000 */
8427c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00200000 */
8437c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00100000 */
8447c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00080000 */
8457c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00040000 */
8467c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00020000 */
8477c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00010000 */
8487c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00008000 */
8497c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00004000 */
8507c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00002000 */
8517c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00001000 */
8527c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000800 */
8537c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000400 */
8547c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000200 */
8557c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000100 */
8567c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000080 */
8577c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000040 */
8587c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000020 */
8597c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000010 */
8607c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000008 */
8617c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000004 */
8627c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000002 */
863159d09a2SMark Phalan #define AP_OPTS_USE_SUBKEY	0x00000001
8647c478bd9Sstevel@tonic-gate 
8657c478bd9Sstevel@tonic-gate #define AP_OPTS_WIRE_MASK	0xfffffff0
8667c478bd9Sstevel@tonic-gate 
8677c478bd9Sstevel@tonic-gate /* definitions for ad_type fields. */
8687c478bd9Sstevel@tonic-gate #define	AD_TYPE_RESERVED	0x8000
8697c478bd9Sstevel@tonic-gate #define	AD_TYPE_EXTERNAL	0x4000
8707c478bd9Sstevel@tonic-gate #define	AD_TYPE_REGISTERED	0x2000
8717c478bd9Sstevel@tonic-gate 
8727c478bd9Sstevel@tonic-gate #define AD_TYPE_FIELD_TYPE_MASK	0x1fff
8737c478bd9Sstevel@tonic-gate 
8747c478bd9Sstevel@tonic-gate /* Ticket flags */
8757c478bd9Sstevel@tonic-gate /* flags are 32 bits; each host is responsible to put the 4 bytes
8767c478bd9Sstevel@tonic-gate    representing these bits into net order before transmission */
8777c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x80000000 */
8787c478bd9Sstevel@tonic-gate #define	TKT_FLG_FORWARDABLE		0x40000000
8797c478bd9Sstevel@tonic-gate #define	TKT_FLG_FORWARDED		0x20000000
8807c478bd9Sstevel@tonic-gate #define	TKT_FLG_PROXIABLE		0x10000000
8817c478bd9Sstevel@tonic-gate #define	TKT_FLG_PROXY			0x08000000
8827c478bd9Sstevel@tonic-gate #define	TKT_FLG_MAY_POSTDATE		0x04000000
8837c478bd9Sstevel@tonic-gate #define	TKT_FLG_POSTDATED		0x02000000
8847c478bd9Sstevel@tonic-gate #define	TKT_FLG_INVALID			0x01000000
8857c478bd9Sstevel@tonic-gate #define	TKT_FLG_RENEWABLE		0x00800000
8867c478bd9Sstevel@tonic-gate #define	TKT_FLG_INITIAL			0x00400000
8877c478bd9Sstevel@tonic-gate #define	TKT_FLG_PRE_AUTH		0x00200000
8887c478bd9Sstevel@tonic-gate #define	TKT_FLG_HW_AUTH			0x00100000
8897c478bd9Sstevel@tonic-gate #define	TKT_FLG_TRANSIT_POLICY_CHECKED	0x00080000
8907c478bd9Sstevel@tonic-gate #define	TKT_FLG_OK_AS_DELEGATE		0x00040000
8917c478bd9Sstevel@tonic-gate #define	TKT_FLG_ANONYMOUS		0x00020000
8927c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00010000 */
8937c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00008000 */
8947c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00004000 */
8957c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00002000 */
8967c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00001000 */
8977c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000800 */
8987c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000400 */
8997c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000200 */
9007c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000100 */
9017c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000080 */
9027c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000040 */
9037c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000020 */
9047c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000010 */
9057c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000008 */
9067c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000004 */
9077c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000002 */
9087c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000001 */
9097c478bd9Sstevel@tonic-gate 
9107c478bd9Sstevel@tonic-gate /* definitions for lr_type fields. */
9117c478bd9Sstevel@tonic-gate #define	LR_TYPE_THIS_SERVER_ONLY	0x8000
9127c478bd9Sstevel@tonic-gate 
9137c478bd9Sstevel@tonic-gate #define LR_TYPE_INTERPRETATION_MASK	0x7fff
9147c478bd9Sstevel@tonic-gate 
9157c478bd9Sstevel@tonic-gate /* definitions for ad_type fields. */
9167c478bd9Sstevel@tonic-gate #define	AD_TYPE_EXTERNAL	0x4000
9177c478bd9Sstevel@tonic-gate #define	AD_TYPE_REGISTERED	0x2000
9187c478bd9Sstevel@tonic-gate 
9197c478bd9Sstevel@tonic-gate #define AD_TYPE_FIELD_TYPE_MASK	0x1fff
9207c478bd9Sstevel@tonic-gate #define AD_TYPE_INTERNAL_MASK	0x3fff
9217c478bd9Sstevel@tonic-gate 
9227c478bd9Sstevel@tonic-gate /* definitions for msec direction bit for KRB_SAFE, KRB_PRIV */
9237c478bd9Sstevel@tonic-gate #define	MSEC_DIRBIT		0x8000
9247c478bd9Sstevel@tonic-gate #define	MSEC_VAL_MASK		0x7fff
9257c478bd9Sstevel@tonic-gate 
9267c478bd9Sstevel@tonic-gate /*
9277c478bd9Sstevel@tonic-gate  * end "fieldbits.h"
9287c478bd9Sstevel@tonic-gate  */
9297c478bd9Sstevel@tonic-gate 
9307c478bd9Sstevel@tonic-gate /*
9317c478bd9Sstevel@tonic-gate  * begin "proto.h"
9327c478bd9Sstevel@tonic-gate  */
9337c478bd9Sstevel@tonic-gate 
9347c478bd9Sstevel@tonic-gate /* Protocol version number */
9357c478bd9Sstevel@tonic-gate #define	KRB5_PVNO	5
9367c478bd9Sstevel@tonic-gate 
9377c478bd9Sstevel@tonic-gate /* Message types */
9387c478bd9Sstevel@tonic-gate 
9397c478bd9Sstevel@tonic-gate #define	KRB5_AS_REQ	((krb5_msgtype)10) /* Req for initial authentication */
9407c478bd9Sstevel@tonic-gate #define	KRB5_AS_REP	((krb5_msgtype)11) /* Response to KRB_AS_REQ request */
9417c478bd9Sstevel@tonic-gate #define	KRB5_TGS_REQ	((krb5_msgtype)12) /* TGS request to server */
9427c478bd9Sstevel@tonic-gate #define	KRB5_TGS_REP	((krb5_msgtype)13) /* Response to KRB_TGS_REQ req */
9437c478bd9Sstevel@tonic-gate #define	KRB5_AP_REQ	((krb5_msgtype)14) /* application request to server */
9447c478bd9Sstevel@tonic-gate #define	KRB5_AP_REP	((krb5_msgtype)15) /* Response to KRB_AP_REQ_MUTUAL */
9457c478bd9Sstevel@tonic-gate #define	KRB5_SAFE	((krb5_msgtype)20) /* Safe application message */
9467c478bd9Sstevel@tonic-gate #define	KRB5_PRIV	((krb5_msgtype)21) /* Private application message */
9477c478bd9Sstevel@tonic-gate #define	KRB5_CRED	((krb5_msgtype)22) /* Credential forwarding message */
9487c478bd9Sstevel@tonic-gate #define	KRB5_ERROR	((krb5_msgtype)30) /* Error response */
9497c478bd9Sstevel@tonic-gate 
9507c478bd9Sstevel@tonic-gate /* LastReq types */
951159d09a2SMark Phalan #define KRB5_LRQ_NONE			0
952159d09a2SMark Phalan #define KRB5_LRQ_ALL_LAST_TGT		1
953159d09a2SMark Phalan #define KRB5_LRQ_ONE_LAST_TGT		(-1)
954159d09a2SMark Phalan #define KRB5_LRQ_ALL_LAST_INITIAL	2
955159d09a2SMark Phalan #define KRB5_LRQ_ONE_LAST_INITIAL	(-2)
956159d09a2SMark Phalan #define KRB5_LRQ_ALL_LAST_TGT_ISSUED	3
957159d09a2SMark Phalan #define KRB5_LRQ_ONE_LAST_TGT_ISSUED	(-3)
958159d09a2SMark Phalan #define KRB5_LRQ_ALL_LAST_RENEWAL	4
959159d09a2SMark Phalan #define KRB5_LRQ_ONE_LAST_RENEWAL	(-4)
960159d09a2SMark Phalan #define KRB5_LRQ_ALL_LAST_REQ		5
961159d09a2SMark Phalan #define KRB5_LRQ_ONE_LAST_REQ		(-5)
962159d09a2SMark Phalan #define KRB5_LRQ_ALL_PW_EXPTIME		6
963159d09a2SMark Phalan #define KRB5_LRQ_ONE_PW_EXPTIME		(-6)
9647c478bd9Sstevel@tonic-gate 
9657c478bd9Sstevel@tonic-gate /* PADATA types */
966159d09a2SMark Phalan #define KRB5_PADATA_NONE		0
9677c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_AP_REQ		1
9687c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_TGS_REQ		KRB5_PADATA_AP_REQ
9697c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ENC_TIMESTAMP	2
9707c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_PW_SALT		3
9717c478bd9Sstevel@tonic-gate #if 0				/* Not used */
972159d09a2SMark Phalan #define KRB5_PADATA_ENC_ENCKEY		4  /* Key encrypted within itself */
9737c478bd9Sstevel@tonic-gate #endif
974159d09a2SMark Phalan #define KRB5_PADATA_ENC_UNIX_TIME	5  /* timestamp encrypted in key */
975159d09a2SMark Phalan #define KRB5_PADATA_ENC_SANDIA_SECURID	6  /* SecurId passcode */
9767c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SESAME		7  /* Sesame project */
9777c478bd9Sstevel@tonic-gate #define KRB5_PADATA_OSF_DCE		8  /* OSF DCE */
9787c478bd9Sstevel@tonic-gate #define KRB5_CYBERSAFE_SECUREID		9  /* Cybersafe */
9797c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_AFS3_SALT		10 /* Cygnus */
9807c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ETYPE_INFO		11 /* Etype info for preauth */
9817c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_CHALLENGE	12 /* draft challenge system */
9827c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_RESPONSE	13 /* draft challenge system response */
983159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REQ_OLD	14 /* PKINIT */
984159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REP_OLD	15 /* PKINIT */
985159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REQ		16 /* PKINIT */
986159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REP		17 /* PKINIT */
9877c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ETYPE_INFO2 	19
988fe598cdcSmp #define KRB5_PADATA_REFERRAL		25 /* draft referral system */
9897c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_CHALLENGE_2	30 /* draft challenge system, updated */
9907c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_RESPONSE_2	31 /* draft challenge system, updated */
991159d09a2SMark Phalan 
9927c478bd9Sstevel@tonic-gate #define	KRB5_SAM_USE_SAD_AS_KEY		0x80000000
9937c478bd9Sstevel@tonic-gate #define	KRB5_SAM_SEND_ENCRYPTED_SAD	0x40000000
9947c478bd9Sstevel@tonic-gate #define	KRB5_SAM_MUST_PK_ENCRYPT_SAD	0x20000000 /* currently must be zero */
9957c478bd9Sstevel@tonic-gate 
9967c478bd9Sstevel@tonic-gate /* Reserved for SPX pre-authentication. */
9977c478bd9Sstevel@tonic-gate #define KRB5_PADATA_DASS		16
9987c478bd9Sstevel@tonic-gate 
9997c478bd9Sstevel@tonic-gate /* Transited encoding types */
10007c478bd9Sstevel@tonic-gate #define	KRB5_DOMAIN_X500_COMPRESS	1
10017c478bd9Sstevel@tonic-gate 
10027c478bd9Sstevel@tonic-gate /* alternate authentication types */
10037c478bd9Sstevel@tonic-gate #define	KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE	64
10047c478bd9Sstevel@tonic-gate 
10057c478bd9Sstevel@tonic-gate /* authorization data types */
1006159d09a2SMark Phalan #define KRB5_AUTHDATA_IF_RELEVANT   1
1007159d09a2SMark Phalan #define KRB5_AUTHDATA_KDC_ISSUED    4
1008159d09a2SMark Phalan #define KRB5_AUTHDATA_AND_OR        5
1009159d09a2SMark Phalan #define KRB5_AUTHDATA_MANDATORY_FOR_KDC 8
1010159d09a2SMark Phalan #define KRB5_AUTHDATA_INITIAL_VERIFIED_CAS      9
10117c478bd9Sstevel@tonic-gate #define	KRB5_AUTHDATA_OSF_DCE	64
10127c478bd9Sstevel@tonic-gate #define KRB5_AUTHDATA_SESAME	65
10137c478bd9Sstevel@tonic-gate 
10147c478bd9Sstevel@tonic-gate /* password change constants */
10157c478bd9Sstevel@tonic-gate 
10167c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_SUCCESS		0
10177c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_MALFORMED		1
10187c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_HARDERROR		2
10197c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_AUTHERROR		3
10207c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_SOFTERROR		4
1021505d05c7Sgtb /* These are Microsoft's extensions in RFC 3244, and it looks like
1022505d05c7Sgtb    they'll become standardized, possibly with other additions.  */
1023159d09a2SMark Phalan #define KRB5_KPASSWD_ACCESSDENIED	5	/* unused */
1024159d09a2SMark Phalan #define KRB5_KPASSWD_BAD_VERSION	6
1025159d09a2SMark Phalan #define KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7	/* unused */
10267c478bd9Sstevel@tonic-gate 
10277c478bd9Sstevel@tonic-gate /*
10287c478bd9Sstevel@tonic-gate  * end "proto.h"
10297c478bd9Sstevel@tonic-gate  */
10307c478bd9Sstevel@tonic-gate 
10317c478bd9Sstevel@tonic-gate /* Time set */
10327c478bd9Sstevel@tonic-gate typedef struct _krb5_ticket_times {
10337c478bd9Sstevel@tonic-gate     krb5_timestamp authtime; /* XXX ? should ktime in KDC_REP == authtime
1034159d09a2SMark Phalan 				in ticket? otherwise client can't get this */
10357c478bd9Sstevel@tonic-gate     krb5_timestamp starttime;		/* optional in ticket, if not present,
10367c478bd9Sstevel@tonic-gate 					   use authtime */
10377c478bd9Sstevel@tonic-gate     krb5_timestamp endtime;
10387c478bd9Sstevel@tonic-gate     krb5_timestamp renew_till;
10397c478bd9Sstevel@tonic-gate } krb5_ticket_times;
10407c478bd9Sstevel@tonic-gate 
10417c478bd9Sstevel@tonic-gate /* structure for auth data */
10427c478bd9Sstevel@tonic-gate typedef struct _krb5_authdata {
10437c478bd9Sstevel@tonic-gate     krb5_magic magic;
10447c478bd9Sstevel@tonic-gate     krb5_authdatatype ad_type;
10457c478bd9Sstevel@tonic-gate     unsigned int length;
10467c478bd9Sstevel@tonic-gate     krb5_octet *contents;
10477c478bd9Sstevel@tonic-gate } krb5_authdata;
10487c478bd9Sstevel@tonic-gate 
10497c478bd9Sstevel@tonic-gate /* structure for transited encoding */
10507c478bd9Sstevel@tonic-gate typedef struct _krb5_transited {
10517c478bd9Sstevel@tonic-gate     krb5_magic magic;
10527c478bd9Sstevel@tonic-gate     krb5_octet tr_type;
10537c478bd9Sstevel@tonic-gate     krb5_data tr_contents;
10547c478bd9Sstevel@tonic-gate } krb5_transited;
10557c478bd9Sstevel@tonic-gate 
10567c478bd9Sstevel@tonic-gate typedef struct _krb5_enc_tkt_part {
10577c478bd9Sstevel@tonic-gate     krb5_magic magic;
10587c478bd9Sstevel@tonic-gate     /* to-be-encrypted portion */
10597c478bd9Sstevel@tonic-gate     krb5_flags flags;			/* flags */
10607c478bd9Sstevel@tonic-gate     krb5_keyblock *session;		/* session key: includes enctype */
10617c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client name/realm */
10627c478bd9Sstevel@tonic-gate     krb5_transited transited;		/* list of transited realms */
10637c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* auth, start, end, renew_till */
1064159d09a2SMark Phalan     krb5_address **caddrs;	/* array of ptrs to addresses */
1065159d09a2SMark Phalan     krb5_authdata **authorization_data; /* auth data */
10667c478bd9Sstevel@tonic-gate } krb5_enc_tkt_part;
10677c478bd9Sstevel@tonic-gate 
10687c478bd9Sstevel@tonic-gate typedef struct _krb5_ticket {
10697c478bd9Sstevel@tonic-gate     krb5_magic magic;
10707c478bd9Sstevel@tonic-gate     /* cleartext portion */
10717c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server name/realm */
10727c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;		/* encryption type, kvno, encrypted
10737c478bd9Sstevel@tonic-gate 					   encoding */
10747c478bd9Sstevel@tonic-gate     krb5_enc_tkt_part *enc_part2;	/* ptr to decrypted version, if
10757c478bd9Sstevel@tonic-gate 					   available */
10767c478bd9Sstevel@tonic-gate } krb5_ticket;
10777c478bd9Sstevel@tonic-gate 
10787c478bd9Sstevel@tonic-gate /* the unencrypted version */
10797c478bd9Sstevel@tonic-gate typedef struct _krb5_authenticator {
10807c478bd9Sstevel@tonic-gate     krb5_magic magic;
10817c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client name/realm */
10827c478bd9Sstevel@tonic-gate     krb5_checksum *checksum;	/* checksum, includes type, optional */
10837c478bd9Sstevel@tonic-gate     krb5_int32 cusec;			/* client usec portion */
10847c478bd9Sstevel@tonic-gate     krb5_timestamp ctime;		/* client sec portion */
10857c478bd9Sstevel@tonic-gate     krb5_keyblock *subkey;		/* true session key, optional */
10867c478bd9Sstevel@tonic-gate     krb5_ui_4 seq_number;		/* sequence #, optional */
1087159d09a2SMark Phalan     krb5_authdata **authorization_data; /* New add by Ari, auth data */
10887c478bd9Sstevel@tonic-gate } krb5_authenticator;
10897c478bd9Sstevel@tonic-gate 
10907c478bd9Sstevel@tonic-gate typedef struct _krb5_tkt_authent {
10917c478bd9Sstevel@tonic-gate     krb5_magic magic;
10927c478bd9Sstevel@tonic-gate     krb5_ticket *ticket;
10937c478bd9Sstevel@tonic-gate     krb5_authenticator *authenticator;
10947c478bd9Sstevel@tonic-gate     krb5_flags ap_options;
10957c478bd9Sstevel@tonic-gate } krb5_tkt_authent;
10967c478bd9Sstevel@tonic-gate 
1097159d09a2SMark Phalan /* credentials:	 Ticket, session key, etc. */
10987c478bd9Sstevel@tonic-gate typedef struct _krb5_creds {
10997c478bd9Sstevel@tonic-gate     krb5_magic magic;
11007c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client's principal identifier */
11017c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server's principal identifier */
11027c478bd9Sstevel@tonic-gate     krb5_keyblock keyblock;		/* session encryption key info */
11037c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* lifetime info */
11047c478bd9Sstevel@tonic-gate     krb5_boolean is_skey;		/* true if ticket is encrypted in
11057c478bd9Sstevel@tonic-gate 					   another ticket's skey */
11067c478bd9Sstevel@tonic-gate     krb5_flags ticket_flags;		/* flags in ticket */
11077c478bd9Sstevel@tonic-gate     krb5_address * *addresses;	/* addrs in ticket */
11087c478bd9Sstevel@tonic-gate     krb5_data ticket;			/* ticket string itself */
11097c478bd9Sstevel@tonic-gate     krb5_data second_ticket;		/* second ticket, if related to
11107c478bd9Sstevel@tonic-gate 					   ticket (via DUPLICATE-SKEY or
11117c478bd9Sstevel@tonic-gate 					   ENC-TKT-IN-SKEY) */
1112159d09a2SMark Phalan     krb5_authdata **authdata;	/* authorization data */
11137c478bd9Sstevel@tonic-gate } krb5_creds;
11147c478bd9Sstevel@tonic-gate 
11157c478bd9Sstevel@tonic-gate /* Last request fields */
11167c478bd9Sstevel@tonic-gate typedef struct _krb5_last_req_entry {
11177c478bd9Sstevel@tonic-gate     krb5_magic magic;
11187c478bd9Sstevel@tonic-gate     krb5_int32 lr_type;
11197c478bd9Sstevel@tonic-gate     krb5_timestamp value;
11207c478bd9Sstevel@tonic-gate } krb5_last_req_entry;
11217c478bd9Sstevel@tonic-gate 
11227c478bd9Sstevel@tonic-gate /* pre-authentication data */
11237c478bd9Sstevel@tonic-gate typedef struct _krb5_pa_data {
11247c478bd9Sstevel@tonic-gate     krb5_magic magic;
11257c478bd9Sstevel@tonic-gate     krb5_preauthtype  pa_type;
11267c478bd9Sstevel@tonic-gate     unsigned int length;
11277c478bd9Sstevel@tonic-gate     krb5_octet *contents;
11287c478bd9Sstevel@tonic-gate } krb5_pa_data;
11297c478bd9Sstevel@tonic-gate 
11307c478bd9Sstevel@tonic-gate typedef struct _krb5_kdc_req {
11317c478bd9Sstevel@tonic-gate     krb5_magic magic;
11327c478bd9Sstevel@tonic-gate     krb5_msgtype msg_type;		/* AS_REQ or TGS_REQ? */
1133159d09a2SMark Phalan     krb5_pa_data **padata;	/* e.g. encoded AP_REQ */
11347c478bd9Sstevel@tonic-gate     /* real body */
11357c478bd9Sstevel@tonic-gate     krb5_flags kdc_options;		/* requested options */
11367c478bd9Sstevel@tonic-gate     krb5_principal client;		/* includes realm; optional */
11377c478bd9Sstevel@tonic-gate     krb5_principal server;		/* includes realm (only used if no
11387c478bd9Sstevel@tonic-gate 					   client) */
11397c478bd9Sstevel@tonic-gate     krb5_timestamp from;		/* requested starttime */
11407c478bd9Sstevel@tonic-gate     krb5_timestamp till;		/* requested endtime */
11417c478bd9Sstevel@tonic-gate     krb5_timestamp rtime;		/* (optional) requested renew_till */
11427c478bd9Sstevel@tonic-gate     krb5_int32 nonce;			/* nonce to match request/response */
11437c478bd9Sstevel@tonic-gate     int nktypes;			/* # of ktypes, must be positive */
11447c478bd9Sstevel@tonic-gate     krb5_enctype *ktype;		/* requested enctype(s) */
1145159d09a2SMark Phalan     krb5_address **addresses;	/* requested addresses, optional */
11467c478bd9Sstevel@tonic-gate     krb5_enc_data authorization_data;	/* encrypted auth data; OPTIONAL */
1147159d09a2SMark Phalan     krb5_authdata **unenc_authdata; /* unencrypted auth data,
11487c478bd9Sstevel@tonic-gate 					   if available */
1149159d09a2SMark Phalan     krb5_ticket **second_ticket;/* second ticket array; OPTIONAL */
11507c478bd9Sstevel@tonic-gate } krb5_kdc_req;
11517c478bd9Sstevel@tonic-gate 
11527c478bd9Sstevel@tonic-gate typedef struct _krb5_enc_kdc_rep_part {
11537c478bd9Sstevel@tonic-gate     krb5_magic magic;
11547c478bd9Sstevel@tonic-gate     /* encrypted part: */
11557c478bd9Sstevel@tonic-gate     krb5_msgtype msg_type;		/* krb5 message type */
11567c478bd9Sstevel@tonic-gate     krb5_keyblock *session;		/* session key */
1157159d09a2SMark Phalan     krb5_last_req_entry **last_req; /* array of ptrs to entries */
11587c478bd9Sstevel@tonic-gate     krb5_int32 nonce;			/* nonce from request */
11597c478bd9Sstevel@tonic-gate     krb5_timestamp key_exp;		/* expiration date */
11607c478bd9Sstevel@tonic-gate     krb5_flags flags;			/* ticket flags */
11617c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* lifetime info */
11627c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server's principal identifier */
1163159d09a2SMark Phalan     krb5_address **caddrs;	/* array of ptrs to addresses,
11647c478bd9Sstevel@tonic-gate 					   optional */
11657c478bd9Sstevel@tonic-gate } krb5_enc_kdc_rep_part;
11667c478bd9Sstevel@tonic-gate 
11677c478bd9Sstevel@tonic-gate typedef struct _krb5_kdc_rep {
11687c478bd9Sstevel@tonic-gate     krb5_magic magic;
11697c478bd9Sstevel@tonic-gate     /* cleartext part: */
11707c478bd9Sstevel@tonic-gate     krb5_msgtype msg_type;		/* AS_REP or KDC_REP? */
1171159d09a2SMark Phalan     krb5_pa_data **padata;	/* preauthentication data from KDC */
11727c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client's principal identifier */
11737c478bd9Sstevel@tonic-gate     krb5_ticket *ticket;		/* ticket */
11747c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;		/* encryption type, kvno, encrypted
11757c478bd9Sstevel@tonic-gate 					   encoding */
11767c478bd9Sstevel@tonic-gate     krb5_enc_kdc_rep_part *enc_part2;/* unencrypted version, if available */
11777c478bd9Sstevel@tonic-gate } krb5_kdc_rep;
11787c478bd9Sstevel@tonic-gate 
11797c478bd9Sstevel@tonic-gate /* error message structure */
11807c478bd9Sstevel@tonic-gate typedef struct _krb5_error {
11817c478bd9Sstevel@tonic-gate     krb5_magic magic;
11827c478bd9Sstevel@tonic-gate     /* some of these may be meaningless in certain contexts */
11837c478bd9Sstevel@tonic-gate     krb5_timestamp ctime;		/* client sec portion; optional */
11847c478bd9Sstevel@tonic-gate     krb5_int32 cusec;			/* client usec portion; optional */
11857c478bd9Sstevel@tonic-gate     krb5_int32 susec;			/* server usec portion */
11867c478bd9Sstevel@tonic-gate     krb5_timestamp stime;		/* server sec portion */
11877c478bd9Sstevel@tonic-gate     krb5_ui_4 error;			/* error code (protocol error #'s) */
11887c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client's principal identifier;
11897c478bd9Sstevel@tonic-gate 					   optional */
11907c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server's principal identifier */
11917c478bd9Sstevel@tonic-gate     krb5_data text;			/* descriptive text */
11927c478bd9Sstevel@tonic-gate     krb5_data e_data;			/* additional error-describing data */
11937c478bd9Sstevel@tonic-gate } krb5_error;
11947c478bd9Sstevel@tonic-gate 
11957c478bd9Sstevel@tonic-gate typedef struct _krb5_ap_req {
11967c478bd9Sstevel@tonic-gate     krb5_magic magic;
11977c478bd9Sstevel@tonic-gate     krb5_flags ap_options;		/* requested options */
11987c478bd9Sstevel@tonic-gate     krb5_ticket *ticket;		/* ticket */
11997c478bd9Sstevel@tonic-gate     krb5_enc_data authenticator;	/* authenticator (already encrypted) */
12007c478bd9Sstevel@tonic-gate } krb5_ap_req;
12017c478bd9Sstevel@tonic-gate 
12027c478bd9Sstevel@tonic-gate typedef struct _krb5_ap_rep {
12037c478bd9Sstevel@tonic-gate     krb5_magic magic;
12047c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;
12057c478bd9Sstevel@tonic-gate } krb5_ap_rep;
12067c478bd9Sstevel@tonic-gate 
12077c478bd9Sstevel@tonic-gate typedef struct _krb5_ap_rep_enc_part {
12087c478bd9Sstevel@tonic-gate     krb5_magic magic;
12097c478bd9Sstevel@tonic-gate     krb5_timestamp ctime;		/* client time, seconds portion */
12107c478bd9Sstevel@tonic-gate     krb5_int32 cusec;			/* client time, microseconds portion */
12117c478bd9Sstevel@tonic-gate     krb5_keyblock *subkey;		/* true session key, optional */
12127c478bd9Sstevel@tonic-gate     krb5_ui_4 seq_number;		/* sequence #, optional */
12137c478bd9Sstevel@tonic-gate } krb5_ap_rep_enc_part;
12147c478bd9Sstevel@tonic-gate 
12157c478bd9Sstevel@tonic-gate typedef struct _krb5_response {
12167c478bd9Sstevel@tonic-gate     krb5_magic magic;
12177c478bd9Sstevel@tonic-gate     krb5_octet message_type;
12187c478bd9Sstevel@tonic-gate     krb5_data response;
12197c478bd9Sstevel@tonic-gate     krb5_int32 expected_nonce;	/* The expected nonce for KDC_REP messages */
12207c478bd9Sstevel@tonic-gate     krb5_timestamp request_time;   /* When we made the request */
12217c478bd9Sstevel@tonic-gate } krb5_response;
12227c478bd9Sstevel@tonic-gate 
12237c478bd9Sstevel@tonic-gate typedef struct _krb5_cred_info {
12247c478bd9Sstevel@tonic-gate     krb5_magic magic;
1225159d09a2SMark Phalan     krb5_keyblock *session;		/* session key used to encrypt */
12267c478bd9Sstevel@tonic-gate 					/* ticket */
1227159d09a2SMark Phalan     krb5_principal client;		/* client name/realm, optional */
1228159d09a2SMark Phalan     krb5_principal server;		/* server name/realm, optional */
12297c478bd9Sstevel@tonic-gate     krb5_flags flags;			/* ticket flags, optional */
12307c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* auth, start, end, renew_till, */
1231159d09a2SMark Phalan 					/* optional */
1232159d09a2SMark Phalan     krb5_address **caddrs;	/* array of ptrs to addresses */
12337c478bd9Sstevel@tonic-gate } krb5_cred_info;
12347c478bd9Sstevel@tonic-gate 
12357c478bd9Sstevel@tonic-gate typedef struct _krb5_cred_enc_part {
12367c478bd9Sstevel@tonic-gate     krb5_magic magic;
1237159d09a2SMark Phalan     krb5_int32 nonce;			/* nonce, optional */
1238159d09a2SMark Phalan     krb5_timestamp timestamp;		/* client time */
1239159d09a2SMark Phalan     krb5_int32 usec;			/* microsecond portion of time */
1240159d09a2SMark Phalan     krb5_address *s_address;	/* sender address, optional */
1241159d09a2SMark Phalan     krb5_address *r_address;	/* recipient address, optional */
1242159d09a2SMark Phalan     krb5_cred_info **ticket_info;
1243159d09a2SMark Phalan } krb5_cred_enc_part;
12447c478bd9Sstevel@tonic-gate 
12457c478bd9Sstevel@tonic-gate typedef struct _krb5_cred {
12467c478bd9Sstevel@tonic-gate     krb5_magic magic;
1247159d09a2SMark Phalan     krb5_ticket **tickets;	/* tickets */
12487c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;		/* encrypted part */
1249159d09a2SMark Phalan     krb5_cred_enc_part *enc_part2;	/* unencrypted version, if available*/
12507c478bd9Sstevel@tonic-gate } krb5_cred;
12517c478bd9Sstevel@tonic-gate 
12527c478bd9Sstevel@tonic-gate /* Sandia password generation structures */
12537c478bd9Sstevel@tonic-gate typedef struct _passwd_phrase_element {
12547c478bd9Sstevel@tonic-gate     krb5_magic magic;
12557c478bd9Sstevel@tonic-gate     krb5_data *passwd;
12567c478bd9Sstevel@tonic-gate     krb5_data *phrase;
12577c478bd9Sstevel@tonic-gate } passwd_phrase_element;
12587c478bd9Sstevel@tonic-gate 
12597c478bd9Sstevel@tonic-gate typedef struct _krb5_pwd_data {
12607c478bd9Sstevel@tonic-gate     krb5_magic magic;
12617c478bd9Sstevel@tonic-gate     int sequence_count;
1262159d09a2SMark Phalan     passwd_phrase_element **element;
12637c478bd9Sstevel@tonic-gate } krb5_pwd_data;
12647c478bd9Sstevel@tonic-gate 
12657c478bd9Sstevel@tonic-gate /* these need to be here so the typedefs are available for the prototypes */
12667c478bd9Sstevel@tonic-gate 
12677c478bd9Sstevel@tonic-gate /*
12687c478bd9Sstevel@tonic-gate  * begin "safepriv.h"
12697c478bd9Sstevel@tonic-gate  */
12707c478bd9Sstevel@tonic-gate 
1271159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_DO_TIME	0x00000001
1272159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_RET_TIME	0x00000002
1273159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_DO_SEQUENCE	0x00000004
1274159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_RET_SEQUENCE	0x00000008
12757c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_PERMIT_ALL	0x00000010
1276159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_USE_SUBKEY	0x00000020
1277159d09a2SMark Phalan 
1278159d09a2SMark Phalan typedef struct krb5_replay_data {
1279159d09a2SMark Phalan     krb5_timestamp	timestamp;
1280159d09a2SMark Phalan     krb5_int32		usec;
1281159d09a2SMark Phalan     krb5_int32		seq;
12827c478bd9Sstevel@tonic-gate } krb5_replay_data;
12837c478bd9Sstevel@tonic-gate 
12847c478bd9Sstevel@tonic-gate /* flags for krb5_auth_con_genaddrs() */
1285159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR		0x00000001
1286159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR		0x00000002
1287159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR	0x00000004
1288159d09a2SMark Phalan #define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR	0x00000008
12897c478bd9Sstevel@tonic-gate 
12907c478bd9Sstevel@tonic-gate /* type of function used as a callback to generate checksum data for
12917c478bd9Sstevel@tonic-gate  * mk_req */
12927c478bd9Sstevel@tonic-gate 
1293159d09a2SMark Phalan typedef krb5_error_code
1294159d09a2SMark Phalan (KRB5_CALLCONV * krb5_mk_req_checksum_func) (krb5_context, krb5_auth_context , void *,
1295159d09a2SMark Phalan 			       krb5_data **);
12967c478bd9Sstevel@tonic-gate 
12977c478bd9Sstevel@tonic-gate /*
12987c478bd9Sstevel@tonic-gate  * end "safepriv.h"
12997c478bd9Sstevel@tonic-gate  */
13007c478bd9Sstevel@tonic-gate 
13017c478bd9Sstevel@tonic-gate 
13027c478bd9Sstevel@tonic-gate /*
13037c478bd9Sstevel@tonic-gate  * begin "ccache.h"
13047c478bd9Sstevel@tonic-gate  */
13057c478bd9Sstevel@tonic-gate 
13067c478bd9Sstevel@tonic-gate typedef	krb5_pointer	krb5_cc_cursor;	/* cursor for sequential lookup */
13077c478bd9Sstevel@tonic-gate 
1308505d05c7Sgtb struct _krb5_ccache;
1309505d05c7Sgtb typedef struct _krb5_ccache *krb5_ccache;
1310505d05c7Sgtb struct _krb5_cc_ops;
1311505d05c7Sgtb typedef struct _krb5_cc_ops krb5_cc_ops;
13127c478bd9Sstevel@tonic-gate 
13137c478bd9Sstevel@tonic-gate /* for retrieve_cred */
13147c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_TIMES		0x00000001
13157c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_IS_SKEY		0x00000002
13167c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_FLAGS		0x00000004
13177c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_TIMES_EXACT	0x00000008
13187c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_FLAGS_EXACT	0x00000010
13197c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_AUTHDATA		0x00000020
13207c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_SRV_NAMEONLY	0x00000040
13217c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_2ND_TKT		0x00000080
13227c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_KTYPE		0x00000100
13237c478bd9Sstevel@tonic-gate #define KRB5_TC_SUPPORTED_KTYPES	0x00000200
13247c478bd9Sstevel@tonic-gate 
13257c478bd9Sstevel@tonic-gate /* for set_flags and other functions */
13267c478bd9Sstevel@tonic-gate #define KRB5_TC_OPENCLOSE		0x00000001
1327505d05c7Sgtb #define KRB5_TC_NOTICKET                0x00000002
1328505d05c7Sgtb 
1329505d05c7Sgtb 
1330159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1331159d09a2SMark Phalan krb5_cc_gen_new (krb5_context context, krb5_ccache *cache);
1332505d05c7Sgtb 
1333159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1334159d09a2SMark Phalan krb5_cc_initialize(krb5_context context, krb5_ccache cache,
1335159d09a2SMark Phalan 		   krb5_principal principal);
1336505d05c7Sgtb 
1337159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1338159d09a2SMark Phalan krb5_cc_destroy (krb5_context context, krb5_ccache cache);
1339505d05c7Sgtb 
1340159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1341159d09a2SMark Phalan krb5_cc_close (krb5_context context, krb5_ccache cache);
1342505d05c7Sgtb 
1343159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1344159d09a2SMark Phalan krb5_cc_store_cred (krb5_context context, krb5_ccache cache,
1345505d05c7Sgtb                     krb5_creds *creds);
1346505d05c7Sgtb 
1347159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1348159d09a2SMark Phalan krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache,
1349159d09a2SMark Phalan 		       krb5_flags flags, krb5_creds *mcreds,
1350159d09a2SMark Phalan 		       krb5_creds *creds);
1351159d09a2SMark Phalan 
1352159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1353159d09a2SMark Phalan krb5_cc_get_principal (krb5_context context, krb5_ccache cache,
1354159d09a2SMark Phalan 		       krb5_principal *principal);
1355505d05c7Sgtb 
1356505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1357505d05c7Sgtb krb5_cc_start_seq_get (krb5_context context, krb5_ccache cache,
1358159d09a2SMark Phalan 		       krb5_cc_cursor *cursor);
13597c478bd9Sstevel@tonic-gate 
1360159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1361159d09a2SMark Phalan krb5_cc_next_cred (krb5_context context, krb5_ccache cache,
1362159d09a2SMark Phalan 		   krb5_cc_cursor *cursor, krb5_creds *creds);
1363505d05c7Sgtb 
1364159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1365159d09a2SMark Phalan krb5_cc_end_seq_get (krb5_context context, krb5_ccache cache,
1366159d09a2SMark Phalan 		     krb5_cc_cursor *cursor);
1367505d05c7Sgtb 
1368505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1369505d05c7Sgtb krb5_cc_remove_cred (krb5_context context, krb5_ccache cache, krb5_flags flags,
1370159d09a2SMark Phalan 		     krb5_creds *creds);
1371505d05c7Sgtb 
1372505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1373505d05c7Sgtb krb5_cc_set_flags (krb5_context context, krb5_ccache cache, krb5_flags flags);
1374505d05c7Sgtb 
1375159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1376159d09a2SMark Phalan krb5_cc_get_flags (krb5_context context, krb5_ccache cache, krb5_flags *flags);
1377159d09a2SMark Phalan 
1378505d05c7Sgtb const char * KRB5_CALLCONV
1379505d05c7Sgtb krb5_cc_get_type (krb5_context context, krb5_ccache cache);
1380505d05c7Sgtb 
1381505d05c7Sgtb /* SUNW14resync - add_cred.c needs this func */
1382505d05c7Sgtb const char * KRB5_CALLCONV
1383505d05c7Sgtb krb5_cc_get_name (krb5_context context, krb5_ccache cache);
13847c478bd9Sstevel@tonic-gate 
1385159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1386159d09a2SMark Phalan krb5_cc_new_unique(
1387159d09a2SMark Phalan     krb5_context context,
1388159d09a2SMark Phalan     const char *type,
1389159d09a2SMark Phalan     const char *hint,
1390159d09a2SMark Phalan     krb5_ccache *id);
1391159d09a2SMark Phalan 
13927c478bd9Sstevel@tonic-gate /*
13937c478bd9Sstevel@tonic-gate  * end "ccache.h"
13947c478bd9Sstevel@tonic-gate  */
13957c478bd9Sstevel@tonic-gate 
13967c478bd9Sstevel@tonic-gate /*
13977c478bd9Sstevel@tonic-gate  * begin "rcache.h"
13987c478bd9Sstevel@tonic-gate  */
13997c478bd9Sstevel@tonic-gate 
1400505d05c7Sgtb struct krb5_rc_st;
1401505d05c7Sgtb typedef struct krb5_rc_st *krb5_rcache;
14027c478bd9Sstevel@tonic-gate 
14037c478bd9Sstevel@tonic-gate /*
14047c478bd9Sstevel@tonic-gate  * end "rcache.h"
14057c478bd9Sstevel@tonic-gate  */
14067c478bd9Sstevel@tonic-gate 
14077c478bd9Sstevel@tonic-gate /*
14087c478bd9Sstevel@tonic-gate  * begin "keytab.h"
14097c478bd9Sstevel@tonic-gate  */
14107c478bd9Sstevel@tonic-gate 
14117c478bd9Sstevel@tonic-gate 
14127c478bd9Sstevel@tonic-gate /* XXX */
14137c478bd9Sstevel@tonic-gate #define MAX_KEYTAB_NAME_LEN 1100 /* Long enough for MAXPATHLEN + some extra */
14147c478bd9Sstevel@tonic-gate 
14157c478bd9Sstevel@tonic-gate typedef krb5_pointer krb5_kt_cursor;	/* XXX */
14167c478bd9Sstevel@tonic-gate 
14177c478bd9Sstevel@tonic-gate typedef struct krb5_keytab_entry_st {
14187c478bd9Sstevel@tonic-gate     krb5_magic magic;
14197c478bd9Sstevel@tonic-gate     krb5_principal principal;	/* principal of this key */
1420159d09a2SMark Phalan     krb5_timestamp timestamp;	/* time entry written to keytable */
14217c478bd9Sstevel@tonic-gate     krb5_kvno vno;		/* key version number */
14227c478bd9Sstevel@tonic-gate     krb5_keyblock key;		/* the secret key */
14237c478bd9Sstevel@tonic-gate } krb5_keytab_entry;
14247c478bd9Sstevel@tonic-gate 
1425505d05c7Sgtb #if KRB5_PRIVATE
1426159d09a2SMark Phalan struct _krb5_kt_ops;
1427159d09a2SMark Phalan typedef struct _krb5_kt {	/* should move into k5-int.h */
14287c478bd9Sstevel@tonic-gate     krb5_magic magic;
1429159d09a2SMark Phalan     const struct _krb5_kt_ops *ops;
14307c478bd9Sstevel@tonic-gate     krb5_pointer data;
1431159d09a2SMark Phalan } *krb5_keytab;
1432505d05c7Sgtb #else
1433159d09a2SMark Phalan struct _krb5_kt;
1434159d09a2SMark Phalan typedef struct _krb5_kt *krb5_keytab;
1435505d05c7Sgtb #endif
14367c478bd9Sstevel@tonic-gate 
1437505d05c7Sgtb char * KRB5_CALLCONV
1438505d05c7Sgtb krb5_kt_get_type (krb5_context, krb5_keytab keytab);
1439505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1440505d05c7Sgtb krb5_kt_get_name(krb5_context context, krb5_keytab keytab, char *name,
1441159d09a2SMark Phalan 		 unsigned int namelen);
1442505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1443505d05c7Sgtb krb5_kt_close(krb5_context context, krb5_keytab keytab);
1444505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1445505d05c7Sgtb krb5_kt_get_entry(krb5_context context, krb5_keytab keytab,
1446159d09a2SMark Phalan 		  krb5_const_principal principal, krb5_kvno vno,
1447159d09a2SMark Phalan 		  krb5_enctype enctype, krb5_keytab_entry *entry);
1448505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1449505d05c7Sgtb krb5_kt_start_seq_get(krb5_context context, krb5_keytab keytab,
1450159d09a2SMark Phalan 		      krb5_kt_cursor *cursor);
1451505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1452505d05c7Sgtb krb5_kt_next_entry(krb5_context context, krb5_keytab keytab,
1453159d09a2SMark Phalan 		   krb5_keytab_entry *entry, krb5_kt_cursor *cursor);
1454505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1455505d05c7Sgtb krb5_kt_end_seq_get(krb5_context context, krb5_keytab keytab,
1456159d09a2SMark Phalan 		    krb5_kt_cursor *cursor);
1457db02be57S /* Solaris Kerberos */
1458db02be57S krb5_error_code
1459db02be57S krb5_kt_find_realm(krb5_context context, krb5_keytab keytab,
1460db02be57S 		  krb5_principal princ, krb5_data *realm);
14617c478bd9Sstevel@tonic-gate 
14627c478bd9Sstevel@tonic-gate /*
14637c478bd9Sstevel@tonic-gate  * end "keytab.h"
14647c478bd9Sstevel@tonic-gate  */
14657c478bd9Sstevel@tonic-gate 
14667c478bd9Sstevel@tonic-gate /*
14677c478bd9Sstevel@tonic-gate  * begin "func-proto.h"
14687c478bd9Sstevel@tonic-gate  */
14697c478bd9Sstevel@tonic-gate 
1470505d05c7Sgtb /* Solaris Kerberos */
14717c478bd9Sstevel@tonic-gate krb5_error_code krb5_init_ef_handle(krb5_context);
14727c478bd9Sstevel@tonic-gate krb5_error_code krb5_free_ef_handle(krb5_context);
14737c478bd9Sstevel@tonic-gate 
14747c478bd9Sstevel@tonic-gate krb5_boolean krb5_privacy_allowed(void);
14757c478bd9Sstevel@tonic-gate 
1476505d05c7Sgtb /*
1477505d05c7Sgtb  * Solaris Kerberos:
1478505d05c7Sgtb  * krb5_copy_keyblock_data is a new routine to hide the details
1479505d05c7Sgtb  * of a keyblock copy operation.
1480505d05c7Sgtb  */
1481505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_data
1482505d05c7Sgtb 	(krb5_context,
1483505d05c7Sgtb 		const krb5_keyblock *,
1484505d05c7Sgtb 		krb5_keyblock *);
1485505d05c7Sgtb 
1486505d05c7Sgtb 
1487505d05c7Sgtb 
1488505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_init_context
1489505d05c7Sgtb 	(krb5_context *);
1490505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_init_secure_context
1491505d05c7Sgtb 	(krb5_context *);
1492505d05c7Sgtb void KRB5_CALLCONV krb5_free_context
1493505d05c7Sgtb 	(krb5_context);
1494505d05c7Sgtb 
1495505d05c7Sgtb #if KRB5_PRIVATE
14967c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_default_in_tkt_ktypes
1497505d05c7Sgtb 	(krb5_context,
1498505d05c7Sgtb 		const krb5_enctype *);
14997c478bd9Sstevel@tonic-gate krb5_error_code krb5_get_default_in_tkt_ktypes
1500505d05c7Sgtb 	(krb5_context,
1501505d05c7Sgtb 		krb5_enctype **);
15027c478bd9Sstevel@tonic-gate 
15037c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_default_tgs_ktypes
1504505d05c7Sgtb 	(krb5_context,
1505505d05c7Sgtb 		const krb5_enctype *);
1506505d05c7Sgtb #endif
1507505d05c7Sgtb 
15087c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
15097c478bd9Sstevel@tonic-gate krb5_set_default_tgs_enctypes
15107c478bd9Sstevel@tonic-gate 	(krb5_context,
1511505d05c7Sgtb 		const krb5_enctype *);
1512505d05c7Sgtb #if KRB5_PRIVATE
15137c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_tgs_ktypes
1514505d05c7Sgtb 	(krb5_context,
1515505d05c7Sgtb 		krb5_const_principal,
1516505d05c7Sgtb 		krb5_enctype **);
1517505d05c7Sgtb #endif
15187c478bd9Sstevel@tonic-gate 
1519505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_permitted_enctypes
1520505d05c7Sgtb 	(krb5_context, krb5_enctype **);
1521505d05c7Sgtb 
1522505d05c7Sgtb #if KRB5_PRIVATE
15237c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ktypes
1524505d05c7Sgtb 	(krb5_context, krb5_enctype *);
15257c478bd9Sstevel@tonic-gate 
15267c478bd9Sstevel@tonic-gate krb5_boolean krb5_is_permitted_enctype
1527505d05c7Sgtb 	(krb5_context, krb5_enctype);
1528505d05c7Sgtb #endif
1529505d05c7Sgtb 
1530505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_is_thread_safe(void);
15317c478bd9Sstevel@tonic-gate 
15327c478bd9Sstevel@tonic-gate /* libkrb.spec */
1533505d05c7Sgtb #if KRB5_PRIVATE
15347c478bd9Sstevel@tonic-gate krb5_error_code krb5_kdc_rep_decrypt_proc
1535505d05c7Sgtb 	(krb5_context,
1536505d05c7Sgtb 		const krb5_keyblock *,
1537505d05c7Sgtb 		krb5_const_pointer,
1538505d05c7Sgtb 		krb5_kdc_rep * );
1539505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_decrypt_tkt_part
1540505d05c7Sgtb 	(krb5_context,
1541505d05c7Sgtb 		const krb5_keyblock *,
1542505d05c7Sgtb 		krb5_ticket * );
15437c478bd9Sstevel@tonic-gate krb5_error_code krb5_get_cred_from_kdc
1544505d05c7Sgtb 	(krb5_context,
1545505d05c7Sgtb 		krb5_ccache,		/* not const, as reading may save
15467c478bd9Sstevel@tonic-gate 					   state */
1547505d05c7Sgtb 		krb5_creds *,
1548505d05c7Sgtb 		krb5_creds **,
1549505d05c7Sgtb 		krb5_creds *** );
15507c478bd9Sstevel@tonic-gate krb5_error_code krb5_get_cred_from_kdc_validate
1551505d05c7Sgtb 	(krb5_context,
1552505d05c7Sgtb 		krb5_ccache,		/* not const, as reading may save
15537c478bd9Sstevel@tonic-gate 					   state */
1554505d05c7Sgtb 		krb5_creds *,
1555505d05c7Sgtb 		krb5_creds **,
1556505d05c7Sgtb 		krb5_creds *** );
15577c478bd9Sstevel@tonic-gate krb5_error_code krb5_get_cred_from_kdc_renew
1558505d05c7Sgtb 	(krb5_context,
1559505d05c7Sgtb 		krb5_ccache,		/* not const, as reading may save
15607c478bd9Sstevel@tonic-gate 					   state */
1561505d05c7Sgtb 		krb5_creds *,
1562505d05c7Sgtb 		krb5_creds **,
1563505d05c7Sgtb 		krb5_creds *** );
1564505d05c7Sgtb #endif
1565505d05c7Sgtb 
15667c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_tgt_creds
1567505d05c7Sgtb 	(krb5_context,
1568505d05c7Sgtb 	 krb5_creds **); /* XXX too hard to do with const */
15697c478bd9Sstevel@tonic-gate 
15707c478bd9Sstevel@tonic-gate #define	KRB5_GC_USER_USER	1	/* want user-user ticket */
15717c478bd9Sstevel@tonic-gate #define	KRB5_GC_CACHED		2	/* want cached ticket only */
15727c478bd9Sstevel@tonic-gate 
15737c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_credentials
1574505d05c7Sgtb 	(krb5_context,
1575505d05c7Sgtb 		krb5_flags,
1576505d05c7Sgtb 		krb5_ccache,
1577505d05c7Sgtb 		krb5_creds *,
1578505d05c7Sgtb 		krb5_creds **);
15797c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate
1580505d05c7Sgtb 	(krb5_context,
1581505d05c7Sgtb 		krb5_flags,
1582505d05c7Sgtb 		krb5_ccache,
1583505d05c7Sgtb 		krb5_creds *,
1584505d05c7Sgtb 		krb5_creds **);
15857c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew
1586505d05c7Sgtb 	(krb5_context,
1587505d05c7Sgtb 		krb5_flags,
1588505d05c7Sgtb 		krb5_ccache,
1589505d05c7Sgtb 		krb5_creds *,
1590505d05c7Sgtb 		krb5_creds **);
1591505d05c7Sgtb #if KRB5_PRIVATE
15927c478bd9Sstevel@tonic-gate krb5_error_code krb5_get_cred_via_tkt
1593505d05c7Sgtb 	(krb5_context,
1594505d05c7Sgtb 		   krb5_creds *,
1595505d05c7Sgtb 		   krb5_flags,
1596505d05c7Sgtb 		   krb5_address * const *,
1597505d05c7Sgtb 		   krb5_creds *,
1598505d05c7Sgtb 		   krb5_creds **);
1599505d05c7Sgtb #endif
16007c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_req
1601505d05c7Sgtb 	(krb5_context,
16027c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
1603505d05c7Sgtb 		krb5_flags,
16047c478bd9Sstevel@tonic-gate 		char *,
16057c478bd9Sstevel@tonic-gate 		char *,
16067c478bd9Sstevel@tonic-gate 		krb5_data *,
16077c478bd9Sstevel@tonic-gate 		krb5_ccache,
1608505d05c7Sgtb 		krb5_data * );
16097c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_req_extended
1610505d05c7Sgtb 	(krb5_context,
1611505d05c7Sgtb 		krb5_auth_context *,
1612505d05c7Sgtb 		krb5_flags,
1613505d05c7Sgtb 		krb5_data *,
1614505d05c7Sgtb 		krb5_creds *,
1615505d05c7Sgtb 		krb5_data * );
16167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_rep
1617505d05c7Sgtb 	(krb5_context,
16187c478bd9Sstevel@tonic-gate 		krb5_auth_context,
1619505d05c7Sgtb 		krb5_data *);
16207c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_rep
1621505d05c7Sgtb 	(krb5_context,
1622505d05c7Sgtb 		krb5_auth_context,
1623505d05c7Sgtb 		const krb5_data *,
1624505d05c7Sgtb 		krb5_ap_rep_enc_part **);
16257c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_error
1626505d05c7Sgtb 	(krb5_context,
1627505d05c7Sgtb 		const krb5_error *,
1628505d05c7Sgtb 		krb5_data * );
16297c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_error
1630505d05c7Sgtb 	(krb5_context,
1631505d05c7Sgtb 		const krb5_data *,
1632505d05c7Sgtb 		krb5_error ** );
16337c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_safe
1634505d05c7Sgtb 	(krb5_context,
16357c478bd9Sstevel@tonic-gate 		krb5_auth_context,
1636505d05c7Sgtb 		const krb5_data *,
16377c478bd9Sstevel@tonic-gate 		krb5_data *,
1638505d05c7Sgtb 		krb5_replay_data *);
16397c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_priv
1640505d05c7Sgtb 	(krb5_context,
16417c478bd9Sstevel@tonic-gate 		krb5_auth_context,
1642505d05c7Sgtb 		const krb5_data *,
16437c478bd9Sstevel@tonic-gate 		krb5_data *,
1644505d05c7Sgtb 		krb5_replay_data *);
16457c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_parse_name
1646505d05c7Sgtb 	(krb5_context,
1647505d05c7Sgtb 		const char *,
1648505d05c7Sgtb 		krb5_principal * );
16497c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_unparse_name
1650505d05c7Sgtb 	(krb5_context,
1651505d05c7Sgtb 		krb5_const_principal,
1652505d05c7Sgtb 		char ** );
16537c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_unparse_name_ext
1654505d05c7Sgtb 	(krb5_context,
16557c478bd9Sstevel@tonic-gate 		krb5_const_principal,
1656505d05c7Sgtb 		char **,
1657505d05c7Sgtb 		unsigned int *);
16587c478bd9Sstevel@tonic-gate 
16597c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_set_principal_realm
1660505d05c7Sgtb 	(krb5_context, krb5_principal, const char *);
1661505d05c7Sgtb 
1662505d05c7Sgtb krb5_boolean KRB5_CALLCONV_WRONG krb5_address_search
1663505d05c7Sgtb 	(krb5_context,
1664505d05c7Sgtb 		const krb5_address *,
1665505d05c7Sgtb 		krb5_address * const *);
1666505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_address_compare
1667505d05c7Sgtb 	(krb5_context,
1668505d05c7Sgtb 		const krb5_address *,
1669505d05c7Sgtb 		const krb5_address *);
1670505d05c7Sgtb int KRB5_CALLCONV krb5_address_order
1671505d05c7Sgtb 	(krb5_context,
1672505d05c7Sgtb 		const krb5_address *,
1673505d05c7Sgtb 		const krb5_address *);
1674505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_realm_compare
1675505d05c7Sgtb 	(krb5_context,
1676505d05c7Sgtb 		krb5_const_principal,
1677505d05c7Sgtb 		krb5_const_principal);
1678505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_principal_compare
1679505d05c7Sgtb 	(krb5_context,
1680505d05c7Sgtb 		krb5_const_principal,
1681505d05c7Sgtb 		krb5_const_principal);
1682505d05c7Sgtb krb5_error_code KRB5_CALLCONV  krb5_init_keyblock
1683505d05c7Sgtb 		(krb5_context, krb5_enctype enctype,
1684505d05c7Sgtb 		size_t length, krb5_keyblock **out);
1685505d05c7Sgtb   		/* Initialize a new keyblock and allocate storage
1686505d05c7Sgtb 		 * for the contents of the key, which will be freed along
1687505d05c7Sgtb 		 * with the keyblock when krb5_free_keyblock is called.
1688505d05c7Sgtb 		 * It is legal to pass in a length of 0, in which
1689505d05c7Sgtb 		 * case contents are left unallocated.
1690505d05c7Sgtb 		 */
169110db1377Sgtb 
169210db1377Sgtb /*
169310db1377Sgtb  * Solaris Kerberos
169410db1377Sgtb  * Start - keyblock API (MIT will ship this also in a future release)
169510db1377Sgtb  */
169610db1377Sgtb /*
169710db1377Sgtb  * Similiar to krb5_init_keyblock but this routine expects the
169810db1377Sgtb  * keyblock to already be allocated.
169910db1377Sgtb  */
170010db1377Sgtb krb5_error_code KRB5_CALLCONV krb5_init_allocated_keyblock
170110db1377Sgtb         (krb5_context,
170210db1377Sgtb 	        krb5_enctype,
170310db1377Sgtb 	        unsigned int,
170410db1377Sgtb                 krb5_keyblock *);
170510db1377Sgtb 
170610db1377Sgtb krb5_enctype KRB5_CALLCONV krb5_get_key_enctype
170710db1377Sgtb         (krb5_keyblock *);
170810db1377Sgtb 
170910db1377Sgtb unsigned int KRB5_CALLCONV krb5_get_key_length
171010db1377Sgtb         (krb5_keyblock *);
171110db1377Sgtb 
171210db1377Sgtb krb5_octet KRB5_CALLCONV *krb5_get_key_data
171310db1377Sgtb         (krb5_keyblock *);
171410db1377Sgtb 
171510db1377Sgtb void KRB5_CALLCONV krb5_set_key_enctype
171610db1377Sgtb         (krb5_keyblock *,
171710db1377Sgtb                  krb5_enctype);
171810db1377Sgtb 
171910db1377Sgtb void KRB5_CALLCONV krb5_set_key_data
172010db1377Sgtb         (krb5_keyblock *,
172110db1377Sgtb                  krb5_octet *);
172210db1377Sgtb 
172310db1377Sgtb void KRB5_CALLCONV krb5_set_key_length
172410db1377Sgtb         (krb5_keyblock *,
172510db1377Sgtb                  unsigned int);
172610db1377Sgtb /*
172710db1377Sgtb  * Solaris Kerberos
172810db1377Sgtb  * End - keyblock API
172910db1377Sgtb  */
173010db1377Sgtb 
17317c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_keyblock
1732505d05c7Sgtb 	(krb5_context,
1733505d05c7Sgtb 		const krb5_keyblock *,
1734505d05c7Sgtb 		krb5_keyblock **);
17357c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_contents
1736505d05c7Sgtb 	(krb5_context,
1737505d05c7Sgtb 		const krb5_keyblock *,
1738505d05c7Sgtb 		krb5_keyblock *);
17397c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_creds
1740505d05c7Sgtb 	(krb5_context,
1741505d05c7Sgtb 		const krb5_creds *,
1742505d05c7Sgtb 		krb5_creds **);
17437c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_data
1744505d05c7Sgtb 	(krb5_context,
1745505d05c7Sgtb 		const krb5_data *,
1746505d05c7Sgtb 		krb5_data **);
17477c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_principal
1748505d05c7Sgtb 	(krb5_context,
17497c478bd9Sstevel@tonic-gate 		krb5_const_principal,
1750505d05c7Sgtb 		krb5_principal *);
1751505d05c7Sgtb #if KRB5_PRIVATE
17527c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_addr
1753505d05c7Sgtb 	(krb5_context,
17547c478bd9Sstevel@tonic-gate 		const krb5_address *,
1755505d05c7Sgtb 		krb5_address **);
1756505d05c7Sgtb #endif
17577c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_addresses
1758505d05c7Sgtb 	(krb5_context,
1759505d05c7Sgtb 		krb5_address * const *,
1760505d05c7Sgtb 		krb5_address ***);
17617c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_ticket
1762505d05c7Sgtb 	(krb5_context,
1763505d05c7Sgtb 		const krb5_ticket *,
1764505d05c7Sgtb 		krb5_ticket **);
17657c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_authdata
1766505d05c7Sgtb 	(krb5_context,
1767505d05c7Sgtb 		krb5_authdata * const *,
1768505d05c7Sgtb 		krb5_authdata ***);
17697c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_authenticator
1770505d05c7Sgtb 	(krb5_context,
1771505d05c7Sgtb 		const krb5_authenticator *,
1772505d05c7Sgtb 		krb5_authenticator **);
17737c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_checksum
1774505d05c7Sgtb 	(krb5_context,
1775505d05c7Sgtb 		const krb5_checksum *,
1776505d05c7Sgtb 		krb5_checksum **);
1777505d05c7Sgtb #if KRB5_PRIVATE
17787c478bd9Sstevel@tonic-gate void krb5_init_ets
1779505d05c7Sgtb 	(krb5_context);
17807c478bd9Sstevel@tonic-gate void krb5_free_ets
1781505d05c7Sgtb 	(krb5_context);
17827c478bd9Sstevel@tonic-gate krb5_error_code krb5_generate_subkey
1783505d05c7Sgtb 	(krb5_context,
1784505d05c7Sgtb 		const krb5_keyblock *, krb5_keyblock **);
17857c478bd9Sstevel@tonic-gate krb5_error_code krb5_generate_seq_number
1786505d05c7Sgtb 	(krb5_context,
1787505d05c7Sgtb 		const krb5_keyblock *, krb5_ui_4 *);
1788505d05c7Sgtb #endif
17897c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_server_rcache
1790505d05c7Sgtb 	(krb5_context,
1791505d05c7Sgtb 		const krb5_data *, krb5_rcache *);
17927c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV_C krb5_build_principal_ext
1793505d05c7Sgtb 	(krb5_context, krb5_principal *, unsigned int, const char *, ...);
1794505d05c7Sgtb krb5_error_code KRB5_CALLCONV_C krb5_build_principal
1795505d05c7Sgtb 	(krb5_context, krb5_principal *, unsigned int, const char *, ...);
17967c478bd9Sstevel@tonic-gate #ifdef va_start
17977c478bd9Sstevel@tonic-gate /* XXX depending on varargs include file defining va_start... */
1798505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_build_principal_va
1799505d05c7Sgtb 	(krb5_context,
1800505d05c7Sgtb 		krb5_principal, unsigned int, const char *, va_list);
18017c478bd9Sstevel@tonic-gate #endif
18027c478bd9Sstevel@tonic-gate 
18037c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_425_conv_principal
1804505d05c7Sgtb 	(krb5_context,
1805505d05c7Sgtb 		const char *name,
1806505d05c7Sgtb 		const char *instance, const char *realm,
1807505d05c7Sgtb 		krb5_principal *princ);
18087c478bd9Sstevel@tonic-gate 
18097c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_524_conv_principal
1810505d05c7Sgtb 	(krb5_context context, krb5_const_principal princ,
1811505d05c7Sgtb 		char *name, char *inst, char *realm);
1812505d05c7Sgtb 
1813505d05c7Sgtb struct credentials;
1814505d05c7Sgtb int KRB5_CALLCONV krb5_524_convert_creds
1815505d05c7Sgtb 	(krb5_context context, krb5_creds *v5creds,
1816505d05c7Sgtb 	 struct credentials *v4creds);
1817505d05c7Sgtb #if KRB5_DEPRECATED
1818505d05c7Sgtb #define krb524_convert_creds_kdc krb5_524_convert_creds
1819505d05c7Sgtb #define krb524_init_ets(x) (0)
1820505d05c7Sgtb #endif
18217c478bd9Sstevel@tonic-gate 
18227c478bd9Sstevel@tonic-gate /* libkt.spec */
1823505d05c7Sgtb #if KRB5_PRIVATE
18247c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_register
1825505d05c7Sgtb 	(krb5_context,
1826505d05c7Sgtb 		const struct _krb5_kt_ops * );
1827505d05c7Sgtb #endif
1828505d05c7Sgtb 
18297c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_resolve
1830505d05c7Sgtb 	(krb5_context,
1831505d05c7Sgtb 		const char *,
1832505d05c7Sgtb 		krb5_keytab * );
18337c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_default_name
1834505d05c7Sgtb 	(krb5_context,
18357c478bd9Sstevel@tonic-gate 		char *,
1836505d05c7Sgtb 		int );
18377c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_default
1838505d05c7Sgtb 	(krb5_context,
1839505d05c7Sgtb 		krb5_keytab * );
1840505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_free_keytab_entry_contents
1841505d05c7Sgtb 	(krb5_context,
1842505d05c7Sgtb 		krb5_keytab_entry * );
1843505d05c7Sgtb #if KRB5_PRIVATE
1844505d05c7Sgtb /* use krb5_free_keytab_entry_contents instead */
18457c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_free_entry
1846505d05c7Sgtb 	(krb5_context,
1847505d05c7Sgtb 		krb5_keytab_entry * );
1848505d05c7Sgtb #endif
18497c478bd9Sstevel@tonic-gate /* remove and add are functions, so that they can return NOWRITE
18507c478bd9Sstevel@tonic-gate    if not a writable keytab */
18517c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_remove_entry
1852505d05c7Sgtb 	(krb5_context,
18537c478bd9Sstevel@tonic-gate 		krb5_keytab,
1854505d05c7Sgtb 		krb5_keytab_entry * );
18557c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_add_entry
1856505d05c7Sgtb 	(krb5_context,
18577c478bd9Sstevel@tonic-gate 		krb5_keytab,
1858505d05c7Sgtb 		krb5_keytab_entry * );
1859505d05c7Sgtb krb5_error_code KRB5_CALLCONV_WRONG krb5_principal2salt
1860505d05c7Sgtb 	(krb5_context,
1861505d05c7Sgtb 		krb5_const_principal, krb5_data *);
1862505d05c7Sgtb #if KRB5_PRIVATE
18637c478bd9Sstevel@tonic-gate krb5_error_code krb5_principal2salt_norealm
1864505d05c7Sgtb 	(krb5_context,
1865505d05c7Sgtb 		krb5_const_principal, krb5_data *);
1866505d05c7Sgtb #endif
18677c478bd9Sstevel@tonic-gate /* librc.spec--see rcache.h */
18687c478bd9Sstevel@tonic-gate 
18697c478bd9Sstevel@tonic-gate /* libcc.spec */
18707c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_resolve
1871505d05c7Sgtb 	(krb5_context,
1872505d05c7Sgtb 		const char *,
1873505d05c7Sgtb 		krb5_ccache * );
1874505d05c7Sgtb const char * KRB5_CALLCONV krb5_cc_default_name
1875505d05c7Sgtb 	(krb5_context);
18767c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_set_default_name
1877505d05c7Sgtb 	(krb5_context, const char *);
18787c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_default
1879505d05c7Sgtb 	(krb5_context,
1880505d05c7Sgtb 		krb5_ccache *);
1881505d05c7Sgtb #if KRB5_PRIVATE
1882505d05c7Sgtb unsigned int KRB5_CALLCONV krb5_get_notification_message
1883505d05c7Sgtb 	(void);
1884505d05c7Sgtb #endif
18857c478bd9Sstevel@tonic-gate 
18867c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds
1887505d05c7Sgtb 	(krb5_context context,
18887c478bd9Sstevel@tonic-gate 			krb5_ccache incc,
1889505d05c7Sgtb 			krb5_ccache outcc);
18907c478bd9Sstevel@tonic-gate 
18917c478bd9Sstevel@tonic-gate 
18927c478bd9Sstevel@tonic-gate /* chk_trans.c */
1893505d05c7Sgtb #if KRB5_PRIVATE
18947c478bd9Sstevel@tonic-gate krb5_error_code krb5_check_transited_list
1895505d05c7Sgtb 	(krb5_context, const krb5_data *trans,
1896505d05c7Sgtb 	 const krb5_data *realm1, const krb5_data *realm2);
1897505d05c7Sgtb #endif
18987c478bd9Sstevel@tonic-gate 
18997c478bd9Sstevel@tonic-gate /* free_rtree.c */
1900505d05c7Sgtb #if KRB5_PRIVATE
19017c478bd9Sstevel@tonic-gate void krb5_free_realm_tree
1902505d05c7Sgtb 	(krb5_context,
1903505d05c7Sgtb 		krb5_principal *);
1904505d05c7Sgtb #endif
19057c478bd9Sstevel@tonic-gate 
19067c478bd9Sstevel@tonic-gate /* krb5_free.c */
19077c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_principal
1908505d05c7Sgtb 	(krb5_context, krb5_principal );
19097c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_authenticator
1910505d05c7Sgtb 	(krb5_context, krb5_authenticator * );
1911505d05c7Sgtb #if KRB5_PRIVATE
19127c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_authenticator_contents
1913505d05c7Sgtb 	(krb5_context, krb5_authenticator * );
1914505d05c7Sgtb #endif
19157c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_addresses
1916505d05c7Sgtb 	(krb5_context, krb5_address ** );
1917505d05c7Sgtb #if KRB5_PRIVATE
19187c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_address
1919505d05c7Sgtb 	(krb5_context, krb5_address * );
1920505d05c7Sgtb #endif
19217c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_authdata
1922505d05c7Sgtb 	(krb5_context, krb5_authdata ** );
1923505d05c7Sgtb #if KRB5_PRIVATE
19247c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_enc_tkt_part
1925505d05c7Sgtb 	(krb5_context, krb5_enc_tkt_part * );
1926505d05c7Sgtb #endif
19277c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ticket
1928505d05c7Sgtb 	(krb5_context, krb5_ticket * );
1929505d05c7Sgtb #if KRB5_PRIVATE
19307c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_tickets
1931505d05c7Sgtb 	(krb5_context, krb5_ticket ** );
19327c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_kdc_req
1933505d05c7Sgtb 	(krb5_context, krb5_kdc_req * );
19347c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_kdc_rep
1935505d05c7Sgtb 	(krb5_context, krb5_kdc_rep * );
19367c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_last_req
1937505d05c7Sgtb 	(krb5_context, krb5_last_req_entry ** );
19387c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_enc_kdc_rep_part
1939505d05c7Sgtb 	(krb5_context, krb5_enc_kdc_rep_part * );
1940505d05c7Sgtb #endif
19417c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_error
1942505d05c7Sgtb 	(krb5_context, krb5_error * );
1943505d05c7Sgtb #if KRB5_PRIVATE
19447c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ap_req
1945505d05c7Sgtb 	(krb5_context, krb5_ap_req * );
19467c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ap_rep
1947505d05c7Sgtb 	(krb5_context, krb5_ap_rep * );
19487c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cred
1949505d05c7Sgtb 	(krb5_context, krb5_cred *);
1950505d05c7Sgtb #endif
19517c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_creds
1952505d05c7Sgtb 	(krb5_context, krb5_creds *);
19537c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cred_contents
1954505d05c7Sgtb 	(krb5_context, krb5_creds *);
1955505d05c7Sgtb #if KRB5_PRIVATE
19567c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cred_enc_part
1957505d05c7Sgtb 	(krb5_context, krb5_cred_enc_part *);
1958505d05c7Sgtb #endif
19597c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_checksum
1960505d05c7Sgtb 	(krb5_context, krb5_checksum *);
19617c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_checksum_contents
1962505d05c7Sgtb 	(krb5_context, krb5_checksum *);
19637c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_keyblock
1964505d05c7Sgtb 	(krb5_context, krb5_keyblock *);
19657c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_keyblock_contents
1966505d05c7Sgtb 	(krb5_context, krb5_keyblock *);
1967505d05c7Sgtb #if KRB5_PRIVATE
19687c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_pa_data
1969505d05c7Sgtb 	(krb5_context, krb5_pa_data **);
1970505d05c7Sgtb #endif
19717c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ap_rep_enc_part
1972505d05c7Sgtb 	(krb5_context, krb5_ap_rep_enc_part *);
1973505d05c7Sgtb #if KRB5_PRIVATE
19747c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_tkt_authent
1975505d05c7Sgtb 	(krb5_context, krb5_tkt_authent *);
19767c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_pwd_data
1977505d05c7Sgtb 	(krb5_context, krb5_pwd_data *);
19787c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_pwd_sequences
1979505d05c7Sgtb 	(krb5_context, passwd_phrase_element **);
1980505d05c7Sgtb #endif
19817c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_data
1982505d05c7Sgtb 	(krb5_context, krb5_data *);
19837c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_data_contents
1984505d05c7Sgtb 	(krb5_context, krb5_data *);
19857c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_unparsed_name
1986505d05c7Sgtb 	(krb5_context, char *);
19877c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cksumtypes
1988505d05c7Sgtb 	(krb5_context, krb5_cksumtype *);
19897c478bd9Sstevel@tonic-gate 
19907c478bd9Sstevel@tonic-gate /* From krb5/os but needed but by the outside world */
19917c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_us_timeofday
1992505d05c7Sgtb 	(krb5_context,
1993505d05c7Sgtb 		krb5_int32 *,
1994505d05c7Sgtb 		krb5_int32 * );
19957c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_timeofday
1996505d05c7Sgtb 	(krb5_context,
1997505d05c7Sgtb 		krb5_int32 * );
19987c478bd9Sstevel@tonic-gate 		 /* get all the addresses of this host */
19997c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_os_localaddr
2000505d05c7Sgtb 	(krb5_context,
2001505d05c7Sgtb 		krb5_address ***);
20027c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_default_realm
2003505d05c7Sgtb 	(krb5_context,
2004505d05c7Sgtb 		 char ** );
20057c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_set_default_realm
2006505d05c7Sgtb 	(krb5_context,
2007505d05c7Sgtb 		   const char * );
20087c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_default_realm
2009505d05c7Sgtb 	(krb5_context,
2010505d05c7Sgtb 		   char * );
20117c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_sname_to_principal
2012505d05c7Sgtb 	(krb5_context,
2013505d05c7Sgtb 		const char *,
2014505d05c7Sgtb 		   const char *,
20157c478bd9Sstevel@tonic-gate 		   krb5_int32,
2016505d05c7Sgtb 		   krb5_principal *);
2017505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2018505d05c7Sgtb krb5_change_password
2019505d05c7Sgtb 	(krb5_context context, krb5_creds *creds, char *newpw,
2020505d05c7Sgtb 			int *result_code, krb5_data *result_code_string,
2021505d05c7Sgtb 			krb5_data *result_string);
2022505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2023505d05c7Sgtb krb5_set_password
2024505d05c7Sgtb 	(krb5_context context, krb5_creds *creds, char *newpw, krb5_principal change_password_for,
2025505d05c7Sgtb 			int *result_code, krb5_data *result_code_string, krb5_data *result_string);
2026505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2027505d05c7Sgtb krb5_set_password_using_ccache
2028505d05c7Sgtb 	(krb5_context context, krb5_ccache ccache, char *newpw, krb5_principal change_password_for,
2029505d05c7Sgtb 			int *result_code, krb5_data *result_code_string, krb5_data *result_string);
20307c478bd9Sstevel@tonic-gate 
2031505d05c7Sgtb #if KRB5_PRIVATE
20327c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_config_files
2033505d05c7Sgtb 	(krb5_context, const char **);
20347c478bd9Sstevel@tonic-gate 
20357c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_default_config_files
2036505d05c7Sgtb 	(char ***filenames);
20377c478bd9Sstevel@tonic-gate 
20387c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_config_files
2039505d05c7Sgtb 	(char **filenames);
20407c478bd9Sstevel@tonic-gate #endif
20417c478bd9Sstevel@tonic-gate 
2042505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2043505d05c7Sgtb krb5_get_profile
2044505d05c7Sgtb 	(krb5_context, struct _profile_t * /* profile_t */ *);
2045505d05c7Sgtb 
2046505d05c7Sgtb #if KRB5_PRIVATE
20477c478bd9Sstevel@tonic-gate krb5_error_code krb5_send_tgs
2048505d05c7Sgtb 	(krb5_context,
2049505d05c7Sgtb 		krb5_flags,
2050505d05c7Sgtb 		const krb5_ticket_times *,
2051505d05c7Sgtb 		const krb5_enctype *,
2052505d05c7Sgtb 		krb5_const_principal,
2053505d05c7Sgtb 		krb5_address * const *,
2054505d05c7Sgtb 		krb5_authdata * const *,
2055505d05c7Sgtb 		krb5_pa_data * const *,
2056505d05c7Sgtb 		const krb5_data *,
2057505d05c7Sgtb 		krb5_creds *,
2058505d05c7Sgtb 		krb5_response * );
2059505d05c7Sgtb #endif
2060505d05c7Sgtb 
2061505d05c7Sgtb #if KRB5_DEPRECATED
2062505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt
2063505d05c7Sgtb 	(krb5_context,
2064505d05c7Sgtb 		krb5_flags,
2065505d05c7Sgtb 		krb5_address * const *,
2066505d05c7Sgtb 		krb5_enctype *,
2067505d05c7Sgtb 		krb5_preauthtype *,
2068505d05c7Sgtb 		krb5_error_code ( * )(krb5_context,
2069505d05c7Sgtb 					krb5_enctype,
2070505d05c7Sgtb 					krb5_data *,
2071505d05c7Sgtb 					krb5_const_pointer,
2072505d05c7Sgtb 					krb5_keyblock **),
2073505d05c7Sgtb 		krb5_const_pointer,
2074505d05c7Sgtb 		krb5_error_code ( * )(krb5_context,
2075505d05c7Sgtb 					const krb5_keyblock *,
2076505d05c7Sgtb 					krb5_const_pointer,
2077505d05c7Sgtb 					krb5_kdc_rep * ),
2078505d05c7Sgtb 		krb5_const_pointer,
2079505d05c7Sgtb 		krb5_creds *,
2080505d05c7Sgtb 		krb5_ccache,
2081505d05c7Sgtb 		krb5_kdc_rep ** );
2082505d05c7Sgtb 
2083505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_password
2084505d05c7Sgtb 	(krb5_context,
2085505d05c7Sgtb 		krb5_flags,
2086505d05c7Sgtb 		krb5_address * const *,
2087505d05c7Sgtb 		krb5_enctype *,
2088505d05c7Sgtb 		krb5_preauthtype *,
2089505d05c7Sgtb 		const char *,
2090505d05c7Sgtb 		krb5_ccache,
2091505d05c7Sgtb 		krb5_creds *,
2092505d05c7Sgtb 		krb5_kdc_rep ** );
2093505d05c7Sgtb 
2094505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_skey
2095505d05c7Sgtb 	(krb5_context,
2096505d05c7Sgtb 		krb5_flags,
2097505d05c7Sgtb 		krb5_address * const *,
2098505d05c7Sgtb 		krb5_enctype *,
2099505d05c7Sgtb 		krb5_preauthtype *,
2100505d05c7Sgtb 		const krb5_keyblock *,
2101505d05c7Sgtb 		krb5_ccache,
2102505d05c7Sgtb 		krb5_creds *,
2103505d05c7Sgtb 		krb5_kdc_rep ** );
2104505d05c7Sgtb 
2105505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_keytab
2106505d05c7Sgtb 	(krb5_context,
2107505d05c7Sgtb 		krb5_flags,
2108505d05c7Sgtb 		krb5_address * const *,
2109505d05c7Sgtb 		krb5_enctype *,
2110505d05c7Sgtb 		krb5_preauthtype *,
2111505d05c7Sgtb 		krb5_keytab,
2112505d05c7Sgtb 		krb5_ccache,
2113505d05c7Sgtb 		krb5_creds *,
2114505d05c7Sgtb 		krb5_kdc_rep ** );
2115505d05c7Sgtb #endif /* KRB5_DEPRECATED */
21167c478bd9Sstevel@tonic-gate 
2117505d05c7Sgtb #if KRB5_PRIVATE
21187c478bd9Sstevel@tonic-gate krb5_error_code krb5_decode_kdc_rep
2119505d05c7Sgtb 	(krb5_context,
2120505d05c7Sgtb 		krb5_data *,
2121505d05c7Sgtb 		const krb5_keyblock *,
2122505d05c7Sgtb 		krb5_kdc_rep ** );
2123505d05c7Sgtb #endif
21247c478bd9Sstevel@tonic-gate 
21257c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_req
2126505d05c7Sgtb 	(krb5_context,
21277c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
2128505d05c7Sgtb 		const krb5_data *,
21297c478bd9Sstevel@tonic-gate 		krb5_const_principal,
21307c478bd9Sstevel@tonic-gate 		krb5_keytab,
21317c478bd9Sstevel@tonic-gate 		krb5_flags *,
2132505d05c7Sgtb 		krb5_ticket **);
21337c478bd9Sstevel@tonic-gate 
2134505d05c7Sgtb #if KRB5_PRIVATE
21357c478bd9Sstevel@tonic-gate krb5_error_code krb5_rd_req_decoded
2136505d05c7Sgtb 	(krb5_context,
2137505d05c7Sgtb 		krb5_auth_context *,
2138505d05c7Sgtb 		const krb5_ap_req *,
2139505d05c7Sgtb 		krb5_const_principal,
2140505d05c7Sgtb 		krb5_keytab,
2141505d05c7Sgtb 		krb5_flags *,
2142505d05c7Sgtb 		krb5_ticket **);
21437c478bd9Sstevel@tonic-gate 
21447c478bd9Sstevel@tonic-gate krb5_error_code krb5_rd_req_decoded_anyflag
2145505d05c7Sgtb 	(krb5_context,
2146505d05c7Sgtb 		krb5_auth_context *,
2147505d05c7Sgtb 		const krb5_ap_req *,
2148505d05c7Sgtb 		krb5_const_principal,
2149505d05c7Sgtb 		krb5_keytab,
2150505d05c7Sgtb 		krb5_flags *,
2151505d05c7Sgtb 		krb5_ticket **);
2152505d05c7Sgtb #endif
21537c478bd9Sstevel@tonic-gate 
21547c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_read_service_key
2155505d05c7Sgtb 	(krb5_context,
21567c478bd9Sstevel@tonic-gate 		krb5_pointer,
21577c478bd9Sstevel@tonic-gate 		krb5_principal,
21587c478bd9Sstevel@tonic-gate 		krb5_kvno,
21597c478bd9Sstevel@tonic-gate 		krb5_enctype,
2160505d05c7Sgtb 		krb5_keyblock **);
21617c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_safe
2162505d05c7Sgtb 	(krb5_context,
21637c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2164505d05c7Sgtb 		const krb5_data *,
21657c478bd9Sstevel@tonic-gate 		krb5_data *,
2166505d05c7Sgtb 		krb5_replay_data *);
21677c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_priv
2168505d05c7Sgtb 	(krb5_context,
21697c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2170505d05c7Sgtb 		const krb5_data *,
21717c478bd9Sstevel@tonic-gate 		krb5_data *,
2172505d05c7Sgtb 		krb5_replay_data *);
2173505d05c7Sgtb #if KRB5_PRIVATE
21747c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_register
2175505d05c7Sgtb 	(krb5_context,
21767c478bd9Sstevel@tonic-gate 		krb5_cc_ops *,
2177505d05c7Sgtb 		krb5_boolean );
2178505d05c7Sgtb #endif
21797c478bd9Sstevel@tonic-gate 
2180505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_sendauth
2181505d05c7Sgtb 	(krb5_context,
21827c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
21837c478bd9Sstevel@tonic-gate 		krb5_pointer,
21847c478bd9Sstevel@tonic-gate 		char *,
21857c478bd9Sstevel@tonic-gate 		krb5_principal,
21867c478bd9Sstevel@tonic-gate 		krb5_principal,
21877c478bd9Sstevel@tonic-gate 		krb5_flags,
21887c478bd9Sstevel@tonic-gate 		krb5_data *,
21897c478bd9Sstevel@tonic-gate 		krb5_creds *,
21907c478bd9Sstevel@tonic-gate 		krb5_ccache,
2191505d05c7Sgtb 		krb5_error **,
2192505d05c7Sgtb 		krb5_ap_rep_enc_part **,
2193505d05c7Sgtb 		krb5_creds **);
2194505d05c7Sgtb 
21957c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_recvauth
2196505d05c7Sgtb 	(krb5_context,
21977c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
21987c478bd9Sstevel@tonic-gate 		krb5_pointer,
21997c478bd9Sstevel@tonic-gate 		char *,
22007c478bd9Sstevel@tonic-gate 		krb5_principal,
2201505d05c7Sgtb 		krb5_int32,
22027c478bd9Sstevel@tonic-gate 		krb5_keytab,
2203505d05c7Sgtb 		krb5_ticket **);
22047c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_recvauth_version
2205505d05c7Sgtb 	(krb5_context,
22067c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
22077c478bd9Sstevel@tonic-gate 		krb5_pointer,
22087c478bd9Sstevel@tonic-gate 		krb5_principal,
2209505d05c7Sgtb 		krb5_int32,
22107c478bd9Sstevel@tonic-gate 		krb5_keytab,
2211505d05c7Sgtb 		krb5_ticket **,
2212505d05c7Sgtb 		krb5_data *);
22137c478bd9Sstevel@tonic-gate 
2214505d05c7Sgtb #if KRB5_PRIVATE
22157c478bd9Sstevel@tonic-gate krb5_error_code krb5_walk_realm_tree
2216505d05c7Sgtb 	(krb5_context,
2217505d05c7Sgtb 		const krb5_data *,
2218505d05c7Sgtb 		const krb5_data *,
22197c478bd9Sstevel@tonic-gate 		krb5_principal **,
2220505d05c7Sgtb 		int);
2221505d05c7Sgtb #endif
22227c478bd9Sstevel@tonic-gate 
22237c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_ncred
2224505d05c7Sgtb 	(krb5_context,
22257c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2226505d05c7Sgtb 		krb5_creds **,
2227505d05c7Sgtb 		krb5_data **,
2228505d05c7Sgtb 		krb5_replay_data *);
22297c478bd9Sstevel@tonic-gate 
22307c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_1cred
2231505d05c7Sgtb 	(krb5_context,
22327c478bd9Sstevel@tonic-gate 		krb5_auth_context,
22337c478bd9Sstevel@tonic-gate 		krb5_creds *,
2234505d05c7Sgtb 		krb5_data **,
2235505d05c7Sgtb 		krb5_replay_data *);
22367c478bd9Sstevel@tonic-gate 
22377c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_cred
2238505d05c7Sgtb 	(krb5_context,
22397c478bd9Sstevel@tonic-gate 		krb5_auth_context,
22407c478bd9Sstevel@tonic-gate 		krb5_data *,
2241505d05c7Sgtb 		krb5_creds ***,
2242505d05c7Sgtb 		krb5_replay_data *);
22437c478bd9Sstevel@tonic-gate 
22447c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds
2245505d05c7Sgtb 	(krb5_context,
22467c478bd9Sstevel@tonic-gate 		krb5_auth_context,
22477c478bd9Sstevel@tonic-gate 		char *,
2248505d05c7Sgtb 		krb5_principal,
2249505d05c7Sgtb 		krb5_principal,
22507c478bd9Sstevel@tonic-gate 		krb5_ccache,
22517c478bd9Sstevel@tonic-gate 		int forwardable,
2252505d05c7Sgtb 		krb5_data *);
22537c478bd9Sstevel@tonic-gate 
22547c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_init
2255505d05c7Sgtb 	(krb5_context,
2256505d05c7Sgtb 		krb5_auth_context *);
22577c478bd9Sstevel@tonic-gate 
22587c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_free
2259505d05c7Sgtb 	(krb5_context,
2260505d05c7Sgtb 		krb5_auth_context);
22617c478bd9Sstevel@tonic-gate 
22627c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags
2263505d05c7Sgtb 	(krb5_context,
22647c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2265505d05c7Sgtb 		krb5_int32);
22667c478bd9Sstevel@tonic-gate 
22677c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags
2268505d05c7Sgtb 	(krb5_context,
22697c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2270505d05c7Sgtb 		krb5_int32 *);
22717c478bd9Sstevel@tonic-gate 
22727c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
22737c478bd9Sstevel@tonic-gate krb5_auth_con_set_checksum_func (krb5_context, krb5_auth_context,
2274505d05c7Sgtb 				 krb5_mk_req_checksum_func, void *);
22757c478bd9Sstevel@tonic-gate 
22767c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
22777c478bd9Sstevel@tonic-gate krb5_auth_con_get_checksum_func( krb5_context, krb5_auth_context,
2278505d05c7Sgtb 				 krb5_mk_req_checksum_func *, void **);
2279505d05c7Sgtb 
2280505d05c7Sgtb krb5_error_code KRB5_CALLCONV_WRONG krb5_auth_con_setaddrs
2281505d05c7Sgtb 	(krb5_context,
2282505d05c7Sgtb 		krb5_auth_context,
2283505d05c7Sgtb 		krb5_address *,
2284505d05c7Sgtb 		krb5_address *);
2285505d05c7Sgtb 
2286505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getaddrs
2287505d05c7Sgtb 	(krb5_context,
2288505d05c7Sgtb 		krb5_auth_context,
2289505d05c7Sgtb 		krb5_address **,
2290505d05c7Sgtb 		krb5_address **);
2291505d05c7Sgtb 
2292505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_setports
2293505d05c7Sgtb 	(krb5_context,
2294505d05c7Sgtb 		krb5_auth_context,
2295505d05c7Sgtb 		krb5_address *,
2296505d05c7Sgtb 		krb5_address *);
22977c478bd9Sstevel@tonic-gate 
22987c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setuseruserkey
2299505d05c7Sgtb 	(krb5_context,
23007c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2301505d05c7Sgtb 		krb5_keyblock *);
23027c478bd9Sstevel@tonic-gate 
23037c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey
2304505d05c7Sgtb 	(krb5_context,
23057c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2306505d05c7Sgtb 		krb5_keyblock **);
23077c478bd9Sstevel@tonic-gate 
23087c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getsendsubkey(
23097c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock **);
23107c478bd9Sstevel@tonic-gate 
23117c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getrecvsubkey(
23127c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock **);
23137c478bd9Sstevel@tonic-gate 
23147c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setsendsubkey(
23157c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock *);
23167c478bd9Sstevel@tonic-gate 
23177c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setrecvsubkey(
23187c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock *);
23197c478bd9Sstevel@tonic-gate 
2320505d05c7Sgtb #if KRB5_DEPRECATED
23217c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey
2322505d05c7Sgtb 	(krb5_context,
23237c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2324505d05c7Sgtb 		krb5_keyblock **);
23257c478bd9Sstevel@tonic-gate 
2326505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey
2327505d05c7Sgtb 	(krb5_context,
2328505d05c7Sgtb 		krb5_auth_context,
2329505d05c7Sgtb 		krb5_keyblock **);
2330505d05c7Sgtb #endif
2331505d05c7Sgtb 
2332505d05c7Sgtb #if KRB5_PRIVATE
23337c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_set_req_cksumtype
2334505d05c7Sgtb 	(krb5_context,
23357c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2336505d05c7Sgtb 		krb5_cksumtype);
23377c478bd9Sstevel@tonic-gate 
23387c478bd9Sstevel@tonic-gate krb5_error_code krb5_auth_con_set_safe_cksumtype
2339505d05c7Sgtb 	(krb5_context,
2340505d05c7Sgtb 		krb5_auth_context,
2341505d05c7Sgtb 		krb5_cksumtype);
2342505d05c7Sgtb #endif
23437c478bd9Sstevel@tonic-gate 
23447c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalseqnumber
2345505d05c7Sgtb 	(krb5_context,
23467c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2347505d05c7Sgtb 		krb5_int32 *);
23487c478bd9Sstevel@tonic-gate 
23497c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getremoteseqnumber
2350505d05c7Sgtb 	(krb5_context,
23517c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2352505d05c7Sgtb 		krb5_int32 *);
23537c478bd9Sstevel@tonic-gate 
2354505d05c7Sgtb #if KRB5_DEPRECATED
2355505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_initivector
2356505d05c7Sgtb 	(krb5_context,
2357505d05c7Sgtb 		krb5_auth_context);
2358505d05c7Sgtb #endif
23597c478bd9Sstevel@tonic-gate 
2360505d05c7Sgtb #if KRB5_PRIVATE
23617c478bd9Sstevel@tonic-gate krb5_error_code krb5_auth_con_setivector
2362505d05c7Sgtb 	(krb5_context,
2363505d05c7Sgtb 		krb5_auth_context,
2364505d05c7Sgtb 		krb5_pointer);
23657c478bd9Sstevel@tonic-gate 
23667c478bd9Sstevel@tonic-gate krb5_error_code krb5_auth_con_getivector
2367505d05c7Sgtb 	(krb5_context,
2368505d05c7Sgtb 		krb5_auth_context,
2369505d05c7Sgtb 		krb5_pointer *);
2370505d05c7Sgtb #endif
23717c478bd9Sstevel@tonic-gate 
23727c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache
2373505d05c7Sgtb 	(krb5_context,
23747c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2375505d05c7Sgtb 		krb5_rcache);
23767c478bd9Sstevel@tonic-gate 
2377505d05c7Sgtb krb5_error_code KRB5_CALLCONV_WRONG krb5_auth_con_getrcache
2378505d05c7Sgtb 	(krb5_context,
23797c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2380505d05c7Sgtb 		krb5_rcache *);
23817c478bd9Sstevel@tonic-gate 
2382505d05c7Sgtb #if KRB5_PRIVATE
2383505d05c7Sgtb krb5_error_code krb5_auth_con_setpermetypes
2384505d05c7Sgtb 	(krb5_context,
2385505d05c7Sgtb 	    krb5_auth_context,
2386505d05c7Sgtb 	    const krb5_enctype *);
2387505d05c7Sgtb 
2388505d05c7Sgtb krb5_error_code krb5_auth_con_getpermetypes
2389505d05c7Sgtb 	(krb5_context,
2390505d05c7Sgtb 	    krb5_auth_context,
2391505d05c7Sgtb 	    krb5_enctype **);
2392505d05c7Sgtb #endif
2393505d05c7Sgtb 
2394505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator
2395505d05c7Sgtb 	(krb5_context,
23967c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2397505d05c7Sgtb 		krb5_authenticator **);
23987c478bd9Sstevel@tonic-gate 
23997c478bd9Sstevel@tonic-gate #define KRB5_REALM_BRANCH_CHAR '.'
24007c478bd9Sstevel@tonic-gate 
24017c478bd9Sstevel@tonic-gate /*
24027c478bd9Sstevel@tonic-gate  * end "func-proto.h"
24037c478bd9Sstevel@tonic-gate  */
24047c478bd9Sstevel@tonic-gate 
24057c478bd9Sstevel@tonic-gate /*
24067c478bd9Sstevel@tonic-gate  * begin stuff from libos.h
24077c478bd9Sstevel@tonic-gate  */
24087c478bd9Sstevel@tonic-gate 
2409505d05c7Sgtb #if KRB5_PRIVATE
2410505d05c7Sgtb krb5_error_code krb5_read_message (krb5_context, krb5_pointer, krb5_data *);
2411505d05c7Sgtb krb5_error_code krb5_write_message (krb5_context, krb5_pointer, krb5_data *);
2412505d05c7Sgtb int krb5_net_read (krb5_context, int , char *, int);
2413505d05c7Sgtb int krb5_net_write (krb5_context, int , const char *, int);
2414505d05c7Sgtb #endif
2415505d05c7Sgtb 
24167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_read_password
2417505d05c7Sgtb 	(krb5_context,
24187c478bd9Sstevel@tonic-gate 		const char *,
24197c478bd9Sstevel@tonic-gate 		const char *,
24207c478bd9Sstevel@tonic-gate 		char *,
2421505d05c7Sgtb 		unsigned int * );
2422505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_aname_to_localname
2423505d05c7Sgtb 	(krb5_context,
24247c478bd9Sstevel@tonic-gate 		krb5_const_principal,
2425505d05c7Sgtb 		int,
2426505d05c7Sgtb 		char * );
24277c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_host_realm
2428505d05c7Sgtb 	(krb5_context,
24297c478bd9Sstevel@tonic-gate 		const char *,
2430505d05c7Sgtb 		char *** );
2431fe598cdcSmp krb5_error_code KRB5_CALLCONV krb5_get_fallback_host_realm
2432fe598cdcSmp 	(krb5_context,
2433fe598cdcSmp 		krb5_data *,
2434fe598cdcSmp 		char *** );
24357c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_free_host_realm
2436505d05c7Sgtb 	(krb5_context,
2437505d05c7Sgtb 		char * const * );
2438505d05c7Sgtb #if KRB5_PRIVATE
24397c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_realm_domain
2440505d05c7Sgtb 	(krb5_context,
24417c478bd9Sstevel@tonic-gate 		const char *,
2442505d05c7Sgtb 		char ** );
2443505d05c7Sgtb #endif
2444505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_kuserok
2445505d05c7Sgtb 	(krb5_context,
2446505d05c7Sgtb 		krb5_principal, const char *);
24477c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs
2448505d05c7Sgtb 	(krb5_context,
24497c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2450505d05c7Sgtb 		int, int);
2451505d05c7Sgtb #if KRB5_PRIVATE
24527c478bd9Sstevel@tonic-gate krb5_error_code krb5_gen_portaddr
2453505d05c7Sgtb 	(krb5_context,
24547c478bd9Sstevel@tonic-gate 		const krb5_address *,
24557c478bd9Sstevel@tonic-gate 		krb5_const_pointer,
2456505d05c7Sgtb 		krb5_address **);
2457505d05c7Sgtb krb5_error_code krb5_gen_replay_name
2458505d05c7Sgtb 	(krb5_context,
2459505d05c7Sgtb 		const krb5_address *,
2460505d05c7Sgtb 		const char *,
2461505d05c7Sgtb 		char **);
24627c478bd9Sstevel@tonic-gate krb5_error_code krb5_make_fulladdr
2463505d05c7Sgtb 	(krb5_context,
24647c478bd9Sstevel@tonic-gate 		krb5_address *,
24657c478bd9Sstevel@tonic-gate 		krb5_address *,
2466505d05c7Sgtb 		krb5_address *);
2467505d05c7Sgtb #endif
24687c478bd9Sstevel@tonic-gate 
2469505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_set_real_time
2470505d05c7Sgtb 	(krb5_context, krb5_int32, krb5_int32);
24717c478bd9Sstevel@tonic-gate 
2472505d05c7Sgtb #if KRB5_PRIVATE
24737c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_debugging_time
2474505d05c7Sgtb 	(krb5_context, krb5_int32, krb5_int32);
24757c478bd9Sstevel@tonic-gate krb5_error_code krb5_use_natural_time
2476505d05c7Sgtb 	(krb5_context);
2477505d05c7Sgtb #endif
2478505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_time_offsets
2479505d05c7Sgtb 	(krb5_context, krb5_int32 *, krb5_int32 *);
2480505d05c7Sgtb #if KRB5_PRIVATE
24817c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_time_offsets
2482505d05c7Sgtb 	(krb5_context, krb5_int32, krb5_int32);
2483505d05c7Sgtb #endif
24847c478bd9Sstevel@tonic-gate 
24857c478bd9Sstevel@tonic-gate /* str_conv.c */
24867c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_enctype
2487505d05c7Sgtb 	(char *, krb5_enctype *);
24887c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_salttype
2489505d05c7Sgtb 	(char *, krb5_int32 *);
24907c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_cksumtype
2491505d05c7Sgtb 	(char *, krb5_cksumtype *);
24927c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_timestamp
2493505d05c7Sgtb 	(char *, krb5_timestamp *);
24947c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_deltat
2495505d05c7Sgtb 	(char *, krb5_deltat *);
24967c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_enctype_to_string
2497505d05c7Sgtb 	(krb5_enctype, char *, size_t);
24987c64d375Smp /* Solaris Kerberos */
24997c64d375Smp krb5_error_code KRB5_CALLCONV krb5_enctype_to_istring
25007c64d375Smp 	(krb5_enctype, char *, size_t);
25017c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_salttype_to_string
2502505d05c7Sgtb 	(krb5_int32, char *, size_t);
25037c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cksumtype_to_string
2504505d05c7Sgtb 	(krb5_cksumtype, char *, size_t);
25057c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_timestamp_to_string
2506505d05c7Sgtb 	(krb5_timestamp, char *, size_t);
25077c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_timestamp_to_sfstring
2508505d05c7Sgtb 	(krb5_timestamp, char *, size_t, char *);
25097c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_deltat_to_string
2510505d05c7Sgtb 	(krb5_deltat, char *, size_t);
2511505d05c7Sgtb 
25127c478bd9Sstevel@tonic-gate 
25137c478bd9Sstevel@tonic-gate /*
25147c478bd9Sstevel@tonic-gate  * end stuff from libos.h
25157c478bd9Sstevel@tonic-gate  */
25167c478bd9Sstevel@tonic-gate 
25177c478bd9Sstevel@tonic-gate /*
25187c478bd9Sstevel@tonic-gate  * begin "k5-free.h"
25197c478bd9Sstevel@tonic-gate  */
25207c478bd9Sstevel@tonic-gate 
25217c478bd9Sstevel@tonic-gate /* to keep lint happy */
25227c478bd9Sstevel@tonic-gate #ifdef _KERNEL
25237c478bd9Sstevel@tonic-gate #define krb5_xfree_wrap(val,n) kmem_free((char *)(val),n)
25247c478bd9Sstevel@tonic-gate #else
25257c478bd9Sstevel@tonic-gate #define krb5_xfree_wrap(val,n) free((char *)(val))
25267c478bd9Sstevel@tonic-gate #define krb5_xfree(val) free((char *)(val))
25277c478bd9Sstevel@tonic-gate #endif
25287c478bd9Sstevel@tonic-gate 
25297c478bd9Sstevel@tonic-gate /*
25307c478bd9Sstevel@tonic-gate  * end "k5-free.h"
25317c478bd9Sstevel@tonic-gate  */
25327c478bd9Sstevel@tonic-gate 
25337c478bd9Sstevel@tonic-gate /* The name of the Kerberos ticket granting service... and its size */
25347c478bd9Sstevel@tonic-gate #define	KRB5_TGS_NAME		"krbtgt"
25357c478bd9Sstevel@tonic-gate #define KRB5_TGS_NAME_SIZE	6
25367c478bd9Sstevel@tonic-gate 
25377c478bd9Sstevel@tonic-gate /* flags for recvauth */
25387c478bd9Sstevel@tonic-gate #define KRB5_RECVAUTH_SKIP_VERSION	0x0001
25397c478bd9Sstevel@tonic-gate #define KRB5_RECVAUTH_BADAUTHVERS	0x0002
25407c478bd9Sstevel@tonic-gate /* initial ticket api functions */
25417c478bd9Sstevel@tonic-gate 
25427c478bd9Sstevel@tonic-gate typedef struct _krb5_prompt {
25437c478bd9Sstevel@tonic-gate     char *prompt;
25447c478bd9Sstevel@tonic-gate     int hidden;
25457c478bd9Sstevel@tonic-gate     krb5_data *reply;
25467c478bd9Sstevel@tonic-gate } krb5_prompt;
25477c478bd9Sstevel@tonic-gate 
25487c478bd9Sstevel@tonic-gate typedef krb5_error_code (KRB5_CALLCONV *krb5_prompter_fct)(krb5_context context,
25497c478bd9Sstevel@tonic-gate 					     void *data,
25507c478bd9Sstevel@tonic-gate 					     const char *name,
25517c478bd9Sstevel@tonic-gate 					     const char *banner,
25527c478bd9Sstevel@tonic-gate 					     int num_prompts,
25537c478bd9Sstevel@tonic-gate 					     krb5_prompt prompts[]);
25547c478bd9Sstevel@tonic-gate 
25557c478bd9Sstevel@tonic-gate 
25567c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
2557159d09a2SMark Phalan krb5_prompter_posix (krb5_context context,
25587c478bd9Sstevel@tonic-gate 		void *data,
25597c478bd9Sstevel@tonic-gate 		const char *name,
25607c478bd9Sstevel@tonic-gate 		const char *banner,
25617c478bd9Sstevel@tonic-gate 		int num_prompts,
2562505d05c7Sgtb 		krb5_prompt prompts[]);
25637c478bd9Sstevel@tonic-gate 
25647c478bd9Sstevel@tonic-gate typedef struct _krb5_get_init_creds_opt {
25657c478bd9Sstevel@tonic-gate     krb5_flags flags;
25667c478bd9Sstevel@tonic-gate     krb5_deltat tkt_life;
25677c478bd9Sstevel@tonic-gate     krb5_deltat renew_life;
25687c478bd9Sstevel@tonic-gate     int forwardable;
25697c478bd9Sstevel@tonic-gate     int proxiable;
25707c478bd9Sstevel@tonic-gate     krb5_enctype *etype_list;
25717c478bd9Sstevel@tonic-gate     int etype_list_length;
25727c478bd9Sstevel@tonic-gate     krb5_address **address_list;
25737c478bd9Sstevel@tonic-gate     krb5_preauthtype *preauth_list;
25747c478bd9Sstevel@tonic-gate     int preauth_list_length;
25757c478bd9Sstevel@tonic-gate     krb5_data *salt;
25767c478bd9Sstevel@tonic-gate } krb5_get_init_creds_opt;
25777c478bd9Sstevel@tonic-gate 
25787c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_TKT_LIFE	0x0001
25797c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE	0x0002
25807c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_FORWARDABLE	0x0004
25817c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_PROXIABLE	0x0008
25827c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST	0x0010
25837c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST	0x0020
25847c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST	0x0040
25857c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_SALT		0x0080
2586159d09a2SMark Phalan #define KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT	0x0100
2587159d09a2SMark Phalan 
2588159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
2589159d09a2SMark Phalan krb5_get_init_creds_opt_alloc
2590159d09a2SMark Phalan (krb5_context context,
2591159d09a2SMark Phalan 		krb5_get_init_creds_opt **opt);
2592159d09a2SMark Phalan 
2593159d09a2SMark Phalan void KRB5_CALLCONV
2594159d09a2SMark Phalan krb5_get_init_creds_opt_free
2595159d09a2SMark Phalan (krb5_context context,
2596159d09a2SMark Phalan 		krb5_get_init_creds_opt *opt);
25977c478bd9Sstevel@tonic-gate 
25987c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
25997c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_init
2600505d05c7Sgtb (krb5_get_init_creds_opt *opt);
26017c478bd9Sstevel@tonic-gate 
26027c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26037c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_tkt_life
2604505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2605505d05c7Sgtb 		krb5_deltat tkt_life);
26067c478bd9Sstevel@tonic-gate 
26077c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26087c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_renew_life
2609505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2610505d05c7Sgtb 		krb5_deltat renew_life);
26117c478bd9Sstevel@tonic-gate 
26127c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26137c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_forwardable
2614505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2615505d05c7Sgtb 		int forwardable);
26167c478bd9Sstevel@tonic-gate 
26177c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26187c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_proxiable
2619505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2620505d05c7Sgtb 		int proxiable);
26217c478bd9Sstevel@tonic-gate 
26227c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26237c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_etype_list
2624505d05c7Sgtb (krb5_get_init_creds_opt *opt,
26257c478bd9Sstevel@tonic-gate 		krb5_enctype *etype_list,
2626505d05c7Sgtb 		int etype_list_length);
26277c478bd9Sstevel@tonic-gate 
26287c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26297c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_address_list
2630505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2631505d05c7Sgtb 		krb5_address **addresses);
26327c478bd9Sstevel@tonic-gate 
26337c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26347c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_preauth_list
2635505d05c7Sgtb (krb5_get_init_creds_opt *opt,
26367c478bd9Sstevel@tonic-gate 		krb5_preauthtype *preauth_list,
2637505d05c7Sgtb 		int preauth_list_length);
26387c478bd9Sstevel@tonic-gate 
26397c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26407c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_salt
2641505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2642505d05c7Sgtb 		krb5_data *salt);
2643505d05c7Sgtb 
2644159d09a2SMark Phalan void KRB5_CALLCONV
2645159d09a2SMark Phalan krb5_get_init_creds_opt_set_change_password_prompt
2646159d09a2SMark Phalan (krb5_get_init_creds_opt *opt,
2647159d09a2SMark Phalan 		int prompt);
2648505d05c7Sgtb 
2649159d09a2SMark Phalan /* Generic preauth option attribute/value pairs */
2650159d09a2SMark Phalan typedef struct _krb5_gic_opt_pa_data {
2651159d09a2SMark Phalan     char *attr;
2652159d09a2SMark Phalan     char *value;
2653159d09a2SMark Phalan } krb5_gic_opt_pa_data;
2654159d09a2SMark Phalan 
2655159d09a2SMark Phalan /*
2656159d09a2SMark Phalan  * This function allows the caller to supply options to preauth
2657159d09a2SMark Phalan  * plugins.  Preauth plugin modules are given a chance to look
2658159d09a2SMark Phalan  * at each option at the time this function is called in ordre
2659159d09a2SMark Phalan  * to check the validity of the option.
2660159d09a2SMark Phalan  * The 'opt' pointer supplied to this function must have been
2661159d09a2SMark Phalan  * obtained using krb5_get_init_creds_opt_alloc()
2662159d09a2SMark Phalan  */
2663159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
2664159d09a2SMark Phalan krb5_get_init_creds_opt_set_pa
2665159d09a2SMark Phalan 		(krb5_context context,
2666159d09a2SMark Phalan 		krb5_get_init_creds_opt *opt,
2667159d09a2SMark Phalan 		const char *attr,
2668159d09a2SMark Phalan 		const char *value);
26697c478bd9Sstevel@tonic-gate 
26707c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
26717c478bd9Sstevel@tonic-gate krb5_get_init_creds_password
2672505d05c7Sgtb (krb5_context context,
26737c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
26747c478bd9Sstevel@tonic-gate 		krb5_principal client,
26757c478bd9Sstevel@tonic-gate 		char *password,
26767c478bd9Sstevel@tonic-gate 		krb5_prompter_fct prompter,
26777c478bd9Sstevel@tonic-gate 		void *data,
26787c478bd9Sstevel@tonic-gate 		krb5_deltat start_time,
26797c478bd9Sstevel@tonic-gate 		char *in_tkt_service,
2680505d05c7Sgtb 		krb5_get_init_creds_opt *k5_gic_options);
26817c478bd9Sstevel@tonic-gate 
26827c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
26837c478bd9Sstevel@tonic-gate krb5_get_init_creds_keytab
2684505d05c7Sgtb (krb5_context context,
26857c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
26867c478bd9Sstevel@tonic-gate 		krb5_principal client,
26877c478bd9Sstevel@tonic-gate 		krb5_keytab arg_keytab,
26887c478bd9Sstevel@tonic-gate 		krb5_deltat start_time,
26897c478bd9Sstevel@tonic-gate 		char *in_tkt_service,
2690505d05c7Sgtb 		krb5_get_init_creds_opt *k5_gic_options);
26917c478bd9Sstevel@tonic-gate 
26927c478bd9Sstevel@tonic-gate typedef struct _krb5_verify_init_creds_opt {
26937c478bd9Sstevel@tonic-gate     krb5_flags flags;
26947c478bd9Sstevel@tonic-gate     int ap_req_nofail;
26957c478bd9Sstevel@tonic-gate } krb5_verify_init_creds_opt;
26967c478bd9Sstevel@tonic-gate 
2697505d05c7Sgtb #define KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL	0x0001
26987c478bd9Sstevel@tonic-gate 
26997c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27007c478bd9Sstevel@tonic-gate krb5_verify_init_creds_opt_init
2701505d05c7Sgtb (krb5_verify_init_creds_opt *k5_vic_options);
27027c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27037c478bd9Sstevel@tonic-gate krb5_verify_init_creds_opt_set_ap_req_nofail
2704505d05c7Sgtb (krb5_verify_init_creds_opt *k5_vic_options,
2705505d05c7Sgtb 		int ap_req_nofail);
27067c478bd9Sstevel@tonic-gate 
27077c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27087c478bd9Sstevel@tonic-gate krb5_verify_init_creds
2709505d05c7Sgtb (krb5_context context,
27107c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27117c478bd9Sstevel@tonic-gate 		krb5_principal ap_req_server,
27127c478bd9Sstevel@tonic-gate 		krb5_keytab ap_req_keytab,
27137c478bd9Sstevel@tonic-gate 		krb5_ccache *ccache,
2714505d05c7Sgtb 		krb5_verify_init_creds_opt *k5_vic_options);
27157c478bd9Sstevel@tonic-gate 
27167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27177c478bd9Sstevel@tonic-gate krb5_get_validated_creds
2718505d05c7Sgtb (krb5_context context,
27197c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27207c478bd9Sstevel@tonic-gate 		krb5_principal client,
27217c478bd9Sstevel@tonic-gate 		krb5_ccache ccache,
2722505d05c7Sgtb 		char *in_tkt_service);
27237c478bd9Sstevel@tonic-gate 
27247c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27257c478bd9Sstevel@tonic-gate krb5_get_renewed_creds
2726505d05c7Sgtb (krb5_context context,
27277c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27287c478bd9Sstevel@tonic-gate 		krb5_principal client,
27297c478bd9Sstevel@tonic-gate 		krb5_ccache ccache,
2730505d05c7Sgtb 		char *in_tkt_service);
27317c478bd9Sstevel@tonic-gate 
27327c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27337c478bd9Sstevel@tonic-gate krb5_decode_ticket
2734505d05c7Sgtb (const krb5_data *code,
2735505d05c7Sgtb 		krb5_ticket **rep);
27367c478bd9Sstevel@tonic-gate 
27377c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27387c478bd9Sstevel@tonic-gate krb5_appdefault_string
2739505d05c7Sgtb (krb5_context context,
2740505d05c7Sgtb 		const char *appname,
2741505d05c7Sgtb 	        const krb5_data *realm,
2742505d05c7Sgtb  		const char *option,
27437c478bd9Sstevel@tonic-gate 		const char *default_value,
2744505d05c7Sgtb 		char ** ret_value);
27457c478bd9Sstevel@tonic-gate 
27467c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27477c478bd9Sstevel@tonic-gate krb5_appdefault_boolean
2748505d05c7Sgtb (krb5_context context,
2749505d05c7Sgtb 		const char *appname,
2750505d05c7Sgtb 	        const krb5_data *realm,
2751505d05c7Sgtb  		const char *option,
27527c478bd9Sstevel@tonic-gate 		int default_value,
2753505d05c7Sgtb 		int *ret_value);
27547c478bd9Sstevel@tonic-gate 
2755505d05c7Sgtb #if KRB5_PRIVATE
27567c478bd9Sstevel@tonic-gate /*
27577c478bd9Sstevel@tonic-gate  * The realm iterator functions
27587c478bd9Sstevel@tonic-gate  */
27597c478bd9Sstevel@tonic-gate 
27607c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_realm_iterator_create
2761505d05c7Sgtb 	(krb5_context context, void **iter_p);
27627c478bd9Sstevel@tonic-gate 
27637c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_realm_iterator
2764505d05c7Sgtb 	(krb5_context context, void **iter_p, char **ret_realm);
27657c478bd9Sstevel@tonic-gate 
27667c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_realm_iterator_free
2767505d05c7Sgtb 	(krb5_context context, void **iter_p);
27687c478bd9Sstevel@tonic-gate 
27697c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_realm_string
2770505d05c7Sgtb 	(krb5_context context, char *str);
2771505d05c7Sgtb #endif
2772505d05c7Sgtb 
2773505d05c7Sgtb /*
2774505d05c7Sgtb  * The realm iterator functions
2775505d05c7Sgtb  */
2776505d05c7Sgtb 
2777505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_realm_iterator_create
2778505d05c7Sgtb 	(krb5_context context, void **iter_p);
2779505d05c7Sgtb 
2780505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_realm_iterator
2781505d05c7Sgtb 	(krb5_context context, void **iter_p, char **ret_realm);
2782505d05c7Sgtb 
2783505d05c7Sgtb void KRB5_CALLCONV krb5_realm_iterator_free
2784505d05c7Sgtb 	(krb5_context context, void **iter_p);
2785505d05c7Sgtb 
2786505d05c7Sgtb void KRB5_CALLCONV krb5_free_realm_string
2787505d05c7Sgtb 	(krb5_context context, char *str);
27887c478bd9Sstevel@tonic-gate 
27897c478bd9Sstevel@tonic-gate /*
27907c478bd9Sstevel@tonic-gate  * Prompter enhancements
27917c478bd9Sstevel@tonic-gate  */
27927c478bd9Sstevel@tonic-gate 
2793159d09a2SMark Phalan #define KRB5_PROMPT_TYPE_PASSWORD            0x1
2794159d09a2SMark Phalan #define KRB5_PROMPT_TYPE_NEW_PASSWORD        0x2
2795159d09a2SMark Phalan #define KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN  0x3
2796159d09a2SMark Phalan #define KRB5_PROMPT_TYPE_PREAUTH             0x4
27977c478bd9Sstevel@tonic-gate 
27987c478bd9Sstevel@tonic-gate typedef krb5_int32 krb5_prompt_type;
27997c478bd9Sstevel@tonic-gate 
28007c478bd9Sstevel@tonic-gate krb5_prompt_type* KRB5_CALLCONV krb5_get_prompt_types
28017c478bd9Sstevel@tonic-gate 	(krb5_context context);
28027c478bd9Sstevel@tonic-gate 
280354925bf6Swillf /* Error reporting */
280454925bf6Swillf void KRB5_CALLCONV_C
280554925bf6Swillf krb5_set_error_message (krb5_context, krb5_error_code, const char *, ...);
280654925bf6Swillf #ifdef va_start
280754925bf6Swillf void KRB5_CALLCONV
280854925bf6Swillf krb5_vset_error_message (krb5_context, krb5_error_code, const char *, va_list);
280954925bf6Swillf #endif
281054925bf6Swillf /*
281154925bf6Swillf  * The behavior of krb5_get_error_message is only defined the first
281254925bf6Swillf  * time it is called after a failed call to a krb5 function using the
281354925bf6Swillf  * same context, and only when the error code passed in is the same as
281454925bf6Swillf  * that returned by the krb5 function.  Future versions may return the
281554925bf6Swillf  * same string for the second and following calls.
281654925bf6Swillf  *
281754925bf6Swillf  * The string returned by this function must be freed using
281854925bf6Swillf  * krb5_free_error_message.
281954925bf6Swillf  */
282054925bf6Swillf const char * KRB5_CALLCONV
282154925bf6Swillf krb5_get_error_message (krb5_context, krb5_error_code);
282254925bf6Swillf void KRB5_CALLCONV
282354925bf6Swillf krb5_free_error_message (krb5_context, const char *);
282454925bf6Swillf void KRB5_CALLCONV
282554925bf6Swillf krb5_clear_error_message (krb5_context);
282654925bf6Swillf 
2827159d09a2SMark Phalan 
2828159d09a2SMark Phalan #if TARGET_OS_MAC
2829159d09a2SMark Phalan #    pragma pack(pop)
2830159d09a2SMark Phalan #endif
2831159d09a2SMark Phalan 
2832159d09a2SMark Phalan KRB5INT_END_DECLS
2833505d05c7Sgtb 
2834505d05c7Sgtb /* Don't use this!  We're going to phase it out.  It's just here to keep
2835505d05c7Sgtb    applications from breaking right away.  */
2836505d05c7Sgtb #define krb5_const const
2837505d05c7Sgtb 
28387c478bd9Sstevel@tonic-gate #endif /* KRB5_GENERAL__ */
28397c478bd9Sstevel@tonic-gate 
2840*eb42280bSWill Fiveash /*
2841*eb42280bSWill Fiveash  * Solaris Kerberos: the following differs from the MIT krb5.hin as that file is
2842*eb42280bSWill Fiveash  * processed to produce their krb5.h.  We do not process a krb5.hin so our
2843*eb42280bSWill Fiveash  * krb5.h is manually edited.
2844*eb42280bSWill Fiveash  */
28457c478bd9Sstevel@tonic-gate 
28467c478bd9Sstevel@tonic-gate /*
28477c478bd9Sstevel@tonic-gate  * krb5_err.h:
28487c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
28497c478bd9Sstevel@tonic-gate  */
28507c478bd9Sstevel@tonic-gate 
28517c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NONE                         (-1765328384L)
28527c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NAME_EXP                     (-1765328383L)
28537c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVICE_EXP                  (-1765328382L)
28547c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_BAD_PVNO                     (-1765328381L)
28557c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_C_OLD_MAST_KVNO              (-1765328380L)
28567c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_S_OLD_MAST_KVNO              (-1765328379L)
28577c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN          (-1765328378L)
28587c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN          (-1765328377L)
28597c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE         (-1765328376L)
28607c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NULL_KEY                     (-1765328375L)
28617c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_CANNOT_POSTDATE              (-1765328374L)
28627c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NEVER_VALID                  (-1765328373L)
28637c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_POLICY                       (-1765328372L)
28647c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_BADOPTION                    (-1765328371L)
28657c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_ETYPE_NOSUPP                 (-1765328370L)
28667c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SUMTYPE_NOSUPP               (-1765328369L)
28677c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PADATA_TYPE_NOSUPP           (-1765328368L)
28687c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_TRTYPE_NOSUPP                (-1765328367L)
28697c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_CLIENT_REVOKED               (-1765328366L)
28707c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVICE_REVOKED              (-1765328365L)
28717c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_TGT_REVOKED                  (-1765328364L)
28727c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_CLIENT_NOTYET                (-1765328363L)
28737c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVICE_NOTYET               (-1765328362L)
28747c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_KEY_EXP                      (-1765328361L)
28757c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PREAUTH_FAILED               (-1765328360L)
28767c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PREAUTH_REQUIRED             (-1765328359L)
28777c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVER_NOMATCH               (-1765328358L)
28787c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_27                         (-1765328357L)
28797c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_28                         (-1765328356L)
2880159d09a2SMark Phalan #define KRB5KDC_ERR_SVC_UNAVAILABLE              (-1765328355L)
28817c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_30                         (-1765328354L)
28827c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BAD_INTEGRITY             (-1765328353L)
28837c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_TKT_EXPIRED               (-1765328352L)
28847c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_TKT_NYV                   (-1765328351L)
28857c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_REPEAT                    (-1765328350L)
28867c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_NOT_US                    (-1765328349L)
28877c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADMATCH                  (-1765328348L)
28887c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_SKEW                      (-1765328347L)
28897c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADADDR                   (-1765328346L)
28907c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADVERSION                (-1765328345L)
28917c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_MSG_TYPE                  (-1765328344L)
28927c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_MODIFIED                  (-1765328343L)
28937c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADORDER                  (-1765328342L)
28947c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_ILL_CR_TKT                (-1765328341L)
28957c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADKEYVER                 (-1765328340L)
28967c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_NOKEY                     (-1765328339L)
28977c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_MUT_FAIL                  (-1765328338L)
28987c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADDIRECTION              (-1765328337L)
28997c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_METHOD                    (-1765328336L)
29007c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADSEQ                    (-1765328335L)
29017c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_INAPP_CKSUM               (-1765328334L)
2902159d09a2SMark Phalan #define KRB5KRB_AP_PATH_NOT_ACCEPTED             (-1765328333L)
2903159d09a2SMark Phalan #define KRB5KRB_ERR_RESPONSE_TOO_BIG             (-1765328332L)
29047c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_53                         (-1765328331L)
29057c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_54                         (-1765328330L)
29067c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_55                         (-1765328329L)
29077c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_56                         (-1765328328L)
29087c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_57                         (-1765328327L)
29097c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_58                         (-1765328326L)
29107c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_59                         (-1765328325L)
29117c478bd9Sstevel@tonic-gate #define KRB5KRB_ERR_GENERIC                      (-1765328324L)
29127c478bd9Sstevel@tonic-gate #define KRB5KRB_ERR_FIELD_TOOLONG                (-1765328323L)
2913159d09a2SMark Phalan #define KRB5KDC_ERR_CLIENT_NOT_TRUSTED           (-1765328322L)
2914159d09a2SMark Phalan #define KRB5KDC_ERR_KDC_NOT_TRUSTED              (-1765328321L)
2915159d09a2SMark Phalan #define KRB5KDC_ERR_INVALID_SIG                  (-1765328320L)
2916159d09a2SMark Phalan #define KRB5KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED (-1765328319L)
2917159d09a2SMark Phalan #define KRB5KDC_ERR_CERTIFICATE_MISMATCH         (-1765328318L)
29187c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_67                         (-1765328317L)
29197c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_68                         (-1765328316L)
29207c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_69                         (-1765328315L)
2921159d09a2SMark Phalan #define KRB5KDC_ERR_CANT_VERIFY_CERTIFICATE      (-1765328314L)
2922159d09a2SMark Phalan #define KRB5KDC_ERR_INVALID_CERTIFICATE          (-1765328313L)
2923159d09a2SMark Phalan #define KRB5KDC_ERR_REVOKED_CERTIFICATE          (-1765328312L)
2924159d09a2SMark Phalan #define KRB5KDC_ERR_REVOCATION_STATUS_UNKNOWN    (-1765328311L)
2925159d09a2SMark Phalan #define KRB5KDC_ERR_REVOCATION_STATUS_UNAVAILABLE (-1765328310L)
2926159d09a2SMark Phalan #define KRB5KDC_ERR_CLIENT_NAME_MISMATCH         (-1765328309L)
2927159d09a2SMark Phalan #define KRB5KDC_ERR_KDC_NAME_MISMATCH            (-1765328308L)
2928159d09a2SMark Phalan #define KRB5KDC_ERR_INCONSISTENT_KEY_PURPOSE     (-1765328307L)
2929159d09a2SMark Phalan #define KRB5KDC_ERR_DIGEST_IN_CERT_NOT_ACCEPTED  (-1765328306L)
2930159d09a2SMark Phalan #define KRB5KDC_ERR_PA_CHECKSUM_MUST_BE_INCLUDED (-1765328305L)
2931159d09a2SMark Phalan #define KRB5KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED (-1765328304L)
2932159d09a2SMark Phalan #define KRB5KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED (-1765328303L)
29337c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_82                         (-1765328302L)
29347c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_83                         (-1765328301L)
29357c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_84                         (-1765328300L)
29367c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_85                         (-1765328299L)
29377c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_86                         (-1765328298L)
29387c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_87                         (-1765328297L)
29397c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_88                         (-1765328296L)
29407c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_89                         (-1765328295L)
29417c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_90                         (-1765328294L)
29427c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_91                         (-1765328293L)
29437c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_92                         (-1765328292L)
29447c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_93                         (-1765328291L)
29457c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_94                         (-1765328290L)
29467c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_95                         (-1765328289L)
29477c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_96                         (-1765328288L)
29487c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_97                         (-1765328287L)
29497c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_98                         (-1765328286L)
29507c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_99                         (-1765328285L)
29517c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_100                        (-1765328284L)
29527c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_101                        (-1765328283L)
29537c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_102                        (-1765328282L)
29547c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_103                        (-1765328281L)
29557c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_104                        (-1765328280L)
29567c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_105                        (-1765328279L)
29577c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_106                        (-1765328278L)
29587c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_107                        (-1765328277L)
29597c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_108                        (-1765328276L)
29607c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_109                        (-1765328275L)
29617c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_110                        (-1765328274L)
29627c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_111                        (-1765328273L)
29637c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_112                        (-1765328272L)
29647c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_113                        (-1765328271L)
29657c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_114                        (-1765328270L)
29667c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_115                        (-1765328269L)
29677c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_116                        (-1765328268L)
29687c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_117                        (-1765328267L)
29697c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_118                        (-1765328266L)
29707c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_119                        (-1765328265L)
29717c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_120                        (-1765328264L)
29727c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_121                        (-1765328263L)
29737c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_122                        (-1765328262L)
29747c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_123                        (-1765328261L)
29757c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_124                        (-1765328260L)
29767c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_125                        (-1765328259L)
29777c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_126                        (-1765328258L)
29787c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_127                        (-1765328257L)
29797c478bd9Sstevel@tonic-gate #define KRB5_ERR_RCSID                           (-1765328256L)
29807c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_BADLOCKFLAG                   (-1765328255L)
29817c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_CANTREADPWD                   (-1765328254L)
29827c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_BADPWDMATCH                   (-1765328253L)
29837c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_PWDINTR                       (-1765328252L)
29847c478bd9Sstevel@tonic-gate #define KRB5_PARSE_ILLCHAR                       (-1765328251L)
29857c478bd9Sstevel@tonic-gate #define KRB5_PARSE_MALFORMED                     (-1765328250L)
29867c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_CANTOPEN                     (-1765328249L)
29877c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_BADFORMAT                    (-1765328248L)
29887c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_NOTENUFSPACE                 (-1765328247L)
29897c478bd9Sstevel@tonic-gate #define KRB5_BADMSGTYPE                          (-1765328246L)
29907c478bd9Sstevel@tonic-gate #define KRB5_CC_BADNAME                          (-1765328245L)
29917c478bd9Sstevel@tonic-gate #define KRB5_CC_UNKNOWN_TYPE                     (-1765328244L)
29927c478bd9Sstevel@tonic-gate #define KRB5_CC_NOTFOUND                         (-1765328243L)
29937c478bd9Sstevel@tonic-gate #define KRB5_CC_END                              (-1765328242L)
29947c478bd9Sstevel@tonic-gate #define KRB5_NO_TKT_SUPPLIED                     (-1765328241L)
29957c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_WRONG_PRINC                   (-1765328240L)
29967c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_TKT_INVALID               (-1765328239L)
29977c478bd9Sstevel@tonic-gate #define KRB5_PRINC_NOMATCH                       (-1765328238L)
29987c478bd9Sstevel@tonic-gate #define KRB5_KDCREP_MODIFIED                     (-1765328237L)
29997c478bd9Sstevel@tonic-gate #define KRB5_KDCREP_SKEW                         (-1765328236L)
30007c478bd9Sstevel@tonic-gate #define KRB5_IN_TKT_REALM_MISMATCH               (-1765328235L)
30017c478bd9Sstevel@tonic-gate #define KRB5_PROG_ETYPE_NOSUPP                   (-1765328234L)
30027c478bd9Sstevel@tonic-gate #define KRB5_PROG_KEYTYPE_NOSUPP                 (-1765328233L)
30037c478bd9Sstevel@tonic-gate #define KRB5_WRONG_ETYPE                         (-1765328232L)
30047c478bd9Sstevel@tonic-gate #define KRB5_PROG_SUMTYPE_NOSUPP                 (-1765328231L)
30057c478bd9Sstevel@tonic-gate #define KRB5_REALM_UNKNOWN                       (-1765328230L)
30067c478bd9Sstevel@tonic-gate #define KRB5_SERVICE_UNKNOWN                     (-1765328229L)
30077c478bd9Sstevel@tonic-gate #define KRB5_KDC_UNREACH                         (-1765328228L)
30087c478bd9Sstevel@tonic-gate #define KRB5_NO_LOCALNAME                        (-1765328227L)
30097c478bd9Sstevel@tonic-gate #define KRB5_MUTUAL_FAILED                       (-1765328226L)
30107c478bd9Sstevel@tonic-gate #define KRB5_RC_TYPE_EXISTS                      (-1765328225L)
30117c478bd9Sstevel@tonic-gate #define KRB5_RC_MALLOC                           (-1765328224L)
30127c478bd9Sstevel@tonic-gate #define KRB5_RC_TYPE_NOTFOUND                    (-1765328223L)
30137c478bd9Sstevel@tonic-gate #define KRB5_RC_UNKNOWN                          (-1765328222L)
30147c478bd9Sstevel@tonic-gate #define KRB5_RC_REPLAY                           (-1765328221L)
30157c478bd9Sstevel@tonic-gate #define KRB5_RC_IO                               (-1765328220L)
30167c478bd9Sstevel@tonic-gate #define KRB5_RC_NOIO                             (-1765328219L)
30177c478bd9Sstevel@tonic-gate #define KRB5_RC_PARSE                            (-1765328218L)
30187c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_EOF                           (-1765328217L)
30197c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_MALLOC                        (-1765328216L)
30207c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_PERM                          (-1765328215L)
30217c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_IO                            (-1765328214L)
30227c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_UNKNOWN                       (-1765328213L)
30237c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_SPACE                         (-1765328212L)
30247c478bd9Sstevel@tonic-gate #define KRB5_TRANS_CANTOPEN                      (-1765328211L)
30257c478bd9Sstevel@tonic-gate #define KRB5_TRANS_BADFORMAT                     (-1765328210L)
30267c478bd9Sstevel@tonic-gate #define KRB5_LNAME_CANTOPEN                      (-1765328209L)
30277c478bd9Sstevel@tonic-gate #define KRB5_LNAME_NOTRANS                       (-1765328208L)
30287c478bd9Sstevel@tonic-gate #define KRB5_LNAME_BADFORMAT                     (-1765328207L)
30297c478bd9Sstevel@tonic-gate #define KRB5_CRYPTO_INTERNAL                     (-1765328206L)
30307c478bd9Sstevel@tonic-gate #define KRB5_KT_BADNAME                          (-1765328205L)
30317c478bd9Sstevel@tonic-gate #define KRB5_KT_UNKNOWN_TYPE                     (-1765328204L)
30327c478bd9Sstevel@tonic-gate #define KRB5_KT_NOTFOUND                         (-1765328203L)
30337c478bd9Sstevel@tonic-gate #define KRB5_KT_END                              (-1765328202L)
30347c478bd9Sstevel@tonic-gate #define KRB5_KT_NOWRITE                          (-1765328201L)
30357c478bd9Sstevel@tonic-gate #define KRB5_KT_IOERR                            (-1765328200L)
30367c478bd9Sstevel@tonic-gate #define KRB5_NO_TKT_IN_RLM                       (-1765328199L)
30377c478bd9Sstevel@tonic-gate #define KRB5DES_BAD_KEYPAR                       (-1765328198L)
30387c478bd9Sstevel@tonic-gate #define KRB5DES_WEAK_KEY                         (-1765328197L)
30397c478bd9Sstevel@tonic-gate #define KRB5_BAD_ENCTYPE                         (-1765328196L)
30407c478bd9Sstevel@tonic-gate #define KRB5_BAD_KEYSIZE                         (-1765328195L)
30417c478bd9Sstevel@tonic-gate #define KRB5_BAD_MSIZE                           (-1765328194L)
30427c478bd9Sstevel@tonic-gate #define KRB5_CC_TYPE_EXISTS                      (-1765328193L)
30437c478bd9Sstevel@tonic-gate #define KRB5_KT_TYPE_EXISTS                      (-1765328192L)
30447c478bd9Sstevel@tonic-gate #define KRB5_CC_IO                               (-1765328191L)
30457c478bd9Sstevel@tonic-gate #define KRB5_FCC_PERM                            (-1765328190L)
30467c478bd9Sstevel@tonic-gate #define KRB5_FCC_NOFILE                          (-1765328189L)
30477c478bd9Sstevel@tonic-gate #define KRB5_FCC_INTERNAL                        (-1765328188L)
30487c478bd9Sstevel@tonic-gate #define KRB5_CC_WRITE                            (-1765328187L)
30497c478bd9Sstevel@tonic-gate #define KRB5_CC_NOMEM                            (-1765328186L)
30507c478bd9Sstevel@tonic-gate #define KRB5_CC_FORMAT                           (-1765328185L)
30517c478bd9Sstevel@tonic-gate #define KRB5_CC_NOT_KTYPE                        (-1765328184L)
30527c478bd9Sstevel@tonic-gate #define KRB5_INVALID_FLAGS                       (-1765328183L)
30537c478bd9Sstevel@tonic-gate #define KRB5_NO_2ND_TKT                          (-1765328182L)
30547c478bd9Sstevel@tonic-gate #define KRB5_NOCREDS_SUPPLIED                    (-1765328181L)
30557c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_BADAUTHVERS                (-1765328180L)
30567c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_BADAPPLVERS                (-1765328179L)
30577c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_BADRESPONSE                (-1765328178L)
30587c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_REJECTED                   (-1765328177L)
30597c478bd9Sstevel@tonic-gate #define KRB5_PREAUTH_BAD_TYPE                    (-1765328176L)
30607c478bd9Sstevel@tonic-gate #define KRB5_PREAUTH_NO_KEY                      (-1765328175L)
30617c478bd9Sstevel@tonic-gate #define KRB5_PREAUTH_FAILED                      (-1765328174L)
30627c478bd9Sstevel@tonic-gate #define KRB5_RCACHE_BADVNO                       (-1765328173L)
30637c478bd9Sstevel@tonic-gate #define KRB5_CCACHE_BADVNO                       (-1765328172L)
30647c478bd9Sstevel@tonic-gate #define KRB5_KEYTAB_BADVNO                       (-1765328171L)
30657c478bd9Sstevel@tonic-gate #define KRB5_PROG_ATYPE_NOSUPP                   (-1765328170L)
30667c478bd9Sstevel@tonic-gate #define KRB5_RC_REQUIRED                         (-1765328169L)
30677c478bd9Sstevel@tonic-gate #define KRB5_ERR_BAD_HOSTNAME                    (-1765328168L)
30687c478bd9Sstevel@tonic-gate #define KRB5_ERR_HOST_REALM_UNKNOWN              (-1765328167L)
30697c478bd9Sstevel@tonic-gate #define KRB5_SNAME_UNSUPP_NAMETYPE               (-1765328166L)
30707c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_V4_REPLY                  (-1765328165L)
30717c478bd9Sstevel@tonic-gate #define KRB5_REALM_CANT_RESOLVE                  (-1765328164L)
30727c478bd9Sstevel@tonic-gate #define KRB5_TKT_NOT_FORWARDABLE                 (-1765328163L)
30737c478bd9Sstevel@tonic-gate #define KRB5_FWD_BAD_PRINCIPAL                   (-1765328162L)
30747c478bd9Sstevel@tonic-gate #define KRB5_GET_IN_TKT_LOOP                     (-1765328161L)
30757c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_NODEFREALM                   (-1765328160L)
30767c478bd9Sstevel@tonic-gate #define KRB5_SAM_UNSUPPORTED                     (-1765328159L)
3077159d09a2SMark Phalan #define KRB5_SAM_INVALID_ETYPE                   (-1765328158L)
3078159d09a2SMark Phalan #define KRB5_SAM_NO_CHECKSUM                     (-1765328157L)
3079159d09a2SMark Phalan #define KRB5_SAM_BAD_CHECKSUM                    (-1765328156L)
3080159d09a2SMark Phalan #define KRB5_KT_NAME_TOOLONG                     (-1765328155L)
3081159d09a2SMark Phalan #define KRB5_KT_KVNONOTFOUND                     (-1765328154L)
3082159d09a2SMark Phalan #define KRB5_APPL_EXPIRED                        (-1765328153L)
3083159d09a2SMark Phalan #define KRB5_LIB_EXPIRED                         (-1765328152L)
3084159d09a2SMark Phalan #define KRB5_CHPW_PWDNULL                        (-1765328151L)
3085159d09a2SMark Phalan #define KRB5_CHPW_FAIL                           (-1765328150L)
3086159d09a2SMark Phalan #define KRB5_KT_FORMAT                           (-1765328149L)
3087159d09a2SMark Phalan #define KRB5_NOPERM_ETYPE                        (-1765328148L)
3088159d09a2SMark Phalan #define KRB5_CONFIG_ETYPE_NOSUPP                 (-1765328147L)
3089159d09a2SMark Phalan #define KRB5_OBSOLETE_FN                         (-1765328146L)
3090159d09a2SMark Phalan #define KRB5_EAI_FAIL                            (-1765328145L)
3091159d09a2SMark Phalan #define KRB5_EAI_NODATA                          (-1765328144L)
3092159d09a2SMark Phalan #define KRB5_EAI_NONAME                          (-1765328143L)
3093159d09a2SMark Phalan #define KRB5_EAI_SERVICE                         (-1765328142L)
3094159d09a2SMark Phalan #define KRB5_ERR_NUMERIC_REALM                   (-1765328141L)
3095159d09a2SMark Phalan #define KRB5_ERR_BAD_S2K_PARAMS                  (-1765328140L)
3096159d09a2SMark Phalan #define KRB5_ERR_NO_SERVICE                      (-1765328139L)
3097159d09a2SMark Phalan #define KRB5_CC_READONLY                         (-1765328138L)
3098159d09a2SMark Phalan #define KRB5_CC_NOSUPP                           (-1765328137L)
30997c478bd9Sstevel@tonic-gate 
31007c478bd9Sstevel@tonic-gate /* NOTE! error values should not collide */
31017c478bd9Sstevel@tonic-gate /* XXX Note KRB5_RC_BADNAME and KRB5_CONF_NOT_CONFIGURED are Solaris specific */
31027c478bd9Sstevel@tonic-gate #define	KRB5_RC_BADNAME				(-1765328136L)
31037c478bd9Sstevel@tonic-gate #define	KRB5_CONF_NOT_CONFIGURED	 	 (-1765328135L)
31047c478bd9Sstevel@tonic-gate #ifdef _KERNEL
31057c478bd9Sstevel@tonic-gate /* XXX Note KRB5_KEF_ERROR and PKCS_ERR are Solaris specific */
31067c478bd9Sstevel@tonic-gate #define KRB5_KEF_ERROR                           (-1765328134L)
31077c478bd9Sstevel@tonic-gate #else
31087c478bd9Sstevel@tonic-gate #define PKCS_ERR				 (-1765328134L)
31097c478bd9Sstevel@tonic-gate #endif /* _KERNEL */
3110505d05c7Sgtb 
3111505d05c7Sgtb #define KRB5_DELTAT_BADFORMAT			(-1765328133L)
311254925bf6Swillf #define KRB5_PLUGIN_NO_HANDLE			(-1765328132L)
311354925bf6Swillf #define KRB5_PLUGIN_OP_NOTSUPP			(-1765328131L)
3114505d05c7Sgtb 
31157c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_krb5 (-1765328384L)
31167c478bd9Sstevel@tonic-gate 
31177c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
31187c478bd9Sstevel@tonic-gate #define krb5_err_base ERROR_TABLE_BASE_krb5
31197c478bd9Sstevel@tonic-gate /*
31207c478bd9Sstevel@tonic-gate  * kdb5_err.h:
31217c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
31227c478bd9Sstevel@tonic-gate  */
31237c478bd9Sstevel@tonic-gate #define KRB5_KDB_RCSID                           (-1780008448L)
31247c478bd9Sstevel@tonic-gate #define KRB5_KDB_INUSE                           (-1780008447L)
31257c478bd9Sstevel@tonic-gate #define KRB5_KDB_UK_SERROR                       (-1780008446L)
31267c478bd9Sstevel@tonic-gate #define KRB5_KDB_UK_RERROR                       (-1780008445L)
31277c478bd9Sstevel@tonic-gate #define KRB5_KDB_UNAUTH                          (-1780008444L)
31287c478bd9Sstevel@tonic-gate #define KRB5_KDB_NOENTRY                         (-1780008443L)
31297c478bd9Sstevel@tonic-gate #define KRB5_KDB_ILL_WILDCARD                    (-1780008442L)
31307c478bd9Sstevel@tonic-gate #define KRB5_KDB_DB_INUSE                        (-1780008441L)
31317c478bd9Sstevel@tonic-gate #define KRB5_KDB_DB_CHANGED                      (-1780008440L)
31327c478bd9Sstevel@tonic-gate #define KRB5_KDB_TRUNCATED_RECORD                (-1780008439L)
31337c478bd9Sstevel@tonic-gate #define KRB5_KDB_RECURSIVELOCK                   (-1780008438L)
31347c478bd9Sstevel@tonic-gate #define KRB5_KDB_NOTLOCKED                       (-1780008437L)
31357c478bd9Sstevel@tonic-gate #define KRB5_KDB_BADLOCKMODE                     (-1780008436L)
31367c478bd9Sstevel@tonic-gate #define KRB5_KDB_DBNOTINITED                     (-1780008435L)
31377c478bd9Sstevel@tonic-gate #define KRB5_KDB_DBINITED                        (-1780008434L)
31387c478bd9Sstevel@tonic-gate #define KRB5_KDB_ILLDIRECTION                    (-1780008433L)
31397c478bd9Sstevel@tonic-gate #define KRB5_KDB_NOMASTERKEY                     (-1780008432L)
31407c478bd9Sstevel@tonic-gate #define KRB5_KDB_BADMASTERKEY                    (-1780008431L)
31417c478bd9Sstevel@tonic-gate #define KRB5_KDB_INVALIDKEYSIZE                  (-1780008430L)
31427c478bd9Sstevel@tonic-gate #define KRB5_KDB_CANTREAD_STORED                 (-1780008429L)
31437c478bd9Sstevel@tonic-gate #define KRB5_KDB_BADSTORED_MKEY                  (-1780008428L)
31447c478bd9Sstevel@tonic-gate #define KRB5_KDB_CANTLOCK_DB                     (-1780008427L)
31457c478bd9Sstevel@tonic-gate #define KRB5_KDB_DB_CORRUPT                      (-1780008426L)
31467c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_VERSION                     (-1780008425L)
31477c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_SALTTYPE                    (-1780008424L)
31487c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_ENCTYPE                     (-1780008423L)
31497c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_CREATEFLAGS                 (-1780008422L)
31507c478bd9Sstevel@tonic-gate #define KRB5_KDB_NO_PERMITTED_KEY                (-1780008421L)
31517c478bd9Sstevel@tonic-gate #define KRB5_KDB_NO_MATCHING_KEY                 (-1780008420L)
31527c478bd9Sstevel@tonic-gate /*
31537c478bd9Sstevel@tonic-gate  * Incremental propagation error codes
31547c478bd9Sstevel@tonic-gate  */
31557c478bd9Sstevel@tonic-gate #define	KRB5_LOG_CONV				(-1780008419L)
31567c478bd9Sstevel@tonic-gate #define	KRB5_LOG_UNSTABLE			(-1780008418L)
31577c478bd9Sstevel@tonic-gate #define	KRB5_LOG_CORRUPT			(-1780008417L)
31587c478bd9Sstevel@tonic-gate #define	KRB5_LOG_ERROR				(-1780008416L)
315954925bf6Swillf #define KRB5_KDB_DBTYPE_NOTFOUND		(-1780008415L)
316054925bf6Swillf #define KRB5_KDB_DBTYPE_NOSUP			(-1780008414L)
316154925bf6Swillf #define KRB5_KDB_DBTYPE_INIT			(-1780008413L)
316254925bf6Swillf #define KRB5_KDB_SERVER_INTERNAL_ERR		(-1780008412L)
316354925bf6Swillf #define KRB5_KDB_ACCESS_ERROR			(-1780008411L)
316454925bf6Swillf #define KRB5_KDB_INTERNAL_ERROR			(-1780008410L)
316554925bf6Swillf #define KRB5_KDB_CONSTRAINT_VIOLATION		(-1780008409L)
31667c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_kdb5 (-1780008448L)
31677c478bd9Sstevel@tonic-gate 
31687c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
31697c478bd9Sstevel@tonic-gate #define kdb5_err_base ERROR_TABLE_BASE_kdb5
31707c478bd9Sstevel@tonic-gate /*
31717c478bd9Sstevel@tonic-gate  * kv5m_err.h:
31727c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
31737c478bd9Sstevel@tonic-gate  */
31747c478bd9Sstevel@tonic-gate #define KV5M_NONE                                (-1760647424L)
31757c478bd9Sstevel@tonic-gate #define KV5M_PRINCIPAL                           (-1760647423L)
31767c478bd9Sstevel@tonic-gate #define KV5M_DATA                                (-1760647422L)
31777c478bd9Sstevel@tonic-gate #define KV5M_KEYBLOCK                            (-1760647421L)
31787c478bd9Sstevel@tonic-gate #define KV5M_CHECKSUM                            (-1760647420L)
31797c478bd9Sstevel@tonic-gate #define KV5M_ENCRYPT_BLOCK                       (-1760647419L)
31807c478bd9Sstevel@tonic-gate #define KV5M_ENC_DATA                            (-1760647418L)
31817c478bd9Sstevel@tonic-gate #define KV5M_CRYPTOSYSTEM_ENTRY                  (-1760647417L)
31827c478bd9Sstevel@tonic-gate #define KV5M_CS_TABLE_ENTRY                      (-1760647416L)
31837c478bd9Sstevel@tonic-gate #define KV5M_CHECKSUM_ENTRY                      (-1760647415L)
31847c478bd9Sstevel@tonic-gate #define KV5M_AUTHDATA                            (-1760647414L)
31857c478bd9Sstevel@tonic-gate #define KV5M_TRANSITED                           (-1760647413L)
31867c478bd9Sstevel@tonic-gate #define KV5M_ENC_TKT_PART                        (-1760647412L)
31877c478bd9Sstevel@tonic-gate #define KV5M_TICKET                              (-1760647411L)
31887c478bd9Sstevel@tonic-gate #define KV5M_AUTHENTICATOR                       (-1760647410L)
31897c478bd9Sstevel@tonic-gate #define KV5M_TKT_AUTHENT                         (-1760647409L)
31907c478bd9Sstevel@tonic-gate #define KV5M_CREDS                               (-1760647408L)
31917c478bd9Sstevel@tonic-gate #define KV5M_LAST_REQ_ENTRY                      (-1760647407L)
31927c478bd9Sstevel@tonic-gate #define KV5M_PA_DATA                             (-1760647406L)
31937c478bd9Sstevel@tonic-gate #define KV5M_KDC_REQ                             (-1760647405L)
31947c478bd9Sstevel@tonic-gate #define KV5M_ENC_KDC_REP_PART                    (-1760647404L)
31957c478bd9Sstevel@tonic-gate #define KV5M_KDC_REP                             (-1760647403L)
31967c478bd9Sstevel@tonic-gate #define KV5M_ERROR                               (-1760647402L)
31977c478bd9Sstevel@tonic-gate #define KV5M_AP_REQ                              (-1760647401L)
31987c478bd9Sstevel@tonic-gate #define KV5M_AP_REP                              (-1760647400L)
31997c478bd9Sstevel@tonic-gate #define KV5M_AP_REP_ENC_PART                     (-1760647399L)
32007c478bd9Sstevel@tonic-gate #define KV5M_RESPONSE                            (-1760647398L)
32017c478bd9Sstevel@tonic-gate #define KV5M_SAFE                                (-1760647397L)
32027c478bd9Sstevel@tonic-gate #define KV5M_PRIV                                (-1760647396L)
32037c478bd9Sstevel@tonic-gate #define KV5M_PRIV_ENC_PART                       (-1760647395L)
32047c478bd9Sstevel@tonic-gate #define KV5M_CRED                                (-1760647394L)
32057c478bd9Sstevel@tonic-gate #define KV5M_CRED_INFO                           (-1760647393L)
32067c478bd9Sstevel@tonic-gate #define KV5M_CRED_ENC_PART                       (-1760647392L)
32077c478bd9Sstevel@tonic-gate #define KV5M_PWD_DATA                            (-1760647391L)
32087c478bd9Sstevel@tonic-gate #define KV5M_ADDRESS                             (-1760647390L)
32097c478bd9Sstevel@tonic-gate #define KV5M_KEYTAB_ENTRY                        (-1760647389L)
32107c478bd9Sstevel@tonic-gate #define KV5M_CONTEXT                             (-1760647388L)
32117c478bd9Sstevel@tonic-gate #define KV5M_OS_CONTEXT                          (-1760647387L)
32127c478bd9Sstevel@tonic-gate #define KV5M_ALT_METHOD                          (-1760647386L)
32137c478bd9Sstevel@tonic-gate #define KV5M_ETYPE_INFO_ENTRY                    (-1760647385L)
32147c478bd9Sstevel@tonic-gate #define KV5M_DB_CONTEXT                          (-1760647384L)
32157c478bd9Sstevel@tonic-gate #define KV5M_AUTH_CONTEXT                        (-1760647383L)
32167c478bd9Sstevel@tonic-gate #define KV5M_KEYTAB                              (-1760647382L)
32177c478bd9Sstevel@tonic-gate #define KV5M_RCACHE                              (-1760647381L)
32187c478bd9Sstevel@tonic-gate #define KV5M_CCACHE                              (-1760647380L)
32197c478bd9Sstevel@tonic-gate #define KV5M_PREAUTH_OPS                         (-1760647379L)
32207c478bd9Sstevel@tonic-gate #define KV5M_SAM_CHALLENGE                       (-1760647378L)
32217c478bd9Sstevel@tonic-gate #define KV5M_SAM_KEY                             (-1760647377L)
32227c478bd9Sstevel@tonic-gate #define KV5M_ENC_SAM_RESPONSE_ENC                (-1760647376L)
3223159d09a2SMark Phalan #define KV5M_ENC_SAM_RESPONSE_ENC_2              (-1760647374L)
3224159d09a2SMark Phalan #define KV5M_SAM_RESPONSE                        (-1760647373L)
3225159d09a2SMark Phalan #define KV5M_SAM_RESPONSE_2                      (-1760647372L)
3226159d09a2SMark Phalan #define KV5M_PREDICTED_SAM_RESPONSE              (-1760647371L)
3227159d09a2SMark Phalan #define KV5M_PASSWD_PHRASE_ELEMENT               (-1760647370L)
3228159d09a2SMark Phalan #define KV5M_GSS_OID                             (-1760647369L)
3229159d09a2SMark Phalan #define KV5M_GSS_QUEUE                           (-1760647368L)
32307c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_kv5m (-1760647424L)
32317c478bd9Sstevel@tonic-gate 
32327c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
32337c478bd9Sstevel@tonic-gate #define kv5m_err_base ERROR_TABLE_BASE_kv5m
32347c478bd9Sstevel@tonic-gate /*
32357c478bd9Sstevel@tonic-gate  * asn1_err.h:
32367c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
32377c478bd9Sstevel@tonic-gate  */
32387c478bd9Sstevel@tonic-gate #define ASN1_BAD_TIMEFORMAT                      (1859794432L)
32397c478bd9Sstevel@tonic-gate #define ASN1_MISSING_FIELD                       (1859794433L)
32407c478bd9Sstevel@tonic-gate #define ASN1_MISPLACED_FIELD                     (1859794434L)
32417c478bd9Sstevel@tonic-gate #define ASN1_TYPE_MISMATCH                       (1859794435L)
32427c478bd9Sstevel@tonic-gate #define ASN1_OVERFLOW                            (1859794436L)
32437c478bd9Sstevel@tonic-gate #define ASN1_OVERRUN                             (1859794437L)
32447c478bd9Sstevel@tonic-gate #define ASN1_BAD_ID                              (1859794438L)
32457c478bd9Sstevel@tonic-gate #define ASN1_BAD_LENGTH                          (1859794439L)
32467c478bd9Sstevel@tonic-gate #define ASN1_BAD_FORMAT                          (1859794440L)
32477c478bd9Sstevel@tonic-gate #define ASN1_PARSE_ERROR                         (1859794441L)
32487c478bd9Sstevel@tonic-gate #define ASN1_BAD_GMTIME                          (1859794442L)
32497c478bd9Sstevel@tonic-gate #define ASN1_MISMATCH_INDEF			 (1859794443L)
32507c478bd9Sstevel@tonic-gate #define ASN1_MISSING_EOC			 (1859794444L)
32517c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_asn1 (1859794432L)
32527c478bd9Sstevel@tonic-gate 
32537c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
32547c478bd9Sstevel@tonic-gate #define asn1_err_base ERROR_TABLE_BASE_asn1
32557c478bd9Sstevel@tonic-gate 
32567c478bd9Sstevel@tonic-gate #endif		/* _KRB5_H */
3257