blob: 5f22c316aed39ccd99d04972e7d77ba42cfe57ad [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string>
#include "base/macros.h"
#include "components/os_crypt/key_storage_linux.h"
#include "components/os_crypt/os_crypt.h"
#include "components/os_crypt/os_crypt_mocker_linux.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
class OSCryptLinuxTest : public testing::Test {
public:
OSCryptLinuxTest() = default;
~OSCryptLinuxTest() override = default;
void SetUp() override {
OSCryptMockerLinux::SetUpWithSingleton();
key_storage_ = OSCryptMockerLinux::GetInstance();
}
void TearDown() override { OSCryptMockerLinux::TearDown(); }
protected:
OSCryptMockerLinux* key_storage_ = nullptr;
private:
DISALLOW_COPY_AND_ASSIGN(OSCryptLinuxTest);
};
TEST_F(OSCryptLinuxTest, VerifyV0) {
const std::string originaltext = "hello";
std::string ciphertext;
std::string decipheredtext;
key_storage_->ResetTo("");
ciphertext = originaltext; // No encryption
ASSERT_TRUE(OSCrypt::DecryptString(ciphertext, &decipheredtext));
ASSERT_EQ(originaltext, decipheredtext);
}
TEST_F(OSCryptLinuxTest, VerifyV10) {
const std::string originaltext = "hello";
std::string ciphertext;
std::string decipheredtext;
key_storage_->ResetTo("peanuts");
ASSERT_TRUE(OSCrypt::EncryptString(originaltext, &ciphertext));
key_storage_->ResetTo("not_peanuts");
ciphertext = ciphertext.substr(3).insert(0, "v10");
ASSERT_TRUE(OSCrypt::DecryptString(ciphertext, &decipheredtext));
ASSERT_EQ(originaltext, decipheredtext);
}
TEST_F(OSCryptLinuxTest, VerifyV11) {
const std::string originaltext = "hello";
std::string ciphertext;
std::string decipheredtext;
key_storage_->ResetTo("");
ASSERT_TRUE(OSCrypt::EncryptString(originaltext, &ciphertext));
ASSERT_EQ(ciphertext.substr(0, 3), "v11");
ASSERT_TRUE(OSCrypt::DecryptString(ciphertext, &decipheredtext));
ASSERT_EQ(originaltext, decipheredtext);
}
} // namespace