xref: /plan9-contrib/sys/src/cmd/auth/lib/readwrite.c (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
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