1//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17#ifndef TPM_MANAGER_COMMON_TPM_NVRAM_INTERFACE_H_
18#define TPM_MANAGER_COMMON_TPM_NVRAM_INTERFACE_H_
19
20#include <base/callback.h>
21
22#include "tpm_manager/common/export.h"
23#include "tpm_manager/common/tpm_manager.pb.h"
24
25namespace tpm_manager {
26
27// The command interface for working with TPM NVRAM. Inherited by both IPC proxy
28// and service classes. All methods are asynchronous because all TPM operations
29// may take a long time to finish.
30class TPM_MANAGER_EXPORT TpmNvramInterface {
31 public:
32  virtual ~TpmNvramInterface() = default;
33
34  // Processes a DefineSpaceRequest and responds with a DefineSpaceReply.
35  using DefineSpaceCallback = base::Callback<void(const DefineSpaceReply&)>;
36  virtual void DefineSpace(const DefineSpaceRequest& request,
37                           const DefineSpaceCallback& callback) = 0;
38
39  // Processes a DestroySpaceRequest and responds with a DestroySpaceReply.
40  using DestroySpaceCallback = base::Callback<void(const DestroySpaceReply&)>;
41  virtual void DestroySpace(const DestroySpaceRequest& request,
42                            const DestroySpaceCallback& callback) = 0;
43
44  // Processes a WriteSpaceRequest and responds with a WriteSpaceReply.
45  using WriteSpaceCallback = base::Callback<void(const WriteSpaceReply&)>;
46  virtual void WriteSpace(const WriteSpaceRequest& request,
47                          const WriteSpaceCallback& callback) = 0;
48
49  // Processes a ReadSpaceRequest and responds with a ReadSpaceReply.
50  using ReadSpaceCallback = base::Callback<void(const ReadSpaceReply&)>;
51  virtual void ReadSpace(const ReadSpaceRequest& request,
52                         const ReadSpaceCallback& callback) = 0;
53
54  // Processes a LockSpaceRequest and responds with a LockSpaceReply.
55  using LockSpaceCallback = base::Callback<void(const LockSpaceReply&)>;
56  virtual void LockSpace(const LockSpaceRequest& request,
57                         const LockSpaceCallback& callback) = 0;
58
59  // Processes a ListSpacesRequest and responds with a ListSpacesReply.
60  using ListSpacesCallback = base::Callback<void(const ListSpacesReply&)>;
61  virtual void ListSpaces(const ListSpacesRequest& request,
62                          const ListSpacesCallback& callback) = 0;
63
64  // Processes a GetSpaceInfoRequest and responds with a GetSpaceInfoReply.
65  using GetSpaceInfoCallback = base::Callback<void(const GetSpaceInfoReply&)>;
66  virtual void GetSpaceInfo(const GetSpaceInfoRequest& request,
67                            const GetSpaceInfoCallback& callback) = 0;
68};
69
70}  // namespace tpm_manager
71
72#endif  // TPM_MANAGER_COMMON_TPM_NVRAM_INTERFACE_H_
73