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