fac2e4fdb7e64325dc156706e2a6246161ec28b5
[mod_auth_kerb.cvs/.git] / src / mit-internals.h
1 #ifndef _MIT_INTERNALS_H_
2 #define _MIT_INTERNALS_H_
3
4 /* must be included after krb5.h to override definitons from there */
5
6 /*
7  * MIT Kerberos 1.3.x replay cache implementation causes major problems
8  * with Microsoft Kerberos5 implementation by incorrectly detecting
9  * Microsoft authenticators as replays. The problem is being worked on
10  * by both MIT and Microsoft but until a definite fix is available, we
11  * must disable the replay cache in order to work with Microsoft clients.
12  * The only working way to do this seems to be overriding the function
13  * that stores authenticators in replay cache with one that does nothing.
14  * Note that disabling replay cache is potentially unsecure.
15  */
16
17 /* Definition from MIT krb5-1.3.3 krb5.h */
18 typedef struct _krb5_donot_replay {
19     krb5_magic magic;
20     char *server;                       /* null-terminated */
21     char *client;                       /* null-terminated */
22     krb5_int32 cusec;
23     krb5_timestamp ctime;
24 } krb5_donot_replay;
25
26 /* Definitions from MIT krb5-1.3.3 k5-int.h */
27 struct _krb5_rc_ops {
28     krb5_magic magic;
29     char *type;
30     krb5_error_code (KRB5_CALLCONV *init)
31         (krb5_context, krb5_rcache,krb5_deltat); /* create */
32     krb5_error_code (KRB5_CALLCONV *recover)
33         (krb5_context, krb5_rcache); /* open */
34     krb5_error_code (KRB5_CALLCONV *destroy)
35         (krb5_context, krb5_rcache);
36     krb5_error_code (KRB5_CALLCONV *close)
37         (krb5_context, krb5_rcache);
38     krb5_error_code (KRB5_CALLCONV *store)
39         (krb5_context, krb5_rcache,krb5_donot_replay *);
40     krb5_error_code (KRB5_CALLCONV *expunge)
41         (krb5_context, krb5_rcache);
42     krb5_error_code (KRB5_CALLCONV *get_span)
43         (krb5_context, krb5_rcache,krb5_deltat *);
44     char *(KRB5_CALLCONV *get_name)
45         (krb5_context, krb5_rcache);
46     krb5_error_code (KRB5_CALLCONV *resolve)
47         (krb5_context, krb5_rcache, char *);
48 };
49
50 typedef struct _krb5_rc_ops krb5_rc_ops;
51
52 /* Definitions from MIT krb5-1.3.3 rc_dfl.h */
53 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_init
54         (krb5_context,
55                    krb5_rcache,
56                    krb5_deltat);
57 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_recover
58         (krb5_context,
59                    krb5_rcache);
60 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_destroy
61         (krb5_context,
62                    krb5_rcache);
63 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_close
64         (krb5_context,
65                    krb5_rcache);
66 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_expunge
67         (krb5_context,
68                    krb5_rcache);
69 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_get_span
70         (krb5_context,
71                    krb5_rcache,
72                    krb5_deltat *);
73 extern char * KRB5_CALLCONV krb5_rc_dfl_get_name
74         (krb5_context,
75                    krb5_rcache);
76 extern krb5_error_code KRB5_CALLCONV krb5_rc_dfl_resolve
77         (krb5_context,
78                    krb5_rcache,
79                    char *);
80
81 /* Definition from MIT krb5-1.3.3 k5-int.h */
82 /* kouril: use the _internal suffix in order to avoid conflicts with 
83  * the definition in krb5.h */
84 struct krb5_rc_st_internal {
85         krb5_magic magic;
86         const struct _krb5_rc_ops *ops;
87         krb5_pointer data;
88 };
89
90 typedef struct krb5_rc_st_internal *krb5_rcache_internal;
91
92 /* Definitions from MIT krb5-1.3.3 gssapiP_krb5.h */
93 typedef struct _krb5_gss_cred_id_rec {
94         /* name/type of credential */
95         gss_cred_usage_t usage;
96         krb5_principal princ;        /* this is not interned as a gss_name_t */
97         int prerfc_mech;
98         int rfc_mech;
99
100         /* keytab (accept) data */
101         krb5_keytab keytab;
102         krb5_rcache_internal rcache;
103         
104         /* ccache (init) data */
105         krb5_ccache ccache;
106         krb5_timestamp tgt_expire;
107 } krb5_gss_cred_id_rec, *krb5_gss_cred_id_t;
108
109 #endif _MIT_INTERNALS_H_