blob: 9bfd561499d014747758a99520d1d1a4f9e283f6 [file] [log] [blame]
// Copyright 2022 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef VTPM_BACKENDS_WRITABLE_BLOB_H_
#define VTPM_BACKENDS_WRITABLE_BLOB_H_
#include "vtpm/backends/blob.h"
#include <string>
#include <trunks/tpm_generated.h>
namespace vtpm {
// `WritableBlob` extends `Blob` to enable writing data.
class WritableBlob : public Blob {
public:
virtual ~WritableBlob() = default;
// Write that data for later use. Usually the what `WritableBlob::Write()`
// stores is the return value of `Blob::Get()`.
// Note that the term `Write() used for parity with `Get()` is unusual, for
// an implementation of `Get()`' could also implies the change to the state.
// For example, lazy evaluation of a certain TPM operation is also possible.
// Thus, `Read()` is not better than `Get()`. Meanwhile, `Write()` is better
// than `Set()` because, depending on its implementation, the implication of
// persisting data is usually the case in this project.
virtual trunks::TPM_RC Write(const std::string& blob) = 0;
};
} // namespace vtpm
#endif // VTPM_BACKENDS_WRITABLE_BLOB_H_