|  | enum{ MAXFILESIZE = 10*1024*1024 }; | 
|  |  | 
|  | enum{/* PW status bits */ | 
|  | Enabled 	= (1<<0), | 
|  | STA 		= (1<<1)	/* extra SecurID step */ | 
|  | }; | 
|  |  | 
|  | typedef struct PW { | 
|  | char *id;		/* user id */ | 
|  | ulong expire;	/* expiration time (epoch seconds) */ | 
|  | ushort status;	/* Enabled, STA, ... */ | 
|  | ushort failed;	/* number of failed login attempts */ | 
|  | char *other;	/* other information, e.g. sponsor */ | 
|  | mpint *Hi;  	/* H(passphrase)^-1 mod p */ | 
|  | } PW; | 
|  |  | 
|  | PW *getPW(char *, int); | 
|  | int putPW(PW *); | 
|  | void freePW(PW *); | 
|  |  | 
|  | /* *client: SConn, client name, passphrase */ | 
|  | /* *server: SConn, (partial) 1st msg, PW entry */ | 
|  | /* *setpass: Username, hashed passphrase, PW entry */ | 
|  | int PAKclient(SConn *, char *, char *, char **); | 
|  | int PAKserver(SConn *, char *, char *, PW **); | 
|  | char *PAK_Hi(char *, char *, mpint *, mpint *); | 
|  |  | 
|  | #define LOG "secstore" | 
|  |  | 
|  | extern	char	*SECSTORE_DIR; | 
|  |  |