windows-kfw-sdk-20060921
[openafs.git] / src / WINNT / kfw / inc / leash / leashwin.h
1 #ifndef __LEASHWIN__
2 #define __LEASHWIN__
3
4 #include <krb.h>
5
6 #define DLGTYPE_PASSWD   0
7 #define DLGTYPE_CHPASSWD 1
8 typedef struct {
9     int dlgtype;
10     // Tells whether dialog box is in change pwd more or init ticket mode???
11     // (verify this):
12     int dlgstatemax; // What is this???
13     // The title on the Dialog box - for Renewing or Initializing:
14     LPSTR title;
15     LPSTR principal;
16 } LSH_DLGINFO, FAR *LPLSH_DLGINFO;
17
18 #define LEASH_USERNAME_SZ        64
19 #define LEASH_REALM_SZ          192
20 #define LEASH_TITLE_SZ          128
21 #define LEASH_CCACHE_NAME_SZ    264
22
23 typedef struct {
24     DWORD size;
25     int dlgtype;
26     // Tells whether dialog box is in change pwd mode or init ticket mode
27     LPSTR title;                // in v3, set to in.title
28     LPSTR username;             // in v3, set to in.username
29     LPSTR realm;                // in v3, set to in.realm
30     int   use_defaults;
31     int   forwardable;
32     int   noaddresses;
33     int   lifetime;
34     int   renew_till;
35     int   proxiable;
36     int   publicip;
37     // Version 1 of this structure ends here
38     struct {
39         char username[LEASH_USERNAME_SZ];
40         char realm[LEASH_REALM_SZ];
41         // Version 2 of this structure ends here
42         char ccache[LEASH_CCACHE_NAME_SZ];
43     } out;
44     struct {
45         char title[LEASH_TITLE_SZ];
46         char username[LEASH_USERNAME_SZ];
47         char realm[LEASH_REALM_SZ];
48         char ccache[LEASH_CCACHE_NAME_SZ];
49     } in;
50 } LSH_DLGINFO_EX, *LPLSH_DLGINFO_EX;
51
52 #define LSH_DLGINFO_EX_V1_SZ (sizeof(DWORD) + 3 * sizeof(LPSTR) + 8 * sizeof(int))
53 #define LSH_DLGINFO_EX_V2_SZ (LSH_DLGINFO_EX_V1_SZ + LEASH_USERNAME_SZ + LEASH_REALM_SZ)
54 #define LSH_DLGINFO_EX_V3_SZ (LSH_DLGINFO_EX_V2_SZ + LEASH_TITLE_SZ + LEASH_USERNAME_SZ + LEASH_REALM_SZ + 2 * LEASH_CCACHE_NAME_SZ)
55
56 #ifndef NETIDMGR
57 #define NETID_USERNAME_SZ       128
58 #define NETID_REALM_SZ          192
59 #define NETID_TITLE_SZ          256
60 #define NETID_CCACHE_NAME_SZ    264
61
62 #define NETID_DLGTYPE_TGT      0
63 #define NETID_DLGTYPE_CHPASSWD 1
64 typedef struct {
65     DWORD size;
66     DWORD dlgtype;
67     // Tells whether dialog box is in change pwd mode or init ticket mode
68     struct {
69         WCHAR title[NETID_TITLE_SZ];
70         WCHAR username[NETID_USERNAME_SZ];
71         WCHAR realm[NETID_REALM_SZ];
72         WCHAR ccache[NETID_CCACHE_NAME_SZ];
73         DWORD use_defaults;
74         DWORD forwardable;
75         DWORD noaddresses;
76         DWORD lifetime;
77         DWORD renew_till;
78         DWORD proxiable;
79         DWORD publicip;
80         DWORD must_use_specified_principal;
81     } in;
82     struct {
83         WCHAR username[NETID_USERNAME_SZ];
84         WCHAR realm[NETID_REALM_SZ];
85         WCHAR ccache[NETID_CCACHE_NAME_SZ];
86     } out;
87     // Version 1 of this structure ends here
88 } NETID_DLGINFO, *LPNETID_DLGINFO;
89
90 #define NETID_DLGINFO_V1_SZ (10 * sizeof(DWORD) \
91         + sizeof(WCHAR) * (NETID_TITLE_SZ + \
92         2 * NETID_USERNAME_SZ + 2 * NETID_REALM_SZ + \
93         2 * NETID_CCACHE_NAME_SZ))
94 #endif /* NETIDMGR */
95
96 typedef struct {
97     char    principal[MAX_K_NAME_SZ]; /* Principal name/instance/realm */
98     int     btickets;                 /* Do we have tickets? */
99     long    lifetime;                 /* Lifetime -- needs to have
100                                          room for 255 5-minute
101                                          periods * 5 * 60 */
102     long    issue_date;               /* The issue time */
103     long    renew_till;               /* The Renew time (k5 only) */
104 } TICKETINFO;
105
106 int FAR Leash_kinit_dlg(HWND hParent, LPLSH_DLGINFO lpdlginfo);
107 int FAR Leash_kinit_dlg_ex(HWND hParent, LPLSH_DLGINFO_EX lpdlginfoex);
108 int FAR Leash_changepwd_dlg(HWND hParent, LPLSH_DLGINFO lpdlginfo);
109 int FAR Leash_changepwd_dlg_ex(HWND hParent, LPLSH_DLGINFO_EX lpdlginfo);
110
111 long FAR Leash_checkpwd(char *principal, char *password);
112 long FAR Leash_changepwd(char *principal, char *password, char *newpassword, char** result_string);
113 long FAR Leash_kinit(char *principal, char *password, int lifetime);
114 long FAR Leash_kinit_ex(char * principal, char * password, int lifetime,
115                                                 int forwardable, int proxiable, int renew_life,
116                                                 int addressless, unsigned long publicIP);
117
118 long FAR Leash_klist(HWND hlist, TICKETINFO FAR *ticketinfo);
119 long FAR Leash_kdestroy(void);
120 long FAR Leash_get_lsh_errno( LONG FAR *err_val);
121
122 long FAR Leash_renew(void);
123 long FAR Leash_importable(void);
124 long FAR Leash_import(void);
125
126 BOOL Leash_set_help_file( char FAR *szHelpFile );
127 LPSTR Leash_get_help_file(void);
128
129 void Leash_reset_defaults(void);
130
131 #define NO_TICKETS 0
132 #define EXPD_TICKETS 2
133 #define GOOD_TICKETS 1
134
135 /* Leash Configuration functions - alters Current User Registry */
136 DWORD Leash_get_default_lifetime();
137 DWORD Leash_set_default_lifetime(DWORD minutes);
138 DWORD Leash_reset_default_lifetime();
139 DWORD Leash_get_default_renew_till();
140 DWORD Leash_set_default_renew_till(DWORD minutes);
141 DWORD Leash_reset_default_renew_till();
142 DWORD Leash_get_default_renewable();
143 DWORD Leash_set_default_renewable(DWORD onoff);
144 DWORD Leash_reset_default_renewable();
145 DWORD Leash_get_default_forwardable();
146 DWORD Leash_set_default_forwardable(DWORD onoff);
147 DWORD Leash_reset_default_forwardable();
148 DWORD Leash_get_default_noaddresses();
149 DWORD Leash_set_default_noaddresses(DWORD onoff);
150 DWORD Leash_reset_default_noaddresses();
151 DWORD Leash_get_default_proxiable();
152 DWORD Leash_set_default_proxiable(DWORD onoff);
153 DWORD Leash_reset_default_proxiable();
154 DWORD Leash_get_default_publicip();
155 DWORD Leash_set_default_publicip(DWORD ipv4addr);
156 DWORD Leash_reset_default_publicip();
157 DWORD Leash_get_default_use_krb4();
158 DWORD Leash_set_default_use_krb4(DWORD onoff);
159 DWORD Leash_reset_default_use_krb4();
160 DWORD Leash_get_hide_kinit_options();
161 DWORD Leash_set_hide_kinit_options(DWORD onoff);
162 DWORD Leash_reset_hide_kinit_options();
163 DWORD Leash_get_default_life_min();
164 DWORD Leash_set_default_life_min(DWORD minutes);
165 DWORD Leash_reset_default_life_min();
166 DWORD Leash_get_default_life_max();
167 DWORD Leash_set_default_life_max(DWORD minutes);
168 DWORD Leash_reset_default_life_max();
169 DWORD Leash_get_default_renew_min();
170 DWORD Leash_set_default_renew_min(DWORD minutes);
171 DWORD Leash_reset_default_renew_min();
172 DWORD Leash_get_default_renew_max();
173 DWORD Leash_set_default_renew_max(DWORD minutes);
174 DWORD Leash_reset_default_renew_max();
175 DWORD Leash_get_lock_file_locations();
176 DWORD Leash_set_lock_file_locations(DWORD onoff);
177 DWORD Leash_reset_lock_file_locations();
178 DWORD Leash_get_default_uppercaserealm();
179 DWORD Leash_set_default_uppercaserealm(DWORD onoff);
180 DWORD Leash_reset_default_uppercaserealm();
181 DWORD Leash_get_default_mslsa_import();
182 DWORD Leash_set_default_mslsa_import(DWORD onoffmatch);
183 DWORD Leash_reset_default_mslsa_import();
184 DWORD Leash_get_default_preserve_kinit_settings();
185 DWORD Leash_set_default_preserve_kinit_settings(DWORD onoff);
186 DWORD Leash_reset_default_preserve_kinit_settings();
187
188 #endif /* LEASHWIN */