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

Commit 2a12cfcb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Abolish DmTargetDefaultKey::IsLegacy" into rvc-dev am: 1dc77eaa am: d8ff3cde

Change-Id: I2c580a5bca1de0cf76333565518613bc8d00506d
parents 6525839c d8ff3cde
Loading
Loading
Loading
Loading
+3 −15
Original line number Diff line number Diff line
@@ -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<std::string> 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<std::string> extra_argv;
    if (is_legacy_) {
    if (use_legacy_options_format_) {
        if (set_dun_) {  // v2 always sets the DUN.
            extra_argv.emplace_back("set_dun");
        }
+12 −22
Original line number Diff line number Diff line
@@ -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 {
    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 "
              "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) {
+2 −3
Original line number Diff line number Diff line
@@ -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;
};