| // Copyright 2023 The ChromiumOS Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef LIBHWSEC_BACKEND_TPM2_TRUNKS_CONTEXT_H_ | |
| #define LIBHWSEC_BACKEND_TPM2_TRUNKS_CONTEXT_H_ | |
| #include <memory> | |
| #include <base/check.h> | |
| #include <trunks/command_transceiver.h> | |
| #include <trunks/dbus_transceiver.h> | |
| #include <trunks/trunks_factory.h> | |
| #ifndef BUILD_LIBHWSEC | |
| #error "Don't include this file outside libhwsec!" | |
| #endif | |
| namespace hwsec { | |
| // This structure holds all Trunks client objects. | |
| class TrunksContext { | |
| public: | |
| TrunksContext(trunks::CommandTransceiver& command_transceiver, | |
| trunks::DbusTransceiver* dbus_transceiver, | |
| trunks::TrunksFactory& factory) | |
| : command_transceiver_(command_transceiver), | |
| dbus_transceiver_(dbus_transceiver), | |
| factory_(factory), | |
| tpm_state_(*factory_.GetTpmState()), | |
| tpm_utility_(factory_.GetTpmUtility()) { | |
| CHECK(tpm_utility_); | |
| } | |
| trunks::CommandTransceiver& GetCommandTransceiver() { | |
| return command_transceiver_; | |
| } | |
| trunks::DbusTransceiver* GetDbusTransceiver() { return dbus_transceiver_; } | |
| trunks::TrunksFactory& GetTrunksFactory() { return factory_; } | |
| trunks::TpmState& GetTpmState() { return tpm_state_; } | |
| trunks::TpmUtility& GetTpmUtility() { return *tpm_utility_; } | |
| private: | |
| trunks::CommandTransceiver& command_transceiver_; | |
| trunks::DbusTransceiver* dbus_transceiver_; | |
| trunks::TrunksFactory& factory_; | |
| trunks::TpmState& tpm_state_; | |
| std::unique_ptr<trunks::TpmUtility> tpm_utility_; | |
| }; | |
| } // namespace hwsec | |
| #endif // LIBHWSEC_BACKEND_TPM2_TRUNKS_CONTEXT_H_ |