blob: 557c490e0b31abb5e4d7ce001bad5cc587b73ecb [file] [log] [blame]
#pragma once
#include <sdbusplus/bus.hpp>
#include <sdbusplus/exception.hpp>
#include <sdbusplus/server/object.hpp>
#include <xyz/openbmc_project/eStoraged/server.hpp>
#include <string>
#include <vector>
namespace estoraged
{
using eStoragedInherit = sdbusplus::server::object_t<
sdbusplus::xyz::openbmc_project::server::eStoraged>;
/** @class eStoraged
* @brief eStoraged object to manage a LUKS encrypted storage device.
*/
class eStoraged : eStoragedInherit
{
public:
eStoraged(sdbusplus::bus::bus& bus, const char* path,
const std::string& devPath, const std::string& containerName) :
eStoragedInherit(bus, path),
devPath(devPath), containerName(containerName)
{}
/** @brief Format the LUKS encrypted device and create empty filesystem.
*
* @param[in] password - password to set for the LUKS device.
*/
void format(std::vector<uint8_t> password) override;
/** @brief Erase the contents of the storage device.
*
* @param[in] password - password for the LUKS device.
* @param[in] eraseType - type of erase operation.
*/
void erase(std::vector<uint8_t> password, EraseMethod eraseType) override;
/** @brief Unmount filesystem and lock the LUKS device.
*
* @param[in] password - password for the LUKS device.
*/
void lock(std::vector<uint8_t> password) override;
/** @brief Unlock device and mount the filesystem.
*
* @param[in] password - password for the LUKS device.
*/
void unlock(std::vector<uint8_t> password) override;
/** @brief Change the password for the LUKS device.
*
* @param[in] oldPassword - old password for the LUKS device.
* @param[in] newPassword - new password for the LUKS device.
*/
void changePassword(std::vector<uint8_t> oldPassword,
std::vector<uint8_t> newPassword) override;
private:
/* Full path of the device file, e.g. /dev/mmcblk0 */
std::string devPath;
/* Name of the LUKS container. */
std::string containerName;
};
} // namespace estoraged