#pragma lib "./lib.$O.a" enum{ MAXNETCHAL = 100000, /* max securenet challenge */ Maxpath = 256, }; #define KEYDB "/mnt/keys" #define NETKEYDB "/mnt/netkeys" #define KEYDBBUF (sizeof NETKEYDB) /* enough for any keydb prefix */ #define AUTHLOG "auth" enum { Nemail = 10, Plan9 = 1, Securenet = 2, }; typedef struct { char *user; char *postid; char *name; char *dept; char *email[Nemail]; } Acctbio; typedef struct { char *keys; char *msg; char *who; Biobuf *b; } Fs; extern Fs fs[3]; int answer(char*); void checksum(char*, char*); void error(char*, ...); void fail(char*); int findkey(char*, char*, Authkey*); char* finddeskey(char*, char*, char*); uchar* findaeskey(char*, char*, uchar*); char* findsecret(char*, char*, char*); int getauthkey(Authkey*); long getexpiration(char *db, char *u); void getpass(Authkey*, char*, int, int); int deskeyfmt(Fmt*); void logfail(char*); int netcheck(void*, long, char*); char* netdecimal(char*); char* netresp(char*, long, char*); char* okpasswd(char*); void private(void); int querybio(char*, char*, Acctbio*); void rdbio(char*, char*, Acctbio*); int readarg(int, char*, int); int readfile(char*, char*, int); char* secureidcheck(char*, char*); int setkey(char*, char*, Authkey*); char* setdeskey(char*, char*, char*); uchar* setaeskey(char*, char*, uchar*); char* setsecret(char*, char*, char*); int smartcheck(void*, long, char*); void succeed(char*); void wrbio(char*, Acctbio*); int writefile(char*, char*, int); #pragma varargck type "K" char*