iam.c 841 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <authsrv.h>
  4. #include <ctype.h>
  5. #include "authcmdlib.h"
  6. void
  7. main(int argc, char **argv)
  8. {
  9. char user[ANAMELEN];
  10. char p9pass[32];
  11. char key[DESKEYLEN];
  12. int fd;
  13. ARGBEGIN{
  14. }ARGEND;
  15. switch(argc){
  16. case 2:
  17. strncpy(user, argv[0], ANAMELEN);
  18. user[ANAMELEN-1] = 0;
  19. passtokey(key, argv[1]);
  20. break;
  21. case 1:
  22. strncpy(user, argv[0], ANAMELEN);
  23. user[ANAMELEN-1] = 0;
  24. getpass(key, p9pass, 0, 0);
  25. break;
  26. case 0:
  27. strcpy(user, getuser());
  28. getpass(key, p9pass, 0, 0);
  29. break;
  30. default:
  31. fprint(2, "usage: auth/iam [user [password]]\n");
  32. break;
  33. }
  34. fd = open("/dev/key", OWRITE);
  35. if(fd < 0)
  36. sysfatal("open key");
  37. write(fd, key, DESKEYLEN);
  38. close(fd);
  39. fd = open("/dev/hostowner", OWRITE);
  40. if(fd < 0)
  41. sysfatal("open hostowner");
  42. write(fd, user, strlen(user));
  43. close(fd);
  44. }