|
| #define | _GNU_SOURCE |
| |
| #define | F2FS_MAX_KEY_SIZE 64 |
| |
| #define | F2FS_MAX_PASSPHRASE_SIZE 1024 |
| |
| #define | F2FS_MAX_SALT_SIZE 256 |
| |
| #define | F2FS_ENCRYPTION_MODE_INVALID 0 |
| |
| #define | F2FS_ENCRYPTION_MODE_AES_256_XTS 1 |
| |
| #define | F2FS_ENCRYPTION_MODE_AES_256_GCM 2 |
| |
| #define | F2FS_ENCRYPTION_MODE_AES_256_CBC 3 |
| |
| #define | F2FS_ENCRYPTION_MODE_AES_256_CTS 4 |
| |
| #define | F2FS_AES_256_XTS_KEY_SIZE 64 |
| |
| #define | F2FS_AES_256_GCM_KEY_SIZE 32 |
| |
| #define | F2FS_AES_256_CBC_KEY_SIZE 32 |
| |
| #define | F2FS_AES_256_CTS_KEY_SIZE 32 |
| |
| #define | F2FS_MAX_KEY_SIZE 64 |
| |
| #define | F2FS_MAX_PASSPHRASE_SIZE 1024 |
| |
| #define | F2FS_MAX_SALT_SIZE 256 |
| |
| #define | F2FS_PBKDF2_ITERATIONS 0xFFFF |
| |
| #define | KEY_SPEC_THREAD_KEYRING -1 |
| |
| #define | KEY_SPEC_PROCESS_KEYRING -2 |
| |
| #define | KEY_SPEC_SESSION_KEYRING -3 |
| |
| #define | KEY_SPEC_USER_KEYRING -4 |
| |
| #define | KEY_SPEC_USER_SESSION_KEYRING -5 |
| |
| #define | KEY_SPEC_GROUP_KEYRING -6 |
| |
| #define | KEYCTL_GET_KEYRING_ID 0 |
| |
| #define | KEYCTL_JOIN_SESSION_KEYRING 1 |
| |
| #define | KEYCTL_DESCRIBE 6 |
| |
| #define | KEYCTL_SEARCH 10 |
| |
| #define | KEYCTL_SESSION_TO_PARENT 18 |
| |
| #define | F2FS_KEY_DESCRIPTOR_SIZE 8 |
| |
| #define | F2FS_KEY_REF_STR_BUF_SIZE ((F2FS_KEY_DESCRIPTOR_SIZE * 2) + 1) |
| |
| #define | F2FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct f2fs_fscrypt_policy) |
| |
| #define | F2FS_IOC_GET_ENCRYPTION_PWSALT _IOW('f', 20, __u8[16]) |
| |
| #define | F2FS_IOC_GET_ENCRYPTION_POLICY _IOW('f', 21, struct f2fs_fscrypt_policy) |
| |
| #define | OPT_VERBOSE 0x0001 |
| |
| #define | OPT_QUIET 0x0002 |
| |
| #define | SHA512_LENGTH 64 |
| |
| #define | F2FS_KEY_TYPE_LOGON "logon" |
| |
| #define | F2FS_KEY_DESC_PREFIX "f2fs:" |
| |
| #define | F2FS_KEY_DESC_PREFIX_SIZE 5 |
| |
| #define | PARSE_FLAGS_NOTSUPP_OK 0x0001 |
| |
| #define | PARSE_FLAGS_FORCE_FN 0x0002 |
| |
| #define | CMD_HIDDEN 0x0001 |
| |
| #define | add_key_desc "adds a key to the user's keyring" |
| |
| #define | add_key_help |
| |
| #define | set_policy_desc "sets a policy for directories" |
| |
| #define | set_policy_help |
| |
| #define | get_policy_desc "get the encryption for directories" |
| |
| #define | get_policy_help |
| |
| #define | new_session_desc "give the invoking process a new session keyring" |
| |
| #define | new_session_help |
| |
| #define | CMD(name) { #name, do_##name, name##_desc, name##_help, 0 } |
| |
| #define | _CMD(name) { #name, do_##name, NULL, NULL, CMD_HIDDEN } |
| |
|
| void | f2fs_sha512 (const unsigned char *in, unsigned long in_size, unsigned char *out) |
| |
| static long | keyctl (int cmd,...) |
| |
| static key_serial_t | add_key (const char *type, const char *description, const void *payload, size_t plen, key_serial_t keyring) |
| |
| static int | int_log2 (int arg) |
| |
| static void | validate_paths (int argc, char *argv[], int path_start_index) |
| |
| static int | hex2byte (const char *hex, size_t hex_size, unsigned char *bytes, size_t bytes_size) |
| |
| static struct salt * | find_by_salt (unsigned char *salt, size_t salt_len) |
| |
| static void | add_salt (unsigned char *salt, size_t salt_len) |
| |
| static void | clear_secrets (void) |
| |
| static void | die_signal_handler (int UNUSED(signum), siginfo_t *UNUSED(siginfo), void *UNUSED(context)) |
| |
| static void | sigcatcher_setup (void) |
| |
| static void | parse_salt (char *salt_str, int flags) |
| |
| static void | set_policy (struct salt *set_salt, int pad, int argc, char *argv[], int path_start_index) |
| |
| static void | pbkdf2_sha512 (const char *passphrase, struct salt *salt, unsigned int count, unsigned char derived_key[F2FS_MAX_KEY_SIZE]) |
| |
| static int | disable_echo (struct termios *saved_settings) |
| |
| static void | get_passphrase (char *passphrase, int len) |
| |
| static int | get_keyring_id (const char *keyring) |
| |
| static void | generate_key_ref_str (struct salt *salt) |
| |
| static void | insert_key_into_keyring (const char *keyring, struct salt *salt) |
| |
| static void | get_default_salts (void) |
| |
| static void | do_help (int argc, char **argv, const struct cmd_desc *cmd) |
| |
| static void | do_add_key (int argc, char **argv, const struct cmd_desc *cmd) |
| |
| static void | do_set_policy (int argc, char **argv, const struct cmd_desc *cmd) |
| |
| static void | do_get_policy (int argc, char **argv, const struct cmd_desc *cmd) |
| |
| static void | do_new_session (int argc, char **UNUSED(argv), const struct cmd_desc *cmd) |
| |
| static void | do_help (int argc, char **argv, const struct cmd_desc *UNUSED(cmd)) |
| |
| int | main (int argc, char *argv[]) |
| |