#ifndef __LEASHWIN__
#define __LEASHWIN__
#include <krb5.h>
#define ANAME_SZ 40
#define REALM_SZ 40
#define SNAME_SZ 40
#define INST_SZ 40
#define MAX_K_NAME_SZ (ANAME_SZ + INST_SZ + REALM_SZ + 2)
#define DLGTYPE_PASSWD 0
#define DLGTYPE_CHPASSWD 1
#define DLGTYPE_MASK 0x0000ffff
#define DLGFLAG_READONLYPRINC 0x10000
typedef struct {
int dlgtype;
int dlgstatemax;
LPSTR title;
LPSTR principal;
} LSH_DLGINFO, FAR *LPLSH_DLGINFO;
#define LEASH_USERNAME_SZ 64
#define LEASH_REALM_SZ 192
#define LEASH_TITLE_SZ 128
#define LEASH_CCACHE_NAME_SZ 264
typedef struct {
DWORD size;
int dlgtype;
LPSTR title;
LPSTR username;
LPSTR realm;
int use_defaults;
int forwardable;
int noaddresses;
int lifetime;
int renew_till;
int proxiable;
int publicip;
struct {
char username[LEASH_USERNAME_SZ];
char realm[LEASH_REALM_SZ];
char ccache[LEASH_CCACHE_NAME_SZ];
} out;
struct {
char title[LEASH_TITLE_SZ];
char username[LEASH_USERNAME_SZ];
char realm[LEASH_REALM_SZ];
char ccache[LEASH_CCACHE_NAME_SZ];
} in;
} LSH_DLGINFO_EX, *LPLSH_DLGINFO_EX;
#define LSH_DLGINFO_EX_V1_SZ (sizeof(DWORD) + 3 * sizeof(LPSTR) + 8 * sizeof(int))
#define LSH_DLGINFO_EX_V2_SZ (LSH_DLGINFO_EX_V1_SZ + LEASH_USERNAME_SZ + LEASH_REALM_SZ)
#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)
#ifndef NETIDMGR
#define NETID_USERNAME_SZ 128
#define NETID_REALM_SZ 192
#define NETID_TITLE_SZ 256
#define NETID_CCACHE_NAME_SZ 264
#define NETID_DLGTYPE_TGT 0
#define NETID_DLGTYPE_CHPASSWD 1
typedef struct {
DWORD size;
DWORD dlgtype;
struct {
WCHAR title[NETID_TITLE_SZ];
WCHAR username[NETID_USERNAME_SZ];
WCHAR realm[NETID_REALM_SZ];
WCHAR ccache[NETID_CCACHE_NAME_SZ];
DWORD use_defaults;
DWORD forwardable;
DWORD noaddresses;
DWORD lifetime;
DWORD renew_till;
DWORD proxiable;
DWORD publicip;
DWORD must_use_specified_principal;
} in;
struct {
WCHAR username[NETID_USERNAME_SZ];
WCHAR realm[NETID_REALM_SZ];
WCHAR ccache[NETID_CCACHE_NAME_SZ];
} out;
} NETID_DLGINFO, *LPNETID_DLGINFO;
#define NETID_DLGINFO_V1_SZ (10 * sizeof(DWORD) \
+ sizeof(WCHAR) * (NETID_TITLE_SZ + \
2 * NETID_USERNAME_SZ + 2 * NETID_REALM_SZ + \
2 * NETID_CCACHE_NAME_SZ))
#endif
typedef struct TicketList TicketList;
struct TicketList {
TicketList *next;
char *service;
char *encTypes;
time_t issued;
time_t valid_until;
time_t renew_until;
unsigned long flags;
};
typedef struct TICKETINFO TICKETINFO;
struct TICKETINFO {
TICKETINFO *next;
char *principal;
char *ccache_name;
TicketList *ticket_list;
int btickets;
time_t issued;
time_t valid_until;
time_t renew_until;
unsigned long flags;
};
#ifdef __cplusplus
extern "C" {
#endif
int FAR Leash_kinit_dlg(HWND hParent, LPLSH_DLGINFO lpdlginfo);
int FAR Leash_kinit_dlg_ex(HWND hParent, LPLSH_DLGINFO_EX lpdlginfoex);
int FAR Leash_changepwd_dlg(HWND hParent, LPLSH_DLGINFO lpdlginfo);
int FAR Leash_changepwd_dlg_ex(HWND hParent, LPLSH_DLGINFO_EX lpdlginfo);
long FAR Leash_checkpwd(char *principal, char *password);
long FAR Leash_changepwd(char *principal, char *password, char *newpassword, char** result_string);
long FAR Leash_kinit(char *principal, char *password, int lifetime);
long FAR Leash_kinit_ex(char * principal, char * password, int lifetime,
int forwardable, int proxiable, int renew_life,
int addressless, unsigned long publicIP);
long FAR Leash_klist(HWND hlist, TICKETINFO FAR *ticketinfo);
long FAR Leash_kdestroy(void);
long FAR Leash_get_lsh_errno( LONG FAR *err_val);
long FAR Leash_renew(void);
long FAR Leash_importable(void);
long FAR Leash_import(void);
BOOL Leash_set_help_file( char FAR *szHelpFile );
LPSTR Leash_get_help_file(void);
void Leash_reset_defaults(void);
#define NO_TICKETS 0
#define EXPD_TICKETS 2
#define GOOD_TICKETS 1
DWORD Leash_get_default_lifetime(void);
DWORD Leash_set_default_lifetime(DWORD minutes);
DWORD Leash_reset_default_lifetime(void);
DWORD Leash_get_default_renew_till(void);
DWORD Leash_set_default_renew_till(DWORD minutes);
DWORD Leash_reset_default_renew_till(void);
DWORD Leash_get_default_renewable(void);
DWORD Leash_set_default_renewable(DWORD onoff);
DWORD Leash_reset_default_renewable(void);
DWORD Leash_get_default_forwardable(void);
DWORD Leash_set_default_forwardable(DWORD onoff);
DWORD Leash_reset_default_forwardable(void);
DWORD Leash_get_default_noaddresses(void);
DWORD Leash_set_default_noaddresses(DWORD onoff);
DWORD Leash_reset_default_noaddresses(void);
DWORD Leash_get_default_proxiable(void);
DWORD Leash_set_default_proxiable(DWORD onoff);
DWORD Leash_reset_default_proxiable(void);
DWORD Leash_get_default_publicip(void);
DWORD Leash_set_default_publicip(DWORD ipv4addr);
DWORD Leash_reset_default_publicip(void);
DWORD Leash_get_hide_kinit_options(void);
DWORD Leash_set_hide_kinit_options(DWORD onoff);
DWORD Leash_reset_hide_kinit_options(void);
DWORD Leash_get_default_life_min(void);
DWORD Leash_set_default_life_min(DWORD minutes);
DWORD Leash_reset_default_life_min(void);
DWORD Leash_get_default_life_max(void);
DWORD Leash_set_default_life_max(DWORD minutes);
DWORD Leash_reset_default_life_max(void);
DWORD Leash_get_default_renew_min(void);
DWORD Leash_set_default_renew_min(DWORD minutes);
DWORD Leash_reset_default_renew_min(void);
DWORD Leash_get_default_renew_max(void);
DWORD Leash_set_default_renew_max(DWORD minutes);
DWORD Leash_reset_default_renew_max(void);
DWORD Leash_get_default_uppercaserealm(void);
DWORD Leash_set_default_uppercaserealm(DWORD onoff);
DWORD Leash_reset_default_uppercaserealm(void);
DWORD Leash_get_default_mslsa_import(void);
DWORD Leash_set_default_mslsa_import(DWORD onoffmatch);
DWORD Leash_reset_default_mslsa_import(void);
DWORD Leash_get_default_preserve_kinit_settings(void);
DWORD Leash_set_default_preserve_kinit_settings(DWORD onoff);
DWORD Leash_reset_default_preserve_kinit_settings(void);
#ifdef __cplusplus
}
#endif
#endif