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;

