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