Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / WINNT / afsd / krb.h
1 /* 
2  * Copyright (C) 1998, 1989 Transarc Corporation - All rights reserved
3  *
4  * (C) COPYRIGHT IBM CORPORATION 1987, 1988
5  * LICENSED MATERIALS - PROPERTY OF IBM
6  *
7  *
8  */
9 /*
10  * Excerpted from krb.sed
11  */
12
13 /*
14  * Copyright 1987, 1988 by the Massachusetts Institute of Technology. 
15  *
16  * For copying and distribution information, please see the file
17  * <mit-copyright.h>. 
18  *
19  * Include file for the Kerberos library. 
20  */
21
22 /* Only one time, please */
23 #ifndef KRB_DEFS
24 #define KRB_DEFS
25
26 /* Need some defs from des.h     */
27 #include <des.h>
28
29 /* General definitions */
30 #define         KSUCCESS        0
31 #define         KFAILURE        255
32
33 /* The maximum sizes for aname, realm, sname, and instance +1 */
34 #define         ANAME_SZ        40
35 #define         REALM_SZ        40
36 #define         SNAME_SZ        40
37 #define         INST_SZ         40
38 /* include space for '.' and '@' */
39 #define         MAX_K_NAME_SZ   (ANAME_SZ + INST_SZ + REALM_SZ + 2)
40 #define         KKEY_SZ         100
41 #define         VERSION_SZ      1
42 #define         MSG_TYPE_SZ     1
43 #define         DATE_SZ         26      /* RTI date output */
44
45 #define         MAX_HSTNM       100
46
47 #ifndef DEFAULT_TKT_LIFE                /* allow compile-time override */
48 #define         DEFAULT_TKT_LIFE        120 /* default lifetime 10 hrs */
49 #endif
50
51 /* Definition of text structure used to pass text around */
52 #define         MAX_KTXT_LEN    1250
53
54 struct ktext {
55     unsigned int     length;            /* Length of the text */
56     unsigned char dat[MAX_KTXT_LEN];    /* The data itself */
57     unsigned long mbz;          /* zero to catch runaway strings */
58 };
59
60 typedef struct ktext *KTEXT;
61 typedef struct ktext KTEXT_ST;
62
63
64 /* Definitions for send_to_kdc */
65 #define CLIENT_KRB_TIMEOUT      4       /* time between retries */
66 #define CLIENT_KRB_RETRY        5       /* retry this many times */
67 #define CLIENT_KRB_BUFLEN       512     /* max unfragmented packet */
68
69 /* Parameters for rd_ap_req */
70 /* Maximum alloable clock skew in seconds */
71 #define         CLOCK_SKEW      5*60
72
73 /* Error codes returned from the KDC */
74 #define         KDC_OK          0       /* Request OK */
75 #define         KDC_NAME_EXP    1       /* Principal expired */
76 #define         KDC_SERVICE_EXP 2       /* Service expired */
77 #define         KDC_AUTH_EXP    3       /* Auth expired */
78 #define         KDC_PKT_VER     4       /* Protocol version unknown */
79 #define         KDC_P_MKEY_VER  5       /* Wrong master key version */
80 #define         KDC_S_MKEY_VER  6       /* Wrong master key version */
81 #define         KDC_BYTE_ORDER  7       /* Byte order unknown */
82 #define         KDC_PR_UNKNOWN  8       /* Principal unknown */
83 #define         KDC_PR_N_UNIQUE 9       /* Principal not unique */
84 #define         KDC_NULL_KEY   10       /* Principal has null key */
85 #define         KDC_GEN_ERR    20       /* Generic error from KDC */
86
87
88 /* Values returned by get_credentials */
89 #define         GC_OK           0       /* Retrieve OK */
90 #define         RET_OK          0       /* Retrieve OK */
91 #define         GC_TKFIL       21       /* Can't read ticket file */
92 #define         RET_TKFIL      21       /* Can't read ticket file */
93 #define         GC_NOTKT       22       /* Can't find ticket or TGT */
94 #define         RET_NOTKT      22       /* Can't find ticket or TGT */
95
96
97 /* Values returned by mk_ap_req  */
98 #define         MK_AP_OK        0       /* Success */
99 #define         MK_AP_TGTEXP   26       /* TGT Expired */
100
101 /* Values returned by rd_ap_req */
102 #define         RD_AP_OK        0       /* Request authentic */
103 #define         RD_AP_UNDEC    31       /* Can't decode authenticator */
104 #define         RD_AP_EXP      32       /* Ticket expired */
105 #define         RD_AP_NYV      33       /* Ticket not yet valid */
106 #define         RD_AP_REPEAT   34       /* Repeated request */
107 #define         RD_AP_NOT_US   35       /* The ticket isn't for us */
108 #define         RD_AP_INCON    36       /* Request is inconsistent */
109 #define         RD_AP_TIME     37       /* delta_t too big */
110 #define         RD_AP_BADD     38       /* Incorrect net address */
111 #define         RD_AP_VERSION  39       /* protocol version mismatch */
112 #define         RD_AP_MSG_TYPE 40       /* invalid msg type */
113 #define         RD_AP_MODIFIED 41       /* message stream modified */
114 #define         RD_AP_ORDER    42       /* message out of order */
115 #define         RD_AP_UNAUTHOR 43       /* unauthorized request */
116
117 /* Values returned by get_pw_tkt */
118 #define         GT_PW_OK        0       /* Got password changing tkt */
119 #define         GT_PW_NULL     51       /* Current PW is null */
120 #define         GT_PW_BADPW    52       /* Incorrect current password */
121 #define         GT_PW_PROT     53       /* Protocol Error */
122 #define         GT_PW_KDCERR   54       /* Error returned by KDC */
123 #define         GT_PW_NULLTKT  55       /* Null tkt returned by KDC */
124
125
126 /* Values returned by send_to_kdc */
127 #define         SKDC_OK         0       /* Response received */
128 #define         SKDC_RETRY     56       /* Retry count exceeded */
129 #define         SKDC_CANT      57       /* Can't send request */
130
131 /*
132  * Values returned by get_intkt
133  * (can also return SKDC_* and KDC errors)
134  */
135
136 #define         INTK_OK         0       /* Ticket obtained */
137 #define         INTK_W_NOTALL  61       /* Not ALL tickets returned */
138 #define         INTK_BADPW     62       /* Incorrect password */
139 #define         INTK_PROT      63       /* Protocol Error */
140 #define         INTK_ERR       70       /* Other error */
141
142 /* Values returned by get_adtkt */
143 #define         AD_OK           0       /* Ticket Obtained */
144 #define         AD_NOTGT       71       /* Don't have tgt */
145
146 /* Error codes returned by ticket file utilities */
147 #define         NO_TKT_FIL      76      /* No ticket file found */
148 #define         TKT_FIL_ACC     77      /* Couldn't access tkt file */
149 #define         TKT_FIL_LCK     78      /* Couldn't lock ticket file */
150 #define         TKT_FIL_FMT     79      /* Bad ticket file format */
151 #define         TKT_FIL_INI     80      /* tf_init not called first */
152
153 /* Error code returned by kparse_name */
154 #define         KNAME_FMT       81      /* Bad Kerberos name format */
155
156 /* Error code returned by krb_mk_safe */
157 #define         SAFE_PRIV_ERROR -1      /* syscall error */
158
159 #if 0
160 /*
161  * macros for byte swapping; also scratch space
162  * u_quad  0-->7, 1-->6, 2-->5, 3-->4, 4-->3, 5-->2, 6-->1, 7-->0
163  * u_long  0-->3, 1-->2, 2-->1, 3-->0
164  * u_short 0-->1, 1-->0
165  */
166
167 #define     swap_u_16(x) {\
168  unsigned long   _krb_swap_tmp[4];\
169  swab(((char *) x) +0, ((char *)  _krb_swap_tmp) +14 ,2); \
170  swab(((char *) x) +2, ((char *)  _krb_swap_tmp) +12 ,2); \
171  swab(((char *) x) +4, ((char *)  _krb_swap_tmp) +10 ,2); \
172  swab(((char *) x) +6, ((char *)  _krb_swap_tmp) +8  ,2); \
173  swab(((char *) x) +8, ((char *)  _krb_swap_tmp) +6 ,2); \
174  swab(((char *) x) +10,((char *)  _krb_swap_tmp) +4 ,2); \
175  swab(((char *) x) +12,((char *)  _krb_swap_tmp) +2 ,2); \
176  swab(((char *) x) +14,((char *)  _krb_swap_tmp) +0 ,2); \
177  bcopy((char *)_krb_swap_tmp,(char *)x,16);\
178                             }
179
180 #define     swap_u_12(x) {\
181  unsigned long   _krb_swap_tmp[4];\
182  swab(( char *) x,     ((char *)  _krb_swap_tmp) +10 ,2); \
183  swab(((char *) x) +2, ((char *)  _krb_swap_tmp) +8 ,2); \
184  swab(((char *) x) +4, ((char *)  _krb_swap_tmp) +6 ,2); \
185  swab(((char *) x) +6, ((char *)  _krb_swap_tmp) +4 ,2); \
186  swab(((char *) x) +8, ((char *)  _krb_swap_tmp) +2 ,2); \
187  swab(((char *) x) +10,((char *)  _krb_swap_tmp) +0 ,2); \
188  bcopy((char *)_krb_swap_tmp,(char *)x,12);\
189                             }
190
191 #define     swap_C_Block(x) {\
192  unsigned long   _krb_swap_tmp[4];\
193  swab(( char *) x,    ((char *)  _krb_swap_tmp) +6 ,2); \
194  swab(((char *) x) +2,((char *)  _krb_swap_tmp) +4 ,2); \
195  swab(((char *) x) +4,((char *)  _krb_swap_tmp) +2 ,2); \
196  swab(((char *) x) +6,((char *)  _krb_swap_tmp)    ,2); \
197  bcopy((char *)_krb_swap_tmp,(char *)x,8);\
198                             }
199 #define     swap_u_quad(x) {\
200  unsigned long   _krb_swap_tmp[4];\
201  swab(( char *) &x,    ((char *)  _krb_swap_tmp) +6 ,2); \
202  swab(((char *) &x) +2,((char *)  _krb_swap_tmp) +4 ,2); \
203  swab(((char *) &x) +4,((char *)  _krb_swap_tmp) +2 ,2); \
204  swab(((char *) &x) +6,((char *)  _krb_swap_tmp)    ,2); \
205  bcopy((char *)_krb_swap_tmp,(char *)&x,8);\
206                             }
207
208 #define     swap_u_long(x) {\
209  unsigned long   _krb_swap_tmp[4];\
210  swab((char *)  &x,    ((char *)  _krb_swap_tmp) +2 ,2); \
211  swab(((char *) &x) +2,((char *)  _krb_swap_tmp),2); \
212  x = _krb_swap_tmp[0];   \
213                            }
214
215 #define     swap_u_short(x) {\
216  unsigned short _krb_swap_sh_tmp; \
217  swab((char *)  &x,    ( &_krb_swap_sh_tmp) ,2); \
218  x = (unsigned short) _krb_swap_sh_tmp; \
219                             }
220 #endif /* 0 */
221
222 #include "krb_prot.h"
223
224 static send_to_kdc(
225     KTEXT pkt,
226     KTEXT rpkt);
227
228 #endif  /* KRB_DEFS */