debug.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * eCryptfs: Linux filesystem encryption layer
  4. * Functions only useful for debugging.
  5. *
  6. * Copyright (C) 2006 International Business Machines Corp.
  7. * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com>
  8. */
  9. #include "ecryptfs_kernel.h"
  10. /*
  11. * ecryptfs_dump_auth_tok - debug function to print auth toks
  12. *
  13. * This function will print the contents of an ecryptfs authentication
  14. * token.
  15. */
  16. void ecryptfs_dump_auth_tok(struct ecryptfs_auth_tok *auth_tok)
  17. {
  18. char salt[ECRYPTFS_SALT_SIZE * 2 + 1];
  19. char sig[ECRYPTFS_SIG_SIZE_HEX + 1];
  20. ecryptfs_printk(KERN_DEBUG, "Auth tok at mem loc [%p]:\n",
  21. auth_tok);
  22. if (auth_tok->flags & ECRYPTFS_PRIVATE_KEY) {
  23. ecryptfs_printk(KERN_DEBUG, " * private key type\n");
  24. } else {
  25. ecryptfs_printk(KERN_DEBUG, " * passphrase type\n");
  26. ecryptfs_to_hex(salt, auth_tok->token.password.salt,
  27. ECRYPTFS_SALT_SIZE);
  28. ecryptfs_printk(KERN_DEBUG, " * salt = [%s]\n", salt);
  29. if (auth_tok->token.password.flags &
  30. ECRYPTFS_PERSISTENT_PASSWORD) {
  31. ecryptfs_printk(KERN_DEBUG, " * persistent\n");
  32. }
  33. memcpy(sig, auth_tok->token.password.signature,
  34. ECRYPTFS_SIG_SIZE_HEX);
  35. sig[ECRYPTFS_SIG_SIZE_HEX] = '\0';
  36. ecryptfs_printk(KERN_DEBUG, " * signature = [%s]\n", sig);
  37. }
  38. ecryptfs_printk(KERN_DEBUG, " * session_key.flags = [0x%x]\n",
  39. auth_tok->session_key.flags);
  40. if (auth_tok->session_key.flags
  41. & ECRYPTFS_USERSPACE_SHOULD_TRY_TO_DECRYPT)
  42. ecryptfs_printk(KERN_DEBUG,
  43. " * Userspace decrypt request set\n");
  44. if (auth_tok->session_key.flags
  45. & ECRYPTFS_USERSPACE_SHOULD_TRY_TO_ENCRYPT)
  46. ecryptfs_printk(KERN_DEBUG,
  47. " * Userspace encrypt request set\n");
  48. if (auth_tok->session_key.flags & ECRYPTFS_CONTAINS_DECRYPTED_KEY) {
  49. ecryptfs_printk(KERN_DEBUG, " * Contains decrypted key\n");
  50. ecryptfs_printk(KERN_DEBUG,
  51. " * session_key.decrypted_key_size = [0x%x]\n",
  52. auth_tok->session_key.decrypted_key_size);
  53. ecryptfs_printk(KERN_DEBUG, " * Decrypted session key "
  54. "dump:\n");
  55. if (ecryptfs_verbosity > 0)
  56. ecryptfs_dump_hex(auth_tok->session_key.decrypted_key,
  57. ECRYPTFS_DEFAULT_KEY_BYTES);
  58. }
  59. if (auth_tok->session_key.flags & ECRYPTFS_CONTAINS_ENCRYPTED_KEY) {
  60. ecryptfs_printk(KERN_DEBUG, " * Contains encrypted key\n");
  61. ecryptfs_printk(KERN_DEBUG,
  62. " * session_key.encrypted_key_size = [0x%x]\n",
  63. auth_tok->session_key.encrypted_key_size);
  64. ecryptfs_printk(KERN_DEBUG, " * Encrypted session key "
  65. "dump:\n");
  66. if (ecryptfs_verbosity > 0)
  67. ecryptfs_dump_hex(auth_tok->session_key.encrypted_key,
  68. auth_tok->session_key.
  69. encrypted_key_size);
  70. }
  71. }
  72. /**
  73. * ecryptfs_dump_hex - debug hex printer
  74. * @data: string of bytes to be printed
  75. * @bytes: number of bytes to print
  76. *
  77. * Dump hexadecimal representation of char array
  78. */
  79. void ecryptfs_dump_hex(char *data, int bytes)
  80. {
  81. if (ecryptfs_verbosity < 1)
  82. return;
  83. print_hex_dump(KERN_DEBUG, "ecryptfs: ", DUMP_PREFIX_OFFSET, 16, 1,
  84. data, bytes, false);
  85. }