xref: /illumos-gate/usr/src/uts/common/gssapi/mechs/krb5/include/krb5.h (revision 55fea89dcaa64928bed4327112404dcb3e07b79f)
17c478bd9Sstevel@tonic-gate /*
2*5e01956fSGlenn Barry  * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
37c478bd9Sstevel@tonic-gate  */
47c478bd9Sstevel@tonic-gate 
57c478bd9Sstevel@tonic-gate /* This is the prologue to krb5.h */
67c478bd9Sstevel@tonic-gate /* Unfortunately some of these defines are compiler dependent */
77c478bd9Sstevel@tonic-gate #ifndef _KRB5_H
87c478bd9Sstevel@tonic-gate #define _KRB5_H
97c478bd9Sstevel@tonic-gate 
107c478bd9Sstevel@tonic-gate 
117c478bd9Sstevel@tonic-gate #define SIZEOF_INT 4
127c478bd9Sstevel@tonic-gate 
137c478bd9Sstevel@tonic-gate #ifdef _LP64
147c478bd9Sstevel@tonic-gate #define SIZEOF_LONG 8
157c478bd9Sstevel@tonic-gate #else
167c478bd9Sstevel@tonic-gate #define SIZEOF_LONG 4
177c478bd9Sstevel@tonic-gate #endif
187c478bd9Sstevel@tonic-gate 
197c478bd9Sstevel@tonic-gate #define SIZEOF_SHORT 2
207c478bd9Sstevel@tonic-gate #define HAVE_STDARG_H 1
217c478bd9Sstevel@tonic-gate #define HAVE_SYS_TYPES_H 1
227c478bd9Sstevel@tonic-gate /* End of prologue section */
237c478bd9Sstevel@tonic-gate /*
247c478bd9Sstevel@tonic-gate  * include/krb5.h
257c478bd9Sstevel@tonic-gate  *
26fe598cdcSmp153739  * Copyright 1989,1990,1995,2001, 2003  by the Massachusetts Institute of Technology.
277c478bd9Sstevel@tonic-gate  * All Rights Reserved.
287c478bd9Sstevel@tonic-gate  *
297c478bd9Sstevel@tonic-gate  * Export of this software from the United States of America may
307c478bd9Sstevel@tonic-gate  *   require a specific license from the United States Government.
317c478bd9Sstevel@tonic-gate  *   It is the responsibility of any person or organization contemplating
327c478bd9Sstevel@tonic-gate  *   export to obtain such a license before exporting.
337c478bd9Sstevel@tonic-gate  *
347c478bd9Sstevel@tonic-gate  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
357c478bd9Sstevel@tonic-gate  * distribute this software and its documentation for any purpose and
367c478bd9Sstevel@tonic-gate  * without fee is hereby granted, provided that the above copyright
377c478bd9Sstevel@tonic-gate  * notice appear in all copies and that both that copyright notice and
387c478bd9Sstevel@tonic-gate  * this permission notice appear in supporting documentation, and that
397c478bd9Sstevel@tonic-gate  * the name of M.I.T. not be used in advertising or publicity pertaining
407c478bd9Sstevel@tonic-gate  * to distribution of the software without specific, written prior
417c478bd9Sstevel@tonic-gate  * permission.	Furthermore if you modify this software you must label
427c478bd9Sstevel@tonic-gate  * your software as modified software and not distribute it in such a
437c478bd9Sstevel@tonic-gate  * fashion that it might be confused with the original M.I.T. software.
447c478bd9Sstevel@tonic-gate  * M.I.T. makes no representations about the suitability of
457c478bd9Sstevel@tonic-gate  * this software for any purpose.  It is provided "as is" without express
467c478bd9Sstevel@tonic-gate  * or implied warranty.
477c478bd9Sstevel@tonic-gate  *
487c478bd9Sstevel@tonic-gate  *
497c478bd9Sstevel@tonic-gate  * General definitions for Kerberos version 5.
507c478bd9Sstevel@tonic-gate  */
517c478bd9Sstevel@tonic-gate 
527c478bd9Sstevel@tonic-gate /*
537c478bd9Sstevel@tonic-gate  * Copyright (C) 1998 by the FundsXpress, INC.
547c478bd9Sstevel@tonic-gate  *
557c478bd9Sstevel@tonic-gate  * All rights reserved.
567c478bd9Sstevel@tonic-gate  *
577c478bd9Sstevel@tonic-gate  * Export of this software from the United States of America may require
587c478bd9Sstevel@tonic-gate  * a specific license from the United States Government.  It is the
597c478bd9Sstevel@tonic-gate  * responsibility of any person or organization contemplating export to
607c478bd9Sstevel@tonic-gate  * obtain such a license before exporting.
617c478bd9Sstevel@tonic-gate  *
627c478bd9Sstevel@tonic-gate  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
637c478bd9Sstevel@tonic-gate  * distribute this software and its documentation for any purpose and
647c478bd9Sstevel@tonic-gate  * without fee is hereby granted, provided that the above copyright
657c478bd9Sstevel@tonic-gate  * notice appear in all copies and that both that copyright notice and
667c478bd9Sstevel@tonic-gate  * this permission notice appear in supporting documentation, and that
677c478bd9Sstevel@tonic-gate  * the name of FundsXpress. not be used in advertising or publicity pertaining
687c478bd9Sstevel@tonic-gate  * to distribution of the software without specific, written prior
697c478bd9Sstevel@tonic-gate  * permission.  FundsXpress makes no representations about the suitability of
707c478bd9Sstevel@tonic-gate  * this software for any purpose.  It is provided "as is" without express
717c478bd9Sstevel@tonic-gate  * or implied warranty.
727c478bd9Sstevel@tonic-gate  *
737c478bd9Sstevel@tonic-gate  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
747c478bd9Sstevel@tonic-gate  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
757c478bd9Sstevel@tonic-gate  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
767c478bd9Sstevel@tonic-gate  */
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate #ifndef KRB5_GENERAL__
797c478bd9Sstevel@tonic-gate #define KRB5_GENERAL__
807c478bd9Sstevel@tonic-gate 
817c478bd9Sstevel@tonic-gate #ifdef	_KERNEL
827c478bd9Sstevel@tonic-gate #include <sys/systm.h>
837c478bd9Sstevel@tonic-gate #include <sys/kmem.h>
847c478bd9Sstevel@tonic-gate 
857c478bd9Sstevel@tonic-gate #include <sys/crypto/common.h>
867c478bd9Sstevel@tonic-gate #include <sys/crypto/api.h>
877c478bd9Sstevel@tonic-gate 
887c478bd9Sstevel@tonic-gate /*
897c478bd9Sstevel@tonic-gate  * Just to be safe lets make sure the buffers are zero'ed after
907c478bd9Sstevel@tonic-gate  * malloc() as some code assumes this is the case.  To avoid warnings
917c478bd9Sstevel@tonic-gate  * of duplicated defines let remove the old one if present.
927c478bd9Sstevel@tonic-gate  */
937c478bd9Sstevel@tonic-gate #ifdef MALLOC
947c478bd9Sstevel@tonic-gate #undef MALLOC
957c478bd9Sstevel@tonic-gate #endif
967c478bd9Sstevel@tonic-gate #define MALLOC(n) kmem_zalloc((n), KM_SLEEP)
977c478bd9Sstevel@tonic-gate 
987c478bd9Sstevel@tonic-gate #define	FREE(x, n) kmem_free((x), (n))
997c478bd9Sstevel@tonic-gate #define CALLOC(n, s) kmem_zalloc((n)*(s), KM_SLEEP)
1007c478bd9Sstevel@tonic-gate #define strcpy(dst,src,n) bcopy((src),(dst),(n))
1017c478bd9Sstevel@tonic-gate #define mutex_lock(lck)  mutex_enter(lck)
1027c478bd9Sstevel@tonic-gate #define mutex_unlock(lck)  mutex_exit(lck)
1037c478bd9Sstevel@tonic-gate 
1047c478bd9Sstevel@tonic-gate #else /* !_KERNEL */
1057c478bd9Sstevel@tonic-gate #define	MALLOC(n) malloc(n)
1067c478bd9Sstevel@tonic-gate #define	FREE(x, n) free(x)
1077c478bd9Sstevel@tonic-gate #define CALLOC(n, s) calloc((n), (s))
1087c478bd9Sstevel@tonic-gate #include <stdlib.h>
1097c478bd9Sstevel@tonic-gate #include <thread.h>
1107c478bd9Sstevel@tonic-gate #include <synch.h>
1117c478bd9Sstevel@tonic-gate #include <security/cryptoki.h>
112505d05c7Sgtb #include <limits.h>    /* for *_MAX */
1137c478bd9Sstevel@tonic-gate #endif /* _KERNEL */
1147c478bd9Sstevel@tonic-gate 
115505d05c7Sgtb /* By default, do not expose deprecated interfaces. */
116505d05c7Sgtb /* SUNW14resync - we need to enable this for rlogind and such */
117505d05c7Sgtb #ifndef KRB5_DEPRECATED
118505d05c7Sgtb #define KRB5_DEPRECATED 1
119505d05c7Sgtb #endif
120505d05c7Sgtb /* Do not expose private interfaces.  Build system will override. */
121505d05c7Sgtb /* SUNW14resync - for the Solaris build we set it to 1 here */
122505d05c7Sgtb #ifndef KRB5_PRIVATE
123505d05c7Sgtb #define KRB5_PRIVATE 1
124505d05c7Sgtb #endif
1257c478bd9Sstevel@tonic-gate 
126505d05c7Sgtb #if defined(__MACH__) && defined(__APPLE__)
127505d05c7Sgtb #	include <TargetConditionals.h>
128505d05c7Sgtb #    if TARGET_RT_MAC_CFM
129505d05c7Sgtb #	error "Use KfM 4.0 SDK headers for CFM compilation."
130505d05c7Sgtb #    endif
131505d05c7Sgtb #endif
132505d05c7Sgtb 
133159d09a2SMark Phalan #if defined(_MSDOS) || defined(_WIN32)
1347c478bd9Sstevel@tonic-gate #include <win-mac.h>
1357c478bd9Sstevel@tonic-gate #endif
1367c478bd9Sstevel@tonic-gate 
1377c478bd9Sstevel@tonic-gate #ifndef KRB5_CONFIG__
1387c478bd9Sstevel@tonic-gate #ifndef KRB5_CALLCONV
1397c478bd9Sstevel@tonic-gate #define KRB5_CALLCONV
1407c478bd9Sstevel@tonic-gate #define KRB5_CALLCONV_C
1417c478bd9Sstevel@tonic-gate #endif /* !KRB5_CALLCONV */
1427c478bd9Sstevel@tonic-gate #endif /* !KRB5_CONFIG__ */
1437c478bd9Sstevel@tonic-gate 
144505d05c7Sgtb #ifndef KRB5_CALLCONV_WRONG
145505d05c7Sgtb #define KRB5_CALLCONV_WRONG
146505d05c7Sgtb #endif
147505d05c7Sgtb 
148505d05c7Sgtb /* SUNW14resync XXX */
1497c478bd9Sstevel@tonic-gate #include <sys/types.h>
1507c478bd9Sstevel@tonic-gate #include <sys/socket.h>
1517c478bd9Sstevel@tonic-gate 
1527c478bd9Sstevel@tonic-gate #ifndef THREEPARAMOPEN
1537c478bd9Sstevel@tonic-gate #define THREEPARAMOPEN(x,y,z) open(x,y,z)
1547c478bd9Sstevel@tonic-gate #endif
1557c478bd9Sstevel@tonic-gate 
156505d05c7Sgtb 
1577c478bd9Sstevel@tonic-gate /*
1587c478bd9Sstevel@tonic-gate  * Solaris Kerberos:
15910db1377Sgtb  *   Samba needs a couple of these interfaces so old crypto is enabled.
1607c478bd9Sstevel@tonic-gate  */
16110db1377Sgtb #define KRB5_OLD_CRYPTO
1627c478bd9Sstevel@tonic-gate 
1637c478bd9Sstevel@tonic-gate 
164505d05c7Sgtb #ifndef KRB5INT_BEGIN_DECLS
165505d05c7Sgtb #if defined(__cplusplus)
166505d05c7Sgtb #define KRB5INT_BEGIN_DECLS	extern "C" {
167505d05c7Sgtb #define KRB5INT_END_DECLS	}
1687c478bd9Sstevel@tonic-gate #else
169505d05c7Sgtb #define KRB5INT_BEGIN_DECLS
170505d05c7Sgtb #define KRB5INT_END_DECLS
1717c478bd9Sstevel@tonic-gate #endif
172159d09a2SMark Phalan #endif
173505d05c7Sgtb 
174eb42280bSWill Fiveash KRB5INT_BEGIN_DECLS
175eb42280bSWill Fiveash 
176505d05c7Sgtb #if TARGET_OS_MAC
177505d05c7Sgtb #    pragma options align=mac68k
178505d05c7Sgtb #endif
179505d05c7Sgtb 
180505d05c7Sgtb /* from profile.h */
181505d05c7Sgtb struct _profile_t;
182505d05c7Sgtb /* typedef struct _profile_t *profile_t; */
183505d05c7Sgtb 
1847c478bd9Sstevel@tonic-gate /*
1857c478bd9Sstevel@tonic-gate  * begin wordsize.h
1867c478bd9Sstevel@tonic-gate  */
1877c478bd9Sstevel@tonic-gate 
1887c478bd9Sstevel@tonic-gate /*
1897c478bd9Sstevel@tonic-gate  * Word-size related definition.
1907c478bd9Sstevel@tonic-gate  */
1917c478bd9Sstevel@tonic-gate 
1927c478bd9Sstevel@tonic-gate typedef	unsigned char	krb5_octet;
1937c478bd9Sstevel@tonic-gate 
194505d05c7Sgtb #if INT_MAX == 0x7fff
1957c478bd9Sstevel@tonic-gate typedef	int	krb5_int16;
1967c478bd9Sstevel@tonic-gate typedef	unsigned int	krb5_ui_2;
197505d05c7Sgtb #elif SHRT_MAX == 0x7fff
1987c478bd9Sstevel@tonic-gate typedef	short	krb5_int16;
1997c478bd9Sstevel@tonic-gate typedef	unsigned short	krb5_ui_2;
2007c478bd9Sstevel@tonic-gate #else
201505d05c7Sgtb #error undefined 16 bit type
2027c478bd9Sstevel@tonic-gate #endif
2037c478bd9Sstevel@tonic-gate 
204505d05c7Sgtb #if INT_MAX == 0x7fffffffL
2057c478bd9Sstevel@tonic-gate typedef	int	krb5_int32;
2067c478bd9Sstevel@tonic-gate typedef	unsigned int	krb5_ui_4;
207505d05c7Sgtb #elif LONG_MAX == 0x7fffffffL
2087c478bd9Sstevel@tonic-gate typedef	long	krb5_int32;
2097c478bd9Sstevel@tonic-gate typedef	unsigned long	krb5_ui_4;
210505d05c7Sgtb #elif SHRT_MAX == 0x7fffffffL
2117c478bd9Sstevel@tonic-gate typedef	short	krb5_int32;
2127c478bd9Sstevel@tonic-gate typedef	unsigned short	krb5_ui_4;
2137c478bd9Sstevel@tonic-gate #else
214505d05c7Sgtb #error: undefined 32 bit type
2157c478bd9Sstevel@tonic-gate #endif
2167c478bd9Sstevel@tonic-gate 
217505d05c7Sgtb #define VALID_INT_BITS	  INT_MAX
218505d05c7Sgtb #define VALID_UINT_BITS	  UINT_MAX
219505d05c7Sgtb 
2207c478bd9Sstevel@tonic-gate #define KRB5_INT32_MAX	2147483647
2217c478bd9Sstevel@tonic-gate /* this strange form is necessary since - is a unary operator, not a sign
2227c478bd9Sstevel@tonic-gate    indicator */
2237c478bd9Sstevel@tonic-gate #define KRB5_INT32_MIN	(-KRB5_INT32_MAX-1)
2247c478bd9Sstevel@tonic-gate 
2257c478bd9Sstevel@tonic-gate #define KRB5_INT16_MAX 65535
2267c478bd9Sstevel@tonic-gate /* this strange form is necessary since - is a unary operator, not a sign
2277c478bd9Sstevel@tonic-gate    indicator */
2287c478bd9Sstevel@tonic-gate #define KRB5_INT16_MIN	(-KRB5_INT16_MAX-1)
2297c478bd9Sstevel@tonic-gate 
2307c478bd9Sstevel@tonic-gate /*
2317c478bd9Sstevel@tonic-gate  * end wordsize.h
2327c478bd9Sstevel@tonic-gate  */
2337c478bd9Sstevel@tonic-gate 
2347c478bd9Sstevel@tonic-gate /*
2357c478bd9Sstevel@tonic-gate  * begin "base-defs.h"
2367c478bd9Sstevel@tonic-gate  */
2377c478bd9Sstevel@tonic-gate 
2387c478bd9Sstevel@tonic-gate /*
2397c478bd9Sstevel@tonic-gate  * Basic definitions for Kerberos V5 library
2407c478bd9Sstevel@tonic-gate  */
2417c478bd9Sstevel@tonic-gate 
2427c478bd9Sstevel@tonic-gate #ifndef FALSE
2437c478bd9Sstevel@tonic-gate #define	FALSE	0
2447c478bd9Sstevel@tonic-gate #endif
2457c478bd9Sstevel@tonic-gate #ifndef TRUE
2467c478bd9Sstevel@tonic-gate #define	TRUE	1
2477c478bd9Sstevel@tonic-gate #endif
2487c478bd9Sstevel@tonic-gate 
2497c478bd9Sstevel@tonic-gate typedef	unsigned int krb5_boolean;
2507c478bd9Sstevel@tonic-gate typedef	unsigned int krb5_msgtype;
2517c478bd9Sstevel@tonic-gate typedef	unsigned int krb5_kvno;
2527c478bd9Sstevel@tonic-gate 
2537c478bd9Sstevel@tonic-gate typedef	krb5_int32 krb5_addrtype;
2547c478bd9Sstevel@tonic-gate typedef krb5_int32 krb5_enctype;
2557c478bd9Sstevel@tonic-gate typedef krb5_int32 krb5_cksumtype;
2567c478bd9Sstevel@tonic-gate typedef krb5_int32 krb5_authdatatype;
2577c478bd9Sstevel@tonic-gate typedef krb5_int32 krb5_keyusage;
2587c478bd9Sstevel@tonic-gate 
2597c478bd9Sstevel@tonic-gate typedef krb5_int32	krb5_preauthtype; /* This may change, later on */
2607c478bd9Sstevel@tonic-gate typedef	krb5_int32	krb5_flags;
2617c478bd9Sstevel@tonic-gate typedef krb5_int32	krb5_timestamp;
2627c478bd9Sstevel@tonic-gate typedef	krb5_int32	krb5_error_code;
2637c478bd9Sstevel@tonic-gate typedef krb5_int32	krb5_deltat;
2647c478bd9Sstevel@tonic-gate 
2657c478bd9Sstevel@tonic-gate typedef krb5_error_code	krb5_magic;
2667c478bd9Sstevel@tonic-gate 
2677c478bd9Sstevel@tonic-gate typedef struct _krb5_data {
2687c478bd9Sstevel@tonic-gate 	krb5_magic magic;
2697c478bd9Sstevel@tonic-gate 	unsigned int length;
2707c478bd9Sstevel@tonic-gate 	char *data;
2717c478bd9Sstevel@tonic-gate } krb5_data;
2727c478bd9Sstevel@tonic-gate 
273159d09a2SMark Phalan typedef struct _krb5_octet_data {
274159d09a2SMark Phalan 	krb5_magic magic;
275159d09a2SMark Phalan 	unsigned int length;
276159d09a2SMark Phalan 	krb5_octet *data;
277159d09a2SMark Phalan } krb5_octet_data;
278159d09a2SMark Phalan 
2797c478bd9Sstevel@tonic-gate /*
280505d05c7Sgtb  * Hack length for crypto library to use the afs_string_to_key It is
281505d05c7Sgtb  * equivalent to -1 without possible sign extension
282505d05c7Sgtb  * We also overload for an unset salt type length - which is also -1, but
283505d05c7Sgtb  * hey, why not....
2847c478bd9Sstevel@tonic-gate */
285505d05c7Sgtb #define SALT_TYPE_AFS_LENGTH UINT_MAX
286505d05c7Sgtb #define SALT_TYPE_NO_LENGTH  UINT_MAX
2877c478bd9Sstevel@tonic-gate 
2887c478bd9Sstevel@tonic-gate typedef	void * krb5_pointer;
289505d05c7Sgtb typedef void const * krb5_const_pointer;
2907c478bd9Sstevel@tonic-gate 
2917c478bd9Sstevel@tonic-gate typedef struct krb5_principal_data {
2927c478bd9Sstevel@tonic-gate     krb5_magic magic;
2937c478bd9Sstevel@tonic-gate     krb5_data realm;
2947c478bd9Sstevel@tonic-gate     krb5_data *data;		/* An array of strings */
2957c478bd9Sstevel@tonic-gate     krb5_int32 length;
2967c478bd9Sstevel@tonic-gate     krb5_int32 type;
2977c478bd9Sstevel@tonic-gate } krb5_principal_data;
2987c478bd9Sstevel@tonic-gate 
2997c478bd9Sstevel@tonic-gate typedef	krb5_principal_data * krb5_principal;
3007c478bd9Sstevel@tonic-gate 
3017c478bd9Sstevel@tonic-gate /*
3027c478bd9Sstevel@tonic-gate  * Per V5 spec on definition of principal types
3037c478bd9Sstevel@tonic-gate  */
3047c478bd9Sstevel@tonic-gate 
3057c478bd9Sstevel@tonic-gate /* Name type not known */
3067c478bd9Sstevel@tonic-gate #define KRB5_NT_UNKNOWN		0
3077c478bd9Sstevel@tonic-gate /* Just the name of the principal as in DCE, or for users */
3087c478bd9Sstevel@tonic-gate #define KRB5_NT_PRINCIPAL	1
3097c478bd9Sstevel@tonic-gate /* Service and other unique instance (krbtgt) */
3107c478bd9Sstevel@tonic-gate #define KRB5_NT_SRV_INST	2
3117c478bd9Sstevel@tonic-gate /* Service with host name as instance (telnet, rcommands) */
3127c478bd9Sstevel@tonic-gate #define KRB5_NT_SRV_HST		3
3137c478bd9Sstevel@tonic-gate /* Service with host as remaining components */
3147c478bd9Sstevel@tonic-gate #define KRB5_NT_SRV_XHST	4
3157c478bd9Sstevel@tonic-gate /* Unique ID */
3167c478bd9Sstevel@tonic-gate #define KRB5_NT_UID		5
317ba7b222eSGlenn Barry /* PKINIT */
318ba7b222eSGlenn Barry #define KRB5_NT_X500_PRINCIPAL          6
319ba7b222eSGlenn Barry /* Name in form of SMTP email name */
320ba7b222eSGlenn Barry #define KRB5_NT_SMTP_NAME               7
321ba7b222eSGlenn Barry /* Windows 2000 UPN */
322ba7b222eSGlenn Barry #define KRB5_NT_ENTERPRISE_PRINCIPAL    10
323ba7b222eSGlenn Barry /* Windows 2000 UPN and SID */
324ba7b222eSGlenn Barry #define KRB5_NT_MS_PRINCIPAL            -128
325ba7b222eSGlenn Barry /* NT 4 style name */
326ba7b222eSGlenn Barry #define KRB5_NT_MS_PRINCIPAL_AND_ID     -129
327ba7b222eSGlenn Barry /* NT 4 style name and SID */
328ba7b222eSGlenn Barry #define KRB5_NT_ENT_PRINCIPAL_AND_ID    -130
3297c478bd9Sstevel@tonic-gate 
3307c478bd9Sstevel@tonic-gate /* constant version thereof: */
331505d05c7Sgtb typedef const krb5_principal_data *krb5_const_principal;
3327c478bd9Sstevel@tonic-gate 
3337c478bd9Sstevel@tonic-gate #define krb5_princ_realm(context, princ) (&(princ)->realm)
3347c478bd9Sstevel@tonic-gate #define krb5_princ_set_realm(context, princ,value) ((princ)->realm = *(value))
3357c478bd9Sstevel@tonic-gate #define krb5_princ_set_realm_length(context, princ,value) (princ)->realm.length = (value)
3367c478bd9Sstevel@tonic-gate #define krb5_princ_set_realm_data(context, princ,value) (princ)->realm.data = (value)
3377c478bd9Sstevel@tonic-gate #define	krb5_princ_size(context, princ) (princ)->length
3387c478bd9Sstevel@tonic-gate #define	krb5_princ_type(context, princ) (princ)->type
3397c478bd9Sstevel@tonic-gate #define	krb5_princ_name(context, princ) (princ)->data
3407c478bd9Sstevel@tonic-gate #define	krb5_princ_component(context, princ,i)		\
341505d05c7Sgtb 	    (((i) < krb5_princ_size(context, princ))	\
342505d05c7Sgtb 	     ? (princ)->data + (i)			\
343505d05c7Sgtb 	     : NULL)
3447c478bd9Sstevel@tonic-gate 
3457c478bd9Sstevel@tonic-gate /*
346fe598cdcSmp153739  * Constants for realm referrals.
347fe598cdcSmp153739  */
348fe598cdcSmp153739 #define        KRB5_REFERRAL_REALM	""
349fe598cdcSmp153739 
350fe598cdcSmp153739 /*
351fe598cdcSmp153739  * Referral-specific functions.
352fe598cdcSmp153739  */
353fe598cdcSmp153739 krb5_boolean KRB5_CALLCONV krb5_is_referral_realm(const krb5_data *);
354fe598cdcSmp153739 
355fe598cdcSmp153739 /*
3567c478bd9Sstevel@tonic-gate  * end "base-defs.h"
3577c478bd9Sstevel@tonic-gate  */
3587c478bd9Sstevel@tonic-gate 
3597c478bd9Sstevel@tonic-gate /*
3607c478bd9Sstevel@tonic-gate  * begin "hostaddr.h"
3617c478bd9Sstevel@tonic-gate  */
3627c478bd9Sstevel@tonic-gate 
3637c478bd9Sstevel@tonic-gate /* structure for address */
3647c478bd9Sstevel@tonic-gate typedef struct _krb5_address {
3657c478bd9Sstevel@tonic-gate     krb5_magic magic;
3667c478bd9Sstevel@tonic-gate     krb5_addrtype addrtype;
3677c478bd9Sstevel@tonic-gate     unsigned int length;
3687c478bd9Sstevel@tonic-gate     krb5_octet *contents;
3697c478bd9Sstevel@tonic-gate } krb5_address;
3707c478bd9Sstevel@tonic-gate 
3717c478bd9Sstevel@tonic-gate /* per Kerberos v5 protocol spec */
3727c478bd9Sstevel@tonic-gate #define	ADDRTYPE_INET		0x0002
3737c478bd9Sstevel@tonic-gate #define	ADDRTYPE_CHAOS		0x0005
3747c478bd9Sstevel@tonic-gate #define	ADDRTYPE_XNS		0x0006
3757c478bd9Sstevel@tonic-gate #define	ADDRTYPE_ISO		0x0007
3767c478bd9Sstevel@tonic-gate #define ADDRTYPE_DDP		0x0010
3777c478bd9Sstevel@tonic-gate #define ADDRTYPE_INET6		0x0018
3787c478bd9Sstevel@tonic-gate /* not yet in the spec... */
3797c478bd9Sstevel@tonic-gate #define ADDRTYPE_ADDRPORT	0x0100
3807c478bd9Sstevel@tonic-gate #define ADDRTYPE_IPPORT		0x0101
3817c478bd9Sstevel@tonic-gate 
3827c478bd9Sstevel@tonic-gate /* macros to determine if a type is a local type */
3837c478bd9Sstevel@tonic-gate #define ADDRTYPE_IS_LOCAL(addrtype) (addrtype & 0x8000)
3847c478bd9Sstevel@tonic-gate 
3857c478bd9Sstevel@tonic-gate /*
3867c478bd9Sstevel@tonic-gate  * end "hostaddr.h"
3877c478bd9Sstevel@tonic-gate  */
3887c478bd9Sstevel@tonic-gate 
3897c478bd9Sstevel@tonic-gate 
3907c478bd9Sstevel@tonic-gate struct _krb5_context;
3917c478bd9Sstevel@tonic-gate typedef struct _krb5_context * krb5_context;
3927c478bd9Sstevel@tonic-gate 
3937c478bd9Sstevel@tonic-gate struct _krb5_auth_context;
3947c478bd9Sstevel@tonic-gate typedef struct _krb5_auth_context * krb5_auth_context;
3957c478bd9Sstevel@tonic-gate 
3967c478bd9Sstevel@tonic-gate struct _krb5_cryptosystem_entry;
3977c478bd9Sstevel@tonic-gate 
398505d05c7Sgtb /* SUNW EF (I assume) crypto mods ... */
3997c478bd9Sstevel@tonic-gate struct _krb5_keyblock;
4007c478bd9Sstevel@tonic-gate 
4017c478bd9Sstevel@tonic-gate /*
4027c478bd9Sstevel@tonic-gate  * keyblocks will contain a list of derived keys,
4037c478bd9Sstevel@tonic-gate  * this  structure will contain the derived key data.
4047c478bd9Sstevel@tonic-gate  */
4057c478bd9Sstevel@tonic-gate typedef struct _dk_node {
4067c478bd9Sstevel@tonic-gate     krb5_keyusage   usage;
4077c478bd9Sstevel@tonic-gate     struct _krb5_keyblock   *derived_key;
4087c478bd9Sstevel@tonic-gate     uchar_t         dkid; /* derived key identifier byte */
4097c478bd9Sstevel@tonic-gate     struct _dk_node *next;
4107c478bd9Sstevel@tonic-gate } krb5_dk_node;
4117c478bd9Sstevel@tonic-gate 
4127c478bd9Sstevel@tonic-gate /*
4137c478bd9Sstevel@tonic-gate  * begin "encryption.h"
4147c478bd9Sstevel@tonic-gate  */
415159d09a2SMark Phalan 
4167c478bd9Sstevel@tonic-gate typedef struct _krb5_keyblock {
4177c478bd9Sstevel@tonic-gate     krb5_magic magic;
4187c478bd9Sstevel@tonic-gate     krb5_enctype enctype;
4197c478bd9Sstevel@tonic-gate     unsigned int length;
4207c478bd9Sstevel@tonic-gate     krb5_octet *contents;
4217c478bd9Sstevel@tonic-gate     krb5_dk_node   *dk_list; /* list of keys derived from this key */
4227c478bd9Sstevel@tonic-gate #ifdef _KERNEL
4237c478bd9Sstevel@tonic-gate     crypto_mech_type_t     kef_mt;
4247c478bd9Sstevel@tonic-gate     crypto_key_t           kef_key;
4257c478bd9Sstevel@tonic-gate     crypto_ctx_template_t  key_tmpl;
4267c478bd9Sstevel@tonic-gate #else
4277c478bd9Sstevel@tonic-gate     CK_OBJECT_HANDLE       hKey; /* PKCS#11 key object handle */
4287c478bd9Sstevel@tonic-gate     pid_t	pid; /* fork safety */
4297c478bd9Sstevel@tonic-gate #endif /* _KERNEL */
4307c478bd9Sstevel@tonic-gate } krb5_keyblock;
4317c478bd9Sstevel@tonic-gate 
4327c478bd9Sstevel@tonic-gate typedef struct _krb5_checksum {
4337c478bd9Sstevel@tonic-gate     krb5_magic magic;
4347c478bd9Sstevel@tonic-gate     krb5_cksumtype checksum_type;	/* checksum type */
4357c478bd9Sstevel@tonic-gate     unsigned int length;
4367c478bd9Sstevel@tonic-gate     krb5_octet *contents;
4377c478bd9Sstevel@tonic-gate } krb5_checksum;
4387c478bd9Sstevel@tonic-gate 
4397c478bd9Sstevel@tonic-gate typedef struct _krb5_encrypt_block {
4407c478bd9Sstevel@tonic-gate     krb5_magic magic;
4417c478bd9Sstevel@tonic-gate     krb5_enctype crypto_entry;		/* to call krb5_encrypt_size, you need
4427c478bd9Sstevel@tonic-gate 					   this.  it was a pointer, but it
4437c478bd9Sstevel@tonic-gate 					   doesn't have to be.  gross. */
4447c478bd9Sstevel@tonic-gate     krb5_keyblock *key;
4457c478bd9Sstevel@tonic-gate } krb5_encrypt_block;
4467c478bd9Sstevel@tonic-gate 
4477c478bd9Sstevel@tonic-gate typedef struct _krb5_enc_data {
4487c478bd9Sstevel@tonic-gate     krb5_magic magic;
4497c478bd9Sstevel@tonic-gate     krb5_enctype enctype;
4507c478bd9Sstevel@tonic-gate     krb5_kvno kvno;
4517c478bd9Sstevel@tonic-gate     krb5_data ciphertext;
4527c478bd9Sstevel@tonic-gate } krb5_enc_data;
4537c478bd9Sstevel@tonic-gate 
4547c478bd9Sstevel@tonic-gate /* per Kerberos v5 protocol spec */
4557c478bd9Sstevel@tonic-gate #define	ENCTYPE_NULL		0x0000
4567c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_CRC	0x0001	/* DES cbc mode with CRC-32 */
4577c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_MD4	0x0002	/* DES cbc mode with RSA-MD4 */
4587c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_MD5	0x0003	/* DES cbc mode with RSA-MD5 */
4597c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES_CBC_RAW	0x0004	/* DES cbc mode raw */
4607c478bd9Sstevel@tonic-gate /* XXX deprecated? */
4617c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES3_CBC_SHA	0x0005	/* DES-3 cbc mode with NIST-SHA */
4627c478bd9Sstevel@tonic-gate #define	ENCTYPE_DES3_CBC_RAW	0x0006	/* DES-3 cbc mode raw */
4637c478bd9Sstevel@tonic-gate #define ENCTYPE_DES_HMAC_SHA1	0x0008
4647c478bd9Sstevel@tonic-gate #define ENCTYPE_DES3_CBC_SHA1	0x0010
4657c478bd9Sstevel@tonic-gate #define ENCTYPE_AES128_CTS_HMAC_SHA1_96	0x0011
4667c478bd9Sstevel@tonic-gate #define ENCTYPE_AES256_CTS_HMAC_SHA1_96	0x0012
4677c478bd9Sstevel@tonic-gate #define ENCTYPE_ARCFOUR_HMAC	0x0017
4687c478bd9Sstevel@tonic-gate #define ENCTYPE_ARCFOUR_HMAC_EXP 0x0018
4697c478bd9Sstevel@tonic-gate #define ENCTYPE_UNKNOWN		0x01ff
4707c478bd9Sstevel@tonic-gate 
4717c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_CRC32		0x0001
4727c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD4	0x0002
4737c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD4_DES	0x0003
4747c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_DESCBC	0x0004
4757c478bd9Sstevel@tonic-gate /* des-mac-k */
4767c478bd9Sstevel@tonic-gate /* rsa-md4-des-k */
4777c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD5	0x0007
4787c478bd9Sstevel@tonic-gate #define	CKSUMTYPE_RSA_MD5_DES	0x0008
4797c478bd9Sstevel@tonic-gate #define CKSUMTYPE_NIST_SHA	0x0009
4807c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_SHA1_DES3	0x000c
4817c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_SHA1_96_AES128	0x000f
4827c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_SHA1_96_AES256	0x0010
4837c478bd9Sstevel@tonic-gate #define CKSUMTYPE_HMAC_MD5_ARCFOUR -138 /*Microsoft md5 hmac cksumtype*/
4847c478bd9Sstevel@tonic-gate 
485505d05c7Sgtb /* The following are entropy source designations. Whenever
486505d05c7Sgtb  * krb5_C_random_add_entropy is called, one of these source  ids is passed
487505d05c7Sgtb  * in.  This  allows the library  to better estimate bits of
488505d05c7Sgtb  * entropy in the sample and to keep track of what sources of entropy have
489505d05c7Sgtb  * contributed enough entropy.  Sources marked internal MUST NOT be
490505d05c7Sgtb  * used by applications outside the Kerberos library
491505d05c7Sgtb */
492505d05c7Sgtb 
493505d05c7Sgtb enum {
494505d05c7Sgtb   KRB5_C_RANDSOURCE_OLDAPI = 0, /*calls to krb5_C_RANDOM_SEED (INTERNAL)*/
495505d05c7Sgtb   KRB5_C_RANDSOURCE_OSRAND = 1, /* /dev/random or equivalent (internal)*/
496505d05c7Sgtb   KRB5_C_RANDSOURCE_TRUSTEDPARTY = 2, /* From KDC or other trusted party*/
497505d05c7Sgtb   /*This source should be used carefully; data in this category
498505d05c7Sgtb    * should be from a third party trusted to give random bits
499505d05c7Sgtb    * For example keys issued by the KDC in the application server.
500505d05c7Sgtb    */
501505d05c7Sgtb   KRB5_C_RANDSOURCE_TIMING = 3, /* Timing of operations*/
502505d05c7Sgtb   KRB5_C_RANDSOURCE_EXTERNAL_PROTOCOL = 4, /*Protocol data possibly from attacker*/
503505d05c7Sgtb   KRB5_C_RANDSOURCE_MAX = 5 /*Do not use; maximum source ID*/
504505d05c7Sgtb };
5057c478bd9Sstevel@tonic-gate 
5067c478bd9Sstevel@tonic-gate #ifndef krb5_roundup
5077c478bd9Sstevel@tonic-gate /* round x up to nearest multiple of y */
5087c478bd9Sstevel@tonic-gate #define krb5_roundup(x, y) ((((x) + (y) - 1)/(y))*(y))
5097c478bd9Sstevel@tonic-gate #endif /* roundup */
5107c478bd9Sstevel@tonic-gate 
5117c478bd9Sstevel@tonic-gate /* macro function definitions to help clean up code */
5127c478bd9Sstevel@tonic-gate 
5137c478bd9Sstevel@tonic-gate #ifndef _KERNEL
5147c478bd9Sstevel@tonic-gate #define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
5157c478bd9Sstevel@tonic-gate #define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
5167c478bd9Sstevel@tonic-gate #else
5177c478bd9Sstevel@tonic-gate #define krb5_x(ptr,args) ((*(ptr)) args)
5187c478bd9Sstevel@tonic-gate #define krb5_xc(ptr,args) ((*(ptr)) args)
5197c478bd9Sstevel@tonic-gate #endif
5207c478bd9Sstevel@tonic-gate 
5217c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5227c478bd9Sstevel@tonic-gate     krb5_c_encrypt
523159d09a2SMark Phalan     (krb5_context context, const krb5_keyblock *key,
524159d09a2SMark Phalan 		    krb5_keyusage usage, const krb5_data *cipher_state,
525505d05c7Sgtb 		    const krb5_data *input, krb5_enc_data *output);
5267c478bd9Sstevel@tonic-gate 
5277c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5287c478bd9Sstevel@tonic-gate     krb5_c_decrypt
529159d09a2SMark Phalan     (krb5_context context, const krb5_keyblock *key,
530159d09a2SMark Phalan 		    krb5_keyusage usage, const krb5_data *cipher_state,
531505d05c7Sgtb 		    const krb5_enc_data *input, krb5_data *output);
5327c478bd9Sstevel@tonic-gate 
5337c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5347c478bd9Sstevel@tonic-gate     krb5_c_encrypt_length
535505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
536505d05c7Sgtb 		    size_t inputlen, size_t *length);
5377c478bd9Sstevel@tonic-gate 
5387c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5397c478bd9Sstevel@tonic-gate     krb5_c_block_size
540505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
541505d05c7Sgtb 		    size_t *blocksize);
5427c478bd9Sstevel@tonic-gate 
5437c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
544159d09a2SMark Phalan     krb5_c_keylengths
545159d09a2SMark Phalan     (krb5_context context, krb5_enctype enctype,
546159d09a2SMark Phalan                     size_t *keybytes, size_t *keylength);
547159d09a2SMark Phalan 
548159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
5497c478bd9Sstevel@tonic-gate 	krb5_c_init_state(krb5_context,
5507c478bd9Sstevel@tonic-gate 		const krb5_keyblock *, krb5_keyusage,
5517c478bd9Sstevel@tonic-gate 		krb5_data *);
5527c478bd9Sstevel@tonic-gate 
5537c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5547c478bd9Sstevel@tonic-gate 	krb5_c_free_state(krb5_context,
5557c478bd9Sstevel@tonic-gate 		const krb5_keyblock *, krb5_data *);
5567c478bd9Sstevel@tonic-gate 
5577c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5587c478bd9Sstevel@tonic-gate     krb5_c_make_random_key
559505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
560505d05c7Sgtb 		    krb5_keyblock *random_key);
561505d05c7Sgtb 
562159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
563159d09a2SMark Phalan     krb5_c_random_to_key
564159d09a2SMark Phalan     (krb5_context context, krb5_enctype enctype,
565159d09a2SMark Phalan                     krb5_data *random_data, krb5_keyblock *k5_random_key);
566159d09a2SMark Phalan 
567505d05c7Sgtb /* Register a new entropy sample  with the PRNG. may cause
568505d05c7Sgtb * the PRNG to be reseeded, although this is not guaranteed.  See previous randsource definitions
569505d05c7Sgtb * for information on how each source should be used.
570505d05c7Sgtb */
571505d05c7Sgtb krb5_error_code KRB5_CALLCONV
572505d05c7Sgtb         krb5_c_random_add_entropy
573505d05c7Sgtb (krb5_context context, unsigned int  randsource_id, const krb5_data *data);
5747c478bd9Sstevel@tonic-gate 
5757c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5767c478bd9Sstevel@tonic-gate     krb5_c_random_make_octets
577505d05c7Sgtb     (krb5_context context, krb5_data *data);
5787c478bd9Sstevel@tonic-gate 
579505d05c7Sgtb /*
580505d05c7Sgtb * Collect entropy from the OS if possible. strong requests that as strong
581505d05c7Sgtb * of a source of entropy  as available be used.  Setting strong may
582505d05c7Sgtb * increase the probability of blocking and should not  be used for normal
583505d05c7Sgtb * applications.  Good uses include seeding the PRNG for kadmind
584505d05c7Sgtb * and realm setup.
585505d05c7Sgtb * If successful is non-null, then successful is set to 1 if the OS provided
586505d05c7Sgtb * entropy else zero.
587505d05c7Sgtb */
588505d05c7Sgtb #if 0 /* SUNW14resync - not used in Solaris */
5897c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
590505d05c7Sgtb krb5_c_random_os_entropy
591505d05c7Sgtb (krb5_context context, int strong, int *success);
592505d05c7Sgtb #endif
593505d05c7Sgtb 
594505d05c7Sgtb /*deprecated*/ krb5_error_code KRB5_CALLCONV
5957c478bd9Sstevel@tonic-gate     krb5_c_random_seed
596505d05c7Sgtb     (krb5_context context, krb5_data *data);
5977c478bd9Sstevel@tonic-gate 
5987c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
5997c478bd9Sstevel@tonic-gate     krb5_c_string_to_key
600505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
601505d05c7Sgtb 		    const krb5_data *string, const krb5_data *salt,
602505d05c7Sgtb 		    krb5_keyblock *key);
6037c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6047c478bd9Sstevel@tonic-gate krb5_c_string_to_key_with_params(krb5_context context,
6057c478bd9Sstevel@tonic-gate 				 krb5_enctype enctype,
6067c478bd9Sstevel@tonic-gate 				 const krb5_data *string,
6077c478bd9Sstevel@tonic-gate 				 const krb5_data *salt,
6087c478bd9Sstevel@tonic-gate 				 const krb5_data *params,
6097c478bd9Sstevel@tonic-gate 				 krb5_keyblock *key);
6107c478bd9Sstevel@tonic-gate 
6117c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6127c478bd9Sstevel@tonic-gate     krb5_c_enctype_compare
613505d05c7Sgtb     (krb5_context context, krb5_enctype e1, krb5_enctype e2,
614505d05c7Sgtb 		    krb5_boolean *similar);
6157c478bd9Sstevel@tonic-gate 
6167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6177c478bd9Sstevel@tonic-gate     krb5_c_make_checksum
618505d05c7Sgtb     (krb5_context context, krb5_cksumtype cksumtype,
619505d05c7Sgtb 		    const krb5_keyblock *key, krb5_keyusage usage,
620505d05c7Sgtb 		    const krb5_data *input, krb5_checksum *cksum);
6217c478bd9Sstevel@tonic-gate 
6227c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6237c478bd9Sstevel@tonic-gate     krb5_c_verify_checksum
624505d05c7Sgtb     (krb5_context context,
625505d05c7Sgtb 		    const krb5_keyblock *key, krb5_keyusage usage,
626505d05c7Sgtb 		    const krb5_data *data,
627505d05c7Sgtb 		    const krb5_checksum *cksum,
628505d05c7Sgtb 		    krb5_boolean *valid);
6297c478bd9Sstevel@tonic-gate 
6307c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6317c478bd9Sstevel@tonic-gate     krb5_c_checksum_length
632505d05c7Sgtb     (krb5_context context, krb5_cksumtype cksumtype,
633505d05c7Sgtb 		    size_t *length);
6347c478bd9Sstevel@tonic-gate 
6357c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
6367c478bd9Sstevel@tonic-gate     krb5_c_keyed_checksum_types
637505d05c7Sgtb     (krb5_context context, krb5_enctype enctype,
638505d05c7Sgtb 		    unsigned int *count, krb5_cksumtype **cksumtypes);
6397c478bd9Sstevel@tonic-gate 
6407c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AS_REQ_PA_ENC_TS		1
6417c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KDC_REP_TICKET		2
6427c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AS_REP_ENCPART		3
6437c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AD_SESSKEY	4
6447c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AD_SUBKEY		5
6457c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AUTH_CKSUM	6
6467c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REQ_AUTH		7
6477c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REP_ENCPART_SESSKEY	8
6487c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_TGS_REP_ENCPART_SUBKEY	9
6497c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AP_REQ_AUTH_CKSUM		10
6507c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AP_REQ_AUTH		11
6517c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AP_REP_ENCPART		12
6527c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_PRIV_ENCPART		13
6537c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_CRED_ENCPART		14
6547c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_SAFE_CKSUM		15
6557c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_APP_DATA_ENCRYPT		16
6567c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_APP_DATA_CKSUM		17
6577c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_KRB_ERROR_CKSUM		18
6587c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AD_KDCISSUED_CKSUM	19
6597c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AD_MTE			20
6607c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_AD_ITE			21
6617c478bd9Sstevel@tonic-gate 
6627c478bd9Sstevel@tonic-gate /* XXX need to register these */
6637c478bd9Sstevel@tonic-gate 
6647c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_GSS_TOK_MIC		22
6657c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_GSS_TOK_WRAP_INTEG	23
6667c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_GSS_TOK_WRAP_PRIV		24
6677c478bd9Sstevel@tonic-gate 
6687c478bd9Sstevel@tonic-gate /* Defined in hardware preauth draft */
6697c478bd9Sstevel@tonic-gate 
6707c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_PA_SAM_CHALLENGE_CKSUM	25
6717c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_PA_SAM_CHALLENGE_TRACKID	26
6727c478bd9Sstevel@tonic-gate #define KRB5_KEYUSAGE_PA_SAM_RESPONSE		27
6737c478bd9Sstevel@tonic-gate 
674fe598cdcSmp153739 /* Defined in KDC referrals draft */
675fe598cdcSmp153739 #define KRB5_KEYUSAGE_PA_REFERRAL		26 /* XXX note conflict with above */
676fe598cdcSmp153739 
6777c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_valid_enctype
6787c478bd9Sstevel@tonic-gate 	(krb5_enctype ktype);
6797c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_valid_cksumtype
6807c478bd9Sstevel@tonic-gate 	(krb5_cksumtype ctype);
6817c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_is_coll_proof_cksum
682505d05c7Sgtb 	(krb5_cksumtype ctype);
6837c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_c_is_keyed_cksum
684505d05c7Sgtb 	(krb5_cksumtype ctype);
6857c478bd9Sstevel@tonic-gate 
686505d05c7Sgtb #if KRB5_PRIVATE
687505d05c7Sgtb /* Use the above four instead.  */
688505d05c7Sgtb krb5_boolean KRB5_CALLCONV valid_enctype
689505d05c7Sgtb 	(krb5_enctype ktype);
690505d05c7Sgtb krb5_boolean KRB5_CALLCONV valid_cksumtype
691505d05c7Sgtb 	(krb5_cksumtype ctype);
692505d05c7Sgtb krb5_boolean KRB5_CALLCONV is_coll_proof_cksum
693505d05c7Sgtb 	(krb5_cksumtype ctype);
694505d05c7Sgtb krb5_boolean KRB5_CALLCONV is_keyed_cksum
695505d05c7Sgtb 	(krb5_cksumtype ctype);
696505d05c7Sgtb #endif
697505d05c7Sgtb 
69810db1377Sgtb #ifdef KRB5_OLD_CRYPTO
69910db1377Sgtb /*
70010db1377Sgtb  * old cryptosystem routine prototypes.  These are now layered
70110db1377Sgtb  * on top of the functions above.
70210db1377Sgtb  */
703159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_encrypt
704159d09a2SMark Phalan 	(krb5_context context,
705159d09a2SMark Phalan 		krb5_const_pointer inptr,
706159d09a2SMark Phalan 		krb5_pointer outptr,
707159d09a2SMark Phalan 		size_t size,
708159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
709159d09a2SMark Phalan 		krb5_pointer ivec);
710159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_decrypt
711159d09a2SMark Phalan 	(krb5_context context,
712159d09a2SMark Phalan 		krb5_const_pointer inptr,
713159d09a2SMark Phalan 		krb5_pointer outptr,
714159d09a2SMark Phalan 		size_t size,
715159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
716159d09a2SMark Phalan 		krb5_pointer ivec);
717159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_process_key
71810db1377Sgtb 	(krb5_context context,
71910db1377Sgtb 		krb5_encrypt_block * eblock,
720159d09a2SMark Phalan 		const krb5_keyblock * key);
721159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_finish_key
722159d09a2SMark Phalan 	(krb5_context context,
723159d09a2SMark Phalan 		krb5_encrypt_block * eblock);
72410db1377Sgtb krb5_error_code KRB5_CALLCONV krb5_string_to_key
72510db1377Sgtb 	(krb5_context context,
72610db1377Sgtb 		const krb5_encrypt_block * eblock,
72710db1377Sgtb 		krb5_keyblock * keyblock,
72810db1377Sgtb 		const krb5_data * data,
72910db1377Sgtb 		const krb5_data * salt);
730159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_init_random_key
731159d09a2SMark Phalan 	(krb5_context context,
732159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
733159d09a2SMark Phalan 		const krb5_keyblock * keyblock,
734159d09a2SMark Phalan 		krb5_pointer * ptr);
735159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_finish_random_key
736159d09a2SMark Phalan 	(krb5_context context,
737159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
738159d09a2SMark Phalan 		krb5_pointer * ptr);
739159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_random_key
740159d09a2SMark Phalan 	(krb5_context context,
741159d09a2SMark Phalan 		const krb5_encrypt_block * eblock,
742159d09a2SMark Phalan 		krb5_pointer ptr,
743159d09a2SMark Phalan 		krb5_keyblock ** keyblock);
744159d09a2SMark Phalan krb5_enctype KRB5_CALLCONV krb5_eblock_enctype
745159d09a2SMark Phalan 	(krb5_context context,
746159d09a2SMark Phalan 		const krb5_encrypt_block * eblock);
747159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_use_enctype
748159d09a2SMark Phalan 	(krb5_context context,
749159d09a2SMark Phalan 		krb5_encrypt_block * eblock,
750159d09a2SMark Phalan 		krb5_enctype enctype);
751159d09a2SMark Phalan size_t KRB5_CALLCONV krb5_encrypt_size
752159d09a2SMark Phalan 	(size_t length,
753159d09a2SMark Phalan 		krb5_enctype crypto);
75410db1377Sgtb size_t KRB5_CALLCONV krb5_checksum_size
75510db1377Sgtb 	(krb5_context context,
75610db1377Sgtb 		krb5_cksumtype ctype);
757159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_calculate_checksum
758159d09a2SMark Phalan 	(krb5_context context,
759159d09a2SMark Phalan 		krb5_cksumtype ctype,
760159d09a2SMark Phalan 		krb5_const_pointer in, size_t in_length,
761159d09a2SMark Phalan 		krb5_const_pointer seed, size_t seed_length,
762159d09a2SMark Phalan 		krb5_checksum * outcksum);
763159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_verify_checksum
764159d09a2SMark Phalan 	(krb5_context context,
765159d09a2SMark Phalan 		krb5_cksumtype ctype,
766159d09a2SMark Phalan 		const krb5_checksum * cksum,
767159d09a2SMark Phalan 		krb5_const_pointer in, size_t in_length,
768159d09a2SMark Phalan 		krb5_const_pointer seed, size_t seed_length);
769159d09a2SMark Phalan 
770159d09a2SMark Phalan #if KRB5_PRIVATE
771159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV krb5_random_confounder
772159d09a2SMark Phalan 	(size_t, krb5_pointer);
773159d09a2SMark Phalan 
774159d09a2SMark Phalan krb5_error_code krb5_encrypt_data
775159d09a2SMark Phalan 	(krb5_context context, krb5_keyblock *key,
776159d09a2SMark Phalan 		krb5_pointer ivec, krb5_data *data,
777159d09a2SMark Phalan 		krb5_enc_data *enc_data);
778159d09a2SMark Phalan 
779159d09a2SMark Phalan krb5_error_code krb5_decrypt_data
780159d09a2SMark Phalan 	(krb5_context context, krb5_keyblock *key,
781159d09a2SMark Phalan 		krb5_pointer ivec, krb5_enc_data *data,
782159d09a2SMark Phalan 		krb5_data *enc_data);
783159d09a2SMark Phalan #endif
784159d09a2SMark Phalan 
78510db1377Sgtb #endif /* KRB5_OLD_CRYPTO */
7867c478bd9Sstevel@tonic-gate 
7877c478bd9Sstevel@tonic-gate /*
7887c478bd9Sstevel@tonic-gate  * end "encryption.h"
7897c478bd9Sstevel@tonic-gate  */
7907c478bd9Sstevel@tonic-gate 
7917c478bd9Sstevel@tonic-gate /*
7927c478bd9Sstevel@tonic-gate  * begin "fieldbits.h"
7937c478bd9Sstevel@tonic-gate  */
7947c478bd9Sstevel@tonic-gate 
7957c478bd9Sstevel@tonic-gate /* kdc_options for kdc_request */
7967c478bd9Sstevel@tonic-gate /* options is 32 bits; each host is responsible to put the 4 bytes
7977c478bd9Sstevel@tonic-gate    representing these bits into net order before transmission */
7987c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x80000000 */
7997c478bd9Sstevel@tonic-gate #define	KDC_OPT_FORWARDABLE		0x40000000
8007c478bd9Sstevel@tonic-gate #define	KDC_OPT_FORWARDED		0x20000000
8017c478bd9Sstevel@tonic-gate #define	KDC_OPT_PROXIABLE		0x10000000
8027c478bd9Sstevel@tonic-gate #define	KDC_OPT_PROXY			0x08000000
8037c478bd9Sstevel@tonic-gate #define	KDC_OPT_ALLOW_POSTDATE		0x04000000
8047c478bd9Sstevel@tonic-gate #define	KDC_OPT_POSTDATED		0x02000000
8057c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_UNUSED		0x01000000 */
8067c478bd9Sstevel@tonic-gate #define	KDC_OPT_RENEWABLE		0x00800000
8077c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_UNUSED		0x00400000 */
8087c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00200000 */
8097c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00100000 */
8107c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00080000 */
8117c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00040000 */
8127c478bd9Sstevel@tonic-gate #define	KDC_OPT_REQUEST_ANONYMOUS	0x00020000
813fe598cdcSmp153739 #define	KDC_OPT_CANONICALIZE		0x00010000
8147c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00008000 */
8157c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00004000 */
8167c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00002000 */
8177c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00001000 */
8187c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000800 */
8197c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000400 */
8207c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000200 */
8217c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000100 */
8227c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000080 */
8237c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_RESERVED	0x00000040 */
8247c478bd9Sstevel@tonic-gate #define	KDC_OPT_DISABLE_TRANSITED_CHECK	0x00000020
8257c478bd9Sstevel@tonic-gate #define	KDC_OPT_RENEWABLE_OK		0x00000010
8267c478bd9Sstevel@tonic-gate #define	KDC_OPT_ENC_TKT_IN_SKEY		0x00000008
8277c478bd9Sstevel@tonic-gate /* #define	KDC_OPT_UNUSED		0x00000004 */
8287c478bd9Sstevel@tonic-gate #define	KDC_OPT_RENEW			0x00000002
8297c478bd9Sstevel@tonic-gate #define	KDC_OPT_VALIDATE		0x00000001
8307c478bd9Sstevel@tonic-gate 
8317c478bd9Sstevel@tonic-gate /*
8327c478bd9Sstevel@tonic-gate  * Mask of ticket flags in the TGT which should be converted into KDC
8337c478bd9Sstevel@tonic-gate  * options when using the TGT to get derivitive tickets.
8347c478bd9Sstevel@tonic-gate  *
8357c478bd9Sstevel@tonic-gate  *  New mask = KDC_OPT_FORWARDABLE | KDC_OPT_PROXIABLE |
8367c478bd9Sstevel@tonic-gate  *	       KDC_OPT_ALLOW_POSTDATE | KDC_OPT_RENEWABLE
8377c478bd9Sstevel@tonic-gate  */
8387c478bd9Sstevel@tonic-gate #define KDC_TKT_COMMON_MASK		0x54800000
8397c478bd9Sstevel@tonic-gate 
8407c478bd9Sstevel@tonic-gate /* definitions for ap_options fields */
8417c478bd9Sstevel@tonic-gate /* ap_options are 32 bits; each host is responsible to put the 4 bytes
8427c478bd9Sstevel@tonic-gate    representing these bits into net order before transmission */
8437c478bd9Sstevel@tonic-gate #define	AP_OPTS_RESERVED		0x80000000
8447c478bd9Sstevel@tonic-gate #define	AP_OPTS_USE_SESSION_KEY		0x40000000
8457c478bd9Sstevel@tonic-gate #define	AP_OPTS_MUTUAL_REQUIRED		0x20000000
8467c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x10000000 */
8477c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x08000000 */
8487c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x04000000 */
8497c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x02000000 */
8507c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x01000000 */
8517c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00800000 */
8527c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00400000 */
8537c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00200000 */
8547c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00100000 */
8557c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00080000 */
8567c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00040000 */
8577c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00020000 */
8587c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00010000 */
8597c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00008000 */
8607c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00004000 */
8617c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00002000 */
8627c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00001000 */
8637c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000800 */
8647c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000400 */
8657c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000200 */
8667c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000100 */
8677c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000080 */
8687c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000040 */
8697c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000020 */
8707c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000010 */
8717c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000008 */
8727c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000004 */
8737c478bd9Sstevel@tonic-gate /* #define	AP_OPTS_RESERVED	0x00000002 */
8747c478bd9Sstevel@tonic-gate #define AP_OPTS_USE_SUBKEY	0x00000001
8757c478bd9Sstevel@tonic-gate 
8767c478bd9Sstevel@tonic-gate #define AP_OPTS_WIRE_MASK	0xfffffff0
8777c478bd9Sstevel@tonic-gate 
8787c478bd9Sstevel@tonic-gate /* definitions for ad_type fields. */
8797c478bd9Sstevel@tonic-gate #define	AD_TYPE_RESERVED	0x8000
8807c478bd9Sstevel@tonic-gate #define	AD_TYPE_EXTERNAL	0x4000
8817c478bd9Sstevel@tonic-gate #define	AD_TYPE_REGISTERED	0x2000
8827c478bd9Sstevel@tonic-gate 
8837c478bd9Sstevel@tonic-gate #define AD_TYPE_FIELD_TYPE_MASK	0x1fff
8847c478bd9Sstevel@tonic-gate 
8857c478bd9Sstevel@tonic-gate /* Ticket flags */
8867c478bd9Sstevel@tonic-gate /* flags are 32 bits; each host is responsible to put the 4 bytes
8877c478bd9Sstevel@tonic-gate    representing these bits into net order before transmission */
8887c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x80000000 */
8897c478bd9Sstevel@tonic-gate #define	TKT_FLG_FORWARDABLE		0x40000000
8907c478bd9Sstevel@tonic-gate #define	TKT_FLG_FORWARDED		0x20000000
8917c478bd9Sstevel@tonic-gate #define	TKT_FLG_PROXIABLE		0x10000000
8927c478bd9Sstevel@tonic-gate #define	TKT_FLG_PROXY			0x08000000
8937c478bd9Sstevel@tonic-gate #define	TKT_FLG_MAY_POSTDATE		0x04000000
8947c478bd9Sstevel@tonic-gate #define	TKT_FLG_POSTDATED		0x02000000
8957c478bd9Sstevel@tonic-gate #define	TKT_FLG_INVALID			0x01000000
8967c478bd9Sstevel@tonic-gate #define	TKT_FLG_RENEWABLE		0x00800000
8977c478bd9Sstevel@tonic-gate #define	TKT_FLG_INITIAL			0x00400000
8987c478bd9Sstevel@tonic-gate #define	TKT_FLG_PRE_AUTH		0x00200000
8997c478bd9Sstevel@tonic-gate #define	TKT_FLG_HW_AUTH			0x00100000
9007c478bd9Sstevel@tonic-gate #define	TKT_FLG_TRANSIT_POLICY_CHECKED	0x00080000
9017c478bd9Sstevel@tonic-gate #define	TKT_FLG_OK_AS_DELEGATE		0x00040000
9027c478bd9Sstevel@tonic-gate #define	TKT_FLG_ANONYMOUS		0x00020000
9037c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00010000 */
9047c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00008000 */
9057c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00004000 */
9067c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00002000 */
9077c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00001000 */
9087c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000800 */
9097c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000400 */
9107c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000200 */
9117c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000100 */
9127c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000080 */
9137c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000040 */
9147c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000020 */
9157c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000010 */
9167c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000008 */
9177c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000004 */
9187c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000002 */
9197c478bd9Sstevel@tonic-gate /* #define	TKT_FLG_RESERVED	0x00000001 */
9207c478bd9Sstevel@tonic-gate 
9217c478bd9Sstevel@tonic-gate /* definitions for lr_type fields. */
9227c478bd9Sstevel@tonic-gate #define	LR_TYPE_THIS_SERVER_ONLY	0x8000
9237c478bd9Sstevel@tonic-gate 
9247c478bd9Sstevel@tonic-gate #define LR_TYPE_INTERPRETATION_MASK	0x7fff
9257c478bd9Sstevel@tonic-gate 
9267c478bd9Sstevel@tonic-gate /* definitions for ad_type fields. */
9277c478bd9Sstevel@tonic-gate #define	AD_TYPE_EXTERNAL	0x4000
9287c478bd9Sstevel@tonic-gate #define	AD_TYPE_REGISTERED	0x2000
9297c478bd9Sstevel@tonic-gate 
9307c478bd9Sstevel@tonic-gate #define AD_TYPE_FIELD_TYPE_MASK	0x1fff
9317c478bd9Sstevel@tonic-gate #define AD_TYPE_INTERNAL_MASK	0x3fff
9327c478bd9Sstevel@tonic-gate 
9337c478bd9Sstevel@tonic-gate /* definitions for msec direction bit for KRB_SAFE, KRB_PRIV */
9347c478bd9Sstevel@tonic-gate #define	MSEC_DIRBIT		0x8000
9357c478bd9Sstevel@tonic-gate #define	MSEC_VAL_MASK		0x7fff
9367c478bd9Sstevel@tonic-gate 
9377c478bd9Sstevel@tonic-gate /*
9387c478bd9Sstevel@tonic-gate  * end "fieldbits.h"
9397c478bd9Sstevel@tonic-gate  */
9407c478bd9Sstevel@tonic-gate 
9417c478bd9Sstevel@tonic-gate /*
9427c478bd9Sstevel@tonic-gate  * begin "proto.h"
9437c478bd9Sstevel@tonic-gate  */
9447c478bd9Sstevel@tonic-gate 
9457c478bd9Sstevel@tonic-gate /* Protocol version number */
9467c478bd9Sstevel@tonic-gate #define	KRB5_PVNO	5
9477c478bd9Sstevel@tonic-gate 
9487c478bd9Sstevel@tonic-gate /* Message types */
9497c478bd9Sstevel@tonic-gate 
9507c478bd9Sstevel@tonic-gate #define	KRB5_AS_REQ	((krb5_msgtype)10) /* Req for initial authentication */
9517c478bd9Sstevel@tonic-gate #define	KRB5_AS_REP	((krb5_msgtype)11) /* Response to KRB_AS_REQ request */
9527c478bd9Sstevel@tonic-gate #define	KRB5_TGS_REQ	((krb5_msgtype)12) /* TGS request to server */
9537c478bd9Sstevel@tonic-gate #define	KRB5_TGS_REP	((krb5_msgtype)13) /* Response to KRB_TGS_REQ req */
9547c478bd9Sstevel@tonic-gate #define	KRB5_AP_REQ	((krb5_msgtype)14) /* application request to server */
9557c478bd9Sstevel@tonic-gate #define	KRB5_AP_REP	((krb5_msgtype)15) /* Response to KRB_AP_REQ_MUTUAL */
9567c478bd9Sstevel@tonic-gate #define	KRB5_SAFE	((krb5_msgtype)20) /* Safe application message */
9577c478bd9Sstevel@tonic-gate #define	KRB5_PRIV	((krb5_msgtype)21) /* Private application message */
9587c478bd9Sstevel@tonic-gate #define	KRB5_CRED	((krb5_msgtype)22) /* Credential forwarding message */
9597c478bd9Sstevel@tonic-gate #define	KRB5_ERROR	((krb5_msgtype)30) /* Error response */
9607c478bd9Sstevel@tonic-gate 
9617c478bd9Sstevel@tonic-gate /* LastReq types */
9627c478bd9Sstevel@tonic-gate #define KRB5_LRQ_NONE			0
9637c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ALL_LAST_TGT		1
9647c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ONE_LAST_TGT		(-1)
9657c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ALL_LAST_INITIAL	2
9667c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ONE_LAST_INITIAL	(-2)
9677c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ALL_LAST_TGT_ISSUED	3
9687c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ONE_LAST_TGT_ISSUED	(-3)
9697c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ALL_LAST_RENEWAL	4
9707c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ONE_LAST_RENEWAL	(-4)
9717c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ALL_LAST_REQ		5
9727c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ONE_LAST_REQ		(-5)
9737c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ALL_PW_EXPTIME		6
9747c478bd9Sstevel@tonic-gate #define KRB5_LRQ_ONE_PW_EXPTIME		(-6)
9757c478bd9Sstevel@tonic-gate 
9767c478bd9Sstevel@tonic-gate /* PADATA types */
9777c478bd9Sstevel@tonic-gate #define KRB5_PADATA_NONE		0
9787c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_AP_REQ		1
9797c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_TGS_REQ		KRB5_PADATA_AP_REQ
9807c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ENC_TIMESTAMP	2
9817c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_PW_SALT		3
9827c478bd9Sstevel@tonic-gate #if 0				/* Not used */
9837c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ENC_ENCKEY		4  /* Key encrypted within itself */
9847c478bd9Sstevel@tonic-gate #endif
9857c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ENC_UNIX_TIME	5  /* timestamp encrypted in key */
9867c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ENC_SANDIA_SECURID	6  /* SecurId passcode */
9877c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SESAME		7  /* Sesame project */
9887c478bd9Sstevel@tonic-gate #define KRB5_PADATA_OSF_DCE		8  /* OSF DCE */
9897c478bd9Sstevel@tonic-gate #define KRB5_CYBERSAFE_SECUREID		9  /* Cybersafe */
9907c478bd9Sstevel@tonic-gate #define	KRB5_PADATA_AFS3_SALT		10 /* Cygnus */
9917c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ETYPE_INFO		11 /* Etype info for preauth */
9927c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_CHALLENGE	12 /* draft challenge system */
9937c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_RESPONSE	13 /* draft challenge system response */
994159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REQ_OLD	14 /* PKINIT */
995159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REP_OLD	15 /* PKINIT */
996159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REQ		16 /* PKINIT */
997159d09a2SMark Phalan #define KRB5_PADATA_PK_AS_REP		17 /* PKINIT */
9987c478bd9Sstevel@tonic-gate #define KRB5_PADATA_ETYPE_INFO2 	19
999fe598cdcSmp153739 #define KRB5_PADATA_REFERRAL		25 /* draft referral system */
10007c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_CHALLENGE_2	30 /* draft challenge system, updated */
10017c478bd9Sstevel@tonic-gate #define KRB5_PADATA_SAM_RESPONSE_2	31 /* draft challenge system, updated */
10027c478bd9Sstevel@tonic-gate 
10037c478bd9Sstevel@tonic-gate #define	KRB5_SAM_USE_SAD_AS_KEY		0x80000000
10047c478bd9Sstevel@tonic-gate #define	KRB5_SAM_SEND_ENCRYPTED_SAD	0x40000000
10057c478bd9Sstevel@tonic-gate #define	KRB5_SAM_MUST_PK_ENCRYPT_SAD	0x20000000 /* currently must be zero */
10067c478bd9Sstevel@tonic-gate 
10077c478bd9Sstevel@tonic-gate /* Reserved for SPX pre-authentication. */
10087c478bd9Sstevel@tonic-gate #define KRB5_PADATA_DASS		16
10097c478bd9Sstevel@tonic-gate 
10107c478bd9Sstevel@tonic-gate /* Transited encoding types */
10117c478bd9Sstevel@tonic-gate #define	KRB5_DOMAIN_X500_COMPRESS	1
10127c478bd9Sstevel@tonic-gate 
10137c478bd9Sstevel@tonic-gate /* alternate authentication types */
10147c478bd9Sstevel@tonic-gate #define	KRB5_ALTAUTH_ATT_CHALLENGE_RESPONSE	64
10157c478bd9Sstevel@tonic-gate 
10167c478bd9Sstevel@tonic-gate /* authorization data types */
1017159d09a2SMark Phalan #define KRB5_AUTHDATA_IF_RELEVANT   1
1018159d09a2SMark Phalan #define KRB5_AUTHDATA_KDC_ISSUED    4
1019159d09a2SMark Phalan #define KRB5_AUTHDATA_AND_OR        5
1020159d09a2SMark Phalan #define KRB5_AUTHDATA_MANDATORY_FOR_KDC 8
1021159d09a2SMark Phalan #define KRB5_AUTHDATA_INITIAL_VERIFIED_CAS      9
10227c478bd9Sstevel@tonic-gate #define	KRB5_AUTHDATA_OSF_DCE	64
10237c478bd9Sstevel@tonic-gate #define KRB5_AUTHDATA_SESAME	65
1024ba7b222eSGlenn Barry #define KRB5_AUTHDATA_WIN2K_PAC 128
1025ba7b222eSGlenn Barry #define KRB5_AUTHDATA_ETYPE_NEGOTIATION 129     /* RFC 4537 */
1026ba7b222eSGlenn Barry #define KRB5_AUTHDATA_FX_ARMOR 71
10277c478bd9Sstevel@tonic-gate 
10287c478bd9Sstevel@tonic-gate /* password change constants */
10297c478bd9Sstevel@tonic-gate 
10307c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_SUCCESS		0
10317c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_MALFORMED		1
10327c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_HARDERROR		2
10337c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_AUTHERROR		3
10347c478bd9Sstevel@tonic-gate #define KRB5_KPASSWD_SOFTERROR		4
1035505d05c7Sgtb /* These are Microsoft's extensions in RFC 3244, and it looks like
1036505d05c7Sgtb    they'll become standardized, possibly with other additions.  */
1037505d05c7Sgtb #define KRB5_KPASSWD_ACCESSDENIED	5	/* unused */
1038505d05c7Sgtb #define KRB5_KPASSWD_BAD_VERSION	6
1039505d05c7Sgtb #define KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7	/* unused */
10407c478bd9Sstevel@tonic-gate 
10417c478bd9Sstevel@tonic-gate /*
10427c478bd9Sstevel@tonic-gate  * end "proto.h"
10437c478bd9Sstevel@tonic-gate  */
10447c478bd9Sstevel@tonic-gate 
10457c478bd9Sstevel@tonic-gate /* Time set */
10467c478bd9Sstevel@tonic-gate typedef struct _krb5_ticket_times {
10477c478bd9Sstevel@tonic-gate     krb5_timestamp authtime; /* XXX ? should ktime in KDC_REP == authtime
10487c478bd9Sstevel@tonic-gate 				in ticket? otherwise client can't get this */
10497c478bd9Sstevel@tonic-gate     krb5_timestamp starttime;		/* optional in ticket, if not present,
10507c478bd9Sstevel@tonic-gate 					   use authtime */
10517c478bd9Sstevel@tonic-gate     krb5_timestamp endtime;
10527c478bd9Sstevel@tonic-gate     krb5_timestamp renew_till;
10537c478bd9Sstevel@tonic-gate } krb5_ticket_times;
10547c478bd9Sstevel@tonic-gate 
10557c478bd9Sstevel@tonic-gate /* structure for auth data */
10567c478bd9Sstevel@tonic-gate typedef struct _krb5_authdata {
10577c478bd9Sstevel@tonic-gate     krb5_magic magic;
10587c478bd9Sstevel@tonic-gate     krb5_authdatatype ad_type;
10597c478bd9Sstevel@tonic-gate     unsigned int length;
10607c478bd9Sstevel@tonic-gate     krb5_octet *contents;
10617c478bd9Sstevel@tonic-gate } krb5_authdata;
10627c478bd9Sstevel@tonic-gate 
10637c478bd9Sstevel@tonic-gate /* structure for transited encoding */
10647c478bd9Sstevel@tonic-gate typedef struct _krb5_transited {
10657c478bd9Sstevel@tonic-gate     krb5_magic magic;
10667c478bd9Sstevel@tonic-gate     krb5_octet tr_type;
10677c478bd9Sstevel@tonic-gate     krb5_data tr_contents;
10687c478bd9Sstevel@tonic-gate } krb5_transited;
10697c478bd9Sstevel@tonic-gate 
10707c478bd9Sstevel@tonic-gate typedef struct _krb5_enc_tkt_part {
10717c478bd9Sstevel@tonic-gate     krb5_magic magic;
10727c478bd9Sstevel@tonic-gate     /* to-be-encrypted portion */
10737c478bd9Sstevel@tonic-gate     krb5_flags flags;			/* flags */
10747c478bd9Sstevel@tonic-gate     krb5_keyblock *session;		/* session key: includes enctype */
10757c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client name/realm */
10767c478bd9Sstevel@tonic-gate     krb5_transited transited;		/* list of transited realms */
10777c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* auth, start, end, renew_till */
10787c478bd9Sstevel@tonic-gate     krb5_address **caddrs;	/* array of ptrs to addresses */
10797c478bd9Sstevel@tonic-gate     krb5_authdata **authorization_data; /* auth data */
10807c478bd9Sstevel@tonic-gate } krb5_enc_tkt_part;
10817c478bd9Sstevel@tonic-gate 
10827c478bd9Sstevel@tonic-gate typedef struct _krb5_ticket {
10837c478bd9Sstevel@tonic-gate     krb5_magic magic;
10847c478bd9Sstevel@tonic-gate     /* cleartext portion */
10857c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server name/realm */
10867c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;		/* encryption type, kvno, encrypted
10877c478bd9Sstevel@tonic-gate 					   encoding */
10887c478bd9Sstevel@tonic-gate     krb5_enc_tkt_part *enc_part2;	/* ptr to decrypted version, if
10897c478bd9Sstevel@tonic-gate 					   available */
10907c478bd9Sstevel@tonic-gate } krb5_ticket;
10917c478bd9Sstevel@tonic-gate 
10927c478bd9Sstevel@tonic-gate /* the unencrypted version */
10937c478bd9Sstevel@tonic-gate typedef struct _krb5_authenticator {
10947c478bd9Sstevel@tonic-gate     krb5_magic magic;
10957c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client name/realm */
10967c478bd9Sstevel@tonic-gate     krb5_checksum *checksum;	/* checksum, includes type, optional */
10977c478bd9Sstevel@tonic-gate     krb5_int32 cusec;			/* client usec portion */
10987c478bd9Sstevel@tonic-gate     krb5_timestamp ctime;		/* client sec portion */
10997c478bd9Sstevel@tonic-gate     krb5_keyblock *subkey;		/* true session key, optional */
11007c478bd9Sstevel@tonic-gate     krb5_ui_4 seq_number;		/* sequence #, optional */
11017c478bd9Sstevel@tonic-gate     krb5_authdata **authorization_data; /* New add by Ari, auth data */
11027c478bd9Sstevel@tonic-gate } krb5_authenticator;
11037c478bd9Sstevel@tonic-gate 
11047c478bd9Sstevel@tonic-gate typedef struct _krb5_tkt_authent {
11057c478bd9Sstevel@tonic-gate     krb5_magic magic;
11067c478bd9Sstevel@tonic-gate     krb5_ticket *ticket;
11077c478bd9Sstevel@tonic-gate     krb5_authenticator *authenticator;
11087c478bd9Sstevel@tonic-gate     krb5_flags ap_options;
11097c478bd9Sstevel@tonic-gate } krb5_tkt_authent;
11107c478bd9Sstevel@tonic-gate 
11117c478bd9Sstevel@tonic-gate /* credentials:	 Ticket, session key, etc. */
11127c478bd9Sstevel@tonic-gate typedef struct _krb5_creds {
11137c478bd9Sstevel@tonic-gate     krb5_magic magic;
11147c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client's principal identifier */
11157c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server's principal identifier */
11167c478bd9Sstevel@tonic-gate     krb5_keyblock keyblock;		/* session encryption key info */
11177c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* lifetime info */
11187c478bd9Sstevel@tonic-gate     krb5_boolean is_skey;		/* true if ticket is encrypted in
11197c478bd9Sstevel@tonic-gate 					   another ticket's skey */
11207c478bd9Sstevel@tonic-gate     krb5_flags ticket_flags;		/* flags in ticket */
11217c478bd9Sstevel@tonic-gate     krb5_address * *addresses;	/* addrs in ticket */
11227c478bd9Sstevel@tonic-gate     krb5_data ticket;			/* ticket string itself */
11237c478bd9Sstevel@tonic-gate     krb5_data second_ticket;		/* second ticket, if related to
11247c478bd9Sstevel@tonic-gate 					   ticket (via DUPLICATE-SKEY or
11257c478bd9Sstevel@tonic-gate 					   ENC-TKT-IN-SKEY) */
11267c478bd9Sstevel@tonic-gate     krb5_authdata **authdata;	/* authorization data */
11277c478bd9Sstevel@tonic-gate } krb5_creds;
11287c478bd9Sstevel@tonic-gate 
11297c478bd9Sstevel@tonic-gate /* Last request fields */
11307c478bd9Sstevel@tonic-gate typedef struct _krb5_last_req_entry {
11317c478bd9Sstevel@tonic-gate     krb5_magic magic;
11327c478bd9Sstevel@tonic-gate     krb5_int32 lr_type;
11337c478bd9Sstevel@tonic-gate     krb5_timestamp value;
11347c478bd9Sstevel@tonic-gate } krb5_last_req_entry;
11357c478bd9Sstevel@tonic-gate 
11367c478bd9Sstevel@tonic-gate /* pre-authentication data */
11377c478bd9Sstevel@tonic-gate typedef struct _krb5_pa_data {
11387c478bd9Sstevel@tonic-gate     krb5_magic magic;
11397c478bd9Sstevel@tonic-gate     krb5_preauthtype  pa_type;
11407c478bd9Sstevel@tonic-gate     unsigned int length;
11417c478bd9Sstevel@tonic-gate     krb5_octet *contents;
11427c478bd9Sstevel@tonic-gate } krb5_pa_data;
11437c478bd9Sstevel@tonic-gate 
11447c478bd9Sstevel@tonic-gate typedef struct _krb5_kdc_req {
11457c478bd9Sstevel@tonic-gate     krb5_magic magic;
11467c478bd9Sstevel@tonic-gate     krb5_msgtype msg_type;		/* AS_REQ or TGS_REQ? */
11477c478bd9Sstevel@tonic-gate     krb5_pa_data **padata;	/* e.g. encoded AP_REQ */
11487c478bd9Sstevel@tonic-gate     /* real body */
11497c478bd9Sstevel@tonic-gate     krb5_flags kdc_options;		/* requested options */
11507c478bd9Sstevel@tonic-gate     krb5_principal client;		/* includes realm; optional */
11517c478bd9Sstevel@tonic-gate     krb5_principal server;		/* includes realm (only used if no
11527c478bd9Sstevel@tonic-gate 					   client) */
11537c478bd9Sstevel@tonic-gate     krb5_timestamp from;		/* requested starttime */
11547c478bd9Sstevel@tonic-gate     krb5_timestamp till;		/* requested endtime */
11557c478bd9Sstevel@tonic-gate     krb5_timestamp rtime;		/* (optional) requested renew_till */
11567c478bd9Sstevel@tonic-gate     krb5_int32 nonce;			/* nonce to match request/response */
11577c478bd9Sstevel@tonic-gate     int nktypes;			/* # of ktypes, must be positive */
11587c478bd9Sstevel@tonic-gate     krb5_enctype *ktype;		/* requested enctype(s) */
11597c478bd9Sstevel@tonic-gate     krb5_address **addresses;	/* requested addresses, optional */
11607c478bd9Sstevel@tonic-gate     krb5_enc_data authorization_data;	/* encrypted auth data; OPTIONAL */
11617c478bd9Sstevel@tonic-gate     krb5_authdata **unenc_authdata; /* unencrypted auth data,
11627c478bd9Sstevel@tonic-gate 					   if available */
11637c478bd9Sstevel@tonic-gate     krb5_ticket **second_ticket;/* second ticket array; OPTIONAL */
11647c478bd9Sstevel@tonic-gate } krb5_kdc_req;
11657c478bd9Sstevel@tonic-gate 
11667c478bd9Sstevel@tonic-gate typedef struct _krb5_enc_kdc_rep_part {
11677c478bd9Sstevel@tonic-gate     krb5_magic magic;
11687c478bd9Sstevel@tonic-gate     /* encrypted part: */
11697c478bd9Sstevel@tonic-gate     krb5_msgtype msg_type;		/* krb5 message type */
11707c478bd9Sstevel@tonic-gate     krb5_keyblock *session;		/* session key */
11717c478bd9Sstevel@tonic-gate     krb5_last_req_entry **last_req; /* array of ptrs to entries */
11727c478bd9Sstevel@tonic-gate     krb5_int32 nonce;			/* nonce from request */
11737c478bd9Sstevel@tonic-gate     krb5_timestamp key_exp;		/* expiration date */
11747c478bd9Sstevel@tonic-gate     krb5_flags flags;			/* ticket flags */
11757c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* lifetime info */
11767c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server's principal identifier */
11777c478bd9Sstevel@tonic-gate     krb5_address **caddrs;	/* array of ptrs to addresses,
11787c478bd9Sstevel@tonic-gate 					   optional */
1179ba7b222eSGlenn Barry     krb5_pa_data **enc_padata;          /* Windows 2000 compat */
11807c478bd9Sstevel@tonic-gate } krb5_enc_kdc_rep_part;
11817c478bd9Sstevel@tonic-gate 
11827c478bd9Sstevel@tonic-gate typedef struct _krb5_kdc_rep {
11837c478bd9Sstevel@tonic-gate     krb5_magic magic;
11847c478bd9Sstevel@tonic-gate     /* cleartext part: */
11857c478bd9Sstevel@tonic-gate     krb5_msgtype msg_type;		/* AS_REP or KDC_REP? */
11867c478bd9Sstevel@tonic-gate     krb5_pa_data **padata;	/* preauthentication data from KDC */
11877c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client's principal identifier */
11887c478bd9Sstevel@tonic-gate     krb5_ticket *ticket;		/* ticket */
11897c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;		/* encryption type, kvno, encrypted
11907c478bd9Sstevel@tonic-gate 					   encoding */
11917c478bd9Sstevel@tonic-gate     krb5_enc_kdc_rep_part *enc_part2;/* unencrypted version, if available */
11927c478bd9Sstevel@tonic-gate } krb5_kdc_rep;
11937c478bd9Sstevel@tonic-gate 
11947c478bd9Sstevel@tonic-gate /* error message structure */
11957c478bd9Sstevel@tonic-gate typedef struct _krb5_error {
11967c478bd9Sstevel@tonic-gate     krb5_magic magic;
11977c478bd9Sstevel@tonic-gate     /* some of these may be meaningless in certain contexts */
11987c478bd9Sstevel@tonic-gate     krb5_timestamp ctime;		/* client sec portion; optional */
11997c478bd9Sstevel@tonic-gate     krb5_int32 cusec;			/* client usec portion; optional */
12007c478bd9Sstevel@tonic-gate     krb5_int32 susec;			/* server usec portion */
12017c478bd9Sstevel@tonic-gate     krb5_timestamp stime;		/* server sec portion */
12027c478bd9Sstevel@tonic-gate     krb5_ui_4 error;			/* error code (protocol error #'s) */
12037c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client's principal identifier;
12047c478bd9Sstevel@tonic-gate 					   optional */
12057c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server's principal identifier */
12067c478bd9Sstevel@tonic-gate     krb5_data text;			/* descriptive text */
12077c478bd9Sstevel@tonic-gate     krb5_data e_data;			/* additional error-describing data */
12087c478bd9Sstevel@tonic-gate } krb5_error;
12097c478bd9Sstevel@tonic-gate 
12107c478bd9Sstevel@tonic-gate typedef struct _krb5_ap_req {
12117c478bd9Sstevel@tonic-gate     krb5_magic magic;
12127c478bd9Sstevel@tonic-gate     krb5_flags ap_options;		/* requested options */
12137c478bd9Sstevel@tonic-gate     krb5_ticket *ticket;		/* ticket */
12147c478bd9Sstevel@tonic-gate     krb5_enc_data authenticator;	/* authenticator (already encrypted) */
12157c478bd9Sstevel@tonic-gate } krb5_ap_req;
12167c478bd9Sstevel@tonic-gate 
12177c478bd9Sstevel@tonic-gate typedef struct _krb5_ap_rep {
12187c478bd9Sstevel@tonic-gate     krb5_magic magic;
12197c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;
12207c478bd9Sstevel@tonic-gate } krb5_ap_rep;
12217c478bd9Sstevel@tonic-gate 
12227c478bd9Sstevel@tonic-gate typedef struct _krb5_ap_rep_enc_part {
12237c478bd9Sstevel@tonic-gate     krb5_magic magic;
12247c478bd9Sstevel@tonic-gate     krb5_timestamp ctime;		/* client time, seconds portion */
12257c478bd9Sstevel@tonic-gate     krb5_int32 cusec;			/* client time, microseconds portion */
12267c478bd9Sstevel@tonic-gate     krb5_keyblock *subkey;		/* true session key, optional */
12277c478bd9Sstevel@tonic-gate     krb5_ui_4 seq_number;		/* sequence #, optional */
12287c478bd9Sstevel@tonic-gate } krb5_ap_rep_enc_part;
12297c478bd9Sstevel@tonic-gate 
12307c478bd9Sstevel@tonic-gate typedef struct _krb5_response {
12317c478bd9Sstevel@tonic-gate     krb5_magic magic;
12327c478bd9Sstevel@tonic-gate     krb5_octet message_type;
12337c478bd9Sstevel@tonic-gate     krb5_data response;
12347c478bd9Sstevel@tonic-gate     krb5_int32 expected_nonce;	/* The expected nonce for KDC_REP messages */
12357c478bd9Sstevel@tonic-gate     krb5_timestamp request_time;   /* When we made the request */
12367c478bd9Sstevel@tonic-gate } krb5_response;
12377c478bd9Sstevel@tonic-gate 
12387c478bd9Sstevel@tonic-gate typedef struct _krb5_cred_info {
12397c478bd9Sstevel@tonic-gate     krb5_magic magic;
12407c478bd9Sstevel@tonic-gate     krb5_keyblock *session;		/* session key used to encrypt */
12417c478bd9Sstevel@tonic-gate 					/* ticket */
12427c478bd9Sstevel@tonic-gate     krb5_principal client;		/* client name/realm, optional */
12437c478bd9Sstevel@tonic-gate     krb5_principal server;		/* server name/realm, optional */
12447c478bd9Sstevel@tonic-gate     krb5_flags flags;			/* ticket flags, optional */
12457c478bd9Sstevel@tonic-gate     krb5_ticket_times times;		/* auth, start, end, renew_till, */
12467c478bd9Sstevel@tonic-gate 					/* optional */
12477c478bd9Sstevel@tonic-gate     krb5_address **caddrs;	/* array of ptrs to addresses */
12487c478bd9Sstevel@tonic-gate } krb5_cred_info;
12497c478bd9Sstevel@tonic-gate 
12507c478bd9Sstevel@tonic-gate typedef struct _krb5_cred_enc_part {
12517c478bd9Sstevel@tonic-gate     krb5_magic magic;
12527c478bd9Sstevel@tonic-gate     krb5_int32 nonce;			/* nonce, optional */
12537c478bd9Sstevel@tonic-gate     krb5_timestamp timestamp;		/* client time */
12547c478bd9Sstevel@tonic-gate     krb5_int32 usec;			/* microsecond portion of time */
12557c478bd9Sstevel@tonic-gate     krb5_address *s_address;	/* sender address, optional */
12567c478bd9Sstevel@tonic-gate     krb5_address *r_address;	/* recipient address, optional */
12577c478bd9Sstevel@tonic-gate     krb5_cred_info **ticket_info;
12587c478bd9Sstevel@tonic-gate } krb5_cred_enc_part;
12597c478bd9Sstevel@tonic-gate 
12607c478bd9Sstevel@tonic-gate typedef struct _krb5_cred {
12617c478bd9Sstevel@tonic-gate     krb5_magic magic;
12627c478bd9Sstevel@tonic-gate     krb5_ticket **tickets;	/* tickets */
12637c478bd9Sstevel@tonic-gate     krb5_enc_data enc_part;		/* encrypted part */
12647c478bd9Sstevel@tonic-gate     krb5_cred_enc_part *enc_part2;	/* unencrypted version, if available*/
12657c478bd9Sstevel@tonic-gate } krb5_cred;
12667c478bd9Sstevel@tonic-gate 
12677c478bd9Sstevel@tonic-gate /* Sandia password generation structures */
12687c478bd9Sstevel@tonic-gate typedef struct _passwd_phrase_element {
12697c478bd9Sstevel@tonic-gate     krb5_magic magic;
12707c478bd9Sstevel@tonic-gate     krb5_data *passwd;
12717c478bd9Sstevel@tonic-gate     krb5_data *phrase;
12727c478bd9Sstevel@tonic-gate } passwd_phrase_element;
12737c478bd9Sstevel@tonic-gate 
12747c478bd9Sstevel@tonic-gate typedef struct _krb5_pwd_data {
12757c478bd9Sstevel@tonic-gate     krb5_magic magic;
12767c478bd9Sstevel@tonic-gate     int sequence_count;
12777c478bd9Sstevel@tonic-gate     passwd_phrase_element **element;
12787c478bd9Sstevel@tonic-gate } krb5_pwd_data;
12797c478bd9Sstevel@tonic-gate 
12807c478bd9Sstevel@tonic-gate /* these need to be here so the typedefs are available for the prototypes */
12817c478bd9Sstevel@tonic-gate 
1282ba7b222eSGlenn Barry typedef struct _krb5_pa_svr_referral_data {
1283ba7b222eSGlenn Barry     /* Referred name, only realm is required */
1284ba7b222eSGlenn Barry     krb5_principal     principal;
1285ba7b222eSGlenn Barry } krb5_pa_svr_referral_data;
1286ba7b222eSGlenn Barry 
1287ba7b222eSGlenn Barry typedef struct _krb5_pa_server_referral_data {
1288ba7b222eSGlenn Barry     krb5_data          *referred_realm;
1289ba7b222eSGlenn Barry     krb5_principal     true_principal_name;
1290ba7b222eSGlenn Barry     krb5_principal     requested_principal_name;
1291ba7b222eSGlenn Barry     krb5_timestamp     referral_valid_until;
1292ba7b222eSGlenn Barry     krb5_checksum      rep_cksum;
1293ba7b222eSGlenn Barry } krb5_pa_server_referral_data;
1294ba7b222eSGlenn Barry 
1295ba7b222eSGlenn Barry typedef struct _krb5_pa_pac_req {
1296ba7b222eSGlenn Barry     /* TRUE if a PAC should be included in TGS-REP */
1297ba7b222eSGlenn Barry     krb5_boolean       include_pac;
1298ba7b222eSGlenn Barry } krb5_pa_pac_req;
1299ba7b222eSGlenn Barry 
13007c478bd9Sstevel@tonic-gate /*
13017c478bd9Sstevel@tonic-gate  * begin "safepriv.h"
13027c478bd9Sstevel@tonic-gate  */
13037c478bd9Sstevel@tonic-gate 
13047c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_DO_TIME	0x00000001
13057c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_RET_TIME	0x00000002
13067c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_DO_SEQUENCE	0x00000004
13077c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_RET_SEQUENCE	0x00000008
13087c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_PERMIT_ALL	0x00000010
13097c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_USE_SUBKEY	0x00000020
13107c478bd9Sstevel@tonic-gate 
13117c478bd9Sstevel@tonic-gate typedef struct krb5_replay_data {
13127c478bd9Sstevel@tonic-gate     krb5_timestamp	timestamp;
13137c478bd9Sstevel@tonic-gate     krb5_int32		usec;
13147c478bd9Sstevel@tonic-gate     krb5_int32		seq;
13157c478bd9Sstevel@tonic-gate } krb5_replay_data;
13167c478bd9Sstevel@tonic-gate 
13177c478bd9Sstevel@tonic-gate /* flags for krb5_auth_con_genaddrs() */
13187c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_ADDR		0x00000001
13197c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_ADDR		0x00000002
13207c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_GENERATE_LOCAL_FULL_ADDR	0x00000004
13217c478bd9Sstevel@tonic-gate #define KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR	0x00000008
13227c478bd9Sstevel@tonic-gate 
13237c478bd9Sstevel@tonic-gate /* type of function used as a callback to generate checksum data for
13247c478bd9Sstevel@tonic-gate  * mk_req */
13257c478bd9Sstevel@tonic-gate 
13267c478bd9Sstevel@tonic-gate typedef krb5_error_code
1327159d09a2SMark Phalan (KRB5_CALLCONV * krb5_mk_req_checksum_func) (krb5_context, krb5_auth_context , void *,
13287c478bd9Sstevel@tonic-gate 			       krb5_data **);
13297c478bd9Sstevel@tonic-gate 
13307c478bd9Sstevel@tonic-gate /*
13317c478bd9Sstevel@tonic-gate  * end "safepriv.h"
13327c478bd9Sstevel@tonic-gate  */
13337c478bd9Sstevel@tonic-gate 
13347c478bd9Sstevel@tonic-gate 
13357c478bd9Sstevel@tonic-gate /*
13367c478bd9Sstevel@tonic-gate  * begin "ccache.h"
13377c478bd9Sstevel@tonic-gate  */
13387c478bd9Sstevel@tonic-gate 
13397c478bd9Sstevel@tonic-gate typedef	krb5_pointer	krb5_cc_cursor;	/* cursor for sequential lookup */
13407c478bd9Sstevel@tonic-gate 
1341505d05c7Sgtb struct _krb5_ccache;
1342505d05c7Sgtb typedef struct _krb5_ccache *krb5_ccache;
1343505d05c7Sgtb struct _krb5_cc_ops;
1344505d05c7Sgtb typedef struct _krb5_cc_ops krb5_cc_ops;
13457c478bd9Sstevel@tonic-gate 
13467c478bd9Sstevel@tonic-gate /* for retrieve_cred */
13477c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_TIMES		0x00000001
13487c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_IS_SKEY		0x00000002
13497c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_FLAGS		0x00000004
13507c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_TIMES_EXACT	0x00000008
13517c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_FLAGS_EXACT	0x00000010
13527c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_AUTHDATA		0x00000020
13537c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_SRV_NAMEONLY	0x00000040
13547c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_2ND_TKT		0x00000080
13557c478bd9Sstevel@tonic-gate #define	KRB5_TC_MATCH_KTYPE		0x00000100
13567c478bd9Sstevel@tonic-gate #define KRB5_TC_SUPPORTED_KTYPES	0x00000200
13577c478bd9Sstevel@tonic-gate 
13587c478bd9Sstevel@tonic-gate /* for set_flags and other functions */
13597c478bd9Sstevel@tonic-gate #define KRB5_TC_OPENCLOSE		0x00000001
1360505d05c7Sgtb #define KRB5_TC_NOTICKET                0x00000002
13617c478bd9Sstevel@tonic-gate 
13627c478bd9Sstevel@tonic-gate 
1363505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1364505d05c7Sgtb krb5_cc_gen_new (krb5_context context, krb5_ccache *cache);
1365505d05c7Sgtb 
1366505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1367505d05c7Sgtb krb5_cc_initialize(krb5_context context, krb5_ccache cache,
1368505d05c7Sgtb 		   krb5_principal principal);
1369505d05c7Sgtb 
1370505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1371505d05c7Sgtb krb5_cc_destroy (krb5_context context, krb5_ccache cache);
1372505d05c7Sgtb 
1373505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1374505d05c7Sgtb krb5_cc_close (krb5_context context, krb5_ccache cache);
1375505d05c7Sgtb 
1376505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1377505d05c7Sgtb krb5_cc_store_cred (krb5_context context, krb5_ccache cache,
1378505d05c7Sgtb                     krb5_creds *creds);
1379505d05c7Sgtb 
1380505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1381505d05c7Sgtb krb5_cc_retrieve_cred (krb5_context context, krb5_ccache cache,
1382505d05c7Sgtb 		       krb5_flags flags, krb5_creds *mcreds,
1383505d05c7Sgtb 		       krb5_creds *creds);
1384505d05c7Sgtb 
1385505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1386505d05c7Sgtb krb5_cc_get_principal (krb5_context context, krb5_ccache cache,
1387505d05c7Sgtb 		       krb5_principal *principal);
1388159d09a2SMark Phalan 
1389505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1390505d05c7Sgtb krb5_cc_start_seq_get (krb5_context context, krb5_ccache cache,
1391505d05c7Sgtb 		       krb5_cc_cursor *cursor);
1392505d05c7Sgtb 
1393505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1394505d05c7Sgtb krb5_cc_next_cred (krb5_context context, krb5_ccache cache,
1395505d05c7Sgtb 		   krb5_cc_cursor *cursor, krb5_creds *creds);
1396505d05c7Sgtb 
1397505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1398505d05c7Sgtb krb5_cc_end_seq_get (krb5_context context, krb5_ccache cache,
1399505d05c7Sgtb 		     krb5_cc_cursor *cursor);
1400505d05c7Sgtb 
1401505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1402505d05c7Sgtb krb5_cc_remove_cred (krb5_context context, krb5_ccache cache, krb5_flags flags,
1403505d05c7Sgtb 		     krb5_creds *creds);
1404505d05c7Sgtb 
1405505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1406505d05c7Sgtb krb5_cc_set_flags (krb5_context context, krb5_ccache cache, krb5_flags flags);
1407505d05c7Sgtb 
1408159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1409159d09a2SMark Phalan krb5_cc_get_flags (krb5_context context, krb5_ccache cache, krb5_flags *flags);
1410159d09a2SMark Phalan 
1411505d05c7Sgtb const char * KRB5_CALLCONV
1412505d05c7Sgtb krb5_cc_get_type (krb5_context context, krb5_ccache cache);
1413505d05c7Sgtb 
1414505d05c7Sgtb /* SUNW14resync - add_cred.c needs this func */
1415505d05c7Sgtb const char * KRB5_CALLCONV
1416505d05c7Sgtb krb5_cc_get_name (krb5_context context, krb5_ccache cache);
14177c478bd9Sstevel@tonic-gate 
1418159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
1419159d09a2SMark Phalan krb5_cc_new_unique(
1420159d09a2SMark Phalan     krb5_context context,
1421159d09a2SMark Phalan     const char *type,
1422159d09a2SMark Phalan     const char *hint,
1423159d09a2SMark Phalan     krb5_ccache *id);
1424159d09a2SMark Phalan 
14257c478bd9Sstevel@tonic-gate /*
14267c478bd9Sstevel@tonic-gate  * end "ccache.h"
14277c478bd9Sstevel@tonic-gate  */
14287c478bd9Sstevel@tonic-gate 
14297c478bd9Sstevel@tonic-gate /*
14307c478bd9Sstevel@tonic-gate  * begin "rcache.h"
14317c478bd9Sstevel@tonic-gate  */
14327c478bd9Sstevel@tonic-gate 
1433505d05c7Sgtb struct krb5_rc_st;
1434505d05c7Sgtb typedef struct krb5_rc_st *krb5_rcache;
14357c478bd9Sstevel@tonic-gate 
14367c478bd9Sstevel@tonic-gate /*
14377c478bd9Sstevel@tonic-gate  * end "rcache.h"
14387c478bd9Sstevel@tonic-gate  */
14397c478bd9Sstevel@tonic-gate 
14407c478bd9Sstevel@tonic-gate /*
14417c478bd9Sstevel@tonic-gate  * begin "keytab.h"
14427c478bd9Sstevel@tonic-gate  */
14437c478bd9Sstevel@tonic-gate 
14447c478bd9Sstevel@tonic-gate 
14457c478bd9Sstevel@tonic-gate /* XXX */
14467c478bd9Sstevel@tonic-gate #define MAX_KEYTAB_NAME_LEN 1100 /* Long enough for MAXPATHLEN + some extra */
14477c478bd9Sstevel@tonic-gate 
14487c478bd9Sstevel@tonic-gate typedef krb5_pointer krb5_kt_cursor;	/* XXX */
14497c478bd9Sstevel@tonic-gate 
14507c478bd9Sstevel@tonic-gate typedef struct krb5_keytab_entry_st {
14517c478bd9Sstevel@tonic-gate     krb5_magic magic;
14527c478bd9Sstevel@tonic-gate     krb5_principal principal;	/* principal of this key */
14537c478bd9Sstevel@tonic-gate     krb5_timestamp timestamp;	/* time entry written to keytable */
14547c478bd9Sstevel@tonic-gate     krb5_kvno vno;		/* key version number */
14557c478bd9Sstevel@tonic-gate     krb5_keyblock key;		/* the secret key */
14567c478bd9Sstevel@tonic-gate } krb5_keytab_entry;
14577c478bd9Sstevel@tonic-gate 
1458505d05c7Sgtb #if KRB5_PRIVATE
1459505d05c7Sgtb struct _krb5_kt_ops;
1460505d05c7Sgtb typedef struct _krb5_kt {	/* should move into k5-int.h */
14617c478bd9Sstevel@tonic-gate     krb5_magic magic;
1462505d05c7Sgtb     const struct _krb5_kt_ops *ops;
14637c478bd9Sstevel@tonic-gate     krb5_pointer data;
14647c478bd9Sstevel@tonic-gate } *krb5_keytab;
1465505d05c7Sgtb #else
1466505d05c7Sgtb struct _krb5_kt;
1467505d05c7Sgtb typedef struct _krb5_kt *krb5_keytab;
1468505d05c7Sgtb #endif
14697c478bd9Sstevel@tonic-gate 
1470505d05c7Sgtb char * KRB5_CALLCONV
1471505d05c7Sgtb krb5_kt_get_type (krb5_context, krb5_keytab keytab);
1472505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1473505d05c7Sgtb krb5_kt_get_name(krb5_context context, krb5_keytab keytab, char *name,
1474505d05c7Sgtb 		 unsigned int namelen);
1475505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1476505d05c7Sgtb krb5_kt_close(krb5_context context, krb5_keytab keytab);
1477505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1478505d05c7Sgtb krb5_kt_get_entry(krb5_context context, krb5_keytab keytab,
1479505d05c7Sgtb 		  krb5_const_principal principal, krb5_kvno vno,
1480505d05c7Sgtb 		  krb5_enctype enctype, krb5_keytab_entry *entry);
1481505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1482505d05c7Sgtb krb5_kt_start_seq_get(krb5_context context, krb5_keytab keytab,
1483505d05c7Sgtb 		      krb5_kt_cursor *cursor);
1484505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1485505d05c7Sgtb krb5_kt_next_entry(krb5_context context, krb5_keytab keytab,
1486505d05c7Sgtb 		   krb5_keytab_entry *entry, krb5_kt_cursor *cursor);
1487505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1488505d05c7Sgtb krb5_kt_end_seq_get(krb5_context context, krb5_keytab keytab,
1489505d05c7Sgtb 		    krb5_kt_cursor *cursor);
1490db02be57S /* Solaris Kerberos */
1491db02be57S krb5_error_code
1492db02be57S krb5_kt_find_realm(krb5_context context, krb5_keytab keytab,
1493db02be57S 		  krb5_principal princ, krb5_data *realm);
14947c478bd9Sstevel@tonic-gate 
14957c478bd9Sstevel@tonic-gate /*
14967c478bd9Sstevel@tonic-gate  * end "keytab.h"
14977c478bd9Sstevel@tonic-gate  */
14987c478bd9Sstevel@tonic-gate 
14997c478bd9Sstevel@tonic-gate /*
15007c478bd9Sstevel@tonic-gate  * begin "func-proto.h"
15017c478bd9Sstevel@tonic-gate  */
15027c478bd9Sstevel@tonic-gate 
1503505d05c7Sgtb /* Solaris Kerberos */
15047c478bd9Sstevel@tonic-gate krb5_error_code krb5_init_ef_handle(krb5_context);
15057c478bd9Sstevel@tonic-gate krb5_error_code krb5_free_ef_handle(krb5_context);
15067c478bd9Sstevel@tonic-gate 
15077c478bd9Sstevel@tonic-gate krb5_boolean krb5_privacy_allowed(void);
15087c478bd9Sstevel@tonic-gate 
15097c478bd9Sstevel@tonic-gate /*
15107c478bd9Sstevel@tonic-gate  * Solaris Kerberos:
15117c478bd9Sstevel@tonic-gate  * krb5_copy_keyblock_data is a new routine to hide the details
15127c478bd9Sstevel@tonic-gate  * of a keyblock copy operation.
15137c478bd9Sstevel@tonic-gate  */
15147c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_data
1515505d05c7Sgtb 	(krb5_context,
1516505d05c7Sgtb 		const krb5_keyblock *,
1517505d05c7Sgtb 		krb5_keyblock *);
1518505d05c7Sgtb 
1519505d05c7Sgtb 
1520505d05c7Sgtb 
1521505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_init_context
1522505d05c7Sgtb 	(krb5_context *);
1523505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_init_secure_context
1524505d05c7Sgtb 	(krb5_context *);
1525505d05c7Sgtb void KRB5_CALLCONV krb5_free_context
1526505d05c7Sgtb 	(krb5_context);
1527505d05c7Sgtb 
1528505d05c7Sgtb #if KRB5_PRIVATE
1529505d05c7Sgtb krb5_error_code krb5_set_default_in_tkt_ktypes
1530505d05c7Sgtb 	(krb5_context,
1531505d05c7Sgtb 		const krb5_enctype *);
1532505d05c7Sgtb krb5_error_code krb5_get_default_in_tkt_ktypes
1533505d05c7Sgtb 	(krb5_context,
1534505d05c7Sgtb 		krb5_enctype **);
1535505d05c7Sgtb 
1536505d05c7Sgtb krb5_error_code krb5_set_default_tgs_ktypes
1537505d05c7Sgtb 	(krb5_context,
1538505d05c7Sgtb 		const krb5_enctype *);
1539505d05c7Sgtb #endif
1540505d05c7Sgtb 
1541505d05c7Sgtb krb5_error_code KRB5_CALLCONV
1542505d05c7Sgtb krb5_set_default_tgs_enctypes
1543505d05c7Sgtb 	(krb5_context,
1544505d05c7Sgtb 		const krb5_enctype *);
1545505d05c7Sgtb #if KRB5_PRIVATE
1546505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_tgs_ktypes
1547505d05c7Sgtb 	(krb5_context,
15487c478bd9Sstevel@tonic-gate 		krb5_const_principal,
1549505d05c7Sgtb 		krb5_enctype **);
1550505d05c7Sgtb #endif
1551505d05c7Sgtb 
1552505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_permitted_enctypes
1553505d05c7Sgtb 	(krb5_context, krb5_enctype **);
1554505d05c7Sgtb 
1555505d05c7Sgtb #if KRB5_PRIVATE
1556505d05c7Sgtb void KRB5_CALLCONV krb5_free_ktypes
1557505d05c7Sgtb 	(krb5_context, krb5_enctype *);
1558505d05c7Sgtb 
1559505d05c7Sgtb krb5_boolean krb5_is_permitted_enctype
1560505d05c7Sgtb 	(krb5_context, krb5_enctype);
1561505d05c7Sgtb #endif
1562505d05c7Sgtb 
1563505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_is_thread_safe(void);
1564505d05c7Sgtb 
1565505d05c7Sgtb /* libkrb.spec */
1566505d05c7Sgtb #if KRB5_PRIVATE
1567505d05c7Sgtb krb5_error_code krb5_kdc_rep_decrypt_proc
1568505d05c7Sgtb 	(krb5_context,
1569505d05c7Sgtb 		const krb5_keyblock *,
1570505d05c7Sgtb 		krb5_const_pointer,
1571505d05c7Sgtb 		krb5_kdc_rep * );
1572505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_decrypt_tkt_part
1573505d05c7Sgtb 	(krb5_context,
1574505d05c7Sgtb 		const krb5_keyblock *,
1575505d05c7Sgtb 		krb5_ticket * );
1576505d05c7Sgtb krb5_error_code krb5_get_cred_from_kdc
1577505d05c7Sgtb 	(krb5_context,
1578505d05c7Sgtb 		krb5_ccache,		/* not const, as reading may save
1579505d05c7Sgtb 					   state */
1580505d05c7Sgtb 		krb5_creds *,
1581505d05c7Sgtb 		krb5_creds **,
1582505d05c7Sgtb 		krb5_creds *** );
1583505d05c7Sgtb krb5_error_code krb5_get_cred_from_kdc_validate
1584505d05c7Sgtb 	(krb5_context,
1585505d05c7Sgtb 		krb5_ccache,		/* not const, as reading may save
1586505d05c7Sgtb 					   state */
1587505d05c7Sgtb 		krb5_creds *,
1588505d05c7Sgtb 		krb5_creds **,
1589505d05c7Sgtb 		krb5_creds *** );
1590505d05c7Sgtb krb5_error_code krb5_get_cred_from_kdc_renew
1591505d05c7Sgtb 	(krb5_context,
1592505d05c7Sgtb 		krb5_ccache,		/* not const, as reading may save
1593505d05c7Sgtb 					   state */
1594505d05c7Sgtb 		krb5_creds *,
1595505d05c7Sgtb 		krb5_creds **,
1596505d05c7Sgtb 		krb5_creds *** );
1597505d05c7Sgtb #endif
1598505d05c7Sgtb 
1599505d05c7Sgtb void KRB5_CALLCONV krb5_free_tgt_creds
1600505d05c7Sgtb 	(krb5_context,
1601505d05c7Sgtb 	 krb5_creds **); /* XXX too hard to do with const */
1602505d05c7Sgtb 
1603505d05c7Sgtb #define	KRB5_GC_USER_USER	1	/* want user-user ticket */
1604505d05c7Sgtb #define	KRB5_GC_CACHED		2	/* want cached ticket only */
1605505d05c7Sgtb 
1606505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_credentials
1607505d05c7Sgtb 	(krb5_context,
1608505d05c7Sgtb 		krb5_flags,
1609505d05c7Sgtb 		krb5_ccache,
1610505d05c7Sgtb 		krb5_creds *,
1611505d05c7Sgtb 		krb5_creds **);
1612505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_credentials_validate
1613505d05c7Sgtb 	(krb5_context,
1614505d05c7Sgtb 		krb5_flags,
1615505d05c7Sgtb 		krb5_ccache,
1616505d05c7Sgtb 		krb5_creds *,
1617505d05c7Sgtb 		krb5_creds **);
1618505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_credentials_renew
1619505d05c7Sgtb 	(krb5_context,
1620505d05c7Sgtb 		krb5_flags,
1621505d05c7Sgtb 		krb5_ccache,
1622505d05c7Sgtb 		krb5_creds *,
1623505d05c7Sgtb 		krb5_creds **);
1624505d05c7Sgtb #if KRB5_PRIVATE
1625505d05c7Sgtb krb5_error_code krb5_get_cred_via_tkt
1626505d05c7Sgtb 	(krb5_context,
1627505d05c7Sgtb 		   krb5_creds *,
1628505d05c7Sgtb 		   krb5_flags,
1629505d05c7Sgtb 		   krb5_address * const *,
1630505d05c7Sgtb 		   krb5_creds *,
1631505d05c7Sgtb 		   krb5_creds **);
1632505d05c7Sgtb #endif
1633505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_mk_req
1634505d05c7Sgtb 	(krb5_context,
1635505d05c7Sgtb 		krb5_auth_context *,
1636505d05c7Sgtb 		krb5_flags,
1637505d05c7Sgtb 		char *,
1638505d05c7Sgtb 		char *,
1639505d05c7Sgtb 		krb5_data *,
1640505d05c7Sgtb 		krb5_ccache,
1641505d05c7Sgtb 		krb5_data * );
1642505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_mk_req_extended
1643505d05c7Sgtb 	(krb5_context,
1644505d05c7Sgtb 		krb5_auth_context *,
1645505d05c7Sgtb 		krb5_flags,
1646505d05c7Sgtb 		krb5_data *,
1647505d05c7Sgtb 		krb5_creds *,
1648505d05c7Sgtb 		krb5_data * );
1649505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_mk_rep
1650505d05c7Sgtb 	(krb5_context,
1651505d05c7Sgtb 		krb5_auth_context,
1652505d05c7Sgtb 		krb5_data *);
1653505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_rd_rep
1654505d05c7Sgtb 	(krb5_context,
1655505d05c7Sgtb 		krb5_auth_context,
1656505d05c7Sgtb 		const krb5_data *,
1657505d05c7Sgtb 		krb5_ap_rep_enc_part **);
1658505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_mk_error
1659505d05c7Sgtb 	(krb5_context,
1660505d05c7Sgtb 		const krb5_error *,
1661505d05c7Sgtb 		krb5_data * );
1662505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_rd_error
1663505d05c7Sgtb 	(krb5_context,
1664505d05c7Sgtb 		const krb5_data *,
1665505d05c7Sgtb 		krb5_error ** );
1666505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_rd_safe
1667505d05c7Sgtb 	(krb5_context,
1668505d05c7Sgtb 		krb5_auth_context,
1669505d05c7Sgtb 		const krb5_data *,
1670505d05c7Sgtb 		krb5_data *,
1671505d05c7Sgtb 		krb5_replay_data *);
1672505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_rd_priv
1673505d05c7Sgtb 	(krb5_context,
1674505d05c7Sgtb 		krb5_auth_context,
1675505d05c7Sgtb 		const krb5_data *,
1676505d05c7Sgtb 		krb5_data *,
1677505d05c7Sgtb 		krb5_replay_data *);
1678505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_parse_name
1679505d05c7Sgtb 	(krb5_context,
1680505d05c7Sgtb 		const char *,
1681505d05c7Sgtb 		krb5_principal * );
1682ba7b222eSGlenn Barry #define KRB5_PRINCIPAL_PARSE_NO_REALM           0x1
1683ba7b222eSGlenn Barry #define KRB5_PRINCIPAL_PARSE_REQUIRE_REALM      0x2
1684ba7b222eSGlenn Barry #define KRB5_PRINCIPAL_PARSE_ENTERPRISE         0x4
1685ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV krb5_parse_name_flags
1686ba7b222eSGlenn Barry 	(krb5_context,
1687ba7b222eSGlenn Barry 	const char *,
1688ba7b222eSGlenn Barry 	int,
1689ba7b222eSGlenn Barry 	krb5_principal * );
1690505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_unparse_name
1691505d05c7Sgtb 	(krb5_context,
1692505d05c7Sgtb 		krb5_const_principal,
1693505d05c7Sgtb 		char ** );
1694505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_unparse_name_ext
1695505d05c7Sgtb 	(krb5_context,
1696505d05c7Sgtb 		krb5_const_principal,
1697505d05c7Sgtb 		char **,
1698505d05c7Sgtb 		unsigned int *);
1699ba7b222eSGlenn Barry #define KRB5_PRINCIPAL_UNPARSE_SHORT            0x1
1700ba7b222eSGlenn Barry #define KRB5_PRINCIPAL_UNPARSE_NO_REALM         0x2
1701ba7b222eSGlenn Barry #define KRB5_PRINCIPAL_UNPARSE_DISPLAY          0x4
1702ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV krb5_unparse_name_flags
1703ba7b222eSGlenn Barry         (krb5_context,
1704ba7b222eSGlenn Barry                 krb5_const_principal,
1705ba7b222eSGlenn Barry                 int,
1706ba7b222eSGlenn Barry                 char **);
1707ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV krb5_unparse_name_flags_ext
1708ba7b222eSGlenn Barry         (krb5_context,
1709ba7b222eSGlenn Barry                 krb5_const_principal,
1710ba7b222eSGlenn Barry                 int,
1711ba7b222eSGlenn Barry                 char **,
1712ba7b222eSGlenn Barry                 unsigned int *);
1713505d05c7Sgtb 
1714505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_set_principal_realm
1715505d05c7Sgtb 	(krb5_context, krb5_principal, const char *);
1716505d05c7Sgtb 
1717505d05c7Sgtb krb5_boolean KRB5_CALLCONV_WRONG krb5_address_search
1718505d05c7Sgtb 	(krb5_context,
17197c478bd9Sstevel@tonic-gate 		const krb5_address *,
1720505d05c7Sgtb 		krb5_address * const *);
1721505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_address_compare
1722505d05c7Sgtb 	(krb5_context,
1723505d05c7Sgtb 		const krb5_address *,
1724505d05c7Sgtb 		const krb5_address *);
1725505d05c7Sgtb int KRB5_CALLCONV krb5_address_order
1726505d05c7Sgtb 	(krb5_context,
1727505d05c7Sgtb 		const krb5_address *,
1728505d05c7Sgtb 		const krb5_address *);
1729505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_realm_compare
1730505d05c7Sgtb 	(krb5_context,
1731505d05c7Sgtb 		krb5_const_principal,
1732505d05c7Sgtb 		krb5_const_principal);
1733505d05c7Sgtb krb5_boolean KRB5_CALLCONV krb5_principal_compare
1734505d05c7Sgtb 	(krb5_context,
1735505d05c7Sgtb 		krb5_const_principal,
1736505d05c7Sgtb 		krb5_const_principal);
1737505d05c7Sgtb krb5_error_code KRB5_CALLCONV  krb5_init_keyblock
1738505d05c7Sgtb 		(krb5_context, krb5_enctype enctype,
1739505d05c7Sgtb 		size_t length, krb5_keyblock **out);
1740505d05c7Sgtb   		/* Initialize a new keyblock and allocate storage
1741505d05c7Sgtb 		 * for the contents of the key, which will be freed along
1742505d05c7Sgtb 		 * with the keyblock when krb5_free_keyblock is called.
1743505d05c7Sgtb 		 * It is legal to pass in a length of 0, in which
1744505d05c7Sgtb 		 * case contents are left unallocated.
1745505d05c7Sgtb 		 */
174610db1377Sgtb 
174710db1377Sgtb /*
174810db1377Sgtb  * Solaris Kerberos
174910db1377Sgtb  * Start - keyblock API (MIT will ship this also in a future release)
175010db1377Sgtb  */
175110db1377Sgtb /*
175210db1377Sgtb  * Similiar to krb5_init_keyblock but this routine expects the
175310db1377Sgtb  * keyblock to already be allocated.
175410db1377Sgtb  */
175510db1377Sgtb krb5_error_code KRB5_CALLCONV krb5_init_allocated_keyblock
175610db1377Sgtb         (krb5_context,
175710db1377Sgtb 	        krb5_enctype,
175810db1377Sgtb 	        unsigned int,
175910db1377Sgtb                 krb5_keyblock *);
176010db1377Sgtb 
176110db1377Sgtb krb5_enctype KRB5_CALLCONV krb5_get_key_enctype
176210db1377Sgtb         (krb5_keyblock *);
176310db1377Sgtb 
176410db1377Sgtb unsigned int KRB5_CALLCONV krb5_get_key_length
176510db1377Sgtb         (krb5_keyblock *);
176610db1377Sgtb 
176710db1377Sgtb krb5_octet KRB5_CALLCONV *krb5_get_key_data
176810db1377Sgtb         (krb5_keyblock *);
176910db1377Sgtb 
177010db1377Sgtb void KRB5_CALLCONV krb5_set_key_enctype
177110db1377Sgtb         (krb5_keyblock *,
177210db1377Sgtb                  krb5_enctype);
177310db1377Sgtb 
177410db1377Sgtb void KRB5_CALLCONV krb5_set_key_data
177510db1377Sgtb         (krb5_keyblock *,
177610db1377Sgtb                  krb5_octet *);
177710db1377Sgtb 
177810db1377Sgtb void KRB5_CALLCONV krb5_set_key_length
177910db1377Sgtb         (krb5_keyblock *,
178010db1377Sgtb                  unsigned int);
178110db1377Sgtb /*
178210db1377Sgtb  * Solaris Kerberos
178310db1377Sgtb  * End - keyblock API
178410db1377Sgtb  */
178510db1377Sgtb 
1786505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_keyblock
1787505d05c7Sgtb 	(krb5_context,
1788505d05c7Sgtb 		const krb5_keyblock *,
1789505d05c7Sgtb 		krb5_keyblock **);
1790505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_keyblock_contents
1791505d05c7Sgtb 	(krb5_context,
1792505d05c7Sgtb 		const krb5_keyblock *,
1793505d05c7Sgtb 		krb5_keyblock *);
1794505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_creds
1795505d05c7Sgtb 	(krb5_context,
1796505d05c7Sgtb 		const krb5_creds *,
1797505d05c7Sgtb 		krb5_creds **);
1798505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_data
1799505d05c7Sgtb 	(krb5_context,
1800505d05c7Sgtb 		const krb5_data *,
1801505d05c7Sgtb 		krb5_data **);
1802505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_principal
1803505d05c7Sgtb 	(krb5_context,
1804505d05c7Sgtb 		krb5_const_principal,
1805505d05c7Sgtb 		krb5_principal *);
1806505d05c7Sgtb #if KRB5_PRIVATE
1807505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_copy_addr
1808505d05c7Sgtb 	(krb5_context,
1809505d05c7Sgtb 		const krb5_address *,
1810505d05c7Sgtb 		krb5_address **);
1811505d05c7Sgtb #endif
18127c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_addresses
1813505d05c7Sgtb 	(krb5_context,
1814505d05c7Sgtb 		krb5_address * const *,
1815505d05c7Sgtb 		krb5_address ***);
18167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_ticket
1817505d05c7Sgtb 	(krb5_context,
1818505d05c7Sgtb 		const krb5_ticket *,
1819505d05c7Sgtb 		krb5_ticket **);
18207c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_authdata
1821505d05c7Sgtb 	(krb5_context,
1822505d05c7Sgtb 		krb5_authdata * const *,
1823505d05c7Sgtb 		krb5_authdata ***);
1824ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV krb5_merge_authdata
1825ba7b222eSGlenn Barry 	(krb5_context,
1826ba7b222eSGlenn Barry 	krb5_authdata * const *,
1827ba7b222eSGlenn Barry 	krb5_authdata *const *,
1828ba7b222eSGlenn Barry 	krb5_authdata ***);
1829ba7b222eSGlenn Barry /* Merge two authdata arrays, such as the array from a ticket
1830ba7b222eSGlenn Barry  * and authenticator */
1831ba7b222eSGlenn Barry 
18327c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_authenticator
1833505d05c7Sgtb 	(krb5_context,
1834505d05c7Sgtb 		const krb5_authenticator *,
1835505d05c7Sgtb 		krb5_authenticator **);
18367c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_copy_checksum
1837505d05c7Sgtb 	(krb5_context,
1838505d05c7Sgtb 		const krb5_checksum *,
1839505d05c7Sgtb 		krb5_checksum **);
1840505d05c7Sgtb #if KRB5_PRIVATE
18417c478bd9Sstevel@tonic-gate void krb5_init_ets
1842505d05c7Sgtb 	(krb5_context);
18437c478bd9Sstevel@tonic-gate void krb5_free_ets
1844505d05c7Sgtb 	(krb5_context);
18457c478bd9Sstevel@tonic-gate krb5_error_code krb5_generate_subkey
1846505d05c7Sgtb 	(krb5_context,
1847505d05c7Sgtb 		const krb5_keyblock *, krb5_keyblock **);
18487c478bd9Sstevel@tonic-gate krb5_error_code krb5_generate_seq_number
1849505d05c7Sgtb 	(krb5_context,
1850505d05c7Sgtb 		const krb5_keyblock *, krb5_ui_4 *);
1851505d05c7Sgtb #endif
18527c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_server_rcache
1853505d05c7Sgtb 	(krb5_context,
1854505d05c7Sgtb 		const krb5_data *, krb5_rcache *);
18557c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV_C krb5_build_principal_ext
1856505d05c7Sgtb 	(krb5_context, krb5_principal *, unsigned int, const char *, ...);
1857505d05c7Sgtb krb5_error_code KRB5_CALLCONV_C krb5_build_principal
1858505d05c7Sgtb 	(krb5_context, krb5_principal *, unsigned int, const char *, ...);
18597c478bd9Sstevel@tonic-gate #ifdef va_start
18607c478bd9Sstevel@tonic-gate /* XXX depending on varargs include file defining va_start... */
1861505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_build_principal_va
1862505d05c7Sgtb 	(krb5_context,
1863505d05c7Sgtb 		krb5_principal, unsigned int, const char *, va_list);
18647c478bd9Sstevel@tonic-gate #endif
18657c478bd9Sstevel@tonic-gate 
18667c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_425_conv_principal
1867505d05c7Sgtb 	(krb5_context,
1868505d05c7Sgtb 		const char *name,
1869505d05c7Sgtb 		const char *instance, const char *realm,
1870505d05c7Sgtb 		krb5_principal *princ);
18717c478bd9Sstevel@tonic-gate 
18727c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_524_conv_principal
1873505d05c7Sgtb 	(krb5_context context, krb5_const_principal princ,
1874505d05c7Sgtb 		char *name, char *inst, char *realm);
1875505d05c7Sgtb 
1876505d05c7Sgtb struct credentials;
1877505d05c7Sgtb int KRB5_CALLCONV krb5_524_convert_creds
1878505d05c7Sgtb 	(krb5_context context, krb5_creds *v5creds,
1879505d05c7Sgtb 	 struct credentials *v4creds);
1880505d05c7Sgtb #if KRB5_DEPRECATED
1881505d05c7Sgtb #define krb524_convert_creds_kdc krb5_524_convert_creds
1882505d05c7Sgtb #define krb524_init_ets(x) (0)
1883505d05c7Sgtb #endif
18847c478bd9Sstevel@tonic-gate 
18857c478bd9Sstevel@tonic-gate /* libkt.spec */
1886505d05c7Sgtb #if KRB5_PRIVATE
18877c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_register
1888505d05c7Sgtb 	(krb5_context,
1889505d05c7Sgtb 		const struct _krb5_kt_ops * );
1890505d05c7Sgtb #endif
1891505d05c7Sgtb 
18927c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_resolve
1893505d05c7Sgtb 	(krb5_context,
1894505d05c7Sgtb 		const char *,
1895505d05c7Sgtb 		krb5_keytab * );
18967c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_default_name
1897505d05c7Sgtb 	(krb5_context,
18987c478bd9Sstevel@tonic-gate 		char *,
1899505d05c7Sgtb 		int );
19007c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_default
1901505d05c7Sgtb 	(krb5_context,
1902505d05c7Sgtb 		krb5_keytab * );
1903505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_free_keytab_entry_contents
1904505d05c7Sgtb 	(krb5_context,
1905505d05c7Sgtb 		krb5_keytab_entry * );
1906505d05c7Sgtb #if KRB5_PRIVATE
1907505d05c7Sgtb /* use krb5_free_keytab_entry_contents instead */
19087c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_free_entry
1909505d05c7Sgtb 	(krb5_context,
1910505d05c7Sgtb 		krb5_keytab_entry * );
1911505d05c7Sgtb #endif
19127c478bd9Sstevel@tonic-gate /* remove and add are functions, so that they can return NOWRITE
19137c478bd9Sstevel@tonic-gate    if not a writable keytab */
19147c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_remove_entry
1915505d05c7Sgtb 	(krb5_context,
19167c478bd9Sstevel@tonic-gate 		krb5_keytab,
1917505d05c7Sgtb 		krb5_keytab_entry * );
19187c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_add_entry
1919505d05c7Sgtb 	(krb5_context,
19207c478bd9Sstevel@tonic-gate 		krb5_keytab,
1921505d05c7Sgtb 		krb5_keytab_entry * );
1922505d05c7Sgtb krb5_error_code KRB5_CALLCONV_WRONG krb5_principal2salt
1923505d05c7Sgtb 	(krb5_context,
1924505d05c7Sgtb 		krb5_const_principal, krb5_data *);
1925505d05c7Sgtb #if KRB5_PRIVATE
19267c478bd9Sstevel@tonic-gate krb5_error_code krb5_principal2salt_norealm
1927505d05c7Sgtb 	(krb5_context,
1928505d05c7Sgtb 		krb5_const_principal, krb5_data *);
1929505d05c7Sgtb #endif
19307c478bd9Sstevel@tonic-gate /* librc.spec--see rcache.h */
19317c478bd9Sstevel@tonic-gate 
19327c478bd9Sstevel@tonic-gate /* libcc.spec */
19337c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_resolve
1934505d05c7Sgtb 	(krb5_context,
19357c478bd9Sstevel@tonic-gate 		const char *,
1936505d05c7Sgtb 		krb5_ccache * );
19377c478bd9Sstevel@tonic-gate const char * KRB5_CALLCONV krb5_cc_default_name
1938505d05c7Sgtb 	(krb5_context);
19397c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_set_default_name
1940505d05c7Sgtb 	(krb5_context, const char *);
19417c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_default
1942505d05c7Sgtb 	(krb5_context,
1943505d05c7Sgtb 		krb5_ccache *);
1944505d05c7Sgtb #if KRB5_PRIVATE
19457c478bd9Sstevel@tonic-gate unsigned int KRB5_CALLCONV krb5_get_notification_message
1946505d05c7Sgtb 	(void);
1947505d05c7Sgtb #endif
19487c478bd9Sstevel@tonic-gate 
19497c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_copy_creds
1950505d05c7Sgtb 	(krb5_context context,
19517c478bd9Sstevel@tonic-gate 			krb5_ccache incc,
1952505d05c7Sgtb 			krb5_ccache outcc);
19537c478bd9Sstevel@tonic-gate 
19547c478bd9Sstevel@tonic-gate 
19557c478bd9Sstevel@tonic-gate /* chk_trans.c */
1956505d05c7Sgtb #if KRB5_PRIVATE
19577c478bd9Sstevel@tonic-gate krb5_error_code krb5_check_transited_list
1958505d05c7Sgtb 	(krb5_context, const krb5_data *trans,
1959505d05c7Sgtb 	 const krb5_data *realm1, const krb5_data *realm2);
1960505d05c7Sgtb #endif
19617c478bd9Sstevel@tonic-gate 
19627c478bd9Sstevel@tonic-gate /* free_rtree.c */
1963505d05c7Sgtb #if KRB5_PRIVATE
19647c478bd9Sstevel@tonic-gate void krb5_free_realm_tree
1965505d05c7Sgtb 	(krb5_context,
1966505d05c7Sgtb 		krb5_principal *);
1967505d05c7Sgtb #endif
19687c478bd9Sstevel@tonic-gate 
19697c478bd9Sstevel@tonic-gate /* krb5_free.c */
19707c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_principal
1971505d05c7Sgtb 	(krb5_context, krb5_principal );
19727c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_authenticator
1973505d05c7Sgtb 	(krb5_context, krb5_authenticator * );
1974505d05c7Sgtb #if KRB5_PRIVATE
19757c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_authenticator_contents
1976505d05c7Sgtb 	(krb5_context, krb5_authenticator * );
1977505d05c7Sgtb #endif
19787c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_addresses
1979505d05c7Sgtb 	(krb5_context, krb5_address ** );
1980505d05c7Sgtb #if KRB5_PRIVATE
19817c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_address
1982505d05c7Sgtb 	(krb5_context, krb5_address * );
1983505d05c7Sgtb #endif
19847c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_authdata
1985505d05c7Sgtb 	(krb5_context, krb5_authdata ** );
1986505d05c7Sgtb #if KRB5_PRIVATE
19877c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_enc_tkt_part
1988505d05c7Sgtb 	(krb5_context, krb5_enc_tkt_part * );
1989505d05c7Sgtb #endif
19907c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ticket
1991505d05c7Sgtb 	(krb5_context, krb5_ticket * );
1992505d05c7Sgtb #if KRB5_PRIVATE
19937c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_tickets
1994505d05c7Sgtb 	(krb5_context, krb5_ticket ** );
19957c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_kdc_req
1996505d05c7Sgtb 	(krb5_context, krb5_kdc_req * );
19977c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_kdc_rep
1998505d05c7Sgtb 	(krb5_context, krb5_kdc_rep * );
19997c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_last_req
2000505d05c7Sgtb 	(krb5_context, krb5_last_req_entry ** );
20017c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_enc_kdc_rep_part
2002505d05c7Sgtb 	(krb5_context, krb5_enc_kdc_rep_part * );
2003505d05c7Sgtb #endif
20047c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_error
2005505d05c7Sgtb 	(krb5_context, krb5_error * );
2006505d05c7Sgtb #if KRB5_PRIVATE
20077c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ap_req
2008505d05c7Sgtb 	(krb5_context, krb5_ap_req * );
20097c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ap_rep
2010505d05c7Sgtb 	(krb5_context, krb5_ap_rep * );
20117c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cred
2012505d05c7Sgtb 	(krb5_context, krb5_cred *);
2013505d05c7Sgtb #endif
20147c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_creds
2015505d05c7Sgtb 	(krb5_context, krb5_creds *);
20167c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cred_contents
2017505d05c7Sgtb 	(krb5_context, krb5_creds *);
2018505d05c7Sgtb #if KRB5_PRIVATE
20197c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cred_enc_part
2020505d05c7Sgtb 	(krb5_context, krb5_cred_enc_part *);
2021505d05c7Sgtb #endif
20227c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_checksum
2023505d05c7Sgtb 	(krb5_context, krb5_checksum *);
20247c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_checksum_contents
2025505d05c7Sgtb 	(krb5_context, krb5_checksum *);
20267c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_keyblock
2027505d05c7Sgtb 	(krb5_context, krb5_keyblock *);
20287c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_keyblock_contents
2029505d05c7Sgtb 	(krb5_context, krb5_keyblock *);
2030505d05c7Sgtb #if KRB5_PRIVATE
20317c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_pa_data
2032505d05c7Sgtb 	(krb5_context, krb5_pa_data **);
2033505d05c7Sgtb #endif
20347c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_ap_rep_enc_part
2035505d05c7Sgtb 	(krb5_context, krb5_ap_rep_enc_part *);
2036505d05c7Sgtb #if KRB5_PRIVATE
20377c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_tkt_authent
2038505d05c7Sgtb 	(krb5_context, krb5_tkt_authent *);
20397c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_pwd_data
2040505d05c7Sgtb 	(krb5_context, krb5_pwd_data *);
20417c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_pwd_sequences
2042505d05c7Sgtb 	(krb5_context, passwd_phrase_element **);
2043505d05c7Sgtb #endif
20447c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_data
2045505d05c7Sgtb 	(krb5_context, krb5_data *);
20467c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_data_contents
2047505d05c7Sgtb 	(krb5_context, krb5_data *);
20487c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_unparsed_name
2049505d05c7Sgtb 	(krb5_context, char *);
20507c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_cksumtypes
2051505d05c7Sgtb 	(krb5_context, krb5_cksumtype *);
20527c478bd9Sstevel@tonic-gate 
20537c478bd9Sstevel@tonic-gate /* From krb5/os but needed but by the outside world */
20547c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_us_timeofday
2055505d05c7Sgtb 	(krb5_context,
20567c478bd9Sstevel@tonic-gate 		krb5_int32 *,
2057505d05c7Sgtb 		krb5_int32 * );
20587c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_timeofday
2059505d05c7Sgtb 	(krb5_context,
2060505d05c7Sgtb 		krb5_int32 * );
20617c478bd9Sstevel@tonic-gate 		 /* get all the addresses of this host */
20627c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_os_localaddr
2063505d05c7Sgtb 	(krb5_context,
2064505d05c7Sgtb 		krb5_address ***);
20657c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_default_realm
2066505d05c7Sgtb 	(krb5_context,
2067505d05c7Sgtb 		 char ** );
20687c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_set_default_realm
2069505d05c7Sgtb 	(krb5_context,
2070505d05c7Sgtb 		   const char * );
20717c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_default_realm
2072505d05c7Sgtb 	(krb5_context,
2073505d05c7Sgtb 		   char * );
20747c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_sname_to_principal
2075505d05c7Sgtb 	(krb5_context,
2076505d05c7Sgtb 		const char *,
2077505d05c7Sgtb 		   const char *,
20787c478bd9Sstevel@tonic-gate 		   krb5_int32,
2079505d05c7Sgtb 		   krb5_principal *);
2080505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2081505d05c7Sgtb krb5_change_password
2082505d05c7Sgtb 	(krb5_context context, krb5_creds *creds, char *newpw,
2083505d05c7Sgtb 			int *result_code, krb5_data *result_code_string,
2084505d05c7Sgtb 			krb5_data *result_string);
2085505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2086505d05c7Sgtb krb5_set_password
2087505d05c7Sgtb 	(krb5_context context, krb5_creds *creds, char *newpw, krb5_principal change_password_for,
2088505d05c7Sgtb 			int *result_code, krb5_data *result_code_string, krb5_data *result_string);
2089505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2090505d05c7Sgtb krb5_set_password_using_ccache
2091505d05c7Sgtb 	(krb5_context context, krb5_ccache ccache, char *newpw, krb5_principal change_password_for,
2092505d05c7Sgtb 			int *result_code, krb5_data *result_code_string, krb5_data *result_string);
20937c478bd9Sstevel@tonic-gate 
2094505d05c7Sgtb #if KRB5_PRIVATE
20957c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_config_files
2096505d05c7Sgtb 	(krb5_context, const char **);
20977c478bd9Sstevel@tonic-gate 
20987c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_default_config_files
2099505d05c7Sgtb 	(char ***filenames);
21007c478bd9Sstevel@tonic-gate 
21017c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_config_files
2102505d05c7Sgtb 	(char **filenames);
21037c478bd9Sstevel@tonic-gate #endif
21047c478bd9Sstevel@tonic-gate 
2105505d05c7Sgtb krb5_error_code KRB5_CALLCONV
2106505d05c7Sgtb krb5_get_profile
2107505d05c7Sgtb 	(krb5_context, struct _profile_t * /* profile_t */ *);
21087c478bd9Sstevel@tonic-gate 
2109505d05c7Sgtb #if KRB5_PRIVATE
2110505d05c7Sgtb krb5_error_code krb5_send_tgs
2111505d05c7Sgtb 	(krb5_context,
2112505d05c7Sgtb 		krb5_flags,
2113505d05c7Sgtb 		const krb5_ticket_times *,
2114505d05c7Sgtb 		const krb5_enctype *,
2115505d05c7Sgtb 		krb5_const_principal,
2116505d05c7Sgtb 		krb5_address * const *,
2117505d05c7Sgtb 		krb5_authdata * const *,
2118505d05c7Sgtb 		krb5_pa_data * const *,
2119505d05c7Sgtb 		const krb5_data *,
2120505d05c7Sgtb 		krb5_creds *,
2121505d05c7Sgtb 		krb5_response * );
2122*5e01956fSGlenn Barry 
2123*5e01956fSGlenn Barry krb5_error_code krb5_send_tgs2
2124*5e01956fSGlenn Barry 	(krb5_context,
2125*5e01956fSGlenn Barry 		krb5_flags,
2126*5e01956fSGlenn Barry 		const krb5_ticket_times *,
2127*5e01956fSGlenn Barry 		const krb5_enctype *,
2128*5e01956fSGlenn Barry 		krb5_const_principal,
2129*5e01956fSGlenn Barry 		krb5_address * const *,
2130*5e01956fSGlenn Barry 		krb5_authdata * const *,
2131*5e01956fSGlenn Barry 		krb5_pa_data * const *,
2132*5e01956fSGlenn Barry 		const krb5_data *,
2133*5e01956fSGlenn Barry 		krb5_creds *,
2134*5e01956fSGlenn Barry 	        krb5_response * ,
2135*5e01956fSGlenn Barry 		char **);
2136505d05c7Sgtb #endif
2137505d05c7Sgtb 
2138505d05c7Sgtb #if KRB5_DEPRECATED
2139505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt
2140505d05c7Sgtb 	(krb5_context,
2141505d05c7Sgtb 		krb5_flags,
2142505d05c7Sgtb 		krb5_address * const *,
2143505d05c7Sgtb 		krb5_enctype *,
2144505d05c7Sgtb 		krb5_preauthtype *,
2145505d05c7Sgtb 		krb5_error_code ( * )(krb5_context,
2146505d05c7Sgtb 					krb5_enctype,
21477c478bd9Sstevel@tonic-gate 					krb5_data *,
2148505d05c7Sgtb 					krb5_const_pointer,
2149505d05c7Sgtb 					krb5_keyblock **),
2150505d05c7Sgtb 		krb5_const_pointer,
2151505d05c7Sgtb 		krb5_error_code ( * )(krb5_context,
2152505d05c7Sgtb 					const krb5_keyblock *,
2153505d05c7Sgtb 					krb5_const_pointer,
2154505d05c7Sgtb 					krb5_kdc_rep * ),
2155505d05c7Sgtb 		krb5_const_pointer,
2156505d05c7Sgtb 		krb5_creds *,
2157505d05c7Sgtb 		krb5_ccache,
2158505d05c7Sgtb 		krb5_kdc_rep ** );
2159505d05c7Sgtb 
2160505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_password
2161505d05c7Sgtb 	(krb5_context,
2162505d05c7Sgtb 		krb5_flags,
2163505d05c7Sgtb 		krb5_address * const *,
2164505d05c7Sgtb 		krb5_enctype *,
2165505d05c7Sgtb 		krb5_preauthtype *,
2166505d05c7Sgtb 		const char *,
2167505d05c7Sgtb 		krb5_ccache,
2168505d05c7Sgtb 		krb5_creds *,
2169505d05c7Sgtb 		krb5_kdc_rep ** );
2170505d05c7Sgtb 
2171505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_skey
2172505d05c7Sgtb 	(krb5_context,
2173505d05c7Sgtb 		krb5_flags,
2174505d05c7Sgtb 		krb5_address * const *,
2175505d05c7Sgtb 		krb5_enctype *,
2176505d05c7Sgtb 		krb5_preauthtype *,
2177505d05c7Sgtb 		const krb5_keyblock *,
2178505d05c7Sgtb 		krb5_ccache,
2179505d05c7Sgtb 		krb5_creds *,
2180505d05c7Sgtb 		krb5_kdc_rep ** );
2181505d05c7Sgtb 
2182505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_in_tkt_with_keytab
2183505d05c7Sgtb 	(krb5_context,
2184505d05c7Sgtb 		krb5_flags,
2185505d05c7Sgtb 		krb5_address * const *,
2186505d05c7Sgtb 		krb5_enctype *,
2187505d05c7Sgtb 		krb5_preauthtype *,
2188505d05c7Sgtb 		krb5_keytab,
2189505d05c7Sgtb 		krb5_ccache,
2190505d05c7Sgtb 		krb5_creds *,
2191505d05c7Sgtb 		krb5_kdc_rep ** );
2192505d05c7Sgtb #endif /* KRB5_DEPRECATED */
2193505d05c7Sgtb 
2194505d05c7Sgtb #if KRB5_PRIVATE
2195505d05c7Sgtb krb5_error_code krb5_decode_kdc_rep
2196505d05c7Sgtb 	(krb5_context,
2197505d05c7Sgtb 		krb5_data *,
2198505d05c7Sgtb 		const krb5_keyblock *,
2199505d05c7Sgtb 		krb5_kdc_rep ** );
2200505d05c7Sgtb #endif
22017c478bd9Sstevel@tonic-gate 
22027c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_req
2203505d05c7Sgtb 	(krb5_context,
22047c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
2205505d05c7Sgtb 		const krb5_data *,
22067c478bd9Sstevel@tonic-gate 		krb5_const_principal,
22077c478bd9Sstevel@tonic-gate 		krb5_keytab,
22087c478bd9Sstevel@tonic-gate 		krb5_flags *,
2209505d05c7Sgtb 		krb5_ticket **);
22107c478bd9Sstevel@tonic-gate 
2211505d05c7Sgtb #if KRB5_PRIVATE
22127c478bd9Sstevel@tonic-gate krb5_error_code krb5_rd_req_decoded
2213505d05c7Sgtb 	(krb5_context,
22147c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
2215505d05c7Sgtb 		const krb5_ap_req *,
22167c478bd9Sstevel@tonic-gate 		krb5_const_principal,
22177c478bd9Sstevel@tonic-gate 		krb5_keytab,
22187c478bd9Sstevel@tonic-gate 		krb5_flags *,
2219505d05c7Sgtb 		krb5_ticket **);
22207c478bd9Sstevel@tonic-gate 
22217c478bd9Sstevel@tonic-gate krb5_error_code krb5_rd_req_decoded_anyflag
2222505d05c7Sgtb 	(krb5_context,
22237c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
2224505d05c7Sgtb 		const krb5_ap_req *,
22257c478bd9Sstevel@tonic-gate 		krb5_const_principal,
22267c478bd9Sstevel@tonic-gate 		krb5_keytab,
22277c478bd9Sstevel@tonic-gate 		krb5_flags *,
2228505d05c7Sgtb 		krb5_ticket **);
2229505d05c7Sgtb #endif
22307c478bd9Sstevel@tonic-gate 
22317c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_kt_read_service_key
2232505d05c7Sgtb 	(krb5_context,
22337c478bd9Sstevel@tonic-gate 		krb5_pointer,
22347c478bd9Sstevel@tonic-gate 		krb5_principal,
22357c478bd9Sstevel@tonic-gate 		krb5_kvno,
22367c478bd9Sstevel@tonic-gate 		krb5_enctype,
2237505d05c7Sgtb 		krb5_keyblock **);
22387c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_safe
2239505d05c7Sgtb 	(krb5_context,
22407c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2241505d05c7Sgtb 		const krb5_data *,
22427c478bd9Sstevel@tonic-gate 		krb5_data *,
2243505d05c7Sgtb 		krb5_replay_data *);
22447c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_priv
2245505d05c7Sgtb 	(krb5_context,
22467c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2247505d05c7Sgtb 		const krb5_data *,
22487c478bd9Sstevel@tonic-gate 		krb5_data *,
2249505d05c7Sgtb 		krb5_replay_data *);
2250505d05c7Sgtb #if KRB5_PRIVATE
22517c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cc_register
2252505d05c7Sgtb 	(krb5_context,
22537c478bd9Sstevel@tonic-gate 		krb5_cc_ops *,
2254505d05c7Sgtb 		krb5_boolean );
2255505d05c7Sgtb #endif
22567c478bd9Sstevel@tonic-gate 
22577c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_sendauth
2258505d05c7Sgtb 	(krb5_context,
22597c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
22607c478bd9Sstevel@tonic-gate 		krb5_pointer,
22617c478bd9Sstevel@tonic-gate 		char *,
22627c478bd9Sstevel@tonic-gate 		krb5_principal,
22637c478bd9Sstevel@tonic-gate 		krb5_principal,
22647c478bd9Sstevel@tonic-gate 		krb5_flags,
22657c478bd9Sstevel@tonic-gate 		krb5_data *,
22667c478bd9Sstevel@tonic-gate 		krb5_creds *,
22677c478bd9Sstevel@tonic-gate 		krb5_ccache,
22687c478bd9Sstevel@tonic-gate 		krb5_error **,
22697c478bd9Sstevel@tonic-gate 		krb5_ap_rep_enc_part **,
2270505d05c7Sgtb 		krb5_creds **);
22717c478bd9Sstevel@tonic-gate 
22727c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_recvauth
2273505d05c7Sgtb 	(krb5_context,
22747c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
22757c478bd9Sstevel@tonic-gate 		krb5_pointer,
22767c478bd9Sstevel@tonic-gate 		char *,
22777c478bd9Sstevel@tonic-gate 		krb5_principal,
22787c478bd9Sstevel@tonic-gate 		krb5_int32,
22797c478bd9Sstevel@tonic-gate 		krb5_keytab,
2280505d05c7Sgtb 		krb5_ticket **);
22817c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_recvauth_version
2282505d05c7Sgtb 	(krb5_context,
22837c478bd9Sstevel@tonic-gate 		krb5_auth_context *,
22847c478bd9Sstevel@tonic-gate 		krb5_pointer,
22857c478bd9Sstevel@tonic-gate 		krb5_principal,
22867c478bd9Sstevel@tonic-gate 		krb5_int32,
22877c478bd9Sstevel@tonic-gate 		krb5_keytab,
22887c478bd9Sstevel@tonic-gate 		krb5_ticket **,
2289505d05c7Sgtb 		krb5_data *);
22907c478bd9Sstevel@tonic-gate 
2291505d05c7Sgtb #if KRB5_PRIVATE
22927c478bd9Sstevel@tonic-gate krb5_error_code krb5_walk_realm_tree
2293505d05c7Sgtb 	(krb5_context,
2294505d05c7Sgtb 		const krb5_data *,
2295505d05c7Sgtb 		const krb5_data *,
22967c478bd9Sstevel@tonic-gate 		krb5_principal **,
2297505d05c7Sgtb 		int);
2298505d05c7Sgtb #endif
22997c478bd9Sstevel@tonic-gate 
23007c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_ncred
2301505d05c7Sgtb 	(krb5_context,
23027c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23037c478bd9Sstevel@tonic-gate 		krb5_creds **,
23047c478bd9Sstevel@tonic-gate 		krb5_data **,
2305505d05c7Sgtb 		krb5_replay_data *);
23067c478bd9Sstevel@tonic-gate 
23077c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_mk_1cred
2308505d05c7Sgtb 	(krb5_context,
23097c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23107c478bd9Sstevel@tonic-gate 		krb5_creds *,
23117c478bd9Sstevel@tonic-gate 		krb5_data **,
2312505d05c7Sgtb 		krb5_replay_data *);
23137c478bd9Sstevel@tonic-gate 
23147c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_rd_cred
2315505d05c7Sgtb 	(krb5_context,
23167c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23177c478bd9Sstevel@tonic-gate 		krb5_data *,
23187c478bd9Sstevel@tonic-gate 		krb5_creds ***,
2319505d05c7Sgtb 		krb5_replay_data *);
23207c478bd9Sstevel@tonic-gate 
23217c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_fwd_tgt_creds
2322505d05c7Sgtb 	(krb5_context,
23237c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23247c478bd9Sstevel@tonic-gate 		char *,
23257c478bd9Sstevel@tonic-gate 		krb5_principal,
23267c478bd9Sstevel@tonic-gate 		krb5_principal,
23277c478bd9Sstevel@tonic-gate 		krb5_ccache,
23287c478bd9Sstevel@tonic-gate 		int forwardable,
2329505d05c7Sgtb 		krb5_data *);
23307c478bd9Sstevel@tonic-gate 
23317c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_init
2332505d05c7Sgtb 	(krb5_context,
2333505d05c7Sgtb 		krb5_auth_context *);
23347c478bd9Sstevel@tonic-gate 
23357c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_free
2336505d05c7Sgtb 	(krb5_context,
2337505d05c7Sgtb 		krb5_auth_context);
23387c478bd9Sstevel@tonic-gate 
23397c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setflags
2340505d05c7Sgtb 	(krb5_context,
23417c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2342505d05c7Sgtb 		krb5_int32);
23437c478bd9Sstevel@tonic-gate 
23447c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getflags
2345505d05c7Sgtb 	(krb5_context,
23467c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2347505d05c7Sgtb 		krb5_int32 *);
23487c478bd9Sstevel@tonic-gate 
23497c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
23507c478bd9Sstevel@tonic-gate krb5_auth_con_set_checksum_func (krb5_context, krb5_auth_context,
23517c478bd9Sstevel@tonic-gate 				 krb5_mk_req_checksum_func, void *);
23527c478bd9Sstevel@tonic-gate 
23537c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
23547c478bd9Sstevel@tonic-gate krb5_auth_con_get_checksum_func( krb5_context, krb5_auth_context,
23557c478bd9Sstevel@tonic-gate 				 krb5_mk_req_checksum_func *, void **);
23567c478bd9Sstevel@tonic-gate 
2357505d05c7Sgtb krb5_error_code KRB5_CALLCONV_WRONG krb5_auth_con_setaddrs
2358505d05c7Sgtb 	(krb5_context,
23597c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23607c478bd9Sstevel@tonic-gate 		krb5_address *,
2361505d05c7Sgtb 		krb5_address *);
23627c478bd9Sstevel@tonic-gate 
2363505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getaddrs
2364505d05c7Sgtb 	(krb5_context,
23657c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23667c478bd9Sstevel@tonic-gate 		krb5_address **,
2367505d05c7Sgtb 		krb5_address **);
23687c478bd9Sstevel@tonic-gate 
2369505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_setports
2370505d05c7Sgtb 	(krb5_context,
23717c478bd9Sstevel@tonic-gate 		krb5_auth_context,
23727c478bd9Sstevel@tonic-gate 		krb5_address *,
2373505d05c7Sgtb 		krb5_address *);
23747c478bd9Sstevel@tonic-gate 
23757c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setuseruserkey
2376505d05c7Sgtb 	(krb5_context,
23777c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2378505d05c7Sgtb 		krb5_keyblock *);
23797c478bd9Sstevel@tonic-gate 
23807c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getkey
2381505d05c7Sgtb 	(krb5_context,
23827c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2383505d05c7Sgtb 		krb5_keyblock **);
23847c478bd9Sstevel@tonic-gate 
23857c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getsendsubkey(
23867c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock **);
23877c478bd9Sstevel@tonic-gate 
23887c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getrecvsubkey(
23897c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock **);
23907c478bd9Sstevel@tonic-gate 
23917c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setsendsubkey(
23927c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock *);
23937c478bd9Sstevel@tonic-gate 
23947c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_setrecvsubkey(
23957c478bd9Sstevel@tonic-gate     krb5_context, krb5_auth_context, krb5_keyblock *);
23967c478bd9Sstevel@tonic-gate 
2397505d05c7Sgtb #if KRB5_DEPRECATED
23987c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalsubkey
2399505d05c7Sgtb 	(krb5_context,
24007c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2401505d05c7Sgtb 		krb5_keyblock **);
24027c478bd9Sstevel@tonic-gate 
24037c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_getremotesubkey
2404505d05c7Sgtb 	(krb5_context,
24057c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2406505d05c7Sgtb 		krb5_keyblock **);
2407505d05c7Sgtb #endif
2408505d05c7Sgtb 
2409505d05c7Sgtb #if KRB5_PRIVATE
2410505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_set_req_cksumtype
2411505d05c7Sgtb 	(krb5_context,
2412505d05c7Sgtb 		krb5_auth_context,
2413505d05c7Sgtb 		krb5_cksumtype);
2414505d05c7Sgtb 
2415505d05c7Sgtb krb5_error_code krb5_auth_con_set_safe_cksumtype
2416505d05c7Sgtb 	(krb5_context,
2417505d05c7Sgtb 		krb5_auth_context,
2418505d05c7Sgtb 		krb5_cksumtype);
2419505d05c7Sgtb #endif
2420505d05c7Sgtb 
2421505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getlocalseqnumber
2422505d05c7Sgtb 	(krb5_context,
2423505d05c7Sgtb 		krb5_auth_context,
2424505d05c7Sgtb 		krb5_int32 *);
2425505d05c7Sgtb 
2426505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getremoteseqnumber
2427505d05c7Sgtb 	(krb5_context,
2428505d05c7Sgtb 		krb5_auth_context,
2429505d05c7Sgtb 		krb5_int32 *);
2430505d05c7Sgtb 
2431505d05c7Sgtb #if KRB5_DEPRECATED
2432505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_initivector
2433505d05c7Sgtb 	(krb5_context,
2434505d05c7Sgtb 		krb5_auth_context);
2435505d05c7Sgtb #endif
2436505d05c7Sgtb 
2437505d05c7Sgtb #if KRB5_PRIVATE
2438505d05c7Sgtb krb5_error_code krb5_auth_con_setivector
2439505d05c7Sgtb 	(krb5_context,
2440505d05c7Sgtb 		krb5_auth_context,
2441505d05c7Sgtb 		krb5_pointer);
2442505d05c7Sgtb 
2443505d05c7Sgtb krb5_error_code krb5_auth_con_getivector
2444505d05c7Sgtb 	(krb5_context,
2445505d05c7Sgtb 		krb5_auth_context,
2446505d05c7Sgtb 		krb5_pointer *);
2447505d05c7Sgtb #endif
2448505d05c7Sgtb 
2449505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_setrcache
2450505d05c7Sgtb 	(krb5_context,
2451505d05c7Sgtb 		krb5_auth_context,
2452505d05c7Sgtb 		krb5_rcache);
2453505d05c7Sgtb 
2454505d05c7Sgtb krb5_error_code KRB5_CALLCONV_WRONG krb5_auth_con_getrcache
2455505d05c7Sgtb 	(krb5_context,
2456505d05c7Sgtb 		krb5_auth_context,
2457505d05c7Sgtb 		krb5_rcache *);
2458505d05c7Sgtb 
2459505d05c7Sgtb #if KRB5_PRIVATE
2460505d05c7Sgtb krb5_error_code krb5_auth_con_setpermetypes
2461505d05c7Sgtb 	(krb5_context,
2462505d05c7Sgtb 	    krb5_auth_context,
2463505d05c7Sgtb 	    const krb5_enctype *);
2464505d05c7Sgtb 
2465505d05c7Sgtb krb5_error_code krb5_auth_con_getpermetypes
2466505d05c7Sgtb 	(krb5_context,
2467505d05c7Sgtb 	    krb5_auth_context,
2468505d05c7Sgtb 	    krb5_enctype **);
2469505d05c7Sgtb #endif
2470505d05c7Sgtb 
2471505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_auth_con_getauthenticator
2472505d05c7Sgtb 	(krb5_context,
2473505d05c7Sgtb 		krb5_auth_context,
2474505d05c7Sgtb 		krb5_authenticator **);
24757c478bd9Sstevel@tonic-gate 
24767c478bd9Sstevel@tonic-gate #define KRB5_REALM_BRANCH_CHAR '.'
24777c478bd9Sstevel@tonic-gate 
24787c478bd9Sstevel@tonic-gate /*
24797c478bd9Sstevel@tonic-gate  * end "func-proto.h"
24807c478bd9Sstevel@tonic-gate  */
24817c478bd9Sstevel@tonic-gate 
24827c478bd9Sstevel@tonic-gate /*
24837c478bd9Sstevel@tonic-gate  * begin stuff from libos.h
24847c478bd9Sstevel@tonic-gate  */
24857c478bd9Sstevel@tonic-gate 
2486505d05c7Sgtb #if KRB5_PRIVATE
2487505d05c7Sgtb krb5_error_code krb5_read_message (krb5_context, krb5_pointer, krb5_data *);
2488505d05c7Sgtb krb5_error_code krb5_write_message (krb5_context, krb5_pointer, krb5_data *);
2489505d05c7Sgtb int krb5_net_read (krb5_context, int , char *, int);
2490505d05c7Sgtb int krb5_net_write (krb5_context, int , const char *, int);
2491505d05c7Sgtb #endif
2492505d05c7Sgtb 
24937c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_read_password
2494505d05c7Sgtb 	(krb5_context,
24957c478bd9Sstevel@tonic-gate 		const char *,
24967c478bd9Sstevel@tonic-gate 		const char *,
24977c478bd9Sstevel@tonic-gate 		char *,
2498505d05c7Sgtb 		unsigned int * );
2499505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_aname_to_localname
2500505d05c7Sgtb 	(krb5_context,
25017c478bd9Sstevel@tonic-gate 		krb5_const_principal,
2502505d05c7Sgtb 		int,
2503505d05c7Sgtb 		char * );
25047c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_host_realm
2505505d05c7Sgtb 	(krb5_context,
25067c478bd9Sstevel@tonic-gate 		const char *,
2507505d05c7Sgtb 		char *** );
2508fe598cdcSmp153739 krb5_error_code KRB5_CALLCONV krb5_get_fallback_host_realm
2509fe598cdcSmp153739 	(krb5_context,
2510fe598cdcSmp153739 		krb5_data *,
2511fe598cdcSmp153739 		char *** );
25127c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_free_host_realm
2513505d05c7Sgtb 	(krb5_context,
2514505d05c7Sgtb 		char * const * );
2515505d05c7Sgtb #if KRB5_PRIVATE
25167c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_get_realm_domain
2517505d05c7Sgtb 	(krb5_context,
25187c478bd9Sstevel@tonic-gate 		const char *,
2519505d05c7Sgtb 		char ** );
2520505d05c7Sgtb #endif
25217c478bd9Sstevel@tonic-gate krb5_boolean KRB5_CALLCONV krb5_kuserok
2522505d05c7Sgtb 	(krb5_context,
2523505d05c7Sgtb 		krb5_principal, const char *);
25247c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_auth_con_genaddrs
2525505d05c7Sgtb 	(krb5_context,
25267c478bd9Sstevel@tonic-gate 		krb5_auth_context,
2527505d05c7Sgtb 		int, int);
2528505d05c7Sgtb #if KRB5_PRIVATE
25297c478bd9Sstevel@tonic-gate krb5_error_code krb5_gen_portaddr
2530505d05c7Sgtb 	(krb5_context,
25317c478bd9Sstevel@tonic-gate 		const krb5_address *,
25327c478bd9Sstevel@tonic-gate 		krb5_const_pointer,
2533505d05c7Sgtb 		krb5_address **);
2534505d05c7Sgtb krb5_error_code krb5_gen_replay_name
2535505d05c7Sgtb 	(krb5_context,
2536505d05c7Sgtb 		const krb5_address *,
2537505d05c7Sgtb 		const char *,
2538505d05c7Sgtb 		char **);
25397c478bd9Sstevel@tonic-gate krb5_error_code krb5_make_fulladdr
2540505d05c7Sgtb 	(krb5_context,
25417c478bd9Sstevel@tonic-gate 		krb5_address *,
25427c478bd9Sstevel@tonic-gate 		krb5_address *,
2543505d05c7Sgtb 		krb5_address *);
2544505d05c7Sgtb #endif
25457c478bd9Sstevel@tonic-gate 
2546505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_set_real_time
2547505d05c7Sgtb 	(krb5_context, krb5_int32, krb5_int32);
25487c478bd9Sstevel@tonic-gate 
2549505d05c7Sgtb #if KRB5_PRIVATE
25507c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_debugging_time
2551505d05c7Sgtb 	(krb5_context, krb5_int32, krb5_int32);
25527c478bd9Sstevel@tonic-gate krb5_error_code krb5_use_natural_time
2553505d05c7Sgtb 	(krb5_context);
2554505d05c7Sgtb #endif
2555505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_get_time_offsets
2556505d05c7Sgtb 	(krb5_context, krb5_int32 *, krb5_int32 *);
2557505d05c7Sgtb #if KRB5_PRIVATE
25587c478bd9Sstevel@tonic-gate krb5_error_code krb5_set_time_offsets
2559505d05c7Sgtb 	(krb5_context, krb5_int32, krb5_int32);
2560505d05c7Sgtb #endif
25617c478bd9Sstevel@tonic-gate 
25627c478bd9Sstevel@tonic-gate /* str_conv.c */
25637c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_enctype
2564505d05c7Sgtb 	(char *, krb5_enctype *);
25657c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_salttype
2566505d05c7Sgtb 	(char *, krb5_int32 *);
25677c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_cksumtype
2568505d05c7Sgtb 	(char *, krb5_cksumtype *);
25697c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_timestamp
2570505d05c7Sgtb 	(char *, krb5_timestamp *);
25717c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_string_to_deltat
2572505d05c7Sgtb 	(char *, krb5_deltat *);
25737c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_enctype_to_string
2574505d05c7Sgtb 	(krb5_enctype, char *, size_t);
25757c64d375Smp153739 /* Solaris Kerberos */
25767c64d375Smp153739 krb5_error_code KRB5_CALLCONV krb5_enctype_to_istring
25777c64d375Smp153739 	(krb5_enctype, char *, size_t);
25787c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_salttype_to_string
2579505d05c7Sgtb 	(krb5_int32, char *, size_t);
25807c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_cksumtype_to_string
2581505d05c7Sgtb 	(krb5_cksumtype, char *, size_t);
25827c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_timestamp_to_string
2583505d05c7Sgtb 	(krb5_timestamp, char *, size_t);
25847c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_timestamp_to_sfstring
2585505d05c7Sgtb 	(krb5_timestamp, char *, size_t, char *);
25867c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_deltat_to_string
2587505d05c7Sgtb 	(krb5_deltat, char *, size_t);
2588505d05c7Sgtb 
25897c478bd9Sstevel@tonic-gate 
25907c478bd9Sstevel@tonic-gate /*
25917c478bd9Sstevel@tonic-gate  * end stuff from libos.h
25927c478bd9Sstevel@tonic-gate  */
25937c478bd9Sstevel@tonic-gate 
25947c478bd9Sstevel@tonic-gate /*
25957c478bd9Sstevel@tonic-gate  * begin "k5-free.h"
25967c478bd9Sstevel@tonic-gate  */
25977c478bd9Sstevel@tonic-gate 
25987c478bd9Sstevel@tonic-gate /* to keep lint happy */
25997c478bd9Sstevel@tonic-gate #ifdef _KERNEL
26007c478bd9Sstevel@tonic-gate #define krb5_xfree_wrap(val,n) kmem_free((char *)(val),n)
26017c478bd9Sstevel@tonic-gate #else
26027c478bd9Sstevel@tonic-gate #define krb5_xfree_wrap(val,n) free((char *)(val))
26037c478bd9Sstevel@tonic-gate #define krb5_xfree(val) free((char *)(val))
26047c478bd9Sstevel@tonic-gate #endif
26057c478bd9Sstevel@tonic-gate 
26067c478bd9Sstevel@tonic-gate /*
26077c478bd9Sstevel@tonic-gate  * end "k5-free.h"
26087c478bd9Sstevel@tonic-gate  */
26097c478bd9Sstevel@tonic-gate 
26107c478bd9Sstevel@tonic-gate /* The name of the Kerberos ticket granting service... and its size */
26117c478bd9Sstevel@tonic-gate #define	KRB5_TGS_NAME		"krbtgt"
26127c478bd9Sstevel@tonic-gate #define KRB5_TGS_NAME_SIZE	6
26137c478bd9Sstevel@tonic-gate 
26147c478bd9Sstevel@tonic-gate /* flags for recvauth */
26157c478bd9Sstevel@tonic-gate #define KRB5_RECVAUTH_SKIP_VERSION	0x0001
26167c478bd9Sstevel@tonic-gate #define KRB5_RECVAUTH_BADAUTHVERS	0x0002
26177c478bd9Sstevel@tonic-gate /* initial ticket api functions */
26187c478bd9Sstevel@tonic-gate 
26197c478bd9Sstevel@tonic-gate typedef struct _krb5_prompt {
26207c478bd9Sstevel@tonic-gate     char *prompt;
26217c478bd9Sstevel@tonic-gate     int hidden;
26227c478bd9Sstevel@tonic-gate     krb5_data *reply;
26237c478bd9Sstevel@tonic-gate } krb5_prompt;
26247c478bd9Sstevel@tonic-gate 
26257c478bd9Sstevel@tonic-gate typedef krb5_error_code (KRB5_CALLCONV *krb5_prompter_fct)(krb5_context context,
26267c478bd9Sstevel@tonic-gate 					     void *data,
26277c478bd9Sstevel@tonic-gate 					     const char *name,
26287c478bd9Sstevel@tonic-gate 					     const char *banner,
26297c478bd9Sstevel@tonic-gate 					     int num_prompts,
26307c478bd9Sstevel@tonic-gate 					     krb5_prompt prompts[]);
26317c478bd9Sstevel@tonic-gate 
26327c478bd9Sstevel@tonic-gate 
26337c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
2634159d09a2SMark Phalan krb5_prompter_posix (krb5_context context,
26357c478bd9Sstevel@tonic-gate 		void *data,
26367c478bd9Sstevel@tonic-gate 		const char *name,
26377c478bd9Sstevel@tonic-gate 		const char *banner,
26387c478bd9Sstevel@tonic-gate 		int num_prompts,
2639505d05c7Sgtb 		krb5_prompt prompts[]);
26407c478bd9Sstevel@tonic-gate 
26417c478bd9Sstevel@tonic-gate typedef struct _krb5_get_init_creds_opt {
26427c478bd9Sstevel@tonic-gate     krb5_flags flags;
26437c478bd9Sstevel@tonic-gate     krb5_deltat tkt_life;
26447c478bd9Sstevel@tonic-gate     krb5_deltat renew_life;
26457c478bd9Sstevel@tonic-gate     int forwardable;
26467c478bd9Sstevel@tonic-gate     int proxiable;
26477c478bd9Sstevel@tonic-gate     krb5_enctype *etype_list;
26487c478bd9Sstevel@tonic-gate     int etype_list_length;
26497c478bd9Sstevel@tonic-gate     krb5_address **address_list;
26507c478bd9Sstevel@tonic-gate     krb5_preauthtype *preauth_list;
26517c478bd9Sstevel@tonic-gate     int preauth_list_length;
26527c478bd9Sstevel@tonic-gate     krb5_data *salt;
26537c478bd9Sstevel@tonic-gate } krb5_get_init_creds_opt;
26547c478bd9Sstevel@tonic-gate 
26557c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_TKT_LIFE	0x0001
26567c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_RENEW_LIFE	0x0002
26577c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_FORWARDABLE	0x0004
26587c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_PROXIABLE	0x0008
26597c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_ETYPE_LIST	0x0010
26607c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_ADDRESS_LIST	0x0020
26617c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_PREAUTH_LIST	0x0040
26627c478bd9Sstevel@tonic-gate #define KRB5_GET_INIT_CREDS_OPT_SALT		0x0080
2663159d09a2SMark Phalan #define KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT	0x0100
2664159d09a2SMark Phalan 
2665159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
2666159d09a2SMark Phalan krb5_get_init_creds_opt_alloc
2667159d09a2SMark Phalan (krb5_context context,
2668159d09a2SMark Phalan 		krb5_get_init_creds_opt **opt);
2669159d09a2SMark Phalan 
2670159d09a2SMark Phalan void KRB5_CALLCONV
2671159d09a2SMark Phalan krb5_get_init_creds_opt_free
2672159d09a2SMark Phalan (krb5_context context,
2673159d09a2SMark Phalan 		krb5_get_init_creds_opt *opt);
26747c478bd9Sstevel@tonic-gate 
26757c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26767c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_init
2677505d05c7Sgtb (krb5_get_init_creds_opt *opt);
26787c478bd9Sstevel@tonic-gate 
26797c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26807c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_tkt_life
2681505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2682505d05c7Sgtb 		krb5_deltat tkt_life);
26837c478bd9Sstevel@tonic-gate 
26847c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26857c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_renew_life
2686505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2687505d05c7Sgtb 		krb5_deltat renew_life);
26887c478bd9Sstevel@tonic-gate 
26897c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26907c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_forwardable
2691505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2692505d05c7Sgtb 		int forwardable);
26937c478bd9Sstevel@tonic-gate 
26947c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
26957c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_proxiable
2696505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2697505d05c7Sgtb 		int proxiable);
26987c478bd9Sstevel@tonic-gate 
26997c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27007c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_etype_list
2701505d05c7Sgtb (krb5_get_init_creds_opt *opt,
27027c478bd9Sstevel@tonic-gate 		krb5_enctype *etype_list,
2703505d05c7Sgtb 		int etype_list_length);
27047c478bd9Sstevel@tonic-gate 
27057c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27067c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_address_list
2707505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2708505d05c7Sgtb 		krb5_address **addresses);
27097c478bd9Sstevel@tonic-gate 
27107c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27117c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_preauth_list
2712505d05c7Sgtb (krb5_get_init_creds_opt *opt,
27137c478bd9Sstevel@tonic-gate 		krb5_preauthtype *preauth_list,
2714505d05c7Sgtb 		int preauth_list_length);
27157c478bd9Sstevel@tonic-gate 
27167c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27177c478bd9Sstevel@tonic-gate krb5_get_init_creds_opt_set_salt
2718505d05c7Sgtb (krb5_get_init_creds_opt *opt,
2719505d05c7Sgtb 		krb5_data *salt);
2720505d05c7Sgtb 
2721159d09a2SMark Phalan void KRB5_CALLCONV
2722159d09a2SMark Phalan krb5_get_init_creds_opt_set_change_password_prompt
2723159d09a2SMark Phalan (krb5_get_init_creds_opt *opt,
2724159d09a2SMark Phalan 		int prompt);
2725505d05c7Sgtb 
2726159d09a2SMark Phalan /* Generic preauth option attribute/value pairs */
2727159d09a2SMark Phalan typedef struct _krb5_gic_opt_pa_data {
2728159d09a2SMark Phalan     char *attr;
2729159d09a2SMark Phalan     char *value;
2730159d09a2SMark Phalan } krb5_gic_opt_pa_data;
2731159d09a2SMark Phalan 
2732159d09a2SMark Phalan /*
2733159d09a2SMark Phalan  * This function allows the caller to supply options to preauth
2734159d09a2SMark Phalan  * plugins.  Preauth plugin modules are given a chance to look
2735159d09a2SMark Phalan  * at each option at the time this function is called in ordre
2736159d09a2SMark Phalan  * to check the validity of the option.
2737159d09a2SMark Phalan  * The 'opt' pointer supplied to this function must have been
2738159d09a2SMark Phalan  * obtained using krb5_get_init_creds_opt_alloc()
2739159d09a2SMark Phalan  */
2740159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
2741159d09a2SMark Phalan krb5_get_init_creds_opt_set_pa
2742159d09a2SMark Phalan 		(krb5_context context,
2743159d09a2SMark Phalan 		krb5_get_init_creds_opt *opt,
2744159d09a2SMark Phalan 		const char *attr,
2745159d09a2SMark Phalan 		const char *value);
27467c478bd9Sstevel@tonic-gate 
27477c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27487c478bd9Sstevel@tonic-gate krb5_get_init_creds_password
2749505d05c7Sgtb (krb5_context context,
27507c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27517c478bd9Sstevel@tonic-gate 		krb5_principal client,
27527c478bd9Sstevel@tonic-gate 		char *password,
27537c478bd9Sstevel@tonic-gate 		krb5_prompter_fct prompter,
27547c478bd9Sstevel@tonic-gate 		void *data,
27557c478bd9Sstevel@tonic-gate 		krb5_deltat start_time,
27567c478bd9Sstevel@tonic-gate 		char *in_tkt_service,
2757505d05c7Sgtb 		krb5_get_init_creds_opt *k5_gic_options);
27587c478bd9Sstevel@tonic-gate 
27597c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27607c478bd9Sstevel@tonic-gate krb5_get_init_creds_keytab
2761505d05c7Sgtb (krb5_context context,
27627c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27637c478bd9Sstevel@tonic-gate 		krb5_principal client,
27647c478bd9Sstevel@tonic-gate 		krb5_keytab arg_keytab,
27657c478bd9Sstevel@tonic-gate 		krb5_deltat start_time,
27667c478bd9Sstevel@tonic-gate 		char *in_tkt_service,
2767505d05c7Sgtb 		krb5_get_init_creds_opt *k5_gic_options);
27687c478bd9Sstevel@tonic-gate 
27697c478bd9Sstevel@tonic-gate typedef struct _krb5_verify_init_creds_opt {
27707c478bd9Sstevel@tonic-gate     krb5_flags flags;
27717c478bd9Sstevel@tonic-gate     int ap_req_nofail;
27727c478bd9Sstevel@tonic-gate } krb5_verify_init_creds_opt;
27737c478bd9Sstevel@tonic-gate 
27747c478bd9Sstevel@tonic-gate #define KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL	0x0001
27757c478bd9Sstevel@tonic-gate 
27767c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27777c478bd9Sstevel@tonic-gate krb5_verify_init_creds_opt_init
2778505d05c7Sgtb (krb5_verify_init_creds_opt *k5_vic_options);
27797c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
27807c478bd9Sstevel@tonic-gate krb5_verify_init_creds_opt_set_ap_req_nofail
2781505d05c7Sgtb (krb5_verify_init_creds_opt *k5_vic_options,
2782505d05c7Sgtb 		int ap_req_nofail);
27837c478bd9Sstevel@tonic-gate 
27847c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27857c478bd9Sstevel@tonic-gate krb5_verify_init_creds
2786505d05c7Sgtb (krb5_context context,
27877c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27887c478bd9Sstevel@tonic-gate 		krb5_principal ap_req_server,
27897c478bd9Sstevel@tonic-gate 		krb5_keytab ap_req_keytab,
27907c478bd9Sstevel@tonic-gate 		krb5_ccache *ccache,
2791505d05c7Sgtb 		krb5_verify_init_creds_opt *k5_vic_options);
27927c478bd9Sstevel@tonic-gate 
27937c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
27947c478bd9Sstevel@tonic-gate krb5_get_validated_creds
2795505d05c7Sgtb (krb5_context context,
27967c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
27977c478bd9Sstevel@tonic-gate 		krb5_principal client,
27987c478bd9Sstevel@tonic-gate 		krb5_ccache ccache,
2799505d05c7Sgtb 		char *in_tkt_service);
28007c478bd9Sstevel@tonic-gate 
28017c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
28027c478bd9Sstevel@tonic-gate krb5_get_renewed_creds
2803505d05c7Sgtb (krb5_context context,
28047c478bd9Sstevel@tonic-gate 		krb5_creds *creds,
28057c478bd9Sstevel@tonic-gate 		krb5_principal client,
28067c478bd9Sstevel@tonic-gate 		krb5_ccache ccache,
2807505d05c7Sgtb 		char *in_tkt_service);
28087c478bd9Sstevel@tonic-gate 
28097c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV
28107c478bd9Sstevel@tonic-gate krb5_decode_ticket
2811505d05c7Sgtb (const krb5_data *code,
2812505d05c7Sgtb 		krb5_ticket **rep);
28137c478bd9Sstevel@tonic-gate 
28147c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
28157c478bd9Sstevel@tonic-gate krb5_appdefault_string
2816505d05c7Sgtb (krb5_context context,
28177c478bd9Sstevel@tonic-gate 		const char *appname,
28187c478bd9Sstevel@tonic-gate 	        const krb5_data *realm,
28197c478bd9Sstevel@tonic-gate  		const char *option,
28207c478bd9Sstevel@tonic-gate 		const char *default_value,
2821505d05c7Sgtb 		char ** ret_value);
28227c478bd9Sstevel@tonic-gate 
28237c478bd9Sstevel@tonic-gate void KRB5_CALLCONV
28247c478bd9Sstevel@tonic-gate krb5_appdefault_boolean
2825505d05c7Sgtb (krb5_context context,
28267c478bd9Sstevel@tonic-gate 		const char *appname,
28277c478bd9Sstevel@tonic-gate 	        const krb5_data *realm,
28287c478bd9Sstevel@tonic-gate  		const char *option,
28297c478bd9Sstevel@tonic-gate 		int default_value,
2830505d05c7Sgtb 		int *ret_value);
2831505d05c7Sgtb 
2832505d05c7Sgtb #if KRB5_PRIVATE
2833505d05c7Sgtb /*
2834505d05c7Sgtb  * The realm iterator functions
2835505d05c7Sgtb  */
2836505d05c7Sgtb 
2837505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_realm_iterator_create
2838505d05c7Sgtb 	(krb5_context context, void **iter_p);
2839505d05c7Sgtb 
2840505d05c7Sgtb krb5_error_code KRB5_CALLCONV krb5_realm_iterator
2841505d05c7Sgtb 	(krb5_context context, void **iter_p, char **ret_realm);
2842505d05c7Sgtb 
2843505d05c7Sgtb void KRB5_CALLCONV krb5_realm_iterator_free
2844505d05c7Sgtb 	(krb5_context context, void **iter_p);
2845505d05c7Sgtb 
2846505d05c7Sgtb void KRB5_CALLCONV krb5_free_realm_string
2847505d05c7Sgtb 	(krb5_context context, char *str);
2848505d05c7Sgtb #endif
28497c478bd9Sstevel@tonic-gate 
28507c478bd9Sstevel@tonic-gate /*
28517c478bd9Sstevel@tonic-gate  * The realm iterator functions
28527c478bd9Sstevel@tonic-gate  */
28537c478bd9Sstevel@tonic-gate 
28547c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_realm_iterator_create
2855505d05c7Sgtb 	(krb5_context context, void **iter_p);
28567c478bd9Sstevel@tonic-gate 
28577c478bd9Sstevel@tonic-gate krb5_error_code KRB5_CALLCONV krb5_realm_iterator
2858505d05c7Sgtb 	(krb5_context context, void **iter_p, char **ret_realm);
28597c478bd9Sstevel@tonic-gate 
28607c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_realm_iterator_free
2861505d05c7Sgtb 	(krb5_context context, void **iter_p);
28627c478bd9Sstevel@tonic-gate 
28637c478bd9Sstevel@tonic-gate void KRB5_CALLCONV krb5_free_realm_string
2864505d05c7Sgtb 	(krb5_context context, char *str);
28657c478bd9Sstevel@tonic-gate 
28667c478bd9Sstevel@tonic-gate /*
28677c478bd9Sstevel@tonic-gate  * Prompter enhancements
28687c478bd9Sstevel@tonic-gate  */
28697c478bd9Sstevel@tonic-gate 
28707c478bd9Sstevel@tonic-gate #define KRB5_PROMPT_TYPE_PASSWORD            0x1
28717c478bd9Sstevel@tonic-gate #define KRB5_PROMPT_TYPE_NEW_PASSWORD        0x2
28727c478bd9Sstevel@tonic-gate #define KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN  0x3
28737c478bd9Sstevel@tonic-gate #define KRB5_PROMPT_TYPE_PREAUTH             0x4
28747c478bd9Sstevel@tonic-gate 
28757c478bd9Sstevel@tonic-gate typedef krb5_int32 krb5_prompt_type;
28767c478bd9Sstevel@tonic-gate 
28777c478bd9Sstevel@tonic-gate krb5_prompt_type* KRB5_CALLCONV krb5_get_prompt_types
28787c478bd9Sstevel@tonic-gate 	(krb5_context context);
28797c478bd9Sstevel@tonic-gate 
288054925bf6Swillf /* Error reporting */
288154925bf6Swillf void KRB5_CALLCONV_C
288254925bf6Swillf krb5_set_error_message (krb5_context, krb5_error_code, const char *, ...);
288354925bf6Swillf #ifdef va_start
288454925bf6Swillf void KRB5_CALLCONV
288554925bf6Swillf krb5_vset_error_message (krb5_context, krb5_error_code, const char *, va_list);
288654925bf6Swillf #endif
288754925bf6Swillf /*
288854925bf6Swillf  * The behavior of krb5_get_error_message is only defined the first
288954925bf6Swillf  * time it is called after a failed call to a krb5 function using the
289054925bf6Swillf  * same context, and only when the error code passed in is the same as
289154925bf6Swillf  * that returned by the krb5 function.  Future versions may return the
289254925bf6Swillf  * same string for the second and following calls.
289354925bf6Swillf  *
289454925bf6Swillf  * The string returned by this function must be freed using
289554925bf6Swillf  * krb5_free_error_message.
289654925bf6Swillf  */
289754925bf6Swillf const char * KRB5_CALLCONV
289854925bf6Swillf krb5_get_error_message (krb5_context, krb5_error_code);
289954925bf6Swillf void KRB5_CALLCONV
290054925bf6Swillf krb5_free_error_message (krb5_context, const char *);
290154925bf6Swillf void KRB5_CALLCONV
290254925bf6Swillf krb5_clear_error_message (krb5_context);
290354925bf6Swillf 
2904ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2905ba7b222eSGlenn Barry krb5_decode_authdata_container(krb5_context context,
2906ba7b222eSGlenn Barry     krb5_authdatatype type,
2907ba7b222eSGlenn Barry     const krb5_authdata *container,
2908ba7b222eSGlenn Barry     krb5_authdata ***authdata);
2909ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2910ba7b222eSGlenn Barry krb5_encode_authdata_container(krb5_context context,
2911ba7b222eSGlenn Barry     krb5_authdatatype type,
2912ba7b222eSGlenn Barry     krb5_authdata * const*authdata,
2913ba7b222eSGlenn Barry     krb5_authdata ***container);
2914ba7b222eSGlenn Barry 
2915ba7b222eSGlenn Barry /*
2916ba7b222eSGlenn Barry  * Windows PAC
2917ba7b222eSGlenn Barry  */
2918ba7b222eSGlenn Barry struct krb5_pac_data;
2919ba7b222eSGlenn Barry typedef struct krb5_pac_data *krb5_pac;
2920ba7b222eSGlenn Barry 
2921ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2922ba7b222eSGlenn Barry krb5_pac_add_buffer
2923ba7b222eSGlenn Barry (krb5_context context,
2924ba7b222eSGlenn Barry                 krb5_pac pac,
2925ba7b222eSGlenn Barry                 krb5_ui_4 type,
2926ba7b222eSGlenn Barry                 const krb5_data *data);
2927ba7b222eSGlenn Barry 
2928ba7b222eSGlenn Barry void KRB5_CALLCONV
2929ba7b222eSGlenn Barry krb5_pac_free
2930ba7b222eSGlenn Barry (krb5_context context,
2931ba7b222eSGlenn Barry                 krb5_pac pac);
2932ba7b222eSGlenn Barry 
2933ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2934ba7b222eSGlenn Barry krb5_pac_get_buffer
2935ba7b222eSGlenn Barry (krb5_context context,
2936ba7b222eSGlenn Barry                 krb5_pac pac,
2937ba7b222eSGlenn Barry                 krb5_ui_4 type,
2938ba7b222eSGlenn Barry                 krb5_data *data);
2939ba7b222eSGlenn Barry 
2940ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2941ba7b222eSGlenn Barry krb5_pac_get_types
2942ba7b222eSGlenn Barry (krb5_context context,
2943ba7b222eSGlenn Barry                 krb5_pac pac,
2944ba7b222eSGlenn Barry                 size_t *len,
2945ba7b222eSGlenn Barry                 krb5_ui_4 **types);
2946ba7b222eSGlenn Barry 
2947ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2948ba7b222eSGlenn Barry krb5_pac_init
2949ba7b222eSGlenn Barry (krb5_context context,
2950ba7b222eSGlenn Barry                 krb5_pac *pac);
2951ba7b222eSGlenn Barry 
2952ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2953ba7b222eSGlenn Barry krb5_pac_parse
2954ba7b222eSGlenn Barry (krb5_context context,
2955ba7b222eSGlenn Barry                 const void *ptr,
2956ba7b222eSGlenn Barry                 size_t len,
2957ba7b222eSGlenn Barry                 krb5_pac *pac);
2958ba7b222eSGlenn Barry 
2959ba7b222eSGlenn Barry krb5_error_code KRB5_CALLCONV
2960ba7b222eSGlenn Barry krb5_pac_verify
2961ba7b222eSGlenn Barry (krb5_context context,
2962ba7b222eSGlenn Barry                 const krb5_pac pac,
2963ba7b222eSGlenn Barry                 krb5_timestamp authtime,
2964ba7b222eSGlenn Barry                 krb5_const_principal principal,
2965ba7b222eSGlenn Barry                 const krb5_keyblock *server,
2966ba7b222eSGlenn Barry                 const krb5_keyblock *privsvr);
2967ba7b222eSGlenn Barry 
2968159d09a2SMark Phalan 
2969505d05c7Sgtb #if TARGET_OS_MAC
2970159d09a2SMark Phalan #    pragma pack(pop)
2971159d09a2SMark Phalan #endif
2972159d09a2SMark Phalan 
2973159d09a2SMark Phalan KRB5INT_END_DECLS
2974505d05c7Sgtb 
2975505d05c7Sgtb /* Don't use this!  We're going to phase it out.  It's just here to keep
2976505d05c7Sgtb    applications from breaking right away.  */
2977505d05c7Sgtb #define krb5_const const
2978505d05c7Sgtb 
29797c478bd9Sstevel@tonic-gate #endif /* KRB5_GENERAL__ */
29807c478bd9Sstevel@tonic-gate 
2981eb42280bSWill Fiveash /*
2982eb42280bSWill Fiveash  * Solaris Kerberos: the following differs from the MIT krb5.hin as that file is
2983eb42280bSWill Fiveash  * processed to produce their krb5.h.  We do not process a krb5.hin so our
2984eb42280bSWill Fiveash  * krb5.h is manually edited.
2985eb42280bSWill Fiveash  */
29867c478bd9Sstevel@tonic-gate 
29877c478bd9Sstevel@tonic-gate /*
29887c478bd9Sstevel@tonic-gate  * krb5_err.h:
29897c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
29907c478bd9Sstevel@tonic-gate  */
29917c478bd9Sstevel@tonic-gate 
29927c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NONE                         (-1765328384L)
29937c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NAME_EXP                     (-1765328383L)
29947c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVICE_EXP                  (-1765328382L)
29957c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_BAD_PVNO                     (-1765328381L)
29967c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_C_OLD_MAST_KVNO              (-1765328380L)
29977c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_S_OLD_MAST_KVNO              (-1765328379L)
29987c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN          (-1765328378L)
29997c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN          (-1765328377L)
30007c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE         (-1765328376L)
30017c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NULL_KEY                     (-1765328375L)
30027c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_CANNOT_POSTDATE              (-1765328374L)
30037c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_NEVER_VALID                  (-1765328373L)
30047c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_POLICY                       (-1765328372L)
30057c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_BADOPTION                    (-1765328371L)
30067c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_ETYPE_NOSUPP                 (-1765328370L)
30077c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SUMTYPE_NOSUPP               (-1765328369L)
30087c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PADATA_TYPE_NOSUPP           (-1765328368L)
30097c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_TRTYPE_NOSUPP                (-1765328367L)
30107c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_CLIENT_REVOKED               (-1765328366L)
30117c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVICE_REVOKED              (-1765328365L)
30127c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_TGT_REVOKED                  (-1765328364L)
30137c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_CLIENT_NOTYET                (-1765328363L)
30147c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVICE_NOTYET               (-1765328362L)
30157c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_KEY_EXP                      (-1765328361L)
30167c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PREAUTH_FAILED               (-1765328360L)
30177c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_PREAUTH_REQUIRED             (-1765328359L)
30187c478bd9Sstevel@tonic-gate #define KRB5KDC_ERR_SERVER_NOMATCH               (-1765328358L)
3019*5e01956fSGlenn Barry #define KRB5KDC_ERR_MUST_USE_USER2USER           (-1765328357L)
3020*5e01956fSGlenn Barry #define KRB5KDC_ERR_PATH_NOT_ACCEPTED            (-1765328356L)
3021159d09a2SMark Phalan #define KRB5KDC_ERR_SVC_UNAVAILABLE              (-1765328355L)
30227c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_30                         (-1765328354L)
30237c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BAD_INTEGRITY             (-1765328353L)
30247c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_TKT_EXPIRED               (-1765328352L)
30257c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_TKT_NYV                   (-1765328351L)
30267c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_REPEAT                    (-1765328350L)
30277c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_NOT_US                    (-1765328349L)
30287c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADMATCH                  (-1765328348L)
30297c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_SKEW                      (-1765328347L)
30307c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADADDR                   (-1765328346L)
30317c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADVERSION                (-1765328345L)
30327c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_MSG_TYPE                  (-1765328344L)
30337c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_MODIFIED                  (-1765328343L)
30347c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADORDER                  (-1765328342L)
30357c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_ILL_CR_TKT                (-1765328341L)
30367c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADKEYVER                 (-1765328340L)
30377c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_NOKEY                     (-1765328339L)
30387c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_MUT_FAIL                  (-1765328338L)
30397c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADDIRECTION              (-1765328337L)
30407c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_METHOD                    (-1765328336L)
30417c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_BADSEQ                    (-1765328335L)
30427c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_INAPP_CKSUM               (-1765328334L)
3043159d09a2SMark Phalan #define KRB5KRB_AP_PATH_NOT_ACCEPTED             (-1765328333L)
3044159d09a2SMark Phalan #define KRB5KRB_ERR_RESPONSE_TOO_BIG             (-1765328332L)
30457c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_53                         (-1765328331L)
30467c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_54                         (-1765328330L)
30477c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_55                         (-1765328329L)
30487c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_56                         (-1765328328L)
30497c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_57                         (-1765328327L)
30507c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_58                         (-1765328326L)
30517c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_59                         (-1765328325L)
30527c478bd9Sstevel@tonic-gate #define KRB5KRB_ERR_GENERIC                      (-1765328324L)
30537c478bd9Sstevel@tonic-gate #define KRB5KRB_ERR_FIELD_TOOLONG                (-1765328323L)
3054159d09a2SMark Phalan #define KRB5KDC_ERR_CLIENT_NOT_TRUSTED           (-1765328322L)
3055159d09a2SMark Phalan #define KRB5KDC_ERR_KDC_NOT_TRUSTED              (-1765328321L)
3056159d09a2SMark Phalan #define KRB5KDC_ERR_INVALID_SIG                  (-1765328320L)
3057159d09a2SMark Phalan #define KRB5KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED (-1765328319L)
3058159d09a2SMark Phalan #define KRB5KDC_ERR_CERTIFICATE_MISMATCH         (-1765328318L)
3059*5e01956fSGlenn Barry #define KRB5KRB_AP_ERR_NO_TGT                    (-1765328317L)
3060*5e01956fSGlenn Barry #define KRB5KDC_ERR_WRONG_REALM                  (-1765328316L)
3061*5e01956fSGlenn Barry #define KRB5KRB_AP_ERR_USER_TO_USER_REQUIRED     (-1765328315L)
3062159d09a2SMark Phalan #define KRB5KDC_ERR_CANT_VERIFY_CERTIFICATE      (-1765328314L)
3063159d09a2SMark Phalan #define KRB5KDC_ERR_INVALID_CERTIFICATE          (-1765328313L)
3064159d09a2SMark Phalan #define KRB5KDC_ERR_REVOKED_CERTIFICATE          (-1765328312L)
3065159d09a2SMark Phalan #define KRB5KDC_ERR_REVOCATION_STATUS_UNKNOWN    (-1765328311L)
3066159d09a2SMark Phalan #define KRB5KDC_ERR_REVOCATION_STATUS_UNAVAILABLE (-1765328310L)
3067159d09a2SMark Phalan #define KRB5KDC_ERR_CLIENT_NAME_MISMATCH         (-1765328309L)
3068159d09a2SMark Phalan #define KRB5KDC_ERR_KDC_NAME_MISMATCH            (-1765328308L)
3069159d09a2SMark Phalan #define KRB5KDC_ERR_INCONSISTENT_KEY_PURPOSE     (-1765328307L)
3070159d09a2SMark Phalan #define KRB5KDC_ERR_DIGEST_IN_CERT_NOT_ACCEPTED  (-1765328306L)
3071159d09a2SMark Phalan #define KRB5KDC_ERR_PA_CHECKSUM_MUST_BE_INCLUDED (-1765328305L)
3072159d09a2SMark Phalan #define KRB5KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED (-1765328304L)
3073159d09a2SMark Phalan #define KRB5KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED (-1765328303L)
30747c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_82                         (-1765328302L)
30757c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_83                         (-1765328301L)
30767c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_84                         (-1765328300L)
30777c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_85                         (-1765328299L)
30787c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_86                         (-1765328298L)
30797c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_87                         (-1765328297L)
30807c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_88                         (-1765328296L)
30817c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_89                         (-1765328295L)
30827c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_90                         (-1765328294L)
30837c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_91                         (-1765328293L)
30847c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_92                         (-1765328292L)
30857c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_93                         (-1765328291L)
30867c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_94                         (-1765328290L)
30877c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_95                         (-1765328289L)
30887c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_96                         (-1765328288L)
30897c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_97                         (-1765328287L)
30907c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_98                         (-1765328286L)
30917c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_99                         (-1765328285L)
30927c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_100                        (-1765328284L)
30937c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_101                        (-1765328283L)
30947c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_102                        (-1765328282L)
30957c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_103                        (-1765328281L)
30967c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_104                        (-1765328280L)
30977c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_105                        (-1765328279L)
30987c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_106                        (-1765328278L)
30997c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_107                        (-1765328277L)
31007c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_108                        (-1765328276L)
31017c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_109                        (-1765328275L)
31027c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_110                        (-1765328274L)
31037c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_111                        (-1765328273L)
31047c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_112                        (-1765328272L)
31057c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_113                        (-1765328271L)
31067c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_114                        (-1765328270L)
31077c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_115                        (-1765328269L)
31087c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_116                        (-1765328268L)
31097c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_117                        (-1765328267L)
31107c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_118                        (-1765328266L)
31117c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_119                        (-1765328265L)
31127c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_120                        (-1765328264L)
31137c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_121                        (-1765328263L)
31147c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_122                        (-1765328262L)
31157c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_123                        (-1765328261L)
31167c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_124                        (-1765328260L)
31177c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_125                        (-1765328259L)
31187c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_126                        (-1765328258L)
31197c478bd9Sstevel@tonic-gate #define KRB5PLACEHOLD_127                        (-1765328257L)
31207c478bd9Sstevel@tonic-gate #define KRB5_ERR_RCSID                           (-1765328256L)
31217c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_BADLOCKFLAG                   (-1765328255L)
31227c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_CANTREADPWD                   (-1765328254L)
31237c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_BADPWDMATCH                   (-1765328253L)
31247c478bd9Sstevel@tonic-gate #define KRB5_LIBOS_PWDINTR                       (-1765328252L)
31257c478bd9Sstevel@tonic-gate #define KRB5_PARSE_ILLCHAR                       (-1765328251L)
31267c478bd9Sstevel@tonic-gate #define KRB5_PARSE_MALFORMED                     (-1765328250L)
31277c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_CANTOPEN                     (-1765328249L)
31287c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_BADFORMAT                    (-1765328248L)
31297c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_NOTENUFSPACE                 (-1765328247L)
31307c478bd9Sstevel@tonic-gate #define KRB5_BADMSGTYPE                          (-1765328246L)
31317c478bd9Sstevel@tonic-gate #define KRB5_CC_BADNAME                          (-1765328245L)
31327c478bd9Sstevel@tonic-gate #define KRB5_CC_UNKNOWN_TYPE                     (-1765328244L)
31337c478bd9Sstevel@tonic-gate #define KRB5_CC_NOTFOUND                         (-1765328243L)
31347c478bd9Sstevel@tonic-gate #define KRB5_CC_END                              (-1765328242L)
31357c478bd9Sstevel@tonic-gate #define KRB5_NO_TKT_SUPPLIED                     (-1765328241L)
31367c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_WRONG_PRINC                   (-1765328240L)
31377c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_TKT_INVALID               (-1765328239L)
31387c478bd9Sstevel@tonic-gate #define KRB5_PRINC_NOMATCH                       (-1765328238L)
31397c478bd9Sstevel@tonic-gate #define KRB5_KDCREP_MODIFIED                     (-1765328237L)
31407c478bd9Sstevel@tonic-gate #define KRB5_KDCREP_SKEW                         (-1765328236L)
31417c478bd9Sstevel@tonic-gate #define KRB5_IN_TKT_REALM_MISMATCH               (-1765328235L)
31427c478bd9Sstevel@tonic-gate #define KRB5_PROG_ETYPE_NOSUPP                   (-1765328234L)
31437c478bd9Sstevel@tonic-gate #define KRB5_PROG_KEYTYPE_NOSUPP                 (-1765328233L)
31447c478bd9Sstevel@tonic-gate #define KRB5_WRONG_ETYPE                         (-1765328232L)
31457c478bd9Sstevel@tonic-gate #define KRB5_PROG_SUMTYPE_NOSUPP                 (-1765328231L)
31467c478bd9Sstevel@tonic-gate #define KRB5_REALM_UNKNOWN                       (-1765328230L)
31477c478bd9Sstevel@tonic-gate #define KRB5_SERVICE_UNKNOWN                     (-1765328229L)
31487c478bd9Sstevel@tonic-gate #define KRB5_KDC_UNREACH                         (-1765328228L)
31497c478bd9Sstevel@tonic-gate #define KRB5_NO_LOCALNAME                        (-1765328227L)
31507c478bd9Sstevel@tonic-gate #define KRB5_MUTUAL_FAILED                       (-1765328226L)
31517c478bd9Sstevel@tonic-gate #define KRB5_RC_TYPE_EXISTS                      (-1765328225L)
31527c478bd9Sstevel@tonic-gate #define KRB5_RC_MALLOC                           (-1765328224L)
31537c478bd9Sstevel@tonic-gate #define KRB5_RC_TYPE_NOTFOUND                    (-1765328223L)
31547c478bd9Sstevel@tonic-gate #define KRB5_RC_UNKNOWN                          (-1765328222L)
31557c478bd9Sstevel@tonic-gate #define KRB5_RC_REPLAY                           (-1765328221L)
31567c478bd9Sstevel@tonic-gate #define KRB5_RC_IO                               (-1765328220L)
31577c478bd9Sstevel@tonic-gate #define KRB5_RC_NOIO                             (-1765328219L)
31587c478bd9Sstevel@tonic-gate #define KRB5_RC_PARSE                            (-1765328218L)
31597c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_EOF                           (-1765328217L)
31607c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_MALLOC                        (-1765328216L)
31617c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_PERM                          (-1765328215L)
31627c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_IO                            (-1765328214L)
31637c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_UNKNOWN                       (-1765328213L)
31647c478bd9Sstevel@tonic-gate #define KRB5_RC_IO_SPACE                         (-1765328212L)
31657c478bd9Sstevel@tonic-gate #define KRB5_TRANS_CANTOPEN                      (-1765328211L)
31667c478bd9Sstevel@tonic-gate #define KRB5_TRANS_BADFORMAT                     (-1765328210L)
31677c478bd9Sstevel@tonic-gate #define KRB5_LNAME_CANTOPEN                      (-1765328209L)
31687c478bd9Sstevel@tonic-gate #define KRB5_LNAME_NOTRANS                       (-1765328208L)
31697c478bd9Sstevel@tonic-gate #define KRB5_LNAME_BADFORMAT                     (-1765328207L)
31707c478bd9Sstevel@tonic-gate #define KRB5_CRYPTO_INTERNAL                     (-1765328206L)
31717c478bd9Sstevel@tonic-gate #define KRB5_KT_BADNAME                          (-1765328205L)
31727c478bd9Sstevel@tonic-gate #define KRB5_KT_UNKNOWN_TYPE                     (-1765328204L)
31737c478bd9Sstevel@tonic-gate #define KRB5_KT_NOTFOUND                         (-1765328203L)
31747c478bd9Sstevel@tonic-gate #define KRB5_KT_END                              (-1765328202L)
31757c478bd9Sstevel@tonic-gate #define KRB5_KT_NOWRITE                          (-1765328201L)
31767c478bd9Sstevel@tonic-gate #define KRB5_KT_IOERR                            (-1765328200L)
31777c478bd9Sstevel@tonic-gate #define KRB5_NO_TKT_IN_RLM                       (-1765328199L)
31787c478bd9Sstevel@tonic-gate #define KRB5DES_BAD_KEYPAR                       (-1765328198L)
31797c478bd9Sstevel@tonic-gate #define KRB5DES_WEAK_KEY                         (-1765328197L)
31807c478bd9Sstevel@tonic-gate #define KRB5_BAD_ENCTYPE                         (-1765328196L)
31817c478bd9Sstevel@tonic-gate #define KRB5_BAD_KEYSIZE                         (-1765328195L)
31827c478bd9Sstevel@tonic-gate #define KRB5_BAD_MSIZE                           (-1765328194L)
31837c478bd9Sstevel@tonic-gate #define KRB5_CC_TYPE_EXISTS                      (-1765328193L)
31847c478bd9Sstevel@tonic-gate #define KRB5_KT_TYPE_EXISTS                      (-1765328192L)
31857c478bd9Sstevel@tonic-gate #define KRB5_CC_IO                               (-1765328191L)
31867c478bd9Sstevel@tonic-gate #define KRB5_FCC_PERM                            (-1765328190L)
31877c478bd9Sstevel@tonic-gate #define KRB5_FCC_NOFILE                          (-1765328189L)
31887c478bd9Sstevel@tonic-gate #define KRB5_FCC_INTERNAL                        (-1765328188L)
31897c478bd9Sstevel@tonic-gate #define KRB5_CC_WRITE                            (-1765328187L)
31907c478bd9Sstevel@tonic-gate #define KRB5_CC_NOMEM                            (-1765328186L)
31917c478bd9Sstevel@tonic-gate #define KRB5_CC_FORMAT                           (-1765328185L)
31927c478bd9Sstevel@tonic-gate #define KRB5_CC_NOT_KTYPE                        (-1765328184L)
31937c478bd9Sstevel@tonic-gate #define KRB5_INVALID_FLAGS                       (-1765328183L)
31947c478bd9Sstevel@tonic-gate #define KRB5_NO_2ND_TKT                          (-1765328182L)
31957c478bd9Sstevel@tonic-gate #define KRB5_NOCREDS_SUPPLIED                    (-1765328181L)
31967c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_BADAUTHVERS                (-1765328180L)
31977c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_BADAPPLVERS                (-1765328179L)
31987c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_BADRESPONSE                (-1765328178L)
31997c478bd9Sstevel@tonic-gate #define KRB5_SENDAUTH_REJECTED                   (-1765328177L)
32007c478bd9Sstevel@tonic-gate #define KRB5_PREAUTH_BAD_TYPE                    (-1765328176L)
32017c478bd9Sstevel@tonic-gate #define KRB5_PREAUTH_NO_KEY                      (-1765328175L)
32027c478bd9Sstevel@tonic-gate #define KRB5_PREAUTH_FAILED                      (-1765328174L)
32037c478bd9Sstevel@tonic-gate #define KRB5_RCACHE_BADVNO                       (-1765328173L)
32047c478bd9Sstevel@tonic-gate #define KRB5_CCACHE_BADVNO                       (-1765328172L)
32057c478bd9Sstevel@tonic-gate #define KRB5_KEYTAB_BADVNO                       (-1765328171L)
32067c478bd9Sstevel@tonic-gate #define KRB5_PROG_ATYPE_NOSUPP                   (-1765328170L)
32077c478bd9Sstevel@tonic-gate #define KRB5_RC_REQUIRED                         (-1765328169L)
32087c478bd9Sstevel@tonic-gate #define KRB5_ERR_BAD_HOSTNAME                    (-1765328168L)
32097c478bd9Sstevel@tonic-gate #define KRB5_ERR_HOST_REALM_UNKNOWN              (-1765328167L)
32107c478bd9Sstevel@tonic-gate #define KRB5_SNAME_UNSUPP_NAMETYPE               (-1765328166L)
32117c478bd9Sstevel@tonic-gate #define KRB5KRB_AP_ERR_V4_REPLY                  (-1765328165L)
32127c478bd9Sstevel@tonic-gate #define KRB5_REALM_CANT_RESOLVE                  (-1765328164L)
32137c478bd9Sstevel@tonic-gate #define KRB5_TKT_NOT_FORWARDABLE                 (-1765328163L)
32147c478bd9Sstevel@tonic-gate #define KRB5_FWD_BAD_PRINCIPAL                   (-1765328162L)
32157c478bd9Sstevel@tonic-gate #define KRB5_GET_IN_TKT_LOOP                     (-1765328161L)
32167c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_NODEFREALM                   (-1765328160L)
32177c478bd9Sstevel@tonic-gate #define KRB5_SAM_UNSUPPORTED                     (-1765328159L)
32187c478bd9Sstevel@tonic-gate #define KRB5_SAM_INVALID_ETYPE                   (-1765328158L)
32197c478bd9Sstevel@tonic-gate #define KRB5_SAM_NO_CHECKSUM                     (-1765328157L)
32207c478bd9Sstevel@tonic-gate #define KRB5_SAM_BAD_CHECKSUM                    (-1765328156L)
32217c478bd9Sstevel@tonic-gate #define KRB5_KT_NAME_TOOLONG                     (-1765328155L)
32227c478bd9Sstevel@tonic-gate #define KRB5_KT_KVNONOTFOUND                     (-1765328154L)
32237c478bd9Sstevel@tonic-gate #define KRB5_APPL_EXPIRED                        (-1765328153L)
32247c478bd9Sstevel@tonic-gate #define KRB5_LIB_EXPIRED                         (-1765328152L)
32257c478bd9Sstevel@tonic-gate #define KRB5_CHPW_PWDNULL                        (-1765328151L)
32267c478bd9Sstevel@tonic-gate #define KRB5_CHPW_FAIL                           (-1765328150L)
32277c478bd9Sstevel@tonic-gate #define KRB5_KT_FORMAT                           (-1765328149L)
32287c478bd9Sstevel@tonic-gate #define KRB5_NOPERM_ETYPE                        (-1765328148L)
32297c478bd9Sstevel@tonic-gate #define KRB5_CONFIG_ETYPE_NOSUPP                 (-1765328147L)
32307c478bd9Sstevel@tonic-gate #define KRB5_OBSOLETE_FN                         (-1765328146L)
32317c478bd9Sstevel@tonic-gate #define KRB5_EAI_FAIL                            (-1765328145L)
32327c478bd9Sstevel@tonic-gate #define KRB5_EAI_NODATA                          (-1765328144L)
32337c478bd9Sstevel@tonic-gate #define KRB5_EAI_NONAME                          (-1765328143L)
32347c478bd9Sstevel@tonic-gate #define KRB5_EAI_SERVICE                         (-1765328142L)
32357c478bd9Sstevel@tonic-gate #define KRB5_ERR_NUMERIC_REALM                   (-1765328141L)
32367c478bd9Sstevel@tonic-gate #define KRB5_ERR_BAD_S2K_PARAMS                  (-1765328140L)
32377c478bd9Sstevel@tonic-gate #define KRB5_ERR_NO_SERVICE                      (-1765328139L)
32387c478bd9Sstevel@tonic-gate #define KRB5_CC_READONLY                         (-1765328138L)
32397c478bd9Sstevel@tonic-gate #define KRB5_CC_NOSUPP                           (-1765328137L)
32407c478bd9Sstevel@tonic-gate 
32417c478bd9Sstevel@tonic-gate /* NOTE! error values should not collide */
32427c478bd9Sstevel@tonic-gate /* XXX Note KRB5_RC_BADNAME and KRB5_CONF_NOT_CONFIGURED are Solaris specific */
32437c478bd9Sstevel@tonic-gate #define	KRB5_RC_BADNAME				(-1765328136L)
32447c478bd9Sstevel@tonic-gate #define	KRB5_CONF_NOT_CONFIGURED	 	 (-1765328135L)
32457c478bd9Sstevel@tonic-gate #ifdef _KERNEL
32467c478bd9Sstevel@tonic-gate /* XXX Note KRB5_KEF_ERROR and PKCS_ERR are Solaris specific */
32477c478bd9Sstevel@tonic-gate #define KRB5_KEF_ERROR                           (-1765328134L)
32487c478bd9Sstevel@tonic-gate #else
32497c478bd9Sstevel@tonic-gate #define PKCS_ERR				 (-1765328134L)
32507c478bd9Sstevel@tonic-gate #endif /* _KERNEL */
3251505d05c7Sgtb 
3252505d05c7Sgtb #define KRB5_DELTAT_BADFORMAT			(-1765328133L)
325354925bf6Swillf #define KRB5_PLUGIN_NO_HANDLE			(-1765328132L)
325454925bf6Swillf #define KRB5_PLUGIN_OP_NOTSUPP			(-1765328131L)
3255505d05c7Sgtb 
3256ba7b222eSGlenn Barry /* SUNW17PACresync */
3257ba7b222eSGlenn Barry #define KRB5_ERR_INVALID_UTF8			(-1765328130L)
3258ba7b222eSGlenn Barry #define KRB5_ERR_FAST_REQUIRED			(-1765328129L)
3259ba7b222eSGlenn Barry #define KRB5_LOCAL_ADDR_REQUIRED		(-1765328128L)
3260ba7b222eSGlenn Barry #define KRB5_REMOTE_ADDR_REQUIRED		(-1765328127L)
3261ba7b222eSGlenn Barry 
3262ba7b222eSGlenn Barry 
32637c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_krb5 (-1765328384L)
32647c478bd9Sstevel@tonic-gate 
32657c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
32667c478bd9Sstevel@tonic-gate #define krb5_err_base ERROR_TABLE_BASE_krb5
32677c478bd9Sstevel@tonic-gate /*
32687c478bd9Sstevel@tonic-gate  * kdb5_err.h:
32697c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
32707c478bd9Sstevel@tonic-gate  */
32717c478bd9Sstevel@tonic-gate #define KRB5_KDB_RCSID                           (-1780008448L)
32727c478bd9Sstevel@tonic-gate #define KRB5_KDB_INUSE                           (-1780008447L)
32737c478bd9Sstevel@tonic-gate #define KRB5_KDB_UK_SERROR                       (-1780008446L)
32747c478bd9Sstevel@tonic-gate #define KRB5_KDB_UK_RERROR                       (-1780008445L)
32757c478bd9Sstevel@tonic-gate #define KRB5_KDB_UNAUTH                          (-1780008444L)
32767c478bd9Sstevel@tonic-gate #define KRB5_KDB_NOENTRY                         (-1780008443L)
32777c478bd9Sstevel@tonic-gate #define KRB5_KDB_ILL_WILDCARD                    (-1780008442L)
32787c478bd9Sstevel@tonic-gate #define KRB5_KDB_DB_INUSE                        (-1780008441L)
32797c478bd9Sstevel@tonic-gate #define KRB5_KDB_DB_CHANGED                      (-1780008440L)
32807c478bd9Sstevel@tonic-gate #define KRB5_KDB_TRUNCATED_RECORD                (-1780008439L)
32817c478bd9Sstevel@tonic-gate #define KRB5_KDB_RECURSIVELOCK                   (-1780008438L)
32827c478bd9Sstevel@tonic-gate #define KRB5_KDB_NOTLOCKED                       (-1780008437L)
32837c478bd9Sstevel@tonic-gate #define KRB5_KDB_BADLOCKMODE                     (-1780008436L)
32847c478bd9Sstevel@tonic-gate #define KRB5_KDB_DBNOTINITED                     (-1780008435L)
32857c478bd9Sstevel@tonic-gate #define KRB5_KDB_DBINITED                        (-1780008434L)
32867c478bd9Sstevel@tonic-gate #define KRB5_KDB_ILLDIRECTION                    (-1780008433L)
32877c478bd9Sstevel@tonic-gate #define KRB5_KDB_NOMASTERKEY                     (-1780008432L)
32887c478bd9Sstevel@tonic-gate #define KRB5_KDB_BADMASTERKEY                    (-1780008431L)
32897c478bd9Sstevel@tonic-gate #define KRB5_KDB_INVALIDKEYSIZE                  (-1780008430L)
32907c478bd9Sstevel@tonic-gate #define KRB5_KDB_CANTREAD_STORED                 (-1780008429L)
32917c478bd9Sstevel@tonic-gate #define KRB5_KDB_BADSTORED_MKEY                  (-1780008428L)
32927c478bd9Sstevel@tonic-gate #define KRB5_KDB_CANTLOCK_DB                     (-1780008427L)
32937c478bd9Sstevel@tonic-gate #define KRB5_KDB_DB_CORRUPT                      (-1780008426L)
32947c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_VERSION                     (-1780008425L)
32957c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_SALTTYPE                    (-1780008424L)
32967c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_ENCTYPE                     (-1780008423L)
32977c478bd9Sstevel@tonic-gate #define KRB5_KDB_BAD_CREATEFLAGS                 (-1780008422L)
32987c478bd9Sstevel@tonic-gate #define KRB5_KDB_NO_PERMITTED_KEY                (-1780008421L)
32997c478bd9Sstevel@tonic-gate #define KRB5_KDB_NO_MATCHING_KEY                 (-1780008420L)
33007c478bd9Sstevel@tonic-gate /*
33017c478bd9Sstevel@tonic-gate  * Incremental propagation error codes
33027c478bd9Sstevel@tonic-gate  */
33037c478bd9Sstevel@tonic-gate #define	KRB5_LOG_CONV				(-1780008419L)
33047c478bd9Sstevel@tonic-gate #define	KRB5_LOG_UNSTABLE			(-1780008418L)
33057c478bd9Sstevel@tonic-gate #define	KRB5_LOG_CORRUPT			(-1780008417L)
33067c478bd9Sstevel@tonic-gate #define	KRB5_LOG_ERROR				(-1780008416L)
330754925bf6Swillf #define KRB5_KDB_DBTYPE_NOTFOUND		(-1780008415L)
330854925bf6Swillf #define KRB5_KDB_DBTYPE_NOSUP			(-1780008414L)
330954925bf6Swillf #define KRB5_KDB_DBTYPE_INIT			(-1780008413L)
331054925bf6Swillf #define KRB5_KDB_SERVER_INTERNAL_ERR		(-1780008412L)
331154925bf6Swillf #define KRB5_KDB_ACCESS_ERROR			(-1780008411L)
331254925bf6Swillf #define KRB5_KDB_INTERNAL_ERROR			(-1780008410L)
331354925bf6Swillf #define KRB5_KDB_CONSTRAINT_VIOLATION		(-1780008409L)
33147c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_kdb5 (-1780008448L)
33157c478bd9Sstevel@tonic-gate 
33167c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
33177c478bd9Sstevel@tonic-gate #define kdb5_err_base ERROR_TABLE_BASE_kdb5
33187c478bd9Sstevel@tonic-gate /*
33197c478bd9Sstevel@tonic-gate  * kv5m_err.h:
33207c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
33217c478bd9Sstevel@tonic-gate  */
33227c478bd9Sstevel@tonic-gate #define KV5M_NONE                                (-1760647424L)
33237c478bd9Sstevel@tonic-gate #define KV5M_PRINCIPAL                           (-1760647423L)
33247c478bd9Sstevel@tonic-gate #define KV5M_DATA                                (-1760647422L)
33257c478bd9Sstevel@tonic-gate #define KV5M_KEYBLOCK                            (-1760647421L)
33267c478bd9Sstevel@tonic-gate #define KV5M_CHECKSUM                            (-1760647420L)
33277c478bd9Sstevel@tonic-gate #define KV5M_ENCRYPT_BLOCK                       (-1760647419L)
33287c478bd9Sstevel@tonic-gate #define KV5M_ENC_DATA                            (-1760647418L)
33297c478bd9Sstevel@tonic-gate #define KV5M_CRYPTOSYSTEM_ENTRY                  (-1760647417L)
33307c478bd9Sstevel@tonic-gate #define KV5M_CS_TABLE_ENTRY                      (-1760647416L)
33317c478bd9Sstevel@tonic-gate #define KV5M_CHECKSUM_ENTRY                      (-1760647415L)
33327c478bd9Sstevel@tonic-gate #define KV5M_AUTHDATA                            (-1760647414L)
33337c478bd9Sstevel@tonic-gate #define KV5M_TRANSITED                           (-1760647413L)
33347c478bd9Sstevel@tonic-gate #define KV5M_ENC_TKT_PART                        (-1760647412L)
33357c478bd9Sstevel@tonic-gate #define KV5M_TICKET                              (-1760647411L)
33367c478bd9Sstevel@tonic-gate #define KV5M_AUTHENTICATOR                       (-1760647410L)
33377c478bd9Sstevel@tonic-gate #define KV5M_TKT_AUTHENT                         (-1760647409L)
33387c478bd9Sstevel@tonic-gate #define KV5M_CREDS                               (-1760647408L)
33397c478bd9Sstevel@tonic-gate #define KV5M_LAST_REQ_ENTRY                      (-1760647407L)
33407c478bd9Sstevel@tonic-gate #define KV5M_PA_DATA                             (-1760647406L)
33417c478bd9Sstevel@tonic-gate #define KV5M_KDC_REQ                             (-1760647405L)
33427c478bd9Sstevel@tonic-gate #define KV5M_ENC_KDC_REP_PART                    (-1760647404L)
33437c478bd9Sstevel@tonic-gate #define KV5M_KDC_REP                             (-1760647403L)
33447c478bd9Sstevel@tonic-gate #define KV5M_ERROR                               (-1760647402L)
33457c478bd9Sstevel@tonic-gate #define KV5M_AP_REQ                              (-1760647401L)
33467c478bd9Sstevel@tonic-gate #define KV5M_AP_REP                              (-1760647400L)
33477c478bd9Sstevel@tonic-gate #define KV5M_AP_REP_ENC_PART                     (-1760647399L)
33487c478bd9Sstevel@tonic-gate #define KV5M_RESPONSE                            (-1760647398L)
33497c478bd9Sstevel@tonic-gate #define KV5M_SAFE                                (-1760647397L)
33507c478bd9Sstevel@tonic-gate #define KV5M_PRIV                                (-1760647396L)
33517c478bd9Sstevel@tonic-gate #define KV5M_PRIV_ENC_PART                       (-1760647395L)
33527c478bd9Sstevel@tonic-gate #define KV5M_CRED                                (-1760647394L)
33537c478bd9Sstevel@tonic-gate #define KV5M_CRED_INFO                           (-1760647393L)
33547c478bd9Sstevel@tonic-gate #define KV5M_CRED_ENC_PART                       (-1760647392L)
33557c478bd9Sstevel@tonic-gate #define KV5M_PWD_DATA                            (-1760647391L)
33567c478bd9Sstevel@tonic-gate #define KV5M_ADDRESS                             (-1760647390L)
33577c478bd9Sstevel@tonic-gate #define KV5M_KEYTAB_ENTRY                        (-1760647389L)
33587c478bd9Sstevel@tonic-gate #define KV5M_CONTEXT                             (-1760647388L)
33597c478bd9Sstevel@tonic-gate #define KV5M_OS_CONTEXT                          (-1760647387L)
33607c478bd9Sstevel@tonic-gate #define KV5M_ALT_METHOD                          (-1760647386L)
33617c478bd9Sstevel@tonic-gate #define KV5M_ETYPE_INFO_ENTRY                    (-1760647385L)
33627c478bd9Sstevel@tonic-gate #define KV5M_DB_CONTEXT                          (-1760647384L)
33637c478bd9Sstevel@tonic-gate #define KV5M_AUTH_CONTEXT                        (-1760647383L)
33647c478bd9Sstevel@tonic-gate #define KV5M_KEYTAB                              (-1760647382L)
33657c478bd9Sstevel@tonic-gate #define KV5M_RCACHE                              (-1760647381L)
33667c478bd9Sstevel@tonic-gate #define KV5M_CCACHE                              (-1760647380L)
33677c478bd9Sstevel@tonic-gate #define KV5M_PREAUTH_OPS                         (-1760647379L)
33687c478bd9Sstevel@tonic-gate #define KV5M_SAM_CHALLENGE                       (-1760647378L)
33697c478bd9Sstevel@tonic-gate #define KV5M_SAM_KEY                             (-1760647377L)
33707c478bd9Sstevel@tonic-gate #define KV5M_ENC_SAM_RESPONSE_ENC                (-1760647376L)
33717c478bd9Sstevel@tonic-gate #define KV5M_ENC_SAM_RESPONSE_ENC_2              (-1760647374L)
33727c478bd9Sstevel@tonic-gate #define KV5M_SAM_RESPONSE                        (-1760647373L)
33737c478bd9Sstevel@tonic-gate #define KV5M_SAM_RESPONSE_2                      (-1760647372L)
33747c478bd9Sstevel@tonic-gate #define KV5M_PREDICTED_SAM_RESPONSE              (-1760647371L)
33757c478bd9Sstevel@tonic-gate #define KV5M_PASSWD_PHRASE_ELEMENT               (-1760647370L)
33767c478bd9Sstevel@tonic-gate #define KV5M_GSS_OID                             (-1760647369L)
33777c478bd9Sstevel@tonic-gate #define KV5M_GSS_QUEUE                           (-1760647368L)
33787c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_kv5m (-1760647424L)
33797c478bd9Sstevel@tonic-gate 
33807c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
33817c478bd9Sstevel@tonic-gate #define kv5m_err_base ERROR_TABLE_BASE_kv5m
33827c478bd9Sstevel@tonic-gate /*
33837c478bd9Sstevel@tonic-gate  * asn1_err.h:
33847c478bd9Sstevel@tonic-gate  * This file is automatically generated; please do not edit it.
33857c478bd9Sstevel@tonic-gate  */
33867c478bd9Sstevel@tonic-gate #define ASN1_BAD_TIMEFORMAT                      (1859794432L)
33877c478bd9Sstevel@tonic-gate #define ASN1_MISSING_FIELD                       (1859794433L)
33887c478bd9Sstevel@tonic-gate #define ASN1_MISPLACED_FIELD                     (1859794434L)
33897c478bd9Sstevel@tonic-gate #define ASN1_TYPE_MISMATCH                       (1859794435L)
33907c478bd9Sstevel@tonic-gate #define ASN1_OVERFLOW                            (1859794436L)
33917c478bd9Sstevel@tonic-gate #define ASN1_OVERRUN                             (1859794437L)
33927c478bd9Sstevel@tonic-gate #define ASN1_BAD_ID                              (1859794438L)
33937c478bd9Sstevel@tonic-gate #define ASN1_BAD_LENGTH                          (1859794439L)
33947c478bd9Sstevel@tonic-gate #define ASN1_BAD_FORMAT                          (1859794440L)
33957c478bd9Sstevel@tonic-gate #define ASN1_PARSE_ERROR                         (1859794441L)
33967c478bd9Sstevel@tonic-gate #define ASN1_BAD_GMTIME                          (1859794442L)
33977c478bd9Sstevel@tonic-gate #define ASN1_MISMATCH_INDEF			 (1859794443L)
33987c478bd9Sstevel@tonic-gate #define ASN1_MISSING_EOC			 (1859794444L)
33997c478bd9Sstevel@tonic-gate #define ERROR_TABLE_BASE_asn1 (1859794432L)
34007c478bd9Sstevel@tonic-gate 
34017c478bd9Sstevel@tonic-gate /* for compatibility with older versions... */
34027c478bd9Sstevel@tonic-gate #define asn1_err_base ERROR_TABLE_BASE_asn1
34037c478bd9Sstevel@tonic-gate 
34047c478bd9Sstevel@tonic-gate #endif		/* _KRB5_H */
3405