trunks_factory_impl.h revision 30c921db09d27768acc1ea0d8b6a9c8e814f931a
1bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 2bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// Copyright (C) 2014 The Android Open Source Project 3bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 4bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// Licensed under the Apache License, Version 2.0 (the "License"); 5bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// you may not use this file except in compliance with the License. 6bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// You may obtain a copy of the License at 7bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 8bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// http://www.apache.org/licenses/LICENSE-2.0 9bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 10bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// Unless required by applicable law or agreed to in writing, software 11bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// distributed under the License is distributed on an "AS IS" BASIS, 12bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// See the License for the specific language governing permissions and 14bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// limitations under the License. 15bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 1603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 1703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#ifndef TRUNKS_TRUNKS_FACTORY_IMPL_H_ 1803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#define TRUNKS_TRUNKS_FACTORY_IMPL_H_ 1903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 2003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#include "trunks/trunks_factory.h" 2103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 2230c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez#include <memory> 2303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#include <string> 2403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 2503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#include <base/macros.h> 26ef87f3e63b93ff722a8cbcee9c54d55d085221a3Darren Krahn 27c7a43d6afb860f06e3992855d81c5bc370dcad9cVadim Bendebury#include "trunks/command_transceiver.h" 28ef87f3e63b93ff722a8cbcee9c54d55d085221a3Darren Krahn#include "trunks/trunks_export.h" 2903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 3003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnnamespace trunks { 3103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 3203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnclass Tpm; 3303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 3403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn// TrunksFactoryImpl is the default TrunksFactory implementation. 35ef87f3e63b93ff722a8cbcee9c54d55d085221a3Darren Krahnclass TRUNKS_EXPORT TrunksFactoryImpl : public TrunksFactory { 3603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn public: 379caf492818a4cc51ba471534d3fcaa84c9ce0278Darren Krahn // Uses an IPC proxy as the default CommandTransceiver. If |failure_is_fatal| 389caf492818a4cc51ba471534d3fcaa84c9ce0278Darren Krahn // is set then a failure to initialize the proxy will abort. 399caf492818a4cc51ba471534d3fcaa84c9ce0278Darren Krahn explicit TrunksFactoryImpl(bool failure_is_fatal); 40de1659944c1d4291aa67f9582990110e11c8461eUtkarsh Sanghi // TrunksFactoryImpl does not take ownership of |transceiver|. This 41de1659944c1d4291aa67f9582990110e11c8461eUtkarsh Sanghi // transceiver is forwarded down to the Tpm instance maintained by 42de1659944c1d4291aa67f9582990110e11c8461eUtkarsh Sanghi // this factory. 43de1659944c1d4291aa67f9582990110e11c8461eUtkarsh Sanghi explicit TrunksFactoryImpl(CommandTransceiver* transceiver); 44617ff7c335625738b152b2277275ed13cfc6dad5Darren Krahn ~TrunksFactoryImpl() override; 4503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 4603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn // TrunksFactory methods. 4703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn Tpm* GetTpm() const override; 4830c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<TpmState> GetTpmState() const override; 4930c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<TpmUtility> GetTpmUtility() const override; 5030c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<AuthorizationDelegate> GetPasswordAuthorization( 5103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn const std::string& password) const override; 5230c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<SessionManager> GetSessionManager() const override; 5330c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<HmacSession> GetHmacSession() const override; 5430c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<PolicySession> GetPolicySession() const override; 5530c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<PolicySession> GetTrialSession() const override; 5630c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<BlobParser> GetBlobParser() const override; 5703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 5803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn private: 5930c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<CommandTransceiver> default_transceiver_; 60de1659944c1d4291aa67f9582990110e11c8461eUtkarsh Sanghi CommandTransceiver* transceiver_; 6130c921db09d27768acc1ea0d8b6a9c8e814f931aLuis Hector Chavez std::unique_ptr<Tpm> tpm_; 6203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 6303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn DISALLOW_COPY_AND_ASSIGN(TrunksFactoryImpl); 6403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn}; 6503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 6603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn} // namespace trunks 6703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 6803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#endif // TRUNKS_TRUNKS_FACTORY_IMPL_H_ 69