diff --git a/fs_mgr/libdm/dm_target.cpp b/fs_mgr/libdm/dm_target.cpp index 29b103282..a59419877 100644 --- a/fs_mgr/libdm/dm_target.cpp +++ b/fs_mgr/libdm/dm_target.cpp @@ -243,20 +243,8 @@ std::string DmTargetCrypt::GetParameterString() const { return android::base::Join(argv, " "); } -bool DmTargetDefaultKey::IsLegacy(bool* result) { - DeviceMapper& dm = DeviceMapper::Instance(); - DmTargetTypeInfo info; - if (!dm.GetTargetByName(kName, &info)) return false; - // dm-default-key was modified to be like dm-crypt with version 2 - *result = !info.IsAtLeast(2, 0, 0); - return true; -} - bool DmTargetDefaultKey::Valid() const { - bool real_is_legacy; - if (!DmTargetDefaultKey::IsLegacy(&real_is_legacy)) return false; - if (real_is_legacy != is_legacy_) return false; - if (!is_legacy_ && !set_dun_) return false; + if (!use_legacy_options_format_ && !set_dun_) return false; return true; } @@ -264,13 +252,13 @@ std::string DmTargetDefaultKey::GetParameterString() const { std::vector argv; argv.emplace_back(cipher_); argv.emplace_back(key_); - if (!is_legacy_) { + if (!use_legacy_options_format_) { argv.emplace_back("0"); // iv_offset } argv.emplace_back(blockdev_); argv.push_back(std::to_string(start_sector_)); std::vector extra_argv; - if (is_legacy_) { + if (use_legacy_options_format_) { if (set_dun_) { // v2 always sets the DUN. extra_argv.emplace_back("set_dun"); } diff --git a/fs_mgr/libdm/dm_test.cpp b/fs_mgr/libdm/dm_test.cpp index 67af59a2c..41d3145bb 100644 --- a/fs_mgr/libdm/dm_test.cpp +++ b/fs_mgr/libdm/dm_test.cpp @@ -516,32 +516,22 @@ TEST(libdm, CryptArgs) { } TEST(libdm, DefaultKeyArgs) { - DmTargetTypeInfo info; - - DeviceMapper& dm = DeviceMapper::Instance(); - if (!dm.GetTargetByName("default-key", &info)) { - cout << "default-key module not enabled; skipping test" << std::endl; - return; - } - bool is_legacy; - ASSERT_TRUE(DmTargetDefaultKey::IsLegacy(&is_legacy)); - // set_dun only in the non-is_legacy case - DmTargetDefaultKey target(0, 4096, "AES-256-XTS", "abcdef0123456789", "/dev/loop0", 0); - if (is_legacy) { - target.SetIsLegacy(); - } else { - target.SetSetDun(); - } + DmTargetDefaultKey target(0, 4096, "aes-xts-plain64", "abcdef0123456789", "/dev/loop0", 0); + target.SetSetDun(); ASSERT_EQ(target.name(), "default-key"); ASSERT_TRUE(target.Valid()); - if (is_legacy) { - ASSERT_EQ(target.GetParameterString(), "AES-256-XTS abcdef0123456789 /dev/loop0 0"); - } else { - // TODO: Add case for wrapped key enabled - ASSERT_EQ(target.GetParameterString(), - "AES-256-XTS abcdef0123456789 0 /dev/loop0 0 3 allow_discards sector_size:4096 " - "iv_large_sectors"); - } + // TODO: Add case for wrapped key enabled + ASSERT_EQ(target.GetParameterString(), + "aes-xts-plain64 abcdef0123456789 0 /dev/loop0 0 3 allow_discards sector_size:4096 " + "iv_large_sectors"); +} + +TEST(libdm, DefaultKeyLegacyArgs) { + DmTargetDefaultKey target(0, 4096, "AES-256-XTS", "abcdef0123456789", "/dev/loop0", 0); + target.SetUseLegacyOptionsFormat(); + ASSERT_EQ(target.name(), "default-key"); + ASSERT_TRUE(target.Valid()); + ASSERT_EQ(target.GetParameterString(), "AES-256-XTS abcdef0123456789 /dev/loop0 0"); } TEST(libdm, DeleteDeviceWithTimeout) { diff --git a/fs_mgr/libdm/include/libdm/dm_target.h b/fs_mgr/libdm/include/libdm/dm_target.h index 050d0b645..57096ce2f 100644 --- a/fs_mgr/libdm/include/libdm/dm_target.h +++ b/fs_mgr/libdm/include/libdm/dm_target.h @@ -290,8 +290,7 @@ class DmTargetDefaultKey final : public DmTarget { std::string name() const override { return kName; } bool Valid() const override; std::string GetParameterString() const override; - static bool IsLegacy(bool* result); - void SetIsLegacy() { is_legacy_ = true; } + void SetUseLegacyOptionsFormat() { use_legacy_options_format_ = true; } void SetSetDun() { set_dun_ = true; } void SetWrappedKeyV0() { is_hw_wrapped_ = true; } @@ -302,7 +301,7 @@ class DmTargetDefaultKey final : public DmTarget { std::string key_; std::string blockdev_; uint64_t start_sector_; - bool is_legacy_ = false; + bool use_legacy_options_format_ = false; bool set_dun_ = false; bool is_hw_wrapped_ = false; };