blob: c2fb49d38bee1ed8efbe8ffc50fbf253b5502b48 [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VTPM_COMMANDS_NV_READ_COMMAND_H_
#define VTPM_COMMANDS_NV_READ_COMMAND_H_
#include "vtpm/commands/command.h"
#include <string>
#include <base/functional/callback.h>
#include <trunks/command_parser.h>
#include <trunks/response_serializer.h>
#include "vtpm/backends/nv_space_manager.h"
namespace vtpm {
class NvReadCommand : public Command {
public:
NvReadCommand(trunks::CommandParser* command_parser,
trunks::ResponseSerializer* response_serializer,
NvSpaceManager* nv_space_manager);
~NvReadCommand() override = default;
void Run(const std::string& command,
CommandResponseCallback callback) override;
private:
// Runs the command. if it is successful, sets `data` and returns
// `TPM_RC_SUCCESS`. Otherwise, only returns a `TPM_RC`.
trunks::TPM_RC RunInternal(const std::string& command, std::string& data);
trunks::CommandParser* const command_parser_;
trunks::ResponseSerializer* const response_serializer_;
NvSpaceManager* const nv_space_manager_;
};
} // namespace vtpm
#endif // VTPM_COMMANDS_NV_READ_COMMAND_H_