1a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// 2a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// Copyright (C) 2016 The Android Open Source Project 3a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// 4a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// Licensed under the Apache License, Version 2.0 (the "License"); 5a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// you may not use this file except in compliance with the License. 6a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// You may obtain a copy of the License at 7a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// 8a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// http://www.apache.org/licenses/LICENSE-2.0 9a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// 10a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// Unless required by applicable law or agreed to in writing, software 11a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// distributed under the License is distributed on an "AS IS" BASIS, 12a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// See the License for the specific language governing permissions and 14a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// limitations under the License. 15a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// 16a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 17a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#ifndef TPM_MANAGER_CLIENT_TPM_NVRAM_BINDER_PROXY_H_ 18a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#define TPM_MANAGER_CLIENT_TPM_NVRAM_BINDER_PROXY_H_ 19a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 20a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#include <base/macros.h> 21a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 22a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#include "android/tpm_manager/ITpmNvram.h" 23a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#include "tpm_manager/common/export.h" 24a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#include "tpm_manager/common/tpm_nvram_interface.h" 25a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 26a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahnnamespace tpm_manager { 27a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 28a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// An implementation of TpmNvramInterface that forwards requests to tpm_managerd 29a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn// using Binder. 30a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahnclass TPM_MANAGER_EXPORT TpmNvramBinderProxy : public TpmNvramInterface { 31a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn public: 32a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn TpmNvramBinderProxy() = default; 33a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn explicit TpmNvramBinderProxy(android::tpm_manager::ITpmNvram* binder); 34a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn ~TpmNvramBinderProxy() override = default; 35a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 36a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn // Initializes the client. Returns true on success. 37a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn bool Initialize(); 38a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 39a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn // TpmNvramInterface methods. All assume a message loop and binder watcher 40a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn // have already been configured elsewhere. 41a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void DefineSpace(const DefineSpaceRequest& request, 42a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const DefineSpaceCallback& callback) override; 43a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void DestroySpace(const DestroySpaceRequest& request, 44a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const DestroySpaceCallback& callback) override; 45a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void WriteSpace(const WriteSpaceRequest& request, 46a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const WriteSpaceCallback& callback) override; 47a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void ReadSpace(const ReadSpaceRequest& request, 48a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const ReadSpaceCallback& callback) override; 49a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void LockSpace(const LockSpaceRequest& request, 50a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const LockSpaceCallback& callback) override; 51a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void ListSpaces(const ListSpacesRequest& request, 52a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const ListSpacesCallback& callback) override; 53a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn void GetSpaceInfo(const GetSpaceInfoRequest& request, 54a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn const GetSpaceInfoCallback& callback) override; 55a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 56a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn private: 57a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn android::sp<android::tpm_manager::ITpmNvram> default_binder_; 58a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn android::tpm_manager::ITpmNvram* binder_ = nullptr; 59a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 60a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn DISALLOW_COPY_AND_ASSIGN(TpmNvramBinderProxy); 61a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn}; 62a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 63a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn} // namespace tpm_manager 64a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn 65a94133441da308b30c6fe18cc4e2b866498ee401Darren Krahn#endif // TPM_MANAGER_CLIENT_TPM_NVRAM_BINDER_PROXY_H_ 66