19a747e4fSDavid du Colombier #pragma lib "./lib.$O.a" 29a747e4fSDavid du Colombier 39a747e4fSDavid du Colombier enum{ 49a747e4fSDavid du Colombier PASSLEN = 10, 59a747e4fSDavid du Colombier MAXNETCHAL = 100000, /* max securenet challenge */ 69a747e4fSDavid du Colombier Maxpath = 256, 79a747e4fSDavid du Colombier }; 89a747e4fSDavid du Colombier 99a747e4fSDavid du Colombier #define KEYDB "/mnt/keys" 109a747e4fSDavid du Colombier #define NETKEYDB "/mnt/netkeys" 119a747e4fSDavid du Colombier #define KEYDBBUF (sizeof NETKEYDB) /* enough for any keydb prefix */ 129a747e4fSDavid du Colombier #define AUTHLOG "auth" 139a747e4fSDavid du Colombier 149a747e4fSDavid du Colombier enum 159a747e4fSDavid du Colombier { 169a747e4fSDavid du Colombier Nemail = 10, 179a747e4fSDavid du Colombier Plan9 = 1, 189a747e4fSDavid du Colombier Securenet = 2, 199a747e4fSDavid du Colombier }; 209a747e4fSDavid du Colombier 219a747e4fSDavid du Colombier typedef struct 229a747e4fSDavid du Colombier { 239a747e4fSDavid du Colombier char *user; 249a747e4fSDavid du Colombier char *postid; 259a747e4fSDavid du Colombier char *name; 269a747e4fSDavid du Colombier char *dept; 279a747e4fSDavid du Colombier char *email[Nemail]; 289a747e4fSDavid du Colombier } Acctbio; 299a747e4fSDavid du Colombier 309a747e4fSDavid du Colombier typedef struct { 319a747e4fSDavid du Colombier char *keys; 329a747e4fSDavid du Colombier char *msg; 339a747e4fSDavid du Colombier char *who; 349a747e4fSDavid du Colombier Biobuf *b; 359a747e4fSDavid du Colombier } Fs; 369a747e4fSDavid du Colombier 379a747e4fSDavid du Colombier extern Fs fs[3]; 389a747e4fSDavid du Colombier 39*3ff48bf5SDavid du Colombier void checksum(char*, char*); 409a747e4fSDavid du Colombier void error(char*, ...); 41*3ff48bf5SDavid du Colombier void fail(char*); 42*3ff48bf5SDavid du Colombier char* findkey(char*, char*, char*); 43*3ff48bf5SDavid du Colombier char* findsecret(char*, char*, char*); 44*3ff48bf5SDavid du Colombier int getauthkey(char*); 459a747e4fSDavid du Colombier long getexpiration(char *db, char *u); 469a747e4fSDavid du Colombier void getpass(char*, char*, int, int); 479a747e4fSDavid du Colombier int getsecret(int, char*); 489a747e4fSDavid du Colombier int keyfmt(Fmt*); 49*3ff48bf5SDavid du Colombier void logfail(char*); 50*3ff48bf5SDavid du Colombier int netcheck(void*, long, char*); 51*3ff48bf5SDavid du Colombier char* netdecimal(char*); 52*3ff48bf5SDavid du Colombier char* netresp(char*, long, char*); 53*3ff48bf5SDavid du Colombier char* okpasswd(char*); 549a747e4fSDavid du Colombier int querybio(char*, char*, Acctbio*); 55*3ff48bf5SDavid du Colombier void rdbio(char*, char*, Acctbio*); 56*3ff48bf5SDavid du Colombier int readarg(int, char*, int); 57*3ff48bf5SDavid du Colombier int readfile(char*, char*, int); 58*3ff48bf5SDavid du Colombier void readln(char*, char*, int, int); 59*3ff48bf5SDavid du Colombier long readn(int, void*, long); 60*3ff48bf5SDavid du Colombier char* secureidcheck(char*, char*); 61*3ff48bf5SDavid du Colombier char* setkey(char*, char*, char*); 62*3ff48bf5SDavid du Colombier char* setsecret(char*, char*, char*); 63*3ff48bf5SDavid du Colombier int smartcheck(void*, long, char*); 64*3ff48bf5SDavid du Colombier void succeed(char*); 659a747e4fSDavid du Colombier void wrbio(char*, Acctbio*); 66*3ff48bf5SDavid du Colombier int writefile(char*, char*, int); 679a747e4fSDavid du Colombier 689a747e4fSDavid du Colombier #pragma varargck type "K" char* 69