1 #include <u.h> 2 #include <libc.h> 3 #include <auth.h> 4 #include "authsrv.h" 5 6 int 7 readfile(char *file, char *buf, int n) 8 { 9 int fd; 10 11 fd = open(file, OREAD); 12 if(fd < 0){ 13 werrstr("%s: %r", file); 14 return -1; 15 } 16 n = read(fd, buf, n); 17 close(fd); 18 return n; 19 } 20 21 int 22 writefile(char *file, char *buf, int n) 23 { 24 int fd; 25 26 fd = open(file, OWRITE); 27 if(fd < 0) 28 return -1; 29 n = write(fd, buf, n); 30 close(fd); 31 return n; 32 } 33 34 char* 35 findkey(char *db, char *user, char *key) 36 { 37 int n; 38 char filename[3*NAMELEN]; 39 40 sprint(filename, "%s/%s/key", db, user); 41 n = readfile(filename, key, DESKEYLEN); 42 if(n != DESKEYLEN) 43 return 0; 44 else 45 return key; 46 } 47 48 char* 49 findsecret(char *db, char *user, char *secret) 50 { 51 int n; 52 char filename[3*NAMELEN]; 53 54 sprint(filename, "%s/%s/secret", db, user); 55 n = readfile(filename, secret, SECRETLEN-1); 56 secret[n]=0; 57 if(n <= 0) 58 return 0; 59 else 60 return secret; 61 } 62 63 char* 64 setkey(char *db, char *user, char *key) 65 { 66 int n; 67 char filename[3*NAMELEN]; 68 69 sprint(filename, "%s/%s/key", db, user); 70 n = writefile(filename, key, DESKEYLEN); 71 if(n != DESKEYLEN) 72 return 0; 73 else 74 return key; 75 } 76 77 char* 78 setsecret(char *db, char *user, char *secret) 79 { 80 int n; 81 char filename[3*NAMELEN]; 82 83 sprint(filename, "%s/%s/secret", db, user); 84 n = writefile(filename, secret, strlen(secret)); 85 if(n != strlen(secret)) 86 return 0; 87 else 88 return secret; 89 } 90