source: heimdal/trunk/appl/dceutils/k5dce.h@ 4

Last change on this file since 4 was 1, checked in by Paul Smedley, 10 years ago

Initial commit of Heimdal 1.5.3

File size: 5.9 KB
Line 
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
Note: See TracBrowser for help on using the repository browser.