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