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;