deonebook.c 846 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #define _XOPEN_SOURCE 700
  2. #include <dirent.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <unistd.h>
  6. #include "deonebook.h"
  7. int main(int argc, char *argv[])
  8. {
  9. char *keystring = NULL;
  10. char *device = NULL;
  11. int c;
  12. while ((c = getopt(argc, argv, "k:d:")) != -1) {
  13. switch (c) {
  14. case 'k':
  15. keystring = optarg;
  16. break;
  17. case 'd':
  18. device = optarg;
  19. break;
  20. default:
  21. return 1;
  22. }
  23. }
  24. unsigned char *key = getkey(keystring, device);
  25. if (key == NULL) {
  26. return 1;
  27. }
  28. if (optind >= argc) {
  29. for (int i = 0; i < KEY_SIZE; i++) {
  30. printf("%02hhx", key[i]);
  31. }
  32. printf("\n");
  33. return 0;
  34. }
  35. if (optind < argc - 2) {
  36. fprintf(stderr, "too many operands\n");
  37. return 1;
  38. }
  39. if (optind != argc - 2) {
  40. fprintf(stderr, "missing output file\n");
  41. return 1;
  42. }
  43. return decrypt(key, argv[optind], argv[optind + 1]);
  44. }