readwrite.c 1.4 KB

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