/* * Basic progam to add ext4 encryption to a file system * * Copyright 2015, Google, Inc. * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% */ #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <time.h> #include <sys/types.h> #include <sys/time.h> #include <ext2fs/ext2_fs.h> #include <ext2fs/ext2fs.h> int main (int argc, char *argv[]) { errcode_t retval = 0; ext2_filsys fs; setbuf(stdout, NULL); setbuf(stderr, NULL); initialize_ext2_error_table(); if (argc != 2) { fprintf(stderr, "%s: Usage <device|filesystem>\n", argv[0]); exit(1); } retval = ext2fs_open(argv[1], EXT2_FLAG_RW, 0, 0, unix_io_manager, &fs); if (retval) { com_err(argv[0], retval, "while trying to open '%s'", argv[1]); exit(1); } if (!ext2fs_has_feature_encrypt(fs->super)) { ext2fs_set_feature_encrypt(fs->super); fs->super->s_encrypt_algos[0] = EXT4_ENCRYPTION_MODE_AES_256_XTS; fs->super->s_encrypt_algos[1] = EXT4_ENCRYPTION_MODE_AES_256_CTS; ext2fs_mark_super_dirty(fs); printf("Ext4 encryption enabled on %s\n", argv[1]); } else printf("Ext4 encryption already enabled on %s\n", argv[1]); retval = ext2fs_close(fs); if (retval) { com_err(argv[0], retval, "while trying to close '%s'", argv[1]); exit(1); } return (0); }