mirror of https://github.com/vitalif/e2fsprogs
mke2fs: teach mke2fs tool about encryption modes
Signed-off-by: Ildar Muslukhov <muslukhovi@gmail.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>crypto
parent
8f8be9f412
commit
33bdbc3210
|
@ -801,7 +801,8 @@ struct ext2_super_block {
|
||||||
|
|
||||||
#define EXT2_FEATURE_COMPAT_SUPP 0
|
#define EXT2_FEATURE_COMPAT_SUPP 0
|
||||||
#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
|
#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
|
||||||
EXT4_FEATURE_INCOMPAT_MMP)
|
EXT4_FEATURE_INCOMPAT_MMP | \
|
||||||
|
EXT4_FEATURE_INCOMPAT_ENCRYPT)
|
||||||
#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
|
#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
|
||||||
EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
|
EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
|
||||||
EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
|
EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
|
||||||
|
|
|
@ -598,7 +598,8 @@ typedef struct ext2_icount *ext2_icount_t;
|
||||||
EXT4_FEATURE_INCOMPAT_FLEX_BG|\
|
EXT4_FEATURE_INCOMPAT_FLEX_BG|\
|
||||||
EXT4_LIB_INCOMPAT_MMP|\
|
EXT4_LIB_INCOMPAT_MMP|\
|
||||||
EXT4_FEATURE_INCOMPAT_64BIT|\
|
EXT4_FEATURE_INCOMPAT_64BIT|\
|
||||||
EXT4_FEATURE_INCOMPAT_INLINE_DATA)
|
EXT4_FEATURE_INCOMPAT_INLINE_DATA| \
|
||||||
|
EXT4_FEATURE_INCOMPAT_ENCRYPT)
|
||||||
|
|
||||||
#define EXT2_LIB_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER|\
|
#define EXT2_LIB_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER|\
|
||||||
EXT4_FEATURE_RO_COMPAT_HUGE_FILE|\
|
EXT4_FEATURE_RO_COMPAT_HUGE_FILE|\
|
||||||
|
|
|
@ -173,6 +173,13 @@ errcode_t ext2fs_initialize(const char *name, int flags,
|
||||||
set_field(s_raid_stripe_width, 0); /* default stripe width: 0 */
|
set_field(s_raid_stripe_width, 0); /* default stripe width: 0 */
|
||||||
set_field(s_log_groups_per_flex, 0);
|
set_field(s_log_groups_per_flex, 0);
|
||||||
set_field(s_flags, 0);
|
set_field(s_flags, 0);
|
||||||
|
/* Encryption algorithms for data and filename encryption */
|
||||||
|
if (super->s_feature_incompat & EXT4_FEATURE_INCOMPAT_ENCRYPT) {
|
||||||
|
set_field(s_encrypt_algos[0],
|
||||||
|
EXT4_ENCRYPTION_MODE_AES_256_XTS);
|
||||||
|
set_field(s_encrypt_algos[1],
|
||||||
|
EXT4_ENCRYPTION_MODE_AES_256_CBC);
|
||||||
|
}
|
||||||
assign_field(s_backup_bgs[0]);
|
assign_field(s_backup_bgs[0]);
|
||||||
assign_field(s_backup_bgs[1]);
|
assign_field(s_backup_bgs[1]);
|
||||||
if (super->s_feature_incompat & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
|
if (super->s_feature_incompat & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
|
||||||
|
|
|
@ -638,6 +638,20 @@ write_superblock:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char * encryption_algo2string(int mode)
|
||||||
|
{
|
||||||
|
switch (mode) {
|
||||||
|
case EXT4_ENCRYPTION_MODE_INVALID:
|
||||||
|
return "Invalid";
|
||||||
|
case EXT4_ENCRYPTION_MODE_AES_256_XTS:
|
||||||
|
return "AES-256-XTS";
|
||||||
|
case EXT4_ENCRYPTION_MODE_AES_256_GCM:
|
||||||
|
return "AES-256-GCM";
|
||||||
|
case EXT4_ENCRYPTION_MODE_AES_256_CBC:
|
||||||
|
return "AES-256-CBC";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void show_stats(ext2_filsys fs)
|
static void show_stats(ext2_filsys fs)
|
||||||
{
|
{
|
||||||
struct ext2_super_block *s = fs->super;
|
struct ext2_super_block *s = fs->super;
|
||||||
|
@ -711,6 +725,12 @@ skip_details:
|
||||||
|
|
||||||
if (!e2p_is_null_uuid(s->s_uuid))
|
if (!e2p_is_null_uuid(s->s_uuid))
|
||||||
printf(_("Filesystem UUID: %s\n"), e2p_uuid2str(s->s_uuid));
|
printf(_("Filesystem UUID: %s\n"), e2p_uuid2str(s->s_uuid));
|
||||||
|
if (s->s_feature_incompat& EXT4_FEATURE_INCOMPAT_ENCRYPT) {
|
||||||
|
printf(_("File encryption: %s\n"),
|
||||||
|
encryption_algo2string(s->s_encrypt_algos[0]));
|
||||||
|
printf(_("Directory encryption: %s\n"),
|
||||||
|
encryption_algo2string(s->s_encrypt_algos[1]));
|
||||||
|
}
|
||||||
printf("%s", _("Superblock backups stored on blocks: "));
|
printf("%s", _("Superblock backups stored on blocks: "));
|
||||||
group_block = s->s_first_data_block;
|
group_block = s->s_first_data_block;
|
||||||
col_left = 0;
|
col_left = 0;
|
||||||
|
@ -1076,7 +1096,8 @@ static __u32 ok_features[3] = {
|
||||||
EXT4_FEATURE_INCOMPAT_FLEX_BG|
|
EXT4_FEATURE_INCOMPAT_FLEX_BG|
|
||||||
EXT4_FEATURE_INCOMPAT_MMP |
|
EXT4_FEATURE_INCOMPAT_MMP |
|
||||||
EXT4_FEATURE_INCOMPAT_64BIT|
|
EXT4_FEATURE_INCOMPAT_64BIT|
|
||||||
EXT4_FEATURE_INCOMPAT_INLINE_DATA,
|
EXT4_FEATURE_INCOMPAT_INLINE_DATA|
|
||||||
|
EXT4_FEATURE_INCOMPAT_ENCRYPT,
|
||||||
/* R/O compat */
|
/* R/O compat */
|
||||||
EXT2_FEATURE_RO_COMPAT_LARGE_FILE|
|
EXT2_FEATURE_RO_COMPAT_LARGE_FILE|
|
||||||
EXT4_FEATURE_RO_COMPAT_HUGE_FILE|
|
EXT4_FEATURE_RO_COMPAT_HUGE_FILE|
|
||||||
|
|
Loading…
Reference in New Issue