#ifndef KWIN_DEFS
#define KWIN_DEFS
#if !defined(KRB4) && !defined(KRB5)
#define KRB5
#endif
#ifndef RC_INVOKED
#ifdef KRB4
#include "mit-copyright.h"
#include "krb.h"
#include "kadm.h"
#include "org.h"
#endif
#ifdef KRB5
#include "winsock.h"
#include "krb5.h"
#include "krbini.h"
#include "com_err.h"
#define DEFAULT_TKT_LIFE 120
#define ANAME_SZ 40
#define REALM_SZ 40
#define SNAME_SZ 40
#define INST_SZ 40
#define MAX_KPW_LEN 128
#define MAX_K_NAME_SZ (ANAME_SZ + INST_SZ + REALM_SZ + 2)
#ifdef CYGNUS
#define ORGANIZATION "Cygnus Solutions\n(800)CYGNUS-1\nhttp://www.cygnus.com\ninfo@cygnus.com"
#endif
#define CREDENTIALS char
#endif
#define BLOCK_MAX_SEC 30
#define KWIN_UPDATE_PERIOD 30000
#define TIME_BUFFER 300
#define WM_KWIN_SETNAME (WM_USER+100)
#endif
#define FILE_MENU_ITEMS 3
#define FILE_MENU_MAX_LOGINS 5
#define IDM_KWIN 1000
#define IDM_OPTIONS 1001
#define IDM_EXIT 1002
#define IDM_FIRST_LOGIN 1003
#define IDM_HELP_INDEX 1020
#define IDM_ABOUT 1021
#define IDA_KWIN 2000
#define KWIN_DIALOG_CLASS "KERBEROS"
#define KWIN_DIALOG_NAME "Krb5"
#define ID_KWIN 100
#define IDD_KWIN_FIRST 101
#define IDD_TICKET_LIST_TITLE 101
#define IDD_TICKET_LIST 102
#ifdef KRB4
#define IDD_MIN_TITLE 103
#define IDD_LOGIN_NAME_TITLE 103
#define IDD_LOGIN_INSTANCE_TITLE 104
#define IDD_LOGIN_REALM_TITLE 105
#define IDD_LOGIN_PASSWORD_TITLE 106
#define IDD_MAX_TITLE 106
#define IDD_MIN_EDIT 107
#define IDD_LOGIN_NAME 107
#define IDD_LOGIN_INSTANCE 108
#define IDD_LOGIN_REALM 109
#define IDD_LOGIN_PASSWORD 110
#define IDD_MAX_EDIT 110
#endif
#ifdef KRB5
#define IDD_MIN_TITLE 103
#define IDD_LOGIN_NAME_TITLE 103
#define IDD_LOGIN_PASSWORD_TITLE 104
#define IDD_LOGIN_REALM_TITLE 105
#define IDD_MAX_TITLE 105
#define IDD_MIN_EDIT 107
#define IDD_LOGIN_NAME 107
#define IDD_LOGIN_PASSWORD 108
#define IDD_LOGIN_REALM 109
#define IDD_MAX_EDIT 109
#endif
#define IDD_MIN_BUTTON 111
#define IDD_CHANGE_PASSWORD 111
#define IDD_TICKET_DELETE 112
#define IDD_LOGIN 113
#define IDD_MAX_BUTTON 113
#define IDD_PASSWORD_CR2 114
#define IDD_KWIN_LAST 114
#define ID_PASSWORD 200
#define IDD_PASSWORD_NAME 204
#define IDD_PASSWORD_INSTANCE 205
#define IDD_PASSWORD_REALM 206
#define IDD_OLD_PASSWORD 207
#define IDD_NEW_PASSWORD1 208
#define IDD_NEW_PASSWORD2 209
#define IDD_PASSWORD_CR 210
#define ID_OPTS 300
#define IDD_CONF 301
#define IDD_REALMS 302
#define IDD_LIFETIME 303
#define IDD_CCACHE 304
#define IDD_ACTIONS 310
#define IDD_BEEP 311
#define IDD_ALERT 312
#define IDD_TKOPT 320
#define IDD_FORWARDABLE 321
#define IDD_NOADDRESSES 322
#define ID_VARDLG 400
#define KWIN_MIN_WIDTH 180
#define KWIN_MIN_HEIGHT 110
#define IDI_KWIN 1
#define ICON_WIDTH 30
#define ICON_HEIGHT 20
#define IDI_FIRST_CLOCK 2
#define IDI_0_MIN 2
#define IDI_5_MIN 3
#define IDI_10_MIN 4
#define IDI_15_MIN 5
#define IDI_20_MIN 6
#define IDI_25_MIN 7
#define IDI_30_MIN 8
#define IDI_35_MIN 9
#define IDI_40_MIN 10
#define IDI_45_MIN 11
#define IDI_50_MIN 12
#define IDI_55_MIN 13
#define IDI_60_MIN 14
#define IDI_EXPIRED 15
#define IDI_TICKET 16
#define IDI_LAST_CLOCK 16
#define MAX_ICONS (IDI_LAST_CLOCK - IDI_FIRST_CLOCK + 1)
#ifndef RC_INVOKED
extern BOOL isblocking;
extern HFONT hfontdialog;
extern HINSTANCE hinstance;
extern BOOL alert;
extern BOOL beep;
extern char confname[FILENAME_MAX];
#ifdef KRB5
extern krb5_context k5_context;
extern krb5_ccache k5_ccache;
extern char ccname[FILENAME_MAX];
extern BOOL forwardable;
extern BOOL noaddresses;
#endif
void kwin_init_name(HWND, char *);
void kwin_set_default_focus(HWND);
time_t kwin_get_epoch(void);
BOOL opts_initdialog(HWND, HWND, LPARAM);
void opts_command(HWND, int, HWND, UINT);
BOOL CALLBACK opts_dlg_proc(HWND, UINT, WPARAM, LPARAM);
BOOL opts_dialog(HWND);
BOOL change_password(HWND, char *, char *, char *, char *, char *);
void password_command(HWND, int, HWND, UINT);
BOOL password_initdialog(HWND, HWND, LPARAM);
BOOL CALLBACK password_dlg_proc(HWND, UINT, WPARAM, LPARAM);
BOOL password_dialog(HWND);
#ifdef KRB5
krb5_error_code k5_dest_tkt(void);
int k5_get_num_cred(int);
int k5_kname_parse(char *, char *, char *);
krb5_error_code k5_init_ccache(krb5_ccache *);
int k5_name_from_ccache(krb5_ccache);
krb5_error_code k5_change_password(HWND, krb5_context, char *, char *, char *,
char *, char **);
#endif
HICON kwin_get_icon(time_t);
void trim(char *);
void start_blocking_hook(int);
void end_blocking_hook(void);
void center_dialog(HWND);
void set_dialog_font(HWND, HFONT);
#endif
#endif