Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f355e34a authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "dm: default-key: Adapt legacy disk format for new set of arguments"

parents 4fa2f91b 4ebbaa97
Loading
Loading
Loading
Loading
+25 −5
Original line number Diff line number Diff line
@@ -133,9 +133,11 @@ static int default_key_ctr_optional(struct dm_target *ti,
	return 0;
}

void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti,
					   struct default_key_c **dkc, u8 *raw,
					   u32 size)
static void default_key_adjust_sector_size_and_iv(char **argv,
						  struct dm_target *ti,
						  struct default_key_c **dkc,
						  u8 *raw, u32 size,
						  bool is_legacy)
{
	struct dm_dev *dev;
	int i;
@@ -146,7 +148,7 @@ void default_key_adjust_sector_size_and_iv(char **argv, struct dm_target *ti,

	dev = (*dkc)->dev;

	if (!strcmp(argv[0], "AES-256-XTS")) {
	if (is_legacy) {
		memcpy(key_new.bytes, raw, size);

		for (i = 0; i < ARRAY_SIZE(key_new.words); i++)
@@ -179,6 +181,24 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv)
	unsigned long long tmpll;
	char dummy;
	int err;
	char *_argv[10];
	bool is_legacy = false;

	if (argc >= 4 && !strcmp(argv[0], "AES-256-XTS")) {
		argc = 0;
		_argv[argc++] = "aes-xts-plain64";
		_argv[argc++] = argv[1];
		_argv[argc++] = "0";
		_argv[argc++] = argv[2];
		_argv[argc++] = argv[3];
		_argv[argc++] = "3";
		_argv[argc++] = "allow_discards";
		_argv[argc++] = "sector_size:4096";
		_argv[argc++] = "iv_large_sectors";
		_argv[argc] = NULL;
		argv = _argv;
		is_legacy = true;
	}

	if (argc < 5) {
		ti->error = "Not enough arguments";
@@ -254,7 +274,7 @@ static int default_key_ctr(struct dm_target *ti, unsigned int argc, char **argv)
	}

	default_key_adjust_sector_size_and_iv(argv, ti, &dkc, raw_key,
					      raw_key_size);
					      raw_key_size, is_legacy);

	dkc->sector_bits = ilog2(dkc->sector_size);
	if (ti->len & ((dkc->sector_size >> SECTOR_SHIFT) - 1)) {