readwrite.c 1.4 KB

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