1/* dummy K5 routines which are needed to get this to
2 * compile without having access ti the DCE versions
3 * of the header files.
4 * Thiis is very crude, and OSF needs to expose the K5
5 * API.
6 */
7
8#ifdef sun
9/* Transarc obfascates these routines */
10#ifdef DCE_1_1
11
12#define krb5_init_ets                   _dce_PkjKqOaklP
13#define krb5_copy_creds                 _dce_LuFxPiITzD
14#define krb5_unparse_name               _dce_LWHtAuNgRV
15#define krb5_get_default_realm          _dce_vDruhprWGh
16#define krb5_build_principal            _dce_qwAalSzTtF
17#define krb5_build_principal_ext        _dce_vhafIQlejW
18#define krb5_build_principal_va         _dce_alsqToMmuJ
19#define krb5_cc_default                 _dce_KZRshhTXhE
20#define krb5_cc_default_name            _dce_bzJVAjHXVQ
21#define sec_login_krb5_add_cred			_dce_ePDtOJTZvU
22
23#else /* DCE 1.0.3a */
24
25#define krb5_init_ets                   _dce_BmLRpOVsBo
26#define krb5_copy_creds                 _dce_VGwSEBNwaf
27#define krb5_unparse_name               _dce_PgAOkJoMXA
28#define krb5_get_default_realm          _dce_plVOzStKyK
29#define krb5_build_principal            _dce_uAKSsluIFy
30#define krb5_build_principal_ext        _dce_tRMpPiRada
31#define krb5_build_principal_va         _dce_SxnLejZemH
32#define krb5_cc_default                 _dce_SeKosWFnsv
33#define krb5_cc_default_name            _dce_qJeaphJWVc
34#define sec_login_krb5_add_cred         _dce_uHwRasumsN
35
36#endif
37#endif
38
39/* Define the bare minimum k5 structures which are needed
40 * by this program. Since the krb5 includes are not supplied
41 * with DCE, these were based on the MIT Kerberos 5 beta 3
42 * which should match the DCE as of 1.0.3 at least.
43 * The tricky one is the krb5_creds, since one is allocated
44 * by this program, and it needs access to the client principal
45 * in it.
46 * Note that there are no function prototypes, so there is no
47 * compile time checking.
48 * DEE 07/11/95
49 */
50#define     NPROTOTYPE(x) ()
51typedef int krb5_int32;  /* assuming all DCE systems are 32 bit */
52typedef short krb5short; /* assuming short is 16 bit */
53typedef krb5_int32      krb5_error_code;
54typedef unsigned char   krb5_octet;
55typedef krb5_octet      krb5_boolean;
56typedef krb5short       krb5_keytype; /* in k5.2 it's a short */
57typedef krb5_int32      krb5_flags;
58typedef krb5_int32  krb5_timestamp; /* is a time_t in krb5.h */
59
60typedef char * krb5_pointer;  /* pointer to unexposed data */
61
62typedef struct _krb5_ccache {
63    struct _krb5_cc_ops *ops;
64    krb5_pointer data;
65} *krb5_ccache;
66
67typedef struct _krb5_cc_ops {
68    char *prefix;
69    char *(*get_name) NPROTOTYPE((krb5_ccache));
70    krb5_error_code (*resolve) NPROTOTYPE((krb5_ccache *, char *));
71    krb5_error_code (*gen_new) NPROTOTYPE((krb5_ccache *));
72    krb5_error_code (*init) NPROTOTYPE((krb5_ccache, krb5_principal));
73    krb5_error_code (*destroy) NPROTOTYPE((krb5_ccache));
74    krb5_error_code (*close) NPROTOTYPE((krb5_ccache));
75    krb5_error_code (*store) NPROTOTYPE((krb5_ccache, krb5_creds *));
76    krb5_error_code (*retrieve) NPROTOTYPE((krb5_ccache, krb5_flags,
77                   krb5_creds *, krb5_creds *));
78    krb5_error_code (*get_princ) NPROTOTYPE((krb5_ccache,
79                        krb5_principal *));
80    krb5_error_code (*get_first) NPROTOTYPE((krb5_ccache,
81                        krb5_cc_cursor *));
82    krb5_error_code (*get_next) NPROTOTYPE((krb5_ccache, krb5_cc_cursor *,
83                   krb5_creds *));
84    krb5_error_code (*end_get) NPROTOTYPE((krb5_ccache, krb5_cc_cursor *));
85    krb5_error_code (*remove_cred) NPROTOTYPE((krb5_ccache, krb5_flags,
86                      krb5_creds *));
87    krb5_error_code (*set_flags) NPROTOTYPE((krb5_ccache, krb5_flags));
88} krb5_cc_ops;
89
90typedef struct _krb5_keyblock {
91	krb5_keytype keytype;
92	int length;
93	krb5_octet *contents;
94} krb5_keyblock;
95
96typedef struct _krb5_ticket_times {
97	krb5_timestamp authtime;
98	krb5_timestamp starttime;
99	krb5_timestamp endtime;
100	krb5_timestamp renew_till;
101} krb5_ticket_times;
102
103typedef krb5_pointer krb5_cc_cursor;
104
105typedef struct _krb5_data {
106   int length;
107   char *data;
108} krb5_data;
109
110typedef struct _krb5_authdata {
111   int ad_type;
112   int length;
113   krb5_octet *contents;
114} krb5_authdata;
115
116typedef struct _krb5_creds {
117    krb5_pointer client;
118    krb5_pointer server;
119    krb5_keyblock keyblock;
120    krb5_ticket_times times;
121    krb5_boolean is_skey;
122    krb5_flags ticket_flags;
123    krb5_pointer **addresses;
124    krb5_data ticket;
125    krb5_data second_ticket;
126    krb5_pointer **authdata;
127} krb5_creds;
128
129typedef krb5_pointer krb5_principal;
130
131#define KRB5_CC_END                              336760974
132#define KRB5_TC_OPENCLOSE              0x00000001
133
134/* Ticket flags */
135/* flags are 32 bits; each host is responsible to put the 4 bytes
136   representing these bits into net order before transmission */
137/* #define  TKT_FLG_RESERVED    0x80000000 */
138#define TKT_FLG_FORWARDABLE     0x40000000
139#define TKT_FLG_FORWARDED       0x20000000
140#define TKT_FLG_PROXIABLE       0x10000000
141#define TKT_FLG_PROXY           0x08000000
142#define TKT_FLG_MAY_POSTDATE    0x04000000
143#define TKT_FLG_POSTDATED       0x02000000
144#define TKT_FLG_INVALID         0x01000000
145#define TKT_FLG_RENEWABLE       0x00800000
146#define TKT_FLG_INITIAL         0x00400000
147#define TKT_FLG_PRE_AUTH        0x00200000
148#define TKT_FLG_HW_AUTH         0x00100000
149#ifdef PK_INIT
150#define TKT_FLG_PUBKEY_PREAUTH          0x00080000
151#define TKT_FLG_DIGSIGN_PREAUTH         0x00040000
152#define TKT_FLG_PRIVKEY_PREAUTH         0x00020000
153#endif
154
155
156#define krb5_cc_get_principal(cache, principal) (*(cache)->ops->get_princ)(cache, principal)
157#define krb5_cc_set_flags(cache, flags) (*(cache)->ops->set_flags)(cache, flags)
158#define krb5_cc_get_name(cache) (*(cache)->ops->get_name)(cache)
159#define krb5_cc_start_seq_get(cache, cursor) (*(cache)->ops->get_first)(cache, cursor)
160#define krb5_cc_next_cred(cache, cursor, creds) (*(cache)->ops->get_next)(cache, cursor, creds)
161#define krb5_cc_destroy(cache) (*(cache)->ops->destroy)(cache)
162#define krb5_cc_end_seq_get(cache, cursor) (*(cache)->ops->end_get)(cache, cursor)
163
164/* end of k5 dummy typedefs */
165
166