blob: 285fe2b77f99d3c87e4ef12dd956f58de1cd21f2 [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <memory>
#include <base/check.h>
#include <libcrossystem/crossystem.h>
#include <libstorage/platform/platform.h>
#include <tpm_manager/proto_bindings/tpm_manager.pb.h>
#include <tpm_manager-client/tpm_manager/dbus-proxies.h>
#if USE_TPM2
#include <trunks/command_transceiver.h>
#include <trunks/trunks_factory.h>
#endif
#if USE_TPM1
#include "libhwsec/overalls/overalls.h"
#endif
#include "libhwsec/proxy/proxy.h"
namespace hwsec {
void Proxy::SetOveralls(hwsec::overalls::Overalls* overalls) {
overalls_ptr_ = overalls;
}
void Proxy::SetTrunksCommandTransceiver(
trunks::CommandTransceiver* trunks_command_transceiver) {
trunks_command_transceiver_ = trunks_command_transceiver;
}
void Proxy::SetTrunksDbusTransceiver(
trunks::DbusTransceiver* trunks_dbus_transceiver) {
trunks_dbus_transceiver_ = trunks_dbus_transceiver;
}
void Proxy::SetTrunksFactory(trunks::TrunksFactory* trunks_factory) {
trunks_factory_ptr_ = trunks_factory;
}
void Proxy::SetTpmManager(
org::chromium::TpmManagerProxyInterface* tpm_manager) {
tpm_manager_ = tpm_manager;
}
void Proxy::SetTpmNvram(org::chromium::TpmNvramProxyInterface* tpm_nvram) {
tpm_nvram_ = tpm_nvram;
}
void Proxy::SetCrossystem(crossystem::Crossystem* crossystem) {
crossystem_ = crossystem;
}
void Proxy::SetPlatform(libstorage::Platform* platform) {
platform_ = platform;
}
// A tricks to make the linkage failure if accessing wrong proxy on the
// wrong board.
#if USE_TPM1
hwsec::overalls::Overalls& Proxy::GetOveralls() const {
CHECK(overalls_ptr_);
return *overalls_ptr_;
}
#endif
// A tricks to make the linkage failure if accessing wrong proxy on the
// wrong board.
#if USE_TPM2
trunks::CommandTransceiver& Proxy::GetTrunksCommandTransceiver() const {
CHECK(trunks_command_transceiver_);
return *trunks_command_transceiver_;
}
trunks::DbusTransceiver* Proxy::GetTrunksDbusTransceiver() const {
return trunks_dbus_transceiver_;
}
trunks::TrunksFactory& Proxy::GetTrunksFactory() const {
CHECK(trunks_factory_ptr_);
return *trunks_factory_ptr_;
}
#endif
org::chromium::TpmManagerProxyInterface& Proxy::GetTpmManager() const {
CHECK(tpm_manager_);
return *tpm_manager_;
}
org::chromium::TpmNvramProxyInterface& Proxy::GetTpmNvram() const {
CHECK(tpm_nvram_);
return *tpm_nvram_;
}
crossystem::Crossystem& Proxy::GetCrossystem() const {
CHECK(crossystem_);
return *crossystem_;
}
libstorage::Platform& Proxy::GetPlatform() const {
CHECK(platform_);
return *platform_;
}
} // namespace hwsec